X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FCustomerVendor.pm;h=325fa58bb5efc8fa4322b651120c88bc188a8294;hb=6b92d724ba32af43410d9563e77de6bb1013a5f1;hp=7685e8b5a1bf4a61d0fd63361a8f812c65d146c3;hpb=d0a22ba8bf8e2016ab378a27dd149fdd97ecc057;p=kivitendo-erp.git diff --git a/SL/Controller/CustomerVendor.pm b/SL/Controller/CustomerVendor.pm index 7685e8b5a..325fa58bb 100644 --- a/SL/Controller/CustomerVendor.pm +++ b/SL/Controller/CustomerVendor.pm @@ -3,6 +3,8 @@ package SL::Controller::CustomerVendor; use strict; use parent qw(SL::Controller::Base); +use List::MoreUtils qw(any); + use SL::JSON; use SL::DBUtils; use SL::Helper::Flash; @@ -145,12 +147,12 @@ sub _save { title => ($self->is_vendor() ? t8('Edit Vendor') : t8('Edit Customer')), %{$self->{template_args}} ); - ::end_of_request(); + $::dispatcher->end_request; } my $db = $self->{cv}->db; - $db->do_transaction(sub { + $db->with_transaction(sub { my $cvs_by_nr; if ( $self->is_vendor() ) { if ( $self->{cv}->vendornumber ) { @@ -197,8 +199,8 @@ sub _save { } $self->{shipto}->trans_id($self->{cv}->id); - if( $self->{shipto}->shiptoname ne '' ) { - $self->{shipto}->save(); + if(any { $self->{shipto}->$_ ne '' } qw(shiptoname shiptodepartment_1 shiptodepartment_2 shiptostreet shiptozipcode shiptocity shiptocountry shiptogln shiptocontact shiptophone shiptofax shiptoemail)) { + $self->{shipto}->save(cascade => 1); } my $snumbers = $self->is_vendor() ? 'vendornumber_'. $self->{cv}->vendornumber : 'customernumber_'. $self->{cv}->customernumber; @@ -221,6 +223,8 @@ sub _save { $note->delete(cascade => 'delete'); } } + + 1; }) || die($db->error); } @@ -259,7 +263,8 @@ sub action_save_and_close { sub _transaction { my ($self, $script) = @_; - $::auth->assert('general_ledger | invoice_edit | vendor_invoice_edit | ' . + $::auth->assert('gl_transactions | ap_transactions | ar_transactions'. + '| invoice_edit | vendor_invoice_edit | ' . ' request_quotation_edit | sales_quotation_edit | sales_order_edit | purchase_order_edit'); $self->_save(); @@ -283,7 +288,7 @@ sub _transaction { sub action_save_and_ar_transaction { my ($self) = @_; - $main::auth->assert('general_ledger'); + $main::auth->assert('ar_transactions'); $self->_transaction('ar.pl'); } @@ -291,7 +296,7 @@ sub action_save_and_ar_transaction { sub action_save_and_ap_transaction { my ($self) = @_; - $main::auth->assert('general_ledger'); + $main::auth->assert('ap_transactions'); $self->_transaction('ap.pl'); } @@ -349,7 +354,7 @@ sub action_delete { $self->action_edit(); } else { - $db->do_transaction(sub { + $db->with_transaction(sub { $self->{cv}->delete(cascade => 1); my $snumbers = $self->is_vendor() ? 'vendornumber_'. $self->{cv}->vendornumber : 'customernumber_'. $self->{cv}->customernumber; @@ -377,7 +382,7 @@ sub action_delete_contact { SL::Helper::Flash::flash('error', $::locale->text('No contact selected to delete')); } else { - $db->do_transaction(sub { + $db->with_transaction(sub { if ( $self->{contact}->used ) { $self->{contact}->detach(); $self->{contact}->save(); @@ -386,6 +391,8 @@ sub action_delete_contact { $self->{contact}->delete(cascade => 1); SL::Helper::Flash::flash('info', $::locale->text('Contact deleted.')); } + + 1; }) || die($db->error); $self->{contact} = $self->_new_contact_object; @@ -403,7 +410,7 @@ sub action_delete_shipto { SL::Helper::Flash::flash('error', $::locale->text('No shipto selected to delete')); } else { - $db->do_transaction(sub { + $db->with_transaction(sub { if ( $self->{shipto}->used ) { $self->{shipto}->detach(); $self->{shipto}->save(cascade => 1); @@ -412,6 +419,8 @@ sub action_delete_shipto { $self->{shipto}->delete(cascade => 1); SL::Helper::Flash::flash('info', $::locale->text('Shipto deleted.')); } + + 1; }) || die($db->error); $self->{shipto} = SL::DB::Shipto->new(); @@ -529,7 +538,8 @@ sub action_get_delivery { sub action_ajaj_get_shipto { my ($self) = @_; - my $data = { + my $data = {}; + $data->{shipto} = { map( { my $name = 'shipto'. $_; @@ -539,6 +549,8 @@ sub action_ajaj_get_shipto { ) }; + $data->{shipto_cvars} = $self->_prepare_cvar_configs_for_ajaj($self->{shipto}->cvars_by_config); + $self->render(\SL::JSON::to_json($data), { type => 'json', process => 0 }); } @@ -755,6 +767,7 @@ sub _instantiate_args { $self->_copy_form_to_cvars(target => $self->{cv}, source => $::form->{cv_cvars}); $self->_copy_form_to_cvars(target => $self->{contact}, source => $::form->{contact_cvars}); + $self->_copy_form_to_cvars(target => $self->{shipto}, source => $::form->{shipto_cvars}); } sub _load_customer_vendor { @@ -892,7 +905,9 @@ sub _pre_render { $self->{all_delivery_terms} = SL::DB::Manager::DeliveryTerm->get_all(); - $self->{all_pricegroups} = SL::DB::Manager::Pricegroup->get_all(); + if ($self->{cv}->is_customer) { + $self->{all_pricegroups} = SL::DB::Manager::Pricegroup->get_all_sorted(query => [ or => [ id => $self->{cv}->pricegroup_id, obsolete => 0 ] ]); + } $query = 'SELECT DISTINCT(cp_abteilung) AS department