Revision 376cac9b
Von Bernd Bleßmann vor fast 2 Jahren hinzugefügt
SL/Controller/DeliveryOrder.pm | ||
---|---|---|
use SL::DB::Helper::TypeDataProxy;
|
||
use SL::DB::DeliveryOrder;
|
||
use SL::DB::DeliveryOrder::TypeData qw(:types);
|
||
use SL::DB::Manager::DeliveryOrderItem;
|
||
use SL::DB::DeliveryOrderItemsStock;
|
||
use SL::Model::Record;
|
||
|
||
... | ... | |
sub action_save {
|
||
my ($self) = @_;
|
||
|
||
my $errors = $self->save();
|
||
|
||
if (scalar @{ $errors }) {
|
||
$self->js->flash('error', $_) foreach @{ $errors };
|
||
return $self->js->render();
|
||
}
|
||
$self->save();
|
||
|
||
flash_later('info', $self->type_data->text("saved"));
|
||
|
||
... | ... | |
my ($self) = @_;
|
||
|
||
if ( !$self->order->delivered ) {
|
||
my $errors = $self->save();
|
||
|
||
if (scalar @{ $errors }) {
|
||
$self->js->flash('error', $_) foreach @{ $errors };
|
||
return $self->js->render();
|
||
}
|
||
|
||
$self->save();
|
||
$self->js_reset_order_and_item_ids_after_save;
|
||
}
|
||
|
||
... | ... | |
my ($self) = @_;
|
||
|
||
if ( !$self->order->delivered ) {
|
||
my $errors = $self->save();
|
||
if (scalar @{ $errors }) {
|
||
$self->js->flash('error', $_) foreach @{ $errors };
|
||
return $self->js->render();
|
||
}
|
||
|
||
$self->save();
|
||
$self->js_reset_order_and_item_ids_after_save;
|
||
}
|
||
|
||
... | ... | |
my ($self) = @_;
|
||
|
||
if ( !$self->order->delivered ) {
|
||
my $errors = $self->save();
|
||
|
||
if (scalar @{ $errors }) {
|
||
$self->js->flash('error', $_) foreach @{ $errors };
|
||
return $self->js->render();
|
||
}
|
||
$self->save();
|
||
}
|
||
|
||
my $cv_method = $self->cv;
|
||
... | ... | |
my ($self) = @_;
|
||
|
||
if ( !$self->order->delivered ) {
|
||
my $errors = $self->save();
|
||
|
||
if (scalar @{ $errors }) {
|
||
$self->js->run('kivi.DeliveryOrder.close_email_dialog');
|
||
$self->js->flash('error', $_) foreach @{ $errors };
|
||
return $self->js->render();
|
||
}
|
||
$self->save();
|
||
$self->js_reset_order_and_item_ids_after_save;
|
||
}
|
||
|
||
|
||
my $email_form = delete $::form->{email_form};
|
||
my %field_names = (to => 'email');
|
||
|
||
... | ... | |
sub save {
|
||
my ($self) = @_;
|
||
|
||
my $errors = [];
|
||
my $db = $self->order->db;
|
||
|
||
# link records
|
||
if ($::form->{converted_from_oe_id}) {
|
||
my @converted_from_oe_ids = split ' ', $::form->{converted_from_oe_id};
|
||
... | ... | |
);
|
||
}
|
||
|
||
$db->with_transaction(sub {
|
||
my $validity_token;
|
||
if (!$self->order->id) {
|
||
$validity_token = SL::DB::Manager::ValidityToken->fetch_valid_token(
|
||
scope => SL::DB::ValidityToken::SCOPE_DELIVERY_ORDER_SAVE(),
|
||
token => $::form->{form_validity_token},
|
||
);
|
||
|
||
die $::locale->text('The form is not valid anymore.') if !$validity_token;
|
||
}
|
||
|
||
# delete custom shipto if it is to be deleted or if it is empty
|
||
if ($self->order->custom_shipto && ($self->is_custom_shipto_to_delete || $self->order->custom_shipto->is_empty)) {
|
||
$self->order->custom_shipto->delete if $self->order->custom_shipto->shipto_id;
|
||
$self->order->custom_shipto(undef);
|
||
}
|
||
|
||
SL::DB::DeliveryOrderItem->new(id => $_)->delete for @{$self->item_ids_to_delete || []};
|
||
$self->order->save(cascade => 1);
|
||
my $items_to_delete = scalar @{ $self->item_ids_to_delete || [] }
|
||
? SL::DB::Manager::DeliveryOrderItem->get_all(where => [id => $self->item_ids_to_delete])
|
||
: undef;
|
||
|
||
$self->save_history('SAVED');
|
||
|
||
$validity_token->delete if $validity_token;
|
||
delete $::form->{form_validity_token};
|
||
|
||
1;
|
||
}) || push(@{$errors}, $db->error);
|
||
SL::Model::Record->save($self->order,
|
||
with_validity_token => { scope => SL::DB::ValidityToken::SCOPE_DELIVERY_ORDER_SAVE(), token => $::form->{form_validity_token} },
|
||
delete_custom_shipto => $self->is_custom_shipto_to_delete || $self->order->custom_shipto->is_empty,
|
||
items_to_delete => $items_to_delete,
|
||
);
|
||
|
||
return $errors;
|
||
delete $::form->{form_validity_token};
|
||
}
|
||
|
||
sub workflow_sales_or_request_for_quotation {
|
||
my ($self) = @_;
|
||
|
||
# always save
|
||
my $errors = $self->save();
|
||
|
||
if (scalar @{ $errors }) {
|
||
$self->js->flash('error', $_) for @{ $errors };
|
||
return $self->js->render();
|
||
}
|
||
$self->save();
|
||
|
||
my $destination_type = $self->type_data->workflow("to_quotation_type");
|
||
|
||
... | ... | |
my ($self) = @_;
|
||
|
||
# always save
|
||
my $errors = $self->save();
|
||
|
||
if (scalar @{ $errors }) {
|
||
$self->js->flash('error', $_) foreach @{ $errors };
|
||
return $self->js->render();
|
||
}
|
||
$self->save();
|
||
|
||
my $destination_type = $self->type_data->workflow("to_order_type");
|
||
|
||
... | ... | |
sub save_and_redirect_to {
|
||
my ($self, %params) = @_;
|
||
|
||
my $errors = $self->save();
|
||
|
||
if (scalar @{ $errors }) {
|
||
$self->js->flash('error', $_) foreach @{ $errors };
|
||
return $self->js->render();
|
||
}
|
||
$self->save();
|
||
|
||
flash_later('info', $self->type_data->text("saved"));
|
||
|
Auch abrufbar als: Unified diff
DeliveryOrder-Controller: Model::Record->save verwenden