Revision 62efd9a8
Von Bernd Bleßmann vor etwa 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