Subversion-Projekte lars-tiefland.ci

Revision

Revision 1407 | Revision 1410 | Zur aktuellen Revision | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1132 lars 1
<?php
2
 
3
/**
4
 *
5
 * @package WebanOS CI
6
 * @author Lars Tiefland <ltiefland@gmail.com>
7
 * @copyright 2016
8
 * @version $Rev: 1409 $
9
 */
10
 
11
class Order_model extends CI_Model
12
{
13
	public function __construct()
14
	{
15
		parent::__construct();
1136 lars 16
		$this->load->model('bestelladresse_model', 'bestelladresse');
17
		$this->load->model('artikel_to_bestellung_model', 'artikel');
1309 lars 18
		$this->load->model('dokumente_model', 'dokumente');
1132 lars 19
	}
20
 
1393 lars 21
	public function get_list($start = 0)
1132 lars 22
	{
1392 lars 23
		$filter = $this->input->post('filter');
1409 lars 24
		switch ($filter['versandstatus'])
25
		{
26
			case 1:
27
				$versandstatus_filter = " ab.status = 'offen' ";
28
				break;
29
			case 2:
30
				$versandstatus_filter = " ab.status = 'freigegeben' ";
31
				break;
32
			case 3:
33
				$versandstatus_filter = " ab.status = 'versand' ";
34
				break;
35
			case 4:
36
				$versandstatus_filter = " ab.status = '' ";
37
				break;
38
			case 5:
39
				$versandstatus_filter = " ab.status = '' or ab.status = 'offen' ";
40
				break;
41
			default:
42
				$versandstatus_filter = "";
43
				break;
44
		}
1407 lars 45
 
1409 lars 46
		switch ($filter["status"])
47
		{
48
			case "op": // offene Posten
49
				$status_filter = " ab.status IN ('offen')";
50
				break;
51
			case "ib": // in Bearbeitung
52
				$status_filter = " ab.status IN ('in Bearbeitung')";
53
				break;
54
			case "re": // reserviert
55
				$status_filter = " ab.status IN ('reserviert')";
56
				break;
57
			case "op_ib": // offene Posten & in Bearbeitung
58
				$status_filter = " ab.status IN ('offen','in Bearbeitung')";
59
				break;
60
			case "op_ib_re": // offene Posten & in Bearbeitung
61
				$status_filter = " ab.status IN ('offen', 'in Bearbeitung','reserviert')";
62
				break;
63
			case "er": // erledigt
64
				$status_filter = " ab.status IN ('erledigt')";
65
				break;
66
			case "ab": // erledigt
67
				$status_filter = " ab.status IN ('abgeschlossen')";
68
				break;
69
			default: // alle
70
				$status_filter = "";
71
				break;
72
		}
1407 lars 73
 
1409 lars 74
		if (isset($web_rechte["Warenwirtschaft"]["bestellung"]["bestellStatus"]))
75
		{
76
			switch ($filter["bStatus"])
77
			{
78
				case "of_fr_ve":
79
					$bStatus_filter = "b.status IN ('offen','freigegeben','versand')";
80
					break;
81
				case "offen":
82
				case "wartend":
83
				case "storniert":
84
				case "freigegeben":
85
				case "versand":
86
					$bStatus_filter = " b.status='".$filter["bStatus"]."'";
87
					break;
88
				case "alle":
89
					$bStatus_filter = "";
90
					break;
91
			}
92
		}
1407 lars 93
 
1409 lars 94
		switch ($filter['bezahlstatus'])
95
		{
96
			case 1:
97
				$bezahlstatus_filter = " b.bezahlt=0 ";
98
				break;
99
			case 2:
100
				$bezahlstatus_filter = " b.bezahlt=1 ";
101
				break;
102
			case 3:
103
				$bezahlstatus_filter = " b.bezahlt=2 ";
104
				break;
105
			case 4:
106
				$bezahlstatus_filter = " b.bezahlt IN (1,2) ";
107
				break;
108
			default:
109
				$bezahlstatus_filter = "";
110
				break;
111
		}
1407 lars 112
 
1392 lars 113
		if (isset($GLOBALS["web_rechte"]["Warenwirtschaft"]["bestellung"]["bestellStatus"]))
114
		{
115
			switch ($filter["bStatus"])
116
			{
117
				case "of_fr_ve":
118
					$bStatus_filter = "b.status IN ('offen','freigegeben','versand')";
119
					break;
120
				case "offen":
121
				case "wartend":
122
				case "storniert":
123
				case "freigegeben":
124
				case "versand":
125
					$bStatus_filter = " b.status='".$filter["bStatus"]."'";
126
					break;
127
				case "alle":
128
					$bStatus_filter = "";
129
					break;
130
			}
131
		}
132
		if ($filter["laender"])
133
		{
134
			switch ($filter["laender"])
135
			{
136
				case 0: //alle
137
					$sql_filter[] = "";
138
					break;
139
				case 1:
140
					if (isset($GLOBALS["web_rechte"]["Warenwirtschaft"]["bestellung"]["adressbuch"]))
141
					{
142
						$coFeld = "co.country";
143
						if (isset($GLOBALS["web_rechte"]["general"]["laenderzuordnung"]["global"]))
144
						{
145
							if ($GLOBALS["web_rechte"]["online_shop"]["language"]["standardsprache"] == "UK")
146
							{
147
								$coFeld = "co.`name-en`";
148
								$coFeldSip = "coShip.`name-en`";
149
								$coFeldBill = "coBill.`name-en`";
150
							}
151
							else
152
							{
153
								$coFeld = "co.`name-ger`";
154
								$coFeldShip = "coShip.`name-ger`";
155
								$coFeldBill = "coBill.`name-ger`";
156
							}
157
						}
158
						$sql_filter[] = $coFeldShip." NOT LIKE '%Deutschland%'";
159
						$sql_filter[] = $coFeldShip." NOT LIKE '%Germany%'";
160
						$sql_filter[] = $coFeldBill." NOT LIKE '%Deutschland%'";
161
						$sql_filter[] = $coFeldBill." NOT LIKE '%Germany%'";
162
					}
163
					else
164
					{
165
						$sql_filter[] = " b.liefer_Land NOT LIKE '%Deutschland%'";
166
						$sql_filter[] = " l.Land NOT LIKE '%Deutschland%'";
167
						$sql_filter[] = " b.liefer_Land NOT LIKE '%Germany%'";
168
						$sql_filter[] = " l.Land NOT LIKE '%Germany%'";
169
					}
170
					break;
171
				default:
172
 
173
					if (isset($GLOBALS["web_rechte"]["Warenwirtschaft"]["bestellung"]["adressbuch"]))
174
					{
175
						$coFeld = "co.country";
176
						if (isset($GLOBALS["web_rechte"]["general"]["laenderzuordnung"]["global"]))
177
						{
178
							if ($GLOBALS["web_rechte"]["online_shop"]["language"]["standardsprache"] == "UK")
179
							{
180
								$coFeld = "co.`name-en`";
181
								$coFeldSip = "coShip.`name-en`";
182
								$coFeldBill = "coBill.`name-en`";
183
							}
184
							else
185
							{
186
								$coFeld = "co.`name-ger`";
187
								$coFeldShip = "coShip.`name-ger`";
188
								$coFeldBill = "coBill.`name-ger`";
189
							}
190
						}
191
						$sql_filter[] = $coFeldShip." LIKE '%".$laender_filter[$filter["laender"]]."%'";
192
						$sql_filter[] = $coFeldBill." LIKE '%".$laender_filter[$filter["laender"]]."%'";
193
					}
194
					else
195
					{
196
						//Diese Wenn das Recht nicht gesetzt ist, dann müssen die Länder wieder decodiert werden, damit das SQL keine falschen Daten liefert
197
						if (!isset($GLOBALS["web_rechte"]["general"]["zeichenkodierung"]["utf-8"]))
198
						{
199
							$suchland = html_entity_decode($laender_filter[$filter["laender"]], ENT_COMPAT,
200
								"ISO-8859-15");
201
						}
202
						else
203
						{
204
							$suchland = $laender_filter[$filter["laender"]];
205
						}
206
						$sql_filter[] = " (b.liefer_Land LIKE '%".$suchland."%' OR l.Land LIKE '%".$suchland.
207
							"%')";
208
					}
209
					break;
210
			}
211
		}
212
 
213
		if (isset($GLOBALS["web_rechte"]["Warenwirtschaft"]["logistiker"]["logistiker"]))
214
		{
215
			switch ($filter["logistiker"])
216
			{
217
				case 0:
218
					$logistiker_filter = "";
219
					break;
220
				default:
221
					$logistiker_filter = "btl.logistiker = ".$filter["logistiker"];
222
			}
223
		}
224
 
225
		switch ($filter["zeit"])
226
		{
227
			case 0: // alle
228
				$time_filter = "";
229
				break;
230
			case 1: // heute
231
				$time_filter = " current_date()=date_format(b.erstellt_am,\"%Y-%m-%d\") ";
232
				break;
233
			case 2: // gestern
234
				$time_filter = " date_sub(current_date(), INTERVAL 1 DAY)=date_format(b.erstellt_am,\"%Y-%m-%d\") ";
235
				break;
236
			case 3: // vorgestern
237
				$time_filter = " date_sub(current_date(), INTERVAL 2 DAY)=date_format(b.erstellt_am,\"%Y-%m-%d\") ";
238
				break;
239
			case 4: // lfd. Woche
240
				$time_filter = " date_format(b.erstellt_am,\"%U%Y\") = date_format(NOW(),\"%U%Y\")";
241
				break;
242
			case 5: // letzte Woche
243
				$time_filter = " date_format(b.erstellt_am,\"%U%Y\") = date_format(date_sub(NOW(), INTERVAL 7 DAY),\"%U%Y\")";
244
				break;
245
			case 6: // lfd. Monat
246
				$time_filter = " date_format(b.erstellt_am,\"%m%Y\") = date_format(NOW(),\"%m%Y\")";
247
				break;
248
			case 7: // letzter Monat
249
				$time_filter = " date_format(b.erstellt_am,\"%m%Y\") = date_format(date_sub(NOW(), INTERVAL 1 MONTH),\"%m%Y\")";
250
				break;
251
			case 8: // letzter Monat
252
				$time_filter = " date_format(b.erstellt_am,\"%m%Y\") = date_format(date_sub(NOW(), INTERVAL 2 MONTH),\"%m%Y\")";
253
				break;
254
			case 9: // letzter Monat
255
				$time_filter = " date_format(b.erstellt_am,\"%m%Y\") = date_format(date_sub(NOW(), INTERVAL 3 MONTH),\"%m%Y\")";
256
				break;
257
			case 10: // letzter Monat
258
				$time_filter = " date_format(b.erstellt_am,\"%m%Y\") = date_format(date_sub(NOW(), INTERVAL 4 MONTH),\"%m%Y\")";
259
				break;
260
			case 11: // letzter Monat
261
				$time_filter = " date_format(b.erstellt_am,\"%m%Y\") = date_format(date_sub(NOW(), INTERVAL 5 MONTH),\"%m%Y\")";
262
				break;
263
			case 12: // letzter Monat
264
				$time_filter = " date_format(b.erstellt_am,\"%m%Y\") = date_format(date_sub(NOW(), INTERVAL 6 MONTH),\"%m%Y\")";
265
				break;
266
			case 13: // letzter Monat
267
				$time_filter = " date_format(b.erstellt_am,\"%m%Y\") = date_format(date_sub(NOW(), INTERVAL 7 MONTH),\"%m%Y\")";
268
				break;
269
			case 14: // Aktuelles Jahr
270
				$time_filter = " date_format(b.erstellt_am,\"%Y\") = date_format(NOW(),\"%Y\")";
271
				break;
272
			case 15: // Letztes Jahr
273
				$anfangletztesJahr = (date('Y') - 1)."-01-01 00:00:00";
274
				$endeletztesJahr = (date('Y') - 1)."-12-31 23:59:59";
275
				$time_filter = " b.erstellt_am BETWEEN '".$anfangletztesJahr."' AND '".$endeletztesJahr.
276
					"'";
277
				break;
278
			default: // alle
279
				$time_filter = "";
280
				break;
281
		}
282
		if ($filter["dokument"] && isset($GLOBALS["user_rechte"]["Warenwirtschaft"]["bestellung"]["suche"]))
283
		{
284
			$doc_join = "
285
				JOIN
286
					dokumente d
287
				ON
288
					d.data_foreign=b.id
289
				AND
290
					table_foreign='Bestellung'
291
			";
292
			$sql_filter[] = "
293
				document LIKE '%".$filter["dokument"]."%'
294
			";
295
		}
296
 
297
		//print_r($filter);
298
 
299
		if (!empty($filter["versanddatum"]))
300
		{
301
			$sql_filter[] = "  bd.EarliestShipDate like '%".$filter["versanddatum"]."%' ";
302
			//  echo $sql_filter;
303
		}
304
 
305
		if ($time_filter)
306
		{
307
			$sql_filter[] = $time_filter;
308
		}
309
		if ($status_filter)
310
		{
311
			$sql_filter[] = $status_filter;
312
		}
313
		if ($bezahlstatus_filter)
314
		{
315
			$sql_filter[] = $bezahlstatus_filter;
316
		}
317
		if ($versandstatus_filter)
318
		{
319
			$sql_filter[] = $versandstatus_filter;
320
		}
321
		if ($bStatus_filter)
322
		{
323
			$sql_filter[] = $bStatus_filter;
324
		}
325
		if ($logistiker_filter)
326
		{
327
			$sql_filter[] = $logistiker_filter;
328
		}
329
		if (isset($filter["bestellung_ID"]) && $filter["bestellung_ID"])
330
		{
331
			$sql_filter[] = " ab.Bestellung=".$filter["bestellung_ID"];
332
		}
333
		if (isset($filter["fremd_ID"]) && $filter["fremd_ID"])
334
		{
335
			$sql_filter[] = " b.fremd_id LIKE '%".$filter["fremd_ID"]."%'";
336
		}
337
		if (isset($filter["status1"]) && $filter["status1"])
338
		{
339
			$sql_filter[] = " status1 = '".$filter["status1"]."'";
340
		}
341
		if (isset($filter["shortline1"]) && $filter["shortline1"])
342
		{
343
			$sql_filter[] = " shortline1 LIKE '%".$filter["shortline1"]."%'";
344
		}
345
 
346
		if (isset($_GET["login_id"]) && $_GET["login_id"])
347
		{
348
			$sql_filter[] = "b.Login=".$_GET["login_id"];
349
			$limit = "LIMIT ".SmartyPaginate::getCurrentIndex($pagination_id).", ".
350
				SmartyPaginate::getLimit($pagination_id);
351
		}
352
 
353
		$this->smarty->assign("script_name", "/Warenwirtschaft/bestellungen_neu.php");
354
		// <!-- M.Niewerth 22.04.2004-->
355
		$is_string = (strlen($filter["kundensuche"]) > 1 && strlen($filter["kundensuche"]) <
356
			$max_string_lenght) ? true : false;
357
		$fields = array(
358
 
359
			"Name1",
360
			"Name2",
361
			"Strasse",
362
			"PLZ",
363
			"ORT",
364
			"Telefon",
365
			"Fax",
366
			"E_Mail",
367
			"ID",
368
			);
369
		if (column_exists("Login", "ebay_UserID", $webs["datenbank"], $remoteServer_dbh))
370
		{
371
			$fields[] = "ebay_UserID";
372
		}
373
		//Array welches die Felder in der Bestelladresse enthält
374
		$fields_neu = array(
375
 
376
			"nachname",
377
			"firma",
378
			"strasse1",
379
			"plz",
380
			"ort",
381
			"telefon",
382
			"fax",
383
			"email",
384
			);
385
		switch ($is_string)
386
		{
387
			case false: // leere Zeichenkette
388
				unset($kundensuche_filter);
389
				unset($tabelle_login);
390
				break;
391
			case true:
392
				$kundensuche_filter = " ( ";
393
 
394
				foreach (array_keys($fields) as $elem)
395
				{
396
					$kundensuche_filter .= " (l.".$fields[$elem]."  like '%".$filter["kundensuche"].
397
						"%') ";
398
					//Wenn das Recht gesetzt ist, muss zusätzlich in der Bestelladresse gesucht werden weil Gastbestellungen die Logins_ID 1 haben und somit nicht gefunden werden
399
					if (isset($GLOBALS["web_rechte"]["Warenwirtschaft"]["bestellung"]["adressbuch"]) ||
400
						column_exists("Bestellung", "ship_addr_id", $webs["datenbank"], $remoteServer_dbh))
401
					{
402
						//Da es weniger felder im neuem Array gibt, muss geprüft werden, ob das Feld überhaupt gesetzt ist.
403
						if (isset($fields_neu[$elem]))
404
						{
405
							$kundensuche_filter .= " or (baShip.".$fields_neu[$elem]."  like '%".$filter["kundensuche"].
406
								"%') ";
407
							$kundensuche_filter .= " or (baBill.".$fields_neu[$elem]."  like '%".$filter["kundensuche"].
408
								"%') ";
409
						}
410
					}
411
 
412
					$kundensuche_filter .= ($elem + 1 == count($fields)) ? "" : " or ";
413
 
414
				}
415
				$kundensuche_filter .= "OR (b.erstellt_von LIKE '".$filter["kundensuche"]."')";
416
 
417
				if (isset($GLOBALS["web_rechte"]["Warenwirtschaft"]["bestellung"]["adressbuch"]))
418
				{
419
					$coFeld = "co.country";
420
					if (isset($GLOBALS["web_rechte"]["general"]["laenderzuordnung"]["global"]))
421
					{
422
 
423
						if ($GLOBALS["web_rechte"]["online_shop"]["language"]["standardsprache"] == "UK")
424
						{
425
 
426
							$coFeld = "co.`name-en`";
427
							$coFeldSip = "coShip.`name-en`";
428
							$coFeldBill = "coBill.`name-en`";
429
						}
430
						else
431
						{
432
							$coFeld = "co.`name-ger`";
433
							$coFeldShip = "coShip.`name-ger`";
434
							$coFeldBill = "coBill.`name-ger`";
435
						}
436
					}
437
					$kundensuche_filter .= " or ( ".$coFeldShip." LIKE  '%".$filter["kundensuche"].
438
						"%' )";
439
					$kundensuche_filter .= " or ( ".$coFeldBill." LIKE  '%".$filter["kundensuche"].
440
						"%' )";
441
				}
442
				else
443
				{
444
					//MK: Lieferland auch abfragen
445
					$kundensuche_filter .= " or ( b.liefer_Land like '%".$filter["kundensuche"].
446
						"%' )";
447
				}
448
 
449
				$kundensuche_filter .= " ) ";
450
				$sql_filter[] = $kundensuche_filter;
451
				unset($kundensuche_filter);
452
				break;
453
			default: // standard
454
				unset($kundensuche_filter);
455
				break;
456
		}
457
		switch ($filter["rechnungsstatus"])
458
		{
459
			case "S":
460
				$r_status_filter = " ab.rechnungstatus='schreiben'";
461
				break;
462
			case "G":
463
				$r_status_filter = " ab.rechnungstatus='geschrieben'";
464
				break;
465
			case "B":
466
				$r_status_filter = " ab.rechnungstatus='bezahlt'";
467
				break;
468
			case "O":
469
				$r_status_filter = " ab.rechnungstatus=''";
470
				$r_status_select = "SUM(IF(ab.rechnungstatus='',1,0)) AS sum_ohne,";
471
				if ($filter["status"] != "")
472
				{
473
					$r_status_group = " GROUP BY Bestellung HAVING sum_ohne >= 1";
474
				}
475
				else
476
				{
477
					$r_status_group = " GROUP BY Bestellung HAVING sum_ohne > 1";
478
				}
479
 
480
				break;
481
			case "":
482
			default:
483
				unset($r_status_filter);
484
		}
485
		if ($filter["shopID"] && !$_GET["login_id"])
486
		{
487
			$sql_filter[] = " b.shops_ID=".$filter["shopID"];
488
		}
489
		if ($filter["rechnungsstatus"])
490
		{
491
			$sql_filter[] = $r_status_filter;
492
		}
493
		if ($filter["bestellart_id"] != "" && !$_GET["login_id"])
494
		{
495
			$bestellart_id = $filter["bestellart_id"];
496
			$sql_filter[] = "bestellart_id=$bestellart_id";
497
		}
498
 
499
		// Anfang Artikelsuche 05.10.2004
500
		$is_numeric = is_numeric($filter["artikelsuche"]);
501
		$is_string = (strlen($filter["artikelsuche"]) > 1 && strlen($filter["artikelsuche"]) <
502
			$max_string_lenght) ? true : false;
503
		if ($is_numeric)
504
		{
505
			$is_string = false;
506
		}
507
		$fields = array(0 => "Bezeichnung");
508
		switch ($is_string)
509
		{
510
			case false: // leere Zeichenkette
511
				if ($is_numeric)
512
				{
513
					$artikelsuche_filter = "ab.artikel=".$filter["artikelsuche"];
514
					$sql_filter[] = $artikelsuche_filter;
515
				}
516
				else
517
				{
518
					unset($artikelsuche_filter);
519
				}
520
				break;
521
			case true:
522
				$artikelsuche_filter = " ( ";
523
				foreach (array_keys($fields) as $elem)
524
				{
525
					$artikelsuche_filter .= " (ab.".$fields[$elem]."  like '%".$filter["artikelsuche"].
526
						"%') ";
527
					$artikelsuche_filter .= ($elem + 1 == count($fields)) ? "" : " or ";
528
				}
529
				$artikelsuche_filter .= " ) ";
530
				$sql_filter[] = $artikelsuche_filter;
531
				unset($artikelsuche_filter);
532
				break;
533
			default: // standard
534
				unset($artikelsuche_filter);
535
				break;
536
		}
537
		// Ende Artikelsuche
538
 
539
		if ($filter["paketnummer"] && $filter_pn)
540
		{
541
			$sql_filter[] = "bp.paketnummer LIKE '%".$filter["paketnummer"]."%'";
542
			$bp_join = "JOIN bestellung_paketnummern bp ON bp.bestellung=b.id";
543
		}
544
 
545
		//$order = "Bestellung DESC";
546
		if ($filter["fremd_ID"] || $filter["bestellung_ID"])
547
		{
548
			$limit = "";
549
		}
550
		else
551
		{
1393 lars 552
			$limit = "LIMIT ".$start.", 100";
1392 lars 553
		}
554
 
555
		if (isset($GLOBALS["web_rechte"]["Warenwirtschaft"]["bestellung"]["adressbuch"]) ||
556
			column_exists("Bestellung", "ship_addr_id", $webs["datenbank"], $remoteServer_dbh))
557
		{
558
 
559
			$countryTable = "countries co";
560
			if (isset($GLOBALS["web_rechte"]["general"]["laenderzuordnung"]["global"]))
561
			{
562
				$countryTable = "content_management.".$countryTable;
563
			}
564
			elseif (!isset($GLOBALS["web_rechte"]["logins"]['admin']['adressverwaltung']) &&
565
				column_exists("Bestellung", "ship_addr_id", $webs["datenbank"], $remoteServer_dbh))
566
			{
567
				$countryTable = "content_management.".$countryTable;
568
				$coFeld = "co.`name-ger`";
569
 
570
			}
571
 
572
			$adresse_join = "LEFT JOIN bestelladresse baShip
573
                         ON   b.ship_addr_id = baShip.id
574
                         LEFT JOIN bestelladresse baBill
575
                         ON   b.bill_addr_id = baBill.id
576
                         LEFT JOIN ".$countryTable."Ship
577
                         ON   coShip.id = baShip.land
578
                         LEFT JOIN ".$countryTable."Bill
579
                         ON   coBill.id = baBill.land
580
        ";
581
		}
582
 
583
		if (isset($GLOBALS["web_rechte"]["Warenwirtschaft"]["logistiker"]["logistiker"]) &&
584
			$logistiker_filter != "")
585
		{
586
			$logistiker_join = "JOIN bestellung_logistiker btl ON btl.bestellung = b.ID";
587
		}
1397 lars 588
		if (!$sql_filter)
589
		{
590
			$sql_filter[] = "1";
591
		}
1400 lars 592
		$ret = array(
593
			"orders" => array(),
594
			"orderAnz" => 0,
595
			);
596
		$sql = "SELECT SQL_CALC_FOUND_ROWS
1406 lars 597
				DISTINCT
1173 lars 598
				b.id
1132 lars 599
			FROM
1392 lars 600
				bestellart ba,
601
				Logins AS l,
602
				shops AS s,
603
				artikel_to_Bestellung ab,
1150 lars 604
				Bestellung b
1392 lars 605
			WHERE
1395 lars 606
				".implode(" AND ", $sql_filter)."
1392 lars 607
			AND
608
				l.ID = b.Login
609
			AND
610
				s.ID = b.shops_ID
611
			AND
612
				ab.bestellung=b.id
613
			AND
614
				ba.id=b.bestellart_id
1132 lars 615
			ORDER BY
1152 lars 616
				b.id DESC
1145 lars 617
			LIMIT
618
				100
1132 lars 619
		";
620
		$res = $GLOBALS['order_db']->query($sql);
1405 lars 621
		echo $sql;
1404 lars 622
		$sql_anz = "SELECT
623
				FOUND_ROWS() AS total
624
		";
625
		$res_anz = $GLOBALS["order_db"]->query($sql_anz);
626
		$row = $res_anz->row_array();
1134 lars 627
		while ($order = $res->unbuffered_row('array'))
1132 lars 628
		{
1173 lars 629
			$order = $this->get($order['id']);
1402 lars 630
			$ret["orders"][] = $order;
1132 lars 631
		}
1400 lars 632
		$ret["orderAnz"] = $row["total"];
633
		return $ret;
1132 lars 634
	}
1173 lars 635
 
636
	public function get($id)
637
	{
638
		$orders = array();
639
		$sql = "SELECT
640
				b.id,
1273 lars 641
				b.language,
1192 lars 642
				b.shops_ID,
643
				b.login,
1173 lars 644
				bill_addr_id,
645
				ship_addr_id,
646
				erstellt_am,
1204 lars 647
				erstellt_von,
648
				letzte_aenderung_am,
649
				letzte_aenderung_von,
1173 lars 650
				status,
1281 lars 651
				gesamtsumme_buffer,
1173 lars 652
				fremd_id,
653
				artikelstatus_buffer,
654
				rechnungsstatus_buffer,
655
				lieferscheinstatus_buffer,
656
				bezahlt,
1332 lars 657
				Bemerkung,
658
				Bemerkung_extern,
1173 lars 659
				bezahlt_am,
1273 lars 660
				s.name AS shop,
1277 lars 661
				ba.name AS bestellart
1173 lars 662
			FROM
663
				Bestellung b
664
			JOIN
665
				shops s
666
			ON
667
				s.id=b.shops_id
1273 lars 668
			JOIN
669
				bestellart ba
670
			ON
1274 lars 671
				ba.id=b.bestellart_id
1173 lars 672
			WHERE
673
				b.id=".$id."
674
		";
675
		$res = $GLOBALS['order_db']->query($sql);
676
		$order = $res->unbuffered_row('array');
677
		$billAddr = $this->bestelladresse->get($order['bill_addr_id']);
678
		$shipAddr = $this->bestelladresse->get($order['ship_addr_id']);
679
		$artikel = $this->artikel->get($order['id']);
1309 lars 680
		$dokumente = $this->dokumente->get_list($order['id']);
1173 lars 681
		$artikelstatus_buffer = unserialize($order["artikelstatus_buffer"]);
682
		foreach ($artikelstatus_buffer as $key => $value)
683
		{
684
			switch ($key)
685
			{
686
				case "statusOffen":
687
					$info[$key]["class"] = "status_red";
688
					break;
689
				case "statusInBearbeitung":
690
					$info[$key]["class"] = "status_yellow";
691
					break;
692
				case "statusReserviert":
693
					$info[$key]["class"] = "status_blue";
694
					break;
695
				case "statusErledigt":
696
					$info[$key]["class"] = "status_green";
697
					break;
698
				case "statusAbgeschlossen":
699
				default:
700
					$info[$key]["class"] = "status_white";
701
					break;
702
 
703
			}
704
			$info[$key]["wert"] = $value;
705
		}
706
		$order["info"] = $info;
707
		$rechnungsstatus_buffer = unserialize($order["rechnungsstatus_buffer"]);
708
		foreach ($rechnungsstatus_buffer as $key => $value)
709
		{
710
			switch ($key)
711
			{
712
				case "rechnungSchreiben":
713
					$rstatus[$key]["class"] = "status_red";
714
					break;
715
				case "rechnungGeschrieben":
716
					$rstatus[$key]["class"] = "status_yellow";
717
					break;
718
				case "rechnungBezahlt":
719
					$rstatus[$key]["class"] = "status_green";
720
					break;
721
 
722
			}
723
			$rstatus[$key]["wert"] = $value;
724
		}
725
		$order["rechnungsstatus"] = $rstatus;
726
		$lieferscheinstatus_buffer = unserialize($order["lieferscheinstatus_buffer"]);
727
		foreach ($lieferscheinstatus_buffer as $key => $value)
728
		{
729
			switch ($key)
730
			{
731
				case "lieferscheinSchreiben":
732
					$lstatus[$key]["class"] = "status_yellow";
733
					break;
734
				case "lieferscheinGeschrieben":
735
					$lstatus[$key]["class"] = "status_green";
736
					break;
737
				case "lieferscheinOffen":
738
					$lstatus[$key]["class"] = "status_red";
739
					break;
740
 
741
			}
742
			$lstatus[$key]["wert"] = $value;
743
		}
744
		$order['lieferscheinstatus'] = $lstatus;
1309 lars 745
		$order['dokumente'] = $dokumente;
1173 lars 746
		$order['artikel'] = $artikel;
747
		$order['shipAddr'] = $shipAddr;
748
		$order['billAddr'] = $billAddr;
749
 
750
		return $order;
751
	}
1335 lars 752
 
753
	public function save()
754
	{
755
		$Bestellung = $this->input->post('Bestellung');
756
		if ((isset($_GET["update"]) && $_GET["update"]) || (isset($_POST["update"]) && $_POST["update"]))
757
		{
758
 
759
			if ($_POST["update"])
760
			{
761
				$update = $_POST["update"];
762
			}
763
			else
764
			{
765
				$update = $_GET["update"];
766
			}
767
 
768
			if ($_POST["cmd"])
769
			{
770
				foreach (array_keys($_POST["cmd"]) as $table)
771
				{
772
					foreach (array_keys($_POST["cmd"][$table]) as $primaryKeyValue)
773
					{
774
						$changed_id = "artikel_".$primaryKeyValue."_changed";
775
						if ($_POST[$changed_id] == 1)
776
						{
777
							foreach (array_keys($_POST["cmd"][$table][$primaryKeyValue]) as $tablefield)
778
							{
779
								$query = "
780
									UPDATE
781
										".$table."
782
									SET
783
										".$tablefield." = '".$GLOBALS["order_db"]->escape(html_entity_decode($_POST["cmd"][$table][$primaryKeyValue][$tablefield],
784
									ENT_COMPAT, $_SESSION["charset"]))."'
785
									WHERE
786
										ID = '".$primaryKeyValue."'
787
								";
788
								$result = $GLOBALS["order_db"]->query($query);
789
							}
790
						}
791
					}
792
				}
793
			}
794
			$upd_fields[] = "Bemerkung=".$GLOBALS["order_db"]->escape($_POST["Bemerkung"]).
795
				"";
796
 
797
			if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["shortline1"]))
798
			{
799
				$upd_fields[] = "shortline1 = ".$GLOBALS["order_db"]->escape($_POST["shortline1"]).
800
					"";
801
			}
802
			if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["shortline2"]))
803
			{
804
				$upd_fields[] = "shortline2 = ".$GLOBALS["order_db"]->escape($_POST["shortline2"]).
805
					"'";
806
			}
807
			if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["status1"]))
808
			{
809
				$upd_fields[] = "status1 = '".$GLOBALS["order_db"]->escape($_POST["status1"]).
810
					"";
811
			}
812
			if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["Bemerkung_extern"]))
813
			{
814
				$upd_fields[] = "Bemerkung_extern=".$GLOBALS["order_db"]->escape($_POST["Bemerkung_extern"]).
815
					"";
816
			}
817
			if (isset($user_rechte["Warenwirtschaft"]["bezahlstatus"]["bezahlstatus"]))
818
			{
819
				$upd_fields[] = "bezahlt=".$GLOBALS["order_db"]->escape($_POST["bezahlt"])."";
820
				$upd_fields[] = "bezahlt_bemerkung=".$GLOBALS["order_db"]->escape($_POST["bezahlt_bemerkung"]).
821
					"";
822
			}
823
			if (isset($_POST['fremd_id']))
824
			{
825
				$upd_fields[] = "fremd_id=".$GLOBALS["order_db"]->escape($_POST["fremd_id"])."";
826
			}
827
			$sql = "
828
				SELECT
829
					erstellt_von
830
				FROM
831
					Bestellung
832
				WHERE
833
					ID=".$Bestellung."
834
			";
835
 
836
			$result = $GLOBALS["order_db"]->query($sql);
837
			$zeile = $result->unbuffered_row('array');
838
			if ($zeile["erstellt_von"] == '')
839
			{
840
				$upd_fields[] = "erstellt_von='".$this->session->user_data['user']."'";
841
			}
842
			if ($_POST["s_changed"] == 1)
843
			{
844
				$upd_fields[] = "shops_ID=".$_POST["s_id"];
845
			}
846
			$sql = "
847
				UPDATE
848
					Bestellung
849
				SET
850
					letzte_Aenderung_von='".$this->session->user_data['user']."',
851
					".implode(",", $upd_fields)."
852
				WHERE
853
					ID=".$Bestellung."
854
			";
855
			$GLOBALS["order_db"]->query($sql);
856
			if (isset($_POST["logistiker_id"]))
857
			{
858
				if ($_POST["logistiker_id"])
859
				{
860
					$sql_bl = "
861
						REPLACE INTO
862
							bestellung_logistiker
863
						SET
864
							bestellung=".$Bestellung.",
865
							logistiker=".$_POST["logistiker_id"]."
866
					";
867
 
868
					$GLOBALS["order_db"]->query($sql_bl);
869
					if (isset($web_rechte["admin"]["toolbox"]["logbuch"]))
870
					{
871
						$GLOBALS["Log"]["best"]->log("Logistiker der Bestellung geändert", $Bestellung);
872
					}
873
				}
874
				else
875
				{
876
					$sql_bl = "
877
						DELETE FROM
878
							bestellung_logistiker
879
						WHERE
880
							bestellung=".$Bestellung."
881
					";
882
					$GLOBALS["order_db"]->query($sql_bl);
883
					if (isset($web_rechte["admin"]["toolbox"]["logbuch"]))
884
					{
885
						$GLOBALS["Log"]["best"]->log("Logistiker der Bestellung geändert", $Bestellung);
886
					}
887
				}
888
			}
889
			if (isset($update["current"]))
890
			{
891
				header("Location: /backend/order/edit/".$Bestellung);
892
			}
893
			elseif (isset($update["list"]))
894
			{
895
				header("Location: /backend/order/index/".$Bestellung);
896
			}
897
		}
898
	}
1132 lars 899
}
900
 
1332 lars 901
?>