X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FIS.pm;h=a05f25e3d11a123f53bc5c982d5a2cbbb8a906ce;hb=8e0f6e70;hp=caa2c34695a42dbbeea79a4af2cb1402f42794cb;hpb=bc40bcabc425b99f3b79a5544684a6fe8674adfe;p=kivitendo-erp.git diff --git a/SL/IS.pm b/SL/IS.pm index caa2c3469..a05f25e3d 100644 --- a/SL/IS.pm +++ b/SL/IS.pm @@ -519,17 +519,23 @@ sub invoice_details { $form->{nodiscount} = $form->format_amount($myconfig, $nodiscount, 2); $form->{yesdiscount} = $form->format_amount($myconfig, $form->{nodiscount_total} - $nodiscount, 2); - $form->{invtotal} = ($form->{taxincluded}) ? $form->{total} : $form->{total} + $tax; - $form->{total} = $form->format_amount($myconfig, $form->{invtotal} - $form->{paid}, 2); + my $grossamount = ($form->{taxincluded}) ? $form->{total} : $form->{total} + $tax; + $form->{invtotal} = $form->round_amount($grossamount, 2, 1); + $form->{rounding} = $form->round_amount( + $form->{invtotal} - $form->round_amount($grossamount, 2), + 2 + ); + $form->{rounding} = $form->format_amount($myconfig, $form->{rounding}, 2); + $form->{total} = $form->format_amount($myconfig, $form->{invtotal} - $form->{paid}, 2); $form->{invtotal} = $form->format_amount($myconfig, $form->{invtotal}, 2); $form->{paid} = $form->format_amount($myconfig, $form->{paid}, 2); - $form->set_payment_options($myconfig, $form->{invdate}); + $form->set_payment_options($myconfig, $form->{invdate}, 'sales_invoice'); + $form->{department} = SL::DB::Manager::Department->find_by(id => $form->{department_id})->description if $form->{department_id}; $form->{delivery_term} = SL::DB::Manager::DeliveryTerm->find_by(id => $form->{delivery_term_id} || undef); $form->{delivery_term}->description_long($form->{delivery_term}->translated_attribute('description_long', $form->{language_id})) if $form->{delivery_term} && $form->{language_id}; - $form->{department} = SL::DB::Manager::Department->find_by(id => $form->{department_id})->description if $form->{department_id}; $form->{username} = $myconfig->{name}; @@ -600,8 +606,8 @@ sub customer_details { $ref->{cp_gender} = $contact->cp_gender; } } - # remove id and taxincluded before copy back - delete @$ref{qw(id taxincluded)}; + # remove id,notes (double of customernotes) and taxincluded before copy back + delete @$ref{qw(id taxincluded notes)}; @wanted_vars = grep({ $_ } @wanted_vars); if (scalar(@wanted_vars) > 0) { @@ -969,15 +975,20 @@ SQL } # Invoice Summary includes Rounding + my $grossamount = $netamount + $tax; my $rounding = $form->round_amount( - $form->round_amount($netamount + $tax, 2, 1) - $form->round_amount($netamount + $tax, 2), 2 + $form->round_amount($grossamount, 2, 1) - $form->round_amount($grossamount, 2), + 2 ); my $rnd_accno = $rounding == 0 ? 0 : $rounding > 0 ? $form->{rndgain_accno} - : $form->{rndloss_accno}; - $form->{amount}{ $form->{id} }{ $form->{AR} } = $form->round_amount($netamount + $tax, 2, 1); - $form->{paid} = - $form->round_amount($form->{paid} * $form->{exchangerate} + $diff, 2); + : $form->{rndloss_accno} + ; + $form->{amount}{ $form->{id} }{ $form->{AR} } = $form->round_amount($grossamount, 2, 1); + $form->{paid} = $form->round_amount( + $form->{paid} * $form->{exchangerate} + $diff, + 2 + ); # reverse AR $form->{amount}{ $form->{id} }{ $form->{AR} } *= -1; @@ -1293,7 +1304,7 @@ SQL if ($form->{storno}) { $query = qq!UPDATE ar SET - paid = paid + amount, + paid = amount, storno = 't', intnotes = ? || intnotes WHERE id = ?!; @@ -1301,7 +1312,10 @@ SQL do_query($form, $dbh, qq|UPDATE ar SET paid = amount WHERE id = ?|, conv_i($form->{"id"})); } - $form->new_lastmtime('ar'); + # maybe we are in a larger transaction and the current + # object is not yet persistent in the db, therefore we + # need the current dbh to get the not yet committed mtime + $form->new_lastmtime('ar', $provided_dbh); $form->{name} = $form->{customer}; $form->{name} =~ s/--\Q$form->{customer_id}\E//; @@ -1478,7 +1492,7 @@ sub _determine_wh_and_bin { parts_id => $part->id, bin_id => $bin_id); if ($error == 1) { - push @errors, $::locale->text('Part "#1" has chargenumber or best before date set. So it cannot be transfered automaticaly.', + push @errors, $::locale->text('Part "#1" has chargenumber or best before date set. So it cannot be transfered automatically.', $part->description); } my $form_unit_obj = SL::DB::Unit->new(name => $unit)->load; @@ -2101,7 +2115,7 @@ sub get_customer { c.id AS customer_id, c.name AS customer, c.discount as customer_discount, c.creditlimit, c.email, c.cc, c.bcc, c.language_id, c.payment_id, c.delivery_term_id, c.street, c.zipcode, c.city, c.country, - c.notes AS intnotes, c.klass as customer_klass, c.taxzone_id, c.salesman_id, cu.name AS curr, + c.notes AS intnotes, c.pricegroup_id as customer_pricegroup_id, c.taxzone_id, c.salesman_id, cu.name AS curr, c.taxincluded_checked, c.direct_debit, b.discount AS tradediscount, b.description AS business FROM customer c