auf Original-Version zurückgesetzt
[kivitendo-erp.git] / SL / Dev / CustomerVendor.pm
index 3a8fa86..849bbda 100644 (file)
@@ -1,35 +1,63 @@
 package SL::Dev::CustomerVendor;
 
+use strict;
 use base qw(Exporter);
-@EXPORT = qw(create_customer);
+our @EXPORT_OK = qw(new_customer new_vendor);
+our %EXPORT_TAGS = (ALL => \@EXPORT_OK);
 
 use SL::DB::TaxZone;
 use SL::DB::Currency;
 use SL::DB::Customer;
 
-sub create_customer {
+sub new_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 new_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;
@@ -42,20 +70,39 @@ SL::Dev::CustomerVendor - create customer and vendor objects for testing, with m
 
 =head1 FUNCTIONS
 
-=head2 C<create_customer %PARAMS>
+=head2 C<new_customer %PARAMS>
 
 Creates a new customer.
 
 Minimal usage, default values, without saving to database:
 
-  my $customer = SL::Dev::CustomerVendor::create_customer();
+  my $customer = SL::Dev::CustomerVendor::new_customer();
 
 Complex usage, overwriting some defaults, and save to database:
-  SL::Dev::CustomerVendor::create_customer(name        => 'Test customer',
+
+  SL::Dev::CustomerVendor::new_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<new_vendor %PARAMS>
+
+Creates a new vendor.
+
+Minimal usage, default values, without saving to database:
+
+  my $vendor = SL::Dev::CustomerVendor::new_vendor();
+
+Complex usage, overwriting some defaults, and save to database:
+
+  SL::Dev::CustomerVendor::new_vendor(name        => 'Test vendor',
+                                      taxzone_id  => 2,
+                                      notes       => "Order for 100$ for free delivery",
+                                      payment_id  => 5,
+                                     )->save;
 
 =head1 BUGS
 
@@ -66,4 +113,3 @@ Nothing here yet.
 G. Richardson E<lt>grichardson@kivitendo-premium.deE<gt>
 
 =cut
-1;