X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FIC.pm;h=b8815cc59605fc904b7159d606d99f697be47b81;hb=bb55aa5910a0faa71d6cfc0a215a352dcc115f76;hp=64e598c24e9c271f207e94b463ed6862921e7308;hpb=4dbb09950c9f5596646537c12d991c99086fe7c1;p=kivitendo-erp.git diff --git a/SL/IC.pm b/SL/IC.pm index 64e598c24..c710af9fc 100644 --- a/SL/IC.pm +++ b/SL/IC.pm @@ -34,6 +34,13 @@ package IC; +use Data::Dumper; +use List::MoreUtils qw(all any); +use YAML; + +use SL::CVar; +use SL::DBUtils; + sub get_part { $main::lxdebug->enter_sub(); @@ -42,29 +49,26 @@ sub get_part { # connect to db my $dbh = $form->dbconnect($myconfig); - my $query = qq|SELECT p.*, - c1.accno AS inventory_accno, - c2.accno AS income_accno, - c3.accno AS expense_accno, - pg.partsgroup - FROM parts p - LEFT JOIN chart c1 ON (p.inventory_accno_id = c1.id) - LEFT JOIN chart c2 ON (p.income_accno_id = c2.id) - LEFT JOIN chart c3 ON (p.expense_accno_id = c3.id) - LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id) - WHERE p.id = $form->{id}|; - my $sth = $dbh->prepare($query); - $sth->execute || $form->dberror($query); - my $ref = $sth->fetchrow_hashref(NAME_lc); + my $sth; + + my $query = + qq|SELECT p.*, + c1.accno AS inventory_accno, + c2.accno AS income_accno, + c3.accno AS expense_accno, + pg.partsgroup + FROM parts p + LEFT JOIN chart c1 ON (p.inventory_accno_id = c1.id) + LEFT JOIN chart c2 ON (p.income_accno_id = c2.id) + LEFT JOIN chart c3 ON (p.expense_accno_id = c3.id) + LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id) + WHERE p.id = ? |; + my $ref = selectfirst_hashref_query($form, $dbh, $query, conv_i($form->{id})); # copy to $form variables - map { $form->{$_} = $ref->{$_} } ( keys %{ $ref } ); - - $sth->finish; + map { $form->{$_} = $ref->{$_} } (keys %{$ref}); - my %oid = ('Pg' => 'a.oid', - 'Oracle' => 'a.rowid' - ); + $form->{onhand} *= 1; # part or service item $form->{item} = ($form->{inventory_accno}) ? 'part' : 'service'; @@ -72,23 +76,23 @@ sub get_part { $form->{item} = 'assembly'; # retrieve assembly items - $query = qq|SELECT p.id, p.partnumber, p.description, - p.sellprice, p.weight, a.qty, a.bom, p.unit, - pg.partsgroup - FROM parts p - JOIN assembly a ON (a.parts_id = p.id) - LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id) - WHERE a.id = $form->{id} - ORDER BY $oid{$myconfig->{dbdriver}}|; - - $sth = $dbh->prepare($query); - $sth->execute || $form->dberror($query); + $query = + qq|SELECT p.id, p.partnumber, p.description, + p.sellprice, p.lastcost, p.weight, a.qty, a.bom, p.unit, + pg.partsgroup, p.price_factor_id, pfac.factor AS price_factor + FROM parts p + JOIN assembly a ON (a.parts_id = p.id) + LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id) + LEFT JOIN price_factors pfac ON pfac.id = p.price_factor_id + WHERE (a.id = ?) + ORDER BY a.oid|; + $sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{id})); $form->{assembly_rows} = 0; - while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { + while (my $ref = $sth->fetchrow_hashref("NAME_lc")) { $form->{assembly_rows}++; - foreach my $key ( keys %{ $ref } ) { - $form->{"${key}_$form->{assembly_rows}"} = $ref->{$key}; + foreach my $key (keys %{$ref}) { + $form->{"${key}_$form->{assembly_rows}"} = $ref->{$key}; } } $sth->finish; @@ -96,25 +100,81 @@ sub get_part { } # setup accno hash for