IR->get_vendor(\%myconfig, \%$form);
} else {
IS->get_customer(\%myconfig, \%$form);
+ # OFFEN tritt bug 1284 auch bei vendor auf?
+ $form->{discount} = $form->{customer_discount};
}
$form->restore_vars(qw(payment_id language_id taxzone_id intnotes cp_id));
$form->{"reqdate_$i"} = $form->{"deliverydate_$i"} unless $form->{"reqdate_$i"};
$form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces);
+ $form->{"lastcost_$i"} = $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, $decimalplaces);
(my $dec_qty) = ($form->{"qty_$i"} =~ /\.(\d+)/);
$dec_qty = length $dec_qty;
my $rows = scalar @{ $form->{item_list} };
if ($rows) {
- $form->{"qty_$i"} = 1 unless ($form->{"qty_$i"});
+ $form->{"qty_$i"} = 1 unless $form->parse_amount(\%myconfig, $form->{"qty_$i"});
if ($rows > 1) {
$form->{"marge_price_factor_$i"} = $form->{item_list}->[0]->{price_factor};
$form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"});
+ $form->{"lastcost_$i"} = $form->format_amount(\%myconfig, $form->{"lastcost_$i"});
$form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"});
}
'donumber' => { 'text' => $locale->text('Delivery Order'), },
'ordnumber' => { 'text' => $locale->text('Order'), },
'name' => { 'text' => $form->{vc} eq 'customer' ? $locale->text('Customer') : $locale->text('Vendor'), },
- 'employee' => { 'text' => $locale->text('Salesperson'), },
+ 'employee' => { 'text' => $locale->text('Employee'), },
'shipvia' => { 'text' => $locale->text('Ship via'), },
'globalprojectnumber' => { 'text' => $locale->text('Project Number'), },
'transaction_description' => { 'text' => $locale->text('Transaction description'), },
}
$form->{id} = 0 if $form->{saveasnew};
-
+ # best case fix für bug 1079. Einkaufsrabatt wird nicht richtig
+ # aus Lieferantenauftrag -> Lieferschein -> Rechnung übernommen
+ # Tritt nur auf, wenn man direkt über Lieferschein -> speichern ->
+ # Workflow Rechnung geht (beim Aufruf über edit() i.O.)
+ # Gut. DO-save() speichert den Discount im DB-Format 0.12 für
+ # 12%, die Konvertierung wird leider in $form gemacht und daher
+ # wird die Maske mit dem falschen Rabatt wieder aufgebaut.
+ # Wie immer: backup_vars verwenden um nichts anderes kaputt zu
+ # machen. jan 03.03.2010
+ # nicht mehr notwendig da für bug 1284 der backend aufruf entsprechend
+ # geändert wurde
DO->save();
-
# saving the history
if(!exists $form->{addition}) {
$form->{snumbers} = qq|donumber_| . $form->{donumber};
}
for my $i (1 .. $form->{rowcount}) {
- map { $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"}) if $form->{"${_}_${i}"} } qw(ship qty sellprice listprice basefactor);
+ # für bug 1284
+ if ($form->{discount}){ # Falls wir einen Kundenrabatt haben
+ # und keinen anderen discount wert an $i ...
+ $form->{"discount_$i"} ||= $form->{discount}*100; # ... nehmen wir den kundenrabatt
+ }
+ map { $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"}) if $form->{"${_}_${i}"} } qw(ship qty sellprice listprice lastcost basefactor);
}
$form->{type} = "invoice";
$form->{"deliverydate_$i"} = $form->{"reqdate_$i"}
unless $form->{"deliverydate_$i"};
+
$form->{"sellprice_$i"} =
$form->format_amount(\%myconfig, $form->{"sellprice_$i"},
$decimalplaces);
+ $form->{"lastcost_$i"} =
+ $form->format_amount(\%myconfig, $form->{"lastcost_$i"},
+ $decimalplaces);
+
(my $dec_qty) = ($form->{"qty_$i"} =~ /\.(\d+)/);
$dec_qty = length $dec_qty;
$form->{"qty_$i"} =
$form->{closed} = 0;
$form->{delivered} = 0;
map { delete $form->{$_} } qw(printed emailed queued);
+ delete @{ $form }{ grep { m/^stock_(?:in|out)_\d+/ } keys %{ $form } };
# Let Lx-Office assign a new order number if the user hasn't changed the
# previous one. If it has been changed manually then use it as-is.
foreach my $i (1..$form->{rowcount}) {
$form->{"qty_$i"} = $form->parse_amount(\%myconfig, $form->{"qty_$i"});
- push @{ $stock_info }, { map { $_ => $form->{"${_}_${i}"} } qw(warehouse_id bin_id chargenumber qty unit) };
+ push @{ $stock_info }, { map { $_ => $form->{"${_}_${i}"} } qw(warehouse_id bin_id chargenumber bestbefore qty unit) };
}
display_stock_in_form($stock_info);
my %myconfig = %main::myconfig;
my $locale = $main::locale;
+ $form->{jsscript} = 1;
+
$form->{title} = $locale->text('Stock');
my $part_info = IC->get_basic_part_info('id' => $form->{parts_id});
next if ($form->{"qty_$i"} <= 0);
- push @{ $stock_info }, { map { $_ => $form->{"${_}_${i}"} } qw(warehouse_id bin_id chargenumber qty unit) };
+ push @{ $stock_info }, { map { $_ => $form->{"${_}_${i}"} } qw(warehouse_id bin_id chargenumber bestbefore qty unit) };
}
$form->{stock} = YAML::Dump($stock_info);
foreach my $sinfo (@{ $stock_info }) {
next if (($row->{bin_id} != $sinfo->{bin_id}) ||
($row->{warehouse_id} != $sinfo->{warehouse_id}) ||
- ($row->{chargenumber} ne $sinfo->{chargenumber}));
+ ($row->{chargenumber} ne $sinfo->{chargenumber}) ||
+ ($row->{bestbefore} ne $sinfo->{bestbefore}));
map { $row->{"stock_$_"} = $sinfo->{$_} } qw(qty unit error);
}
'warehouse_id' => $form->{"warehouse_id_$i"},
'bin_id' => $form->{"bin_id_$i"},
'chargenumber' => $form->{"chargenumber_$i"},
+ 'bestbefore' => $form->{"bestbefore_$i"},
'qty' => $form->{"qty_$i"},
'unit' => $form->{"unit_$i"},
'row' => $i,
my $do_base_qty = $form->parse_amount(\%myconfig, $form->{"qty_$i"}) * $units->{$form->{"unit_$i"}}->{factor} / $base_unit_factor;
- if ($do_base_qty != $row_sum_base_qty) {
- push @{ $form->{ERRORS} }, $locale->text('Error in position #1: You must either assign no stock at all or the full quantity of #2 #3.',
- $i, $form->{"qty_$i"}, $form->{"unit_$i"});
- }
+# if ($do_base_qty != $row_sum_base_qty) {
+# push @{ $form->{ERRORS} }, $locale->text('Error in position #1: You must either assign no stock at all or the full quantity of #2 #3.',
+# $i, $form->{"qty_$i"}, $form->{"unit_$i"});
+# }
}
if (@{ $form->{ERRORS} }) {
$request->{parts_id} = $form->{"id_$i"};
$request->{base_qty} = $request->{qty} * $units->{$request->{unit}}->{factor} / $base_unit_factor;
- my $map_key = join '--', ($form->{"id_$i"}, @{$request}{qw(warehouse_id bin_id chargenumber)});
+ my $map_key = join '--', ($form->{"id_$i"}, @{$request}{qw(warehouse_id bin_id chargenumber bestbefore)});
$request_map{$map_key} ||= $request;
$request_map{$map_key}->{sum_base_qty} ||= 0;
my $do_base_qty = $form->parse_amount(\%myconfig, $form->{"qty_$i"}) * $units->{$form->{"unit_$i"}}->{factor} / $base_unit_factor;
- if ($do_base_qty != $row_sum_base_qty) {
- push @{ $form->{ERRORS} }, $locale->text('Error in position #1: You must either assign no transfer at all or the full quantity of #2 #3.',
- $i, $form->{"qty_$i"}, $form->{"unit_$i"});
- }
+# if ($do_base_qty != $row_sum_base_qty) {
+# push @{ $form->{ERRORS} }, $locale->text('Error in position #1: You must either assign no transfer at all or the full quantity of #2 #3.',
+# $i, $form->{"qty_$i"}, $form->{"unit_$i"});
+# }
}
if (%request_map) {
my @contents = DO->get_item_availability('parts_id' => \@part_ids);
foreach my $inv (@contents) {
- my $map_key = join '--', @{$inv}{qw(parts_id warehouse_id bin_id chargenumber)};
+ my $map_key = join '--', @{$inv}{qw(parts_id warehouse_id bin_id chargenumber bestbefore)};
next unless ($request_map{$map_key});
my $pinfo = $part_info_map{$request->{parts_id}};
my $binfo = $bin_info_map{$request->{bin_id}};
- push @{ $form->{ERRORS} }, $locale->text("There is not enough available of '#1' at warehouse '#2', bin '#3', #4, for the transfer of #5.",
- $pinfo->{description}, $binfo->{warehouse_description}, $binfo->{bin_description},
- $request->{chargenumber} ? $locale->text('chargenumber #1', $request->{chargenumber}) : $locale->text('no chargenumber'),
- $form->format_amount_units('amount' => $request->{sum_base_qty},
- 'part_unit' => $pinfo->{unit},
- 'conv_units' => 'convertible_not_smaller'));
+ if ($main::show_best_before) {
+ push @{ $form->{ERRORS} }, $locale->text("There is not enough available of '#1' at warehouse '#2', bin '#3', #4, #5, for the transfer of #6.",
+ $pinfo->{description},
+ $binfo->{warehouse_description},
+ $binfo->{bin_description},
+ $request->{chargenumber} ? $locale->text('chargenumber #1', $request->{chargenumber}) : $locale->text('no chargenumber'),
+ $request->{bestbefore} ? $locale->text('bestbefore #1', $request->{bestbefore}) : $locale->text('no bestbefore'),
+ $form->format_amount_units('amount' => $request->{sum_base_qty},
+ 'part_unit' => $pinfo->{unit},
+ 'conv_units' => 'convertible_not_smaller'));
+ } else {
+ push @{ $form->{ERRORS} }, $locale->text("There is not enough available of '#1' at warehouse '#2', bin '#3', #4, for the transfer of #5.",
+ $pinfo->{description},
+ $binfo->{warehouse_description},
+ $binfo->{bin_description},
+ $request->{chargenumber} ? $locale->text('chargenumber #1', $request->{chargenumber}) : $locale->text('no chargenumber'),
+ $form->format_amount_units('amount' => $request->{sum_base_qty},
+ 'part_unit' => $pinfo->{unit},
+ 'conv_units' => 'convertible_not_smaller'));
+ }
}
}