use strict;
-use List::MoreUtils qw(pairwise);
+use List::MoreUtils qw(pairwise any);
use SL::Helper::Csv;
use SL::DB::Currency;
use SL::DB::PaymentTerm;
use SL::DB::Vendor;
use SL::DB::Contact;
+use SL::DB::History;
use parent qw(Rose::Object);
my $profile = $self->profile;
$self->csv(SL::Helper::Csv->new(file => $self->file->file_name,
encoding => $self->controller->profile->get('charset'),
- class => $self->class,
- profile => $profile,
+ profile => [{ profile => $profile, class => $self->class }],
ignore_unknown_columns => 1,
strict_profile => 1,
case_insensitive_header => 1,
$self->manager_class("SL::DB::Manager::" . $1);
}
+sub is_multiplexed { 0 }
+
sub check_objects {
}
my $object = $entry->{object_to_save} || $entry->{object};
- if ( !$object->save(cascade => !!$self->save_with_cascade()) ) {
+ my $ret;
+ if (!eval { $ret = $object->save(cascade => !!$self->save_with_cascade()); 1 }) {
+ push @{ $entry->{errors} }, $::locale->text('Error when saving: #1', $@);
+ } elsif ( !$ret ) {
push @{ $entry->{errors} }, $::locale->text('Error when saving: #1', $entry->{object}->db->error);
} else {
+ $self->_save_history($object);
$self->controller->num_imported($self->controller->num_imported + 1);
}
} continue {
return @cleaned_fields;
}
+sub _save_history {
+ my ($self, $object) = @_;
+
+ if (any { $_ eq $self->controller->{type} } qw(parts customers_vendors orders)) {
+ my $snumbers = $self->controller->{type} eq 'parts' ? 'partnumber_' . $object->partnumber
+ : $self->controller->{type} eq 'customers_vendors' ?
+ ($self->table eq 'customer' ? 'customernumber_' . $object->customernumber : 'vendornumber_' . $object->vendornumber)
+ : $self->controller->{type} eq 'orders' ? 'ordnumber_' . $object->ordnumber
+ : '';
+
+ my $what_done = $self->controller->{type} eq 'orders' ? 'sales_order'
+ : '';
+
+ SL::DB::History->new(
+ trans_id => $object->id,
+ snumbers => $snumbers,
+ employee_id => $self->controller->{employee_id},
+ addition => 'SAVED',
+ what_done => $what_done,
+ )->save();
+ }
+}
+
1;