Subversion-Projekte lars-tiefland.ci

Revision

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