X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FCustomerVendor.pm;h=5404373f41049be43874e9536bc7c70205c6bc6a;hb=11195f5c6d51b13b73e901984a35d55a9fe4b36d;hp=fdccdc9d77b58a799fbfe87136c7f90c0b784be2;hpb=d699d5d945622b1cb7635bc528d9de95bdb81fb7;p=kivitendo-erp.git diff --git a/SL/Controller/CustomerVendor.pm b/SL/Controller/CustomerVendor.pm index fdccdc9d7..5404373f4 100644 --- a/SL/Controller/CustomerVendor.pm +++ b/SL/Controller/CustomerVendor.pm @@ -152,7 +152,7 @@ sub _save { 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 ) { @@ -223,6 +223,8 @@ sub _save { $note->delete(cascade => 'delete'); } } + + 1; }) || die($db->error); } @@ -261,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(); @@ -285,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'); } @@ -293,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'); } @@ -351,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; @@ -379,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(); @@ -388,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; @@ -405,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); @@ -414,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(); @@ -894,11 +901,14 @@ sub _pre_render { $self->{all_salesmen} = SL::DB::Manager::Employee->get_all(query => [ or => [ id => $self->{cv}->salesman_id, deleted => 0 ] ]); } - $self->{all_payment_terms} = SL::DB::Manager::PaymentTerm->get_all(); + $self->{all_payment_terms} = SL::DB::Manager::PaymentTerm->get_all_sorted(where => [ or => [ id => $self->{cv}->payment_id, + obsolete => 0 ] ]); $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