X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=bin%2Fmozilla%2Fic.pl;h=bccac308a16fbb2b3cef1ed5a872d78b4a30659f;hb=0925bc9f366038b578167a1837098ebe837012c1;hp=db5a84c083d8f6338b2ac9eac0e05393bbb82240;hpb=232ccb5f2622a7ecc4cfa40031aba17d7717957a;p=kivitendo-erp.git
diff --git a/bin/mozilla/ic.pl b/bin/mozilla/ic.pl
index db5a84c08..bccac308a 100644
--- a/bin/mozilla/ic.pl
+++ b/bin/mozilla/ic.pl
@@ -36,7 +36,14 @@ use SL::IC;
#use SL::PE;
-require "$form->{path}/io.pl";
+# use strict;
+#use warnings;
+
+# global imports
+our ($form, $locale, %myconfig, $lxdebug);
+
+require "bin/mozilla/io.pl";
+require "bin/mozilla/common.pl";
1;
@@ -48,7 +55,7 @@ sub add {
$form->{title} = $locale->text('Add ' . ucfirst $form->{item});
$form->{callback} =
- "$form->{script}?action=add&item=$form->{item}&path=$form->{path}&login=$form->{login}&password=$form->{password}"
+ "$form->{script}?action=add&item=$form->{item}&login=$form->{login}&password=$form->{password}"
unless $form->{callback};
$form->{"unit_changeable"} = 1;
@@ -63,6 +70,8 @@ sub add {
sub search {
$lxdebug->enter_sub();
+ my ($button1, $button2, $onhand, $makemodel, $serialnumber, $l_serialnumber, $toplevel, $bought);
+
$form->{title} = (ucfirst $form->{searchitems}) . "s";
$form->{title} = $locale->text($form->{title});
@@ -79,8 +88,8 @@ sub search {
# $locale->text('Services')
# use JavaScript Calendar or not
- $form->{jsscript} = $jscalendar;
- $jsscript = "";
+ $form->{jsscript} = 1;
+ my $jsscript = "";
if ($form->{jsscript}) {
# with JavaScript Calendar
@@ -185,7 +194,7 @@ sub search {
|
@@ -313,7 +324,7 @@ sub search {
|
- |
+ | |
. $locale->text('Part Number') . qq| |
|
. $locale->text('Part Description') . qq| |
@@ -372,7 +383,6 @@ $jsscript
-{path}>
{login}>
{password}>
@@ -395,15 +405,16 @@ $jsscript
$lxdebug->leave_sub();
} #end search()
-
sub search_update_prices {
$lxdebug->enter_sub();
+ my ($onhand, $makemodel, $serialnumber, $l_serialnumber, $toplevel, $bought);
+
$form->{title} = $locale->text('Update prices');
IC->get_pricegroups(\%myconfig, \%$form);
# use JavaScript Calendar or not
-# $form->{jsscript} = $jscalendar;
+# $form->{jsscript} = 1;
# $jsscript = "";
# if ($form->{jsscript}) {
#
@@ -536,7 +547,7 @@ sub search_update_prices {
/ |
|;
- for $i (1 .. $form->{price_rows}) {
+ for my $i (1 .. $form->{price_rows}) {
print qq|
$form->{"pricegroup_$i"} |
@@ -557,7 +568,6 @@ sub search_update_prices {
{price_rows}>
-{path}>
{login}>
{password}>
@@ -588,7 +598,7 @@ sub confirm_price_update {
# delete action variable
map { delete $form->{$_} } qw(action header);
- foreach $key (keys %$form) {
+ foreach my $key (keys %$form) {
$form->{$key} =~ s/\"/"/g;
print qq|\n|;
}
@@ -624,6 +634,9 @@ sub update_prices {
sub choice {
$lxdebug->enter_sub();
+ our ($j, $lastndx);
+ my ($totop100);
+
$form->{title} = $locale->text('Top 100 hinzufuegen');
$form->header;
@@ -642,10 +655,8 @@ sub choice {
print qq|
- |
- . $locale->text('Part Number') . qq| |
- |
- . $locale->text('Part Description') . qq| |
+ | . $locale->text('Part Number') . qq| |
+ | . $locale->text('Part Description') . qq| |
|
@@ -656,7 +667,6 @@ sub choice {
print qq|
-{path}>
{login}>
{password}>
@@ -688,9 +698,10 @@ sub choice {
{extras}>|;
+ my ($partnumber, $description, $unit, $sellprice, $soldtotal);
# if choice set data
if ($form->{ndx}) {
- for ($i = 0; $i < $form->{ndxs_counter}; $i++) {
+ for (my $i = 0; $i < $form->{ndxs_counter}; $i++) {
# prepeare data
$partnumber = $form->{"totop100_partnumber_$j"};
@@ -714,7 +725,7 @@ sub choice {
# set data for next page
if (($form->{ndxs_counter}) > 0) {
- for ($i = 1; ($i < $form->{ndxs_counter} + 1); $i++) {
+ for (my $i = 1; ($i < $form->{ndxs_counter} + 1); $i++) {
$partnumber = $form->{"totop100_partnumber_$i"};
$description = $form->{"totop100_description_$i"};
$unit = $form->{"totop100_unit_$i"};
@@ -746,20 +757,12 @@ sub choice {
sub list {
$lxdebug->enter_sub();
- # get parts for
- if (($form->{partnumber} eq "") and ($form->{description} eq "")) {
- IC->get_parts(\%myconfig, \%$form, "");
- } else {
- if ((!($form->{partnumber} eq "")) and ($form->{description} eq "")) {
- IC->get_parts(\%myconfig, \%$form, "partnumber");
- } else {
- if (($form->{partnumber} eq "") and (!($form->{description} eq ""))) {
- IC->get_parts(\%myconfig, \%$form, "description");
- } else {
- IC->get_parts(\%myconfig, \%$form, "all");
- } #fi
- } #fi
- } #fi
+ our ($lastndx);
+ our ($partnumber, $description, $unit, $sellprice, $soldtotal);
+
+ my @sortorders = ("", "partnumber", "description", "all");
+ my $sortorder = $sortorders[($form->{description} ? 2 : 0) + ($form->{partnumber} ? 1 : 0)];
+ IC->get_parts(\%myconfig, \%$form, $sortorder);
$form->{title} = $locale->text('Top 100 hinzufuegen');
@@ -814,7 +817,6 @@ sub list {
-{path}>
{login}>
{password}>
@@ -842,21 +844,16 @@ sub list {
{ndxs_counter}>|;
- $totop100 = "";
+ my $totop100 = "";
if (($form->{ndxs_counter}) > 0) {
for ($i = 1; ($i < $form->{ndxs_counter} + 1); $i++) {
- $j1 = $form->{"totop100_partnumber_$i"};
- $j2 = $form->{"totop100_description_$i"};
- $j3 = $form->{"totop100_unit_$i"};
- $j4 = $form->{"totop100_sellprice_$i"};
- $j5 = $form->{"totop100_soldtotal_$i"};
-
- $partnumber = $j1;
- $description = $j2;
- $unit = $j3;
- $sellprice = $j4;
- $soldtotal = $j5;
+
+ $partnumber = $form->{"totop100_partnumber_$i"};
+ $description = $form->{"totop100_description_$i"};
+ $unit = $form->{"totop100_unit_$i"};
+ $sellprice = $form->{"totop100_sellprice_$i"};
+ $soldtotal = $form->{"totop100_soldtotal_$i"};
$totop100 .= qq|
{"totop100_partnumber_$i"}>
@@ -889,18 +886,13 @@ sub top100 {
if ($form->{ndxs_counter} > 0) {
- $index = $form->{ndx};
-
- $j1 = $form->{"new_partnumber_$index"};
- $form->{"totop100_partnumber_$form->{ndxs_counter}"} = $j1;
- $j2 = $form->{"new_description_$index"};
- $form->{"totop100_description_$form->{ndxs_counter}"} = $j2;
- $j3 = $form->{"new_unit_$index"};
- $form->{"totop100_unit_$form->{ndxs_counter}"} = $j3;
- $j4 = $form->{"new_sellprice_$index"};
- $form->{"totop100_sellprice_$form->{ndxs_counter}"} = $j4;
- $j5 = $form->{"new_soldtotal_$index"};
- $form->{"totop100_soldtotal_$form->{ndxs_counter}"} = $j5;
+ my $index = $form->{ndx};
+
+ $form->{"totop100_partnumber_$form->{ndxs_counter}"} = $form->{"new_partnumber_$index"};
+ $form->{"totop100_description_$form->{ndxs_counter}"} = $form->{"new_description_$index"};
+ $form->{"totop100_unit_$form->{ndxs_counter}"} = $form->{"new_unit_$index"};
+ $form->{"totop100_sellprice_$form->{ndxs_counter}"} = $form->{"new_sellprice_$index"};
+ $form->{"totop100_soldtotal_$form->{ndxs_counter}"} = $form->{"new_soldtotal_$index"};
} #fi
} #fi
&addtop100();
@@ -910,18 +902,22 @@ sub top100 {
sub addtop100 {
$lxdebug->enter_sub();
+ my ($revers, $lastsort, $callback, $option, $description, $sameitem,
+ $partnumber, $unit, $sellprice, $soldtotal, $totop100, $onhand, $align);
+ my (@column_index, %column_header, %column_data);
+ my ($totalsellprice, $totallastcost, $totallistprice, $subtotalonhand, $subtotalsellprice, $subtotallastcost, $subtotallistprice);
+
$form->{top100} = "top100";
$form->{l_soldtotal} = "Y";
$form->{soldtotal} = "soldtotal";
$form->{sort} = "soldtotal";
$form->{l_qty} = "N";
- $callback .= "&form->{top100}=$form->{top100}";
$form->{l_linetotal} = "";
$form->{revers} = 1;
$form->{number} = "position";
$form->{l_number} = "Y";
- my $totop100 = "";
+ $totop100 = "";
$form->{title} = $locale->text('Top 100');
@@ -935,7 +931,7 @@ sub addtop100 {
} #fi
$callback =
- "$form->{script}?action=top100&path=$form->{path}&login=$form->{login}&password=$form->{password}&searchitems=$form->{searchitems}&itemstatus=$form->{itemstatus}&bom=$form->{bom}&l_linetotal=$form->{l_linetotal}&title="
+ "$form->{script}?action=top100&login=$form->{login}&password=$form->{password}&searchitems=$form->{searchitems}&itemstatus=$form->{itemstatus}&bom=$form->{bom}&l_linetotal=$form->{l_linetotal}&title="
. $form->escape($form->{title}, 1);
# if we have a serialnumber limit search
@@ -1028,6 +1024,10 @@ sub addtop100 {
$callback .= "&partnumber=$form->{partnumber}";
$option .= $locale->text('Part Number') . qq| : $form->{partnumber} |;
}
+ if ($form->{ean}) {
+ $callback .= "&partnumber=$form->{ean}";
+ $option .= $locale->text('EAN') . qq| : $form->{ean} |;
+ }
if ($form->{partsgroup}) {
$callback .= "&partsgroup=$form->{partsgroup}";
$option .= $locale->text('Group') . qq| : $form->{partsgroup} |;
@@ -1066,8 +1066,8 @@ sub addtop100 {
$option .= $locale->text('soldtotal') . qq| : $form->{soldtotal} |;
}
- @columns = $form->sort_columns(
- qw(number partnumber description partsgroup bin onhand rop unit listprice linetotallistprice sellprice linetotalsellprice lastcost linetotallastcost priceupdate weight image drawing microfiche invnumber ordnumber quonumber name serialnumber soldtotal)
+ my @columns = $form->sort_columns(
+ qw(number partnumber ean description partsgroup bin onhand rop unit listprice linetotallistprice sellprice linetotalsellprice lastcost linetotallastcost priceupdate weight image drawing microfiche invnumber ordnumber quonumber name serialnumber soldtotal)
);
if ($form->{l_linetotal}) {
@@ -1106,7 +1106,7 @@ sub addtop100 {
$form->{l_lastcost} = ""
if ($form->{searchitems} eq 'assembly' && !$form->{bom});
- foreach $item (@columns) {
+ foreach my $item (@columns) {
if ($form->{"l_$item"} eq "Y") {
push @column_index, $item;
@@ -1208,7 +1208,7 @@ sub addtop100 {
. qq||;
$form->header;
- $colspan = $#column_index + 1;
+ my $colspan = $#column_index + 1;
print qq|
@@ -1242,14 +1242,14 @@ sub addtop100 {
# insert numbers for top100
my $j = 0;
- foreach $ref (@{ $form->{parts} }) {
+ foreach my $ref (@{ $form->{parts} }) {
$j++;
$ref->{number} = $j;
}
# if avaible -> insert choice here
if (($form->{ndxs_counter}) > 0) {
- for ($i = 1; ($i < $form->{ndxs_counter} + 1); $i++) {
+ for (my $i = 1; ($i < $form->{ndxs_counter} + 1); $i++) {
$partnumber = $form->{"totop100_partnumber_$i"};
$description = $form->{"totop100_description_$i"};
$unit = $form->{"totop100_unit_$i"};
@@ -1275,7 +1275,8 @@ sub addtop100 {
} #rof
} #fi
# build data for columns
- foreach $ref (@{ $form->{parts} }) {
+ foreach my $ref (@{ $form->{parts} }) {
+ my $i = 0;
if ($form->{l_subtotal} eq 'Y' && !$ref->{assemblyitem}) {
if ($sameitem ne $ref->{ $form->{sort} }) {
@@ -1303,7 +1304,7 @@ sub addtop100 {
$column_data{number} =
""
- . $form->format_amount(\%myconfig, $ref->{number}, '', " ")
+ . $form->format_amount(\%myconfig, $ref->{number})
. " | ";
$column_data{partnumber} =
"$ref->{partnumber} | ";
@@ -1312,32 +1313,29 @@ sub addtop100 {
$column_data{onhand} =
""
- . $form->format_amount(\%myconfig, $ref->{onhand}, '', " ")
+ . $form->format_amount(\%myconfig, $ref->{onhand})
. " | ";
$column_data{sellprice} =
""
- . $form->format_amount(\%myconfig, $ref->{sellprice}, 2, " ")
+ . $form->format_amount(\%myconfig, $ref->{sellprice})
. " | ";
$column_data{listprice} =
""
- . $form->format_amount(\%myconfig, $ref->{listprice}, 2, " ")
+ . $form->format_amount(\%myconfig, $ref->{listprice})
. " | ";
$column_data{lastcost} =
""
- . $form->format_amount(\%myconfig, $ref->{lastcost}, 2, " ")
+ . $form->format_amount(\%myconfig, $ref->{lastcost})
. " | ";
$column_data{linetotalsellprice} = ""
- . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{sellprice},
- 2, " ")
+ . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{sellprice}, 2)
. " | ";
$column_data{linetotallastcost} = ""
- . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{lastcost},
- 2, " ")
+ . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{lastcost}, 2)
. " | ";
$column_data{linetotallistprice} = ""
- . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{listprice},
- 2, " ")
+ . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{listprice}, 2)
. " | ";
if (!$ref->{assemblyitem}) {
@@ -1353,10 +1351,10 @@ sub addtop100 {
$column_data{rop} =
""
- . $form->format_amount(\%myconfig, $ref->{rop}, '', " ") . " | ";
+ . $form->format_amount(\%myconfig, $ref->{rop}) . "";
$column_data{weight} =
""
- . $form->format_amount(\%myconfig, $ref->{weight}, '', " ")
+ . $form->format_amount(\%myconfig, $ref->{weight})
. " | ";
$column_data{unit} = "$ref->{unit} | ";
$column_data{bin} = "$ref->{bin} | ";
@@ -1364,15 +1362,15 @@ sub addtop100 {
$column_data{invnumber} =
($ref->{module} ne 'oe')
- ? "{module}.pl?action=edit&type=invoice&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{invnumber} | "
+ ? "{module}.pl?action=edit&type=invoice&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{invnumber} | "
: "$ref->{invnumber} | ";
$column_data{ordnumber} =
($ref->{module} eq 'oe')
- ? "{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{ordnumber} | "
+ ? "{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{ordnumber} | "
: "$ref->{ordnumber} | ";
$column_data{quonumber} =
($ref->{module} eq 'oe' && !$ref->{ordnumber})
- ? "{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{quonumber} | "
+ ? "{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{quonumber} | "
: "$ref->{quonumber} | ";
$column_data{name} = "$ref->{name} | ";
@@ -1413,15 +1411,15 @@ sub addtop100 {
map { $column_data{$_} = " | " } @column_index;
$column_data{linetotalsellprice} =
""
- . $form->format_amount(\%myconfig, $totalsellprice, 2, " ")
+ . $form->format_amount(\%myconfig, $totalsellprice, 2)
. " | ";
$column_data{linetotallastcost} =
""
- . $form->format_amount(\%myconfig, $totallastcost, 2, " ")
+ . $form->format_amount(\%myconfig, $totallastcost, 2)
. " | ";
$column_data{linetotallistprice} =
""
- . $form->format_amount(\%myconfig, $totallistprice, 2, " ")
+ . $form->format_amount(\%myconfig, $totallistprice, 2)
. " | ";
print " ";
@@ -1444,7 +1442,6 @@ sub addtop100 {
@@ -1488,172 +1479,155 @@ sub addtop100 {
$lxdebug->leave_sub();
} # end addtop100
+#
+# Report for Wares.
+# Warning, deep magic ahead.
+# This function parses the requested details, sanity checks them, and converts them into a format thats usable for IC->all_parts
+#
+# flags coming from the form:
+# hardcoded:
+# searchitems=part revers=0 lastsort=''
+#
+# filter:
+# partnumber ean description partsgroup serialnumber make model drawing microfiche
+# transdatefrom transdateto
+#
+# radio:
+# itemstatus = active | onhand | short | obsolete | orphaned
+# action = continue | top100
+#
+# checkboxes:
+# bought sold onorder ordered rfq quoted
+# l_partnumber l_description l_serialnumber l_unit l_listprice l_sellprice l_lastcost
+# l_linetotal l_priceupdate l_bin l_rop l_weight l_image l_drawing l_microfiche
+# l_partsgroup l_subtotal l_soldtotal l_deliverydate
+#
+# hiddens:
+# nextsub login password revers lastsort sort ndxs_counter
+#
sub generate_report {
$lxdebug->enter_sub();
+ my ($revers, $lastsort, $description);
+ my (@column_index, %column_header, %column_data, @columns, @options, @callbacks);
+ my ($totalsellprice, $totallastcost, $totallistprice, $subtotalonhand, $subtotalsellprice, $subtotallastcost, $subtotallistprice);
+ my ($colspan, $sameitem, $onhand, $align);
+
$revers = $form->{revers};
$lastsort = $form->{lastsort};
+ # sorting and direction of sorting
+ # ToDO: change this to the simpler field+direction method
if (($form->{lastsort} eq "") && ($form->{sort} eq undef)) {
$form->{revers} = 0;
$form->{lastsort} = "partnumber";
$form->{sort} = "partnumber";
} else {
-
- # switch between backward sorting of tables
if ($form->{lastsort} eq $form->{sort}) {
- if ($form->{revers} == 0) {
- $form->{revers} = 1;
- } else {
- $form->{revers} = 0;
- } #fi
+ $form->{revers} = 1 - $form->{revers};
} else {
- $form->{revers} == 0;
+ $form->{revers} = 0;
$form->{lastsort} = $form->{sort};
} #fi
} #fi
- $callback =
- "$form->{script}?action=generate_report&path=$form->{path}&login=$form->{login}&password=$form->{password}&searchitems=$form->{searchitems}&itemstatus=$form->{itemstatus}&bom=$form->{bom}&l_linetotal=$form->{l_linetotal}&title="
- . $form->escape($form->{title}, 1);
-
- # if we have a serialnumber limit search
- if ($form->{serialnumber} || $form->{l_serialnumber}) {
- $form->{l_serialnumber} = "Y";
- unless ( $form->{bought}
- || $form->{sold}
- || $form->{rfq}
- || $form->{quoted}) {
- $form->{bought} = $form->{sold} = 1;
- }
- }
+ # special case if we have a serialnumber limit search
+ # serialnumbers are only given in invoices and orders,
+ # so they can only pop up in bought, sold, rfq, and quoted stuff
+ $form->{no_sn_joins} = 'Y' if ( !$form->{bought} && !$form->{sold}
+ && !$form->{rfq} && !$form->{quoted}
+ && ($form->{l_serialnumber} || $form->{serialnumber}));
+
+ # special case for any checkbox of bought | sold | onorder | ordered | rfq | quoted.
+ # if any of these are ticked the behavior changes slightly for lastcost
+ # since all those are aggregation checks for the legder tables this is an internal switch
+ # refered to as ledgerchecks
+ $form->{ledgerchecks} = 'Y' if ( $form->{bought} || $form->{sold} || $form->{onorder}
+ || $form->{ordered} || $form->{rfq} || $form->{quoted});
+
+ # if something should be aktivated if something else is active, enter it here
+ my %dependencies = (
+ onhand => [ qw(l_onhand) ],
+ short => [ qw(l_onhand) ],
+ onorder => [ qw(l_ordnumber) ],
+ ordered => [ qw(l_ordnumber) ],
+ rfq => [ qw(l_quonumber) ],
+ quoted => [ qw(l_quonumber) ],
+ bought => [ qw(l_invnumber) ],
+ sold => [ qw(l_invnumber) ],
+ ledgerchecks => [ qw(l_name) ],
+ serialnumber => [ qw(l_serialnumber) ],
+ no_sn_joins => [ qw(bought sold) ],
+ );
- IC->all_parts(\%myconfig, \%$form);
+ # these strings get displayed at the top of the results to indicate the user which switches were used
+ my %optiontexts = (
+ active => $locale->text('Active'),
+ obsolete => $locale->text('Obsolete'),
+ orphaned => $locale->text('Orphaned'),
+ onhand => $locale->text('On Hand'),
+ short => $locale->text('Short'),
+ onorder => $locale->text('On Order'),
+ ordered => $locale->text('Ordered'),
+ rfq => $locale->text('RFQ'),
+ quoted => $locale->text('Quoted'),
+ bought => $locale->text('Bought'),
+ sold => $locale->text('Sold'),
+ transdatefrom => $locale->text('From') . " " . $locale->date(\%myconfig, $form->{transdatefrom}, 1),
+ transdateto => $locale->text('To (time)') . " " . $locale->date(\%myconfig, $form->{transdateto}, 1),
+ partnumber => $locale->text('Part Number') . ": '$form->{partnumber}'",
+ partsgroup => $locale->text('Group') . ": '$form->{partsgroup}'",
+ serialnumber => $locale->text('Serial Number') . ": '$form->{serialnumber}'",
+ description => $locale->text('Part Description') . ": '$form->{description}'",
+ make => $locale->text('Make') . ": '$form->{make}'",
+ model => $locale->text('Model') . ": '$form->{model}'",
+ drawing => $locale->text('Drawing') . ": '$form->{drawing}'",
+ microfiche => $locale->text('Microfiche') . ": '$form->{microfiche}'",
+ l_soldtotal => $locale->text('soldtotal'),
+ );
- if ($form->{itemstatus} eq 'active') {
- $option .= $locale->text('Active') . " : ";
- }
- if ($form->{itemstatus} eq 'obsolete') {
- $option .= $locale->text('Obsolete') . " : ";
- }
- if ($form->{itemstatus} eq 'orphaned') {
- $option .= $locale->text('Orphaned') . " : ";
- }
- if ($form->{itemstatus} eq 'onhand') {
- $option .= $locale->text('On Hand') . " : ";
- $form->{l_onhand} = "Y";
- }
- if ($form->{itemstatus} eq 'short') {
- $option .= $locale->text('Short') . " : ";
- $form->{l_onhand} = "Y";
- }
- if ($form->{onorder}) {
- $form->{l_ordnumber} = "Y";
- $callback .= "&onorder=$form->{onorder}";
- $option .= $locale->text('On Order') . " : ";
- }
- if ($form->{ordered}) {
- $form->{l_ordnumber} = "Y";
- $callback .= "&ordered=$form->{ordered}";
- $option .= $locale->text('Ordered') . " : ";
- }
- if ($form->{rfq}) {
- $form->{l_quonumber} = "Y";
- $callback .= "&rfq=$form->{rfq}";
- $option .= $locale->text('RFQ') . " : ";
- }
- if ($form->{quoted}) {
- $form->{l_quonumber} = "Y";
- $callback .= ""ed=$form->{quoted}";
- $option .= $locale->text('Quoted') . " : ";
+ # this local subfunction generates a callback token from the input key.
+ # easy to join into a callback later
+ sub callback_token {
+ map { /\w+$/; return "&$&=$form->{$&}" } @_;
}
- if ($form->{bought}) {
- $form->{l_invnumber} = "Y";
- $callback .= "&bought=$form->{bought}";
- $option .= $locale->text('Bought') . " : ";
- }
- if ($form->{sold}) {
- $form->{l_invnumber} = "Y";
- $callback .= "&sold=$form->{sold}";
- $option .= $locale->text('Sold') . " : ";
+
+ my @itemstatus_keys = qw(active obsolete orphaned onhand short);
+ my @callback_keys = qw(onorder ordered rfq quoted bought sold partnumber partsgroup serialnumber description make model
+ drawing microfiche l_soldtotal l_deliverydate transdatefrom transdateto);
+ my $callback = "$form->{script}?action=generate_report";
+ map { $callback .= "&$_=" . $form->escape($form->{$_}) } qw(login password searchitems itemstatus bom l_linetotal title);
+
+ # calculate dependencies
+ for (@itemstatus_keys, @callback_keys) {
+ next if ($form->{itemstatus} ne $_ && !$form->{$_});
+ map { $form->{$_} = 'Y' } @{ $dependencies{$_} } if $dependencies{$_};
}
- if ( $form->{bought}
- || $form->{sold}
- || $form->{onorder}
- || $form->{ordered}
- || $form->{rfq}
- || $form->{quoted}) {
- $form->{l_lastcost} = "";
- $form->{l_name} = "Y";
- if ($form->{transdatefrom}) {
- $callback .= "&transdatefrom=$form->{transdatefrom}";
- $option .= "\n "
- . $locale->text('From')
- . " "
- . $locale->date(\%myconfig, $form->{transdatefrom}, 1);
- }
- if ($form->{transdateto}) {
- $callback .= "&transdateto=$form->{transdateto}";
- $option .= "\n "
- . $locale->text('To')
- . " "
- . $locale->date(\%myconfig, $form->{transdateto}, 1);
- }
+ # generate callback and optionstrings
+ for my $key (@itemstatus_keys, @callback_keys) {
+ next if ($form->{itemstatus} ne $key && !$form->{$key});
+ push @options, $optiontexts{$key};
+ push @callbacks, callback_token($key) if grep { $_ eq $key } @callback_keys;;
}
+ my $option = $locale->text('Options') . ': ' . join(', ', grep $_, @options) . ' ';
+ $callback .= join '', grep $_, @callbacks;
- $option .= " ";
+ $lxdebug->message(0, $callback);
- if ($form->{partnumber}) {
- $callback .= "&partnumber=$form->{partnumber}";
- $option .= $locale->text('Part Number') . qq| : $form->{partnumber} |;
- }
- if ($form->{partsgroup}) {
- $callback .= "&partsgroup=$form->{partsgroup}";
- $option .= $locale->text('Group') . qq| : $form->{partsgroup} |;
- }
- if ($form->{serialnumber}) {
- $callback .= "&serialnumber=$form->{serialnumber}";
- $option .=
- $locale->text('Serial Number') . qq| : $form->{serialnumber} |;
- }
- if ($form->{description}) {
- $callback .= "&description=$form->{description}";
- $description = $form->{description};
- $description =~ s/
-/ /g;
- $option .=
- $locale->text('Part Description') . qq| : $form->{description} |;
- }
- if ($form->{make}) {
- $callback .= "&make=$form->{make}";
- $option .= $locale->text('Make') . qq| : $form->{make} |;
- }
- if ($form->{model}) {
- $callback .= "&model=$form->{model}";
- $option .= $locale->text('Model') . qq| : $form->{model} |;
- }
- if ($form->{drawing}) {
- $callback .= "&drawing=$form->{drawing}";
- $option .= $locale->text('Drawing') . qq| : $form->{drawing} |;
- }
- if ($form->{microfiche}) {
- $callback .= "µfiche=$form->{microfiche}";
- $option .= $locale->text('Microfiche') . qq| : $form->{microfiche} |;
- }
+ IC->all_parts(\%myconfig, \%$form);
- # table soldtotal aktive
- if ($form->{l_soldtotal}) {
- $callback .= "&soldtotal=$form->{soldtotal}";
- $option .= $locale->text('soldtotal') . qq| : $form->{soldtotal} |;
- }
+ # special case for lastcost
+ $form->{l_lastcost} = "" if $form->{ledgerchecks};
- if ($form->{l_deliverydate}) {
- $callback .= "&deliverydate=$form->{deliverydate}";
+ if ($form->{description}) {
+ $description = $form->{description};
+ $description =~ s/\n/ /g;
}
@columns = $form->sort_columns(
- qw(partnumber description partsgroup bin onhand rop unit listprice linetotallistprice sellprice linetotalsellprice lastcost linetotallastcost priceupdate weight image drawing microfiche invnumber ordnumber quonumber name serialnumber soldtotal deliverydate)
+ qw(partnumber description partsgroup bin onhand rop unit listprice linetotallistprice sellprice linetotalsellprice
+ lastcost linetotallastcost priceupdate weight image drawing microfiche invnumber ordnumber quonumber name serialnumber soldtotal deliverydate)
);
if ($form->{l_linetotal}) {
@@ -1692,7 +1666,7 @@ sub generate_report {
$form->{l_lastcost} = ""
if ($form->{searchitems} eq 'assembly' && !$form->{bom});
- foreach $item (@columns) {
+ foreach my $item (@columns) {
if ($form->{"l_$item"} eq "Y") {
push @column_index, $item;
@@ -1828,7 +1802,8 @@ sub generate_report {
$sameitem = $form->{parts}->[0]->{ $form->{sort} };
}
- foreach $ref (@{ $form->{parts} }) {
+ foreach my $ref (@{ $form->{parts} }) {
+ my $i = 0;
if ($form->{l_subtotal} eq 'Y' && !$ref->{assemblyitem}) {
if ($sameitem ne $ref->{ $form->{sort} }) {
@@ -1855,38 +1830,35 @@ sub generate_report {
/ /g;
$column_data{partnumber} =
- "{script}?action=edit&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{partnumber} | ";
- $column_data{description} = "{script}?action=edit&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{description} | ";
+ "{script}?action=edit&id=$ref->{id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{partnumber} | ";
+ $column_data{description} = "{script}?action=edit&id=$ref->{id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{description} | ";
$column_data{partsgroup} = "$ref->{partsgroup} | ";
$column_data{onhand} =
""
- . $form->format_amount(\%myconfig, $ref->{onhand}, '', " ")
+ . $form->format_amount(\%myconfig, $ref->{onhand})
. " | ";
$column_data{sellprice} =
""
- . $form->format_amount(\%myconfig, $ref->{sellprice}, 2, " ")
+ . $form->format_amount(\%myconfig, $ref->{sellprice}, -2)
. " | ";
$column_data{listprice} =
""
- . $form->format_amount(\%myconfig, $ref->{listprice}, 2, " ")
+ . $form->format_amount(\%myconfig, $ref->{listprice}, -2)
. " | ";
$column_data{lastcost} =
""
- . $form->format_amount(\%myconfig, $ref->{lastcost}, 2, " ")
+ . $form->format_amount(\%myconfig, $ref->{lastcost}, -2)
. " | ";
$column_data{linetotalsellprice} = ""
- . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{sellprice},
- 2, " ")
+ . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{sellprice}, 2)
. " | ";
$column_data{linetotallastcost} = ""
- . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{lastcost},
- 2, " ")
+ . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{lastcost}, 2)
. " | ";
$column_data{linetotallistprice} = ""
- . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{listprice},
- 2, " ")
+ . $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{listprice}, 2)
. " | ";
if (!$ref->{assemblyitem}) {
@@ -1902,10 +1874,10 @@ sub generate_report {
$column_data{rop} =
""
- . $form->format_amount(\%myconfig, $ref->{rop}, '', " ") . " | ";
+ . $form->format_amount(\%myconfig, $ref->{rop}) . "";
$column_data{weight} =
""
- . $form->format_amount(\%myconfig, $ref->{weight}, '', " ")
+ . $form->format_amount(\%myconfig, $ref->{weight})
. " | ";
$column_data{unit} = "$ref->{unit} | ";
$column_data{bin} = "$ref->{bin} | ";
@@ -1913,15 +1885,15 @@ sub generate_report {
$column_data{invnumber} =
($ref->{module} ne 'oe')
- ? "{module}.pl?action=edit&type=invoice&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{invnumber} | "
+ ? "{module}.pl?action=edit&type=invoice&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{invnumber} | "
: "$ref->{invnumber} | ";
$column_data{ordnumber} =
($ref->{module} eq 'oe')
- ? "{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{ordnumber} | "
+ ? "{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{ordnumber} | "
: "$ref->{ordnumber} | ";
$column_data{quonumber} =
($ref->{module} eq 'oe' && !$ref->{ordnumber})
- ? "{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{quonumber} | "
+ ? "{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{quonumber} | "
: "$ref->{quonumber} | ";
$column_data{name} = "$ref->{name} | ";
@@ -1943,7 +1915,7 @@ sub generate_report {
$column_data{soldtotal} =
""
- . $form->format_amount(\%myconfig, $ref->{soldtotal}, '', " ")
+ . $form->format_amount(\%myconfig, $ref->{soldtotal})
. " | ";
$column_data{deliverydate} = "$ref->{deliverydate} | ";
@@ -1968,15 +1940,15 @@ sub generate_report {
map { $column_data{$_} = " | " } @column_index;
$column_data{linetotalsellprice} =
""
- . $form->format_amount(\%myconfig, $totalsellprice, 2, " ")
+ . $form->format_amount(\%myconfig, $totalsellprice, 2)
. " | ";
$column_data{linetotallastcost} =
""
- . $form->format_amount(\%myconfig, $totallastcost, 2, " ")
+ . $form->format_amount(\%myconfig, $totallastcost, 2)
. " | ";
$column_data{linetotallistprice} =
""
- . $form->format_amount(\%myconfig, $totallistprice, 2, " ")
+ . $form->format_amount(\%myconfig, $totallistprice, 2)
. " | ";
print " ";
@@ -2003,20 +1975,13 @@ sub generate_report {
{searchitems}>
-{path}>
{login}>
{password}>|;
print qq|
|;
+ . $locale->text('Add') . qq|">
- if ($form->{menubar}) {
- require "$form->{path}/menu.pl";
- &menubar;
- }
-
- print qq|
|