X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FIC.pm;h=ac9547aab9530660facd2fbdde4baeb009d55485;hb=451843cf750b655eb2678de12c369af74bca9867;hp=e646fe05cf91c7f9deb4caaf4289121e5e96a264;hpb=c19f41e1e0b92c7721963e0b40797b257bc88b3e;p=kivitendo-erp.git diff --git a/SL/IC.pm b/SL/IC.pm index e646fe05c..ac9547aab 100644 --- a/SL/IC.pm +++ b/SL/IC.pm @@ -70,9 +70,6 @@ sub get_part { $form->{onhand} *= 1; - my %oid = ('Pg' => 'a.oid', - 'Oracle' => 'a.rowid'); - # part or service item $form->{item} = ($form->{inventory_accno}) ? 'part' : 'service'; if ($form->{assembly}) { @@ -88,11 +85,11 @@ sub get_part { 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 $oid{$myconfig->{dbdriver}}|; + 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}; @@ -191,7 +188,7 @@ sub get_part { FROM translation WHERE parts_id = ?|; my $trq = prepare_execute_query($form, $dbh, $query, conv_i($form->{id})); - while (my $tr = $trq->fetchrow_hashref(NAME_lc)) { + while (my $tr = $trq->fetchrow_hashref("NAME_lc")) { $form->{language_values} .= "---+++---" . join('--++--', @{$tr}{qw(language_id translation longdescription)}); } $trq->finish; @@ -540,13 +537,13 @@ sub save { } #set expense_accno=inventory_accno if they are different => bilanz - $vendor_accno = + my $vendor_accno = ($form->{expense_accno} != $form->{inventory_accno}) ? $form->{inventory_accno} : $form->{expense_accno}; # get tax rates and description - $accno_id = + my $accno_id = ($form->{vc} eq "customer") ? $form->{income_accno} : $vendor_accno; $query = qq|SELECT c.accno, c.description, t.rate, t.taxnumber @@ -556,7 +553,7 @@ sub save { my $stw = prepare_execute_query($form, $dbh, $query, $accno_id); $form->{taxaccount} = ""; - while (my $ptr = $stw->fetchrow_hashref(NAME_lc)) { + while (my $ptr = $stw->fetchrow_hashref("NAME_lc")) { $form->{taxaccount} .= "$ptr->{accno} "; if (!($form->{taxaccount2} =~ /\Q$ptr->{accno}\E/)) { $form->{"$ptr->{accno}_rate"} = $ptr->{rate}; @@ -596,7 +593,7 @@ sub update_assembly { $query = qq|UPDATE parts SET sellprice = sellprice + ?, weight = weight + ? WHERE id = ?|; - @values = ($qty * ($form->{sellprice} - $sellprice), + my @values = ($qty * ($form->{sellprice} - $sellprice), $qty * ($form->{weight} - $weight), conv_i($id)); do_query($form, $dbh, $query, @values); @@ -688,7 +685,7 @@ sub assembly_item { push(@values, conv_i($form->{id})); } - if ($partnumber) { + if ($form->{partnumber}) { $where .= qq| ORDER BY p.partnumber|; } else { $where .= qq| ORDER BY p.description|; @@ -803,9 +800,24 @@ sub all_parts { ) AS cv ON cv.id = apoe.customer_id OR cv.id = apoe.vendor_id|, ); my @join_order = qw(partsgroup makemodel invoice_oi apoe cv pfac); - my %joins_needed; - my %table_prefix; - my %renamed_columns; + + my %table_prefix = ( + deliverydate => 'apoe.', serialnumber => 'ioi.', + transdate => 'apoe.', trans_id => 'ioi.', + module => 'apoe.', name => 'cv.', + ordnumber => 'apoe.', make => 'mm.', + quonumber => 'apoe.', model => 'mm.', + invnumber => 'apoe.', partsgroup => 'pg.', + lastcost => ' ', + factor => 'pfac.', + 'SUM(ioi.qty)' => ' ', + description => 'p.', + ); + + my %renamed_columns = ( + 'factor' => 'price_factor', + 'SUM(ioi.qty)' => 'soldtotal', + ); if (($form->{searchitems} eq 'assembly') && $form->{l_lastcost}) { @simple_l_switches = grep { $_ ne 'lastcost' } @simple_l_switches; @@ -817,6 +829,7 @@ sub all_parts { my @where_tokens = qw(1=1); my @group_tokens = (); my @bind_vars = (); + my %joins_needed = (); # special case transdate if (grep { $form->{$_} } qw(transdatefrom transdateto)) { @@ -829,14 +842,10 @@ sub all_parts { } } - my %simple_filter_table_prefix = ( - description => 'p.', - ); - foreach (@simple_filters, @makemodel_filters, @invoice_oi_filters) { next unless $form->{$_}; $form->{"l_$_"} = '1'; # show the column - push @where_tokens, "$simple_filter_table_prefix{$_}$_ ILIKE ?"; + push @where_tokens, "$table_prefix{$_}$_ ILIKE ?"; push @bind_vars, "%$form->{$_}%"; } @@ -943,27 +952,8 @@ sub all_parts { #============= build query ================# - %table_prefix = ( - %table_prefix, - deliverydate => 'apoe.', serialnumber => 'ioi.', - transdate => 'apoe.', trans_id => 'ioi.', - module => 'apoe.', name => 'cv.', - ordnumber => 'apoe.', make => 'mm.', - quonumber => 'apoe.', model => 'mm.', - invnumber => 'apoe.', partsgroup => 'pg.', - lastcost => ' ', - factor => 'pfac.', - 'SUM(ioi.qty)' => ' ', - ); - $table_prefix{$q_assembly_lastcost} = ' '; - %renamed_columns = ( - %renamed_columns, - 'factor' => 'price_factor', - 'SUM(ioi.qty)' => 'soldtotal', - ); - map { $table_prefix{$_} = 'ioi.' } qw(description serialnumber qty unit) if $joins_needed{invoice_oi}; map { $renamed_columns{$_} = ' AS ' . $renamed_columns{$_} } keys %renamed_columns; @@ -1008,7 +998,7 @@ sub all_parts { push(@assemblies, $item); do_statement($form, $sth, $query, conv_i($item->{id})); - while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { + while (my $ref = $sth->fetchrow_hashref("NAME_lc")) { $ref->{assemblyitem} = 1; map { $ref->{$_} /= $ref->{factor} || 1 } qw(sellprice listprice lastcost); push(@assemblies, $ref); @@ -1248,7 +1238,7 @@ sub create_links { } my $sth = prepare_execute_query($form, $dbh, $query, @values); - while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { + while (my $ref = $sth->fetchrow_hashref("NAME_lc")) { foreach my $key (split(/:/, $ref->{link})) { if ($key =~ /\Q$module\E/) { if ( ($ref->{id} eq $ref->{inventory_accno_id}) @@ -1317,7 +1307,7 @@ sub get_parts { my $sth = prepare_execute_query($form, $dbh, $query, @values); my $j = 0; - while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { + while (my $ref = $sth->fetchrow_hashref("NAME_lc")) { if (($ref->{partnumber} eq "*") && ($ref->{description} eq "")) { next; } @@ -1346,7 +1336,7 @@ sub get_soldtotal { my ($dbh, $id) = @_; my $query = qq|SELECT sum(qty) FROM invoice WHERE parts_id = ?|; - my ($sum) = selectrow_query($form, $dbh, $query, conv_i($id)); + my ($sum) = selectrow_query($main::form, $dbh, $query, conv_i($id)); $sum ||= 0; $main::lxdebug->leave_sub();