X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/1889a90c69d49efe8cad029c7a3b7baf6b4d0c6e..217d32f3531a3565d647a1cfd0f3deb9b9ec1365:/SL/IS.pm diff --git a/SL/IS.pm b/SL/IS.pm index 039c034b4..261b342a2 100644 --- a/SL/IS.pm +++ b/SL/IS.pm @@ -148,7 +148,7 @@ sub invoice_details { my @arrays = qw(runningnumber number description longdescription qty ship unit bin - deliverydate_oe ordnumber_oe transdate_oe licensenumber validuntil + deliverydate_oe ordnumber_oe transdate_oe validuntil partnotes serialnumber reqdate sellprice listprice netprice discount p_discount discount_sub nodiscount_sub linetotal nodiscount_linetotal tax_rate projectnumber projectdescription @@ -201,9 +201,11 @@ sub invoice_details { push @{ $form->{TEMPLATE_ARRAYS}->{description} }, $form->{"description_$i"}; push @{ $form->{TEMPLATE_ARRAYS}->{longdescription} }, $form->{"longdescription_$i"}; push @{ $form->{TEMPLATE_ARRAYS}->{qty} }, $form->format_amount($myconfig, $form->{"qty_$i"}); + push @{ $form->{TEMPLATE_ARRAYS}->{qty_nofmt} }, $form->{"qty_$i"}; push @{ $form->{TEMPLATE_ARRAYS}->{unit} }, $form->{"unit_$i"}; push @{ $form->{TEMPLATE_ARRAYS}->{deliverydate_oe} }, $form->{"reqdate_$i"}; push @{ $form->{TEMPLATE_ARRAYS}->{sellprice} }, $form->{"sellprice_$i"}; + push @{ $form->{TEMPLATE_ARRAYS}->{sellprice_nofmt} }, $form->parse_amount($myconfig, $form->{"sellprice_$i"}); push @{ $form->{TEMPLATE_ARRAYS}->{ordnumber_oe} }, $form->{"ordnumber_$i"}; push @{ $form->{TEMPLATE_ARRAYS}->{transdate_oe} }, $form->{"transdate_$i"}; push @{ $form->{TEMPLATE_ARRAYS}->{invnumber} }, $form->{"invnumber"}; @@ -212,22 +214,7 @@ sub invoice_details { push @{ $form->{TEMPLATE_ARRAYS}->{price_factor_name} }, $price_factor->{description}; push @{ $form->{TEMPLATE_ARRAYS}->{partsgroup} }, $form->{"partsgroup_$i"}; push @{ $form->{TEMPLATE_ARRAYS}->{reqdate} }, $form->{"reqdate_$i"}; - - if ($form->{lizenzen}) { - if ($form->{"licensenumber_$i"}) { - $query = qq|SELECT licensenumber, validuntil FROM license WHERE id = ?|; - my ($licensenumber, $validuntil) = selectrow_query($form, $dbh, $query, conv_i($form->{"licensenumber_$i"})); - push(@{ $form->{TEMPLATE_ARRAYS}->{licensenumber} }, $licensenumber); - push(@{ $form->{TEMPLATE_ARRAYS}->{validuntil} }, $locale->date($myconfig, $validuntil, 0)); - - } else { - push(@{ $form->{TEMPLATE_ARRAYS}->{licensenumber} }, ""); - push(@{ $form->{TEMPLATE_ARRAYS}->{validuntil} }, ""); - } - } - - # listprice - push(@{ $form->{TEMPLATE_ARRAYS}->{listprice} }, $form->{"listprice_$i"}); + push(@{ $form->{TEMPLATE_ARRAYS}->{listprice} }, $form->{"listprice_$i"}); my $sellprice = $form->parse_amount($myconfig, $form->{"sellprice_$i"}); my ($dec) = ($sellprice =~ /\.(\d+)/); @@ -241,12 +228,14 @@ sub invoice_details { my $nodiscount_linetotal = $form->round_amount($form->{"qty_$i"} * $sellprice / $price_factor->{factor}, 2); $form->{"netprice_$i"} = $form->round_amount($form->{"qty_$i"} ? ($linetotal / $form->{"qty_$i"}) : 0, 2); - push @{ $form->{TEMPLATE_ARRAYS}->{netprice} }, ($form->{"netprice_$i"} != 0) ? $form->format_amount($myconfig, $form->{"netprice_$i"}, $decimalplaces) : ''; + push @{ $form->{TEMPLATE_ARRAYS}->{netprice} }, ($form->{"netprice_$i"} != 0) ? $form->format_amount($myconfig, $form->{"netprice_$i"}, $decimalplaces) : ''; + push @{ $form->{TEMPLATE_ARRAYS}->{netprice_nofmt} }, ($form->{"netprice_$i"} != 0) ? $form->{"netprice_$i"} : ''; $linetotal = ($linetotal != 0) ? $linetotal : ''; - push @{ $form->{TEMPLATE_ARRAYS}->{discount} }, ($discount != 0) ? $form->format_amount($myconfig, $discount * -1, 2) : ''; - push @{ $form->{TEMPLATE_ARRAYS}->{p_discount} }, $form->{"discount_$i"}; + push @{ $form->{TEMPLATE_ARRAYS}->{discount} }, ($discount != 0) ? $form->format_amount($myconfig, $discount * -1, 2) : ''; + push @{ $form->{TEMPLATE_ARRAYS}->{discount_nofmt} }, ($discount != 0) ? $discount * -1 : ''; + push @{ $form->{TEMPLATE_ARRAYS}->{p_discount} }, $form->{"discount_$i"}; $form->{total} += $linetotal; $form->{nodiscount_total} += $nodiscount_linetotal; @@ -258,8 +247,10 @@ sub invoice_details { } if ($form->{"subtotal_$i"} && $subtotal_header && ($subtotal_header != $i)) { - push @{ $form->{TEMPLATE_ARRAYS}->{discount_sub} }, $form->format_amount($myconfig, $discount_subtotal, 2); - push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_sub} }, $form->format_amount($myconfig, $nodiscount_subtotal, 2); + push @{ $form->{TEMPLATE_ARRAYS}->{discount_sub} }, $form->format_amount($myconfig, $discount_subtotal, 2); + push @{ $form->{TEMPLATE_ARRAYS}->{discount_sub_nofmt} }, $discount_subtotal; + push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_sub} }, $form->format_amount($myconfig, $nodiscount_subtotal, 2); + push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_sub_nofmt} }, $nodiscount_subtotal; $discount_subtotal = 0; $nodiscount_subtotal = 0; @@ -274,11 +265,13 @@ sub invoice_details { $nodiscount += $linetotal; } - push @{ $form->{TEMPLATE_ARRAYS}->{linetotal} }, $form->format_amount($myconfig, $linetotal, 2); - push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_linetotal} }, $form->format_amount($myconfig, $nodiscount_linetotal, 2); + push @{ $form->{TEMPLATE_ARRAYS}->{linetotal} }, $form->format_amount($myconfig, $linetotal, 2); + push @{ $form->{TEMPLATE_ARRAYS}->{linetotal_nofmt} }, $linetotal_exact; + push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_linetotal} }, $form->format_amount($myconfig, $nodiscount_linetotal, 2); + push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_linetotal_nofmt} }, $nodiscount_linetotal; - push(@{ $form->{TEMPLATE_ARRAYS}->{projectnumber} }, $projectnumbers{$form->{"project_id_$i"}}); - push(@{ $form->{TEMPLATE_ARRAYS}->{projectdescription} }, $projectdescriptions{$form->{"project_id_$i"}}); + push(@{ $form->{TEMPLATE_ARRAYS}->{projectnumber} }, $projectnumbers{$form->{"project_id_$i"}}); + push(@{ $form->{TEMPLATE_ARRAYS}->{projectdescription} }, $projectdescriptions{$form->{"project_id_$i"}}); @taxaccounts = split(/ /, $form->{"taxaccounts_$i"}); $taxrate = 0; @@ -368,8 +361,11 @@ sub invoice_details { $tax += $taxamount = $form->round_amount($taxaccounts{$item}, 2); push(@{ $form->{TEMPLATE_ARRAYS}->{taxbase} }, $form->format_amount($myconfig, $taxbase{$item}, 2)); + push(@{ $form->{TEMPLATE_ARRAYS}->{taxbase_nofmt} }, $taxbase{$item}); push(@{ $form->{TEMPLATE_ARRAYS}->{tax} }, $form->format_amount($myconfig, $taxamount, 2)); + push(@{ $form->{TEMPLATE_ARRAYS}->{tax_nofmt} }, $taxamount ); push(@{ $form->{TEMPLATE_ARRAYS}->{taxrate} }, $form->format_amount($myconfig, $form->{"${item}_rate"} * 100)); + push(@{ $form->{TEMPLATE_ARRAYS}->{taxrate_nofmt} }, $form->{"${item}_rate"} * 100); push(@{ $form->{TEMPLATE_ARRAYS}->{taxdescription} }, $form->{"${item}_description"} . q{ } . 100 * $form->{"${item}_rate"} . q{%}); push(@{ $form->{TEMPLATE_ARRAYS}->{taxnumber} }, $form->{"${item}_taxnumber"}); } @@ -388,10 +384,12 @@ sub invoice_details { } } if($form->{taxincluded}) { - $form->{subtotal} = $form->format_amount($myconfig, $form->{total} - $tax, 2); + $form->{subtotal} = $form->format_amount($myconfig, $form->{total} - $tax, 2); + $form->{subtotal_nofmt} = $form->{total} - $tax; } else { - $form->{subtotal} = $form->format_amount($myconfig, $form->{total}, 2); + $form->{subtotal} = $form->format_amount($myconfig, $form->{total}, 2); + $form->{subtotal_nofmt} = $form->{total}; } $form->{nodiscount_subtotal} = $form->format_amount($myconfig, $form->{nodiscount_total}, 2); @@ -727,14 +725,6 @@ sub post_invoice { conv_i($form->{"marge_price_factor_$i"})); do_query($form, $dbh, $query, @values); - if ($form->{lizenzen} && $form->{"licensenumber_$i"}) { - $query = - qq|INSERT INTO licenseinvoice (trans_id, license_id) - VALUES ((SELECT id FROM invoice WHERE trans_id = ? ORDER BY oid DESC LIMIT 1), ?)|; - @values = (conv_i($form->{"id"}), conv_i($form->{"licensenumber_$i"})); - do_query($form, $dbh, $query, @values); - } - CVar->save_custom_variables(module => 'IC', sub_module => 'invoice', trans_id => $invoice_id, @@ -1346,14 +1336,6 @@ sub reverse_invoice { my @values = (conv_i($form->{id})); do_query($form, $dbh, qq|DELETE FROM acc_trans WHERE trans_id = ?|, @values); do_query($form, $dbh, qq|DELETE FROM invoice WHERE trans_id = ?|, @values); - - if ($form->{lizenzen}) { - $query = - qq|DELETE FROM licenseinvoice - WHERE trans_id in (SELECT id FROM invoice WHERE trans_id = ?)|; - do_query($form, $dbh, $query, @values); - } - do_query($form, $dbh, qq|DELETE FROM shipto WHERE (trans_id = ?) AND (module = 'AR')|, @values); $main::lxdebug->leave_sub(); @@ -1570,12 +1552,6 @@ sub retrieve_invoice { } - if ($form->{lizenzen}) { - $query = qq|SELECT l.licensenumber, l.id AS licenseid FROM license l, licenseinvoice li WHERE l.id = li.license_id AND li.trans_id = ?|; - my ($licensenumber, $licenseid) = selectrow_query($form, $dbh, $query, conv_i($ref->{invoice_pos})); - $ref->{lizenzen} = ""; - } - $ref->{qty} *= -1 if $form->{type} eq "credit_note"; chop $ref->{taxaccounts}; @@ -1765,6 +1741,11 @@ sub retrieve_item { push @values, $form->{"partnumber_$i"}; } + if ($form->{"id_${i}"}) { + $where .= qq| AND p.id = ?|; + push @values, $form->{"id_${i}"}; + } + if ($form->{"description_$i"}) { $where .= qq| ORDER BY p.description|; } else { @@ -1830,6 +1811,19 @@ sub retrieve_item { WHERE $where|; my $sth = prepare_execute_query($form, $dbh, $query, @values); + my @translation_queries = ( [ qq|SELECT tr.translation, tr.longdescription + FROM translation tr + WHERE tr.language_id = ? AND tr.parts_id = ?| ], + [ qq|SELECT tr.translation, tr.longdescription + FROM translation tr + WHERE tr.language_id IN + (SELECT id + FROM language + WHERE article_code = (SELECT article_code FROM language WHERE id = ?)) + AND tr.parts_id = ? + LIMIT 1| ] ); + map { push @{ $_ }, prepare_query($form, $dbh, $_->[0]) } @translation_queries; + while (my $ref = $sth->fetchrow_hashref('NAME_lc')) { # In der Buchungsgruppe ist immer ein Bestandskonto verknuepft, auch wenn @@ -1897,55 +1891,24 @@ sub retrieve_item { $stw->finish; chop $ref->{taxaccounts}; + if ($form->{language_id}) { - $query = - qq|SELECT tr.translation, tr.longdescription - FROM translation tr - WHERE tr.language_id = ? AND tr.parts_id = ?|; - @values = (conv_i($form->{language_id}), conv_i($ref->{id})); - my ($translation, $longdescription) = selectrow_query($form, $dbh, $query, @values); - if ($translation ne "") { + for my $spec (@translation_queries) { + do_statement($form, $spec->[1], $spec->[0], conv_i($form->{language_id}), conv_i($ref->{id})); + my ($translation, $longdescription) = $spec->[1]->fetchrow_array; + next unless $translation; $ref->{description} = $translation; $ref->{longdescription} = $longdescription; - - } else { - $query = - qq|SELECT tr.translation, tr.longdescription - FROM translation tr - WHERE tr.language_id IN - (SELECT id - FROM language - WHERE article_code = (SELECT article_code FROM language WHERE id = ?)) - AND tr.parts_id = ? - LIMIT 1|; - @values = (conv_i($form->{language_id}), conv_i($ref->{id})); - my ($translation, $longdescription) = selectrow_query($form, $dbh, $query, @values); - if ($translation ne "") { - $ref->{description} = $translation; - $ref->{longdescription} = $longdescription; - } + last; } } $ref->{onhand} *= 1; push @{ $form->{item_list} }, $ref; - - if ($form->{lizenzen}) { - if ($ref->{inventory_accno} > 0) { - $query = - qq|SELECT l.* - FROM license l - WHERE l.parts_id = ? AND NOT l.id IN (SELECT li.license_id FROM licenseinvoice li)|; - my $stw = prepare_execute_query($form, $dbh, $query, conv_i($ref->{id})); - while (my $ptr = $stw->fetchrow_hashref('NAME_lc')) { - push @{ $form->{LIZENZEN}{ $ref->{id} } }, $ptr; - } - $stw->finish; - } - } } $sth->finish; + $_->[1]->finish for @translation_queries; foreach my $item (@{ $form->{item_list} }) { my $custom_variables = CVar->get_custom_variables(module => 'IC', @@ -2035,27 +1998,27 @@ sub get_pricegroups_for_parts { } my $query = - qq|SELECT + qq|SELECT + 0 as pricegroup_id, + sellprice AS default_sellprice, + '' AS pricegroup, + sellprice AS price, + 'selected' AS selected + FROM parts + WHERE id = ? + UNION ALL + SELECT pricegroup_id, - (SELECT p.sellprice FROM parts p WHERE p.id = ?) AS default_sellprice, - (SELECT pg.pricegroup FROM pricegroup pg WHERE id = pricegroup_id) AS pricegroup, + parts.sellprice AS default_sellprice, + pricegroup.pricegroup, price, '' AS selected FROM prices + LEFT JOIN parts ON parts.id = parts_id + LEFT JOIN pricegroup ON pricegroup.id = pricegroup_id WHERE parts_id = ? - - UNION - - SELECT - 0 as pricegroup_id, - (SELECT sellprice FROM parts WHERE id = ?) AS default_sellprice, - '' AS pricegroup, - (SELECT DISTINCT sellprice FROM parts where id = ?) AS price, - 'selected' AS selected - FROM prices - ORDER BY pricegroup|; - my @values = (conv_i($id), conv_i($id), conv_i($id), conv_i($id)); + my @values = (conv_i($id), conv_i($id)); my $pkq = prepare_execute_query($form, $dbh, $query, @values); while (my $pkr = $pkq->fetchrow_hashref('NAME_lc')) {