my $form = $::form;
my $has_active_periodic_invoice;
- if ($params{obj}) {
+ if ($params{oe_obj}) {
$has_active_periodic_invoice =
- $params{obj}->is_type('sales_order')
- && $params{obj}->periodic_invoices_config
- && $params{obj}->periodic_invoices_config->active
- && ( !$params{obj}->periodic_invoices_config->end_date
- || ($params{obj}->periodic_invoices_config->end_date > DateTime->today_local))
- && $params{obj}->periodic_invoices_config->get_previous_billed_period_start_date;
+ $params{oe_obj}->is_type('sales_order')
+ && $params{oe_obj}->periodic_invoices_config
+ && $params{oe_obj}->periodic_invoices_config->active
+ && ( !$params{oe_obj}->periodic_invoices_config->end_date
+ || ($params{oe_obj}->periodic_invoices_config->end_date > DateTime->today_local))
+ && $params{oe_obj}->periodic_invoices_config->get_previous_billed_period_start_date;
}
my $allow_invoice = $params{is_req_quo}
is_pur_ord => scalar($form->{type} =~ /purchase_order$/),
);
- setup_oe_action_bar(%type_check_vars);
+ setup_oe_action_bar(
+ %type_check_vars,
+ oe_obj => $TMPL_VAR->{oe_obj},
+ vc_obj => $TMPL_VAR->{vc_obj},
+ );
$form->header;
if ($form->{CFDD_shipto} && $form->{CFDD_shipto_id} ) {
my @columns = (
"transdate", "reqdate",
- "id", $ordnumber, "edit_exp",
+ "id", $ordnumber,
"cusordnumber", "customernumber",
"name", "netamount",
"tax", "amount",
$form->{l_open} = $form->{l_closed} = "Y" if ($form->{open} && $form->{closed});
$form->{l_delivered} = "Y" if ($form->{delivered} && $form->{notdelivered});
$form->{l_periodic_invoices} = "Y" if ($form->{periodic_invoices_active} && $form->{periodic_invoices_inactive});
- $form->{l_edit_exp} = "Y" if $::instance_conf->get_feature_experimental && (any { $form->{type} eq $_ } qw(sales_order purchase_order));
map { $form->{"l_${_}"} = 'Y' } qw(order_probability expected_billing_date expected_netamount) if $form->{l_order_probability_expected_billing_date};
my $attachment_basename;
'expected_billing_date' => { 'text' => $locale->text('Exp. bill. date'), },
'expected_netamount' => { 'text' => $locale->text('Exp. netamount'), },
'payment_terms' => { 'text' => $locale->text('Payment Terms'), },
- 'edit_exp' => { 'text' => $locale->text('Edit (experimental)'), },
%column_defs_cvars,
);
my $idx = 1;
- my $edit_url = build_std_url('action=edit', 'type', 'vc');
+ my $edit_url = ($::instance_conf->get_feature_experimental)
+ ? build_std_url('script=controller.pl', 'action=Order/edit', 'type')
+ : build_std_url('action=edit', 'type', 'vc');
foreach my $oe (@{ $form->{OE} }) {
map { $oe->{$_} *= $oe->{exchangerate} } @subtotal_columns;
foreach my $column (@columns) {
next if ($column eq 'ids');
- next if ($column eq 'edit_exp');
$row->{$column} = {
'data' => $oe->{$column},
'align' => $column_alignment{$column},
$row->{$ordnumber}->{link} = $edit_url . "&id=" . E($oe->{id}) . "&callback=${callback}";
- $row->{edit_exp}->{data} = $oe->{ordnumber};
- $row->{edit_exp}->{link} = build_std_url('script=controller.pl', 'action=Order/edit', "type=$form->{type}", 'id=' . E($oe->{id}));
-
my $row_set = [ $row ];
if (($form->{l_subtotal} eq 'Y')
my $order = SL::DB::Order->new(id => $::form->{id})->load;
$order->flatten_to_form($::form, format_amounts => 1);
+ # hack: add partsgroup for first row if it does not exists,
+ # because _remove_billed_or_delivered_rows and _remove_full_delivered_rows
+ # determine fields to handled by existing fields for the first row. If partsgroup
+ # is missing there, for deleted rows the partsgroup_field is not emptied and in
+ # update_delivery_order it will not considered an empty row ...
+ $::form->{partsgroup_1} = '' if !exists $::form->{partsgroup_1};
+
# fake last empty row
$::form->{rowcount}++;
+ _update_ship();
delivery_order();
}
my $order = SL::DB::Order->new(id => $::form->{id})->load;
$order->flatten_to_form($::form, format_amounts => 1);
+ # hack: add partsgroup for first row if it does not exists,
+ # because _remove_billed_or_delivered_rows and _remove_full_delivered_rows
+ # determine fields to handled by existing fields for the first row. If partsgroup
+ # is missing there, for deleted rows the partsgroup_field is not emptied and in
+ # update_delivery_order it will not considered an empty row ...
+ $::form->{partsgroup_1} = '' if !exists $::form->{partsgroup_1};
+
# fake last empty row
$::form->{rowcount}++;
+ _update_ship();
invoice();
}
my $content;
if (@{ $quotations }) {
- my $edit_url = build_std_url('script=oe.pl', 'action=edit');
+ my $edit_url = ($::instance_conf->get_feature_experimental)
+ ? build_std_url('script=controller.pl', 'action=Order/edit')
+ : build_std_url('script=oe.pl', 'action=edit');
$content = $form->parse_html_template('oe/report_for_todo_list', { 'QUOTATIONS' => $quotations,
'edit_url' => $edit_url });
}
$::form->header(no_layout => 1);
- print $::form->parse_html_template('oe/edit_periodic_invoices_config', $config);
+ print $::form->parse_html_template('oe/edit_periodic_invoices_config', {config => $config});
$::lxdebug->leave_sub();
}