Subversion-Projekte lars-tiefland.ci

Revision

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