Revision 9a33b2d8
Von Werner Hahn vor mehr als 6 Jahren hinzugefügt
SL/DB/ShopOrder.pm | ||
---|---|---|
8 | 8 |
use SL::DB::MetaSetup::ShopOrder; |
9 | 9 |
use SL::DB::Manager::ShopOrder; |
10 | 10 |
use SL::DB::Helper::LinkedRecords; |
11 |
use SL::Locale::String qw(t8); |
|
11 | 12 |
|
12 | 13 |
__PACKAGE__->meta->add_relationships( |
13 | 14 |
shop_order_items => { |
... | ... | |
41 | 42 |
require SL::DB::OrderItem; |
42 | 43 |
require SL::DB::Part; |
43 | 44 |
require SL::DB::Shipto; |
45 |
my @error_report; |
|
44 | 46 |
|
45 | 47 |
my @items = map{ |
48 |
|
|
46 | 49 |
# TODO Flash and exit if part not found |
47 |
my $part = SL::DB::Part->new( partnumber => $_->partnumber )->load; |
|
48 |
my $shop_part = SL::DB::Manager::ShopPart->get_all( where => [ shop_id => $self->shop_id, part_id => $part->id] )->[0]; |
|
49 |
|
|
50 |
my @cvars = map { ($_->config->name => { value => $_->value_as_text, is_valid => $_->is_valid }) } @{ $part->cvars_by_config } ; |
|
51 |
my $current_order_item = |
|
52 |
SL::DB::OrderItem->new(parts_id => $part->id, |
|
53 |
description => $part->description, |
|
54 |
qty => $_->quantity, |
|
55 |
sellprice => $_->price, |
|
56 |
unit => $part->unit, |
|
57 |
position => $_->position, |
|
58 |
active_price_source => $shop_part->active_price_source, |
|
59 |
); |
|
50 |
my $part = SL::DB::Manager::Part->get_first( query => [ partnumber => $_->partnumber, ], ); |
|
51 |
|
|
52 |
unless($part){ |
|
53 |
push @error_report, t8('Part with Partnumber: ') . $_->partnumber . t8(' not found'); |
|
54 |
}else{ |
|
55 |
my $shop_part = SL::DB::Manager::ShopPart->get_all( where => [ shop_id => $self->shop_id, part_id => $part->id] )->[0]; |
|
56 |
|
|
57 |
my @cvars = map { ($_->config->name => { value => $_->value_as_text, is_valid => $_->is_valid }) } @{ $part->cvars_by_config } ; |
|
58 |
my $current_order_item = |
|
59 |
SL::DB::OrderItem->new(parts_id => $part->id, |
|
60 |
description => $part->description, |
|
61 |
qty => $_->quantity, |
|
62 |
sellprice => $_->price, |
|
63 |
unit => $part->unit, |
|
64 |
position => $_->position, |
|
65 |
active_price_source => $shop_part->active_price_source, |
|
66 |
); |
|
67 |
} |
|
60 | 68 |
}@{ $self->shop_order_items }; |
61 | 69 |
|
62 |
my $shipto_id; |
|
63 |
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}) { |
|
64 |
if(my $address = SL::DB::Manager::Shipto->find_by( shiptoname => $self->{delivery_firstname} . " " . $self->{delivery_lastname}, |
|
65 |
shiptostreet => $self->{delivery_street}, |
|
66 |
shiptocity => $self->{delivery_city}, |
|
67 |
)) { |
|
68 |
$shipto_id = $address->{shipto_id}; |
|
69 |
} else { |
|
70 |
my $gender = $self->{delivery_greeting} eq "Frau" ? 'f' : 'm'; |
|
71 |
my $deliveryaddress = SL::DB::Shipto->new; |
|
72 |
$deliveryaddress->assign_attributes( |
|
73 |
shiptoname => $self->{delivery_firstname} . " " . $self->{delivery_lastname}, |
|
74 |
shiptodepartment_1 => $self->{delivery_company}, |
|
75 |
shiptodepartment_2 => $self->{delivery_department}, |
|
76 |
shiptocp_gender => $gender, |
|
77 |
shiptostreet => $self->{delivery_street}, |
|
78 |
shiptozipcode => $self->{delivery_zipcode}, |
|
79 |
shiptocity => $self->{delivery_city}, |
|
80 |
shiptocountry => $self->{delivery_country}, |
|
81 |
trans_id => $customer->id, |
|
82 |
module => "CT", |
|
83 |
); |
|
84 |
$deliveryaddress->save; |
|
85 |
$shipto_id = $deliveryaddress->{shipto_id}; |
|
70 |
if(!scalar(@error_report)){ |
|
71 |
|
|
72 |
my $shipto_id; |
|
73 |
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}) { |
|
74 |
if(my $address = SL::DB::Manager::Shipto->find_by( shiptoname => $self->{delivery_firstname} . " " . $self->{delivery_lastname}, |
|
75 |
shiptostreet => $self->{delivery_street}, |
|
76 |
shiptocity => $self->{delivery_city}, |
|
77 |
)) { |
|
78 |
$shipto_id = $address->{shipto_id}; |
|
79 |
} else { |
|
80 |
my $gender = $self->{delivery_greeting} eq "Frau" ? 'f' : 'm'; |
|
81 |
my $deliveryaddress = SL::DB::Shipto->new; |
|
82 |
$deliveryaddress->assign_attributes( |
|
83 |
shiptoname => $self->{delivery_firstname} . " " . $self->{delivery_lastname}, |
|
84 |
shiptodepartment_1 => $self->{delivery_company}, |
|
85 |
shiptodepartment_2 => $self->{delivery_department}, |
|
86 |
shiptocp_gender => $gender, |
|
87 |
shiptostreet => $self->{delivery_street}, |
|
88 |
shiptozipcode => $self->{delivery_zipcode}, |
|
89 |
shiptocity => $self->{delivery_city}, |
|
90 |
shiptocountry => $self->{delivery_country}, |
|
91 |
trans_id => $customer->id, |
|
92 |
module => "CT", |
|
93 |
); |
|
94 |
$deliveryaddress->save; |
|
95 |
$shipto_id = $deliveryaddress->{shipto_id}; |
|
96 |
} |
|
86 | 97 |
} |
87 |
} |
|
88 |
|
|
89 |
my $order = SL::DB::Order->new( |
|
90 |
amount => $self->amount, |
|
91 |
cusordnumber => $self->shop_ordernumber, |
|
92 |
customer_id => $customer->id, |
|
93 |
shipto_id => $shipto_id, |
|
94 |
orderitems => [ @items ], |
|
95 |
employee_id => $employee->id, |
|
96 |
intnotes => ($customer->notes ne "" ? "\n[Kundestammdaten]\n" . $customer->notes : ""), |
|
97 |
salesman_id => $employee->id, |
|
98 |
taxincluded => $self->tax_included, |
|
99 |
payment_id => $customer->payment_id, |
|
100 |
taxzone_id => $customer->taxzone_id, |
|
101 |
currency_id => $customer->currency_id, |
|
102 |
transaction_description => 'Shop Import', |
|
103 |
transdate => DateTime->today_local |
|
98 |
|
|
99 |
my $order = SL::DB::Order->new( |
|
100 |
amount => $self->amount, |
|
101 |
cusordnumber => $self->shop_ordernumber, |
|
102 |
customer_id => $customer->id, |
|
103 |
shipto_id => $shipto_id, |
|
104 |
orderitems => [ @items ], |
|
105 |
employee_id => $employee->id, |
|
106 |
intnotes => ($customer->notes ne "" ? "\n[Kundestammdaten]\n" . $customer->notes : ""), |
|
107 |
salesman_id => $employee->id, |
|
108 |
taxincluded => $self->tax_included, |
|
109 |
payment_id => $customer->payment_id, |
|
110 |
taxzone_id => $customer->taxzone_id, |
|
111 |
currency_id => $customer->currency_id, |
|
112 |
transaction_description => 'Shop Import', |
|
113 |
transdate => DateTime->today_local |
|
114 |
); |
|
115 |
return $order; |
|
116 |
}else{ |
|
117 |
my %error_order = (error => 1, |
|
118 |
errors => [ @error_report ], |
|
104 | 119 |
); |
105 |
return $order; |
|
120 |
return \%error_order; |
|
121 |
} |
|
106 | 122 |
}; |
107 | 123 |
|
108 | 124 |
sub compare_to { |
Auch abrufbar als: Unified diff
Shopmodul: Fehlermeldung beim Übernehmen; Kunde nicht gefunden, Shopbestellung nicht gefunden, Artikel nicht gefunden, DB fehler beim Einfügen