kivitendo/SL/Dev/CustomerVendor.pm @ 5cada5ab
ec1dc3e8 | Geoffrey Richardson | package SL::Dev::CustomerVendor;
|
||
8d4130ed | Sven Schöling | use strict;
|
||
ec1dc3e8 | Geoffrey Richardson | use base qw(Exporter);
|
||
cf3a8cf7 | Sven Schöling | our @EXPORT_OK = qw(new_customer new_vendor);
|
||
our %EXPORT_TAGS = (ALL => \@EXPORT_OK);
|
||||
ec1dc3e8 | Geoffrey Richardson | |||
use SL::DB::TaxZone;
|
||||
use SL::DB::Currency;
|
||||
use SL::DB::Customer;
|
||||
cf3a8cf7 | Sven Schöling | sub new_customer {
|
||
ec1dc3e8 | Geoffrey Richardson | my (%params) = @_;
|
||
6e0fe1dc | Geoffrey Richardson | my $taxzone = _check_taxzone(delete $params{taxzone_id});
|
||
my $currency = _check_currency(delete $params{currency_id});
|
||||
ec1dc3e8 | Geoffrey Richardson | |||
6e0fe1dc | Geoffrey Richardson | my $customer = SL::DB::Customer->new( name => delete $params{name} || 'Testkunde',
|
||
currency_id => $currency->id,
|
||||
taxzone_id => $taxzone->id,
|
||||
);
|
||||
$customer->assign_attributes( %params );
|
||||
return $customer;
|
||||
}
|
||||
cf3a8cf7 | Sven Schöling | sub new_vendor {
|
||
6e0fe1dc | Geoffrey Richardson | my (%params) = @_;
|
||
my $taxzone = _check_taxzone(delete $params{taxzone_id});
|
||||
my $currency = _check_currency(delete $params{currency_id});
|
||||
my $vendor = SL::DB::Vendor->new( name => delete $params{name} || 'Testlieferant',
|
||||
currency_id => $currency->id,
|
||||
taxzone_id => $taxzone->id,
|
||||
);
|
||||
$vendor->assign_attributes( %params );
|
||||
return $vendor;
|
||||
}
|
||||
sub _check_taxzone {
|
||||
my ($taxzone_id) = @_;
|
||||
# check that taxzone_id exists or if no taxzone_id passed use 'Inland'
|
||||
my $taxzone;
|
||||
if ( $taxzone_id ) {
|
||||
ec1dc3e8 | Geoffrey Richardson | $taxzone = SL::DB::Manager::TaxZone->find_by( id => $taxzone_id ) || die "Can't find taxzone_id";
|
||
} else {
|
||||
$taxzone = SL::DB::Manager::TaxZone->find_by( description => 'Inland') || die "No taxzone 'Inland'";
|
||||
}
|
||||
6e0fe1dc | Geoffrey Richardson | return $taxzone;
|
||
}
|
||||
ec1dc3e8 | Geoffrey Richardson | |||
6e0fe1dc | Geoffrey Richardson | sub _check_currency {
|
||
my ($currency_id) = @_;
|
||||
my $currency;
|
||||
if ( $currency_id ) {
|
||||
ec1dc3e8 | Geoffrey Richardson | $currency = SL::DB::Manager::Currency->find_by( id => $currency_id ) || die "Can't find currency_id";
|
||
} else {
|
||||
$currency = SL::DB::Manager::Currency->find_by( id => $::instance_conf->get_currency_id );
|
||||
}
|
||||
6e0fe1dc | Geoffrey Richardson | return $currency;
|
||
ec1dc3e8 | Geoffrey Richardson | }
|
||
1;
|
||||
__END__
|
||||
=head1 NAME
|
||||
SL::Dev::CustomerVendor - create customer and vendor objects for testing, with minimal defaults
|
||||
=head1 FUNCTIONS
|
||||
cf3a8cf7 | Sven Schöling | =head2 C<new_customer %PARAMS>
|
||
ec1dc3e8 | Geoffrey Richardson | |||
Creates a new customer.
|
||||
Minimal usage, default values, without saving to database:
|
||||
4b1d7057 | Jan Büren | my $customer = SL::Dev::CustomerVendor::new_customer();
|
||
ec1dc3e8 | Geoffrey Richardson | |||
Complex usage, overwriting some defaults, and save to database:
|
||||
009c62da | Sven Schöling | |||
4b1d7057 | Jan Büren | SL::Dev::CustomerVendor::new_customer(name => 'Test customer',
|
||
ec1dc3e8 | Geoffrey Richardson | hourly_rate => 50,
|
||
taxzone_id => 2,
|
||||
)->save;
|
||||
6e0fe1dc | Geoffrey Richardson | If neither taxzone_id or currency_id (both are NOT NULL) are passed as params
|
||
then default values are used.
|
||||
cf3a8cf7 | Sven Schöling | =head2 C<new_vendor %PARAMS>
|
||
6e0fe1dc | Geoffrey Richardson | |||
Creates a new vendor.
|
||||
Minimal usage, default values, without saving to database:
|
||||
f75f9657 | Geoffrey Richardson | my $vendor = SL::Dev::CustomerVendor::new_vendor();
|
||
6e0fe1dc | Geoffrey Richardson | |||
Complex usage, overwriting some defaults, and save to database:
|
||||
f75f9657 | Geoffrey Richardson | SL::Dev::CustomerVendor::new_vendor(name => 'Test vendor',
|
||
taxzone_id => 2,
|
||||
notes => "Order for 100$ for free delivery",
|
||||
payment_id => 5,
|
||||
)->save;
|
||||
ec1dc3e8 | Geoffrey Richardson | |||
=head1 BUGS
|
||||
Nothing here yet.
|
||||
=head1 AUTHOR
|
||||
G. Richardson E<lt>grichardson@kivitendo-premium.deE<gt>
|
||||
=cut
|