X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/b39653f82441d0db075db54950752f6efa267e1c..c5dccb51a821e57f3888370bea51dab9f82c0639:/SL/Controller/Order.pm diff --git a/SL/Controller/Order.pm b/SL/Controller/Order.pm index 55f3f747f..52577bd1b 100644 --- a/SL/Controller/Order.pm +++ b/SL/Controller/Order.pm @@ -58,9 +58,11 @@ sub action_add { my ($self) = @_; $self->order->transdate(DateTime->now_local()); - my $extra_days = $self->type eq sales_quotation_type() ? $::instance_conf->get_reqdate_interval : 1; + my $extra_days = $self->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval : + $self->{type} eq 'sales_order' ? $::instance_conf->get_delivery_date_interval : 1; $self->order->reqdate(DateTime->today_local->next_workday(extra_days => $extra_days)) if !$self->order->reqdate; + $self->pre_render(); $self->render( 'order/form', @@ -210,7 +212,8 @@ sub action_save_as_new { # Set new reqdate unless changed if ($order->reqdate == $saved_order->reqdate) { - my $extra_days = $self->type eq sales_quotation_type() ? $::instance_conf->get_reqdate_interval : 1; + my $extra_days = $self->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval : + $self->{type} eq 'sales_order' ? $::instance_conf->get_delivery_date_interval : 1; $new_attrs{reqdate} = DateTime->today_local->next_workday(extra_days => $extra_days); } else { $new_attrs{reqdate} = $order->reqdate; @@ -488,7 +491,7 @@ sub action_show_periodic_invoices_config_dialog { $config ||= SL::DB::Manager::PeriodicInvoicesConfig->find_by(oe_id => $::form->{id}) if $::form->{id}; $config ||= SL::DB::PeriodicInvoicesConfig->new(periodicity => 'm', order_value_periodicity => 'p', # = same as periodicity - start_date_as_date => $::form->{transdate} || $::form->current_date, + start_date_as_date => $::form->{transdate_as_date} || $::form->current_date, extend_automatically_by => 12, active => 1, email_subject => GenericTranslations->get( @@ -509,6 +512,7 @@ sub action_show_periodic_invoices_config_dialog { if ($::form->{customer_id}) { $::form->{ALL_CONTACTS} = SL::DB::Manager::Contact->get_all_sorted(where => [ cp_cv_id => $::form->{customer_id} ]); + $::form->{email_recipient_invoice_address} = SL::DB::Manager::Customer->find_by(id => $::form->{customer_id})->invoice_mail; } $self->render('oe/edit_periodic_invoices_config', { layout => 0 }, @@ -977,8 +981,8 @@ sub js_load_second_row { my $row_as_html = $self->p->render('order/tabs/_second_row', ITEM => $item, TYPE => $self->type); $self->js - ->html('.row_entry:has(#item_' . $item_id . ') [name = "second_row"]', $row_as_html) - ->data('.row_entry:has(#item_' . $item_id . ') [name = "second_row"]', 'loaded', 1); + ->html('#second_row_' . $item_id, $row_as_html) + ->data('#second_row_' . $item_id, 'loaded', 1); } sub js_redisplay_line_values { @@ -1204,7 +1208,7 @@ sub make_order { # be retrieved via items until the order is saved. Adding empty items to new # order here solves this problem. my $order; - $order = SL::DB::Manager::Order->find_by(id => $::form->{id}) if $::form->{id}; + $order = SL::DB::Order->new(id => $::form->{id})->load(with => [ 'orderitems', 'orderitems.part' ]) if $::form->{id}; $order ||= SL::DB::Order->new(orderitems => [], quotation => (any { $self->type eq $_ } (sales_quotation_type(), request_quotation_type()))); @@ -1463,6 +1467,14 @@ sub save { sub workflow_sales_or_purchase_order { my ($self) = @_; + # always save + my $errors = $self->save(); + + if (scalar @{ $errors }) { + $self->js->flash('error', $_) foreach @{ $errors }; + return $self->js->render(); + } + my $destination_type = $::form->{type} eq sales_quotation_type() ? sales_order_type() : $::form->{type} eq request_quotation_type() ? purchase_order_type() @@ -1591,13 +1603,13 @@ sub setup_edit_action_bar { t8('Workflow'), ], action => [ - t8('Sales Order'), + t8('Save and Sales Order'), submit => [ '#order_form', { action => "Order/sales_order" } ], only_if => (any { $self->type eq $_ } (sales_quotation_type(), purchase_order_type())), disabled => !$self->order->id ? t8('This object has not been saved yet.') : undef, ], action => [ - t8('Purchase Order'), + t8('Save and Purchase Order'), submit => [ '#order_form', { action => "Order/purchase_order" } ], only_if => (any { $self->type eq $_ } (sales_order_type(), request_quotation_type())), disabled => !$self->order->id ? t8('This object has not been saved yet.') : undef,