Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 9df9b3fc

Von Jan Büren vor etwa 2 Jahren hinzugefügt

  • ID 9df9b3fc9ca0a31c4c634d1c5b61e7c144187f1c
  • Vorgänger 82017e3f
  • Nachfolger 068d65bc

vergessene Base-Class für UpdateExchangerates

Unterschiede anzeigen:

SL/BackgroundJob/UpdateExchangerates/Base.pm
package SL::BackgroundJob::UpdateExchangerates::Base;
use strict;
use parent qw(Rose::Object);
use Rose::Object::MakeMethods::Generic (
scalar => [ qw(options) ],
);
sub update_rates {
my ($self, $rates) = @_;
die 'needs to be overwritten';
}
sub translate_currency_name {
my ($self, $name) = @_;
return $name if (!$self->options->{translate});
return $self->options->{translate}->{$name} if $self->options->{translate}->{$name};
return $name;
}
1;
__END__
=encoding utf-8
=head1 NAME
SL::BackgroundJob::UpdateExchangerates::Base - Base class for background job to update exchange rates.
=head1 SYNOPSIS
# in update-worker:
use parent qw(SL::BackgroundJob::UpdateExchangerates::Base);
# implement interface
sub update_rates {
my ($self, $rates) = @_;
foreach my $rate (@$rates) {
my $from = $self->translate_currency_name($rate->{from}->name);
my $to = $self->translate_currency_name($rate->{to}->name);
if ( $from eq 'EUR' && $to eq 'USD') {
$rate->{rate} = 0.9205 if $rate->{dir} eq 'buy';
$rate->{rate} = 0.9202 if $rate->{dir} eq 'sell';
}
}
}
=head1 DESCRIPTION
This is a base class for a worker to update exchange rates.
=head1 INTERFACE
=over 4
=item C<update_rates $rates>
Your class will be instanciated and the update_rates method will be invoked.
This method can update known requeseted rates. Therefor an array of hashes with
information of the requested rates is provided. Each hash consists of the
following keys:
=over 5
=item
from: currency (instance of SL::DB::Currency) to be converted from
=item
to: currency (instance of SL::DB::Currency) to be converted to
=item
dir: 'bye' or 'sell'
=back
Your class should add a 'rate'-entry to each hash, if it can provide the rate
information. If not, it should leave the hash-entry as it is.
=back
=head1 FUNCTIONS
=over 4
=item C<translate_currency_name $name>
Returns the translated currency name, if a translation is given. This can be used to translate client specific
currency notations to the one used by the worker module. Translations are give as data to the background job:
options:
translate:
£: GBP
=back
=head1 AUTHOR
Bernd Bleßmann E<lt>bernd@kivitendo-premium.deE<gt>
=cut

Auch abrufbar als: Unified diff