use List::MoreUtils qw(any);
use SL::Helper::Csv;
+use SL::Controller::CsvImport::Helper::Consistency;
use SL::DB::Order;
use SL::DB::OrderItem;
use SL::DB::Part;
use Rose::Object::MakeMethods::Generic
(
- '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) ],
+ '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) ],
);
{ name => 'currency_id', description => $::locale->text('Currency (database ID)') },
{ name => 'cusordnumber', description => $::locale->text('Customer Order Number') },
{ name => 'delivered', description => $::locale->text('Delivered') },
+ { name => 'delivery_term_id', description => $::locale->text('Delivery terms (database ID)') },
+ { name => 'delivery_term', description => $::locale->text('Delivery terms (name)') },
{ name => 'employee_id', description => $::locale->text('Employee (database ID)') },
{ name => 'intnotes', description => $::locale->text('Internal Notes') },
{ name => 'marge_percent', description => $::locale->text('Margepercent') },
return { map { my $col = $_; ( $col => { map { ( $_->$col => $_ ) } @{ $all_pricegroups } } ) } qw(id pricegroup) };
}
-sub init_currencies_by {
- my ($self) = @_;
-
- return { map { my $col = $_; ( $col => { map { ( $_->$col => $_ ) } @{ $self->all_currencies } } ) } qw(id name) };
-}
-
sub check_objects {
my ($self) = @_;
{ header => $::locale->text('Customer/Vendor'), method => 'vc_name' });
# Todo: access via ->[0] ok? Better: search first order column and use this
$self->add_columns($self->_order_column,
- map { "${_}_id" } grep { exists $self->controller->data->[0]->{raw_data}->{$_} } qw(payment language department globalproject taxzone cp currency));
+ map { "${_}_id" } grep { exists $self->controller->data->[0]->{raw_data}->{$_} } qw(payment delivery_term language department globalproject taxzone cp currency));
$self->add_columns($self->_order_column, 'globalproject_id') if exists $self->controller->data->[0]->{raw_data}->{globalprojectnumber};
$self->add_columns($self->_order_column, 'cp_id') if exists $self->controller->data->[0]->{raw_data}->{contact};
$self->check_contact($entry);
$self->check_language($entry);
$self->check_payment($entry);
+ $self->check_delivery_term($entry);
$self->check_department($entry);
$self->check_project($entry, global => 1);
$self->check_ct_shipto($entry);
$self->check_taxzone($entry);
- $self->check_currency($entry);
+ $self->check_currency($entry, take_default => 0);
if ($vc_obj) {
# copy from customer if not given
my ($self, $entry) = @_;
my $object = $entry->{object};
- my $vc_obj = SL::DB::Customer->new(id => $object->customer_id)->load if $object->customer_id;
+ my $vc_obj;
+ $vc_obj = SL::DB::Customer->new(id => $object->customer_id)->load if $object->customer_id;
$vc_obj = SL::DB::Vendor->new(id => $object->vendor_id)->load if (!$vc_obj && $object->vendor_id);
# salesman from customer/vendor or login if not given
$object->description($part_obj->description) unless $object->description;
$object->longdescription($part_obj->notes) unless $object->longdescription;
$object->unit($part_obj->unit) unless $object->unit;
+ $object->sellprice($part_obj->sellprice) unless defined $object->sellprice;
+ $object->lastcost($part_obj->lastcost) unless defined $object->lastcost;
# set to 0 if not given
$object->discount(0) unless $object->discount;
return 1;
}
-sub check_currency {
- my ($self, $entry) = @_;
-
- my $object = $entry->{object};
-
- # Check whether or not currency ID is valid.
- if ($object->currency_id && !$self->currencies_by->{id}->{ $object->currency_id }) {
- push @{ $entry->{errors} }, $::locale->text('Error: Invalid currency');
- return 0;
- }
-
- # Map name to ID if given.
- if (!$object->currency_id && $entry->{raw_data}->{currency}) {
- my $currency = $self->currencies_by->{name}->{ $entry->{raw_data}->{currency} };
- if (!$currency) {
- push @{ $entry->{errors} }, $::locale->text('Error: Invalid currency');
- return 0;
- }
-
- $object->currency_id($currency->id);
- }
-
- return 1;
-}
-
sub add_items_to_order {
my ($self) = @_;