X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FIS.pm;h=1ddadc2f52d6e67537225c4bd941ddcdd5d75766;hb=40534aad33bbf6cfb7f1c32e6fea865ed3dd3d35;hp=d011a083bfadd3b39659e30a1f47861376cc904d;hpb=613c0749a46dd4e5e0dbec1f3f1997c77f55fffb;p=kivitendo-erp.git diff --git a/SL/IS.pm b/SL/IS.pm index d011a083b..1ddadc2f5 100644 --- a/SL/IS.pm +++ b/SL/IS.pm @@ -366,6 +366,7 @@ sub invoice_details { push(@{ $form->{paymentaccount} }, $description); push(@{ $form->{paymentdate} }, $form->{"datepaid_$i"}); push(@{ $form->{paymentsource} }, $form->{"source_$i"}); + push(@{ $form->{paymentmemo} }, $form->{"memo_$i"}); $form->{paid} += $form->parse_amount($myconfig, $form->{"paid_$i"}); } @@ -499,7 +500,7 @@ sub post_invoice { if (!$form->{employee_id}) { $form->get_employee($dbh); } - + $form->{defaultcurrency} = $form->get_default_currency($myconfig); ($null, $form->{department_id}) = split(/--/, $form->{department}); @@ -951,6 +952,8 @@ sub post_invoice { $amount = $netamount + $tax; # save AR record + #erweiterung fuer lieferscheinnummer (donumber) 12.02.09 jb + $query = qq|UPDATE ar set invnumber = ?, ordnumber = ?, quonumber = ?, cusordnumber = ?, transdate = ?, orddate = ?, quodate = ?, customer_id = ?, @@ -960,24 +963,26 @@ sub post_invoice { curr = ?, department_id = ?, payment_id = ?, taxincluded = ?, type = ?, language_id = ?, taxzone_id = ?, shipto_id = ?, employee_id = ?, salesman_id = ?, storno_id = ?, storno = ?, - cp_id = ?, marge_total = ?, marge_percent = ?, + cp_id = ?, marge_total = ?, marge_percent = ?, globalproject_id = ?, delivery_customer_id = ?, - transaction_description = ?, delivery_vendor_id = ? + transaction_description = ?, delivery_vendor_id = ?, + donumber = ? WHERE id = ?|; @values = ( $form->{"invnumber"}, $form->{"ordnumber"}, $form->{"quonumber"}, $form->{"cusordnumber"}, - conv_date($form->{"invdate"}), conv_date($form->{"orddate"}), conv_date($form->{"quodate"}), conv_i($form->{"customer_id"}), - $amount, $netamount, $form->{"paid"}, conv_date($form->{"datepaid"}), + conv_date($form->{"invdate"}), conv_date($form->{"orddate"}), conv_date($form->{"quodate"}), conv_i($form->{"customer_id"}), + $amount, $netamount, $form->{"paid"}, conv_date($form->{"datepaid"}), conv_date($form->{"duedate"}), conv_date($form->{"deliverydate"}), '1', $form->{"shippingpoint"}, $form->{"shipvia"}, conv_i($form->{"terms"}), $form->{"notes"}, $form->{"intnotes"}, $form->{"currency"}, conv_i($form->{"department_id"}), conv_i($form->{"payment_id"}), $form->{"taxincluded"} ? 't' : 'f', $form->{"type"}, conv_i($form->{"language_id"}), conv_i($form->{"taxzone_id"}), conv_i($form->{"shipto_id"}), - conv_i($form->{"employee_id"}), conv_i($form->{"salesman_id"}), conv_i($form->{storno_id}), $form->{"storno"} ? 't' : 'f', + conv_i($form->{"employee_id"}), conv_i($form->{"salesman_id"}), conv_i($form->{storno_id}), $form->{"storno"} ? 't' : 'f', conv_i($form->{"cp_id"}), 1 * $form->{marge_total} , 1 * $form->{marge_percent}, - conv_i($form->{"globalproject_id"}), conv_i($form->{"delivery_customer_id"}), + conv_i($form->{"globalproject_id"}), conv_i($form->{"delivery_customer_id"}), $form->{transaction_description}, conv_i($form->{"delivery_vendor_id"}), + $form->{"donumber"}, #das entsprechende feld lieferscheinnummer aus der html-form 12.02.09 jb conv_i($form->{"id"})); do_query($form, $dbh, $query, @values); - + if($form->{"formname"} eq "credit_note") { for my $i (1 .. $form->{rowcount}) { $query = qq|UPDATE parts SET onhand = onhand - ? WHERE id = ?|; @@ -985,7 +990,7 @@ sub post_invoice { do_query($form, $dbh, $query, @values); } } - + if ($form->{storno}) { $query = qq!UPDATE ar SET @@ -1208,6 +1213,9 @@ sub cogs { $main::lxdebug->enter_sub(); my ($dbh, $form, $id, $totalqty, $basefactor, $row) = @_; + + $basefactor ||= 1; + $form->{taxzone_id} *=1; my $transdate = $form->{invdate} ? $dbh->quote($form->{invdate}) : "current_date"; my $taxzone_id = $form->{"taxzone_id"} * 1; @@ -1238,7 +1246,7 @@ sub cogs { # total expenses and inventory # sellprice is the cost of the item - my $linetotal = $form->round_amount(($ref->{sellprice} * $qty) / $basefactor, 2); + my $linetotal = $form->round_amount(($ref->{sellprice} * $qty) / ( $basefactor || 1 ), 2); if (!$main::eur) { $ref->{expense_accno} = ($form->{"expense_accno_$row"}) ? $form->{"expense_accno_$row"} : $ref->{expense_accno}; @@ -1385,6 +1393,8 @@ sub retrieve_invoice { my $id = conv_i($form->{id}); # retrieve invoice + #erweiterung um das entsprechende feld lieferscheinnummer (a.donumber) in der html-maske anzuzeigen 12.02.2009 jb + $query = qq|SELECT a.invnumber, a.ordnumber, a.quonumber, a.cusordnumber, @@ -1396,7 +1406,7 @@ sub retrieve_invoice { a.language_id, a.delivery_customer_id, a.delivery_vendor_id, a.type, a.transaction_description, a.marge_total, a.marge_percent, - e.name AS employee + e.name AS employee, a.donumber FROM ar a LEFT JOIN employee e ON (e.id = a.employee_id) WHERE a.id = ?|; @@ -1432,7 +1442,7 @@ sub retrieve_invoice { my $transdate = $form->{deliverydate} ? $dbh->quote($form->{deliverydate}) : $form->{invdate} ? $dbh->quote($form->{invdate}) : "current_date"; - + my $taxzone_id = $form->{taxzone_id} *= 1; $taxzone_id = 0 if (0 > $taxzone_id) || (3 < $taxzone_id); @@ -1482,7 +1492,7 @@ sub retrieve_invoice { LEFT JOIN chart c ON (c.id = t.chart_id) WHERE t.id IN (SELECT tk.tax_id FROM taxkeys tk - WHERE tk.chart_id = (SELECT id FROM chart WHERE accno = ?) + WHERE tk.chart_id = (SELECT id FROM chart WHERE accno = ?) AND startdate <= date($transdate) ORDER BY startdate DESC LIMIT 1) ORDER BY c.accno|; @@ -1562,7 +1572,7 @@ sub get_customer { # get customer $query = qq|SELECT - c.id AS customer_id, c.name AS customer, c.discount, c.creditlimit, c.terms, + c.id AS customer_id, c.name AS customer, c.discount as customer_discount, c.creditlimit, c.terms, c.email, c.cc, c.bcc, c.language_id, c.payment_id, c.street, c.zipcode, c.city, c.country, c.notes AS intnotes, c.klass as customer_klass, c.taxzone_id, c.salesman_id, @@ -1688,13 +1698,19 @@ sub retrieve_item { my $where = qq|NOT p.obsolete = '1'|; my @values; - foreach my $column (qw(p.partnumber p.description pgpartsgroup)) { + foreach my $column (qw(p.partnumber p.description pgpartsgroup )) { my ($table, $field) = split m/\./, $column; next if !$form->{"${field}_${i}"}; $where .= qq| AND lower(${column}) ILIKE ?|; push @values, '%' . $form->{"${field}_${i}"} . '%'; } + #Es soll auch nach EAN gesucht werden, ohne Einschränkung durch Beschreibung + if ($form->{"partnumber_$i"} && !$form->{"description_$i"}) { + $where .= qq| OR (NOT p.obsolete = '1' AND p.ean = ? )|; + push @values, $form->{"partnumber_$i"}; + } + if ($form->{"description_$i"}) { $where .= qq| ORDER BY p.description|; } else { @@ -1809,7 +1825,7 @@ sub retrieve_item { my $i = 0; while (my $ptr = $stw->fetchrow_hashref('NAME_lc')) { - # if ($customertax{$ref->{accno}}) + # if ($customertax{$ref->{accno}}) if (($ptr->{accno} eq "") && ($ptr->{rate} == 0)) { $i++; $ptr->{accno} = $i; @@ -2006,7 +2022,8 @@ sub get_pricegroups_for_parts { } else { - $form->{"sellprice_$i"} = $pkr->{price}; +# this sub should not set anything and only return. --sschoeling, 20090506 +# $form->{"sellprice_$i"} = $pkr->{price}; } } elsif ($pkr->{price} == $pkr->{default_sellprice}) {