added csv export for triotronik for e shop orders
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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'];
|
||||
}
|
||||
|
||||
@@ -3,7 +3,14 @@ Vue.component('warehouse-e-shop-order', {
|
||||
//language=Vue
|
||||
template: `
|
||||
<tt-card>
|
||||
<tt-table-crud @openHistory="historyModal = true; historyModalId = $event.id">
|
||||
<tt-table-crud @openHistory="historyModal = true; historyModalId = $event.id" ref="table">
|
||||
|
||||
<template v-slot:table-top-buttons>
|
||||
<button @click="createCSVExportAndMarkAsAccepted" type="button" class="btn btn-outline-success">
|
||||
<i class="fas fa-file-excel"></i>
|
||||
CSV Export für neue Bestellungen
|
||||
</button>
|
||||
</template>
|
||||
|
||||
<template v-slot:create="{ row }">
|
||||
{{ window.moment(row.create * 1000).format('DD.MM.YYYY HH:mm:ss') }}
|
||||
@@ -31,6 +38,28 @@ Vue.component('warehouse-e-shop-order', {
|
||||
const response = await axios.get(`${window['TT_CONFIG']['BASE_PATH']}/WarehouseEShopOrder/getAllItemsPerOrder`);
|
||||
console.log(response.data);
|
||||
this.articleItems = response.data;
|
||||
},
|
||||
methods: {
|
||||
async createCSVExportAndMarkAsAccepted() {
|
||||
const response = await axios.post(`${window['TT_CONFIG']['BASE_PATH']}/WarehouseEShopOrder/CSVExportNewOrdersMarkAccepted`);
|
||||
|
||||
if (response.data.message) {
|
||||
window.notify('info', response.data.message);
|
||||
return;
|
||||
}
|
||||
|
||||
const blob = new Blob([response.data], {type: 'text/csv charset=utf-8;'});
|
||||
const url = window.URL.createObjectURL(blob);
|
||||
|
||||
const link = document.createElement("a");
|
||||
link.setAttribute("href", url);
|
||||
link.setAttribute("download", "Export.csv");
|
||||
document.body.appendChild(link); // Required for FF
|
||||
|
||||
link.click(); // This will download the data file named "my_data.csv".
|
||||
link.remove();
|
||||
|
||||
await this.$refs.table.$refs.table.fetchData();
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user