Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 8eaf5ab5

Von Tamino Steinert vor etwa 2 Jahren hinzugefügt

  • ID 8eaf5ab5ad644497b36c231cceeda97049a0693c
  • Vorgänger 666d62d4
  • Nachfolger 932278ff

Model::Record: update_after_new implementiert

Unterschiede anzeigen:

SL/Controller/DeliveryOrder.pm
sub action_add {
my ($self) = @_;
$self->order->transdate(DateTime->now_local());
$self->type_data->set_reqdate_by_type;
$self->order(SL::Model::Record->update_after_new($self->order, $self->type));
$self->pre_render();
SL/Controller/Order.pm
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 :
$self->type eq sales_order_type() ? $::instance_conf->get_delivery_date_interval : 1;
if ( ($self->type eq sales_order_type() && $::instance_conf->get_deliverydate_on)
|| ($self->type eq sales_quotation_type() && $::instance_conf->get_reqdate_on)
&& (!$self->order->reqdate)) {
$self->order->reqdate(DateTime->today_local->next_workday(extra_days => $extra_days));
}
$self->order(SL::Model::Record->update_after_new($self->order, $self->type));
$self->pre_render();
SL/Controller/Reclamation.pm
sub action_add {
my ($self) = @_;
$self->reclamation->transdate(DateTime->now_local());
$self->reclamation(SL::Model::Record->update_after_new($self->reclamation, $self->type));
$self->pre_render();
SL/Model/Record.pm
use SL::Util qw(trim);
use SL::Locale::String qw(t8);
sub new {
my ($class, $target_type, %flags) = @_;
sub update_after_new {
my ($class, $new_record, $subtype, %flags) = @_;
# target_type: der angeforderte typ
my $type_info = {
# order
sales_quotation => {
get_new_reqdate => sub {
if ($::instance_conf->get_reqdate_on) {
return DateTime->today_local->next_workday(
extra_days => $::instance_conf->get_reqdate_interval());
} else {
return '';
}
},
},
sales_order => {
get_new_reqdate => sub {
if ($::instance_conf->get_deliverydate_on) {
return DateTime->today_local->next_workday(
extra_days => $::instance_conf->get_delivery_date_interval());
} else {
return '';
}
},
},
request_quotation => {
get_new_reqdate => sub { DateTime->today_local->next_workday(extra_days => 1); },
},
purchase_order => {
get_new_reqdate => sub { DateTime->today_local->next_workday(extra_days => 1); },
},
# delivery_order
rma_delivery_order => {
get_new_reqdate => sub { DateTime->today_local->next_workday(extra_days => 1); },
},
sales_delivery_order => {
get_new_reqdate => sub { DateTime->today_local->next_workday(extra_days => 1); },
},
supplier_delivery_order => {
get_new_reqdate => sub { DateTime->today_local->next_workday(extra_days => 1); },
},
purchase_delivery_order => {
get_new_reqdate => sub { DateTime->today_local->next_workday(extra_days => 1); },
},
# reclamation
sales_reclamation => {
get_new_reqdate => sub { return; },
},
purchase_reclamation => {
get_new_reqdate => sub { return; },
},
};
$new_record->transdate(DateTime->now_local());
$new_record->reqdate($type_info->{$subtype}->{get_new_reqdate}->());
# new_record: der neuerstellte objekt
# flags: zusätzliche informationen zu der behanldung (soll )
# (aus add) neues record mit vorbereitenden sachen wie transdate/reqdate
#
# rückgabe: neues objekt
# fehlerfall: exception
return $new_record;
}
sub new_from_workflow {

Auch abrufbar als: Unified diff