Subversion-Projekte lars-tiefland.ci

Revision

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