use Rose::Object::MakeMethods::Generic
(
scalar => [ qw(controller file csv test_run save_with_cascade) ],
- 'scalar --get_set_init' => [ qw(profile displayable_columns existing_objects class manager_class cvar_columns all_cvar_configs all_languages payment_terms_by all_currencies default_currency_id all_vc vc_by) ],
+ 'scalar --get_set_init' => [ qw(is_multiplexed profile displayable_columns existing_objects class manager_class cvar_columns all_cvar_configs all_languages payment_terms_by all_currencies default_currency_id all_vc vc_by) ],
);
sub run {
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);
$self->manager_class("SL::DB::Manager::" . $1);
}
+sub init_is_multiplexed {
+ my ($self) = @_;
+
+ $self->is_multiplexed('ARRAY' eq ref ($self->class) && scalar @{ $self->class } > 1);
+}
+
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);