Subversion-Projekte lars-tiefland.ci

Revision

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