Revision 8fbb71e4
Von Niclas Zimmermann vor fast 11 Jahren hinzugefügt
SL/Controller/CsvImport/Base.pm | ||
---|---|---|
5 | 5 |
use List::MoreUtils qw(pairwise any); |
6 | 6 |
|
7 | 7 |
use SL::Helper::Csv; |
8 |
use SL::DB::Currency; |
|
9 | 8 |
use SL::DB::Customer; |
10 | 9 |
use SL::DB::Language; |
11 | 10 |
use SL::DB::PaymentTerm; |
... | ... | |
18 | 17 |
use Rose::Object::MakeMethods::Generic |
19 | 18 |
( |
20 | 19 |
scalar => [ qw(controller file csv test_run save_with_cascade) ], |
21 |
'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) ],
|
|
20 |
'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) ], |
|
22 | 21 |
); |
23 | 22 |
|
24 | 23 |
sub run { |
... | ... | |
140 | 139 |
return SL::DB::Manager::Language->get_all; |
141 | 140 |
} |
142 | 141 |
|
143 |
sub init_all_currencies { |
|
144 |
my ($self) = @_; |
|
145 |
|
|
146 |
return SL::DB::Manager::Currency->get_all; |
|
147 |
} |
|
148 |
|
|
149 |
sub init_default_currency_id { |
|
150 |
my ($self) = @_; |
|
151 |
|
|
152 |
return SL::DB::Default->get->currency_id; |
|
153 |
} |
|
154 |
|
|
155 | 142 |
sub init_payment_terms_by { |
156 | 143 |
my ($self) = @_; |
157 | 144 |
|
SL/Controller/CsvImport/CustomerVendor.pm | ||
---|---|---|
3 | 3 |
use strict; |
4 | 4 |
|
5 | 5 |
use SL::Helper::Csv; |
6 |
use SL::Helper::Csv::Consistency; |
|
6 | 7 |
use SL::DB::Business; |
7 | 8 |
use SL::DB::CustomVariable; |
8 | 9 |
use SL::DB::CustomVariableConfig; |
... | ... | |
13 | 14 |
|
14 | 15 |
use Rose::Object::MakeMethods::Generic |
15 | 16 |
( |
16 |
'scalar --get_set_init' => [ qw(table languages_by businesses_by currencies_by) ],
|
|
17 |
'scalar --get_set_init' => [ qw(table languages_by businesses_by) ], |
|
17 | 18 |
); |
18 | 19 |
|
19 | 20 |
sub init_table { |
... | ... | |
44 | 45 |
return { map { my $col = $_; ( $col => { map { ( $_->$col => $_ ) } @{ $self->all_languages } } ) } qw(id description article_code) }; |
45 | 46 |
} |
46 | 47 |
|
47 |
sub init_currencies_by { |
|
48 |
my ($self) = @_; |
|
49 |
|
|
50 |
return { map { my $col = $_; ( $col => { map { ( $_->$col => $_ ) } @{ $self->all_currencies } } ) } qw(id name) }; |
|
51 |
} |
|
52 |
|
|
53 | 48 |
sub check_objects { |
54 | 49 |
my ($self) = @_; |
55 | 50 |
|
... | ... | |
71 | 66 |
$self->check_language($entry); |
72 | 67 |
$self->check_business($entry); |
73 | 68 |
$self->check_payment($entry); |
74 |
$self->check_currency($entry);
|
|
69 |
SL::Helper::Csv::Consistency->check_currency($entry, take_default => 1);
|
|
75 | 70 |
$self->handle_cvars($entry); |
76 | 71 |
|
77 | 72 |
next if @{ $entry->{errors} }; |
... | ... | |
162 | 157 |
return 1; |
163 | 158 |
} |
164 | 159 |
|
165 |
sub check_currency { |
|
166 |
my ($self, $entry) = @_; |
|
167 |
|
|
168 |
my $object = $entry->{object}; |
|
169 |
|
|
170 |
# Check whether or not currency ID is valid. |
|
171 |
if ($object->currency_id && !$self->currencies_by->{id}->{ $object->currency_id }) { |
|
172 |
push @{ $entry->{errors} }, $::locale->text('Error: Invalid currency'); |
|
173 |
return 0; |
|
174 |
} |
|
175 |
|
|
176 |
# Map name to ID if given. |
|
177 |
if (!$object->currency_id && $entry->{raw_data}->{currency}) { |
|
178 |
my $currency = $self->currencies_by->{name}->{ $entry->{raw_data}->{currency} }; |
|
179 |
if (!$currency) { |
|
180 |
push @{ $entry->{errors} }, $::locale->text('Error: Invalid currency'); |
|
181 |
return 0; |
|
182 |
} |
|
183 |
|
|
184 |
$object->currency_id($currency->id); |
|
185 |
} |
|
186 |
|
|
187 |
# Set default currency if none was given. |
|
188 |
$object->currency_id($self->default_currency_id) if !$object->currency_id; |
|
189 |
|
|
190 |
$entry->{raw_data}->{currency_id} = $object->currency_id; |
|
191 |
|
|
192 |
return 1; |
|
193 |
} |
|
194 |
|
|
195 | 160 |
sub check_business { |
196 | 161 |
my ($self, $entry) = @_; |
197 | 162 |
|
SL/Controller/CsvImport/Order.pm | ||
---|---|---|
24 | 24 |
|
25 | 25 |
use Rose::Object::MakeMethods::Generic |
26 | 26 |
( |
27 |
'scalar --get_set_init' => [ qw(settings languages_by parts_by contacts_by departments_by projects_by ct_shiptos_by taxzones_by price_factors_by pricegroups_by currencies_by) ],
|
|
27 |
'scalar --get_set_init' => [ qw(settings languages_by parts_by contacts_by departments_by projects_by ct_shiptos_by taxzones_by price_factors_by pricegroups_by) ], |
|
28 | 28 |
); |
29 | 29 |
|
30 | 30 |
|
... | ... | |
244 | 244 |
return { map { my $col = $_; ( $col => { map { ( $_->$col => $_ ) } @{ $all_pricegroups } } ) } qw(id pricegroup) }; |
245 | 245 |
} |
246 | 246 |
|
247 |
sub init_currencies_by { |
|
248 |
my ($self) = @_; |
|
249 |
|
|
250 |
return { map { my $col = $_; ( $col => { map { ( $_->$col => $_ ) } @{ $self->all_currencies } } ) } qw(id name) }; |
|
251 |
} |
|
252 |
|
|
253 | 247 |
sub check_objects { |
254 | 248 |
my ($self) = @_; |
255 | 249 |
|
... | ... | |
330 | 324 |
$self->check_project($entry, global => 1); |
331 | 325 |
$self->check_ct_shipto($entry); |
332 | 326 |
$self->check_taxzone($entry); |
333 |
$self->check_currency($entry);
|
|
327 |
SL::Helper::Csv::Consistency->check_currency($entry, take_default => 0);
|
|
334 | 328 |
|
335 | 329 |
if ($vc_obj) { |
336 | 330 |
# copy from customer if not given |
... | ... | |
649 | 643 |
return 1; |
650 | 644 |
} |
651 | 645 |
|
652 |
sub check_currency { |
|
653 |
my ($self, $entry) = @_; |
|
654 |
|
|
655 |
my $object = $entry->{object}; |
|
656 |
|
|
657 |
# Check whether or not currency ID is valid. |
|
658 |
if ($object->currency_id && !$self->currencies_by->{id}->{ $object->currency_id }) { |
|
659 |
push @{ $entry->{errors} }, $::locale->text('Error: Invalid currency'); |
|
660 |
return 0; |
|
661 |
} |
|
662 |
|
|
663 |
# Map name to ID if given. |
|
664 |
if (!$object->currency_id && $entry->{raw_data}->{currency}) { |
|
665 |
my $currency = $self->currencies_by->{name}->{ $entry->{raw_data}->{currency} }; |
|
666 |
if (!$currency) { |
|
667 |
push @{ $entry->{errors} }, $::locale->text('Error: Invalid currency'); |
|
668 |
return 0; |
|
669 |
} |
|
670 |
|
|
671 |
$object->currency_id($currency->id); |
|
672 |
} |
|
673 |
|
|
674 |
return 1; |
|
675 |
} |
|
676 |
|
|
677 | 646 |
sub add_items_to_order { |
678 | 647 |
my ($self) = @_; |
679 | 648 |
|
Auch abrufbar als: Unified diff
Auslagern von Konsistenz-Check in neue Helper-Klasse
Es wurde mehrfach die sub check_currencies in den
Csv-Importen kopiert. Dafür wurde jetzt eine neue
Helper-Klasse geschrieben, wo solche Konsistenz-
Prüfungen vorgenommen werden können.