]> wagnertech.de Git - mfinanz.git/blobdiff - t/db_helper/convert_invoice.t
Consolidation and extended test runs
[mfinanz.git] / t / db_helper / convert_invoice.t
index 088bb087f21d06d522428d31920c03922eeccc2f..dc21352617c0c82bdc5ae19917ab88b4a95f69c2 100644 (file)
@@ -1,4 +1,4 @@
-use Test::More tests => 38;
+use Test::More tests => 42;
 
 use strict;
 
@@ -30,9 +30,10 @@ my ($customer, $currency_id, $buchungsgruppe, $employee, $vendor, $taxzone, $buc
 my $VISUAL_TEST = 0;  # just a sleep to click around
 
 sub clear_up {
-  foreach (qw(DeliveryOrderItem DeliveryOrder InvoiceItem Invoice Part Customer Vendor Employee Department PaymentTerm)) {
+  foreach (qw(DeliveryOrderItem DeliveryOrder InvoiceItem Invoice Part Customer Vendor Department PaymentTerm)) {
     "SL::DB::Manager::${_}"->delete_all(all => 1);
   }
+  SL::DB::Manager::Employee->delete_all(where => [ id => 31915 ]);
 };
 
 sub reset_state {
@@ -40,13 +41,23 @@ sub reset_state {
 
   clear_up();
 
-  $buchungsgruppe   = SL::DB::Manager::Buchungsgruppe->find_by(description => 'Standard 19%', %{ $params{buchungsgruppe} }) || croak "No accounting group 19\%";
-  $buchungsgruppe7  = SL::DB::Manager::Buchungsgruppe->find_by(description => 'Standard 7%', %{ $params{buchungsgruppe} })  || croak "No accounting group 7\%";
-  $taxzone          = SL::DB::Manager::TaxZone->find_by( description => 'Inland')                                           || croak "No taxzone";
-  $tax              = SL::DB::Manager::Tax->find_by(taxkey => 3, rate => 0.19, %{ $params{tax} })                           || croak "No tax for 19\%";
-  $tax7             = SL::DB::Manager::Tax->find_by(taxkey => 2, rate => 0.07)                                              || croak "No tax for 7\%";
-  $unit             = SL::DB::Manager::Unit->find_by(name => 'kg', %{ $params{unit} })                                      || croak "No unit";
-  $currency_id     = $::instance_conf->get_currency_id;
+  if ($::lx_office_conf{system}->{default_manager} eq "swiss") {
+    $buchungsgruppe  = SL::DB::Manager::Buchungsgruppe->find_by(description => 'Standard 8%', %{ $params{buchungsgruppe} })  || croak "No accounting group 8\%";
+    $buchungsgruppe7 = SL::DB::Manager::Buchungsgruppe->find_by(description => 'Standard 2.5%', %{ $params{buchungsgruppe} })|| croak "No accounting group 2.5\%";
+    $taxzone         = SL::DB::Manager::TaxZone->find_by( description => 'Schweiz')                                          || croak "No taxzone";
+    $tax             = SL::DB::Manager::Tax->find_by(taxkey => 2, rate => 0.08, %{ $params{tax} })                           || croak "No tax for 8\%";
+    $tax7            = SL::DB::Manager::Tax->find_by(taxkey => 3, rate => 0.025)                                             || croak "No tax for 2.5\%";
+    $unit            = SL::DB::Manager::Unit->find_by(name => 'kg', %{ $params{unit} })                                      || croak "No unit";
+    $currency_id     = $::instance_conf->get_currency_id;
+  } else {
+    $buchungsgruppe  = SL::DB::Manager::Buchungsgruppe->find_by(description => 'Standard 19%', %{ $params{buchungsgruppe} }) || croak "No accounting group 19\%";
+    $buchungsgruppe7 = SL::DB::Manager::Buchungsgruppe->find_by(description => 'Standard 7%', %{ $params{buchungsgruppe} })  || croak "No accounting group 7\%";
+    $taxzone         = SL::DB::Manager::TaxZone->find_by( description => 'Inland')                                           || croak "No taxzone";
+    $tax             = SL::DB::Manager::Tax->find_by(taxkey => 3, rate => 0.19, %{ $params{tax} })                           || croak "No tax for 19\%";
+    $tax7            = SL::DB::Manager::Tax->find_by(taxkey => 2, rate => 0.07)                                              || croak "No tax for 7\%";
+    $unit            = SL::DB::Manager::Unit->find_by(name => 'kg', %{ $params{unit} })                                      || croak "No unit";
+    $currency_id     = $::instance_conf->get_currency_id;
+  }
 
   $customer     = SL::DB::Customer->new(
     name        => '520484567dfaedc9e60fc',
@@ -97,7 +108,7 @@ sub reset_state {
                  'sellprice' => '242.20000',
                  #'warehouse_id' => 64702,
                  'weight' => '0.79',
-                 description        => "Nussbaum, Gr.5, Unterfilz weinrot, genietet[[Aufschnittbreite: 11,0, Kernform: US]]\"" ,
+                 description        => "Pflaumenbaum, Gr.5, Unterfilz weinrot, genietet[[Aufschnittbreite: 11,0, Kernform: US]]\"" ,
                  buchungsgruppen_id => $buchungsgruppe->id,
                  unit               => $unit->name,
                  id                 => 26321,
@@ -141,9 +152,9 @@ reset_state();
 my $do1 = new_delivery_order('department_id'    => 32149,
                              'donumber'         => 'L20199',
                              'employee_id'      => 31915,
-                             'intnotes'         => 'Achtung: Neue Lieferadresse ab 16.02.2015 in der Carl-von-Ossietzky-Str.32!   13.02.2015/MH
+                             'intnotes'         => 'Achtung: Neue Lieferadresse ab 16.02.2015 in der Otto-Merck-Str. 7a!   13.02.2015/MH
 
-                                            Steinway-Produkte (201...) immer plus 25% dazu rechnen / BK 13.02.2014',
+                                            Yamaha-Produkte (201...) immer plus 25% dazu rechnen / BK 13.02.2014',
                               'ordnumber'       => 'A16399',
                               'payment_id'      => 11276,
                               'salesman_id'     => 31915,
@@ -157,16 +168,17 @@ my $do1 = new_delivery_order('department_id'    => 32149,
                               'cusordnumber'    => 'b84da',
                               'customer_id'     => $customer->id,
                               'id'              => 464003,
+                              'notes'           => '<ul><li><strong>fett</strong></li><li><strong>und</strong></li><li><strong>mit</strong></li><li><strong>bullets</strong></li><li>&nbsp;</li></ul>',
 );
 
 my $do1_item1 = SL::DB::DeliveryOrderItem->new('delivery_order_id' => 464003,
                                                'description' => "Flügel Hammerkopf bestehend aus:
                                                                  Bass/Diskant 26/65 Stück, Gesamtlänge 80/72, Bohrlänge 56/48
-                                                                 Nussbaum, Gr.5, Unterfilz weinrot, genietet[[Aufschnittbreite: 11,0, Kernform: US]]",
+                                                                 Pflaumenbaum, Gr.5, Unterfilz weinrot, genietet[[Aufschnittbreite: 11,0, Kernform: US]]",
                                                'discount' => '0.25',
                                                'id' => 144736,
                                                'lastcost' => '49.95000',
-                                               'longdescription' => '',
+                                               'longdescription'    => "<ol><li>27</li><li>28</li><li>29</li><li><sub>asdf</sub></li><li><sub>asdf</sub></li><li><sup>oben</sup></li></ol><p><s>kommt nicht mehr vor</s></p>",
                                                'marge_price_factor' => 1,
                                                'mtime' => undef,
                                                'ordnumber' => 'A16399',
@@ -210,11 +222,14 @@ Kapseln mit Yamaha Profil, Kerbenabstand 3,6 mm mit eingedrehten Abnickschrauben
 
 # test delivery order before any conversion
 ok($do1->donumber eq "L20199", 'Delivery Order Number created');
+ok($do1->notes eq '<ul><li><strong>fett</strong></li><li><strong>und</strong></li><li><strong>mit</strong></li><li><strong>bullets</strong></li><li>&nbsp;</li></ul>', "do RichText notes saved");
 ok((not $do1->closed) , 'Delivery Order is not closed');
 ok($do1_item1->parts_id eq '26321', 'doi linked with part');
 ok($do1_item1->qty == 2, 'qty check doi');
-ok($do1_item2->position == 2, 'doi2 position check');
-ok(2 ==  scalar@{ SL::DB::Manager::DeliveryOrderItem->get_all(where => [ delivery_order_id => $do1->id ]) }, 'two doi linked');
+ok($do1_item1->longdescription eq  "<ol><li>27</li><li>28</li><li>29</li><li><sub>asdf</sub></li><li><sub>asdf</sub></li><li><sup>oben</sup></li></ol><p><s>kommt nicht mehr vor</s></p>",
+     "do item1 rich text longdescripition");
+ok ($do1_item2->position == 2, 'doi2 position check');
+ok (2 ==  scalar@{ SL::DB::Manager::DeliveryOrderItem->get_all(where => [ delivery_order_id => $do1->id ]) }, 'two doi linked');
 
 
 # convert this do to invoice
@@ -227,6 +242,7 @@ ok ($invoice->shipvia eq "DHL, Versand am 06.03.2015, 1 Paket  17,00 kg", "ship
 ok ($invoice->shippingpoint eq "Maisenhaus", "shipping point check");
 ok ($invoice->ordnumber eq "A16399", "ordnumber check");
 ok ($invoice->donumber eq "L20199", "donumber check");
+ok ($invoice->notes eq '<ul><li><strong>fett</strong></li><li><strong>und</strong></li><li><strong>mit</strong></li><li><strong>bullets</strong></li><li>&nbsp;</li></ul>', "do RichText notes saved");
 ok(($do1->closed) , 'Delivery Order is closed after conversion');
 ok (SL::DB::PaymentTerm->new(id => $invoice->{payment_id})->load->description eq "14Tage 2%Skonto, 30Tage netto", 'payment term description check');
 
@@ -269,7 +285,11 @@ $invoice->load;
 ok($invoice->currency_id eq '1', 'currency_id');
 ok($invoice->cusordnumber eq 'b84da', 'cusordnumber check');
 ok(SL::DB::Department->new(id => $invoice->{department_id})->load->description eq "Maisenhaus-Versand", 'department description');
-is($invoice->amount, '1354.17000', 'amount check');
+if ($::lx_office_conf{system}->{default_manager} eq "swiss") {
+  is($invoice->amount, '1229.00000', 'amount check');
+} else {
+  is($invoice->amount, '1354.17000', 'amount check');
+}
 is($invoice->marge_percent, '50.88580', 'marge percent check');
 is($invoice->marge_total, '579.06000', 'marge total check');
 is($invoice->netamount, '1137.96000', 'netamount check');
@@ -279,6 +299,8 @@ ok(@ {$invoice->items_sorted}[0]->parts_id eq '26321', 'invoiceitem 1 linked wit
 ok(2 ==  scalar@{ $invoice->invoiceitems }, 'two invoice items linked with invoice');
 is(@ {$invoice->items_sorted}[0]->position, 1, "position 1 order correct");
 is(@ {$invoice->items_sorted}[1]->position, 2, "position 2 order correct");
+is(@ {$invoice->items_sorted}[0]->longdescription, "<ol><li>27</li><li>28</li><li>29</li><li><sub>asdf</sub></li><li><sub>asdf</sub></li><li><sup>oben</sup></li></ol><p><s>kommt nicht mehr vor</s></p>",
+     "invoice item1 rich text longdescripition");
 is(@ {$invoice->items_sorted}[0]->part->partnumber, 'v-519160549', "partnumber 1 correct");
 is(@ {$invoice->items_sorted}[1]->part->partnumber, 'v-120160086', "partnumber 2 correct");
 is(@ {$invoice->items_sorted}[0]->qty, '2.00000', "pos 1 qty");