Revision e3b06f85
Von Werner Hahn vor fast 8 Jahren hinzugefügt
SL/DB/ShopOrder.pm | ||
---|---|---|
column_map => { id => 'shop_order_id' },
|
||
type => 'one to many',
|
||
},
|
||
customer => {
|
||
class => 'SL::DB::Customer',
|
||
column_map => { kivi_customer_id => 'id' },
|
||
type => 'one to many',
|
||
},
|
||
shop => {
|
||
class => 'SL::DB::Shop',
|
||
column_map => { shop_id => 'id' },
|
||
type => 'one to many',
|
||
},
|
||
);
|
||
|
||
__PACKAGE__->meta->initialize;
|
||
... | ... | |
|
||
my @items = map{
|
||
|
||
# TODO Flash and exit if part not found
|
||
my $part = SL::DB::Manager::Part->find_by(partnumber => $_->partnumber);
|
||
|
||
unless($part){
|
||
push @error_report, t8('Part with partnumber: #1 not found', $_->partnumber);
|
||
}else{
|
||
my $shop_part = SL::DB::Manager::ShopPart->get_all( where => [ shop_id => $self->shop_id, part_id => $part->id] )->[0];
|
||
|
||
my @cvars = map { ($_->config->name => { value => $_->value_as_text, is_valid => $_->is_valid }) } @{ $part->cvars_by_config } ;
|
||
my $current_order_item =
|
||
SL::DB::OrderItem->new(parts_id => $part->id,
|
||
description => $part->description,
|
||
qty => $_->quantity,
|
||
sellprice => $_->price,
|
||
unit => $part->unit,
|
||
position => $_->position,
|
||
active_price_source => $shop_part->active_price_source,
|
||
);
|
||
my $shop_part = SL::DB::Manager::ShopPart->find_by( shop_id => $self->shop_id, part_id => $part->id );
|
||
|
||
my $current_order_item = SL::DB::OrderItem->new(
|
||
parts_id => $part->id,
|
||
description => $part->description,
|
||
qty => $_->quantity,
|
||
sellprice => $_->price,
|
||
unit => $part->unit,
|
||
position => $_->position,
|
||
active_price_source => $shop_part->active_price_source,
|
||
);
|
||
}
|
||
}@{ $self->shop_order_items };
|
||
|
||
... | ... | |
|
||
my $shipto_id;
|
||
if ($self->billing_firstname ne $self->delivery_firstname || $self->billing_lastname ne $self->delivery_lastname || $self->billing_city ne $self->delivery_city || $self->billing_street ne $self->delivery_street) {
|
||
if(my $address = SL::DB::Manager::Shipto->find_by( shiptoname => $self->delivery_firstname . " " . $self->delivery_lastname,
|
||
shiptostreet => $self->delivery_street,
|
||
shiptocity => $self->delivery_city,
|
||
if(my $address = SL::DB::Manager::Shipto->find_by( shiptoname => $self->delivery_firstname . " " . $self->delivery_lastname,
|
||
shiptostreet => $self->delivery_street,
|
||
shiptocity => $self->delivery_city,
|
||
)) {
|
||
$shipto_id = $address->{shipto_id};
|
||
} else {
|
||
my $deliveryaddress = SL::DB::Shipto->new;
|
||
$deliveryaddress->assign_attributes(
|
||
shiptoname => $self->delivery_firstname . " " . $self->delivery_lastname,
|
||
shiptodepartment_1 => $self->delivery_company,
|
||
shiptodepartment_2 => $self->delivery_department,
|
||
shiptostreet => $self->delivery_street,
|
||
shiptozipcode => $self->delivery_zipcode,
|
||
shiptocity => $self->delivery_city,
|
||
shiptocountry => $self->delivery_country,
|
||
trans_id => $customer->id,
|
||
module => "CT",
|
||
shiptoname => $self->delivery_firstname . " " . $self->delivery_lastname,
|
||
shiptodepartment_1 => $self->delivery_company,
|
||
shiptodepartment_2 => $self->delivery_department,
|
||
shiptostreet => $self->delivery_street,
|
||
shiptozipcode => $self->delivery_zipcode,
|
||
shiptocity => $self->delivery_city,
|
||
shiptocountry => $self->delivery_country,
|
||
trans_id => $customer->id,
|
||
module => "CT",
|
||
);
|
||
$deliveryaddress->save;
|
||
$shipto_id = $deliveryaddress->{shipto_id};
|
||
... | ... | |
}
|
||
|
||
my $order = SL::DB::Order->new(
|
||
amount => $self->amount,
|
||
cusordnumber => $self->shop_ordernumber,
|
||
customer_id => $customer->id,
|
||
shipto_id => $shipto_id,
|
||
orderitems => [ @items ],
|
||
employee_id => $employee->id,
|
||
intnotes => ($customer->notes ne "" ? "\n[Kundestammdaten]\n" . $customer->notes : ""),
|
||
salesman_id => $employee->id,
|
||
taxincluded => $self->tax_included,
|
||
payment_id => $customer->payment_id,
|
||
taxzone_id => $customer->taxzone_id,
|
||
currency_id => $customer->currency_id,
|
||
transaction_description => 'Shop Import',
|
||
transdate => DateTime->today_local
|
||
);
|
||
amount => $self->amount,
|
||
cusordnumber => $self->shop_ordernumber,
|
||
customer_id => $customer->id,
|
||
shipto_id => $shipto_id,
|
||
orderitems => [ @items ],
|
||
employee_id => $employee->id,
|
||
intnotes => $customer->notes,
|
||
salesman_id => $employee->id,
|
||
taxincluded => $self->tax_included,
|
||
payment_id => $customer->payment_id,
|
||
taxzone_id => $customer->taxzone_id,
|
||
currency_id => $customer->currency_id,
|
||
transaction_description => 'Shop Import',
|
||
transdate => DateTime->today_local
|
||
);
|
||
return $order;
|
||
}else{
|
||
my %error_order = (error => 1,
|
||
errors => [ @error_report ],
|
||
);
|
||
);
|
||
return \%error_order;
|
||
}
|
||
};
|
Auch abrufbar als: Unified diff
Shopmodul: syntax in shoporder