Subversion-Projekte lars-tiefland.ci

Revision

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