Subversion-Projekte lars-tiefland.ci

Revision

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