X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FIR.pm;h=208d2e4fb3cbb9e9800d9ce53553dcde312e19d0;hb=37be5dfe10abacf6349f94c93d0f0abe1f0ca86e;hp=8ce3d04284e270c5993b38796016d1f2d84d6673;hpb=9a076af6876160ab2a9d86692f64d61d5ee9003c;p=kivitendo-erp.git diff --git a/SL/IR.pm b/SL/IR.pm index 8ce3d0428..208d2e4fb 100644 --- a/SL/IR.pm +++ b/SL/IR.pm @@ -106,6 +106,8 @@ sub post_invoice { for my $i (1 .. $form->{rowcount}) { next unless $form->{"id_$i"}; + my $position = $i; + $form->{"qty_$i"} = $form->parse_amount($myconfig, $form->{"qty_$i"}); $form->{"qty_$i"} *= -1 if $form->{storno}; @@ -367,20 +369,27 @@ sub post_invoice { next if $payments_only; + CVar->get_non_editable_ic_cvars(form => $form, + dbh => $dbh, + row => $i, + sub_module => 'invoice', + may_converted_from => ['delivery_order_items', 'orderitems', 'invoice']); + if (!$form->{"invoice_id_$i"}) { # there is no persistent id, therefore create one with all necessary constraints my $q_invoice_id = qq|SELECT nextval('invoiceid')|; my $h_invoice_id = prepare_query($form, $dbh, $q_invoice_id); do_statement($form, $h_invoice_id, $q_invoice_id); $form->{"invoice_id_$i"} = $h_invoice_id->fetchrow_array(); - my $q_create_invoice_id = qq|INSERT INTO invoice (id, trans_id, parts_id) values (?, ?, ?)|; - do_query($form, $dbh, $q_create_invoice_id, conv_i($form->{"invoice_id_$i"}), conv_i($form->{id}), conv_i($form->{"id_$i"})); + my $q_create_invoice_id = qq|INSERT INTO invoice (id, trans_id, position, parts_id) values (?, ?, ?, ?)|; + do_query($form, $dbh, $q_create_invoice_id, conv_i($form->{"invoice_id_$i"}), + conv_i($form->{id}), conv_i($position), conv_i($form->{"id_$i"})); $h_invoice_id->finish(); } # save detail record in invoice table $query = <{id}), conv_i($form->{"id_$i"}), + @values = (conv_i($form->{id}), conv_i($position), conv_i($form->{"id_$i"}), $form->{"description_$i"}, $restricter->process($form->{"longdescription_$i"}), $form->{"qty_$i"} * -1, $baseqty * -1, $form->{"sellprice_$i"}, $fxsellprice, $form->{"discount_$i"}, $allocated, $form->{"unit_$i"}, conv_date($form->{deliverydate}), @@ -407,6 +416,20 @@ SQL name_prefix => 'ic_', name_postfix => "_$i", dbh => $dbh); + + # link previous items with invoice items See IS.pm (no credit note -> no invoice item) + foreach (qw(delivery_order_items orderitems)) { + if (!$form->{useasnew} && $form->{"converted_from_${_}_id_$i"}) { + RecordLinks->create_links('dbh' => $dbh, + 'mode' => 'ids', + 'from_table' => $_, + 'from_ids' => $form->{"converted_from_${_}_id_$i"}, + 'to_table' => 'invoice', + 'to_id' => $form->{"invoice_id_$i"}, + ); + } + delete $form->{"converted_from_${_}_id_$i"}; + } } $h_item_unit->finish(); @@ -683,13 +706,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 @@ -706,7 +722,7 @@ SQL $form->{invnumber}, $form->{ordnumber}, $form->{quonumber}, conv_date($form->{invdate}), conv_date($form->{orddate}), conv_date($form->{quodate}), conv_i($form->{vendor_id}), $amount, $netamount, $form->{paid}, conv_date($form->{duedate}), - '1', $taxzone_id, $form->{notes}, $form->{taxincluded} ? 't' : 'f', + '1', $taxzone_id, $restricter->process($form->{notes}), $form->{taxincluded} ? 't' : 'f', $form->{intnotes}, conv_i($form->{storno_id}), $form->{storno} ? 't' : 'f', conv_i($form->{cp_id}), conv_i($form->{employee_id}), conv_i($form->{department_id}), conv_i($form->{delivery_term_id}), conv_i($form->{globalproject_id}), @@ -742,14 +758,16 @@ SQL Common::webdav_folder($form); # Link this record to the records it was created from. - RecordLinks->create_links('dbh' => $dbh, - 'mode' => 'ids', - 'from_table' => 'oe', - 'from_ids' => $form->{convert_from_oe_ids}, - 'to_table' => 'ap', - 'to_id' => $form->{id}, - ); - delete $form->{convert_from_oe_ids}; + if ($form->{convert_from_oe_ids}) { + RecordLinks->create_links('dbh' => $dbh, + 'mode' => 'ids', + 'from_table' => 'oe', + 'from_ids' => $form->{convert_from_oe_ids}, + 'to_table' => 'ap', + 'to_id' => $form->{id}, + ); + delete $form->{convert_from_oe_ids}; + } my @convert_from_do_ids = map { $_ * 1 } grep { $_ } split m/\s+/, $form->{convert_from_do_ids}; if (scalar @convert_from_do_ids) { @@ -789,8 +807,6 @@ SQL exporttype => DATEV_ET_BUCHUNGEN, format => DATEV_FORMAT_KNE, dbh => $dbh, - from => $transdate, - to => $transdate, trans_id => $form->{id}, ); @@ -1010,7 +1026,7 @@ sub retrieve_invoice { WHERE i.trans_id = ? - ORDER BY i.id|; + ORDER BY i.position|; $sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{id})); while (my $ref = $sth->fetchrow_hashref("NAME_lc")) { @@ -1629,5 +1645,4 @@ sub get_duedate { return $duedate; } - 1;