X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDev%2FCustomerVendor.pm;h=ad99b95625bb6a8077e85a3538616c62ecee2edc;hb=6ba38ffedd99c9d3ade9134b01ac510c50d92d2e;hp=3a8fa86005add023cc66428c2d2fd9271ce8741f;hpb=ec1dc3e8dd611bf973ba7306d6a09d65a7e2bfce;p=kivitendo-erp.git diff --git a/SL/Dev/CustomerVendor.pm b/SL/Dev/CustomerVendor.pm index 3a8fa8600..ad99b9562 100644 --- a/SL/Dev/CustomerVendor.pm +++ b/SL/Dev/CustomerVendor.pm @@ -1,7 +1,8 @@ package SL::Dev::CustomerVendor; +use strict; use base qw(Exporter); -@EXPORT = qw(create_customer); +our @EXPORT = qw(create_customer); use SL::DB::TaxZone; use SL::DB::Currency; @@ -10,26 +11,52 @@ use SL::DB::Customer; sub create_customer { my (%params) = @_; - my ($taxzone, $currency); + my $taxzone = _check_taxzone(delete $params{taxzone_id}); + my $currency = _check_currency(delete $params{currency_id}); - if ( my $taxzone_id = delete $params{taxzone_id} ) { + 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; +} + +sub create_vendor { + 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 ) { $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'"; } + return $taxzone; +} - if ( my $currency_id = delete $params{currency_id} ) { +sub _check_currency { + my ($currency_id) = @_; + my $currency; + if ( $currency_id ) { $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 ); } - - 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; + return $currency; } 1; @@ -51,11 +78,29 @@ Minimal usage, default values, without saving to database: my $customer = SL::Dev::CustomerVendor::create_customer(); Complex usage, overwriting some defaults, and save to database: + SL::Dev::CustomerVendor::create_customer(name => 'Test customer', hourly_rate => 50, taxzone_id => 2, )->save; +If neither taxzone_id or currency_id (both are NOT NULL) are passed as params +then default values are used. + +=head2 C + +Creates a new vendor. + +Minimal usage, default values, without saving to database: + + my $vendor = SL::Dev::vendorVendor::create_vendor(); + +Complex usage, overwriting some defaults, and save to database: + + SL::Dev::CustomerVendor::create_vendor(name => 'Test vendor', + taxzone_id => 2, + notes => "Order for 100$ for free delivery", + )->save; =head1 BUGS @@ -66,4 +111,3 @@ Nothing here yet. G. Richardson Egrichardson@kivitendo-premium.deE =cut -1;