X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/cd00276834b562cc46ba1af57c604a7f08ac8c3c..6e0fe1dc46a643b80c36b21c4cb62c2f09227f45:/SL/IC.pm diff --git a/SL/IC.pm b/SL/IC.pm index d70c214d2..2cf7996fb 100644 --- a/SL/IC.pm +++ b/SL/IC.pm @@ -44,6 +44,7 @@ use SL::HTML::Restrict; use SL::TransNumber; use SL::Util qw(trim); use SL::DB; +use Carp; use strict; @@ -79,9 +80,7 @@ sub get_part { $form->{onhand} *= 1; # part or service item - $form->{item} = ($form->{inventory_accno}) ? 'part' : 'service'; - if ($form->{assembly}) { - $form->{item} = 'assembly'; + if ($form->{part_type} eq 'assembly') { # retrieve assembly items $query = @@ -256,14 +255,13 @@ sub _save { my $makemodel = ($form->{make_1} || $form->{model_1} || ($form->{makemodel_rows} > 1)) ? 1 : 0; - $form->{assembly} = ($form->{item} eq 'assembly') ? 1 : 0; my ($query, $sth); my $priceupdate = ', priceupdate = current_date'; if ($form->{id}) { - my $trans_number = SL::TransNumber->new(type => $form->{item}, dbh => $dbh, number => $form->{partnumber}, id => $form->{id}); + my $trans_number = SL::TransNumber->new(type => $form->{part_type}, dbh => $dbh, number => $form->{partnumber}, id => $form->{id}); if (!$trans_number->is_unique) { $::lxdebug->leave_sub; return 3; @@ -276,7 +274,7 @@ sub _save { # delete makemodel records do_query($form, $dbh, qq|DELETE FROM makemodel WHERE parts_id = ?|, conv_i($form->{id})); - if ($form->{item} eq 'assembly') { + if ($form->{part_type} eq 'assembly') { # delete assembly records do_query($form, $dbh, qq|DELETE FROM assembly WHERE id = ?|, conv_i($form->{id})); } @@ -290,7 +288,7 @@ sub _save { $priceupdate = '' if (all { $previous_values->{$_} == $form->{$_} } qw(sellprice lastcost listprice)); } else { - my $trans_number = SL::TransNumber->new(type => $form->{item}, dbh => $dbh, number => $form->{partnumber}, save => 1); + my $trans_number = SL::TransNumber->new(type => $form->{part_type}, dbh => $dbh, number => $form->{partnumber}, save => 1); if ($form->{partnumber} && !$trans_number->is_unique) { $::lxdebug->leave_sub; @@ -300,7 +298,7 @@ sub _save { $form->{partnumber} ||= $trans_number->create_unique; ($form->{id}) = selectrow_query($form, $dbh, qq|SELECT nextval('id')|); - do_query($form, $dbh, qq|INSERT INTO parts (id, partnumber, unit) VALUES (?, ?, ?)|, $form->{id}, $form->{partnumber}, $form->{unit}); + do_query($form, $dbh, qq|INSERT INTO parts (id, partnumber, unit, part_type) VALUES (?, ?, ?, ?)|, $form->{id}, $form->{partnumber}, $form->{unit}, $form->{part_type}); $form->{orphaned} = 1; } @@ -311,7 +309,7 @@ sub _save { } my ($subq_inventory, $subq_expense, $subq_income); - if ($form->{"item"} eq "part") { + if ($form->{part_type} eq "part") { $subq_inventory = qq|(SELECT bg.inventory_accno_id FROM buchungsgruppen bg @@ -320,7 +318,7 @@ sub _save { $subq_inventory = "NULL"; } - if ($form->{"item"} ne "assembly") { + if ($form->{part_type} ne "assembly") { $subq_expense = qq|(SELECT tc.expense_accno_id FROM taxzone_charts tc @@ -336,7 +334,6 @@ sub _save { partnumber = ?, description = ?, makemodel = ?, - assembly = ?, listprice = ?, sellprice = ?, lastcost = ?, @@ -362,6 +359,7 @@ sub _save { has_sernumber = ?, not_discountable = ?, microfiche = ?, + part_type = ?, partsgroup_id = ?, price_factor_id = ? $priceupdate @@ -369,7 +367,6 @@ sub _save { @values = ($form->{partnumber}, $form->{description}, $makemodel ? 't' : 'f', - $form->{assembly} ? 't' : 'f', $form->{listprice}, $form->{sellprice}, $form->{lastcost}, @@ -393,6 +390,7 @@ sub _save { $form->{has_sernumber} ? 't' : 'f', $form->{not_discountable} ? 't' : 'f', $form->{microfiche}, + $form->{part_type}, conv_i($partsgroup_id), conv_i($form->{price_factor_id}), conv_i($form->{id}) @@ -459,7 +457,7 @@ sub _save { } # add assembly records - if ($form->{item} eq 'assembly') { + if ($form->{part_type} eq 'assembly') { # check additional assembly row my $i = $form->{assembly_rows}; # if last row is not empty add them @@ -576,7 +574,7 @@ sub retrieve_assemblies { FROM parts p2, assembly a WHERE (p2.id = a.parts_id) AND (a.id = p.id)) AS inventory FROM parts p - WHERE NOT p.obsolete AND p.assembly $where|; + WHERE NOT p.obsolete AND p.part_type = 'assembly' $where|; $form->{assembly_items} = selectall_hashref_query($form, $dbh, $query, @values); @@ -893,10 +891,9 @@ sub all_parts { } for ($form->{searchitems}) { - push @where_tokens, 'p.inventory_accno_id > 0' if /part/; - push @where_tokens, 'p.inventory_accno_id IS NULL' if /service/; - push @where_tokens, 'NOT p.assembly' if /service/; - push @where_tokens, ' p.assembly' if /assembly/; + push @where_tokens, "p.part_type = 'part'" if /part/; + push @where_tokens, "p.part_type = 'service'" if /service/; + push @where_tokens, "p.part_type = 'assembly'" if /assembly/; } for ($form->{itemstatus}) { @@ -1566,7 +1563,7 @@ sub retrieve_accounts { my %accno_by_part = map { $_->{id} => $_ } selectall_hashref_query($form, $dbh, < $part_id) = each %args) { my $ref = $accno_by_part{$part_id} or next; - $ref->{"inventory_accno_id"} = undef unless $ref->{"is_part"}; + $ref->{"inventory_accno_id"} = undef unless $ref->{"part_type"} eq 'part'; my %accounts; for my $type (qw(inventory income expense)) {