use List::Util qw(max sum);
use POSIX qw(strftime);
+use SL::Controller::DeliveryOrder;
use SL::DB::DeliveryOrder;
+use SL::DB::DeliveryOrder::TypeData qw(:types validate_type);
use SL::DO;
use SL::IR;
use SL::IS;
# end of main
sub check_do_access {
- $main::auth->assert($main::form->{type} . '_edit');
+ validate_type($::form->{type});
+
+ my $right = SL::DB::DeliveryOrder::TypeData::get($::form->{type}, "right");
+ $main::auth->assert($right);
}
sub set_headings {
$form->{show_details} = $::myconfig{show_form_details};
$form->{callback} = build_std_url('action=add', 'type', 'vc') unless ($form->{callback});
- order_links();
+ order_links(is_new => 1);
prepare_order();
display_form();
check_do_access();
+ my %params = @_;
my $form = $main::form;
my %myconfig = %main::myconfig;
} else {
IS->get_customer(\%myconfig, \%$form);
$form->{discount} = $form->{customer_discount};
+ $form->{billing_address_id} = $form->{default_billing_address_id} if $params{is_new};
}
$form->restore_vars(qw(payment_id language_id taxzone_id intnotes cp_id delivery_term_id));
if (($form->{"previous_${vc}_id"} || $form->{"${vc}_id"}) != $form->{"${vc}_id"}) {
$::form->{salesman_id} = SL::DB::Manager::Employee->current->id if exists $::form->{salesman_id};
- IS->get_customer(\%myconfig, $form) if $vc eq 'customer';
- IR->get_vendor(\%myconfig, $form) if $vc eq 'vendor';
+ if ($vc eq 'customer') {
+ IS->get_customer(\%myconfig, $form);
+ $::form->{billing_address_id} = $::form->{default_billing_address_id};
+ } else {
+ IR->get_vendor(\%myconfig, $form);
+ }
}
$form->{discount} = $form->{"$form->{vc}_discount"} if defined $form->{"$form->{vc}_discount"};
'align' => 'center',
};
- $row->{donumber}->{link} = $edit_url . "&id=" . E($dord->{id}) . "&callback=${callback}";
+ $row->{donumber}->{link} = SL::DB::DeliveryOrder::TypeData::get3($dord->{order_type}, "show_menu", "new_controller")
+ ? SL::Controller::DeliveryOrder->url_for(action => "edit", id => $dord->{id}, type => $dord->{order_type})
+ : $edit_url . "&id=" . E($dord->{id}) . "&callback=${callback}";
$row->{ordnumber}->{link} = $edit_order_url . "&id=" . E($dord->{oe_id}) . "&callback=${callback}" if $dord->{oe_id};
$report->add_data($row);
if (($form->{"previous_${vc}_id"} || $form->{"${vc}_id"}) != $form->{"${vc}_id"}) {
$::form->{salesman_id} = SL::DB::Manager::Employee->current->id if exists $::form->{salesman_id};
- IS->get_customer(\%myconfig, $form) if $vc eq 'customer';
- IR->get_vendor(\%myconfig, $form) if $vc eq 'vendor';
+ if ($vc eq 'customer') {
+ IS->get_customer(\%myconfig, $form);
+ $::form->{billing_address_id} = $::form->{default_billing_address_id};
+ } else {
+ IR->get_vendor(\%myconfig, $form);
+ }
update();
$::dispatcher->end_request;