Subversion-Projekte lars-tiefland.ci

Revision

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