X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FIR.pm;h=3ebae9653489c9e9104b09e5f121e571c45a030d;hb=319c72e8738bbbfd457ae33dafd03ab8d5203a12;hp=69463ba4973fcb96007cdbd6e41ca5082e031725;hpb=54e4131e091831e00a861fe2c4f53e344b87ddca;p=kivitendo-erp.git diff --git a/SL/IR.pm b/SL/IR.pm index 69463ba49..3ebae9653 100644 --- a/SL/IR.pm +++ b/SL/IR.pm @@ -107,6 +107,10 @@ sub post_invoice { if ($form->{storno}) { $form->{"qty_$i"} *= -1; } + + if ($main::eur) { + $form->{"inventory_accno_$i"} = $form->{"expense_accno_$i"}; + } if ($form->{"qty_$i"} != 0) { @@ -841,7 +845,7 @@ sub retrieve_invoice { # retrieve invoice $query = qq|SELECT a.cp_id, a.invnumber, a.transdate AS invdate, a.duedate, - a.ordnumber, a.quonumber, a.paid, a.taxincluded, a.notes, a.taxzone_id, a.storno, + a.ordnumber, a.quonumber, a.paid, a.taxincluded, a.notes, a.taxzone_id, a.storno, a.gldate, a.intnotes, a.curr AS currency FROM ap a WHERE a.id = $form->{id}|; @@ -866,10 +870,9 @@ sub retrieve_invoice { delete($ref->{id}); map { $form->{$_} = $ref->{$_} } keys %$ref; $sth->finish; - my $transdate = "current_date"; - if($form->{invdate}) { - $transdate = "'$form->{invdate}'"; - } + + my $transdate = + $form->{invdate} ? $dbh->quote($form->{invdate}) : "current_date"; if(!$form->{taxzone_id}) { $form->{taxzone_id} = 0; @@ -925,25 +928,13 @@ sub retrieve_invoice { $stw->finish; } - - - #set expense_accno=inventory_accno if they are different => bilanz - $vendor_accno = - ($ref->{expense_accno} != $ref->{inventory_accno}) - ? $ref->{inventory_accno} - : $ref->{expense_accno}; - $vendor_accno = - ($ref->{inventory_accno}) - ? $ref->{inventory_accno} - : $ref->{expense_accno}; - # get tax rates and description $accno_id = - ($form->{vc} eq "customer") ? $ref->{income_accno} : $vendor_accno; - $query = qq|SELECT c.accno, t.taxdescription, t.rate, t.taxnumber - FROM tax t LEFT join chart c ON (c.id=t.chart_id) - WHERE t.taxkey in (SELECT taxkey_id from chart where accno = '$accno_id') - ORDER BY accno|; + ($form->{vc} eq "customer") ? $ref->{income_accno} : $ref->{expense_accno}; + $query = qq|SELECT c.accno, t.taxdescription, t.rate, t.taxnumber + FROM tax t 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='$accno_id') AND startdate<=$transdate ORDER BY startdate desc LIMIT 1) + ORDER BY c.accno|; $stw = $dbh->prepare($query); $stw->execute || $form->dberror($query); $ref->{taxaccounts} = ""; @@ -1122,6 +1113,9 @@ sub retrieve_item { my ($self, $myconfig, $form) = @_; + # connect to database + my $dbh = $form->dbconnect($myconfig); + my $i = $form->{rowcount}; # don't include assemblies or obsolete parts @@ -1150,27 +1144,20 @@ sub retrieve_item { my $transdate = ""; if ($form->{type} eq "invoice") { - $transdate = "'$form->{invdate}'"; - } elsif ($form->{type} eq "purchase_order") { - $transdate = "'$form->{transdate}'"; - } elsif ($form->{type} eq "request_quotation") { - $transdate = "'$form->{transdate}'"; - } - - if ($transdate eq "") { - $transdate = "current_date"; + $transdate = + $form->{invdate} ? $dbh->quote($form->{invdate}) : "current_date"; + } else { + $transdate = + $form->{transdate} ? $dbh->quote($form->{transdate}) : "current_date"; } - # connect to database - my $dbh = $form->dbconnect($myconfig); - - my $query = qq|SELECT p.id, p.partnumber, p.description, p.sellprice, + my $query = qq|SELECT p.id, p.partnumber, p.description, p.lastcost AS sellprice, p.listprice, p.inventory_accno_id, c1.accno AS inventory_accno, c1.new_chart_id AS inventory_new_chart, date($transdate) - c1.valid_from as inventory_valid, c2.accno AS income_accno, c2.new_chart_id AS income_new_chart, date($transdate) - c2.valid_from as income_valid, c3.accno AS expense_accno, c3.new_chart_id AS expense_new_chart, date($transdate) - c3.valid_from as expense_valid, p.unit, p.assembly, p.bin, p.onhand, p.notes AS partnotes, p.notes AS longdescription, p.not_discountable, - pg.partsgroup, p.formel, p.alu + pg.partsgroup, p.formel FROM parts p LEFT JOIN chart c1 ON ((select inventory_accno_id from buchungsgruppen where id=p.buchungsgruppen_id) = c1.id) LEFT JOIN chart c2 ON ((select income_accno_id_$form->{taxzone_id} from buchungsgruppen where id=p.buchungsgruppen_id) = c2.id) @@ -1190,22 +1177,12 @@ sub retrieve_item { } delete($ref->{inventory_accno_id}); - #set expense_accno=inventory_accno if they are different => bilanz - $vendor_accno = - ($ref->{expense_accno} != $ref->{inventory_accno}) - ? $ref->{inventory_accno} - : $ref->{expense_accno}; - $vendor_accno = - ($ref->{inventory_accno}) - ? $ref->{inventory_accno} - : $ref->{expense_accno}; - # get tax rates and description $accno_id = - ($form->{vc} eq "customer") ? $ref->{income_accno} : $vendor_accno; + ($form->{vc} eq "customer") ? $ref->{income_accno} : $ref->{expense_accno}; $query = qq|SELECT c.accno, t.taxdescription, t.rate, t.taxnumber - FROM tax t LEFT JOIN chart c ON (c.id=t.chart_id) - WHERE t.taxkey in (SELECT taxkey_id from chart where accno = '$accno_id') + FROM tax t 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='$accno_id') AND startdate<=$transdate ORDER BY startdate desc LIMIT 1) ORDER BY c.accno|; $stw = $dbh->prepare($query); $stw->execute || $form->dberror($query); @@ -1245,7 +1222,7 @@ sub retrieve_item { sub vendor_details { $main::lxdebug->enter_sub(); - my ($self, $myconfig, $form) = @_; + my ($self, $myconfig, $form, @wanted_vars) = @_; # connect to database my $dbh = $form->dbconnect($myconfig); @@ -1272,6 +1249,14 @@ sub vendor_details { # remove id and taxincluded before copy back delete @$ref{qw(id taxincluded)}; + + @wanted_vars = grep({ $_ } @wanted_vars); + if (scalar(@wanted_vars) > 0) { + my %h_wanted_vars; + map({ $h_wanted_vars{$_} = 1; } @wanted_vars); + map({ delete($ref->{$_}) unless ($h_wanted_vars{$_}); } keys(%{$ref})); + } + map { $form->{$_} = $ref->{$_} } keys %$ref; $sth->finish;