From: Jan Büren Date: Fri, 23 Jan 2015 07:32:10 +0000 (+0100) Subject: Merge branch 'master' of github.com:kivitendo/kivitendo-erp X-Git-Tag: release-3.2.0beta~48 X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/commitdiff_plain/0ef6b519d07f99c8176f5edd59ea3158956cc7b3?hp=01b4e844b8991b2f660e89adceed03ca0db9491a Merge branch 'master' of github.com:kivitendo/kivitendo-erp --- diff --git a/SL/IR.pm b/SL/IR.pm index 8ce3d0428..98dcc86ff 100644 --- 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 diff --git a/SL/IS.pm b/SL/IS.pm index e09c08c31..36036188d 100644 --- 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) { diff --git a/SL/OE.pm b/SL/OE.pm index a60b86c5a..d8c66f5ef 100644 --- 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 diff --git a/bin/mozilla/oe.pl b/bin/mozilla/oe.pl index 904a4b9fe..9a1da4a39 100644 --- a/bin/mozilla/oe.pl +++ b/bin/mozilla/oe.pl @@ -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 index 000000000..904f4bb10 --- /dev/null +++ b/sql/Pg-upgrade2/record_links_orderitems_delete_triggers.sql @@ -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(); + + +