Merge branch 'master' of github.com:kivitendo/kivitendo-erp
authorJan Büren <jan@kivitendo-premium.de>
Thu, 22 Jan 2015 15:08:03 +0000 (16:08 +0100)
committerJan Büren <jan@kivitendo-premium.de>
Thu, 22 Jan 2015 15:08:03 +0000 (16:08 +0100)
SL/IR.pm
SL/IS.pm
SL/OE.pm
bin/mozilla/oe.pl
sql/Pg-upgrade2/record_links_orderitems_delete_triggers.sql [new file with mode: 0644]

index 8ce3d04..98dcc86 100644 (file)
--- a/SL/IR.pm
+++ b/SL/IR.pm
@@ -683,13 +683,6 @@ SQL
   my $taxzone_id         = $form->{taxzone_id} * 1;
   $taxzone_id = SL::DB::Manager::TaxZone->get_default->id unless SL::DB::Manager::TaxZone->find_by(id => $taxzone_id);
 
-  # Seit neuestem wird die department_id schon übergeben UND $form->department nicht mehr
-  # korrekt zusammengebaut. Sehr wahrscheinlich beim Umstieg auf T8 kaputt gegangen
-  # Ich lass den Code von 2005 erstmal noch stehen ;-) jb 03-2011
-  # copy & paste von IS.pm
-  if (!$form->{department_id}){
-    $form->{department_id} = (split /--/, $form->{department})[1];
-  }
   $form->{invnumber}     = $form->{id} unless $form->{invnumber};
 
   # save AP record
index e09c08c..3603618 100644 (file)
--- a/SL/IS.pm
+++ b/SL/IS.pm
@@ -578,13 +578,6 @@ sub post_invoice {
   $form->{defaultcurrency} = $form->get_default_currency($myconfig);
   my $defaultcurrency = $form->{defaultcurrency};
 
-  # Seit neuestem wird die department_id schon übergeben UND $form->department nicht mehr
-  # korrekt zusammengebaut. Sehr wahrscheinlich beim Umstieg auf T8 kaputt gegangen
-  # Ich lass den Code von 2005 erstmal noch stehen ;-) jb 03-2011
-  if (!$form->{department_id}){
-    ($null, $form->{department_id}) = split(/--/, $form->{department});
-  }
-
   my $all_units = AM->retrieve_units($myconfig, $form);
 
   if (!$payments_only) {
index a60b86c..d8c66f5 100644 (file)
--- a/SL/OE.pm
+++ b/SL/OE.pm
@@ -578,6 +578,17 @@ SQL
                                   name_prefix  => 'ic_',
                                   name_postfix => "_$i",
                                   dbh          => $dbh);
+      # link quotation items with order items and delete entry (just one link)
+      if ($form->{"converted_from_quotation_orderitems_id_$i"}) {
+        RecordLinks->create_links('dbh'        => $dbh,
+                                  'mode'       => 'ids',
+                                  'from_table' => 'orderitems',
+                                  'from_ids'   => $form->{"converted_from_quotation_orderitems_id_$i"},
+                                  'to_table'   => 'orderitems',
+                                  'to_id'      => $orderitems_id,
+        );
+        delete $form->{"converted_from_quotation_orderitems_id_$i"};
+      }
     }
   }
   # search for orphaned ids
index 904a4b9..9a1da4a 100644 (file)
@@ -1820,6 +1820,7 @@ sub poso {
 
   # reset
   map { delete $form->{$_} } qw(id subject message cc bcc printed emailed queued customer vendor creditlimit creditremaining discount tradediscount oldinvtotal delivered ordnumber);
+  $form->{"converted_from_quotation_orderitems_id_$_"} = $form->{"orderitems_id_$_"} for 1 .. $form->{"rowcount"};  # always reset orderitems_id
   delete $form->{"orderitems_id_$_"} for 1 .. $form->{"rowcount"};  # always reset orderitems_id
 
   # if purchase_order was generated from sales_order, use  lastcost_$i as sellprice_$i
@@ -1896,6 +1897,7 @@ sub delivery_order {
 
   for my $i (1 .. $form->{rowcount}) {
     map { $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"}) if ($form->{"${_}_${i}"}) } qw(ship qty sellprice listprice lastcost basefactor discount);
+    $form->{"converted_from_order_orderitems_id_$_"} = $form->{"orderitems_id_$_"} for 1 .. $form->{"rowcount"};
   }
 
   my %old_values = map { $_ => $form->{$_} } qw(customer_id oldcustomer customer vendor_id oldvendor vendor shipto_id);
diff --git a/sql/Pg-upgrade2/record_links_orderitems_delete_triggers.sql b/sql/Pg-upgrade2/record_links_orderitems_delete_triggers.sql
new file mode 100644 (file)
index 0000000..904f4bb
--- /dev/null
@@ -0,0 +1,46 @@
+-- @tag: record_links_orderitems_delete_triggers
+-- @description: delete trigger für verknüpfte invoice(items), orderitems und delivery_order_items
+-- @depends: record_links_post_delete_triggers2
+CREATE OR REPLACE FUNCTION clean_up_record_links_before_orderitems_delete() RETURNS trigger AS $$
+  BEGIN
+    DELETE FROM record_links
+      WHERE (from_table = 'orderitems' AND from_id = OLD.id)
+         OR (to_table   = 'orderitems' AND to_id   = OLD.id);
+    RETURN OLD;
+  END;
+$$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION clean_up_record_links_before_delivery_order_items_delete() RETURNS trigger AS $$
+  BEGIN
+    DELETE FROM record_links
+      WHERE (from_table = 'delivery_order_items' AND from_id = OLD.id)
+         OR (to_table   = 'delivery_order_items' AND to_id   = OLD.id);
+    RETURN OLD;
+  END;
+$$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION clean_up_record_links_before_invoice_delete() RETURNS trigger AS $$
+  BEGIN
+    DELETE FROM record_links
+      WHERE (from_table = 'invoice' AND from_id = OLD.id)
+         OR (to_table   = 'invoice' AND to_id   = OLD.id);
+    RETURN OLD;
+  END;
+$$ LANGUAGE plpgsql;
+
+
+
+CREATE TRIGGER before_delete_orderitems_trigger
+BEFORE DELETE ON orderitems FOR EACH ROW EXECUTE
+PROCEDURE clean_up_record_links_before_orderitems_delete();
+
+CREATE TRIGGER before_delete_delivery_order_items_trigger
+BEFORE DELETE ON delivery_order_items FOR EACH ROW EXECUTE
+PROCEDURE clean_up_record_links_before_delivery_order_items_delete();
+
+CREATE TRIGGER before_delete_invoice_trigger
+BEFORE DELETE ON invoice FOR EACH ROW EXECUTE
+PROCEDURE clean_up_record_links_before_invoice_delete();
+
+
+