Subversion-Projekte lars-tiefland.ci

Revision

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