+sub _before_save_create_new_project {
+ my ($self) = @_;
+
+ # force new project, if not set yet
+ if ($::instance_conf->get_order_always_project && !$self->globalproject_id && ($self->type eq 'sales_order')) {
+
+ die t8("Error while creating project with project number of new order number, project number #1 already exists!", $self->ordnumber)
+ if SL::DB::Manager::Project->find_by(projectnumber => $self->ordnumber);
+
+ eval {
+ my $new_project = SL::DB::Project->new(
+ projectnumber => $self->ordnumber,
+ description => $self->customer->name,
+ customer_id => $self->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;
+ $self->globalproject_id($new_project->id);
+ } or die t8('Could not create new project #1', $@);
+ }
+ return 1;
+}
+
+
+sub _before_save_remove_empty_custom_shipto {
+ my ($self) = @_;
+
+ $self->custom_shipto(undef) if $self->custom_shipto && $self->custom_shipto->is_empty;
+
+ return 1;
+}
+
+sub _before_save_set_custom_shipto_module {
+ my ($self) = @_;
+
+ $self->custom_shipto->module('OE') if $self->custom_shipto;
+
+ return 1;
+}