use SL::CVar;
use SL::DB::Order;
use SL::DB::PeriodicInvoicesConfig;
+use SL::DB::Project;
+use SL::DB::ProjectType;
use SL::DB::Status;
use SL::DB::Tax;
use SL::DBUtils;
my $number_field = $form->{type} =~ m{order} ? 'ordnumber' : 'quonumber';
my $trans_number = SL::TransNumber->new(type => $form->{type}, dbh => $dbh, number => $form->{$number_field}, id => $form->{id});
- $form->{$number_field} ||= $trans_number->create_unique;
+ $form->{$number_field} ||= $trans_number->create_unique; # set $form->{ordnumber} or $form->{quonumber}
if ($form->{id}) {
$query = qq|DELETE FROM shipto | .
$pricegroup_id *= 1;
$pricegroup_id = undef if !$pricegroup_id;
+ # force new project, if not set yet
+ if ($::instance_conf->get_order_always_project && !$form->{"globalproject_id"} && ($form->{type} eq 'sales_order')) {
+ require SL::DB::Customer;
+ my $customer = SL::DB::Manager::Customer->find_by(id => $form->{customer_id});
+ die "Can't find customer" unless $customer;
+ my $new_project = SL::DB::Project->new(
+ projectnumber => $form->{ordnumber},
+ description => $customer->name,
+ customer_id => $customer->id,
+ active => 1,
+ project_type_id => $::instance_conf->get_project_type_id,
+ project_status_id => $::instance_conf->get_project_status_id,
+ );
+ $new_project->save;
+ $form->{"globalproject_id"} = $new_project->id;
+ };
+
CVar->get_non_editable_ic_cvars(form => $form,
dbh => $dbh,
row => $i,
if ($config_obj) {
my $config = { map { $_ => $config_obj->$_ } qw(active terminated periodicity order_value_periodicity start_date_as_date end_date_as_date first_billing_date_as_date extend_automatically_by ar_chart_id
- print printer_id copies) };
+ print printer_id copies direct_debit) };
$form->{periodic_invoices_config} = YAML::Dump($config);
}
}
$form->{useasnew} = 1 if $is_collective_order == 1;
if (!$form->{id}) {
- my $extra_days = $form->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval : 1;
- my $next_workday = DateTime->today_local->add(days => $extra_days);
- my $day_of_week = $next_workday->day_of_week;
-
- $next_workday->add(days => (8 - $day_of_week)) if $day_of_week >= 6;
-
+ my $extra_days = $form->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval : 1;
+ $form->{reqdate} = DateTime->today_local->next_workday(extra_days => $extra_days)->to_kivitendo;
$form->{transdate} = DateTime->today_local->to_kivitendo;
- $form->{reqdate} = $next_workday->to_kivitendo;
}
# get default accounts
(SELECT cu.name FROM currencies cu WHERE cu.id=o.currency_id) AS currency, e.name AS employee, o.employee_id, o.salesman_id,
o.${vc}_id, cv.name AS ${vc}, o.amount AS invtotal,
o.closed, o.reqdate, o.quonumber, o.department_id, o.cusordnumber,
+ o.mtime, o.itime,
d.description AS department, o.payment_id, o.language_id, o.taxzone_id,
o.delivery_customer_id, o.delivery_vendor_id, o.proforma, o.shipto_id,
o.globalproject_id, o.delivered, o.transaction_description, o.delivery_term_id,
map { $form->{$_} = '' if ($ref->{$_} ne $form->{$_}) } keys %$ref;
}
}
+ $form->{mtime} ||= $form->{itime};
+ $form->{lastmtime} = $form->{mtime};
# if not given, fill transdate with current_date
$form->{transdate} = $form->current_date($myconfig)