| Money-PaymentPreparer documentation | Contained in the Money-PaymentPreparer distribution. |
Money::PaymentPreparer - change sum to bills and coins.
Version 0.03
use Money::PaymentPreparer; my @my_bills = qw (200 100 50 20 10 5 2 1); my $object = PaymentPreparer->new(); $object->set_bill(@my_bills); $object->add(153); $object->add(68); %result = $object->get();
This module change sum (i.e. payment) to collection of bills and coins and keep it all in one hash returned by add or get.
creates the object.
gets @list of nominations bills and coins. In Europe it should looks like this:
@my_table = qw (500 200 100 50 20 10 5 2 1);
value to change. It returns %hash of nominals with numbers of bills.
returns %hash of nominals with numbers of bills.
Support for decimal values.
Check for indivisible values.
Łukasz M±drzycki, <uksza@cpan.org>.
Who knows...
All Perl family.
Copyright(C) 2004, 2005 Łukasz M±drzycki, <uksza@cpan.org>. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Money-PaymentPreparer documentation | Contained in the Money-PaymentPreparer distribution. |
package Money::PaymentPreparer; use warnings; use strict;
our $VERSION = "0.03";
sub new { my $class = shift; my $self = {}; $self->{units} = undef; $self->{bills} = undef; bless $self, $class; } sub set_bill { my $self = shift; @{ $self->{units} } = @_; %{ $self->{bills} } = map { $_ => 0 } @_; } sub add { my $self = shift; my $temp = shift; my @units = @{ $self->{units} }; my %pieces = %{ $self->{bills} }; my $unit; my $i = 0; while ($temp) { $unit = $units[$i]; while ( $temp >= $unit ) { $temp -= $unit; $pieces{$unit} += 1; } last if $i == (@units); $unit = $units[ ++$i ]; } %{ $self->{bills} } = %pieces; } sub get { my $self = shift; return %{ $self->{bills}}; } 1; __END__