Revision 74959706
Von Sven Schöling vor mehr als 9 Jahren hinzugefügt
bin/mozilla/io.pl | ||
---|---|---|
138 | 138 |
my $is_delivery_order = $form->{type} =~ /_delivery_order$/; |
139 | 139 |
my $is_quotation = $form->{type} =~ /_quotation$/; |
140 | 140 |
my $is_invoice = $form->{type} =~ /invoice/; |
141 |
my $is_credit_note = $form->{type} =~ /credit_note/; |
|
141 | 142 |
my $is_s_p_order = (first { $_ eq $form->{type} } qw(sales_order purchase_order)); |
142 | 143 |
my $show_ship_missing = $is_s_p_order && $::instance_conf->get_sales_purchase_order_ship_missing_column; |
144 |
my $show_marge = (!$is_purchase || $is_invoice || $is_credit_note) && !$is_delivery_order; |
|
143 | 145 |
|
144 | 146 |
if ($is_delivery_order) { |
145 | 147 |
if ($form->{type} eq 'sales_delivery_order') { |
... | ... | |
154 | 156 |
} |
155 | 157 |
|
156 | 158 |
# column_index |
157 |
my @header_sort = qw(runningnumber partnumber description ship qty unit weight sellprice discount linetotal); |
|
158 |
my @HEADER = ( |
|
159 |
{ id => 'runningnumber', width => 5, value => $locale->text('No.'), display => 1, }, |
|
160 |
{ id => 'partnumber', width => 8, value => $locale->text('Number'), display => 1, }, |
|
161 |
{ id => 'description', width => 30, value => $locale->text('Part Description'), display => 1, }, |
|
162 |
{ id => 'ship', width => 5, value => $locale->text('Delivered'), display => $is_s_p_order, }, |
|
163 |
{ id => 'ship_missing', width => 5, value => $locale->text('Not delivered'), display => $show_ship_missing, }, |
|
164 |
{ id => 'qty', width => 5, value => $locale->text('Qty'), display => 1, }, |
|
165 |
{ id => 'price_factor', width => 5, value => $locale->text('Price Factor'), display => !$is_delivery_order, }, |
|
166 |
{ id => 'unit', width => 5, value => $locale->text('Unit'), display => 1, }, |
|
167 |
{ id => 'weight', width => 5, value => $locale->text('Weight'), display => $defaults->{show_weight}, }, |
|
168 |
{ id => 'serialnr', width => 10, value => $locale->text('Serial No.'), display => 0, }, |
|
169 |
{ id => 'projectnr', width => 10, value => $locale->text('Project'), display => 0, }, |
|
170 |
{ id => 'price_source', width => 5, value => $locale->text('Price Source'), display => !$is_delivery_order, }, |
|
171 |
{ id => 'sellprice', width => 15, value => $locale->text('Price'), display => !$is_delivery_order, }, |
|
172 |
{ id => 'discount', width => 5, value => $locale->text('Discount'), display => !$is_delivery_order, }, |
|
173 |
{ id => 'linetotal', width => 10, value => $locale->text('Extended'), display => !$is_delivery_order, }, |
|
174 |
{ id => 'bin', width => 10, value => $locale->text('Bin'), display => 0, }, |
|
175 |
{ id => 'stock_in_out', width => 10, value => $stock_in_out_title, display => $is_delivery_order, }, |
|
159 |
my @header_sort = qw( |
|
160 |
runningnumber partnumber description ship ship_missing qty price_factor |
|
161 |
unit weight price_source sellprice discount linetotal |
|
162 |
bin stock_in_out |
|
176 | 163 |
); |
177 |
my @column_index = map { $_->{id} } grep { $_->{display} } @HEADER; |
|
178 |
|
|
164 |
my @row2_sort = qw( |
|
165 |
serialnr projectnr reqdate subtotal marge listprice lastcost onhand |
|
166 |
); |
|
167 |
my %column_def = ( |
|
168 |
runningnumber => { width => 5, value => $locale->text('No.'), display => 1, }, |
|
169 |
partnumber => { width => 8, value => $locale->text('Number'), display => 1, }, |
|
170 |
description => { width => 30, value => $locale->text('Part Description'), display => 1, }, |
|
171 |
ship => { width => 5, value => $locale->text('Delivered'), display => $is_s_p_order, }, |
|
172 |
ship_missing => { width => 5, value => $locale->text('Not delivered'), display => $show_ship_missing, }, |
|
173 |
qty => { width => 5, value => $locale->text('Qty'), display => 1, }, |
|
174 |
price_factor => { width => 5, value => $locale->text('Price Factor'), display => !$is_delivery_order, }, |
|
175 |
unit => { width => 5, value => $locale->text('Unit'), display => 1, }, |
|
176 |
weight => { width => 5, value => $locale->text('Weight'), display => $defaults->{show_weight}, }, |
|
177 |
serialnr => { width => 10, value => $locale->text('Serial No.'), display => !$is_quotation }, |
|
178 |
projectnr => { width => 10, value => $locale->text('Project'), display => 1, }, |
|
179 |
price_source => { width => 5, value => $locale->text('Price Source'), display => !$is_delivery_order, }, |
|
180 |
sellprice => { width => 15, value => $locale->text('Price'), display => !$is_delivery_order, }, |
|
181 |
discount => { width => 5, value => $locale->text('Discount'), display => !$is_delivery_order, }, |
|
182 |
linetotal => { width => 10, value => $locale->text('Extended'), display => !$is_delivery_order, }, |
|
183 |
bin => { width => 10, value => $locale->text('Bin'), display => 0, }, |
|
184 |
stock_in_out => { width => 10, value => $stock_in_out_title, display => $is_delivery_order, }, |
|
185 |
reqdate => { value => $locale->text('Reqdate'), display => $is_s_p_order || $is_delivery_order || $is_invoice, }, |
|
186 |
subtotal => { value => $locale->text('Subtotal'), display => 1, }, |
|
187 |
marge => { value => $locale->text('Ertrag'), display => $show_marge, }, |
|
188 |
listprice => { value => $locale->text('LP'), display => $show_marge, }, |
|
189 |
lastcost => { value => $locale->text('EK'), display => $show_marge, }, |
|
190 |
onhand => { value => $locale->text('On Hand'), display => 1, }, |
|
191 |
); |
|
192 |
my @HEADER = map { $column_def{$_} } @header_sort; |
|
179 | 193 |
|
180 | 194 |
# cache units |
181 | 195 |
my $all_units = AM->retrieve_units(\%myconfig, $form); |
182 | 196 |
|
183 | 197 |
my %price_factors = map { $_->{id} => $_->{factor} } @{ $form->{ALL_PRICE_FACTORS} }; |
184 | 198 |
|
185 |
my $colspan = scalar @column_index; |
|
186 | 199 |
|
187 | 200 |
$form->{invsubtotal} = 0; |
188 | 201 |
map { $form->{"${_}_base"} = 0 } (split(/ /, $form->{taxaccounts})); |
... | ... | |
193 | 206 |
# /about details |
194 | 207 |
|
195 | 208 |
# translations, unused commented out |
196 |
# $runningnumber = $locale->text('No.'); |
|
197 |
# my $deliverydate = $locale->text('Delivery Date'); |
|
198 |
my $serialnumber = $locale->text('Serial No.'); |
|
199 |
my $projectnumber = $locale->text('Project'); |
|
200 |
# $partsgroup = $locale->text('Group'); |
|
201 |
my $reqdate = $locale->text('Reqdate'); |
|
202 | 209 |
my $deliverydate = $locale->text('Required by'); |
203 | 210 |
|
204 | 211 |
# special alignings |
... | ... | |
364 | 371 |
$column_data{stock_in_out} = calculate_stock_in_out($i); |
365 | 372 |
} |
366 | 373 |
|
367 |
my @ROW1 = map { value => $column_data{$_}, align => $align{$_}, nowrap => $nowrap{$_} }, @column_index; |
|
368 |
|
|
369 |
# second row |
|
370 |
my @ROW2 = (); |
|
371 |
push @ROW2, { value => qq|<b>$serialnumber</b> <input name="serialnumber_$i" size="15" value="$form->{"serialnumber_$i"}">| } |
|
372 |
if $form->{type} !~ /_quotation/; |
|
373 |
push @ROW2, { value => qq|<b>$projectnumber</b> | . NTI($cgi->popup_menu('-name' => "project_id_$i", '-values' => \@projectnumber_values, |
|
374 |
'-labels' => \%projectnumber_labels, '-default' => $form->{"project_id_$i"})) }; |
|
375 |
push @ROW2, { value => qq|<b>$reqdate</b> <input name="reqdate_$i" size="11" onBlur="check_right_date_format(this)" value="$form->{"reqdate_$i"}">| } |
|
376 |
if ($form->{type} =~ /order/ || $form->{type} =~ /invoice/); |
|
377 |
push @ROW2, { value => sprintf qq|<b>%s</b> <input type="checkbox" name="subtotal_$i" value="1" %s>|, |
|
378 |
$locale->text('Subtotal'), $form->{"subtotal_$i"} ? 'checked' : '' }; |
|
374 |
$column_data{serialnr} = qq|<input name="serialnumber_$i" size="15" value="$form->{"serialnumber_$i"}">|; |
|
375 |
$column_data{projectnr} = NTI($cgi->popup_menu( |
|
376 |
'-name' => "project_id_$i", |
|
377 |
'-values' => \@projectnumber_values, |
|
378 |
'-labels' => \%projectnumber_labels, |
|
379 |
'-default' => $form->{"project_id_$i"} |
|
380 |
)); |
|
381 |
$column_data{reqdate} = qq|<input name="reqdate_$i" size="11" onBlur="check_right_date_format(this)" value="$form->{"reqdate_$i"}">|; |
|
382 |
$column_data{subtotal} = sprintf qq|<input type="checkbox" name="subtotal_$i" value="1" %s>|, $form->{"subtotal_$i"} ? 'checked' : ''; |
|
379 | 383 |
|
380 | 384 |
# begin marge calculations |
381 | 385 |
$form->{"lastcost_$i"} *= 1; |
... | ... | |
411 | 415 |
|
412 | 416 |
map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2) } qw(marge_absolut marge_percent); |
413 | 417 |
|
414 |
push @ROW2, { value => sprintf qq| |
|
415 |
<font %s><b>%s</b> %s %s%% </font> |
|
416 |
<b>%s</b> %s |
|
417 |
<b>%s</b> <input size="5" name="lastcost_$i" value="%s">|, |
|
418 |
$marge_color, $locale->text('Ertrag'),$form->{"marge_absolut_$i"}, $form->{"marge_percent_$i"}, |
|
419 |
$locale->text('LP'), $form->format_amount(\%myconfig, $form->{"listprice_$i"}, 2), |
|
420 |
$locale->text('EK'), $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, $decimalplaces) } |
|
421 |
if $form->{"id_$i"} && ($form->{type} =~ /^sales_/ || $form->{type} =~ /invoice/ || $form->{type} =~ /^credit_note$/ ) && !$is_delivery_order; |
|
422 |
|
|
418 |
$column_data{marge} = sprintf qq|<font %s>%s %s%%</font>|, |
|
419 |
$marge_color, $form->{"marge_absolut_$i"}, $form->{"marge_percent_$i"}; |
|
420 |
$column_data{listprice} = $form->format_amount(\%myconfig, $form->{"listprice_$i"}, 2); |
|
421 |
$column_data{lastcost} = sprintf qq|<input size="5" name="lastcost_$i" value="%s">|, $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, $decimalplaces); |
|
423 | 422 |
# / marge calculations ending |
424 | 423 |
|
425 | 424 |
# Calculate total weight |
... | ... | |
429 | 428 |
if ($form->{"id_$i"}) { |
430 | 429 |
my $part = IC->get_basic_part_info(id => $form->{"id_$i"}); |
431 | 430 |
my $onhand_color = $part->{onhand} < $part->{rop} ? 'color="#ff0000"' : ''; |
432 |
push @ROW2, { value => sprintf "<b>%s</b> <font %s>%s %s</font>", |
|
433 |
$locale->text('On Hand'), |
|
431 |
$column_data{onhand} = sprintf "<font %s>%s %s</font>", |
|
434 | 432 |
$onhand_color, |
435 | 433 |
$form->format_amount(\%myconfig, $part->{onhand}, 2), |
436 |
$part->{unit} |
|
437 |
}; |
|
434 |
$part->{unit}; |
|
438 | 435 |
} |
439 | 436 |
# / calculate onhand |
440 | 437 |
|
438 |
my @ROW1 = map { { value => $column_data{$_}, align => $align{$_}, nowrap => $nowrap{$_} } } grep { $column_def{$_}{display} } @header_sort; |
|
439 |
my @ROW2 = map { { value => sprintf "<b>%s</b> %s", $column_def{$_}{value}, $column_data{$_} } } grep { $column_def{$_}{display} } @row2_sort; |
|
440 |
|
|
441 | 441 |
my @hidden_vars; |
442 | 442 |
# add hidden ids for persistent (item|invoice)_ids and previous (converted_from*) ids |
443 | 443 |
if ($is_quotation) { |
... | ... | |
475 | 475 |
# Benutzerdefinierte Variablen für Waren/Dienstleistungen/Erzeugnisse |
476 | 476 |
_render_custom_variables_inputs(ROW2 => \@ROW2, row => $i, part_id => $form->{"id_$i"}); |
477 | 477 |
|
478 |
my $colspan = scalar @ROW1; |
|
478 | 479 |
push @ROWS, { ROW1 => \@ROW1, ROW2 => \@ROW2, HIDDENS => \@HIDDENS, colspan => $colspan, error => $form->{"row_error_$i"}, obj => $record_item }; |
479 | 480 |
} |
480 | 481 |
|
Auch abrufbar als: Unified diff
io.pl::display_row: Felddefinitionen vereinheitlicht.
Ob eine Zelle eine volle Spalte bekommt oder in der zweiten Zeile landet
wird jetzt nur noch durch @header_sort und @row2_sort bestimmt.