Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 0297cac9

Von Moritz Bunkus vor mehr als 13 Jahren hinzugefügt

  • ID 0297cac9a9ee9ada4fa4fd70123a24e0fa13aac9
  • Vorgänger 4970b5b2
  • Nachfolger efc63086

Längenbeschränkung bei bestimmten Feldern

Unterschiede anzeigen:

SL/Controller/CsvImport.pm
}
my $worker = $self->{type} eq 'customers_vendors' ? SL::Controller::CsvImport::CustomerVendor->new(controller => $self, file => $file)
: die "Program logic error";
: $self->{type} eq 'contacts' ? SL::Controller::CsvImport::Contact->new( controller => $self, file => $file)
: die "Program logic error";
$worker->run;
$worker->save_objects if !$params{test};
SL/Controller/CsvImport/Base.pm
sub run {
my ($self) = @_;
$::lxdebug->dump(0, "file", $self->file);
$::lxdebug->dump(0, "profile", $self->controller->profile);
my $profile = $self->profile;
$self->csv(SL::Helper::Csv->new(file => $self->file->file_name,
encoding => $self->controller->profile->get('charset'),
......
$self->controller->errors([ $self->csv->errors ]) if $self->csv->errors;
$::lxdebug->dump(0, "err", $self->csv->errors);
return unless $self->csv->header;
my $headers = { headers => [ grep { $profile->{$_} } @{ $self->csv->header } ] };
......
$self->check_objects;
$self->check_duplicates if $self->controller->profile->get('duplicates', 'no_check') ne 'no_check';
$self->fix_field_lenghts;
}
sub init_profile {
......
}
}
sub field_lengths {
return ();
}
sub fix_field_lenghts {
my ($self) = @_;
my %field_lengths = $self->field_lengths;
foreach my $entry (@{ $self->controller->data }) {
next unless @{ $entry->{errors} };
map { $entry->{object}->$_(substr($entry->{object}->$_, 0, $field_lengths{$_})) if $entry->{object}->$_ } keys %field_lengths;
}
}
1;
SL/Controller/CsvImport/CustomerVendor.pm
use Rose::Object::MakeMethods::Generic
(
scalar => [ qw(table) ],
'scalar --get_set_init' => [ qw(table) ],
);
sub run {
sub init_table {
my ($self) = @_;
$self->table($self->controller->profile->get('table') eq 'customer' ? 'customer' : 'vendor');
$self->class('SL::DB::' . ucfirst($self->table));
}
$self->SUPER::run;
sub init_class {
my ($self) = @_;
$self->class('SL::DB::' . ucfirst($self->table));
}
sub check_objects {
......
$self->SUPER::save_objects(data => $without_number);
}
sub field_lengths {
return ( name => 75,
department_1 => 75,
department_2 => 75,
street => 75,
zipcode => 10,
city => 75,
country => 75,
contact => 75,
phone => 30,
fax => 30,
account_number => 15,
bank_code => 10,
language => 5,
username => 50,
ustid => 14,
iban => 100,
bic => 100,
);
}
1;

Auch abrufbar als: Unified diff