Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision a90eee6a

Von Werner Hahn vor mehr als 6 Jahren hinzugefügt

  • ID a90eee6ac6eb3a281466688ed0b355d060656706
  • Vorgänger b6e62764
  • Nachfolger 8b2313ef

Shopmodul: ShopOrder: Massenübernahme von Shopaufträgen

Webshop:: ShopOrderMassTransfer

Webshop: ShopOrder

Webshop: ShopOrder BGJ Anzahl Orders und welche in Backgroundjob Data/Info

Webshop: ShopOrder - Bestellung löschen bzw. auf ungültig setzten

Conflicts:
SL/Controller/ShopOrder.pm
templates/webpages/shop_order/list.html

Webshop: ShopOrder - Anzahl der Positionen wird mit in die Stammdaten der Bestellung übernommen.

Conflicts:
SL/DB/ShopOrder.pm

Conflicts:
SL/ShopConnector/Shopware.pm

Webshop: Shoporder BGJ in bearbeitung

Conflicts:
SL/BackgroundJob/ShopOrderMassTransfer.pm
templates/webpages/shop_order/_transfer_status.html

Conflicts:
SL/BackgroundJob/ShopOrderMassTransfer.pm

WebShop: ShopOrder BGJ - Kundenvorschläge groß und kleinschreibung bei abfrage ignorieren
Cvars beim übernehmen der Shopimporte
Bestellbemerkung bzw. Kundenbemerkungen mit in den Auftrag in intnotes
andere fehlende Felder wie active_price_source übernehmen oder einfügen

Conflicts:
SL/ShopConnector/Shopware.pm

Webshop: ShopOrder

Webshop: ShopOrder: css, Kundendaten mit Shoprechnungsdaten überschreiben, löschen Rückgängig, löschen aus der ShopOrder heraus, In den Vorschlägen Link zum Kunden, Kunden mit Auftragssperre in den Vorschlägen kenntlich gemacht für diese können auch von dort keinen Aufträge generiert werden

Conflicts:
css/webshop.css

Conflicts:
css/webshop.css

Webshop: ShopOrder - shop_ordernumber als Kundenbestellnummer in Aufträgen usw. nutzen

Webshop: ShopOrder - TODO comment

Webshop: ShopOrder Abrufen zeigt nur nicht übernommene, Sortierung der Tabelle übernimmt die Datumsfilter.

Conflicts:
templates/webpages/shop_order/list.html

Webshop: ShopOrder - Massenkonvertierung geht wieder

WebShop: ShopOrder Liste Shoporders checkall eingebunden

WebShop: ShopOrder - Historie beim Kundenanlegen, Auftrag übernehmen und Massenauftragsübernahme

Conflicts:
SL/ShopConnector/Shopware.pm

Webshop: ShopOrder

Webshop: ShopOrder - Anlegen/Überschreiben der Kunden-, Rechnungs-, Lieferadresse als/mit Kundenadresse geht wieder

Conflicts:
SL/Controller/ShopOrder.pm

Webshop: ShopOrder - Kundenadresse ausblenden

Webshop: ShopOrder - Shopimport Kundensuche ilike; Anzahl OP's in Webshopliste; Lieferant Name 2 wird mit übertragen

Webshop: ShopOrder - payment_id wird anhand Kunden payment_id an Auftrag übergeben

Webshop: ShopOrder

Webshop: ShopOrder - Liste OPs oder Auftragssperre rot markiert
Filter Obsolete eingebaut
Proposals beim Import verbessert unschäfere Suche

Conflicts:
templates/webpages/shop_order/_transfer_status.html

Webshop: ShopOrder - Vorschläge unschäfere Suche

Webshop: ShopOrder

Conflicts:
SL/ShopConnector/Shopware.pm

Webshop: ShopOrder - BGJ ShopOrderMassTransfer angepasst wg cherry-pick

Conflicts:
SL/BackgroundJob/ShopOrderMassTransfer.pm
SL/Controller/ShopOrder.pm
SL/ShopConnector/Shopware.pm
js/kivi.ShopOrder.js
templates/webpages/shop_order/list.html

Conflicts:
SL/Controller/ShopOrder.pm
SL/DB/ShopOrder.pm
templates/webpages/shop_order/list.html

Unterschiede anzeigen:

SL/Controller/ShopOrder.pm
6 6

  
7 7
use parent qw(SL::Controller::Base);
8 8

  
9
use SL::BackgroundJob::ShopOrderMassTransfer;
10
use SL::System::TaskServer;
9 11
use SL::DB::ShopOrder;
10 12
use SL::DB::ShopOrderItem;
11 13
use SL::DB::Shop;
14
use SL::DB::History;
12 15
use SL::Shop;
13 16
use SL::Presenter;
17
use SL::Helper::Flash;
14 18
use SL::Locale::String;
15 19
use SL::Controller::Helper::ParseFilter;
16 20
use Rose::Object::MakeMethods::Generic
17 21
(
18
  'scalar --get_set_init' => [ qw(shop_order transferred) ],
22
  'scalar --get_set_init' => [ qw(shop_order transferred js) ],
19 23
);
24

  
25
__PACKAGE__->run_before('setup');
26

  
20 27
use Data::Dumper;
21 28

  
22 29
sub action_get_orders {
......
34 41

  
35 42
sub action_list {
36 43
  my ( $self ) = @_;
37
  $::lxdebug->dump(0, "WH: LIST ", \$::form);
38
  my %filter = ($::form->{filter} ? parse_filter($::form->{filter}) : query => [ transferred => 0 ]);
44
  my %filter = ($::form->{filter} ? parse_filter($::form->{filter}) : query => [ transferred => 0, obsolete => 0 ]);
39 45
  my $transferred = $::form->{filter}->{transferred_eq_ignore_empty} ne '' ? $::form->{filter}->{transferred_eq_ignore_empty} : '';
40 46
  #$::lxdebug->dump(0, "WH: FILTER ",  $::form->{filter}->{_eq_ignore_empty}." - ".$transferred);
41 47
  #$::lxdebug->dump(0, "WH: FILTER2 ",  \%filter);
......
43 49
  $sort_by .=$::form->{sort_dir} ? ' DESC' : ' ASC';
44 50
  my $shop_orders = SL::DB::Manager::ShopOrder->get_all( %filter, sort_by => $sort_by,
45 51
                                                      with_objects => ['shop_order_items'],
52
                                                      with_objects => ['customer'],
46 53
                                                    );
47
  $::lxdebug->dump(0, "WH: IMPORTS ",  \$shop_orders);
54

  
55
  foreach my $shop_order(@{ $shop_orders }){
56

  
57
    my $open_invoices = SL::DB::Manager::Invoice->get_all_count(
58
      query => [customer_id => $shop_order->{kivi_customer_id},
59
              paid => {lt_sql => 'amount'},
60
      ],
61
    );
62
    $shop_order->{open_invoices} = $open_invoices;
63
  }
64
  $main::lxdebug->dump(0, 'WH:SHOPORDER ',\$shop_orders);
65

  
66

  
48 67
  $self->render('shop_order/list',
49 68
                title       => t8('ShopOrders'),
50 69
                SHOPORDERS  => $shop_orders,
......
55 74
sub action_show {
56 75
  my ( $self ) = @_;
57 76
  my $id = $::form->{id} || {};
58
  my $shop_order = SL::DB::Manager::ShopOrder->find_by( id => $id );
77
  my $shop_order = SL::DB::Manager::ShopOrder->get_all(query => [ id => $id ],
78
                                                        with_objects => ['customer'], )->[0];
59 79
  die "can't find shoporder with id $id" unless $shop_order;
60 80

  
61 81
  # the different importaddresscheck if there complete in the customer table to prevent duplicats inserts
......
83 103
  ####
84 104

  
85 105
  my $lastname = $shop_order->customer_lastname;
106

  
86 107
  my $proposals = SL::DB::Manager::Customer->get_all(
87 108
       where => [
88 109
                   or => [
89 110
                            and => [ # when matching names also match zipcode
90
                                     or => [ 'name' => { like => "%$lastname%"},
91
                                             'name' => { like => $shop_order->customer_company },
111
                                     or => [ 'name' => { ilike => "%$lastname%"},
112
                                             'name' => { ilike => $shop_order->customer_company },
92 113
                                           ],
93
                                     'zipcode' => { like => $shop_order->customer_zipcode },
114
                                     'zipcode' => { ilike => $shop_order->customer_zipcode },
94 115
                                   ],
95
                            or  => [ 'email' => { like => $shop_order->customer_email } ],
116
                            and => [ # check for street and zipcode
117
                                     and => [ 'street'  => { ilike => "%".$shop_order->customer_street."%" },
118
                                              'zipcode' => { ilike => $shop_order->customer_zipcode },
119
                            or  => [ 'email' => { ilike => $shop_order->customer_email } ],
96 120
                         ],
97 121
                ],
98 122
  );
123
  $main::lxdebug->dump(0, 'WH:PROP ',\$proposals);
124

  
99 125

  
100 126
  $self->render('shop_order/show',
101 127
                title       => t8('Shoporder'),
......
108 134

  
109 135
}
110 136

  
137
sub action_delete_order {
138
  my ( $self ) = @_;
139

  
140
  $self->shop_order->obsolete(1);
141
  $self->shop_order->save;
142
  $self->redirect_to(controller => "ShopOrder", action => 'list', filter => { 'transferred:eq_ignore_empty' => 0 });
143
}
144

  
145
sub action_valid_order {
146
  my ( $self ) = @_;
147

  
148
  $self->shop_order->obsolete(0);
149
  $self->shop_order->save;
150
  $self->redirect_to(controller => "ShopOrder", action => 'show', id => $self->shop_order->id);
151
}
152

  
111 153
sub action_transfer {
112 154
  my ( $self ) = @_;
113 155
  my $customer = SL::DB::Manager::Customer->find_by(id => $::form->{customer});
114 156
  die "Can't find customer" unless $customer;
115 157
  my $employee = SL::DB::Manager::Employee->current;
116 158

  
117
  # $self->shop_order inits via $::form->{import_id}
118 159
  die "Can't load shop_order form form->import_id" unless $self->shop_order;
119 160

  
120 161
  my $order = $self->shop_order->convert_to_sales_order(customer => $customer, employee => $employee);
121 162
  $order->save;
163

  
164
  my $snumbers = "ordernumber_" . $order->ordnumber;
165
  SL::DB::History->new(
166
                    trans_id    => $order->id,
167
                    snumbers    => $snumbers,
168
                    employee_id => SL::DB::Manager::Employee->current->id,
169
                    addition    => 'SAVED',
170
                    what_done   => 'Shopimport -> Order',
171
                  )->save();
172
  foreach my $item(@{ $order->orderitems }){
173
    $item->parse_custom_variable_values->save;
174
    $item->{custom_variables} = \@{ $item->cvars_by_config };
175
    $item->save;
176
  }
177

  
122 178
  $self->shop_order->transferred(1);
123 179
  $self->shop_order->transfer_date(DateTime->now_local);
124 180
  $self->shop_order->oe_transid($order->id);
......
127 183
  $self->redirect_to(controller => "oe.pl", action => 'edit', type => 'sales_order', vc => 'customer', id => $order->id);
128 184
}
129 185

  
186
sub action_mass_transfer {
187
  my ($self) = @_;
188
  my @shop_orders =  @{ $::form->{id} || [] };
189

  
190
  my $job                   = SL::DB::BackgroundJob->new(
191
    type                    => 'once',
192
    active                  => 1,
193
    package_name            => 'ShopOrderMassTransfer',
194
  )->set_data(
195
     shop_order_record_ids       => [ @shop_orders ],
196
     num_order_created           => 0,
197
     num_delivery_order_created  => 0,
198
     status                      => SL::BackgroundJob::ShopOrderMassTransfer->WAITING_FOR_EXECUTION(),
199
     conversation_errors         => [ ],
200
   )->update_next_run_at;
201

  
202
   SL::System::TaskServer->new->wake_up;
203

  
204
   my $html = $self->render('shop_order/_transfer_status', { output => 0 }, job => $job);
205

  
206
   $self->js
207
      ->html('#status_mass_transfer', $html)
208
      ->run('kivi.ShopOrder.massTransferStarted')
209
      ->render;
210
}
211

  
212
sub action_transfer_status {
213
  my ($self)  = @_;
214
  my $job     = SL::DB::BackgroundJob->new(id => $::form->{job_id})->load;
215
  my $html    = $self->render('shop_order/_transfer_status', { output => 0 }, job => $job);
216

  
217
  $self->js->html('#status_mass_transfer', $html);
218
  $self->js->run('kivi.ShopOrder.massTransferFinished') if $job->data_as_hash->{status} == SL::BackgroundJob::ShopOrderMassTransfer->DONE();
219
  $self->js->render;
220

  
221
}
222

  
130 223
sub action_apply_customer {
131
  my ( $self ) = @_;
132
  $::lxdebug->dump(0, "WH: CUSTOMER ", \$::form);
133
  my $what = $::form->{create_customer}; # billing, customer or delivery
134
  $::lxdebug->dump(0, "WH: WHAT ",$what);
135
  my %address = ( 'name'       => $::form->{$what.'_name'},
136
                  'street'     => $::form->{$what.'_street'},
137
                  'zipcode'    => $::form->{$what.'_zipcode'},
138
                  'city'       => $::form->{$what.'_city'},
139
                  'email'      => $::form->{$what.'_email'},
140
                  'country'    => $::form->{$what.'_country'},
141
                  'greeting'   => $::form->{$what.'_greeting'},
142
                  'taxzone_id' => 4,  # hardcoded, use default taxzone instead
143
                  'currency'   => 1,  # hardcoded
224
  my ( $self, %params ) = @_;
225
  my $shop = SL::DB::Manager::Shop->find_by( id => $self->shop_order->shop_id );
226
  my $what = $::form->{create_customer}; # new from billing, customer or delivery address
227
  my %address = ( 'name'                  => $::form->{$what.'_name'},
228
                  'department_1'          => $::form->{$what.'_company'},
229
                  'department_2'          => $::form->{$what.'_department'},
230
                  'street'                => $::form->{$what.'_street'},
231
                  'zipcode'               => $::form->{$what.'_zipcode'},
232
                  'city'                  => $::form->{$what.'_city'},
233
                  'email'                 => $::form->{$what.'_email'},
234
                  'country'               => $::form->{$what.'_country'},
235
                  'phone'                 => $::form->{$what.'_phone'},
236
                  'email'                 => $::form->{$what.'_email'},
237
                  'greeting'              => $::form->{$what.'_greeting'},
238
                  # TODO in shopconfig
239
                        'taxincluded_checked'   => $shop->pricetype eq "brutto" ? 1 : 0,
240
                        'taxincluded'           => $shop->pricetype eq "brutto" ? 1 : 0,
241
                        'klass'                 => (split '\/',$shop->price_source)[1],
242
                        'taxzone_id'            => $shop->taxzone_id,
243
                        'currency'              => 1,   # TODO hardcoded
244
                        'payment_id'            => 7345,# TODO hardcoded
144 245
                );
145
  $address{contact} = ($address{name} ne $::form->{$what.'_firstname'} . " " . $::form->{$what.'_lastname'} ? $::form->{$what.'_firstname'} . " " . $::form->{$what.'_lastname'} : '');
146
  $::lxdebug->dump(0, "WH: ADDRESS ",\%address);
147
  my $customer = SL::DB::Customer->new(%address);
148
  $customer->save;
246
  my $customer;
247
  if($::form->{cv_id}){
248
    $customer = SL::DB::Customer->new(id => $::form->{cv_id})->load;
249
    $customer->assign_attributes(%address);
250
    $customer->save;
251
  }else{
252
    $customer = SL::DB::Customer->new(%address);
253
    $customer->save;
254
  }
255
  my $snumbers = "customernumber_" . $customer->customernumber;
256
  SL::DB::History->new(
257
                    trans_id    => $customer->id,
258
                    snumbers    => $snumbers,
259
                    employee_id => SL::DB::Manager::Employee->current->id,
260
                    addition    => 'SAVED',
261
                    what_done   => 'Shopimport',
262
                  )->save();
263

  
149 264
  if($::form->{$what.'_country'} ne "Deutschland") {   # hardcoded
150 265
    $self->redirect_to(controller => "controller.pl", action => 'CustomerVendor/edit', id => $customer->id);
151 266
  }else{
152 267
    $self->redirect_to(action => 'show', id => $::form->{import_id});
153 268
  }
154 269
}
270

  
271
sub setup {
272
  my ($self) = @_;
273
  $::auth->assert('invoice_edit');
274

  
275
  $::request->layout->use_javascript("${_}.js")  for qw(kivi.ShopOrder);
276
}
277

  
155 278
#
156 279
# Helper
157 280
#
......
159 282
  my ($self,%address) = @_;
160 283
  my $addressdata = SL::DB::Manager::Customer->get_all(
161 284
                                query => [
162
                                            or => [ 'name'   => { like => "%$address{'name'}%" }, 'name' => { like => $address{'company'} }, ],
163
                                           'street' => { like => $address{'street'} },
164
                                           'zipcode'=> { like => $address{'zipcode'} },
165
                                           'city'   => { like => $address{'city'} },
285
                                            or => [ 'name'   => { ilike => "%$address{'name'}%" }, 'name' => { ilike => $address{'company'} }, ],
286
                                           'street' => { ilike => $address{'street'} },
287
                                           'zipcode'=> { ilike => $address{'zipcode'} },
288
                                           'city'   => { ilike => $address{'city'} },
166 289
                                         ]);
167 290
  $::lxdebug->dump(0, "WH: CUSTOMER ", \$addressdata);
168 291
  return @{$addressdata}[0];

Auch abrufbar als: Unified diff