vclimit entfernen
[kivitendo-erp.git] / t / db_helper / convert_invoice.t
index 5279d65..ead4024 100644 (file)
@@ -1,4 +1,4 @@
-use Test::More tests => 29;
+use Test::More tests => 42;
 
 use strict;
 
@@ -27,10 +27,13 @@ use SL::DB::TaxZone;
 my ($customer, $currency_id, $buchungsgruppe, $employee, $vendor, $taxzone, $buchungsgruppe7, $tax, $tax7,
     $unit, @parts);
 
+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 PurchaseInvoice 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 {
@@ -90,12 +93,13 @@ sub reset_state {
                  'listprice' => '0.00000',
                  'onhand' => '5.00000',
                  'partnumber' => 'v-519160549',
+                 part_type    => 'part',
                  #'partsgroup_id' => 111645,
                  'rop' => '0',
                  '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,
@@ -110,6 +114,7 @@ Kapseln mit Yamaha Profil, Kerbenabstand 3,6 mm mit eingedrehten Abnickschrauben
                  'id' => 25505,
                  'lastcost' => '153.00000',
                  'listprice' => '0.00000',
+                 'part_type' => 'part',
                  'onhand' => '9.00000',
                  'partnumber' => 'v-120160086',
                  # 'partsgroup_id' => 111639,
@@ -139,9 +144,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,
@@ -155,16 +160,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',
@@ -208,22 +214,27 @@ 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
 my $invoice = $do1->convert_to_invoice();
 
+sleep (300) if $VISUAL_TEST; # we can do a real visual test via gui login
 # test invoice afterwards
 
 ok ($invoice->shipvia eq "DHL, Versand am 06.03.2015, 1 Paket  17,00 kg", "ship via check");
 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');
 
@@ -276,6 +287,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");
@@ -285,6 +298,53 @@ is(@ {$invoice->items_sorted}[1]->discount, 0.25, "pos 2 discount");
 
 # more ideas: check onhand, lastcost (parsed lastcost)
 
+
+
+# check linked records AND linked items
+
+# we expect something like this in record links:
+# delivery_order_items |  144736 | invoice  |     9 | 2015-09-02 16:29:32.362562 |  5
+# delivery_order_items |  144737 | invoice  |    10 | 2015-09-02 16:29:32.362562 |  6
+# delivery_orders      |  464003 | ar       |     5 | 2015-09-02 16:29:32.362562 |  7
+# wir erwarten:
+# verkn�pfter beleg$VAR1 = {
+#           'from_id' => 464003,
+#           'from_table' => 'delivery_orders',
+#           'to_id' => 11,
+#           'to_table' => 'ar'
+#         };
+# verkn�pfte positionen$VAR1 = {
+#           'from_id' => 144737,
+#           'from_table' => 'delivery_order_items',
+#           'to_id' => 22,
+#           'to_table' => 'invoice'
+#         };
+# $VAR2 = {
+#           'from_id' => 144736,
+#           'from_table' => 'delivery_order_items',
+#           'to_id' => 21,
+#           'to_table' => 'invoice'
+#         };
+
+
+
+my @links_record    = RecordLinks->get_links('from_table' => 'delivery_orders',
+                                             'to_table'   => 'ar',
+                                             'from_id'      => 464003);
+is($links_record[0]->{from_id}, '464003', "record from id check");
+is($links_record[0]->{from_table}, 'delivery_orders', "record from table check");
+is($links_record[0]->{to_table}, 'ar', "record to table check");
+
+foreach (qw(144736 144737)) {
+  my @links_record_item1 = RecordLinks->get_links('from_table' => 'delivery_order_items',
+                                                 'to_table'   => 'invoice',
+                                                 'from_id'      => $_);
+  is($links_record_item1[0]->{from_id}, $_, "record from id check $_");
+  is($links_record_item1[0]->{from_table}, 'delivery_order_items', "record from table check $_");
+  is($links_record_item1[0]->{to_table}, 'invoice', "record to table check $_");
+}
+
+
 clear_up();
 
 1;