use SL::AM;
use SL::CVar;
use SL::IC;
+use SL::Helper::Flash;
use SL::ReportGenerator;
#use SL::PE;
$form->{title} = $locale->text($form->{title});
$form->{title} = $locale->text('Assemblies') if ($is_xyz{is_assembly});
- $form->{jsscript} = 1;
-
$form->{CUSTOM_VARIABLES} = CVar->get_configs('module' => 'IC');
($form->{CUSTOM_VARIABLES_FILTER_CODE},
$form->{CUSTOM_VARIABLES_INCLUSION_CODE}) = CVar->render_search_options('variables' => $form->{CUSTOM_VARIABLES},
# $form->header;
#
# print qq|
-#<body>
# <form method=post action=ic.pl>
# <table width=100%>
# <tr>
# . $locale->text('TOP100') . qq|">
#
#</form>
-#</body>
-#</html>
#|;
# $lxdebug->leave_sub();
#} #end list()
my $colspan = $#column_index + 1;
print qq|
-<body>
-
<table width=100%>
<tr>
<th class=listtop colspan=$colspan>$form->{title}</th>
print qq|
<!-- <input type=hidden name=ndxs_counter value="$form->{ndxs_counter}">-->
- <input class=submit type=submit name=action value="|
- . $locale->text('choice') . qq|">
+<!-- <input class=submit type=submit name=action value="|
+ . $locale->text('choice') . qq|"> -->
</form>
-
-</body>
-</html>
|;
$lxdebug->leave_sub();
'bin' => { 'text' => $locale->text('Bin'), },
'deliverydate' => { 'text' => $locale->text('deliverydate'), },
'description' => { 'text' => $locale->text('Part Description'), },
+ 'notes' => { 'text' => $locale->text('Notes'), },
'drawing' => { 'text' => $locale->text('Drawing'), },
'ean' => { 'text' => $locale->text('EAN'), },
'image' => { 'text' => $locale->text('Image'), },
IC->all_parts(\%myconfig, \%$form);
my @columns = qw(
- partnumber description partsgroup bin onhand rop soldtotal unit listprice
+ partnumber description notes partsgroup bin onhand rop soldtotal unit listprice
linetotallistprice sellprice linetotalsellprice lastcost linetotallastcost
priceupdate weight image drawing microfiche invnumber ordnumber quonumber
transdate name serialnumber deliverydate ean projectnumber projectdescription
map { $column_defs{$_}->{visible} ||= $form->{"l_$_"} ? 1 : 0 } @columns;
map { $column_defs{$_}->{align} = 'right' } qw(onhand sellprice listprice lastcost linetotalsellprice linetotallastcost linetotallistprice rop weight soldtotal), @pricegroup_columns;
- my @hidden_variables = (qw(l_subtotal l_linetotal searchitems itemstatus bom l_pricegroups), @itemstatus_keys, @callback_keys,
- map({ "cvar_$_->{name}" } @searchable_custom_variables), map { "l_$_" } @columns);
+ my @hidden_variables = (
+ qw(l_subtotal l_linetotal searchitems itemstatus bom l_pricegroups),
+ @itemstatus_keys,
+ @callback_keys,
+ map({ "cvar_$_->{name}" } @searchable_custom_variables),
+ map({'cvar_'. $_->{name} .'_qtyop'} grep({$_->{type} eq 'number'} @searchable_custom_variables)),
+ map({ "l_$_" } @columns),
+ );
my $callback = build_std_url('action=generate_report', grep { $form->{$_} } @hidden_variables);
$row->{description}->{link} = $edit_link;
foreach (qw(sellprice listprice lastcost)) {
- $row->{$_}{data} = $form->format_amount(\%myconfig, $ref->{$_}, -2);
+ $row->{$_}{data} = $form->format_amount(\%myconfig, $ref->{$_}, 2);
$row->{"linetotal$_"}{data} = $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{$_}, 2);
}
foreach ( @pricegroup_columns ) {
- $row->{$_}{data} = $form->format_amount(\%myconfig, $ref->{"$_"}, -2);
+ $row->{$_}{data} = $form->format_amount(\%myconfig, $ref->{"$_"}, 2);
};
$idx++;
}
- if ($form->{"l_linetotal"}) {
+ if ($form->{"l_linetotal"} && !$form->{report_generator_csv_options_for_import}) {
my $row = { map { $_ => { 'class' => 'listtotal', } } @columns };
map { $row->{"linetotal$_"}->{data} = $form->format_amount(\%myconfig, $totals{$_}, 2) } @subtotal_columns;
IC->create_links("IC", \%myconfig, \%$form);
# currencies
- map({ $form->{selectcurrency} .= "<option>$_\n" }
- split(/:/, $form->{currencies}));
+ map({ $form->{selectcurrency} .= "<option>$_\n" } $::form->get_all_currencies());
# parts and assemblies have the same links
my $item = $form->{item};
$form->get_lists('price_factors' => 'ALL_PRICE_FACTORS',
'partsgroup' => 'all_partsgroup',
- 'vendors' => 'ALL_VENDORS',);
+ 'vendors' => 'ALL_VENDORS',
+ 'warehouses' => { 'key' => 'WAREHOUSES',
+ 'bins' => 'BINS', });
+ # leerer wert für Lager und Lagerplatz korrekt einstellt
+ # ID 0 sollte in Ordnung sein, da der Zähler sowieso höher ist
+ my $no_default_bin_entry = { 'id' => '0', description => '--', 'BINS' => [ { id => '0', description => ''} ] };
+ push @ { $form->{WAREHOUSES} }, $no_default_bin_entry;
+ if (my $max = scalar @{ $form->{WAREHOUSES} }) {
+ my ($default_warehouse_id, $default_bin_id);
+ if ($form->{action} eq 'add') { # default only for new entries
+ $default_warehouse_id = $::instance_conf->get_warehouse_id;
+ $default_bin_id = $::instance_conf->get_bin_id;
+ }
+ $form->{warehouse_id} ||= $default_warehouse_id || $form->{WAREHOUSES}->[$max -1]->{id};
+ $form->{bin_id} ||= $default_bin_id || $form->{WAREHOUSES}->[$max -1]->{BINS}->[0]->{id};
+ }
IC->retrieve_buchungsgruppen(\%myconfig, $form);
@{ $form->{BUCHUNGSGRUPPEN} } = grep { $_->{id} eq $form->{buchungsgruppen_id} || ($form->{id} && $form->{orphaned}) || !$form->{id} } @{ $form->{BUCHUNGSGRUPPEN} };
- # use JavaScript Calendar or not (yes!)
- $form->{jsscript} = 1;
+ if (($form->{partnumber} ne '') && !SL::TransNumber->new(number => $form->{partnumber}, type => $form->{item}, id => $form->{id})->is_unique) {
+ flash('info', $::locale->text('This partnumber is not unique. You should change it.'));
+ }
my $units = AM->retrieve_units(\%myconfig, $form);
$form->{ALL_UNITS} = [ map +{ name => $_ }, sort { $units->{$a}{sortkey} <=> $units->{$b}{sortkey} } keys %$units ];
$form->{defaults} = AM->get_defaults();
- $form->{fokus} = "ic.partnumber";
-
$form->{CUSTOM_VARIABLES} = CVar->get_custom_variables('module' => 'IC', 'trans_id' => $form->{id});
CVar->render_inputs('variables' => $form->{CUSTOM_VARIABLES}, show_disabled_message => 1)
}
my %header = (
- runningnumber => { text => $locale->text('No.'), nowrap => 1, width => '5%' },
- qty => { text => $locale->text('Qty'), nowrap => 1, width => '10%' },
- unit => { text => $locale->text('Unit'), nowrap => 1, width => '5%' },
- partnumber => { text => $locale->text('Part Number'), nowrap => 1, width => '20%' },
- description => { text => $locale->text('Part Description'), nowrap => 1, width => '50%' },
- lastcost => { text => $locale->text('Purchase Prices'), nowrap => 1, width => '50%' },
- total => { text => $locale->text('Sale Prices'), nowrap => 1, },
- bom => { text => $locale->text('BOM'), },
- partsgroup => { text => $locale->text('Group'), },
+ runningnumber => { text => $locale->text('No.'), nowrap => 1, width => '5%', align => 'left',},
+ qty => { text => $locale->text('Qty'), nowrap => 1, width => '10%', align => 'left',},
+ unit => { text => $locale->text('Unit'), nowrap => 1, width => '5%', align => 'left',},
+ partnumber => { text => $locale->text('Part Number'), nowrap => 1, width => '20%', align => 'left',},
+ description => { text => $locale->text('Part Description'), nowrap => 1, width => '50%', align => 'left',},
+ lastcost => { text => $locale->text('Purchase Prices'), nowrap => 1, width => '50%', align => 'right',},
+ total => { text => $locale->text('Sale Prices'), nowrap => 1, align => 'right',},
+ bom => { text => $locale->text('BOM'), align => 'center',},
+ partsgroup => { text => $locale->text('Group'), align => 'left',},
);
my @ROWS;
$form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"});
$linetotal = $form->format_amount(\%myconfig, $linetotal, 2);
$line_purchase_price = $form->format_amount(\%myconfig, $line_purchase_price, 2);
- $href = qq|$form->{script}?action=edit&id=$form->{"id_$i"}&rowcount=$i&previousform=$previousform|;
+ $href = build_std_url("action=edit", qq|id=$form->{"id_$i"}|, "rowcount=$numrows", "currow=$i", "previousform=$previousform");
map { $row{$_}{data} = "" } qw(qty unit partnumber description bom partsgroup runningnumber);
# last row
$row{bom}{data} = $form->{"bom_$i"} ? "x" : " ";
$row{qty}{align} = 'right';
} else {
- $row{partnumber}{data} = qq|<a href=$href>$form->{"partnumber_$i"}</a>|;
+ $row{partnumber}{data} = qq|$form->{"partnumber_$i"}|;
+ $row{partnumber}{link} = $href;
$row{qty}{data} = qq|<input name="qty_$i" size=5 value="$form->{"qty_$i"}">|;
$row{runningnumber}{data} = qq|<input name="runningnumber_$i" size=3 value="$i">|;
$row{bom}{data} = sprintf qq|<input name="bom_$i" type=checkbox class=checkbox value=1 %s>|,
}
push @row_hiddens, qw(unit description partnumber partsgroup);
$row{unit}{data} = $form->{"unit_$i"};
- $row{description}{data} = $form->{"description_$i"};
- $row{partsgroup}{data} = $form->{"partsgroup_$i"};
- $row{bom}{align} = 'center';
+ #Bei der Artikelbeschreibung und Warengruppe können Sonderzeichen verwendet
+ #werden, die den HTML Code stören. Daher sollen diese im Template escaped werden
+ #dies geschieht, wenn die Variable escape gesetzt ist
+ $row{description}{data} = $form->{"description_$i"};
+ $row{description}{escape} = 1;
+ $row{partsgroup}{data} = $form->{"partsgroup_$i"};
+ $row{partsgroup}{escape} = 1;
+ $row{bom}{align} = 'center';
}
$row{lastcost}{data} = $line_purchase_price;
# parse pricegroups. and no, don't rely on check_form for this...
map { $form->{"price_$_"} = $form->parse_amount(\%myconfig, $form->{"price_$_"}) } 1 .. $form->{price_rows};
+ $form->{sellprice} = $form->parse_amount(\%myconfig, $form->{sellprice});
# same for makemodel lastcosts
# but parse_amount not necessary for assembly component lastcosts
unless ($form->{item} eq "assembly") {
map { $form->{"lastcost_$_"} = $form->parse_amount(\%myconfig, $form->{"lastcost_$_"}) } 1 .. $form->{"makemodel_rows"};
};
+ $form->{listprice} = $form->parse_amount(\%myconfig, $form->{listprice});
if ($form->{item} eq "assembly") {
my $i = $form->{assembly_rows};
$form->error($locale->text('Description must not be empty!')) unless $form->{description};
$form->error($locale->text('Partnumber must not be set to empty!')) if $form->{id} && !$form->{partnumber};
+ # undef warehouse_id if the empty value is selected
+ if ( ($form->{warehouse_id} == 0) && ($form->{bin_id} == 0) ) {
+ undef $form->{warehouse_id};
+ undef $form->{bin_id};
+ }
# save part
- $lxdebug->message($LXDebug::DEBUG1, "ic.pl: sellprice in save = $form->{sellprice}\n");
if (IC->save(\%myconfig, \%$form) == 3) {
$form->error($locale->text('Partnumber not unique!'));
}
qw(weight listprice sellprice rop);
$form->{assembly_rows}--;
- $i = $form->{assembly_rows};
+ if ($newform{currow}) {
+ $i = $newform{currow};
+ } else {
+ $i = $form->{assembly_rows};
+ }
$form->{"qty_$i"} = 1 unless ($form->{"qty_$i"});
$form->{sellprice} -= $form->{"sellprice_$i"} * $form->{"qty_$i"};
$form->{"sellprice_$i"} /= $form->{exchangerate};
}
- $lxdebug->message($LXDebug::DEBUG1, qq|sellprice_$i in previousform 2 = | . $form->{"sellprice_$i"} . qq|\n|);
-
map { $form->{"taxaccounts_$i"} .= "$_ " } split / /, $newform{taxaccount};
chop $form->{"taxaccounts_$i"};
foreach my $item (qw(description rate taxnumber)) {
}
$form->{callback} = $callback;
}
- $lxdebug->message($LXDebug::DEBUG1, qq|ic.pl: sellprice_$i nach sub save = | . $form->{"sellprice_$i"} . qq|\n|);
# redirect
$form->redirect;