Subversion-Projekte lars-tiefland.ci

Revision

Revision 1392 | Revision 1394 | 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: 1393 $
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');
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
		{
1393 lars 463
			$limit = "LIMIT ".$start.", 100";
1392 lars 464
		}
465
 
466
		if (isset($GLOBALS["web_rechte"]["Warenwirtschaft"]["bestellung"]["adressbuch"]) ||
467
			column_exists("Bestellung", "ship_addr_id", $webs["datenbank"], $remoteServer_dbh))
468
		{
469
 
470
			$countryTable = "countries co";
471
			if (isset($GLOBALS["web_rechte"]["general"]["laenderzuordnung"]["global"]))
472
			{
473
				$countryTable = "content_management.".$countryTable;
474
			}
475
			elseif (!isset($GLOBALS["web_rechte"]["logins"]['admin']['adressverwaltung']) &&
476
				column_exists("Bestellung", "ship_addr_id", $webs["datenbank"], $remoteServer_dbh))
477
			{
478
				$countryTable = "content_management.".$countryTable;
479
				$coFeld = "co.`name-ger`";
480
 
481
			}
482
 
483
			$adresse_join = "LEFT JOIN bestelladresse baShip
484
                         ON   b.ship_addr_id = baShip.id
485
                         LEFT JOIN bestelladresse baBill
486
                         ON   b.bill_addr_id = baBill.id
487
                         LEFT JOIN ".$countryTable."Ship
488
                         ON   coShip.id = baShip.land
489
                         LEFT JOIN ".$countryTable."Bill
490
                         ON   coBill.id = baBill.land
491
        ";
492
		}
493
 
494
		if (isset($GLOBALS["web_rechte"]["Warenwirtschaft"]["logistiker"]["logistiker"]) &&
495
			$logistiker_filter != "")
496
		{
497
			$logistiker_join = "JOIN bestellung_logistiker btl ON btl.bestellung = b.ID";
498
		}
499
		$bStatusAll = array(
500
			"of_fr_ve" => "of., fr., ve.",
501
			"offen" => "offen",
502
			"freigegeben" => "freigegeben",
503
			"versand" => "versand",
504
			"wartend" => "wartend",
505
			"storniert" => "storniert",
506
			"alle" => "alle",
507
			);
508
 
509
		$bStatusDB = parseEnumSet("Bestellung", "status");
510
 
511
		foreach ($bStatusAll as $ind => $val)
512
		{
513
			if (in_array($val, $bStatusDB["werte"]) || $val == "alle" || $ind == "of_fr_ve")
514
			{
515
				$bStatus[$ind] = $val;
516
			}
517
		}
1132 lars 518
		$orders = array();
519
		$sql = "SELECT
1173 lars 520
				b.id
1132 lars 521
			FROM
1392 lars 522
				bestellart ba,
523
				Logins AS l,
524
				shops AS s,
525
				artikel_to_Bestellung ab,
1150 lars 526
				Bestellung b
1392 lars 527
			WHERE
1393 lars 528
				".import(" AND ", $sql_filter)."
1392 lars 529
			AND
530
				l.ID = b.Login
531
			AND
532
				s.ID = b.shops_ID
533
			AND
534
				ab.bestellung=b.id
535
			AND
536
				ba.id=b.bestellart_id
1132 lars 537
			ORDER BY
1152 lars 538
				b.id DESC
1145 lars 539
			LIMIT
540
				100
1132 lars 541
		";
542
		$res = $GLOBALS['order_db']->query($sql);
1134 lars 543
		while ($order = $res->unbuffered_row('array'))
1132 lars 544
		{
1173 lars 545
			$order = $this->get($order['id']);
1132 lars 546
			$orders[] = $order;
547
		}
548
		return $orders;
549
	}
1173 lars 550
 
551
	public function get($id)
552
	{
553
		$orders = array();
554
		$sql = "SELECT
555
				b.id,
1273 lars 556
				b.language,
1192 lars 557
				b.shops_ID,
558
				b.login,
1173 lars 559
				bill_addr_id,
560
				ship_addr_id,
561
				erstellt_am,
1204 lars 562
				erstellt_von,
563
				letzte_aenderung_am,
564
				letzte_aenderung_von,
1173 lars 565
				status,
1281 lars 566
				gesamtsumme_buffer,
1173 lars 567
				fremd_id,
568
				artikelstatus_buffer,
569
				rechnungsstatus_buffer,
570
				lieferscheinstatus_buffer,
571
				bezahlt,
1332 lars 572
				Bemerkung,
573
				Bemerkung_extern,
1173 lars 574
				bezahlt_am,
1273 lars 575
				s.name AS shop,
1277 lars 576
				ba.name AS bestellart
1173 lars 577
			FROM
578
				Bestellung b
579
			JOIN
580
				shops s
581
			ON
582
				s.id=b.shops_id
1273 lars 583
			JOIN
584
				bestellart ba
585
			ON
1274 lars 586
				ba.id=b.bestellart_id
1173 lars 587
			WHERE
588
				b.id=".$id."
589
		";
590
		$res = $GLOBALS['order_db']->query($sql);
591
		$order = $res->unbuffered_row('array');
592
		$billAddr = $this->bestelladresse->get($order['bill_addr_id']);
593
		$shipAddr = $this->bestelladresse->get($order['ship_addr_id']);
594
		$artikel = $this->artikel->get($order['id']);
1309 lars 595
		$dokumente = $this->dokumente->get_list($order['id']);
1173 lars 596
		$artikelstatus_buffer = unserialize($order["artikelstatus_buffer"]);
597
		foreach ($artikelstatus_buffer as $key => $value)
598
		{
599
			switch ($key)
600
			{
601
				case "statusOffen":
602
					$info[$key]["class"] = "status_red";
603
					break;
604
				case "statusInBearbeitung":
605
					$info[$key]["class"] = "status_yellow";
606
					break;
607
				case "statusReserviert":
608
					$info[$key]["class"] = "status_blue";
609
					break;
610
				case "statusErledigt":
611
					$info[$key]["class"] = "status_green";
612
					break;
613
				case "statusAbgeschlossen":
614
				default:
615
					$info[$key]["class"] = "status_white";
616
					break;
617
 
618
			}
619
			$info[$key]["wert"] = $value;
620
		}
621
		$order["info"] = $info;
622
		$rechnungsstatus_buffer = unserialize($order["rechnungsstatus_buffer"]);
623
		foreach ($rechnungsstatus_buffer as $key => $value)
624
		{
625
			switch ($key)
626
			{
627
				case "rechnungSchreiben":
628
					$rstatus[$key]["class"] = "status_red";
629
					break;
630
				case "rechnungGeschrieben":
631
					$rstatus[$key]["class"] = "status_yellow";
632
					break;
633
				case "rechnungBezahlt":
634
					$rstatus[$key]["class"] = "status_green";
635
					break;
636
 
637
			}
638
			$rstatus[$key]["wert"] = $value;
639
		}
640
		$order["rechnungsstatus"] = $rstatus;
641
		$lieferscheinstatus_buffer = unserialize($order["lieferscheinstatus_buffer"]);
642
		foreach ($lieferscheinstatus_buffer as $key => $value)
643
		{
644
			switch ($key)
645
			{
646
				case "lieferscheinSchreiben":
647
					$lstatus[$key]["class"] = "status_yellow";
648
					break;
649
				case "lieferscheinGeschrieben":
650
					$lstatus[$key]["class"] = "status_green";
651
					break;
652
				case "lieferscheinOffen":
653
					$lstatus[$key]["class"] = "status_red";
654
					break;
655
 
656
			}
657
			$lstatus[$key]["wert"] = $value;
658
		}
659
		$order['lieferscheinstatus'] = $lstatus;
1309 lars 660
		$order['dokumente'] = $dokumente;
1173 lars 661
		$order['artikel'] = $artikel;
662
		$order['shipAddr'] = $shipAddr;
663
		$order['billAddr'] = $billAddr;
664
 
665
		return $order;
666
	}
1335 lars 667
 
668
	public function save()
669
	{
670
		$Bestellung = $this->input->post('Bestellung');
671
		if ((isset($_GET["update"]) && $_GET["update"]) || (isset($_POST["update"]) && $_POST["update"]))
672
		{
673
 
674
			if ($_POST["update"])
675
			{
676
				$update = $_POST["update"];
677
			}
678
			else
679
			{
680
				$update = $_GET["update"];
681
			}
682
 
683
			if ($_POST["cmd"])
684
			{
685
				foreach (array_keys($_POST["cmd"]) as $table)
686
				{
687
					foreach (array_keys($_POST["cmd"][$table]) as $primaryKeyValue)
688
					{
689
						$changed_id = "artikel_".$primaryKeyValue."_changed";
690
						if ($_POST[$changed_id] == 1)
691
						{
692
							foreach (array_keys($_POST["cmd"][$table][$primaryKeyValue]) as $tablefield)
693
							{
694
								$query = "
695
									UPDATE
696
										".$table."
697
									SET
698
										".$tablefield." = '".$GLOBALS["order_db"]->escape(html_entity_decode($_POST["cmd"][$table][$primaryKeyValue][$tablefield],
699
									ENT_COMPAT, $_SESSION["charset"]))."'
700
									WHERE
701
										ID = '".$primaryKeyValue."'
702
								";
703
								$result = $GLOBALS["order_db"]->query($query);
704
							}
705
						}
706
					}
707
				}
708
			}
709
			$upd_fields[] = "Bemerkung=".$GLOBALS["order_db"]->escape($_POST["Bemerkung"]).
710
				"";
711
 
712
			if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["shortline1"]))
713
			{
714
				$upd_fields[] = "shortline1 = ".$GLOBALS["order_db"]->escape($_POST["shortline1"]).
715
					"";
716
			}
717
			if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["shortline2"]))
718
			{
719
				$upd_fields[] = "shortline2 = ".$GLOBALS["order_db"]->escape($_POST["shortline2"]).
720
					"'";
721
			}
722
			if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["status1"]))
723
			{
724
				$upd_fields[] = "status1 = '".$GLOBALS["order_db"]->escape($_POST["status1"]).
725
					"";
726
			}
727
			if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["Bemerkung_extern"]))
728
			{
729
				$upd_fields[] = "Bemerkung_extern=".$GLOBALS["order_db"]->escape($_POST["Bemerkung_extern"]).
730
					"";
731
			}
732
			if (isset($user_rechte["Warenwirtschaft"]["bezahlstatus"]["bezahlstatus"]))
733
			{
734
				$upd_fields[] = "bezahlt=".$GLOBALS["order_db"]->escape($_POST["bezahlt"])."";
735
				$upd_fields[] = "bezahlt_bemerkung=".$GLOBALS["order_db"]->escape($_POST["bezahlt_bemerkung"]).
736
					"";
737
			}
738
			if (isset($_POST['fremd_id']))
739
			{
740
				$upd_fields[] = "fremd_id=".$GLOBALS["order_db"]->escape($_POST["fremd_id"])."";
741
			}
742
			$sql = "
743
				SELECT
744
					erstellt_von
745
				FROM
746
					Bestellung
747
				WHERE
748
					ID=".$Bestellung."
749
			";
750
 
751
			$result = $GLOBALS["order_db"]->query($sql);
752
			$zeile = $result->unbuffered_row('array');
753
			if ($zeile["erstellt_von"] == '')
754
			{
755
				$upd_fields[] = "erstellt_von='".$this->session->user_data['user']."'";
756
			}
757
			if ($_POST["s_changed"] == 1)
758
			{
759
				$upd_fields[] = "shops_ID=".$_POST["s_id"];
760
			}
761
			$sql = "
762
				UPDATE
763
					Bestellung
764
				SET
765
					letzte_Aenderung_von='".$this->session->user_data['user']."',
766
					".implode(",", $upd_fields)."
767
				WHERE
768
					ID=".$Bestellung."
769
			";
770
			$GLOBALS["order_db"]->query($sql);
771
			if (isset($_POST["logistiker_id"]))
772
			{
773
				if ($_POST["logistiker_id"])
774
				{
775
					$sql_bl = "
776
						REPLACE INTO
777
							bestellung_logistiker
778
						SET
779
							bestellung=".$Bestellung.",
780
							logistiker=".$_POST["logistiker_id"]."
781
					";
782
 
783
					$GLOBALS["order_db"]->query($sql_bl);
784
					if (isset($web_rechte["admin"]["toolbox"]["logbuch"]))
785
					{
786
						$GLOBALS["Log"]["best"]->log("Logistiker der Bestellung geändert", $Bestellung);
787
					}
788
				}
789
				else
790
				{
791
					$sql_bl = "
792
						DELETE FROM
793
							bestellung_logistiker
794
						WHERE
795
							bestellung=".$Bestellung."
796
					";
797
					$GLOBALS["order_db"]->query($sql_bl);
798
					if (isset($web_rechte["admin"]["toolbox"]["logbuch"]))
799
					{
800
						$GLOBALS["Log"]["best"]->log("Logistiker der Bestellung geändert", $Bestellung);
801
					}
802
				}
803
			}
804
			if (isset($update["current"]))
805
			{
806
				header("Location: /backend/order/edit/".$Bestellung);
807
			}
808
			elseif (isset($update["list"]))
809
			{
810
				header("Location: /backend/order/index/".$Bestellung);
811
			}
812
		}
813
	}
1132 lars 814
}
815
 
1332 lars 816
?>