X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fis.pl;h=740002bee183fcc710e162cebcd2aba3ed753d01;hb=c0f1c3eec56473b63fe132bea71b5cf3b2943065;hp=b38cfd1d5446b3793fcd32ff9c4fc151990c308f;hpb=b1dbc0a2a7a5b363ee05d62acdc86bc8c76bb1be;p=kivitendo-erp.git diff --git a/bin/mozilla/is.pl b/bin/mozilla/is.pl index b38cfd1d5..740002bee 100644 --- a/bin/mozilla/is.pl +++ b/bin/mozilla/is.pl @@ -155,14 +155,6 @@ sub invoice_links { $ref->{name} = $form->quote($ref->{name}); } - # Load data for a specific order and update form fields - my $order_data = OE->get_order_data_by_ordnumber(%$form) if $form->{ordnumber}; - - # Copy the fields we need to %form - for my $key (qw(payment_id salesman_id orddate taxzone_id quonumber)) { - $form->{$key} = $order_data->{$key}; - } - $form->restore_vars(qw(id)); IS->retrieve_invoice(\%myconfig, \%$form); @@ -274,7 +266,13 @@ sub prepare_invoice { # get pricegroups for parts IS->get_pricegroups_for_parts(\%myconfig, \%$form); - set_pricegroup($_) for 1 .. $form->{rowcount}; + + # Problem: set_pricegroup resets the sellprice of old invoices to the price + # currently defined in the pricegroup, which is a problem if the price has + # changed, as the old invoice gets the new price + # set_pricegroup must never be called, when an old invoice is initially loaded + + # set_pricegroup($_) for 1 .. $form->{rowcount}; } $main::lxdebug->leave_sub(); } @@ -476,7 +474,7 @@ sub update { my ($recursive_call) = shift; -# map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(exchangerate creditlimit creditremaining) unless $recursive_call; + $form->{exchangerate} = $form->parse_amount(\%myconfig, $form->{exchangerate}) unless $recursive_call; $form->{print_and_post} = 0 if $form->{second_run}; my $taxincluded = "checked" if $form->{taxincluded}; @@ -513,7 +511,11 @@ sub update { my $rows = scalar @{ $form->{item_list} }; - $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{customer_discount} * 100); + # Falls kein Kundenrabatt vorhanden ist, den aktuellen Rabatt nicht mit 0% überschreiben, + # da hier der Anwender schon manual einen Wert eingetragen haben könnte (analog zu qty) Bugfix: 1412 + if ($form->{customer_discount}){ + $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{customer_discount} * 100); + } if ($rows) { $form->{"qty_$i"} = ($form->{"qty_$i"} * 1) ? $form->{"qty_$i"} : 1; @@ -635,7 +637,7 @@ sub post_payment { # Das Problem hierbei ist, dass in IS.pm post_invoice IMMER alle Zahlungseingänge aus $form # erneut gespeichert werden. Prinzipiell wäre es besser NUR die Änderungen des Rechnungs- # belegs (neue Zahlung aber nichts anderes) zu speichern ... - # Vielleicht könnte man ähnlich wie bei Rechnung löschen verfahren + # Vielleicht könnte man ähnlich wie bei Rechnung löschen verfahren $form->error($locale->text('Cannot post payment for a closed period!')) if ($form->date_closed($form->{"datepaid_$form->{paidaccounts}"}, \%myconfig)); @@ -784,6 +786,11 @@ sub use_as_template { $form->{paidaccounts} = 1; $form->{rowcount}--; $form->{invdate} = $form->current_date(\%myconfig); + + # remember pricegroups for "use as template" + IS->get_pricegroups_for_parts(\%myconfig, \%$form); + set_pricegroup($_) for 1 .. $form->{rowcount}; + &display_form; $main::lxdebug->leave_sub();