diff --git a/application/WarehouseEShopOrder/WarehouseEShopOrderController.php b/application/WarehouseEShopOrder/WarehouseEShopOrderController.php index 161b66b29..9e3014b13 100644 --- a/application/WarehouseEShopOrder/WarehouseEShopOrderController.php +++ b/application/WarehouseEShopOrder/WarehouseEShopOrderController.php @@ -6,15 +6,20 @@ class WarehouseEShopOrderController extends TTCrud { protected array $columns = [ ['key' => 'id', 'text' => 'ID', 'modal' => false], - ['key' => 'status', 'text' => 'Status', 'required' => true], + ['key' => 'status', 'text' => 'Status', 'required' => true, 'modal' => ['type' => 'select', 'items' => [ + ['value' => 'new', 'text' => 'Neu'], + ['value' => 'accepted', 'text' => 'An Lieferant übergeben'], + ['value' => 'sent', 'text' => 'Gesendet'], + ['value' => 'done', 'text' => 'Erledigt'], + ]], 'table' => ['filter' => 'select']], ['key' => 'deliveryMode', 'text' => 'Liefermodus', 'required' => true, 'modal' => ['type' => 'select', 'items' => [ ['value' => 'singleAddress', 'text' => 'Einzelne Adresse'], // ['value' => 'multipleAddresses', 'text' => 'Mehrere Adressen'], ]]], - ['key' => 'deliveryAddressName', 'text' => 'Lieferadresse Name', 'required' => true, 'table' => false], - ['key' => 'deliveryAddressLine', 'text' => 'Lieferadresse', 'required' => true, 'required_length' => 4], - ['key' => 'deliveryAddressPLZ', 'text' => 'Lieferadresse PLZ', 'required' => true, 'regex' => '/^\d{4}$/', 'table' => false], - ['key' => 'deliveryAddressCity', 'text' => 'Lieferadresse Stadt', 'required' => true, 'required_length' => 3, 'table' => false], + ['key' => 'deliveryAddressName', 'text' => 'Name', 'required' => true], + ['key' => 'deliveryAddressLine', 'text' => 'Adresse', 'required' => true, 'required_length' => 4], + ['key' => 'deliveryAddressPLZ', 'text' => 'PLZ', 'required' => true, 'regex' => '/^\d{4}$/'], + ['key' => 'deliveryAddressCity', 'text' => 'Stadt', 'required' => true, 'required_length' => 3], ['key' => 'create', 'text' => 'Erstellt', 'required' => true, 'modal' => false, 'filter' => 'datetime'], ['key' => 'createBy', 'text' => 'Erstellt von', 'required' => true,'modal' => ['type' => 'select', 'items' => []]], ['key' => 'actions', 'text' => 'Aktionen', 'required' => false, 'modal' => false, 'table' => ['filter' => false, 'sortable' => false, 'class' => 'text-center']], @@ -43,7 +48,7 @@ class WarehouseEShopOrderController extends TTCrud { $this->columns[8]['modal']['items'] = $users; } - protected function getAllItemsPerOrderAction() { + protected function getAllOrderItemsPerOrder(): array { $items = WarehouseEShopOrderItemModel::getAll(); $articles = WarehouseArticleModel::getAll(); $articlePackets = WarehouseArticlePacketModel::getAll(); @@ -68,6 +73,11 @@ class WarehouseEShopOrderController extends TTCrud { ]; } + return $orderItems; + } + + protected function getAllItemsPerOrderAction() { + $orderItems = $this->getAllOrderItemsPerOrder(); self::returnJson($orderItems); } @@ -125,6 +135,50 @@ class WarehouseEShopOrderController extends TTCrud { die(json_encode($json)); } + protected function CSVExportNewOrdersMarkAcceptedAction() { + $orders = WarehouseEShopOrderModel::getAll(['status' => 'new']); + $orders = array_map(function($order) { + return (array) $order; + }, $orders); + + if (empty($orders)) { + self::returnJson(['success' => false, 'message' => 'Keine neuen Bestellungen']); + die(); + } + + $ordersItems = $this->getAllOrderItemsPerOrder(); + + // Create CSV with these Headers: Adressnummer, Name, Straße, Postleitzahl, Ort, Land, Anschriftenzusatz 1 + $csv = "Adressnummer,Name,Straße,Postleitzahl,Ort,Land,Anschriftenzusatz 1,Produkte\n"; + foreach ($orders as $order) { + $orderItems = $ordersItems[$order['id']]; + $orderItemsStr = join(' : ', array_map(function($item) { + $articleTitle = $item['articleTitle'] ?? $item['articlePacketTitle']; + $quantity = $item['quantity']; + return "$quantity x $articleTitle"; + }, $orderItems)); + + $csv .= '23000539,' . $order['deliveryAddressName'] . ',' . $order['deliveryAddressLine'] . ',' . $order['deliveryAddressPLZ'] . ',' . $order['deliveryAddressCity'] . ',AT,,'. $orderItemsStr . "\n"; + + WarehouseHistoryModel::create([ + 'table' => 'WarehouseEShopOrder', + 'row_id' => $order['id'], + 'key' => 'status', + 'old_value' => 'new', + 'new_value' => 'accepted', + 'note' => 'CSV Export', + 'user_id' => $this->user->id, + 'create' => time() + ]); + + $order['status'] = 'accepted'; + WarehouseEShopOrderModel::update($order); + + } + + die($csv); + } + protected function beforeUpdate($postData): bool { (new WarehouseHistoryController)->create($postData, $this->mod); return true; diff --git a/application/WarehouseHistory/WarehouseHistoryController.php b/application/WarehouseHistory/WarehouseHistoryController.php index 9a6330bc3..493daf507 100644 --- a/application/WarehouseHistory/WarehouseHistoryController.php +++ b/application/WarehouseHistory/WarehouseHistoryController.php @@ -24,18 +24,19 @@ class WarehouseHistoryController { public function getHistory($id, string $mod, $columns): array { $history = WarehouseHistoryModel::getByRowId($id, $mod); + return array_map(function ($item) use ($columns) { $item = (array) $item; - if (isset($this->columns[array_search($item['key'], array_column($columns, 'key'))]['modal']['type'])) { + if (isset($columns[array_search($item['key'], array_column($columns, 'key'))]['modal']['type'])) { - if($this->columns[array_search($item['key'], array_column($columns, 'key'))]['modal']['type'] === 'checkbox') { + if($columns[array_search($item['key'], array_column($columns, 'key'))]['modal']['type'] === 'checkbox') { $item['old_value'] = $item['old_value'] === '1' ? 'Ja' : 'Nein'; $item['new_value'] = $item['new_value'] === '1' ? 'Ja' : 'Nein'; } - if($this->columns[array_search($item['key'], array_column($columns, 'key'))]['modal']['type'] === 'select') { - $column = $this->columns[array_search($item['key'], array_column($columns, 'key'))]; + if($columns[array_search($item['key'], array_column($columns, 'key'))]['modal']['type'] === 'select') { + $column = $columns[array_search($item['key'], array_column($columns, 'key'))]; $item['old_value'] = $column['modal']['items'][array_search($item['old_value'], array_column($column['modal']['items'], 'value'))]['text']; $item['new_value'] = $column['modal']['items'][array_search($item['new_value'], array_column($column['modal']['items'], 'value'))]['text']; } diff --git a/public/js/pages/WarehouseEShopOrder/WarehouseEShopOrder.js b/public/js/pages/WarehouseEShopOrder/WarehouseEShopOrder.js index 74c258180..891756cf6 100644 --- a/public/js/pages/WarehouseEShopOrder/WarehouseEShopOrder.js +++ b/public/js/pages/WarehouseEShopOrder/WarehouseEShopOrder.js @@ -3,7 +3,14 @@ Vue.component('warehouse-e-shop-order', { //language=Vue template: ` - + + +