66 lines
1.5 KiB
Perl
66 lines
1.5 KiB
Perl
package Pear::LocalLoop::Import::LCCCsv::Suppliers;
|
|
use Moo;
|
|
|
|
extends qw/Pear::LocalLoop::Import::LCCCsv/;
|
|
|
|
has '+csv_required_columns' => (
|
|
builder => sub {
|
|
return [
|
|
qw/
|
|
supplier_id
|
|
name
|
|
/
|
|
];
|
|
},
|
|
);
|
|
|
|
sub import_csv {
|
|
my ($self) = @_;
|
|
|
|
$self->check_headers;
|
|
|
|
while ( my $row = $self->get_csv_line ) {
|
|
$self->_row_to_result($row);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
sub _row_to_result {
|
|
my ( $self, $row ) = @_;
|
|
|
|
my $addr2 = $row->{post_town};
|
|
|
|
my $address = (
|
|
defined $addr2
|
|
? ( $row->{"address line 2"} . ' ' . $addr2 )
|
|
: $row->{"address line 2"}
|
|
);
|
|
|
|
return
|
|
if $self->external_result->organisations->find(
|
|
{ external_id => $row->{supplier_id} } );
|
|
|
|
$self->schema->resultset('Entity')->create(
|
|
{
|
|
type => 'organisation',
|
|
organisation => {
|
|
name => $row->{name},
|
|
street_name => $row->{"address line 1"},
|
|
town => $address,
|
|
postcode => $row->{post_code},
|
|
country => $row->{country_code},
|
|
external_reference => [
|
|
{
|
|
external_reference => $self->external_result,
|
|
external_id => $row->{supplier_id},
|
|
}
|
|
],
|
|
}
|
|
}
|
|
);
|
|
|
|
return 1;
|
|
}
|
|
|
|
1;
|