X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fdo.pl;h=7a51a6a480be4c4dfc12ea636e8c49a953abbbf8;hb=71450c6ad8b6d495f605ab2d9db911122e6e114a;hp=faaea12fabc54aeef2ea70c196d1af257efeb013;hpb=c7b5d49e014471b65e1e1c5a466f11e0a14079fc;p=kivitendo-erp.git diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl index faaea12fa..7a51a6a48 100644 --- a/bin/mozilla/do.pl +++ b/bin/mozilla/do.pl @@ -36,7 +36,9 @@ use List::MoreUtils qw(uniq); 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; @@ -56,7 +58,10 @@ use strict; # 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 { @@ -98,7 +103,7 @@ sub add { $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(); @@ -168,6 +173,7 @@ sub order_links { check_do_access(); + my %params = @_; my $form = $main::form; my %myconfig = %main::myconfig; @@ -186,6 +192,7 @@ sub order_links { } 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)); @@ -548,8 +555,12 @@ sub update_delivery_order { 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"}; @@ -881,7 +892,9 @@ sub orders { '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); @@ -935,8 +948,12 @@ sub save { 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;