projects
/
kivitendo-erp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Cuddled else
[kivitendo-erp.git]
/
SL
/
Controller
/
CsvImport
/
Base.pm
diff --git
a/SL/Controller/CsvImport/Base.pm
b/SL/Controller/CsvImport/Base.pm
index
185c7ad
..
db6dc4d
100644
(file)
--- a/
SL/Controller/CsvImport/Base.pm
+++ b/
SL/Controller/CsvImport/Base.pm
@@
-5,6
+5,7
@@
use strict;
use List::MoreUtils qw(pairwise);
use SL::Helper::Csv;
use List::MoreUtils qw(pairwise);
use SL::Helper::Csv;
+use SL::DB::Currency;
use SL::DB::Customer;
use SL::DB::Language;
use SL::DB::PaymentTerm;
use SL::DB::Customer;
use SL::DB::Language;
use SL::DB::PaymentTerm;
@@
-16,7
+17,7
@@
use parent qw(Rose::Object);
use Rose::Object::MakeMethods::Generic
(
scalar => [ qw(controller file csv test_run save_with_cascade) ],
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_vc vc_by) ],
+ '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) ],
);
sub run {
);
sub run {
@@
-122,6
+123,11
@@
sub add_cvar_raw_data_columns {
map { $self->add_raw_data_columns($_) if exists $self->controller->data->[0]->{raw_data}->{$_} } @{ $self->cvar_columns };
}
map { $self->add_raw_data_columns($_) if exists $self->controller->data->[0]->{raw_data}->{$_} } @{ $self->cvar_columns };
}
+sub init_all_cvar_configs {
+ # Must be overridden by derived specialized importer classes.
+ return [];
+}
+
sub init_cvar_columns {
my ($self) = @_;
sub init_cvar_columns {
my ($self) = @_;
@@
-134,6
+140,18
@@
sub init_all_languages {
return SL::DB::Manager::Language->get_all;
}
return SL::DB::Manager::Language->get_all;
}
+sub init_all_currencies {
+ my ($self) = @_;
+
+ return SL::DB::Manager::Currency->get_all;
+}
+
+sub init_default_currency_id {
+ my ($self) = @_;
+
+ return SL::DB::Default->get->currency_id;
+}
+
sub init_payment_terms_by {
my ($self) = @_;
sub init_payment_terms_by {
my ($self) = @_;
@@
-148,6
+166,10
@@
sub init_all_vc {
vendors => SL::DB::Manager::Vendor->get_all };
}
vendors => SL::DB::Manager::Vendor->get_all };
}
+sub force_allow_columns {
+ return ();
+}
+
sub init_vc_by {
my ($self) = @_;
sub init_vc_by {
my ($self) = @_;
@@
-191,8
+213,6
@@
sub check_vc {
sub handle_cvars {
my ($self, $entry) = @_;
sub handle_cvars {
my ($self, $entry) = @_;
- return unless $self->can('all_cvar_configs');
-
my %type_to_column = ( text => 'text_value',
textfield => 'text_value',
select => 'text_value',
my %type_to_column = ( text => 'text_value',
textfield => 'text_value',
select => 'text_value',
@@
-219,6
+239,8
@@
sub init_profile {
eval "require " . $self->class;
my %unwanted = map { ( $_ => 1 ) } (qw(itime mtime), map { $_->name } @{ $self->class->meta->primary_key_columns });
eval "require " . $self->class;
my %unwanted = map { ( $_ => 1 ) } (qw(itime mtime), map { $_->name } @{ $self->class->meta->primary_key_columns });
+ delete $unwanted{$_} for ($self->force_allow_columns);
+
my %profile;
for my $col ($self->class->meta->columns) {
next if $unwanted{$col};
my %profile;
for my $col ($self->class->meta->columns) {
next if $unwanted{$col};
@@
-231,11
+253,7
@@
sub init_profile {
$profile{$col} = $name;
}
$profile{$col} = $name;
}
- if ($self->can('all_cvar_configs')) {
- for (@{ $self->all_cvar_configs }) {
- $profile{ 'cvar_' . $_->name } = '';
- }
- }
+ $profile{ 'cvar_' . $_->name } = '' for @{ $self->all_cvar_configs };
\%profile;
}
\%profile;
}
@@
-266,8
+284,6
@@
sub setup_displayable_columns {
sub add_cvar_columns_to_displayable_columns {
my ($self) = @_;
sub add_cvar_columns_to_displayable_columns {
my ($self) = @_;
- return unless $self->can('all_cvar_configs');
-
$self->add_displayable_columns(map { { name => 'cvar_' . $_->name,
description => $::locale->text('#1 (custom variable)', $_->description) } }
@{ $self->all_cvar_configs });
$self->add_displayable_columns(map { { name => 'cvar_' . $_->name,
description => $::locale->text('#1 (custom variable)', $_->description) } }
@{ $self->all_cvar_configs });
@@
-385,7
+401,7
@@
sub save_objects {
return unless $data->[0];
return unless $data->[0]{object};
return unless $data->[0];
return unless $data->[0]{object};
- $self->controller->track_progress(phase => 'saving
objects
', progress => 0); # scale from 45..95%;
+ $self->controller->track_progress(phase => 'saving
data
', progress => 0); # scale from 45..95%;
my $dbh = $data->[0]{object}->db;
my $dbh = $data->[0]{object}->db;
@@
-425,5
+441,20
@@
sub fix_field_lengths {
}
}
}
}
-1;
+sub clean_fields {
+ my ($self, $illegal_chars, $object, @fields) = @_;
+
+ my @cleaned_fields;
+ foreach my $field (grep { $object->can($_) } @fields) {
+ my $value = $object->$field;
+ next unless defined($value) && ($value =~ s/$illegal_chars/ /g);
+
+ $object->$field($value);
+ push @cleaned_fields, $field;
+ }
+
+ return @cleaned_fields;
+}
+
+1;