$self->class(['SL::DB::Order', 'SL::DB::OrderItem']);
}
+sub set_profile_defaults {
+ my ($self) = @_;
+
+ $self->controller->profile->_set_defaults(
+ order_column => $::locale->text('Order'),
+ item_column => $::locale->text('OrderItem'),
+ max_amount_diff => 0.02,
+ );
+};
+
sub init_settings {
my ($self) = @_;
my $object = $entry->{object};
- # Check wether or non part ID is valid.
+ # Check whether or not part ID is valid.
if ($object->parts_id && !$self->parts_by->{id}->{ $object->parts_id }) {
push @{ $entry->{errors} }, $::locale->text('Error: Invalid part');
return 0;
$object->parts_id($part->id);
}
+ # Map description to ID if given.
+ if (!$object->parts_id && $entry->{raw_data}->{description}) {
+ my $part = $self->parts_by->{description}->{ $entry->{raw_data}->{description} };
+ if (!$part) {
+ push @{ $entry->{errors} }, $::locale->text('Error: Invalid part');
+ return 0;
+ }
+
+ $object->parts_id($part->id);
+ }
+
if ($object->parts_id) {
$entry->{info_data}->{partnumber} = $self->parts_by->{id}->{ $object->parts_id }->partnumber;
} else {
my $cp_cv_id = $object->customer_id || $object->vendor_id;
return 0 unless $cp_cv_id;
- # Check wether or not contact ID is valid.
+ # Check whether or not contact ID is valid.
if ($object->cp_id && !$self->contacts_by->{'cp_cv_id+cp_id'}->{ $cp_cv_id . '+' . $object->cp_id }) {
push @{ $entry->{errors} }, $::locale->text('Error: Invalid contact');
return 0;
my $object = $entry->{object};
- # Check wether or not department ID is valid.
+ # Check whether or not department ID is valid.
if ($object->department_id && !$self->departments_by->{id}->{ $object->department_id }) {
push @{ $entry->{errors} }, $::locale->text('Error: Invalid department');
return 0;
my $object = $entry->{object};
- # Check wether or not projetc ID is valid.
+ # Check whether or not projetc ID is valid.
if ($object->$id_column && !$self->projects_by->{id}->{ $object->$id_column }) {
push @{ $entry->{errors} }, $::locale->text('Error: Invalid project');
return 0;
my $trans_id = $object->customer_id || $object->vendor_id;
return 0 unless $trans_id;
- # Check wether or not shipto ID is valid.
+ # Check whether or not shipto ID is valid.
if ($object->shipto_id && !$self->ct_shiptos_by->{'trans_id+shipto_id'}->{ $trans_id . '+' . $object->shipto_id }) {
push @{ $entry->{errors} }, $::locale->text('Error: Invalid shipto');
return 0;
my $object = $entry->{object};
- # Check wether or not price_factor ID is valid.
+ # Check whether or not price_factor ID is valid.
if ($object->price_factor_id && !$self->price_factors_by->{id}->{ $object->price_factor_id }) {
push @{ $entry->{errors} }, $::locale->text('Error: Invalid price factor');
return 0;
my $object = $entry->{object};
- # Check wether or not pricegroup ID is valid.
+ # Check whether or not pricegroup ID is valid.
if ($object->pricegroup_id && !$self->pricegroups_by->{id}->{ $object->pricegroup_id }) {
push @{ $entry->{errors} }, $::locale->text('Error: Invalid price group');
return 0;
my $order_entry;
my @orderitems;
foreach my $entry (@{ $self->controller->data }) {
- # search first order
+ # search first/next order
if ($entry->{raw_data}->{datatype} eq $self->_order_column) {
- # new order entry: add collected orderitems to the previous one
+ # next order entry: add collected orderitems to the previous one
if (defined $order_entry) {
$order_entry->{object}->orderitems(@orderitems);
@orderitems = ();
foreach my $entry (@{ $self->controller->data }) {
next if @{ $entry->{errors} };
- if ($entry->{raw_data}->{datatype} eq $self->_order_column) {
+ if ($entry->{raw_data}->{datatype} eq $self->_order_column && $entry->{object}->orderitems) {
$entry->{object}->calculate_prices_and_taxes;