X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FIC.pm;h=670710224bba1df505fadd7de0677cd55693745a;hb=7ec334735373f140fb8ab48d9cdbe8dedecd99d0;hp=fb2944b857e538c580f12ede8aaa400867158a6b;hpb=54e4131e091831e00a861fe2c4f53e344b87ddca;p=kivitendo-erp.git diff --git a/SL/IC.pm b/SL/IC.pm index fb2944b85..670710224 100644 --- a/SL/IC.pm +++ b/SL/IC.pm @@ -370,9 +370,7 @@ sub save { $form->{onhand} *= 1; $form->{ve} *= 1; $form->{ge} *= 1; - $form->{alu} *= 1; $form->{buchungsgruppen_id} *= 1; - $form->{adr_id} *= 1; $form->{not_discountable} *= 1; $form->{payment_id} *= 1; @@ -491,7 +489,6 @@ sub save { rop = $form->{rop}, bin = '$form->{bin}', buchungsgruppen_id = '$form->{buchungsgruppen_id}', - adr_id = '$form->{adr_id}', payment_id = '$form->{payment_id}', inventory_accno_id = (SELECT c.id FROM chart c WHERE c.accno = '$form->{inventory_accno}'), @@ -505,7 +502,6 @@ sub save { shop = '$form->{shop}', ve = '$form->{ve}', gv = '$form->{gv}', - alu = '$form->{alu}', not_discountable = '$form->{not_discountable}', microfiche = '$form->{microfiche}', partsgroup_id = $partsgroup_id @@ -797,6 +793,11 @@ sub delete { # connect to database, turn off AutoCommit my $dbh = $form->dbconnect_noauto($myconfig); + # first delete prices of pricegroup + my $query = qq|DELETE FROM prices + WHERE parts_id = $form->{id}|; + $dbh->do($query) || $form->dberror($query); + my $query = qq|DELETE FROM parts WHERE id = $form->{id}|; $dbh->do($query) || $form->dberror($query); @@ -904,14 +905,10 @@ sub all_parts { my $group; my $limit; - foreach my $item (qw(partnumber drawing microfiche make model)) { + foreach my $item (qw(partnumber drawing microfiche)) { if ($form->{$item}) { $var = $form->like(lc $form->{$item}); - - # make will build later Bugfix 145 - if ($item ne 'make') { - $where .= " AND lower(p.$item) LIKE '$var'"; - } + $where .= " AND lower(p.$item) LIKE '$var'"; } } @@ -1079,7 +1076,7 @@ sub all_parts { p.priceupdate, p.image, p.drawing, p.microfiche, pg.partsgroup, a.invnumber, a.ordnumber, a.quonumber, i.trans_id, - ct.name|; + ct.name, i.deliverydate|; if ($form->{bought}) { $query = qq| @@ -1510,19 +1507,6 @@ sub create_links { } $sth->finish; - # get adr - $query = qq|SELECT id, adr_description, adr_code - FROM adr|; - $sth = $dbh->prepare($query); - $sth->execute || $form->dberror($query); - - - $form->{ADR} = []; - while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { - push @{ $form->{ADR} }, $ref; - } - $sth->finish; - # get payment terms $query = qq|SELECT id, description FROM payment_terms @@ -1749,4 +1733,110 @@ sub retrieve_languages { } +sub retrieve_taxaccounts { + $main::lxdebug->enter_sub(); + + my ($self, $myconfig, $form, $parts_id, $index, $copy_accnos) = @_; + + my ($query, $sth, $dbh); + + return $main::lxdebug->leave_sub() if (!defined($form->{"taxzone_id"})); + + $dbh = $form->dbconnect($myconfig); + + my $transdate = ""; + if ($form->{type} eq "invoice") { + if (($form->{vc} eq "vendor") || !$form->{deliverydate}) { + $transdate = $form->{invdate}; + } else { + $transdate = $form->{deliverydate}; + } + } else { + $transdate = $form->{transdate}; + } + + if ($transdate eq "") { + $transdate = "current_date"; + } else { + $transdate = $dbh->quote($transdate); + } + + my $inc_exp = $form->{vc} eq "customer" ? "income" : "expense"; + + my $accno_str = "${inc_exp}_accno_id_$form->{taxzone_id}"; + + $query = + "SELECT bg.$accno_str AS accno_id, c.accno " . + "FROM buchungsgruppen bg " . + "LEFT JOIN chart c ON bg.$accno_str = c.id " . + "WHERE bg.id = (SELECT p.buchungsgruppen_id FROM parts p WHERE p.id = ?)"; + $sth = $dbh->prepare($query); + $sth->execute($parts_id) || $form->dberror($query . " ($parts_id)"); + my $ref = $sth->fetchrow_hashref(); + $sth->finish(); + + if (!$ref) { + $dbh->disconnect(); + return $lxdebug->leave_sub(); + } + + my ($accno_id, $accno) = ($ref->{"accno_id"}, $ref->{"accno"}); + my ($old_accno_id, $old_accno) = ($ref->{"accno_id"}, $ref->{"accno"}); + + my @visited_accno_ids = ($accno_id); + + $query = + "SELECT c.new_chart_id, date($transdate) >= c.valid_from AS is_valid, " . + " cnew.accno " . + "FROM chart c " . + "LEFT JOIN chart cnew ON c.new_chart_id = cnew.id " . + "WHERE (c.id = ?) AND NOT c.new_chart_id ISNULL AND (c.new_chart_id > 0)"; + $sth = $dbh->prepare($query); + + while (1) { + $sth->execute($accno_id) || $form->dberror($query . " ($accno_id)"); + $ref = $sth->fetchrow_hashref(); + last unless ($ref && $ref->{"is_valid"} && + !grep({ $_ == $ref->{"new_chart_id"} } @visited_accno_ids)); + $accno_id = $ref->{"new_chart_id"}; + $accno = $ref->{"accno"}; + push(@visited_accno_ids, $accno_id); + } + +# $main::lxdebug->message(0, "found final accno_id $accno_id accno $accno for old accno_id $old_accno_id accno $old_accno"); + + $query = + "SELECT c.accno, t.taxdescription AS description, 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 = $accno_id AND startdate <= $transdate " . + " ORDER BY startdate DESC LIMIT 1) "; + $sth = $dbh->prepare($query); + $sth->execute() || $form->dberror($query); + $ref = $sth->fetchrow_hashref(); + $sth->finish(); + $dbh->disconnect(); + + return $lxdebug->leave_sub() unless ($ref); + + $form->{"taxaccounts_$index"} = $ref->{"accno"}; + if ($form->{"taxaccounts"} !~ /$ref->{accno}/) { + $form->{"taxaccounts"} .= "$ref->{accno} "; + } + map({ $form->{"$ref->{accno}_${_}"} = $ref->{$_}; } + qw(rate description taxnumber)); + +# $main::lxdebug->message(0, "formvars: rate " . $form->{"$ref->{accno}_rate"} . +# " description " . $form->{"$ref->{accno}_description"} . +# " taxnumber " . $form->{"$ref->{accno}_taxnumber"} . +# " || taxaccounts_$index " . $form->{"taxaccounts_$index"} . +# " || taxaccounts " . $form->{"taxaccounts"}); + + $sth->finish(); + + $main::lxdebug->leave_sub(); +} 1;