name_postfix => "_$i",
dbh => $dbh);
}
- # link oe items with invoice
- if ($form->{"converted_from_orderitems_id_$i"}) {
- RecordLinks->create_links('dbh' => $dbh,
- 'mode' => 'ids',
- 'from_table' => 'orderitems',
- 'from_ids' => $form->{"converted_from_orderitems_id_$i"},
- 'to_table' => 'invoice',
- 'to_id' => $form->{"invoice_id_$i"},
- );
- delete $form->{"converted_from_orderitems_id_$i"};
- }
- # link doi items with invoice
- if ($form->{"converted_from_delivery_order_items_id_$i"}) {
- RecordLinks->create_links('dbh' => $dbh,
- 'mode' => 'ids',
- 'from_table' => 'delivery_order_items',
- 'from_ids' => $form->{"converted_from_delivery_order_items_id_$i"},
- 'to_table' => 'invoice',
- 'to_id' => $form->{"invoice_id_$i"},
- );
- delete $form->{"converted_from_delivery_order_items_id_$i"};
+ # link previous items with invoice items
+ foreach (qw(delivery_order_items orderitems invoice)) {
+ if ($form->{"converted_from_${_}_id_$i"}) {
+ RecordLinks->create_links('dbh' => $dbh,
+ 'mode' => 'ids',
+ 'from_table' => $_,
+ 'from_ids' => $form->{"converted_from_${_}_id_$i"},
+ 'to_table' => 'invoice',
+ 'to_id' => $form->{"invoice_id_$i"},
+ );
+ delete $form->{"converted_from_${_}_id_$i"};
+ }
}
}
name_prefix => 'ic_',
name_postfix => "_$i",
dbh => $dbh);
- # link quotation items with order items and delete entry (just one link)
- if ($form->{"converted_from_quotation_orderitems_id_$i"}) {
- RecordLinks->create_links('dbh' => $dbh,
- 'mode' => 'ids',
- 'from_table' => 'orderitems',
- 'from_ids' => $form->{"converted_from_quotation_orderitems_id_$i"},
- 'to_table' => 'orderitems',
- 'to_id' => $orderitems_id,
- );
- delete $form->{"converted_from_quotation_orderitems_id_$i"};
+ # link previous items with orderitems
+ foreach (qw(quotation_orderitems orderitems invoice)) {
+ if ($form->{"converted_from_${_}_id_$i"}) {
+ my $table = $_;
+ $table = 'orderitems' if $table eq 'quotation_orderitems';
+ RecordLinks->create_links('dbh' => $dbh,
+ 'mode' => 'ids',
+ 'from_table' => $table,
+ 'from_ids' => $form->{"converted_from_${_}_id_$i"},
+ 'to_table' => 'orderitems',
+ 'to_id' => $orderitems_id,
+ );
+ delete $form->{"converted_from_${_}_id_$i"};
+ }
}
}
}
my @hidden_vars;
# add hidden ids for persistent (item|invoice)_ids and previous (converted_from*) ids
if ($is_quotation) {
- push @hidden_vars, qw(orderitems_id);
+ push @hidden_vars, qw(orderitems_id converted_from_orderitems_id);
}
if ($is_s_p_order) {
- push @hidden_vars, qw(orderitems_id converted_from_quotation_orderitems_id);
+ push @hidden_vars, qw(orderitems_id converted_from_quotation_orderitems_id converted_from_invoice_id);
}
if ($is_invoice) {
push @hidden_vars, qw(invoice_id converted_from_orderitems_id converted_from_delivery_order_items_id);
stock_out stock_in has_sernumber reqdate orderitems_id
active_price_source active_discount_source delivery_order_items_id
invoice_id converted_from_quotation_orderitems_id
- converted_from_orderitems_id converted_from_delivery_order_items_id);
+ converted_from_orderitems_id converted_from_delivery_order_items_id
+ converted_from_invoice_id);
my $ic_cvar_configs = CVar->get_configs(module => 'IC');
push @flds, map { "ic_cvar_$_->{name}" } @{ $ic_cvar_configs };
map({ $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"})
if ($form->{"${_}_${i}"}) }
qw(ship qty sellprice listprice basefactor discount));
+ $form->{"converted_from_invoice_id_$i"} = delete $form->{"invoice_id_$i"};
}
&prepare_order;
# we are coming from *_order and convert to quotation
# it seems that quotation is only called if we have a existing order
if ($form->{type} =~ /(sales|purchase)_order/) {
- delete $form->{"orderitems_id_$_"} for 1 .. $form->{"rowcount"};
+ $form->{"converted_from_orderitems_id_$_"} = delete $form->{"orderitems_id_$_"} for 1 .. $form->{"rowcount"};
}
if ($form->{second_run}) {
$form->{print_and_post} = 0;
$form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"}) if $form->{"${_}_${i}"};
}
}
- # set new persistent ids for credit note
- delete $form->{"invoice_id_$_"} for 1 .. $form->{"rowcount"};
+ # set new persistent ids for credit note and link previous invoice id
+ $form->{"converted_from_invoice_id_$_"} = delete $form->{"invoice_id_$_"} for 1 .. $form->{"rowcount"};
my $currency = $form->{currency};
&invoice_links;
# reset
map { delete $form->{$_} } qw(id subject message cc bcc printed emailed queued customer vendor creditlimit creditremaining discount tradediscount oldinvtotal delivered ordnumber);
- $form->{"converted_from_quotation_orderitems_id_$_"} = $form->{"orderitems_id_$_"} for 1 .. $form->{"rowcount"}; # always reset orderitems_id
- delete $form->{"orderitems_id_$_"} for 1 .. $form->{"rowcount"}; # always reset orderitems_id
+ # this converted variable is also used for sales_order to purchase order and vice versa
+ $form->{"converted_from_quotation_orderitems_id_$_"} = delete $form->{"orderitems_id_$_"} for 1 .. $form->{"rowcount"};
# if purchase_order was generated from sales_order, use lastcost_$i as sellprice_$i
# also reset discounts