Subversion-Projekte lars-tiefland.ci

Revision

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