my $row = $curr_row;
if ($myconfig{item_multiselect}) {
- foreach (grep(/^select_qty_/, keys(%{ $form }))) {
+ my %multi_items;
+ for (keys %$form) {
next unless $form->{$_};
- $_ =~ /^select_qty_(\d+)/;
- $form->{"id_${row}"} = $1;
- $form->{"qty_${row}"} = $form->{$_};
+ next unless /^select_qty_(\d+)/;
+ $multi_items{"id_${row}"} = $1;
+ $multi_items{"qty_${row}"} = $form->{$_};
$row++;
}
+ $form->{$_} = $multi_items{$_} for keys %multi_items;
} else {
$form->{"id_${row}"} = delete($form->{select_item_id}) || croak 'Missing item selection ID';
$row++;
$form->{old_employee_id} = $form->{employee_id};
$form->{old_salesman_id} = $form->{salesman_id};
- delete $form->{$_} foreach (qw(printed emailed queued));
+ delete $form->{$_} foreach (qw(id printed emailed queued));
# When creating a new sales order from a saved sales invoice, reset id,
# ordnumber, transdate and deliverydate as we are creating a new order. This
if ($form->{second_run}) {
$form->{print_and_post} = 0;
}
- delete $form->{$_} foreach (qw(printed emailed queued));
+ delete $form->{$_} foreach (qw(id printed emailed queued));
my $buysell;
if ($form->{script} eq 'ir.pl' || $form->{type} eq 'purchase_order') {
$class = 'SL::DB::' . $class;
+ my %translated_methods = (
+ 'SL::DB::OrderItem' => {
+ id => 'parts_id',
+ orderitems_id => 'id',
+ },
+ 'SL::DB::DeliveryOrderItem' => {
+ id => 'parts_id',
+ delivery_order_items_id => 'id',
+ },
+ 'SL::DB::InvoiceItem' => {
+ id => 'parts_id',
+ invoice_id => 'id',
+ },
+ );
+
eval "require $class";
my $obj = $::form->{"orderitems_id_$row"}
? $class->meta->convention_manager->auto_manager_class_name->find_by(id => $::form->{"orderitems_id_$row"})
: $class->new;
- for my $method (apply { s/_$row$// } grep { /_$row$/ } keys %$::form) {
+ for my $key (grep { /_$row$/ } keys %$::form) {
+ my $method = $key;
+ $method =~ s/_$row$//;
+ $method = $translated_methods{$class}{$method} // $method;
+ my $value = $::form->{$key};
if ($obj->meta->column($method)) {
if ($obj->meta->column($method)->isa('Rose::DB::Object::Metadata::Column::Date')) {
- $obj->${\"$method\_as_date"}($::form->{"$method\_$row"});
+ $obj->${\"$method\_as_date"}($value);
} elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::(?:Numeric|Float|DoublePrecsion)$/) {
- $obj->${\"$method\_as_number"}($::form->{"$method\_$row"});
+ $obj->${\"$method\_as_number"}($value);
} elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::Boolean$/) {
- $obj->$method(!!$::form->{$method});
+ $obj->$method(!!$value);
} else {
- $obj->$method($::form->{"$method\_$row"});
+ $obj->$method($value);
}
} else {
- $obj->{__additional_form_attributes}{$method} = $::form->{"$method\_$row"};
+ $obj->{__additional_form_attributes}{$method} = $value;
}
}