Subversion-Projekte lars-tiefland.ci

Revision

Revision 1431 | Revision 1437 | 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: 1432 $
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`";
1432 lars 165
						$coFeldSip = "coShip.id";
166
						$coFeldBill = "coBill.id`";
1392 lars 167
					}
168
					else
169
					{
1410 lars 170
						$coFeld = "co.`name-ger`";
1431 lars 171
						$coFeldShip = "coShip.id";
172
						$coFeldBill = "coBill.id";
1392 lars 173
					}
1431 lars 174
					$sql_filter[] = $coFeldShip." =".$filter["laender"];
175
					$sql_filter[] = $coFeldBill." =".$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."
1432 lars 565
			".$logistiker_join."
1410 lars 566
			JOIN
567
				shops s
568
			ON
569
				s.id=b.shops_id
570
			JOIN
571
				bestellart ba
572
			ON
573
				ba.id=b.bestellart_id
1392 lars 574
			WHERE
1395 lars 575
				".implode(" AND ", $sql_filter)."
1132 lars 576
			ORDER BY
1152 lars 577
				b.id DESC
1145 lars 578
			LIMIT
579
				100
1132 lars 580
		";
581
		$res = $GLOBALS['order_db']->query($sql);
1405 lars 582
		echo $sql;
1404 lars 583
		$sql_anz = "SELECT
584
				FOUND_ROWS() AS total
585
		";
586
		$res_anz = $GLOBALS["order_db"]->query($sql_anz);
587
		$row = $res_anz->row_array();
1134 lars 588
		while ($order = $res->unbuffered_row('array'))
1132 lars 589
		{
1173 lars 590
			$order = $this->get($order['id']);
1402 lars 591
			$ret["orders"][] = $order;
1132 lars 592
		}
1400 lars 593
		$ret["orderAnz"] = $row["total"];
594
		return $ret;
1132 lars 595
	}
1173 lars 596
 
597
	public function get($id)
598
	{
599
		$orders = array();
600
		$sql = "SELECT
601
				b.id,
1273 lars 602
				b.language,
1192 lars 603
				b.shops_ID,
604
				b.login,
1173 lars 605
				bill_addr_id,
606
				ship_addr_id,
607
				erstellt_am,
1204 lars 608
				erstellt_von,
609
				letzte_aenderung_am,
610
				letzte_aenderung_von,
1173 lars 611
				status,
1281 lars 612
				gesamtsumme_buffer,
1173 lars 613
				fremd_id,
614
				artikelstatus_buffer,
615
				rechnungsstatus_buffer,
616
				lieferscheinstatus_buffer,
617
				bezahlt,
1332 lars 618
				Bemerkung,
619
				Bemerkung_extern,
1173 lars 620
				bezahlt_am,
1273 lars 621
				s.name AS shop,
1277 lars 622
				ba.name AS bestellart
1173 lars 623
			FROM
624
				Bestellung b
625
			JOIN
626
				shops s
627
			ON
628
				s.id=b.shops_id
1273 lars 629
			JOIN
630
				bestellart ba
631
			ON
1274 lars 632
				ba.id=b.bestellart_id
1173 lars 633
			WHERE
634
				b.id=".$id."
635
		";
636
		$res = $GLOBALS['order_db']->query($sql);
637
		$order = $res->unbuffered_row('array');
638
		$billAddr = $this->bestelladresse->get($order['bill_addr_id']);
639
		$shipAddr = $this->bestelladresse->get($order['ship_addr_id']);
640
		$artikel = $this->artikel->get($order['id']);
1309 lars 641
		$dokumente = $this->dokumente->get_list($order['id']);
1173 lars 642
		$artikelstatus_buffer = unserialize($order["artikelstatus_buffer"]);
643
		foreach ($artikelstatus_buffer as $key => $value)
644
		{
645
			switch ($key)
646
			{
647
				case "statusOffen":
648
					$info[$key]["class"] = "status_red";
649
					break;
650
				case "statusInBearbeitung":
651
					$info[$key]["class"] = "status_yellow";
652
					break;
653
				case "statusReserviert":
654
					$info[$key]["class"] = "status_blue";
655
					break;
656
				case "statusErledigt":
657
					$info[$key]["class"] = "status_green";
658
					break;
659
				case "statusAbgeschlossen":
660
				default:
661
					$info[$key]["class"] = "status_white";
662
					break;
663
 
664
			}
665
			$info[$key]["wert"] = $value;
666
		}
667
		$order["info"] = $info;
668
		$rechnungsstatus_buffer = unserialize($order["rechnungsstatus_buffer"]);
669
		foreach ($rechnungsstatus_buffer as $key => $value)
670
		{
671
			switch ($key)
672
			{
673
				case "rechnungSchreiben":
674
					$rstatus[$key]["class"] = "status_red";
675
					break;
676
				case "rechnungGeschrieben":
677
					$rstatus[$key]["class"] = "status_yellow";
678
					break;
679
				case "rechnungBezahlt":
680
					$rstatus[$key]["class"] = "status_green";
681
					break;
682
 
683
			}
684
			$rstatus[$key]["wert"] = $value;
685
		}
686
		$order["rechnungsstatus"] = $rstatus;
687
		$lieferscheinstatus_buffer = unserialize($order["lieferscheinstatus_buffer"]);
688
		foreach ($lieferscheinstatus_buffer as $key => $value)
689
		{
690
			switch ($key)
691
			{
692
				case "lieferscheinSchreiben":
693
					$lstatus[$key]["class"] = "status_yellow";
694
					break;
695
				case "lieferscheinGeschrieben":
696
					$lstatus[$key]["class"] = "status_green";
697
					break;
698
				case "lieferscheinOffen":
699
					$lstatus[$key]["class"] = "status_red";
700
					break;
701
 
702
			}
703
			$lstatus[$key]["wert"] = $value;
704
		}
705
		$order['lieferscheinstatus'] = $lstatus;
1309 lars 706
		$order['dokumente'] = $dokumente;
1173 lars 707
		$order['artikel'] = $artikel;
708
		$order['shipAddr'] = $shipAddr;
709
		$order['billAddr'] = $billAddr;
710
 
711
		return $order;
712
	}
1335 lars 713
 
714
	public function save()
715
	{
716
		$Bestellung = $this->input->post('Bestellung');
717
		if ((isset($_GET["update"]) && $_GET["update"]) || (isset($_POST["update"]) && $_POST["update"]))
718
		{
719
 
720
			if ($_POST["update"])
721
			{
722
				$update = $_POST["update"];
723
			}
724
			else
725
			{
726
				$update = $_GET["update"];
727
			}
728
 
729
			if ($_POST["cmd"])
730
			{
731
				foreach (array_keys($_POST["cmd"]) as $table)
732
				{
733
					foreach (array_keys($_POST["cmd"][$table]) as $primaryKeyValue)
734
					{
735
						$changed_id = "artikel_".$primaryKeyValue."_changed";
736
						if ($_POST[$changed_id] == 1)
737
						{
738
							foreach (array_keys($_POST["cmd"][$table][$primaryKeyValue]) as $tablefield)
739
							{
740
								$query = "
741
									UPDATE
742
										".$table."
743
									SET
744
										".$tablefield." = '".$GLOBALS["order_db"]->escape(html_entity_decode($_POST["cmd"][$table][$primaryKeyValue][$tablefield],
745
									ENT_COMPAT, $_SESSION["charset"]))."'
746
									WHERE
747
										ID = '".$primaryKeyValue."'
748
								";
749
								$result = $GLOBALS["order_db"]->query($query);
750
							}
751
						}
752
					}
753
				}
754
			}
755
			$upd_fields[] = "Bemerkung=".$GLOBALS["order_db"]->escape($_POST["Bemerkung"]).
756
				"";
757
 
758
			if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["shortline1"]))
759
			{
760
				$upd_fields[] = "shortline1 = ".$GLOBALS["order_db"]->escape($_POST["shortline1"]).
761
					"";
762
			}
763
			if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["shortline2"]))
764
			{
765
				$upd_fields[] = "shortline2 = ".$GLOBALS["order_db"]->escape($_POST["shortline2"]).
766
					"'";
767
			}
768
			if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["status1"]))
769
			{
770
				$upd_fields[] = "status1 = '".$GLOBALS["order_db"]->escape($_POST["status1"]).
771
					"";
772
			}
773
			if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["Bemerkung_extern"]))
774
			{
775
				$upd_fields[] = "Bemerkung_extern=".$GLOBALS["order_db"]->escape($_POST["Bemerkung_extern"]).
776
					"";
777
			}
778
			if (isset($user_rechte["Warenwirtschaft"]["bezahlstatus"]["bezahlstatus"]))
779
			{
780
				$upd_fields[] = "bezahlt=".$GLOBALS["order_db"]->escape($_POST["bezahlt"])."";
781
				$upd_fields[] = "bezahlt_bemerkung=".$GLOBALS["order_db"]->escape($_POST["bezahlt_bemerkung"]).
782
					"";
783
			}
784
			if (isset($_POST['fremd_id']))
785
			{
786
				$upd_fields[] = "fremd_id=".$GLOBALS["order_db"]->escape($_POST["fremd_id"])."";
787
			}
788
			$sql = "
789
				SELECT
790
					erstellt_von
791
				FROM
792
					Bestellung
793
				WHERE
794
					ID=".$Bestellung."
795
			";
796
 
797
			$result = $GLOBALS["order_db"]->query($sql);
798
			$zeile = $result->unbuffered_row('array');
799
			if ($zeile["erstellt_von"] == '')
800
			{
801
				$upd_fields[] = "erstellt_von='".$this->session->user_data['user']."'";
802
			}
803
			if ($_POST["s_changed"] == 1)
804
			{
805
				$upd_fields[] = "shops_ID=".$_POST["s_id"];
806
			}
807
			$sql = "
808
				UPDATE
809
					Bestellung
810
				SET
811
					letzte_Aenderung_von='".$this->session->user_data['user']."',
812
					".implode(",", $upd_fields)."
813
				WHERE
814
					ID=".$Bestellung."
815
			";
816
			$GLOBALS["order_db"]->query($sql);
817
			if (isset($_POST["logistiker_id"]))
818
			{
819
				if ($_POST["logistiker_id"])
820
				{
821
					$sql_bl = "
822
						REPLACE INTO
823
							bestellung_logistiker
824
						SET
825
							bestellung=".$Bestellung.",
826
							logistiker=".$_POST["logistiker_id"]."
827
					";
828
 
829
					$GLOBALS["order_db"]->query($sql_bl);
830
					if (isset($web_rechte["admin"]["toolbox"]["logbuch"]))
831
					{
832
						$GLOBALS["Log"]["best"]->log("Logistiker der Bestellung geändert", $Bestellung);
833
					}
834
				}
835
				else
836
				{
837
					$sql_bl = "
838
						DELETE FROM
839
							bestellung_logistiker
840
						WHERE
841
							bestellung=".$Bestellung."
842
					";
843
					$GLOBALS["order_db"]->query($sql_bl);
844
					if (isset($web_rechte["admin"]["toolbox"]["logbuch"]))
845
					{
846
						$GLOBALS["Log"]["best"]->log("Logistiker der Bestellung geändert", $Bestellung);
847
					}
848
				}
849
			}
850
			if (isset($update["current"]))
851
			{
852
				header("Location: /backend/order/edit/".$Bestellung);
853
			}
854
			elseif (isset($update["list"]))
855
			{
856
				header("Location: /backend/order/index/".$Bestellung);
857
			}
858
		}
859
	}
1132 lars 860
}
861
 
1332 lars 862
?>