Subversion-Projekte lars-tiefland.ci

Revision

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