From 17fb0226d4b4a5e94be35069c47d79a42ab6bfff Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Fri, 12 Jan 2024 00:30:21 +0000 Subject: [PATCH] continue implementations --- Admin/Install/db.json | 84 ++--- Controller/ApiController.php | 322 ++++++++++-------- Models/Attribute/LotAttributeValueMapper.php | 1 + Models/NullStockDistribution.php | 46 +++ ...entMapper.php => NullStockTransaction.php} | 28 +- Models/StockDistribution.php | 44 +++ Models/StockDistributionMapper.php | 70 ++++ ...StockMovement.php => StockTransaction.php} | 16 +- Models/StockTransactionMapper.php | 76 +++++ ...entState.php => StockTransactionState.php} | 2 +- ...ementType.php => StockTransactionType.php} | 2 +- Theme/Backend/Lang/ar.lang.php | 26 -- Theme/Backend/Lang/cs.lang.php | 26 -- Theme/Backend/Lang/da.lang.php | 26 -- Theme/Backend/Lang/de.lang.php | 26 -- Theme/Backend/Lang/el.lang.php | 26 -- Theme/Backend/Lang/en.lang.php | 26 -- Theme/Backend/Lang/es.lang.php | 26 -- Theme/Backend/Lang/fi.lang.php | 26 -- Theme/Backend/Lang/fr.lang.php | 26 -- Theme/Backend/Lang/hu.lang.php | 26 -- Theme/Backend/Lang/it.lang.php | 26 -- Theme/Backend/Lang/ja.lang.php | 26 -- Theme/Backend/Lang/ko.lang.php | 26 -- Theme/Backend/Lang/no.lang.php | 26 -- Theme/Backend/Lang/pl.lang.php | 26 -- Theme/Backend/Lang/pt.lang.php | 26 -- Theme/Backend/Lang/ru.lang.php | 26 -- Theme/Backend/Lang/sv.lang.php | 26 -- Theme/Backend/Lang/th.lang.php | 26 -- Theme/Backend/Lang/tr.lang.php | 26 -- Theme/Backend/Lang/uk.lang.php | 26 -- Theme/Backend/Lang/zh.lang.php | 26 -- tests/Models/StockMovementTest.php | 10 +- 34 files changed, 490 insertions(+), 783 deletions(-) create mode 100644 Models/NullStockDistribution.php rename Models/{StockMovementMapper.php => NullStockTransaction.php} (52%) mode change 100755 => 100644 create mode 100644 Models/StockDistribution.php create mode 100644 Models/StockDistributionMapper.php rename Models/{StockMovement.php => StockTransaction.php} (80%) mode change 100755 => 100644 create mode 100644 Models/StockTransactionMapper.php rename Models/{StockMovementState.php => StockTransactionState.php} (92%) rename Models/{StockMovementType.php => StockTransactionType.php} (95%) mode change 100755 => 100644 diff --git a/Admin/Install/db.json b/Admin/Install/db.json index 5094d97..86458fa 100755 --- a/Admin/Install/db.json +++ b/Admin/Install/db.json @@ -1,43 +1,4 @@ { - "warehousemgmt_item": { - "name": "warehousemgmt_item", - "fields": { - "warehousemgmt_item_id": { - "name": "warehousemgmt_item_id", - "type": "INT", - "null": false, - "primary": true, - "autoincrement": true - }, - "warehousemgmt_item_item": { - "name": "warehousemgmt_item_item", - "type": "INT", - "null": false, - "foreignTable": "itemmgmt_item", - "foreignKey": "itemmgmt_item_id" - }, - "warehousemgmt_item_hassn": { - "name": "warehousemgmt_item_hassn", - "type": "TINYINT(1)", - "null": false - }, - "warehousemgmt_item_haslot": { - "name": "warehousemgmt_item_haslot", - "type": "TINYINT(1)", - "null": false - }, - "warehousemgmt_item_hasstock": { - "name": "warehousemgmt_item_hasstock", - "type": "TINYINT(1)", - "null": false - }, - "warehousemgmt_item_negative": { - "name": "warehousemgmt_item_negative", - "type": "TINYINT", - "null": false - } - } - }, "warehousemgmt_stock": { "name": "warehousemgmt_stock", "fields": { @@ -307,6 +268,11 @@ "type": "TINYINT(1)", "null": false }, + "warehousemgmt_attr_type_repeatable": { + "name": "warehousemgmt_attr_type_repeatable", + "type": "TINYINT(1)", + "null": false + }, "warehousemgmt_attr_type_required": { "description": "Every item must have this attribute type if set to true.", "name": "warehousemgmt_attr_type_required", @@ -551,16 +517,17 @@ "warehousemgmt_stock_distribution_lot": { "name": "warehousemgmt_stock_distribution_lot", "type": "INT", - "null": false, + "null": true, + "default": null, "foreignTable": "warehousemgmt_lot", "foreignKey": "warehousemgmt_lot_id" }, - "warehousemgmt_stock_distribution_shelf": { - "name": "warehousemgmt_stock_distribution_shelf", + "warehousemgmt_stock_distribution_stock": { + "name": "warehousemgmt_stock_distribution_stock", "type": "INT", "null": false, - "foreignTable": "warehousemgmt_stockshelf", - "foreignKey": "warehousemgmt_stockshelf_id" + "foreignTable": "warehousemgmt_stock", + "foreignKey": "warehousemgmt_stock_id" }, "warehousemgmt_stock_distribution_stocktype": { "name": "warehousemgmt_stock_distribution_stocktype", @@ -606,12 +573,12 @@ "foreignTable": "warehousemgmt_lot", "foreignKey": "warehousemgmt_lot_id" }, - "warehousemgmt_stock_distribution_history_shelf": { - "name": "warehousemgmt_stock_distribution_history_shelf", + "warehousemgmt_stock_distribution_history_stock": { + "name": "warehousemgmt_stock_distribution_history_stock", "type": "INT", "null": false, - "foreignTable": "warehousemgmt_stockshelf", - "foreignKey": "warehousemgmt_stockshelf_id" + "foreignTable": "warehousemgmt_stock", + "foreignKey": "warehousemgmt_stock_id" }, "warehousemgmt_stock_distribution_history_stocktype": { "name": "warehousemgmt_stock_distribution_history_stocktype", @@ -653,11 +620,6 @@ "type": "BIGINT", "null": false }, - "warehousemgmt_stock_transaction_pprice": { - "name": "warehousemgmt_stock_transaction_pprice", - "type": "BIGINT", - "null": false - }, "warehousemgmt_stock_transaction_type": { "name": "warehousemgmt_stock_transaction_type", "type": "INT", @@ -677,12 +639,12 @@ "foreignTable": "warehousemgmt_lot", "foreignKey": "warehousemgmt_lot_id" }, - "warehousemgmt_stock_transaction_from_shelf": { - "name": "warehousemgmt_stock_transaction_from_shelf", + "warehousemgmt_stock_transaction_from_stock": { + "name": "warehousemgmt_stock_transaction_from_stock", "type": "INT", "null": false, - "foreignTable": "warehousemgmt_stockshelf", - "foreignKey": "warehousemgmt_stockshelf_id" + "foreignTable": "warehousemgmt_stock", + "foreignKey": "warehousemgmt_stock_id" }, "warehousemgmt_stock_transaction_from_stocktype": { "name": "warehousemgmt_stock_transaction_from_stocktype", @@ -698,12 +660,12 @@ "foreignTable": "warehousemgmt_lot", "foreignKey": "warehousemgmt_lot_id" }, - "warehousemgmt_stock_transaction_to_shelf": { - "name": "warehousemgmt_stock_transaction_to_shelf", + "warehousemgmt_stock_transaction_to_stock": { + "name": "warehousemgmt_stock_transaction_to_stock", "type": "INT", "null": false, - "foreignTable": "warehousemgmt_stockshelf", - "foreignKey": "warehousemgmt_stockshelf_id" + "foreignTable": "warehousemgmt_stock", + "foreignKey": "warehousemgmt_stock_id" }, "warehousemgmt_stock_transaction_to_stocktype": { "name": "warehousemgmt_stock_transaction_to_stocktype", diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 0ffd6bf..f4c38d8 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -18,14 +18,17 @@ use Modules\Billing\Models\BillElement; use Modules\Billing\Models\BillMapper; use Modules\Billing\Models\BillStatus; use Modules\Billing\Models\BillTransferType; +use Modules\ItemManagement\Models\StockIdentifierType; use Modules\WarehouseManagement\Models\Stock; +use Modules\WarehouseManagement\Models\StockDistribution; +use Modules\WarehouseManagement\Models\StockDistributionMapper; use Modules\WarehouseManagement\Models\StockLocation; use Modules\WarehouseManagement\Models\StockLocationMapper; use Modules\WarehouseManagement\Models\StockMapper; -use Modules\WarehouseManagement\Models\StockMovement; -use Modules\WarehouseManagement\Models\StockMovementMapper; -use Modules\WarehouseManagement\Models\StockMovementState; -use Modules\WarehouseManagement\Models\StockMovementType; +use Modules\WarehouseManagement\Models\StockTransaction; +use Modules\WarehouseManagement\Models\StockTransactionMapper; +use Modules\WarehouseManagement\Models\StockTransactionState; +use Modules\WarehouseManagement\Models\StockTransactionType; use Modules\WarehouseManagement\Models\StockShelf; use Modules\WarehouseManagement\Models\StockShelfMapper; use phpOMS\Message\Http\RequestStatusCode; @@ -245,157 +248,182 @@ final class ApiController extends Controller ) : void { // Directly/manually creating a transaction is handled in the API Create/Update functions. + $isBillElement = $new instanceof BillElement; /** @var \Modules\Billing\Models\Bill|\Modules\Billing\Models\BillElement $new */ /** @var \Modules\Billing\Models\Bill $bill */ $bill = BillMapper::get() ->with('type') + ->with('elements') + ->with('elements/item') ->with('supplier') ->with('client') - ->where('id', $new instanceof BillElement ? $new->bill->id : $new->id) + ->where('id', $isBillElement ? $new->bill->id : $new->id) ->execute(); // Has stock movement? - if ($bill->id !== 0 && !$bill->type->transferStock) { + if (!$bill->type->transferStock) { return; } + $billElements = $isBillElement ? [$new] : $bill->elements; + // @todo check if old element existed -> removed/changed item // @todo we cannot have transaction->to and transaction->from be the id of client/supplier because the IDs can overlap - $transaction = new StockMovement(); - - if ($trigger === 'POST:Module:Billing-bill_element-create') { - /** @var \Modules\Billing\Models\BillElement $new */ - - $transaction->billElement = $new->id; - $transaction->state = StockMovementState::DRAFT; - - // @todo load default stock movement for bill type/organization settings (default stock location, default lot order e.g. FIFO/LIFO) - // @todo find stock candidates - - $transaction->type = StockMovementType::TRANSFER; // @todo depends on bill type - $transaction->quantity = $new->getQuantity(); // @todo may require split quantity if not sufficient available from one lost - - // @todo allow consignment bills - // @todo allow to pass stocklocation for entire bill to avoid re-defining it - - // @todo allow custom stock location - if ($bill->type->sign > 0) { - // Handle from - // @todo find possible candidate based on defined default stock for bill type/org/location - - // Handle to - if (($bill->client?->id ?? 0) !== 0) { - // @todo remove phpstan this is just a bug fix until phpstan fixes this bug - /** @phpstan-ignore-next-line */ - $transaction->to = $bill->client->id; - } elseif (($bill->supplier?->id ?? 0) !== 0) { - // @todo remove phpstan this is just a bug fix until phpstan fixes this bug - /** @phpstan-ignore-next-line */ - $transaction->to = $bill->supplier->id; - } - - if ($bill->type->transferType === BillTransferType::SALES) { - $transaction->subtype = StockMovementType::SALE; - } elseif ($bill->type->transferType === BillTransferType::PURCHASE) { - $transaction->subtype = StockMovementType::PURCHASE; - } - } else { - // Handle from - if (($bill->client?->id ?? 0) !== 0) { - // @todo remove phpstan this is just a bug fix until phpstan fixes this bug - /** @phpstan-ignore-next-line */ - $transaction->from = $bill->client->id; - } elseif (($bill->supplier?->id ?? 0) !== 0) { - // @todo remove phpstan this is just a bug fix until phpstan fixes this bug - /** @phpstan-ignore-next-line */ - $transaction->from = $bill->supplier->id; - } - - // Handle to - // @todo find possible candidate based on defined default stock for bill type/org/location - - if ($bill->type->transferType === BillTransferType::SALES - || $bill->type->transferType === BillTransferType::PURCHASE - ) { - $transaction->subtype = StockMovementType::RETURN; - } + // @todo How to differentiate between stock movement + // invoice with prior delivery note(s), + // invoice with partly delivery note(s), + // invoice with no delivery note + // @todo Handle bill drafts (now only finalization moves stock, how do we reserve stock?) + foreach ($billElements as $element) { + if ($element->item === 0 || $element->item === null + || $element->item->stockIdentifier === StockIdentifierType::NONE + ) { + continue; } - return; - } elseif ($trigger === 'POST:Module:Billing-bill_element-update') { - /** @var \Modules\Billing\Models\BillElement $new */ - /** @var \Modules\Billing\Models\BillElement $old */ - /** @var \Modules\WarehouseManagement\Models\StockMovement[] $transactions */ - $transactions = StockMovementMapper::getAll() - ->where('billElement', $new->id) + $dist = StockDistributionMapper::get() + ->where('item', $element->item->id) + ->where('stock', 1) // @todo fix + ->where('stockType', 1) // @todo fix + ->where('lot', $element->item->stockIdentifier === StockIdentifierType::NUMBER ? null : '') ->execute(); - /* - if ($new->item === $old->item) { - // quantity change - // lot changes - // stock changes - // all other changes ignore! - // check availability again, if not available abort bill - // maybe from an algorithmic point of view first set quantity to zero - // and then do normal algorithm like for a new element - } - */ - if ($new->item !== $old->item) { - StockMovementMapper::delete()->execute($transactions); + $transaction = new StockTransaction(); - $this->eventBillUpdateInternal( - $account, $old, $new, - $type, 'POST:Module:Billing-bill_element-create', $module, $ref, $content, $ip - ); - } + // @todo how to handle only reserving items for drafted bills (not yet shipped) - return; - } elseif ($trigger === 'POST:Module:Billing-bill_element-delete') { - /** @var \Modules\Billing\Models\BillElement $new */ - /** @var \Modules\WarehouseManagement\Models\StockMovement[] $transactions */ - $transactions = StockMovementMapper::getAll() - ->where('billElement', $new->id) - ->execute(); + if ($trigger === 'POST:Module:Billing-bill_element-create') { + // Check stock availability + if ($bill->type->sign < 0 && $dist->quantity < $element->quantity) { + continue; + } - StockMovementMapper::delete()->execute($transactions); + /** @var \Modules\Billing\Models\BillElement $new */ - return; - } elseif ($trigger === 'POST:Module:Billing-bill-delete') { - /** @var \Modules\Billing\Models\Bill $new */ - /** @var \Modules\Billing\Models\Bill $bill */ - $bill = BillMapper::get() - ->with('type') - ->with('elements') - ->with('supplier') - ->with('client') - ->where('id', $new->id) - ->execute(); + // Handle stock quantity + ///////////////////////////////////////////////////////////////// - foreach ($bill->elements as $element) { - /** @var \Modules\WarehouseManagement\Models\StockMovement[] $transactions */ - $transactions = StockMovementMapper::getAll() - ->where('billElement', $element->id) + // @todo handle stock returns!!! + if ($bill->type->sign < 0) { + $dist->quantity -= $element->quantity; + + StockDistributionMapper::update()->execute($dist); + } else { + if ($dist->id === 0) { + $dist = new StockDistribution(); + $dist->item = $element->item->id; + $dist->quantity = $element->quantity; + + $dist->lot = null; // @todo handle correct + $dist->stock = 1; // @todo handle correct + $dist->stockType = 1; // @todo handle correct + + StockDistributionMapper::create()->execute($dist); + } else { + $dist->quantity += $element->quantity; + + StockDistributionMapper::update()->execute($dist); + } + } + + // Handle transfer protocol + ///////////////////////////////////////////////////////////////// + + $transaction->billElement = $new->id; + $transaction->state = StockTransactionState::DRAFT; + + // @todo load default stock movement for bill type/organization settings (default stock location, default lot order e.g. FIFO/LIFO) + // @todo find stock candidates + + $transaction->type = StockTransactionType::TRANSFER; // @todo depends on bill type + $transaction->quantity = $new->getQuantity(); // @todo may require split quantity if not sufficient available from one lost + + // @todo allow consignment bills + // @todo allow to pass stocklocation for entire bill to avoid re-defining it + + // @todo allow custom stock location + if ($bill->type->sign > 0) { + // Handle from + // @todo find possible candidate based on defined default stock for bill type/org/location + + // Handle to + if (($bill->client?->id ?? 0) !== 0) { + // @todo remove phpstan this is just a bug fix until phpstan fixes this bug + /** @phpstan-ignore-next-line */ + $transaction->to = $bill->client->id; + } elseif (($bill->supplier?->id ?? 0) !== 0) { + // @todo remove phpstan this is just a bug fix until phpstan fixes this bug + /** @phpstan-ignore-next-line */ + $transaction->to = $bill->supplier->id; + } + + if ($bill->type->transferType === BillTransferType::SALES) { + $transaction->subtype = StockTransactionType::SALE; + } elseif ($bill->type->transferType === BillTransferType::PURCHASE) { + $transaction->subtype = StockTransactionType::PURCHASE; + } + } else { + // Handle from + if (($bill->client?->id ?? 0) !== 0) { + // @todo remove phpstan this is just a bug fix until phpstan fixes this bug + /** @phpstan-ignore-next-line */ + $transaction->from = $bill->client->id; + } elseif (($bill->supplier?->id ?? 0) !== 0) { + // @todo remove phpstan this is just a bug fix until phpstan fixes this bug + /** @phpstan-ignore-next-line */ + $transaction->from = $bill->supplier->id; + } + + // Handle to + // @todo find possible candidate based on defined default stock for bill type/org/location + + if ($bill->type->transferType === BillTransferType::SALES + || $bill->type->transferType === BillTransferType::PURCHASE + ) { + $transaction->subtype = StockTransactionType::RETURN; + } + } + + StockTransactionMapper::create()->execute($transaction); + } elseif ($trigger === 'POST:Module:Billing-bill_element-update') { + /** @var \Modules\Billing\Models\BillElement $new */ + /** @var \Modules\Billing\Models\BillElement $old */ + /** @var \Modules\WarehouseManagement\Models\StockTransaction[] $transactions */ + $transactions = StockTransactionMapper::getAll() + ->where('billElement', $new->id) ->execute(); - StockMovementMapper::delete()->execute($transactions); - // @todo consider not to delete but mark as deleted? - } + /* + if ($new->item === $old->item) { + // quantity change + // lot changes + // stock changes + // all other changes ignore! + // check availability again, if not available abort bill + // maybe from an algorithmic point of view first set quantity to zero + // and then do normal algorithm like for a new element + } + */ + if ($new->item !== $old->item) { + StockTransactionMapper::delete()->execute($transactions); - return; - } elseif ($trigger === 'POST:Module:Billing-bill-update') { - // is receiver update -> change all movements - // is status update -> change all movements (delete = delete) + $this->eventBillUpdateInternal( + $account, $old, $new, + $type, 'POST:Module:Billing-bill_element-create', $module, $ref, $content, $ip + ); + } + } elseif ($trigger === 'POST:Module:Billing-bill_element-delete') { + /** @var \Modules\Billing\Models\BillElement $new */ + /** @var \Modules\WarehouseManagement\Models\StockTransaction[] $transactions */ + $transactions = StockTransactionMapper::getAll() + ->where('billElement', $new->id) + ->execute(); - /** @var \Modules\Billing\Models\Bill $new */ - if ($new->status === BillStatus::DELETED) { - $this->eventBillUpdateInternal( - $account, $old, $new, - $type, 'POST:Module:Billing-bill-delete', $module, $ref, $content, $ip - ); - } elseif ($new->status === BillStatus::ARCHIVED) { + StockTransactionMapper::delete()->execute($transactions); + } elseif ($trigger === 'POST:Module:Billing-bill-delete') { + /** @var \Modules\Billing\Models\Bill $new */ /** @var \Modules\Billing\Models\Bill $bill */ $bill = BillMapper::get() ->with('type') @@ -406,20 +434,48 @@ final class ApiController extends Controller ->execute(); foreach ($bill->elements as $element) { - /** @var \Modules\WarehouseManagement\Models\StockMovement[] $transactions */ - $transactions = StockMovementMapper::getAll() + /** @var \Modules\WarehouseManagement\Models\StockTransaction[] $transactions */ + $transactions = StockTransactionMapper::getAll() ->where('billElement', $element->id) ->execute(); - foreach ($transactions as $transaction) { - $transaction->state = StockMovementState::TRANSIT; // @todo change to more specific + StockTransactionMapper::delete()->execute($transactions); + // @todo consider not to delete but mark as deleted? + } + } elseif ($trigger === 'POST:Module:Billing-bill-update') { + // is receiver update -> change all movements + // is status update -> change all movements (delete = delete) - StockMovementMapper::update()->execute($transaction); + /** @var \Modules\Billing\Models\Bill $new */ + if ($new->status === BillStatus::DELETED) { + $this->eventBillUpdateInternal( + $account, $old, $new, + $type, 'POST:Module:Billing-bill-delete', $module, $ref, $content, $ip + ); + } elseif ($new->status === BillStatus::ARCHIVED) { + /** @var \Modules\Billing\Models\Bill $bill */ + $bill = BillMapper::get() + ->with('type') + ->with('elements') + ->with('supplier') + ->with('client') + ->where('id', $new->id) + ->execute(); + + foreach ($bill->elements as $element) { + /** @var \Modules\WarehouseManagement\Models\StockTransaction[] $transactions */ + $transactions = StockTransactionMapper::getAll() + ->where('billElement', $element->id) + ->execute(); + + foreach ($transactions as $transaction) { + $transaction->state = StockTransactionState::TRANSIT; // @todo change to more specific + + StockTransactionMapper::update()->execute($transaction); + } } } } - - return; } } } diff --git a/Models/Attribute/LotAttributeValueMapper.php b/Models/Attribute/LotAttributeValueMapper.php index 7f0e616..ab26e7e 100644 --- a/Models/Attribute/LotAttributeValueMapper.php +++ b/Models/Attribute/LotAttributeValueMapper.php @@ -59,6 +59,7 @@ final class LotAttributeValueMapper extends DataMapperFactory 'mapper' => LotAttributeValueL11nMapper::class, 'table' => 'warehousemgmt_attr_value_l11n', 'self' => 'warehousemgmt_attr_value_l11n_value', + 'column' => 'content', 'external' => null, ], ]; diff --git a/Models/NullStockDistribution.php b/Models/NullStockDistribution.php new file mode 100644 index 0000000..c20a709 --- /dev/null +++ b/Models/NullStockDistribution.php @@ -0,0 +1,46 @@ +id = $id; + } + + /** + * {@inheritdoc} + */ + public function jsonSerialize() : mixed + { + return ['id' => $this->id]; + } +} diff --git a/Models/StockMovementMapper.php b/Models/NullStockTransaction.php old mode 100755 new mode 100644 similarity index 52% rename from Models/StockMovementMapper.php rename to Models/NullStockTransaction.php index 813d454..36c048e --- a/Models/StockMovementMapper.php +++ b/Models/NullStockTransaction.php @@ -14,19 +14,33 @@ declare(strict_types=1); namespace Modules\WarehouseManagement\Models; -use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; - /** - * WarehouseManagement mapper class. + * Null model * * @package Modules\WarehouseManagement\Models * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 - * - * @template T of StockMovement - * @extends DataMapperFactory */ -final class StockMovementMapper extends DataMapperFactory +final class NullStockTransaction extends StockTransaction { + /** + * Constructor + * + * @param int $id Model id + * + * @since 1.0.0 + */ + public function __construct(int $id = 0) + { + $this->id = $id; + } + + /** + * {@inheritdoc} + */ + public function jsonSerialize() : mixed + { + return ['id' => $this->id]; + } } diff --git a/Models/StockDistribution.php b/Models/StockDistribution.php new file mode 100644 index 0000000..2aa6c70 --- /dev/null +++ b/Models/StockDistribution.php @@ -0,0 +1,44 @@ + + */ +final class StockDistributionMapper extends DataMapperFactory +{ + /** + * Columns. + * + * @var array + * @since 1.0.0 + */ + public const COLUMNS = [ + 'warehousemgmt_stock_distribution_id' => ['name' => 'warehousemgmt_stock_distribution_id', 'type' => 'int', 'internal' => 'id'], + 'warehousemgmt_stock_distribution_item' => ['name' => 'warehousemgmt_stock_distribution_item', 'type' => 'int', 'internal' => 'item'], + 'warehousemgmt_stock_distribution_lot' => ['name' => 'warehousemgmt_stock_distribution_lot', 'type' => 'int', 'internal' => 'lot'], + 'warehousemgmt_stock_distribution_stock' => ['name' => 'warehousemgmt_stock_distribution_stock', 'type' => 'int', 'internal' => 'stock'], + 'warehousemgmt_stock_distribution_stocktype' => ['name' => 'warehousemgmt_stock_distribution_stocktype', 'type' => 'int', 'internal' => 'stockType'], + 'warehousemgmt_stock_distribution_quantity' => ['name' => 'warehousemgmt_stock_distribution_quantity', 'type' => 'int', 'internal' => 'quantity'], + ]; + + /** + * Model to use by the mapper. + * + * @var class-string + * @since 1.0.0 + */ + public const MODEL = StockDistribution::class; + + /** + * Primary table. + * + * @var string + * @since 1.0.0 + */ + public const TABLE = 'warehousemgmt_stock_distribution'; + + /** + * Primary field name. + * + * @var string + * @since 1.0.0 + */ + public const PRIMARYFIELD = 'warehousemgmt_stock_distribution_id'; +} diff --git a/Models/StockMovement.php b/Models/StockTransaction.php old mode 100755 new mode 100644 similarity index 80% rename from Models/StockMovement.php rename to Models/StockTransaction.php index 2dc4966..5225503 --- a/Models/StockMovement.php +++ b/Models/StockTransaction.php @@ -25,7 +25,7 @@ use Modules\Admin\Models\NullAccount; * @link https://jingga.app * @since 1.0.0 */ -class StockMovement +class StockTransaction { /** * ID. @@ -43,7 +43,7 @@ class StockMovement public int $to = 0; - public int $type = StockMovementType::TRANSFER; + public int $type = StockTransactionType::TRANSFER; public int $subtype = 0; @@ -51,7 +51,17 @@ class StockMovement public int $billElement = 0; - public int $state = StockMovementState::DRAFT; + public int $state = StockTransactionState::DRAFT; + + public int $item = 0; + + public int $fromLot = 0; + public int $fromStock = 0; + public int $fromStockType = 0; + + public int $toLot = 0; + public int $toStock = 0; + public int $toStockType = 0; /** * Creator. diff --git a/Models/StockTransactionMapper.php b/Models/StockTransactionMapper.php new file mode 100644 index 0000000..25f837d --- /dev/null +++ b/Models/StockTransactionMapper.php @@ -0,0 +1,76 @@ + + */ +final class StockTransactionMapper extends DataMapperFactory +{ + /** + * Columns. + * + * @var array + * @since 1.0.0 + */ + public const COLUMNS = [ + 'warehousemgmt_stock_transaction_id' => ['name' => 'warehousemgmt_stock_transaction_id', 'type' => 'int', 'internal' => 'id'], + 'warehousemgmt_stock_transaction_state' => ['name' => 'warehousemgmt_stock_transaction_state', 'type' => 'int', 'internal' => 'state'], + 'warehousemgmt_stock_transaction_quantity' => ['name' => 'warehousemgmt_stock_transaction_quantity', 'type' => 'int', 'internal' => 'quantity'], + 'warehousemgmt_stock_transaction_type' => ['name' => 'warehousemgmt_stock_transaction_type', 'type' => 'int', 'internal' => 'type'], + 'warehousemgmt_stock_transaction_item' => ['name' => 'warehousemgmt_stock_transaction_item', 'type' => 'int', 'internal' => 'item'], + 'warehousemgmt_stock_transaction_from_lot' => ['name' => 'warehousemgmt_stock_transaction_from_lot', 'type' => 'int', 'internal' => 'fromLot'], + 'warehousemgmt_stock_transaction_from_stock' => ['name' => 'warehousemgmt_stock_transaction_from_stock', 'type' => 'int', 'internal' => 'fromStock'], + 'warehousemgmt_stock_transaction_from_stocktype' => ['name' => 'warehousemgmt_stock_transaction_from_stocktype', 'type' => 'int', 'internal' => 'fromStockType'], + 'warehousemgmt_stock_transaction_to_lot' => ['name' => 'warehousemgmt_stock_transaction_to_lot', 'type' => 'int', 'internal' => 'toLot'], + 'warehousemgmt_stock_transaction_to_stock' => ['name' => 'warehousemgmt_stock_transaction_to_stock', 'type' => 'int', 'internal' => 'toStock'], + 'warehousemgmt_stock_transaction_to_stocktype' => ['name' => 'warehousemgmt_stock_transaction_to_stocktype', 'type' => 'int', 'internal' => 'toStockType'], + 'warehousemgmt_stock_transaction_bill_element' => ['name' => 'warehousemgmt_stock_transaction_bill_element', 'type' => 'int', 'internal' => 'billElement'], + ]; + + /** + * Model to use by the mapper. + * + * @var class-string + * @since 1.0.0 + */ + public const MODEL = StockTransaction::class; + + /** + * Primary table. + * + * @var string + * @since 1.0.0 + */ + public const TABLE = 'warehousemgmt_stock_transaction'; + + /** + * Primary field name. + * + * @var string + * @since 1.0.0 + */ + public const PRIMARYFIELD = 'warehousemgmt_stock_transaction_id'; +} diff --git a/Models/StockMovementState.php b/Models/StockTransactionState.php similarity index 92% rename from Models/StockMovementState.php rename to Models/StockTransactionState.php index 140f78b..1ddb816 100644 --- a/Models/StockMovementState.php +++ b/Models/StockTransactionState.php @@ -24,7 +24,7 @@ use phpOMS\Stdlib\Base\Enum; * @link https://jingga.app * @since 1.0.0 */ -abstract class StockMovementState extends Enum +abstract class StockTransactionState extends Enum { public const DRAFT = 1; diff --git a/Models/StockMovementType.php b/Models/StockTransactionType.php old mode 100755 new mode 100644 similarity index 95% rename from Models/StockMovementType.php rename to Models/StockTransactionType.php index 5611260..35ac364 --- a/Models/StockMovementType.php +++ b/Models/StockTransactionType.php @@ -24,7 +24,7 @@ use phpOMS\Stdlib\Base\Enum; * @link https://jingga.app * @since 1.0.0 */ -abstract class StockMovementType extends Enum +abstract class StockTransactionType extends Enum { public const MERGE = 1; diff --git a/Theme/Backend/Lang/ar.lang.php b/Theme/Backend/Lang/ar.lang.php index 6a62e89..3a00c19 100755 --- a/Theme/Backend/Lang/ar.lang.php +++ b/Theme/Backend/Lang/ar.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'الجميع', - 'Amount' => 'مقدار', - 'Arrivals' => 'الوصول', - 'Article' => 'مقالة - سلعة', - 'Articles' => 'مقالات', - 'City' => 'مدينة', - 'Consignee' => 'المرسل إليه', - 'Consignor' => 'المرسل', - 'Country' => 'دولة', - 'Date' => 'تاريخ', - 'Description' => 'وصف', - 'Interval' => 'فترة', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'موقع', 'Locations' => '', - 'Matchcode' => 'رمز مطابق', - 'Month' => 'شهر', 'Name' => 'اسم', - 'Order' => 'طلب', - 'Quantity' => 'كمية', - 'Reference' => 'المرجعي', - 'Shipping' => 'شحن', - 'Statistics' => 'إحصائيات', 'Stock' => 'المخزون', 'Stocks' => '', - 'Street' => 'شارع', - 'Today' => 'اليوم', 'Type' => 'نوع', - 'Types' => '', - 'Week' => 'أسبوع', - 'Year' => 'عام', - 'Zip' => 'أزيز', ]]; diff --git a/Theme/Backend/Lang/cs.lang.php b/Theme/Backend/Lang/cs.lang.php index 3cd9e3c..68a5700 100755 --- a/Theme/Backend/Lang/cs.lang.php +++ b/Theme/Backend/Lang/cs.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Všechno', - 'Amount' => 'Množství', - 'Arrivals' => 'Přílety', - 'Article' => 'Článek', - 'Articles' => 'Články', - 'City' => 'Město', - 'Consignee' => 'Příjemce', - 'Consignor' => 'Odesílatel', - 'Country' => 'Země', - 'Date' => 'datum', - 'Description' => 'Popis', - 'Interval' => 'Interval', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Umístění', 'Locations' => '', - 'Matchcode' => 'MatchCode.', - 'Month' => 'Měsíc', 'Name' => 'název', - 'Order' => 'Objednat', - 'Quantity' => 'Množství', - 'Reference' => 'Odkaz', - 'Shipping' => 'Lodní doprava', - 'Statistics' => 'Statistika', 'Stock' => 'Skladem', 'Stocks' => '', - 'Street' => 'ulice', - 'Today' => 'Dnes', 'Type' => 'Typ', - 'Types' => '', - 'Week' => 'Týden', - 'Year' => 'Rok', - 'Zip' => 'Zip', ]]; diff --git a/Theme/Backend/Lang/da.lang.php b/Theme/Backend/Lang/da.lang.php index 46f64e1..edbed16 100755 --- a/Theme/Backend/Lang/da.lang.php +++ b/Theme/Backend/Lang/da.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Alle', - 'Amount' => 'Beløb', - 'Arrivals' => 'Ankomster.', - 'Article' => 'Artikel', - 'Articles' => 'Artikler', - 'City' => 'City.', - 'Consignee' => 'Modtageren.', - 'Consignor' => 'Afsender.', - 'Country' => 'Land', - 'Date' => 'Dato', - 'Description' => 'Beskrivelse', - 'Interval' => 'Interval', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Beliggenhed', 'Locations' => '', - 'Matchcode' => 'MatchCode.', - 'Month' => 'Måned', 'Name' => 'Navn', - 'Order' => 'Bestille', - 'Quantity' => 'Antal', - 'Reference' => 'Reference', - 'Shipping' => 'Forsendelse', - 'Statistics' => 'Statistikker', 'Stock' => 'Lager', 'Stocks' => '', - 'Street' => 'Gade', - 'Today' => 'I dag', 'Type' => 'Type', - 'Types' => '', - 'Week' => 'Uge', - 'Year' => 'År', - 'Zip' => 'Zip.', ]]; diff --git a/Theme/Backend/Lang/de.lang.php b/Theme/Backend/Lang/de.lang.php index 72b1243..946ea15 100755 --- a/Theme/Backend/Lang/de.lang.php +++ b/Theme/Backend/Lang/de.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Alle', - 'Amount' => 'Höhe', - 'Arrivals' => 'Ankunft', - 'Article' => 'Artikel', - 'Articles' => 'Artikel', - 'City' => 'Stadt', - 'Consignee' => 'Empfänger', - 'Consignor' => 'Versender', - 'Country' => 'Land', - 'Date' => 'Datum', - 'Description' => 'Beschreibung', - 'Interval' => 'Intervall', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Ort', 'Locations' => '', - 'Matchcode' => 'Matchcode', - 'Month' => 'Monat', 'Name' => 'Name', - 'Order' => 'Befehl', - 'Quantity' => 'Menge', - 'Reference' => 'Bezug', - 'Shipping' => 'Versand', - 'Statistics' => 'Statistiken', 'Stock' => 'Aktie', 'Stocks' => '', - 'Street' => 'Straße', - 'Today' => 'Heute', 'Type' => 'Typ', - 'Types' => '', - 'Week' => 'Woche', - 'Year' => 'Jahr', - 'Zip' => 'Reißverschluss', ]]; diff --git a/Theme/Backend/Lang/el.lang.php b/Theme/Backend/Lang/el.lang.php index d2e4a59..3219db9 100755 --- a/Theme/Backend/Lang/el.lang.php +++ b/Theme/Backend/Lang/el.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Ολα', - 'Amount' => 'Ποσό', - 'Arrivals' => 'Αφίξεις', - 'Article' => 'Αρθρο', - 'Articles' => 'Είδη', - 'City' => 'Πόλη', - 'Consignee' => 'Παραλήπτης', - 'Consignor' => 'Αποστολέας', - 'Country' => 'Χώρα', - 'Date' => 'Ημερομηνία', - 'Description' => 'Περιγραφή', - 'Interval' => 'Διάστημα', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Τοποθεσία', 'Locations' => '', - 'Matchcode' => 'Matchcode', - 'Month' => 'Μήνας', 'Name' => 'Ονομα', - 'Order' => 'Σειρά', - 'Quantity' => 'Ποσότητα', - 'Reference' => 'Αναφορά', - 'Shipping' => 'Αποστολή', - 'Statistics' => 'Στατιστική', 'Stock' => 'Στοκ', 'Stocks' => '', - 'Street' => 'Δρόμος', - 'Today' => 'Σήμερα', 'Type' => 'Τύπος', - 'Types' => '', - 'Week' => 'Εβδομάδα', - 'Year' => 'Ετος', - 'Zip' => 'Φερμουάρ', ]]; diff --git a/Theme/Backend/Lang/en.lang.php b/Theme/Backend/Lang/en.lang.php index 5cd5639..35d0be0 100755 --- a/Theme/Backend/Lang/en.lang.php +++ b/Theme/Backend/Lang/en.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'All', - 'Amount' => 'Amount', - 'Arrivals' => 'Arrivals', - 'Article' => 'Article', - 'Articles' => 'Articles', - 'City' => 'City', - 'Consignee' => 'Consignee', - 'Consignor' => 'Consignor', - 'Country' => 'Country', - 'Date' => 'Date', - 'Description' => 'Description', - 'Interval' => 'Interval', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Location', 'Locations' => 'Locations', - 'Matchcode' => 'Matchcode', - 'Month' => 'Month', 'Name' => 'Name', - 'Order' => 'Order', - 'Quantity' => 'Quantity', - 'Reference' => 'Reference', - 'Shipping' => 'Shipping', - 'Statistics' => 'Statistics', 'Stock' => 'Stock', 'Stocks' => 'Stocks', - 'Street' => 'Street', - 'Today' => 'Today', 'Type' => 'Type', - 'Types' => 'Types', - 'Week' => 'Week', - 'Year' => 'Year', - 'Zip' => 'Zip', ]]; diff --git a/Theme/Backend/Lang/es.lang.php b/Theme/Backend/Lang/es.lang.php index 4f2bd86..d3a6e73 100755 --- a/Theme/Backend/Lang/es.lang.php +++ b/Theme/Backend/Lang/es.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Todo', - 'Amount' => 'Monto', - 'Arrivals' => 'Llegadas', - 'Article' => 'Artículo', - 'Articles' => 'Artículos', - 'City' => 'Ciudad', - 'Consignee' => 'Consignatario', - 'Consignor' => 'Consignador', - 'Country' => 'País', - 'Date' => 'Fecha', - 'Description' => 'Descripción', - 'Interval' => 'Intervalo', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Ubicación', 'Locations' => '', - 'Matchcode' => 'Código de asociación', - 'Month' => 'Mes', 'Name' => 'Nombre', - 'Order' => 'Pedido', - 'Quantity' => 'Cantidad', - 'Reference' => 'Referencia', - 'Shipping' => 'Transporte', - 'Statistics' => 'Estadísticas', 'Stock' => 'Valores', 'Stocks' => '', - 'Street' => 'calle', - 'Today' => 'Hoy dia', 'Type' => 'Escribe', - 'Types' => '', - 'Week' => 'Semana', - 'Year' => 'Año', - 'Zip' => 'Cremallera', ]]; diff --git a/Theme/Backend/Lang/fi.lang.php b/Theme/Backend/Lang/fi.lang.php index 9de2a2a..41fa5a6 100755 --- a/Theme/Backend/Lang/fi.lang.php +++ b/Theme/Backend/Lang/fi.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Kaikki', - 'Amount' => 'Määrä', - 'Arrivals' => 'Saapuvat', - 'Article' => 'Artikla', - 'Articles' => 'Artikkelit', - 'City' => 'Kaupunki', - 'Consignee' => 'Vastaanottaja', - 'Consignor' => 'Lähettäjä', - 'Country' => 'Maa', - 'Date' => 'Päivämäärä', - 'Description' => 'Kuvaus', - 'Interval' => 'Aikaväli', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Sijainti', 'Locations' => '', - 'Matchcode' => 'Matchcode', - 'Month' => 'Kuukausi', 'Name' => 'Nimi', - 'Order' => 'Tilaus', - 'Quantity' => 'Määrä', - 'Reference' => 'Viite', - 'Shipping' => 'laivaus', - 'Statistics' => 'Tilastot', 'Stock' => 'Varasto', 'Stocks' => '', - 'Street' => 'Katu', - 'Today' => 'Tänään', 'Type' => 'Tyyppi', - 'Types' => '', - 'Week' => 'Viikko', - 'Year' => 'Vuosi', - 'Zip' => 'Postinumero', ]]; diff --git a/Theme/Backend/Lang/fr.lang.php b/Theme/Backend/Lang/fr.lang.php index 412fd45..0ea9378 100755 --- a/Theme/Backend/Lang/fr.lang.php +++ b/Theme/Backend/Lang/fr.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Tout', - 'Amount' => 'Quantité', - 'Arrivals' => 'Arrivées', - 'Article' => 'Article', - 'Articles' => 'Des articles', - 'City' => 'Ville', - 'Consignee' => 'Destinataire', - 'Consignor' => 'Expéditeur', - 'Country' => 'Pays', - 'Date' => 'Date', - 'Description' => 'La description', - 'Interval' => 'Intervalle', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Emplacement', 'Locations' => '', - 'Matchcode' => 'Encadrement', - 'Month' => 'Mois', 'Name' => 'Nom', - 'Order' => 'Commander', - 'Quantity' => 'Quantité', - 'Reference' => 'Référence', - 'Shipping' => 'Expédition', - 'Statistics' => 'Statistiques', 'Stock' => 'Stocker', 'Stocks' => '', - 'Street' => 'rue', - 'Today' => 'Aujourd\'hui', 'Type' => 'Taper', - 'Types' => '', - 'Week' => 'La semaine', - 'Year' => 'An', - 'Zip' => 'Zipper', ]]; diff --git a/Theme/Backend/Lang/hu.lang.php b/Theme/Backend/Lang/hu.lang.php index c4af5ca..8c9bdb9 100755 --- a/Theme/Backend/Lang/hu.lang.php +++ b/Theme/Backend/Lang/hu.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Minden', - 'Amount' => 'Összeg', - 'Arrivals' => 'Érkezés', - 'Article' => 'Cikk', - 'Articles' => 'Árucikkek', - 'City' => 'Város', - 'Consignee' => 'Címzett', - 'Consignor' => 'Feladó', - 'Country' => 'Ország', - 'Date' => 'Dátum', - 'Description' => 'Leírás', - 'Interval' => 'Intervallum', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Elhelyezkedés', 'Locations' => '', - 'Matchcode' => 'Matchcode', - 'Month' => 'Hónap', 'Name' => 'Név', - 'Order' => 'Rendelés', - 'Quantity' => 'Mennyiség', - 'Reference' => 'Referencia', - 'Shipping' => 'Szállítás', - 'Statistics' => 'Statisztika', 'Stock' => 'Készlet', 'Stocks' => '', - 'Street' => 'utca', - 'Today' => 'Ma', 'Type' => 'típus', - 'Types' => '', - 'Week' => 'Hét', - 'Year' => 'Év', - 'Zip' => 'Postai irányítószám', ]]; diff --git a/Theme/Backend/Lang/it.lang.php b/Theme/Backend/Lang/it.lang.php index f003ddb..3512158 100755 --- a/Theme/Backend/Lang/it.lang.php +++ b/Theme/Backend/Lang/it.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Tutto', - 'Amount' => 'Quantità', - 'Arrivals' => 'Arrivi', - 'Article' => 'Articolo', - 'Articles' => 'Artificio', - 'City' => 'Città', - 'Consignee' => 'Destinatario', - 'Consignor' => 'Mittente', - 'Country' => 'Nazione', - 'Date' => 'Data', - 'Description' => 'Descrizione', - 'Interval' => 'Intervallo', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Posizione', 'Locations' => '', - 'Matchcode' => 'Matchcode.', - 'Month' => 'Mese', 'Name' => 'Nome', - 'Order' => 'Ordine', - 'Quantity' => 'Quantità', - 'Reference' => 'Riferimento', - 'Shipping' => 'Spedizione', - 'Statistics' => 'Statistiche', 'Stock' => 'Azione', 'Stocks' => '', - 'Street' => 'strada', - 'Today' => 'Oggi', 'Type' => 'Tipo', - 'Types' => '', - 'Week' => 'Settimana', - 'Year' => 'Anno', - 'Zip' => 'Cerniera lampo', ]]; diff --git a/Theme/Backend/Lang/ja.lang.php b/Theme/Backend/Lang/ja.lang.php index 25d16f2..523c864 100755 --- a/Theme/Backend/Lang/ja.lang.php +++ b/Theme/Backend/Lang/ja.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => '全て', - 'Amount' => '額', - 'Arrivals' => '到着', - 'Article' => '記事', - 'Articles' => 'articles', - 'City' => '市', - 'Consignee' => '荷送人', - 'Consignor' => '荷送人', - 'Country' => '国', - 'Date' => '日にち', - 'Description' => '説明', - 'Interval' => '間隔', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => '位置', 'Locations' => '', - 'Matchcode' => 'マッチコード', - 'Month' => '月', 'Name' => '名前', - 'Order' => '注文', - 'Quantity' => '量', - 'Reference' => 'リファレンス', - 'Shipping' => '運送', - 'Statistics' => '統計学', 'Stock' => 'ストック', 'Stocks' => '', - 'Street' => '街', - 'Today' => '今日', 'Type' => 'タイプ', - 'Types' => '', - 'Week' => '週', - 'Year' => '年', - 'Zip' => 'ジップ', ]]; diff --git a/Theme/Backend/Lang/ko.lang.php b/Theme/Backend/Lang/ko.lang.php index 6b13740..582a4f4 100755 --- a/Theme/Backend/Lang/ko.lang.php +++ b/Theme/Backend/Lang/ko.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => '모두', - 'Amount' => '양', - 'Arrivals' => '도착', - 'Article' => '기사', - 'Articles' => '조항', - 'City' => '도시', - 'Consignee' => '수취인', - 'Consignor' => '위탁자', - 'Country' => '국가', - 'Date' => '날짜', - 'Description' => '설명', - 'Interval' => '간격', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => '위치', 'Locations' => '', - 'Matchcode' => '매치 코드', - 'Month' => '월', 'Name' => '이름', - 'Order' => '주문하다', - 'Quantity' => '수량', - 'Reference' => '참조', - 'Shipping' => '배송', - 'Statistics' => '통계', 'Stock' => '재고', 'Stocks' => '', - 'Street' => '거리', - 'Today' => '오늘', 'Type' => '유형', - 'Types' => '', - 'Week' => '주', - 'Year' => '년도', - 'Zip' => '지퍼', ]]; diff --git a/Theme/Backend/Lang/no.lang.php b/Theme/Backend/Lang/no.lang.php index d45ba78..edbed16 100755 --- a/Theme/Backend/Lang/no.lang.php +++ b/Theme/Backend/Lang/no.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Alle', - 'Amount' => 'Beløp', - 'Arrivals' => 'Ankomster.', - 'Article' => 'Artikkel', - 'Articles' => 'Artikler', - 'City' => 'By', - 'Consignee' => 'Mottaker', - 'Consignor' => 'Avsender', - 'Country' => 'Land', - 'Date' => 'Dato', - 'Description' => 'Beskrivelse', - 'Interval' => 'Intervall', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'plassering', 'Locations' => '', - 'Matchcode' => 'MatchCode.', - 'Month' => 'Måned', 'Name' => 'Navn', - 'Order' => 'Rekkefølge', - 'Quantity' => 'Mengde', - 'Reference' => 'Referanse', - 'Shipping' => 'Shipping', - 'Statistics' => 'Statistikk', 'Stock' => 'Lager', 'Stocks' => '', - 'Street' => 'gate', - 'Today' => 'I dag', 'Type' => 'Type', - 'Types' => '', - 'Week' => 'Uke', - 'Year' => 'År', - 'Zip' => 'Glidelås', ]]; diff --git a/Theme/Backend/Lang/pl.lang.php b/Theme/Backend/Lang/pl.lang.php index 98770ba..ce8bffa 100755 --- a/Theme/Backend/Lang/pl.lang.php +++ b/Theme/Backend/Lang/pl.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Wszystkie', - 'Amount' => 'Kwota', - 'Arrivals' => 'Przyloty', - 'Article' => 'Artykuł', - 'Articles' => 'Artykuły', - 'City' => 'Miasto', - 'Consignee' => 'Konsygnatariusz', - 'Consignor' => 'Wysyłający', - 'Country' => 'Kraj', - 'Date' => 'Data', - 'Description' => 'Opis', - 'Interval' => 'Interwał', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Lokalizacja', 'Locations' => '', - 'Matchcode' => 'MatchCode.', - 'Month' => 'Miesiąc', 'Name' => 'Nazwa', - 'Order' => 'Zamówienie', - 'Quantity' => 'Ilość', - 'Reference' => 'Odniesienie', - 'Shipping' => 'Wysyłka', - 'Statistics' => 'Statystyka', 'Stock' => 'Magazyn', 'Stocks' => '', - 'Street' => 'Ulica', - 'Today' => 'Dziś', 'Type' => 'Rodzaj', - 'Types' => '', - 'Week' => 'Tydzień', - 'Year' => 'Rok', - 'Zip' => 'Zamek błyskawiczny', ]]; diff --git a/Theme/Backend/Lang/pt.lang.php b/Theme/Backend/Lang/pt.lang.php index 6555c0e..e84aa5c 100755 --- a/Theme/Backend/Lang/pt.lang.php +++ b/Theme/Backend/Lang/pt.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Tudo', - 'Amount' => 'Montante', - 'Arrivals' => 'Chegadas', - 'Article' => 'Artigo', - 'Articles' => 'Artigos', - 'City' => 'Cidade', - 'Consignee' => 'Consignatário', - 'Consignor' => 'Expedidor', - 'Country' => 'País', - 'Date' => 'Encontro', - 'Description' => 'Descrição', - 'Interval' => 'Intervalo', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Localização', 'Locations' => '', - 'Matchcode' => 'Código de combinação', - 'Month' => 'Mês', 'Name' => 'Nome', - 'Order' => 'Pedido', - 'Quantity' => 'Quantidade', - 'Reference' => 'Referência', - 'Shipping' => 'Envio', - 'Statistics' => 'Estatisticas', 'Stock' => 'Estoque', 'Stocks' => '', - 'Street' => 'rua', - 'Today' => 'Hoje', 'Type' => 'Modelo', - 'Types' => '', - 'Week' => 'Semana', - 'Year' => 'Ano', - 'Zip' => 'Fecho eclair', ]]; diff --git a/Theme/Backend/Lang/ru.lang.php b/Theme/Backend/Lang/ru.lang.php index 95806a7..80efdb6 100755 --- a/Theme/Backend/Lang/ru.lang.php +++ b/Theme/Backend/Lang/ru.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Все', - 'Amount' => 'Количество', - 'Arrivals' => 'Прибытие', - 'Article' => 'Статья', - 'Articles' => 'Статьи', - 'City' => 'Город', - 'Consignee' => 'Грузополучатель', - 'Consignor' => 'Грузоподъемность', - 'Country' => 'Страна', - 'Date' => 'Дата', - 'Description' => 'Описание', - 'Interval' => 'Интервал', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Место расположения', 'Locations' => '', - 'Matchcode' => 'MatchCode.', - 'Month' => 'Месяц', 'Name' => 'Имя', - 'Order' => 'Заказ', - 'Quantity' => 'Количество', - 'Reference' => 'Ссылка', - 'Shipping' => 'Перевозки', - 'Statistics' => 'Статистика', 'Stock' => 'Склад', 'Stocks' => '', - 'Street' => 'улица', - 'Today' => 'Сегодня', 'Type' => 'Тип', - 'Types' => '', - 'Week' => 'Неделю', - 'Year' => 'Год', - 'Zip' => 'Zip.', ]]; diff --git a/Theme/Backend/Lang/sv.lang.php b/Theme/Backend/Lang/sv.lang.php index c44bce8..86a566a 100755 --- a/Theme/Backend/Lang/sv.lang.php +++ b/Theme/Backend/Lang/sv.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Allt', - 'Amount' => 'Belopp', - 'Arrivals' => 'ankomster', - 'Article' => 'Artikel', - 'Articles' => 'Artiklar', - 'City' => 'Stad', - 'Consignee' => 'Mottagare', - 'Consignor' => 'Avsändare', - 'Country' => 'Land', - 'Date' => 'Datum', - 'Description' => 'Beskrivning', - 'Interval' => 'Intervall', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Plats', 'Locations' => '', - 'Matchcode' => 'Matchcode', - 'Month' => 'Månad', 'Name' => 'namn', - 'Order' => 'Beställa', - 'Quantity' => 'Kvantitet', - 'Reference' => 'Referens', - 'Shipping' => 'Frakt', - 'Statistics' => 'Statistik', 'Stock' => 'Stock', 'Stocks' => '', - 'Street' => 'Gata', - 'Today' => 'I dag', 'Type' => 'Typ', - 'Types' => '', - 'Week' => 'Vecka', - 'Year' => 'År', - 'Zip' => 'Blixtlås', ]]; diff --git a/Theme/Backend/Lang/th.lang.php b/Theme/Backend/Lang/th.lang.php index 1bd8201..6b1c0e6 100755 --- a/Theme/Backend/Lang/th.lang.php +++ b/Theme/Backend/Lang/th.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'ทั้งหมด', - 'Amount' => 'จำนวน', - 'Arrivals' => 'ขาเข้า', - 'Article' => 'บทความ', - 'Articles' => 'บทความ', - 'City' => 'เมือง', - 'Consignee' => 'ผู้รับ', - 'Consignor' => 'ผู้ตราส่ง', - 'Country' => 'ประเทศ', - 'Date' => 'วันที่', - 'Description' => 'คำอธิบาย', - 'Interval' => 'ช่วงเวลา', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'ที่ตั้ง', 'Locations' => '', - 'Matchcode' => 'การจับคู่', - 'Month' => 'เดือน', 'Name' => 'ชื่อ', - 'Order' => 'คำสั่ง', - 'Quantity' => 'ปริมาณ', - 'Reference' => 'อ้างอิง', - 'Shipping' => 'การส่งสินค้า', - 'Statistics' => 'สถิติ', 'Stock' => 'คลังสินค้า', 'Stocks' => '', - 'Street' => 'ถนน', - 'Today' => 'วันนี้', 'Type' => 'พิมพ์', - 'Types' => '', - 'Week' => 'สัปดาห์', - 'Year' => 'ปี', - 'Zip' => 'ซิป', ]]; diff --git a/Theme/Backend/Lang/tr.lang.php b/Theme/Backend/Lang/tr.lang.php index b63a8b5..72518d4 100755 --- a/Theme/Backend/Lang/tr.lang.php +++ b/Theme/Backend/Lang/tr.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Herşey', - 'Amount' => 'Miktar', - 'Arrivals' => 'Geliş', - 'Article' => 'Madde', - 'Articles' => 'Nesne', - 'City' => 'Şehir', - 'Consignee' => 'Alıcı', - 'Consignor' => 'Gönderici', - 'Country' => 'Ülke', - 'Date' => 'Tarih', - 'Description' => 'Açıklama', - 'Interval' => 'Aralık', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Konum', 'Locations' => '', - 'Matchcode' => 'Maç Kodu', - 'Month' => 'Ay', 'Name' => 'İsim', - 'Order' => 'Emir', - 'Quantity' => 'Miktar', - 'Reference' => 'Referans', - 'Shipping' => 'Nakliye', - 'Statistics' => 'İstatistik', 'Stock' => 'Stoklamak', 'Stocks' => '', - 'Street' => 'sokak', - 'Today' => 'Bugün', 'Type' => 'Tip', - 'Types' => '', - 'Week' => 'Hafta', - 'Year' => 'Yıl', - 'Zip' => 'Zip', ]]; diff --git a/Theme/Backend/Lang/uk.lang.php b/Theme/Backend/Lang/uk.lang.php index e3f1554..e4b39b2 100755 --- a/Theme/Backend/Lang/uk.lang.php +++ b/Theme/Backend/Lang/uk.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => 'Все', - 'Amount' => 'Сума', - 'Arrivals' => 'Прибуття', - 'Article' => 'Стаття', - 'Articles' => 'Статті', - 'City' => 'Місто', - 'Consignee' => 'Вантажоодержувач', - 'Consignor' => 'Вантажовідправність', - 'Country' => 'Країна', - 'Date' => 'Дата', - 'Description' => 'Опис', - 'Interval' => 'Інтервал', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => 'Місцезнаходження', 'Locations' => '', - 'Matchcode' => 'Матч', - 'Month' => 'Місяць', 'Name' => 'Назва', - 'Order' => 'Порядок', - 'Quantity' => 'Кількість', - 'Reference' => 'Довідник', - 'Shipping' => 'Доставка', - 'Statistics' => 'Статистика', 'Stock' => 'Запас', 'Stocks' => '', - 'Street' => 'Вулиця', - 'Today' => 'Сьогодні', 'Type' => 'Тип', - 'Types' => '', - 'Week' => 'Тиждень', - 'Year' => 'Рік', - 'Zip' => 'Блиск', ]]; diff --git a/Theme/Backend/Lang/zh.lang.php b/Theme/Backend/Lang/zh.lang.php index b17320a..4b87aea 100755 --- a/Theme/Backend/Lang/zh.lang.php +++ b/Theme/Backend/Lang/zh.lang.php @@ -13,38 +13,12 @@ declare(strict_types=1); return ['WarehouseManagement' => [ - 'All' => '全部', - 'Amount' => '数量', - 'Arrivals' => '到达', - 'Article' => '文章', - 'Articles' => '文章', - 'City' => '城市', - 'Consignee' => '收货人', - 'Consignor' => '托运人', - 'Country' => '国家', - 'Date' => '日期', - 'Description' => '描述', - 'Interval' => '间隔', 'Language' => '', 'Localization' => '', 'Localizations' => '', - 'Location' => '地点', 'Locations' => '', - 'Matchcode' => '匹配码', - 'Month' => '月', 'Name' => '名称', - 'Order' => '命令', - 'Quantity' => '数量', - 'Reference' => '参考', - 'Shipping' => '船运', - 'Statistics' => '统计数据', 'Stock' => '库存', 'Stocks' => '', - 'Street' => '街道', - 'Today' => '今天', 'Type' => '类型', - 'Types' => '', - 'Week' => '星期', - 'Year' => '年', - 'Zip' => '压缩', ]]; diff --git a/tests/Models/StockMovementTest.php b/tests/Models/StockMovementTest.php index c10deae..ae166e7 100755 --- a/tests/Models/StockMovementTest.php +++ b/tests/Models/StockMovementTest.php @@ -14,25 +14,25 @@ declare(strict_types=1); namespace Modules\WarehouseManagement\tests\Models; -use Modules\WarehouseManagement\Models\StockMovement; +use Modules\WarehouseManagement\Models\StockTransaction; /** * @internal */ -final class StockMovementTest extends \PHPUnit\Framework\TestCase +final class StockTransactionTest extends \PHPUnit\Framework\TestCase { - private StockMovement $movement; + private StockTransaction $movement; /** * {@inheritdoc} */ protected function setUp() : void { - $this->movement = new StockMovement(); + $this->movement = new StockTransaction(); } /** - * @covers Modules\WarehouseManagement\Models\StockMovement + * @covers Modules\WarehouseManagement\Models\StockTransaction * @group module */ public function testDefault() : void