mirror of
https://github.com/Karaka-Management/oms-WarehouseManagement.git
synced 2026-01-11 07:08:41 +00:00
continue implementations
This commit is contained in:
parent
42e9c0121c
commit
17fb0226d4
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
],
|
||||
];
|
||||
|
|
|
|||
46
Models/NullStockDistribution.php
Normal file
46
Models/NullStockDistribution.php
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
/**
|
||||
* Jingga
|
||||
*
|
||||
* PHP Version 8.1
|
||||
*
|
||||
* @package Modules\WarehouseManagement\Models
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 2.0
|
||||
* @version 1.0.0
|
||||
* @link https://jingga.app
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\WarehouseManagement\Models;
|
||||
|
||||
/**
|
||||
* Null model
|
||||
*
|
||||
* @package Modules\WarehouseManagement\Models
|
||||
* @license OMS License 2.0
|
||||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*/
|
||||
final class NullStockDistribution extends StockDistribution
|
||||
{
|
||||
/**
|
||||
* 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];
|
||||
}
|
||||
}
|
||||
28
Models/StockMovementMapper.php → Models/NullStockTransaction.php
Executable file → Normal file
28
Models/StockMovementMapper.php → Models/NullStockTransaction.php
Executable file → Normal file
|
|
@ -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<T>
|
||||
*/
|
||||
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];
|
||||
}
|
||||
}
|
||||
44
Models/StockDistribution.php
Normal file
44
Models/StockDistribution.php
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
/**
|
||||
* Jingga
|
||||
*
|
||||
* PHP Version 8.1
|
||||
*
|
||||
* @package Modules\Warehousing\Models
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 2.0
|
||||
* @version 1.0.0
|
||||
* @link https://jingga.app
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\WarehouseManagement\Models;
|
||||
|
||||
/**
|
||||
* Warehouse class.
|
||||
*
|
||||
* @package Modules\Warehousing\Models
|
||||
* @license OMS License 2.0
|
||||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class StockDistribution
|
||||
{
|
||||
/**
|
||||
* ID.
|
||||
*
|
||||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public int $id = 0;
|
||||
|
||||
public int $quantity = 0;
|
||||
|
||||
public int $lot = 0;
|
||||
|
||||
public int $item = 0;
|
||||
|
||||
public int $stock = 0;
|
||||
|
||||
public int $stockType = 0;
|
||||
}
|
||||
70
Models/StockDistributionMapper.php
Normal file
70
Models/StockDistributionMapper.php
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
/**
|
||||
* Jingga
|
||||
*
|
||||
* PHP Version 8.1
|
||||
*
|
||||
* @package Modules\WarehouseManagement\Models
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 2.0
|
||||
* @version 1.0.0
|
||||
* @link https://jingga.app
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\WarehouseManagement\Models;
|
||||
|
||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||
|
||||
/**
|
||||
* WarehouseManagement mapper class.
|
||||
*
|
||||
* @package Modules\WarehouseManagement\Models
|
||||
* @license OMS License 2.0
|
||||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @template T of StockDistribution
|
||||
* @extends DataMapperFactory<T>
|
||||
*/
|
||||
final class StockDistributionMapper extends DataMapperFactory
|
||||
{
|
||||
/**
|
||||
* Columns.
|
||||
*
|
||||
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?: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<T>
|
||||
* @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';
|
||||
}
|
||||
16
Models/StockMovement.php → Models/StockTransaction.php
Executable file → Normal file
16
Models/StockMovement.php → Models/StockTransaction.php
Executable file → Normal file
|
|
@ -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.
|
||||
76
Models/StockTransactionMapper.php
Normal file
76
Models/StockTransactionMapper.php
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
<?php
|
||||
/**
|
||||
* Jingga
|
||||
*
|
||||
* PHP Version 8.1
|
||||
*
|
||||
* @package Modules\WarehouseManagement\Models
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 2.0
|
||||
* @version 1.0.0
|
||||
* @link https://jingga.app
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\WarehouseManagement\Models;
|
||||
|
||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||
|
||||
/**
|
||||
* WarehouseManagement mapper class.
|
||||
*
|
||||
* @package Modules\WarehouseManagement\Models
|
||||
* @license OMS License 2.0
|
||||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @template T of StockTransaction
|
||||
* @extends DataMapperFactory<T>
|
||||
*/
|
||||
final class StockTransactionMapper extends DataMapperFactory
|
||||
{
|
||||
/**
|
||||
* Columns.
|
||||
*
|
||||
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?: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<T>
|
||||
* @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';
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
2
Models/StockMovementType.php → Models/StockTransactionType.php
Executable file → Normal file
2
Models/StockMovementType.php → Models/StockTransactionType.php
Executable file → Normal file
|
|
@ -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;
|
||||
|
||||
|
|
@ -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' => 'أزيز',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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.',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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' => 'Φερμουάρ',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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' => 'ジップ',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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' => '지퍼',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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.',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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' => 'ซิป',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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' => 'Блиск',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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' => '压缩',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user