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->controller->track_progress(progress => 50);
+ if ($self->csv->is_multiplexed) {
+ die "controller for multiplex data is not implemented yet";
+ }
+
$self->controller->errors([ $self->csv->errors ]) if $self->csv->errors;
return if ( !$self->csv->header || $self->csv->errors );
- my $headers = { headers => [ grep { $profile->{$_} } @{ $self->csv->header } ] };
+ my $headers = { headers => [ grep { $profile->{$_} } @{ $self->csv->header->[0] } ] };
$headers->{methods} = [ map { $profile->{$_} } @{ $headers->{headers} } ];
$headers->{used} = { map { ($_ => 1) } @{ $headers->{headers} } };
$self->controller->headers($headers);
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)) {
+ 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)
+ : '';
+
+ SL::DB::History->new(
+ trans_id => $object->id,
+ snumbers => $snumbers,
+ employee_id => $self->controller->{employee_id},
+ addition => 'SAVED',
+ )->save();
+ }
+}
+
1;