continue implementations

This commit is contained in:
Dennis Eichhorn 2024-01-12 00:30:21 +00:00
parent 47159f80c1
commit e95dcdbd2a
55 changed files with 2612 additions and 770 deletions

View File

@ -3,7 +3,7 @@
"description": "Default item segmentation (segment, section, sales group, product group)",
"type": "setting",
"name": "1004800001",
"content": "[\"segment\":1, \"section\":1, \"sales_group\":1, \"product_group\":1]",
"content": "{\"segment\":1, \"section\":1, \"sales_group\":1, \"product_group\":1}",
"pattern": "",
"module": "ItemManagement"
}

View File

@ -38,6 +38,10 @@ class Admin
*/
public static function install(ApplicationAbstract $app, string $path) : void
{
\Modules\Admin\Admin\Installer::installExternal($app, ['path' => __DIR__ . '/Admin.install.json']);
// We are creating default items in the ItemManagement installer.
// This requires that these settings are already available
// However, this install script runs AFTER the primary installer runs.
// This causes problems for the item installation and is therefore moved to the "Installer".
// \Modules\Admin\Admin\Installer::installExternal($app, ['path' => __DIR__ . '/Admin.install.json']);
}
}

View File

@ -120,6 +120,21 @@
"children": []
}
]
},
{
"id": 1004804001,
"pid": "/",
"type": 2,
"subtype": 1,
"name": "Materials",
"uri": "{/base}/item/material/list?{?}",
"target": "self",
"icon": null,
"order": 5,
"from": "ItemManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1004801001,
"children": []
}
]
},

View File

@ -1,4 +1,269 @@
[
{
"name": "primary_supplier",
"l11n": {
"en": "Primary Supplier",
"de": "Hauptlieferant"
},
"value_type": 1,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": []
},
{
"name": "lead_time",
"l11n": {
"en": "Lead time",
"de": "Lieferzeit"
},
"value_type": 1,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": []
},
{
"name": "qc_time",
"l11n": {
"en": "QC time",
"de": "QC Zeit"
},
"value_type": 1,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": []
},
{
"name": "maximum_stock_quantity",
"l11n": {
"en": "Maximum stock quantity",
"de": "Maximale Lagermenge"
},
"value_type": 1,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": []
},
{
"name": "minimum_stock_quantity",
"l11n": {
"en": "Minimum stock quantity",
"de": "Minimale Lagermenge"
},
"value_type": 1,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": []
},
{
"name": "maximum_order_interval",
"l11n": {
"en": "Maximum order interval",
"de": "Maximale Bestellhäufigkeit"
},
"value_type": 1,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": []
},
{
"name": "minimum_order_quantity",
"l11n": {
"en": "MOQ",
"de": "Mindestbestellmenge"
},
"value_type": 1,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": []
},
{
"name": "order_suggestion_type",
"l11n": {
"en": "Order suggestion type",
"de": "Bestellvorschlags Art"
},
"value_type": 1,
"is_custom_allowed": false,
"validation_pattern": "",
"is_required": false,
"default_value": 4,
"values": [
{
"value": 1,
"l11n": {
"en": "Available",
"de": "Verfügbar"
}
},
{
"value": 2,
"l11n": {
"en": "Historic",
"de": "Historisch"
}
},
{
"value": 4,
"l11n": {
"en": "Trend",
"de": "Trend"
}
}
]
},
{
"name": "order_suggestion_optimization_type",
"l11n": {
"en": "Order optimization type",
"de": "Bestelloptimierung"
},
"value_type": 1,
"is_custom_allowed": false,
"validation_pattern": "",
"is_required": false,
"default_value": 3,
"values": [
{
"value": 1,
"l11n": {
"en": "Price",
"de": "Preis"
}
},
{
"value": 2,
"l11n": {
"en": "Just in time",
"de": "Just in time"
}
},
{
"value": 3,
"l11n": {
"en": "Availability",
"de": "Verfügbarkeit"
}
}
]
},
{
"name": "order_suggestion_history_duration",
"l11n": {
"en": "Order suggestion historic data",
"de": "Historische Bestelldaten"
},
"value_type": 1,
"is_custom_allowed": false,
"validation_pattern": "",
"is_required": false,
"default_value": 36,
"values": [
{"value": 1},{"value": 2},{"value": 3},{"value": 4},{"value": 5},{"value": 6},
{"value": 7},{"value": 8},{"value": 9},{"value": 10},{"value": 11},{"value": 12},
{"value": 13},{"value": 14},{"value": 15},{"value": 16},{"value": 17},{"value": 18},
{"value": 19},{"value": 20},{"value": 21},{"value": 22},{"value": 23},{"value": 24},
{"value": 25},{"value": 26},{"value": 27},{"value": 28},{"value": 29},{"value": 30},
{"value": 31},{"value": 32},{"value": 33},{"value": 34},{"value": 35},{"value": 36}
]
},
{
"name": "order_suggestion_averaging_method",
"l11n": {
"en": "Order suggestion averaging method",
"de": "Bestellvorschlag Durchschnittsmethode"
},
"value_type": 1,
"is_custom_allowed": false,
"validation_pattern": "",
"is_required": false,
"default_value": 2,
"values": [
{
"value": 1,
"l11n": {
"en": "Mean",
"de": "Durchschnitt"
}
},
{
"value": 2,
"l11n": {
"en": "Median",
"de": "Median"
}
},
{
"value": 3,
"l11n": {
"en": "Weighted mean",
"de": "Gewichtetes Mittel"
}
}
]
},
{
"name": "order_suggestion_comparison_duration_type",
"l11n": {
"en": "Order suggestion comparison type",
"de": "Bestellvorschlagsvergleich"
},
"value_type": 1,
"is_custom_allowed": false,
"validation_pattern": "",
"is_required": false,
"default_value": 2,
"values": [
{
"value": 1,
"l11n": {
"en": "Annually",
"de": "Jährlich"
}
},
{
"value": 2,
"l11n": {
"en": "Monthly",
"de": "Monatlich"
}
},
{
"value": 3,
"l11n": {
"en": "Weekly",
"de": "Wöchentlich"
}
},
{
"value": 4,
"l11n": {
"en": "Monthly/Yearly",
"de": "Monatlich/Jährlich"
}
},
{
"value": 5,
"l11n": {
"en": "Weekly/Yearly",
"de": "Wöchentlich/Jährlich"
}
}
]
},
{
"name": "shop_item",
"l11n": {
@ -238,7 +503,7 @@
{
"name": "purchase_tax_code",
"l11n": {
"en": "Purchse tax code",
"en": "Purchase tax code",
"de": "VSt. code"
},
"value_type": 2,
@ -313,7 +578,7 @@
"value": "green",
"l11n": {
"en": "Green",
"de": "Gruen"
"de": "Grün"
}
},
{
@ -400,6 +665,32 @@
},
"values": []
},
{
"name": "height",
"value_type": 2,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"l11n": {
"en": "Height",
"de": "Höhe"
},
"values": []
},
{
"name": "volume",
"value_type": 2,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"l11n": {
"en": "Volume",
"de": "Volumen"
},
"values": []
},
{
"name": "releasedate",
"value_type": 4,
@ -559,19 +850,6 @@
}
]
},
{
"name": "minimum_order",
"l11n": {
"en": "MOQ",
"de": "Mindestbestellmenge"
},
"value_type": 1,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": []
},
{
"name": "dual_use",
"l11n": {
@ -1046,5 +1324,54 @@
"is_required": false,
"default_value": "",
"values": []
},
{
"name": "eu_medical_device_class",
"l11n": {
"en": "EU Medical device class",
"de": "EU Medizinproduktklasse"
},
"value_type": 2,
"is_custom_allowed": false,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": [
{
"value": "I"
},
{
"value": "IIa"
},
{
"value": "IIb"
},
{
"value": "III"
}
]
},
{
"name": "fda_medical_regulatory_class",
"l11n": {
"en": "FDA Medical regulatory class",
"de": "FDA regulatorische Klasse"
},
"value_type": 2,
"is_custom_allowed": false,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": [
{
"value": "I"
},
{
"value": "II"
},
{
"value": "III"
}
]
}
]

View File

@ -38,6 +38,11 @@
"default": null,
"null": true
},
"itemmgmt_item_stockidentifier": {
"name": "itemmgmt_item_stockidentifier",
"type": "TINYINT(1)",
"null": false
},
"itemmgmt_item_parent": {
"name": "itemmgmt_item_parent",
"type": "INT(11)",
@ -108,6 +113,158 @@
}
}
},
"itemmgmt_item_container": {
"name": "itemmgmt_item_container",
"fields": {
"itemmgmt_item_container_id": {
"name": "itemmgmt_item_container_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"itemmgmt_item_container_name": {
"name": "itemmgmt_item_container_name",
"type": "VARCHAR(255)",
"null": false
},
"itemmgmt_item_container_quantity": {
"name": "itemmgmt_item_container_quantity",
"type": "INT",
"null": false
},
"itemmgmt_item_container_weight": {
"name": "itemmgmt_item_container_weight",
"type": "INT",
"null": false
},
"itemmgmt_item_container_width": {
"name": "itemmgmt_item_container_width",
"type": "INT",
"null": false
},
"itemmgmt_item_container_height": {
"name": "itemmgmt_item_container_height",
"type": "INT",
"null": false
},
"itemmgmt_item_container_length": {
"name": "itemmgmt_item_container_length",
"type": "INT",
"null": false
},
"itemmgmt_item_container_volume": {
"name": "itemmgmt_item_container_volume",
"type": "INT",
"null": false
},
"itemmgmt_item_container_item": {
"name": "itemmgmt_item_container_item",
"type": "INT",
"null": false,
"foreignTable": "itemmgmt_item",
"foreignKey": "itemmgmt_item_id"
}
}
},
"itemmgmt_material_type": {
"name": "itemmgmt_material_type",
"fields": {
"itemmgmt_material_type_id": {
"name": "itemmgmt_material_type_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"itemmgmt_material_type_name": {
"name": "itemmgmt_material_type_name",
"type": "VARCHAR(255)",
"null": false,
"unique": true
}
}
},
"itemmgmt_material_type_l11n": {
"name": "itemmgmt_material_type_l11n",
"fields": {
"itemmgmt_material_type_l11n_id": {
"name": "itemmgmt_material_type_l11n_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"itemmgmt_material_type_l11n_title": {
"name": "itemmgmt_material_type_l11n_title",
"type": "VARCHAR(255)",
"null": false
},
"itemmgmt_material_type_l11n_type": {
"name": "itemmgmt_material_type_l11n_type",
"type": "INT",
"null": false,
"foreignTable": "itemmgmt_material_type",
"foreignKey": "itemmgmt_material_type_id"
},
"itemmgmt_material_type_l11n_language": {
"name": "itemmgmt_material_type_l11n_language",
"type": "VARCHAR(2)",
"default": null,
"null": true,
"foreignTable": "language",
"foreignKey": "language_639_1"
}
}
},
"itemmgmt_material": {
"name": "itemmgmt_material",
"fields": {
"itemmgmt_material_id": {
"name": "itemmgmt_material_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"itemmgmt_material_category": {
"description": "product, packaging",
"name": "itemmgmt_material_category",
"type": "TINYINT(1)",
"null": false
},
"itemmgmt_material_subcategory": {
"description": "primary, secondary, tertiary, retail",
"name": "itemmgmt_material_subcategory",
"type": "INT",
"null": false
},
"itemmgmt_material_type": {
"name": "itemmgmt_material_type",
"type": "INT",
"null": false,
"foreignTable": "itemmgmt_material_type",
"foreignKey": "itemmgmt_material_type_id"
},
"itemmgmt_material_quantity": {
"name": "itemmgmt_material_quantity",
"type": "INT",
"null": false
},
"itemmgmt_material_unit": {
"name": "itemmgmt_material_unit",
"type": "VARCHAR(25)",
"null": false
},
"itemmgmt_material_item": {
"name": "itemmgmt_material_item",
"type": "INT",
"null": false,
"foreignTable": "itemmgmt_item",
"foreignKey": "itemmgmt_item_id"
}
}
},
"itemmgmt_item_l11n_type": {
"name": "itemmgmt_item_l11n_type",
"fields": {
@ -200,6 +357,11 @@
"type": "TINYINT(1)",
"null": false
},
"itemmgmt_attr_type_repeatable": {
"name": "itemmgmt_attr_type_repeatable",
"type": "TINYINT(1)",
"null": false
},
"itemmgmt_attr_type_required": {
"description": "Every item must have this attribute type if set to true.",
"name": "itemmgmt_attr_type_required",

View File

@ -0,0 +1,107 @@
[
{
"name": "plastic",
"l11n": {
"en": "Plastic",
"de": "Plastik"
}
},
{
"name": "cardboard",
"l11n": {
"en": "Cardboard",
"de": "Karton"
}
},
{
"name": "glass",
"l11n": {
"en": "Glas",
"de": "Glas"
}
},
{
"name": "paper",
"l11n": {
"en": "Paper",
"de": "Papier"
}
},
{
"name": "paperboard",
"l11n": {
"en": "Paperboard",
"de": "Pappe"
}
},
{
"name": "aluminum",
"l11n": {
"en": "Aluminum",
"de": "Aluminium"
}
},
{
"name": "tinplate",
"l11n": {
"en": "Tin plate",
"de": "Weißblech"
}
},
{
"name": "bubble_wrap",
"l11n": {
"en": "Bubble Wrap",
"de": "Blisterfolie"
}
},
{
"name": "foam",
"l11n": {
"en": "Foam",
"de": "Schaum"
}
},
{
"name": "plastic_foil",
"l11n": {
"en": "Plastic foil",
"de": "Plastikfolie"
}
},
{
"name": "plastic_pallet",
"l11n": {
"en": "Plastic pallet",
"de": "Plastikpalette"
}
},
{
"name": "wood_pallet",
"l11n": {
"en": "Wood pallet",
"de": "Holzpalette"
}
},
{
"name": "wood",
"l11n": {
"en": "Wood",
"de": "Holz"
}
},
{
"name": "steel",
"l11n": {
"en": "Steel",
"de": "Stahl"
}
},
{
"name": "composite",
"l11n": {
"en": "Composite",
"de": "Verbund"
}
}
]

View File

@ -1,60 +0,0 @@
{
"name": "payment_model",
"l11n": {
"en": "Payment Model",
"de": "Zahlungsmittel"
},
"value_type": "string",
"is_custom_allowed": false,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": [
{
"value": "subscription",
"is_default": true,
"l11n": {
"en": "Subscription",
"de": "Abo"
}
},
{
"value": "pay-per-use",
"is_default": true,
"l11n": {
"en": "Pay-Per-Use",
"de": "Einmalzahlung"
}
}
]
},
{
"name": "payment_interval",
"l11n": {
"en": "Payment interval",
"de": "Zahlungsintervall"
},
"value_type": "string",
"is_custom_allowed": false,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": [
{
"value": "daily",
"is_default": true,
"l11n": {
"en": "daily",
"de": "taeglich"
}
},
{
"value": "monthly",
"is_default": true,
"l11n": {
"en": "monthly",
"de": "monatlich"
}
}
]
}

View File

@ -50,6 +50,8 @@ final class Installer extends InstallerAbstract
{
parent::install($app, $info, $cfgHandler);
\Modules\Admin\Admin\Installer::installExternal($app, ['path' => __DIR__ . '/Install/Admin.install.json']);
/* Attributes */
$fileContent = \file_get_contents(__DIR__ . '/Install/attributes.json');
if ($fileContent === false) {
@ -90,6 +92,16 @@ final class Installer extends InstallerAbstract
/** @var array $items */
$items = \json_decode($fileContent, true);
$itemArray = self::createItems($app, $items);
/* Material types */
$fileContent = \file_get_contents(__DIR__ . '/Install/materialtypes.json');
if ($fileContent === false) {
return;
}
/** @var array $types */
$types = \json_decode($fileContent, true);
$materialTypeArray = self::createMaterialTypes($app, $types);
}
/**
@ -430,4 +442,64 @@ final class Installer extends InstallerAbstract
return $itemAttrValue;
}
/**
* Install default material types
*
* @param ApplicationAbstract $app Application
* @param array $types Material type definitions
*
* @return array
*
* @since 1.0.0
*/
private static function createMaterialTypes(ApplicationAbstract $app, array $types) : array
{
/** @var array<string, array> $itemMaterialType */
$itemMaterialType = [];
/** @var \Modules\ItemManagement\Controller\ApiController $module */
$module = $app->moduleManager->getModuleInstance('ItemManagement', 'Api');
/** @var array $type */
foreach ($types as $type) {
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('name', $type['name'] ?? '');
$request->setData('title', \reset($type['l11n']));
$module->apiItemMaterialTypeCreate($request, $response);
$responseData = $response->getData('');
if (!\is_array($responseData)) {
continue;
}
$itemMaterialType[$type['name']] = \is_array($responseData['response'])
? $responseData['response']
: $responseData['response']->toArray();
$isFirst = true;
foreach ($type['l11n'] as $language => $l11n) {
if ($isFirst) {
$isFirst = false;
continue;
}
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('title', $l11n);
$request->setData('language', $language);
$request->setData('type', $itemMaterialType[$type['name']]['id']);
$module->apiItemMaterialTypeL11nCreate($request, $response);
}
}
return $itemMaterialType;
}
}

View File

@ -197,4 +197,26 @@ return [
],
],
],
'^.*/item/material/list\?.*$' => [
[
'dest' => '\Modules\ItemManagement\Controller\BackendController:viewItemMaterialList',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::MATERIAL,
],
],
],
'^.*/item/material/view\?.*$' => [
[
'dest' => '\Modules\ItemManagement\Controller\BackendController:viewItemMaterialView',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::MATERIAL,
],
],
],
];

View File

@ -61,7 +61,23 @@ final class ApiAttributeController extends Controller
return;
}
$type = ItemAttributeTypeMapper::get()->with('defaults')->where('id', (int) $request->getData('type'))->execute();
$type = ItemAttributeTypeMapper::get()->with('defaults')->where('id', (int) $request->getData('type'))->execute();
if (!$type->repeatable) {
$attr = ItemAttributeMapper::count()
->with('type')
->where('type/id', (int) $request->getData('type'))
->where('ref', (int) $request->getData('ref'))
->execute();
if ($attr > 0) {
$response->header->status = RequestStatusCode::R_409;
$this->createInvalidCreateResponse($request, $response, $val);
return;
}
}
$attribute = $this->createAttributeFromRequest($request, $type);
$this->createModel($request->header->account, $attribute, ItemAttributeMapper::class, 'attribute', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $attribute);

View File

@ -25,8 +25,11 @@ use Modules\ItemManagement\Models\ItemPriceStatus;
use Modules\ItemManagement\Models\ItemRelationType;
use Modules\ItemManagement\Models\ItemRelationTypeMapper;
use Modules\ItemManagement\Models\ItemStatus;
use Modules\ItemManagement\Models\MaterialTypeL11nMapper;
use Modules\ItemManagement\Models\MaterialTypeMapper;
use Modules\ItemManagement\Models\PermissionCategory;
use Modules\ItemManagement\Models\SettingsEnum as ItemSettingsEnum;
use Modules\ItemManagement\Models\StockIdentifierType;
use Modules\Media\Models\Collection;
use Modules\Media\Models\CollectionMapper;
use Modules\Media\Models\MediaMapper;
@ -36,6 +39,7 @@ use phpOMS\Account\PermissionType;
use phpOMS\Localization\BaseStringL11n;
use phpOMS\Localization\BaseStringL11nType;
use phpOMS\Localization\ISO4217CharEnum;
use phpOMS\Localization\ISO639x1Enum;
use phpOMS\Localization\NullBaseStringL11nType;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse;
@ -170,7 +174,7 @@ final class ApiController extends Controller
$internalRequest->header->account = $request->header->account;
$internalRequest->setData('name', 'base');
$internalRequest->setData('item', $item->id);
$internalRequest->setData('price', $request->getDataInt('salesprice') ?? 0);
$internalRequest->setData('price_new', $request->getDataInt('salesprice') ?? 0);
$billing->apiPriceCreate($internalRequest, $internalResponse);
}
@ -228,12 +232,10 @@ final class ApiController extends Controller
private function createItemSegmentation(RequestAbstract $request, ResponseAbstract $response, Item $item) : void
{
/** @var \Model\Setting $settings */
$settings = $this->app->appSettings->get(null, [
ItemSettingsEnum::DEFAULT_SEGMENTATION,
]);
$settings = $this->app->appSettings->get(null, ItemSettingsEnum::DEFAULT_SEGMENTATION);
$segmentation = \json_decode($settings->content, true);
if ($segmentation === false) {
if ($segmentation === false || $segmentation === null) {
return;
}
@ -290,6 +292,7 @@ final class ApiController extends Controller
{
$item = new Item();
$item->number = $request->getDataString('number') ?? '';
$item->stockIdentifier = $request->getDataInt('stockidentifier') ?? StockIdentifierType::NONE;
$item->salesPrice = new FloatInt($request->getDataInt('salesprice') ?? 0);
$item->purchasePrice = new FloatInt($request->getDataInt('purchaseprice') ?? 0);
$item->info = $request->getDataString('info') ?? '';
@ -385,7 +388,7 @@ final class ApiController extends Controller
private function validateItemPriceCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['price'] = !$request->hasData('price'))
if (($val['price_new'] = !$request->hasData('price_new'))
|| ($val['currency'] = !ISO4217CharEnum::isValidValue($request->getData('currency')))
) {
return $val;
@ -889,4 +892,138 @@ final class ApiController extends Controller
$this->app->moduleManager->get('Editor', 'Api')->apiEditorDelete($request, $response, $data);
}
/**
* Api method to create item material type
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param array $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
public function apiItemMaterialTypeCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void
{
if (!empty($val = $this->validateMaterialTypeCreate($request))) {
$response->header->status = RequestStatusCode::R_400;
$this->createInvalidCreateResponse($request, $response, $val);
return;
}
$materialType = $this->createMaterialTypeFromRequest($request);
$this->createModel($request->header->account, $materialType, MaterialTypeMapper::class, 'material_type', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $materialType);
}
/**
* Validate material create request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @since 1.0.0
*/
private function validateMaterialTypeCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['title'] = !$request->hasData('title'))
|| ($val['name'] = !$request->hasData('name'))
) {
return $val;
}
return [];
}
/**
* Method to create material from request.
*
* @param RequestAbstract $request Request
*
* @return BaseStringL11nType
*
* @since 1.0.0
*/
private function createMaterialTypeFromRequest(RequestAbstract $request) : BaseStringL11nType
{
$materialType = new BaseStringL11nType($request->getDataString('name') ?? '');
$materialType->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN);
return $materialType;
}
/**
* Api method to create item material l11n
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param array $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
public function apiItemMaterialTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void
{
if (!empty($val = $this->validateMaterialTypeL11nCreate($request))) {
$response->header->status = RequestStatusCode::R_400;
$this->createInvalidCreateResponse($request, $response, $val);
return;
}
$materialL11n = $this->createMaterialTypeL11nFromRequest($request);
$this->createModel($request->header->account, $materialL11n, MaterialTypeL11nMapper::class, 'material_type_l11n', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $materialL11n);
}
/**
* Validate material l11n create request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @since 1.0.0
*/
private function validateMaterialTypeL11nCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['title'] = !$request->hasData('title'))
|| ($val['type'] = !$request->hasData('type'))
) {
return $val;
}
return [];
}
/**
* Method to create material l11n from request.
*
* @param RequestAbstract $request Request
*
* @return BaseStringL11n
*
* @since 1.0.0
*/
private function createMaterialTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n
{
$materialL11n = new BaseStringL11n();
$materialL11n->ref = $request->getDataInt('type') ?? 0;
$materialL11n->setLanguage(
$request->getDataString('language') ?? $request->header->l11n->language
);
$materialL11n->content = $request->getDataString('title') ?? '';
return $materialL11n;
}
}

View File

@ -17,16 +17,19 @@ namespace Modules\ItemManagement\Controller;
use Modules\Admin\Models\LocalizationMapper;
use Modules\Admin\Models\SettingsEnum;
use Modules\Auditor\Models\AuditMapper;
use Modules\Billing\Models\BillTransferType;
use Modules\Billing\Models\Price\PriceMapper;
use Modules\Billing\Models\Price\PriceType;
use Modules\Billing\Models\SalesBillMapper;
use Modules\ClientManagement\Models\Attribute\ClientAttributeTypeMapper;
use Modules\ClientManagement\Models\Attribute\ClientAttributeValueL11nMapper;
use Modules\ItemManagement\Models\Attribute\ItemAttributeTypeL11nMapper;
use Modules\ItemManagement\Models\Attribute\ItemAttributeTypeMapper;
use Modules\ItemManagement\Models\Attribute\ItemAttributeValueL11nMapper;
use Modules\ItemManagement\Models\Attribute\ItemAttributeValueMapper;
use Modules\ItemManagement\Models\ItemL11nMapper;
use Modules\ItemManagement\Models\ItemL11nTypeMapper;
use Modules\ItemManagement\Models\ItemMapper;
use Modules\ItemManagement\Models\MaterialTypeL11nMapper;
use Modules\ItemManagement\Models\MaterialTypeMapper;
use Modules\Media\Models\MediaMapper;
use Modules\Media\Models\MediaTypeMapper;
use Modules\Organization\Models\Attribute\UnitAttributeMapper;
@ -35,12 +38,11 @@ use phpOMS\Asset\AssetType;
use phpOMS\Contract\RenderableInterface;
use phpOMS\DataStorage\Database\Query\Builder;
use phpOMS\DataStorage\Database\Query\OrderType;
use phpOMS\DataStorage\Database\Query\Where;
use phpOMS\Localization\ISO3166CharEnum;
use phpOMS\Localization\ISO3166NameEnum;
use phpOMS\Localization\Money;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
use phpOMS\Stdlib\Base\SmartDateTime;
use phpOMS\Utils\StringUtils;
use phpOMS\Views\View;
@ -373,19 +375,17 @@ final class BackendController extends Controller
$item = ItemMapper::get()
->with('l11n')
->with('l11n/type')
->with('files')
->with('files')->limit(5, 'files')->sort('files/id', OrderType::DESC)
->with('notes')->limit(5, 'notes')->sort('notes/id', OrderType::DESC)
->with('files/types')
->with('attributes')
->with('attributes/type')
->with('attributes/type/l11n')
->with('attributes/value')
->with('notes')
->where('id', (int) $request->getData('id'))
->where('l11n/language', $response->header->l11n->language)
->where('l11n/type/title', ['name1', 'name2', 'name3'], 'IN')
->where('attributes/type/l11n/language', $response->header->l11n->language)
->limit(5, 'files')->sort('files/id', OrderType::DESC)
->limit(5, 'notes')->sort('notes/id', OrderType::DESC)
->execute();
$view->data['item'] = $item;
@ -429,12 +429,12 @@ final class BackendController extends Controller
// @todo this one should already be loaded in the backend application no?????????
/** @var \Model\Setting $settings */
$settings = $this->app->appSettings->get(null, [
SettingsEnum::DEFAULT_LOCALIZATION,
]);
$settings = $this->app->appSettings->get(null, SettingsEnum::DEFAULT_LOCALIZATION);
$view->data['default_localization'] = LocalizationMapper::get()->where('id', (int) $settings->id)->execute();
$view->data['attributeView'] = new \Modules\Attribute\Theme\Backend\Components\AttributeView($this->app->l11nManager, $request, $response);
$view->data['attributeView']->data['defaultlocalization'] = LocalizationMapper::get()->where('id', (int) $settings->id)->execute();
$view->data['attributeView']->data['default_localization'] = $view->data['default_localization'];
$view->data['l11nView'] = new \Web\Backend\Views\L11nView($this->app->l11nManager, $request, $response);
@ -475,6 +475,50 @@ final class BackendController extends Controller
$view->data['prices'] = $prices;
/** @var \Modules\Billing\Models\Price\Price[] $prices */
$prices = PriceMapper::getAll()
->where('item', $item->id)
->where('type', PriceType::PURCHASE)
->execute();
$view->data['purchase_prices'] = $prices;
$tmp = ItemAttributeTypeMapper::getAll()
->with('defaults')
->with('defaults/l11n')
->where('name', [
'segment', 'section', 'sales_group', 'product_group', 'product_type',
'sales_tax_code', 'purchase_tax_code',
//'has_inventory', 'inventory_identifier', 'stocktaking_type',
], 'IN')
->where('defaults/l11n', (new Where($this->app->dbPool->get()))
->where(ItemAttributeValueL11nMapper::getColumnByMember('ref'), '=', null)
->orWhere(ItemAttributeValueL11nMapper::getColumnByMember('language'), '=', $response->header->l11n->language))
->execute();
$defaultAttributeTypes = [];
foreach ($tmp as $t) {
$defaultAttributeTypes[$t->name] = $t;
}
$view->data['defaultAttributeTypes'] = $defaultAttributeTypes;
$tmp = ClientAttributeTypeMapper::getAll()
->with('defaults')
->with('defaults/l11n')
->where('name', ['segment', 'section', 'client_group', 'client_type'], 'IN')
->where('defaults/l11n', (new Where($this->app->dbPool->get()))
->where(ClientAttributeValueL11nMapper::getColumnByMember('ref'), '=', null)
->orWhere(ClientAttributeValueL11nMapper::getColumnByMember('language'), '=', $response->header->l11n->language))
->execute();
$clientSegmentationTypes = [];
foreach ($tmp as $t) {
$clientSegmentationTypes[$t->name] = $t;
}
$view->data['clientSegmentationTypes'] = $clientSegmentationTypes;
/** @var \Modules\Auditor\Models\Audit[] $audits */
$audits = AuditMapper::getAll()
->where('type', StringUtils::intHash(ItemMapper::class))
@ -727,4 +771,66 @@ final class BackendController extends Controller
return $view;
}
/**
* Routing end-point for application behavior.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param array $data Generic data
*
* @return RenderableInterface
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewMaterialList(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface
{
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/ItemManagement/Theme/Backend/material-type-list');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1002901101, $request, $response);
$view->data['types'] = MaterialTypeMapper::getAll()
->with('l11n')
->where('l11n/language', $response->header->l11n->language)
->execute();
return $view;
}
/**
* Routing end-point for application behavior.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param array $data Generic data
*
* @return RenderableInterface
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewMaterialView(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface
{
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/ItemManagement/Theme/Backend/material-view');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1002901101, $request, $response);
$view->data['type'] = MaterialTypeMapper::get()
->with('l11n')
->where('id', (int) $request->getData('id'))
->where('l11n/language', $response->header->l11n->language)
->execute();
$view->data['l11nView'] = new \Web\Backend\Views\L11nView($this->app->l11nManager, $request, $response);
/** @var \phpOMS\Localization\BaseStringL11n[] $l11nValues */
$l11nValues = MaterialTypeL11nMapper::getAll()
->where('ref', $view->data['type']->id)
->execute();
$view->data['l11nValues'] = $l11nValues;
return $view;
}
}

View File

@ -42,6 +42,7 @@ final class ItemAttributeTypeMapper extends DataMapperFactory
'itemmgmt_attr_type_datatype' => ['name' => 'itemmgmt_attr_type_datatype', 'type' => 'int', 'internal' => 'datatype'],
'itemmgmt_attr_type_fields' => ['name' => 'itemmgmt_attr_type_fields', 'type' => 'int', 'internal' => 'fields'],
'itemmgmt_attr_type_custom' => ['name' => 'itemmgmt_attr_type_custom', 'type' => 'bool', 'internal' => 'custom'],
'itemmgmt_attr_type_repeatable' => ['name' => 'itemmgmt_attr_type_repeatable', 'type' => 'bool', 'internal' => 'repeatable'],
'itemmgmt_attr_type_pattern' => ['name' => 'itemmgmt_attr_type_pattern', 'type' => 'string', 'internal' => 'validationPattern'],
'itemmgmt_attr_type_required' => ['name' => 'itemmgmt_attr_type_required', 'type' => 'bool', 'internal' => 'isRequired'],
];

68
Models/Container.php Normal file
View File

@ -0,0 +1,68 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ItemManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\ItemManagement\Models;
/**
* Container class.
*
* @package Modules\ItemManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
class Container implements \JsonSerializable
{
/**
* ID.
*
* @var int
* @since 1.0.0
*/
public int $id = 0;
public string $name = '';
public int $quantity = 0;
public int $weight = 0;
public int $width = 0;
public int $height = 0;
public int $length = 0;
public int $volume = 0;
public int $item = 0;
/**
* {@inheritdoc}
*/
public function toArray() : array
{
return [
'id' => $this->id,
];
}
/**
* {@inheritdoc}
*/
public function jsonSerialize() : mixed
{
return $this->toArray();
}
}

View File

@ -0,0 +1,65 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ItemManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\ItemManagement\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/**
* Container mapper class.
*
* @package Modules\ItemManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of Item
* @extends DataMapperFactory<T>
*/
final class ContainerMapper 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 = [
'itemmgmt_item_container_id' => ['name' => 'itemmgmt_item_container_id', 'type' => 'int', 'internal' => 'id'],
'itemmgmt_item_container_name' => ['name' => 'itemmgmt_item_container_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true],
'itemmgmt_item_container_quantity' => ['name' => 'itemmgmt_item_container_quantity', 'type' => 'int', 'internal' => 'quantity'],
'itemmgmt_item_container_weight' => ['name' => 'itemmgmt_item_container_weight', 'type' => 'int', 'internal' => 'weight'],
'itemmgmt_item_container_width' => ['name' => 'itemmgmt_item_container_width', 'type' => 'int', 'internal' => 'width'],
'itemmgmt_item_container_height' => ['name' => 'itemmgmt_item_container_height', 'type' => 'int', 'internal' => 'height'],
'itemmgmt_item_container_length' => ['name' => 'itemmgmt_item_container_length', 'type' => 'int', 'internal' => 'length'],
'itemmgmt_item_container_volume' => ['name' => 'itemmgmt_item_container_volume', 'type' => 'int', 'internal' => 'volume'],
'itemmgmt_item_container_item' => ['name' => 'itemmgmt_item_container_item', 'type' => 'int', 'internal' => 'item'],
];
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'itemmgmt_item_container';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'itemmgmt_item_container_id';
}

38
Models/InventoryType.php Normal file
View File

@ -0,0 +1,38 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ItemManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\ItemManagement\Models;
use phpOMS\Stdlib\Base\Enum;
/**
* Default settings enum.
*
* @package Modules\ItemManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
abstract class InventoryType extends Enum
{
public const NONE = 0;
public const COUNTING = 1;
public const WEIGHING = 2;
public const ESTIMATING = 3;
public const IT = 4;
}

View File

@ -68,6 +68,8 @@ class Item implements \JsonSerializable
*/
public int $status = ItemStatus::ACTIVE;
public int $stockIdentifier = StockIdentifierType::NONE;
/**
* Sales price value.
*
@ -132,6 +134,8 @@ class Item implements \JsonSerializable
*/
public ?int $unit = null;
public array $container = [];
/**
* Constructor.
*

View File

@ -20,10 +20,8 @@ use Modules\Media\Models\Media;
use Modules\Media\Models\MediaMapper;
use Modules\Media\Models\MediaType;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\DataStorage\Database\Query\Builder;
use phpOMS\Localization\BaseStringL11n;
use phpOMS\Localization\BaseStringL11nType;
use phpOMS\Stdlib\Base\FloatInt;
/**
* Item mapper class.
@ -48,6 +46,7 @@ final class ItemMapper extends DataMapperFactory
'itemmgmt_item_id' => ['name' => 'itemmgmt_item_id', 'type' => 'int', 'internal' => 'id'],
'itemmgmt_item_no' => ['name' => 'itemmgmt_item_no', 'type' => 'string', 'internal' => 'number', 'autocomplete' => true],
'itemmgmt_item_status' => ['name' => 'itemmgmt_item_status', 'type' => 'int', 'internal' => 'status'],
'itemmgmt_item_stockidentifier' => ['name' => 'itemmgmt_item_stockidentifier', 'type' => 'int', 'internal' => 'stockIdentifier'],
'itemmgmt_item_info' => ['name' => 'itemmgmt_item_info', 'type' => 'string', 'internal' => 'info'],
'itemmgmt_item_salesprice' => ['name' => 'itemmgmt_item_salesprice', 'type' => 'Serializable', 'internal' => 'salesPrice'],
'itemmgmt_item_purchaseprice' => ['name' => 'itemmgmt_item_purchaseprice', 'type' => 'Serializable', 'internal' => 'purchasePrice'],
@ -102,6 +101,12 @@ final class ItemMapper extends DataMapperFactory
'self' => 'itemmgmt_item_attr_item',
'external' => null,
],
'container' => [
'mapper' => ContainerMapper::class,
'table' => 'itemmgmt_item_container',
'self' => 'itemmgmt_item_container_item',
'external' => null,
],
];
/**

72
Models/Material.php Normal file
View File

@ -0,0 +1,72 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ItemManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\ItemManagement\Models;
use phpOMS\Localization\BaseStringL11nType;
use phpOMS\Localization\NullBaseStringL11nType;
/**
* Material class.
*
* @package Modules\ItemManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
class Material implements \JsonSerializable
{
/**
* ID.
*
* @var int
* @since 1.0.0
*/
public int $id = 0;
public int $category = 0;
public int $subcategory = 0;
public BaseStringL11nType $type;
public int $quantity = 0;
public int $unit = 0;
public int $item = 0;
public function __construct()
{
$this->type = new NullBaseStringL11nType();
}
/**
* {@inheritdoc}
*/
public function toArray() : array
{
return [
'id' => $this->id,
];
}
/**
* {@inheritdoc}
*/
public function jsonSerialize() : mixed
{
return $this->toArray();
}
}

View File

@ -0,0 +1,32 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ItemManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\ItemManagement\Models;
use phpOMS\Stdlib\Base\Enum;
/**
* Default settings enum.
*
* @package Modules\ItemManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
abstract class MaterialCategory extends Enum
{
public const PRODUCT = 0;
public const PACKAGING = 1;
}

88
Models/MaterialMapper.php Normal file
View File

@ -0,0 +1,88 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ItemManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\ItemManagement\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11nType;
/**
* Item mapper class.
*
* @package Modules\ItemManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of Material
* @extends DataMapperFactory<T>
*/
final class MaterialMapper 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 = [
'itemmgmt_material_id' => ['name' => 'itemmgmt_material_id', 'type' => 'int', 'internal' => 'id'],
'itemmgmt_material_category' => ['name' => 'itemmgmt_material_category', 'type' => 'int', 'internal' => 'category'],
'itemmgmt_material_subcategory' => ['name' => 'itemmgmt_material_subcategory', 'type' => 'int', 'internal' => 'subcategory'],
'itemmgmt_material_type' => ['name' => 'itemmgmt_material_type', 'type' => 'int', 'internal' => 'type'],
'itemmgmt_material_unit' => ['name' => 'itemmgmt_material_unit', 'type' => 'int', 'internal' => 'unit'],
'itemmgmt_material_item' => ['name' => 'itemmgmt_material_item', 'type' => 'int', 'internal' => 'item'],
];
/**
* Has one relation.
*
* @var array<string, array{mapper:class-string, external:string, by?:string, column?:string, conditional?:bool}>
* @since 1.0.0
*/
public const BELONGS_TO = [
'type' => [
'mapper' => MaterialTypeMapper::class,
'external' => 'itemmgmt_material_type',
],
'item' => [
'mapper' => ItemMapper::class,
'external' => 'itemmgmt_material_item',
],
];
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = Material::class;
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'itemmgmt_material';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'itemmgmt_material_id';
}

View File

@ -0,0 +1,46 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ItemManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\ItemManagement\Models;
use phpOMS\Stdlib\Base\Enum;
/**
* Default settings enum.
*
* @package Modules\ItemManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
abstract class MaterialSubcategory extends Enum
{
// packaging
public const PRIMARY = 0; // Verkaufsverpackung
public const SECONDARY = 1;
public const TERTIARY = 2; // Transportverpackung
public const RETAIL = 3; // Umverpackung
// product
// RHB
public const RAW_MATERIAL = 100;
public const AUXILIARY_MATERIAL = 101;
public const SUPPLIES = 102;
}

View File

@ -0,0 +1,69 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ItemManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\ItemManagement\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n;
/**
* Item mapper class.
*
* @package Modules\ItemManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of BaseStringL11n
* @extends DataMapperFactory<T>
*/
final class MaterialTypeL11nMapper 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 = [
'itemmgmt_material_type_l11n_id' => ['name' => 'itemmgmt_material_type_l11n_id', 'type' => 'int', 'internal' => 'id'],
'itemmgmt_material_type_l11n_title' => ['name' => 'itemmgmt_material_type_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
'itemmgmt_material_type_l11n_type' => ['name' => 'itemmgmt_material_type_l11n_type', 'type' => 'int', 'internal' => 'ref'],
'itemmgmt_material_type_l11n_language' => ['name' => 'itemmgmt_material_type_l11n_language', 'type' => 'string', 'internal' => 'language'],
];
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'itemmgmt_material_type_l11n';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'itemmgmt_material_type_l11n_id';
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = BaseStringL11n::class;
}

View File

@ -0,0 +1,83 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ItemManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\ItemManagement\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11nType;
/**
* Item mapper class.
*
* @package Modules\ItemManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of BaseStringL11nType
* @extends DataMapperFactory<T>
*/
final class MaterialTypeMapper 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 = [
'itemmgmt_material_type_id' => ['name' => 'itemmgmt_material_type_id', 'type' => 'int', 'internal' => 'id'],
'itemmgmt_material_type_name' => ['name' => 'itemmgmt_material_type_name', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true],
];
/**
* Has many relation.
*
* @var array<string, array{mapper:class-string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
public const HAS_MANY = [
'l11n' => [
'mapper' => MaterialTypeL11nMapper::class,
'table' => 'itemmgmt_material_type_l11n',
'self' => 'itemmgmt_material_type_l11n_type',
'column' => 'content',
'external' => null,
]
];
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = BaseStringL11nType::class;
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'itemmgmt_material_type';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'itemmgmt_material_type_id';
}

46
Models/NullMaterial.php Normal file
View File

@ -0,0 +1,46 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ItemManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\ItemManagement\Models;
/**
* Null model
*
* @package Modules\ItemManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
final class NullMaterial extends Material
{
/**
* 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];
}
}

View File

@ -34,5 +34,7 @@ abstract class PermissionCategory extends Enum
public const ATTRIBUTE = 4;
public const NOTE = 4;
public const NOTE = 5;
public const MATERIAL = 6;
}

View File

@ -0,0 +1,36 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ItemManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\ItemManagement\Models;
use phpOMS\Stdlib\Base\Enum;
/**
* Default settings enum.
*
* @package Modules\ItemManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
abstract class StockIdentifierType extends Enum
{
public const NONE = 0;
public const NUMBER = 1;
public const LOT = 2;
public const SN = 3;
}

View File

@ -23,4 +23,5 @@ return ['Navigation' => [
'List' => 'Liste',
'Types' => 'Arten',
'Values' => 'Werte',
'Materials' => 'Materialien',
]];

View File

@ -23,4 +23,5 @@ return ['Navigation' => [
'List' => 'List',
'Types' => 'Types',
'Values' => 'Values',
'Materials' => 'Materials',
]];

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'محاسبة',
'Address' => '',
'All' => 'الجميع',
'Article' => 'مقالة - سلعة',
'Articlegroup' => 'articlegroup.',
'Attribute' => 'يصف',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'دولة',
'Created' => 'خلقت',
'CreatedAt' => 'خلقت',
'Customer' => 'عميل',
'CustomerGroup' => 'مجموعة العملاء',
'CustomsID' => 'المعرف الجمركي',
'Date' => 'تاريخ',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'بطاقة تعريف',
'ILV' => 'ilv.',
'Info' => 'معلومات',
'IsActive' => 'نشيط؟',
'Issues' => '',
'Item' => 'العنصر',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'كثيرا',
'MRR' => 'مرر',
'MTDSales' => 'مبيعات MTD',
'Machines' => '',
'Makespan' => 'makespan.',
'Margin' => 'هامش',
'Master' => 'رئيس',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'اسم 1.',
'Name2' => 'اسم 2.',
'Name3' => 'اسم 3.',
'Name4' => 'اسم 4.',
'Name5' => 'اسم 5.',
'Net' => 'الوزن الصافي',
'NetWeight' => 'الوزن الصافي',
'None' => 'لا أحد',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'عدد',
'Ordered' => 'أمر',
'Packaging' => 'التعبئة والتغليف',
'PartsList' => '',
'Price' => 'السعر',
'PriceChange' => 'تغيير الأسعار',
'PriceUnit' => 'وحدة السعر',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'productgroup.',
'Production' => 'إنتاج',
'ProductionSteps' => '',
'Profile' => 'الملف الشخصي',
'Properties' => 'الخصائص',
'Property' => 'ملكية',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'قطعة',
'ShelfLife' => 'مدة الصلاحية',
'Source' => 'مصدر',
'Start' => 'يبدأ',
'Status' => 'حالة',
'Stock' => 'المخزون',
'StockList' => 'قائمة الأسهم',
'Successor' => 'خليفة',
'Supplier' => 'المورد',
'Tax' => 'ضريبة',
'Text' => 'نص',
'TimeUnit' => 'وحدة الوقت',
'Title' => 'عنوان',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'ترجمة',
'Type' => 'نوع',
'Unit' => 'وحدة',
'UsedIn' => '',
'Value' => 'قيمة',
'Variation' => 'تفاوت',
'Variations' => 'الاختلافات',
'Volume' => 'الصوت',
'Warehouse' => 'مستودع',
'Width' => 'عرض',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Účetnictví',
'Address' => '',
'All' => 'Všechno',
'Article' => 'Článek',
'Articlegroup' => 'Článek',
'Attribute' => 'Atribut',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Země',
'Created' => 'Vytvořený',
'CreatedAt' => 'Vytvořený',
'Customer' => 'Zákazník',
'CustomerGroup' => 'Zákaznická skupina',
'CustomsID' => 'Celní ID',
'Date' => 'datum',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'ID.',
'ILV' => 'Ilv.',
'Info' => 'Info.',
'IsActive' => 'Aktivní?',
'Issues' => '',
'Item' => 'Položka',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Šarže',
'MRR' => 'Mrr.',
'MTDSales' => 'Prodej MTD.',
'Machines' => '',
'Makespan' => 'Makeespan.',
'Margin' => 'Okraj',
'Master' => 'Mistr',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Jméno1.',
'Name2' => 'Jméno2.',
'Name3' => 'Jméno3.',
'Name4' => 'Jméno4.',
'Name5' => 'Jméno5.',
'Net' => 'Čistá hmotnost',
'NetWeight' => 'Čistá hmotnost',
'None' => 'Žádný',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Číslo',
'Ordered' => 'Objednaný',
'Packaging' => 'Obal',
'PartsList' => '',
'Price' => 'Cena',
'PriceChange' => 'Změna ceny',
'PriceUnit' => 'Jednotka ceny',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'ProductSgroup.',
'Production' => 'Výroba',
'ProductionSteps' => '',
'Profile' => 'Profil',
'Properties' => 'Vlastnosti',
'Property' => 'Vlastnictví',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Segment',
'ShelfLife' => 'Skladovatelnost',
'Source' => 'Zdroj',
'Start' => 'Start',
'Status' => 'Postavení',
'Stock' => 'Skladem',
'StockList' => 'Seznam zásob',
'Successor' => 'Nástupce',
'Supplier' => 'Dodavatel',
'Tax' => 'Daň',
'Text' => 'Text',
'TimeUnit' => 'Čas',
'Title' => 'Titul',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Překlad',
'Type' => 'Typ',
'Unit' => 'Jednotka',
'UsedIn' => '',
'Value' => 'Hodnota',
'Variation' => 'Variace',
'Variations' => 'Variace',
'Volume' => 'Objem',
'Warehouse' => 'Sklad',
'Width' => 'Šířka',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Regnskab',
'Address' => '',
'All' => 'Alle',
'Article' => 'Artikel',
'Articlegroup' => 'ArticleGroup.',
'Attribute' => 'Attribut.',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Land',
'Created' => 'Oprettet',
'CreatedAt' => 'Oprettet',
'Customer' => 'Kunde',
'CustomerGroup' => 'KUNDER GROUP',
'CustomsID' => 'Told ID.',
'Date' => 'Dato',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'ID.',
'ILV' => 'ILV.',
'Info' => 'Info.',
'IsActive' => 'Aktiv?',
'Issues' => '',
'Item' => 'Vare',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Masse',
'MRR' => 'MRR.',
'MTDSales' => 'MTD Sales.',
'Machines' => '',
'Makespan' => 'Makespan.',
'Margin' => 'Margin.',
'Master' => 'Mestre',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'NAME1.',
'Name2' => 'NAME2.',
'Name3' => 'NAME3.',
'Name4' => 'NAME4.',
'Name5' => 'NAME5.',
'Net' => 'Nettovægt',
'NetWeight' => 'Nettovægt',
'None' => 'Ingen',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Nummer',
'Ordered' => 'Bestilt.',
'Packaging' => 'Emballage',
'PartsList' => '',
'Price' => 'Pris',
'PriceChange' => 'Pris forandring',
'PriceUnit' => 'Enhed af pris.',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Produktgruppe',
'Production' => 'Produktion',
'ProductionSteps' => '',
'Profile' => 'Profil',
'Properties' => 'Ejendomme',
'Property' => 'Ejendom',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Segment',
'ShelfLife' => 'Holdbarhed',
'Source' => 'Kilde',
'Start' => 'Start',
'Status' => 'Status.',
'Stock' => 'Lager',
'StockList' => 'Lagerliste',
'Successor' => 'Efterfølger',
'Supplier' => 'Leverandør',
'Tax' => 'Skat',
'Text' => 'Tekst',
'TimeUnit' => 'Enhed af tid',
'Title' => 'Titel',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Oversættelse',
'Type' => 'Type',
'Unit' => 'Enhed',
'UsedIn' => '',
'Value' => 'Værdi',
'Variation' => 'Variation',
'Variations' => 'Variationer',
'Volume' => 'Bind',
'Warehouse' => 'Lager',
'Width' => 'Bredde',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Buchhaltung',
'Address' => 'Adresse',
'All' => 'Alle',
'Article' => 'Artikel',
'Articlegroup' => 'ArtikelGroup.',
'Attribute' => 'Attribut',
'AttributeTypes' => 'Attributtypen',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Land',
'Created' => 'Erstellt',
'CreatedAt' => 'Erstellt',
'Customer' => 'Kunde',
'CustomerGroup' => 'Kundengruppe',
'CustomsID' => 'Zoll-ID.',
'Date' => 'Datum',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'ID',
'ILV' => 'ILV',
'Info' => 'Die Info',
'IsActive' => 'Aktiv?',
'Issues' => 'Probleme',
'Item' => 'Artikel',
'ItemGroup' => 'Artikelgruppe',
'ItemSection' => 'Artikelsparte',
'ItemSegment' => 'Artikelsegment',
'ItemType' => 'Artikeltyp',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Viel',
'MRR' => 'Mrr.',
'MTDSales' => 'MTD-Verkäufe.',
'Machines' => 'Maschinen',
'Makespan' => 'Makespan',
'Margin' => 'Rand',
'Master' => 'Meister',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Name1.',
'Name2' => 'Name2.',
'Name3' => 'Name3.',
'Name4' => 'Name4.',
'Name5' => 'Name5.',
'Net' => 'Netto',
'NetWeight' => 'Reingewicht',
'None' => 'Keiner',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Nummer',
'Ordered' => 'Bestellt',
'Packaging' => 'Verpackung',
'PartsList' => 'Stückliste',
'Price' => 'Preis',
'PriceChange' => 'Preisänderung',
'PriceUnit' => 'Preiseinheit.',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => 'Beschaffung',
'Productgroup' => 'Produktgruppe',
'Production' => 'Produktion',
'ProductionSteps' => 'Produktionsschritte',
'Profile' => 'Profil',
'Properties' => 'Eigenschaften',
'Property' => 'Eigentum',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => 'Verkaufspreise',
'Segment' => 'Segment',
'ShelfLife' => 'Haltbarkeit.',
'Source' => 'Quelle',
'Start' => 'Start',
'Status' => 'Status',
'Stock' => 'Aktie',
'StockList' => 'Lagerliste',
'Successor' => 'Nachfolger',
'Supplier' => 'Anbieter',
'Tax' => 'Steuer',
'Text' => 'Text',
'TimeUnit' => 'Zeiteinheit',
'Title' => 'Titel',
@ -145,12 +132,31 @@ return ['ItemManagement' => [
'Translation' => 'Übersetzung',
'Type' => 'Typ',
'Unit' => 'Einheit',
'UsedIn' => 'Verwendet in',
'Value' => 'Wert',
'Variation' => 'Variation',
'Variations' => 'Variationen',
'Volume' => 'Volumen',
'Warehouse' => 'Lagerhaus',
'Width' => 'Breite',
'YTDSales' => 'Ytd Sales',
'ItemProductGroup' => 'Artikel Produktgruppe',
'ItemSalesGroup' => 'Artikel Umsatzgruppe',
'Promocode' => 'Promocode',
'Region' => 'Region',
'Materials' => 'Materialien',
'Weight' => 'Gewicht',
'Depth' => 'Tiefe',
'WidthLength' => 'Breite/Länge',
'MaximumOrderInterval' => 'Maximales Bestellintervall',
'MinimumOrderQuantity' => 'Mindestbestellmenge',
'PrimarySupplier' => 'Hauptlieferant',
'LeadTime' => 'Lieferzeit',
'UnitQuantity' => 'Einheitsmenge',
'UnitPrice' => 'Einheitspreis',
'Lieferanten' => 'Lieferanten',
'CostCenter' => 'Kostenstelle',
'CostObject' => 'Kostenträger',
'DefaultStock' => 'Standard Lager',
'DefaultStockLocation' => 'Standard Lagerplatz',
'Inventory' => 'Bestandsführung',
'Identifier' => 'Identifizierung',
'Stocktaking' => 'Inventur',
]];

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Λογιστική',
'Address' => '',
'All' => 'Ολα',
'Article' => 'Αρθρο',
'Articlegroup' => 'Ομιλία',
'Attribute' => 'Χαρακτηριστικό',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Χώρα',
'Created' => 'Δημιουργήθηκε',
'CreatedAt' => 'Δημιουργήθηκε',
'Customer' => 'Πελάτης',
'CustomerGroup' => 'Ομάδα πελατών',
'CustomsID' => 'Τελωνειακό αναγνωριστικό',
'Date' => 'Ημερομηνία',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'ταυτότητα',
'ILV' => 'Ιλ',
'Info' => 'Πληροφορία',
'IsActive' => 'Ενεργός?',
'Issues' => '',
'Item' => 'Είδος',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Παρτίδα',
'MRR' => 'MRR',
'MTDSales' => 'Πωλήσεις MTD',
'Machines' => '',
'Makespan' => 'Makespan',
'Margin' => 'Περιθώριο',
'Master' => 'Κύριος',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => νομα1',
'Name2' => νομα2',
'Name3' => 'Όνομα',
'Name4' => νομα4',
'Name5' => νομα5',
'Net' => 'Καθαρό βάρος',
'NetWeight' => 'Καθαρό βάρος',
'None' => 'Κανένας',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Αριθμός',
'Ordered' => 'Διέταξε',
'Packaging' => 'Συσκευασία',
'PartsList' => '',
'Price' => 'Τιμή',
'PriceChange' => 'Αλλαγή τιμών',
'PriceUnit' => 'Μονάδα τιμής',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Ομοιόμορφη ομάδα',
'Production' => 'Παραγωγή',
'ProductionSteps' => '',
'Profile' => 'Προφίλ',
'Properties' => 'Ιδιότητες',
'Property' => 'Ιδιοκτησία',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Τμήμα',
'ShelfLife' => 'Διάρκεια ζωής',
'Source' => 'Πηγή',
'Start' => 'Αρχή',
'Status' => 'Κατάσταση',
'Stock' => 'Στοκ',
'StockList' => 'Λίστα αποθέματος',
'Successor' => 'Διάδοχος',
'Supplier' => 'Προμηθευτής',
'Tax' => 'Φόρος',
'Text' => 'Κείμενο',
'TimeUnit' => 'Μονάδα χρόνου',
'Title' => 'Τίτλος',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Μετάφραση',
'Type' => 'Τύπος',
'Unit' => 'Μονάδα',
'UsedIn' => '',
'Value' => 'αξία',
'Variation' => 'Παραλλαγή',
'Variations' => 'Παραλλαγές',
'Volume' => 'Ενταση ΗΧΟΥ',
'Warehouse' => 'Αποθήκη',
'Width' => 'Πλάτος',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Accounting',
'Address' => 'Address',
'All' => 'All',
'Article' => 'Article',
'Articlegroup' => 'Articlegroup',
'Attribute' => 'Attribute',
'AttributeTypes' => 'Attribute types',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Country',
'Created' => 'Created',
'CreatedAt' => 'Created',
'Customer' => 'Customer',
'CustomerGroup' => 'Customer Group',
'CustomsID' => 'Customs ID',
'Date' => 'Date',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'ID',
'ILV' => 'ILV',
'Info' => 'Info',
'IsActive' => 'Active?',
'Issues' => '',
'Item' => 'Item',
'ItemGroup' => 'Item Group',
'ItemSection' => 'Item Section',
'ItemSegment' => 'Item Segment',
'ItemType' => 'Item Type',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Lot',
'MRR' => 'MRR',
'MTDSales' => 'MTD Sales',
'Machines' => '',
'Makespan' => 'Makespan',
'Margin' => 'Margin',
'Master' => 'Master',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Name1',
'Name2' => 'Name2',
'Name3' => 'Name3',
'Name4' => 'Name4',
'Name5' => 'Name5',
'Net' => 'Net',
'NetWeight' => 'Net Weight',
'None' => 'None',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Number',
'Ordered' => 'Ordered',
'Packaging' => 'Packaging',
'PartsList' => '',
'Price' => 'Price',
'PriceChange' => 'Price Change',
'PriceUnit' => 'Unit of price',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => 'Procurement',
'Productgroup' => 'Productgroup',
'Production' => 'Production',
'ProductionSteps' => '',
'Profile' => 'Profile',
'Properties' => 'Properties',
'Property' => 'Property',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => 'Sales Pricing',
'Segment' => 'Segment',
'ShelfLife' => 'Shelf life',
'Source' => 'Source',
'Start' => 'Start',
'Status' => 'Status',
'Stock' => 'Stock',
'StockList' => 'Stock list',
'Successor' => 'Successor',
'Supplier' => 'Supplier',
'Tax' => 'Tax',
'Text' => 'Text',
'TimeUnit' => 'Unit of time',
'Title' => 'Title',
@ -145,12 +132,31 @@ return ['ItemManagement' => [
'Translation' => 'Translation',
'Type' => 'Type',
'Unit' => 'Unit',
'UsedIn' => '',
'Value' => 'Value',
'Variation' => 'Variation',
'Variations' => 'Variations',
'Volume' => 'Volume',
'Warehouse' => 'Warehouse',
'Width' => 'Width',
'YTDSales' => 'YTD Sales',
'ItemProductGroup' => 'Item Product Group',
'ItemSalesGroup' => 'Item Sales Group',
'Promocode' => 'Promocode',
'Region' => 'Region',
'Materials' => 'Materials',
'Weight' => 'Weight',
'Depth' => 'Depth',
'WidthLength' => 'Width/Length',
'MaximumOrderInterval' => 'Maximum Order Interval',
'MinimumOrderQuantity' => 'Minimum Order Quantity',
'PrimarySupplier' => 'Primary Supplier',
'LeadTime' => 'Lead Time',
'UnitQuantity' => 'Unit Quantity',
'UnitPrice' => 'Unit Price',
'Suppliers' => 'Suppliers',
'CostCenter' => 'Cost Center',
'CostObject' => 'Cost Object',
'DefaultStock' => 'Default stock',
'DefaultStockLocation' => 'Default stock location',
'Inventory' => 'Inventory',
'Identifier' => 'Identifier',
'Stocktaking' => 'Stocktaking',
]];

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Contabilidad',
'Address' => '',
'All' => 'Todo',
'Article' => 'Artículo',
'Articlegroup' => 'Grupo articulo',
'Attribute' => 'Atributo',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'País',
'Created' => 'Creado',
'CreatedAt' => 'Creado',
'Customer' => 'Cliente',
'CustomerGroup' => 'grupo de clientes',
'CustomsID' => 'Identificación de aduanas',
'Date' => 'Fecha',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'IDENTIFICACIÓN',
'ILV' => 'I LV',
'Info' => 'Información',
'IsActive' => '¿Activo?',
'Issues' => '',
'Item' => 'Articulo',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Lote',
'MRR' => 'Mrr',
'MTDSales' => 'Ventas MTD',
'Machines' => '',
'Makespan' => 'Maquinista',
'Margin' => 'Margen',
'Master' => 'Maestría',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Nombre1',
'Name2' => 'Nombre2',
'Name3' => 'Nombre3',
'Name4' => 'Nombre4',
'Name5' => 'Nombre5',
'Net' => 'Peso neto',
'NetWeight' => 'Peso neto',
'None' => 'Ninguna',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Número',
'Ordered' => 'Ordenado',
'Packaging' => 'embalaje',
'PartsList' => '',
'Price' => 'Precio',
'PriceChange' => 'Cambio de precio',
'PriceUnit' => 'Unidad de precio',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Grupo de productos',
'Production' => 'Producción',
'ProductionSteps' => '',
'Profile' => 'Perfil',
'Properties' => 'Propiedades',
'Property' => 'Propiedad',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Segmento',
'ShelfLife' => 'Duracion',
'Source' => 'Fuente',
'Start' => 'Comienzo',
'Status' => 'Estado',
'Stock' => 'Valores',
'StockList' => 'Lista común',
'Successor' => 'Sucesor',
'Supplier' => 'Proveedor',
'Tax' => 'Impuesto',
'Text' => 'Texto',
'TimeUnit' => 'Unidad de tiempo',
'Title' => 'Título',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Traducción',
'Type' => 'Escribe',
'Unit' => 'Unidad',
'UsedIn' => '',
'Value' => 'Valor',
'Variation' => 'Variación',
'Variations' => 'Variaciones',
'Volume' => 'Volumen',
'Warehouse' => 'Depósito',
'Width' => 'Ancho',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Kirjanpito',
'Address' => '',
'All' => 'Kaikki',
'Article' => 'Artikla',
'Articlegroup' => 'ArticleGroup',
'Attribute' => 'Attribuutti',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Maa',
'Created' => 'Luotu',
'CreatedAt' => 'Luotu',
'Customer' => 'Asiakas',
'CustomerGroup' => 'Asiakasryhmä',
'CustomsID' => 'Tullitunnus',
'Date' => 'Päivämäärä',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'Id',
'ILV' => 'Ilv',
'Info' => 'Tiedot',
'IsActive' => 'Aktiivinen?',
'Issues' => '',
'Item' => 'Kohde',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Paljon',
'MRR' => 'Mrr',
'MTDSales' => 'MTD-myynti',
'Machines' => '',
'Makespan' => 'Makepan',
'Margin' => 'Marginaali',
'Master' => 'Hallita',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Nimi1',
'Name2' => 'Nimi2',
'Name3' => 'Nimi33',
'Name4' => 'Nimi4',
'Name5' => 'Nimi5',
'Net' => 'Nettopaino',
'NetWeight' => 'Nettopaino',
'None' => 'Ei mitään',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Määrä',
'Ordered' => 'Tilattu',
'Packaging' => 'Pakkaus',
'PartsList' => '',
'Price' => 'Hinta',
'PriceChange' => 'Hintamuutos',
'PriceUnit' => 'Hintayksikkö',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Tuoteryhmä',
'Production' => 'Tuotanto',
'ProductionSteps' => '',
'Profile' => 'Profiili',
'Properties' => 'Kiinteistöt',
'Property' => 'Kiinteistö',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Segmentti',
'ShelfLife' => 'Säilyvyys',
'Source' => 'Lähde',
'Start' => 'alkaa',
'Status' => 'Tila',
'Stock' => 'Varasto',
'StockList' => 'Osakeluettelo',
'Successor' => 'Seuraaja',
'Supplier' => 'Toimittaja',
'Tax' => 'Verottaa',
'Text' => 'Teksti',
'TimeUnit' => 'Ajan yksikkö',
'Title' => 'Otsikko',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Käännös',
'Type' => 'Tyyppi',
'Unit' => 'Yksikkö',
'UsedIn' => '',
'Value' => 'Arvo',
'Variation' => 'Vaihtelu',
'Variations' => 'Muunnelmat',
'Volume' => 'Määrä',
'Warehouse' => 'Varasto',
'Width' => 'Leveys',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Comptabilité',
'Address' => '',
'All' => 'Tout',
'Article' => 'Article',
'Articlegroup' => 'Articlegroup',
'Attribute' => 'Attribut',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Pays',
'Created' => 'Établi',
'CreatedAt' => 'Établi',
'Customer' => 'Client',
'CustomerGroup' => 'Groupe de clients',
'CustomsID' => 'Identifiant de douane',
'Date' => 'Date',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'identifiant',
'ILV' => 'Ilv',
'Info' => 'Info',
'IsActive' => 'Actif?',
'Issues' => '',
'Item' => 'Article',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Parcelle',
'MRR' => 'Mrr',
'MTDSales' => 'Ventes MTD',
'Machines' => '',
'Makespan' => 'Gibier',
'Margin' => 'Marge',
'Master' => 'Maître',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Nom1',
'Name2' => 'Nom2',
'Name3' => 'Nom3',
'Name4' => 'Nom4',
'Name5' => 'Nom5',
'Net' => 'Poids net',
'NetWeight' => 'Poids net',
'None' => 'Rien',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Nombre',
'Ordered' => 'Commandé',
'Packaging' => 'Emballage',
'PartsList' => '',
'Price' => 'Prix',
'PriceChange' => 'Changement de prix',
'PriceUnit' => 'Unité de prix',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Groupe de produits',
'Production' => 'Production',
'ProductionSteps' => '',
'Profile' => 'Profil',
'Properties' => 'Propriétés',
'Property' => 'Propriété',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Segment',
'ShelfLife' => 'Durée de vie',
'Source' => 'La source',
'Start' => 'Démarrer',
'Status' => 'Statut',
'Stock' => 'Stocker',
'StockList' => 'Liste des stocks',
'Successor' => 'Successeur',
'Supplier' => 'Fournisseur',
'Tax' => 'Impôt',
'Text' => 'Texte',
'TimeUnit' => 'Unité de temps',
'Title' => 'Titre',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Traduction',
'Type' => 'Taper',
'Unit' => 'Unité',
'UsedIn' => '',
'Value' => 'Valeur',
'Variation' => 'Variation',
'Variations' => 'Variations',
'Volume' => 'Le volume',
'Warehouse' => 'Entrepôt',
'Width' => 'Largeur',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Könyvelés',
'Address' => '',
'All' => 'Minden',
'Article' => 'Cikk',
'Articlegroup' => 'Gyerekcsoport',
'Attribute' => 'Tulajdonság',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Ország',
'Created' => 'Létrehozott',
'CreatedAt' => 'Létrehozott',
'Customer' => 'Vevő',
'CustomerGroup' => 'Ügyfélcsoport',
'CustomsID' => 'Vámazonosító',
'Date' => 'Dátum',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'Idézés',
'ILV' => 'ILV',
'Info' => 'Információ',
'IsActive' => 'Aktív?',
'Issues' => '',
'Item' => 'Tétel',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Sok',
'MRR' => 'Mrr',
'MTDSales' => 'MTD értékesítés',
'Machines' => '',
'Makespan' => 'Makespan',
'Margin' => 'Árrés',
'Master' => 'Fő',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Név1',
'Name2' => 'NAME2',
'Name3' => 'Név3',
'Name4' => 'Név4',
'Name5' => 'Név5',
'Net' => 'Nettó tömeg',
'NetWeight' => 'Nettó tömeg',
'None' => 'Egyik sem',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Szám',
'Ordered' => 'Elrendelt',
'Packaging' => 'Csomagolás',
'PartsList' => '',
'Price' => 'Ár',
'PriceChange' => 'Árváltozás',
'PriceUnit' => 'Áregység',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Termékcsoport',
'Production' => 'Termelés',
'ProductionSteps' => '',
'Profile' => 'Profil',
'Properties' => 'Tulajdonságok',
'Property' => 'Ingatlan',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Szegmens',
'ShelfLife' => 'Szavatossági idő',
'Source' => 'Forrás',
'Start' => 'Rajt',
'Status' => 'Állapot',
'Stock' => 'Készlet',
'StockList' => 'Állománylista',
'Successor' => 'Utód',
'Supplier' => 'Támogató',
'Tax' => 'Adó',
'Text' => 'Szöveg',
'TimeUnit' => 'Időegység',
'Title' => 'Cím',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Fordítás',
'Type' => 'típus',
'Unit' => 'Mértékegység',
'UsedIn' => '',
'Value' => 'Érték',
'Variation' => 'Variáció',
'Variations' => 'Változatok',
'Volume' => 'Hangerő',
'Warehouse' => 'Raktár',
'Width' => 'Szélesség',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Contabilità',
'Address' => '',
'All' => 'Tutto',
'Article' => 'Articolo',
'Articlegroup' => 'Art.group.',
'Attribute' => 'Attributo',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Nazione',
'Created' => 'Creato',
'CreatedAt' => 'Creato',
'Customer' => 'Cliente',
'CustomerGroup' => 'Gruppo di clienti',
'CustomsID' => 'ID doganali',
'Date' => 'Data',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'ID',
'ILV' => 'Ilv.',
'Info' => 'Informazioni',
'IsActive' => 'Attivo?',
'Issues' => '',
'Item' => 'Elemento',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Quantità',
'MRR' => 'Mrr.',
'MTDSales' => 'Vendite di mtd.',
'Machines' => '',
'Makespan' => 'Makespan.',
'Margin' => 'Margine',
'Master' => 'Maestro',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Nome1.',
'Name2' => 'Nome2.',
'Name3' => 'Nome3.',
'Name4' => 'Nome4.',
'Name5' => 'Nome5.',
'Net' => 'Peso netto',
'NetWeight' => 'Peso netto',
'None' => 'Nessuno',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Numero',
'Ordered' => 'Ordinato',
'Packaging' => 'Confezione',
'PartsList' => '',
'Price' => 'Prezzo',
'PriceChange' => 'Cambio di prezzo',
'PriceUnit' => 'Unità di prezzo.',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Gruppo di prodotti',
'Production' => 'Produzione',
'ProductionSteps' => '',
'Profile' => 'Profilo',
'Properties' => 'Proprietà',
'Property' => 'Proprietà',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Segmento',
'ShelfLife' => 'Data di scadenza',
'Source' => 'Fonte',
'Start' => 'Inizio',
'Status' => 'Stato',
'Stock' => 'Azione',
'StockList' => 'Listino',
'Successor' => 'Successore',
'Supplier' => 'Fornitore',
'Tax' => 'Imposta',
'Text' => 'Testo',
'TimeUnit' => 'Unità di tempo',
'Title' => 'Titolo',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Traduzione',
'Type' => 'Tipo',
'Unit' => 'Unità',
'UsedIn' => '',
'Value' => 'Valore',
'Variation' => 'Variazione',
'Variations' => 'Variazioni',
'Volume' => 'Volume',
'Warehouse' => 'Magazzino',
'Width' => 'Larghezza',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => '会計',
'Address' => '',
'All' => '全て',
'Article' => '記事',
'Articlegroup' => '記事グループ',
'Attribute' => '属性',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => '国',
'Created' => '作成した',
'CreatedAt' => '作成した',
'Customer' => 'お客様',
'CustomerGroup' => '顧客グループ',
'CustomsID' => '税関ID',
'Date' => '日にち',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'id',
'ILV' => 'il',
'Info' => '情報',
'IsActive' => 'アクティブ?',
'Issues' => '',
'Item' => 'アイテム',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => '多く',
'MRR' => 'MRR.',
'MTDSales' => 'MTDセールス',
'Machines' => '',
'Makespan' => 'マークスパン',
'Margin' => 'マージン',
'Master' => 'マスター',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => '名前1',
'Name2' => '名前2',
'Name3' => '名前3',
'Name4' => '名前4',
'Name5' => '名前5',
'Net' => '正味重量',
'NetWeight' => '正味重量',
'None' => 'なし',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => '番号',
'Ordered' => '順序付けられました',
'Packaging' => '包装',
'PartsList' => '',
'Price' => '価格',
'PriceChange' => '価格変更',
'PriceUnit' => '価格の単位',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => '製品グループ',
'Production' => '製造',
'ProductionSteps' => '',
'Profile' => 'プロフィール',
'Properties' => 'プロパティ',
'Property' => '財産',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'セグメント',
'ShelfLife' => '貯蔵寿命',
'Source' => 'ソース',
'Start' => '始める',
'Status' => '状態',
'Stock' => 'ストック',
'StockList' => '在庫リスト',
'Successor' => '後継',
'Supplier' => 'サプライヤー',
'Tax' => '税',
'Text' => '文章',
'TimeUnit' => '時間単位',
'Title' => 'タイトル',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => '翻訳',
'Type' => 'タイプ',
'Unit' => '単位',
'UsedIn' => '',
'Value' => '価値',
'Variation' => '変化',
'Variations' => '変種',
'Volume' => '音量',
'Warehouse' => '倉庫',
'Width' => '幅',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => '회계',
'Address' => '',
'All' => '모두',
'Article' => '기사',
'Articlegroup' => '기사 그룹',
'Attribute' => '기인하다',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => '국가',
'Created' => '만들어진',
'CreatedAt' => '만들어진',
'Customer' => '고객',
'CustomerGroup' => '고객 그룹',
'CustomsID' => '세관 ID.',
'Date' => '날짜',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'ID',
'ILV' => 'ilv.',
'Info' => '정보',
'IsActive' => '활동적인?',
'Issues' => '',
'Item' => '안건',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => '많은',
'MRR' => '부서',
'MTDSales' => 'MTD 판매',
'Machines' => '',
'Makespan' => '총 소요 시간',
'Margin' => '여유',
'Master' => '주인',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'name1.',
'Name2' => 'name2.',
'Name3' => 'Name3.',
'Name4' => '이름 4',
'Name5' => 'Name5.',
'Net' => '순중량',
'NetWeight' => '순중량',
'None' => '없음',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => '숫자',
'Ordered' => '주문했다',
'Packaging' => '포장',
'PartsList' => '',
'Price' => '가격',
'PriceChange' => '가격 변경',
'PriceUnit' => '가격 단위',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => '제품 그룹',
'Production' => '생산',
'ProductionSteps' => '',
'Profile' => '프로필',
'Properties' => '속성',
'Property' => '재산',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => '분절',
'ShelfLife' => '유통 기한',
'Source' => '원천',
'Start' => '시작',
'Status' => '상태',
'Stock' => '재고',
'StockList' => '재고 목록',
'Successor' => '후임',
'Supplier' => '공급자',
'Tax' => '세',
'Text' => '텍스트',
'TimeUnit' => '시간 단위',
'Title' => '제목',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => '번역',
'Type' => '유형',
'Unit' => '단위',
'UsedIn' => '',
'Value' => '값',
'Variation' => '변화',
'Variations' => '변형',
'Volume' => '용량',
'Warehouse' => '창고',
'Width' => '너비',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Regnskap',
'Address' => '',
'All' => 'Alle',
'Article' => 'Artikkel',
'Articlegroup' => 'Articregroup.',
'Attribute' => 'Egenskap',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Land',
'Created' => 'Opprettet',
'CreatedAt' => 'Opprettet',
'Customer' => 'Kunde',
'CustomerGroup' => 'Kunde Group.',
'CustomsID' => 'Toll-ID.',
'Date' => 'Dato',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'Id.',
'ILV' => 'ILV.',
'Info' => 'Info.',
'IsActive' => 'Aktiv?',
'Issues' => '',
'Item' => 'Punkt',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Lot',
'MRR' => 'MRR.',
'MTDSales' => 'MTD-salg',
'Machines' => '',
'Makespan' => 'Makepan.',
'Margin' => 'Margin',
'Master' => 'Herre',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Navn1.',
'Name2' => 'NAME2.',
'Name3' => 'Navn3.',
'Name4' => 'Navn4.',
'Name5' => 'Navn5.',
'Net' => 'Netto vekt',
'NetWeight' => 'Netto vekt',
'None' => 'Ingen',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Nummer',
'Ordered' => 'Bestilt',
'Packaging' => 'Emballasje',
'PartsList' => '',
'Price' => 'Pris',
'PriceChange' => 'Prisendring',
'PriceUnit' => 'Enheten av pris',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Produktgruppe',
'Production' => 'Produksjon',
'ProductionSteps' => '',
'Profile' => 'Profil',
'Properties' => 'Egenskaper',
'Property' => 'Eiendom',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Segmentet',
'ShelfLife' => 'Holdbarhet',
'Source' => 'Kilde',
'Start' => 'Start',
'Status' => 'Status',
'Stock' => 'Lager',
'StockList' => 'Lagerliste',
'Successor' => 'Etterfølger',
'Supplier' => 'Leverandør',
'Tax' => 'Avgift',
'Text' => 'Tekst',
'TimeUnit' => 'Tidsenhet',
'Title' => 'Tittel',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Oversettelse',
'Type' => 'Type',
'Unit' => 'Enhet',
'UsedIn' => '',
'Value' => 'Verdi',
'Variation' => 'Variasjon',
'Variations' => 'Variasjoner',
'Volume' => 'Volum',
'Warehouse' => 'Lager',
'Width' => 'Bredde',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Rachunkowość',
'Address' => '',
'All' => 'Wszystkie',
'Article' => 'Artykuł',
'Articlegroup' => 'Artykuł',
'Attribute' => 'Atrybut',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Kraj',
'Created' => 'Utworzony',
'CreatedAt' => 'Utworzony',
'Customer' => 'Klient',
'CustomerGroup' => 'Grupa klientów',
'CustomsID' => 'Identyfikator celny',
'Date' => 'Data',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'ID',
'ILV' => 'ILV.',
'Info' => 'Info',
'IsActive' => 'Aktywny?',
'Issues' => '',
'Item' => 'Przedmiot',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Działka',
'MRR' => 'MRR.',
'MTDSales' => 'Sprzedaż MTD.',
'Machines' => '',
'Makespan' => 'Makespan',
'Margin' => 'Margines',
'Master' => 'Gospodarz',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Nazwa1.',
'Name2' => 'Nazwa2.',
'Name3' => 'Nazwa3.',
'Name4' => 'Nazwa4.',
'Name5' => 'Nazwa5.',
'Net' => 'Waga netto',
'NetWeight' => 'Waga netto',
'None' => 'Nic',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Numer',
'Ordered' => 'Uporządkowany',
'Packaging' => 'Opakowanie',
'PartsList' => '',
'Price' => 'Cena £',
'PriceChange' => 'Zmiana ceny',
'PriceUnit' => 'Jednostka ceny',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Grupa produktów',
'Production' => 'Produkcja',
'ProductionSteps' => '',
'Profile' => 'Profil',
'Properties' => 'Nieruchomości',
'Property' => 'Nieruchomość',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Człon',
'ShelfLife' => 'Trwałość',
'Source' => 'Źródło',
'Start' => 'Początek',
'Status' => 'Status',
'Stock' => 'Magazyn',
'StockList' => 'Lista zapasów',
'Successor' => 'Następca',
'Supplier' => 'Dostawca',
'Tax' => 'Podatek',
'Text' => 'Tekst',
'TimeUnit' => 'Jednostka czasu',
'Title' => 'Tytuł',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Tłumaczenie',
'Type' => 'Rodzaj',
'Unit' => 'Jednostka',
'UsedIn' => '',
'Value' => 'Wartość',
'Variation' => 'Zmiana',
'Variations' => 'Wariacje',
'Volume' => 'Tom',
'Warehouse' => 'Magazyn',
'Width' => 'Szerokość',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Contabilidade',
'Address' => '',
'All' => 'Tudo',
'Article' => 'Artigo',
'Articlegroup' => 'ArticleGroup',
'Attribute' => 'Atributo',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'País',
'Created' => 'Criado',
'CreatedAt' => 'Criado',
'Customer' => 'Cliente',
'CustomerGroup' => 'Grupo de clientes',
'CustomsID' => 'ID da alfândega',
'Date' => 'Encontro',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'identificação',
'ILV' => 'Ilv.',
'Info' => 'Info',
'IsActive' => 'Ativo?',
'Issues' => '',
'Item' => 'Item',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Muitos',
'MRR' => 'MRR.',
'MTDSales' => 'Sales Mtd.',
'Machines' => '',
'Makespan' => 'Makespan.',
'Margin' => 'Margem',
'Master' => 'Mestre',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Nome1.',
'Name2' => 'Nome2.',
'Name3' => 'Nome3.',
'Name4' => 'Nome4.',
'Name5' => 'Nome5.',
'Net' => 'Peso líquido',
'NetWeight' => 'Peso líquido',
'None' => 'Nenhum',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Número',
'Ordered' => 'Encomendado',
'Packaging' => 'Embalagem',
'PartsList' => '',
'Price' => 'Preço',
'PriceChange' => 'Mudança de preço',
'PriceUnit' => 'Unidade de preço',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Grupo de produtos',
'Production' => 'Produção',
'ProductionSteps' => '',
'Profile' => 'Perfil',
'Properties' => 'Propriedades.',
'Property' => 'Propriedade',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Segmento',
'ShelfLife' => 'Validade',
'Source' => 'Fonte',
'Start' => 'Começar',
'Status' => 'Status',
'Stock' => 'Estoque',
'StockList' => 'Lista de ações',
'Successor' => 'Sucessor',
'Supplier' => 'Fornecedor',
'Tax' => 'Imposto',
'Text' => 'Texto',
'TimeUnit' => 'Unidade de tempo',
'Title' => 'Título',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Tradução',
'Type' => 'Modelo',
'Unit' => 'Unidade',
'UsedIn' => '',
'Value' => 'Valor',
'Variation' => 'Variação',
'Variations' => 'Variações.',
'Volume' => 'Volume',
'Warehouse' => 'Armazém',
'Width' => 'Largura',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Учет',
'Address' => '',
'All' => 'Все',
'Article' => 'Статья',
'Articlegroup' => 'Staregroup.',
'Attribute' => 'Атрибут',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Страна',
'Created' => 'Созданный',
'CreatedAt' => 'Созданный',
'Customer' => 'Клиент',
'CustomerGroup' => 'Группа клиентов',
'CustomsID' => 'Таможенный ID.',
'Date' => 'Дата',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'Я БЫ',
'ILV' => 'Ilv.',
'Info' => 'Информация',
'IsActive' => 'Активен?',
'Issues' => '',
'Item' => 'Пункт',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Много',
'MRR' => 'MRR',
'MTDSales' => 'MTD Sales.',
'Machines' => '',
'Makespan' => 'Пары',
'Margin' => 'Допуск',
'Master' => 'Владелец',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Имя1.',
'Name2' => 'Имя2.',
'Name3' => 'Имя3.',
'Name4' => 'Имя4.',
'Name5' => 'Имя5.',
'Net' => 'Нетто',
'NetWeight' => 'Нетто',
'None' => 'Никто',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Число',
'Ordered' => 'Заказал',
'Packaging' => 'Упаковка',
'PartsList' => '',
'Price' => 'Цена',
'PriceChange' => 'Смена цены',
'PriceUnit' => 'Единица цены',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Группа товаров',
'Production' => 'Производство',
'ProductionSteps' => '',
'Profile' => 'Профиль',
'Properties' => 'Характеристики',
'Property' => 'Имущество',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Сегмент',
'ShelfLife' => 'Срок годности',
'Source' => 'Источник',
'Start' => 'Начинать',
'Status' => 'Статус',
'Stock' => 'Склад',
'StockList' => 'Список акций',
'Successor' => 'Преемник',
'Supplier' => 'Поставщик',
'Tax' => 'Налог',
'Text' => 'Текст',
'TimeUnit' => 'Единица времени',
'Title' => 'Заголовок',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Перевод',
'Type' => 'Тип',
'Unit' => 'Единица измерения',
'UsedIn' => '',
'Value' => 'Ценность',
'Variation' => 'Вариация',
'Variations' => 'Вариации',
'Volume' => 'Объем',
'Warehouse' => 'Склад',
'Width' => 'Ширина',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Bokföring',
'Address' => '',
'All' => 'Allt',
'Article' => 'Artikel',
'Articlegroup' => 'Artikelgrupp',
'Attribute' => 'Attribut',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Land',
'Created' => 'Skapad',
'CreatedAt' => 'Skapad',
'Customer' => 'Kund',
'CustomerGroup' => 'kundgrupp',
'CustomsID' => 'Tull ID',
'Date' => 'Datum',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'Id',
'ILV' => 'Ilv',
'Info' => 'Info',
'IsActive' => 'Aktiva?',
'Issues' => '',
'Item' => 'Artikel',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Massa',
'MRR' => 'Mrr',
'MTDSales' => 'MTD-försäljning',
'Machines' => '',
'Makespan' => 'Makpanel',
'Margin' => 'Marginal',
'Master' => 'Bemästra',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Namn1',
'Name2' => 'Namn2',
'Name3' => 'Namn3',
'Name4' => 'Namn4',
'Name5' => 'Namn5',
'Net' => 'Nettovikt',
'NetWeight' => 'Nettovikt',
'None' => 'Ingen',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'siffra',
'Ordered' => 'Beställde',
'Packaging' => 'Förpackning',
'PartsList' => '',
'Price' => 'Pris',
'PriceChange' => 'Prisförändring',
'PriceUnit' => 'Prisenhet',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Produktgrupp',
'Production' => 'Produktion',
'ProductionSteps' => '',
'Profile' => 'Profil',
'Properties' => 'Egenskaper',
'Property' => 'Fast egendom',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Segmentet',
'ShelfLife' => 'Hållbarhetstid',
'Source' => 'Källa',
'Start' => 'Start',
'Status' => 'Status',
'Stock' => 'Stock',
'StockList' => 'Lagerlista',
'Successor' => 'Efterträdare',
'Supplier' => 'Leverantör',
'Tax' => 'Beskatta',
'Text' => 'Text',
'TimeUnit' => 'Tidpunkt',
'Title' => 'Titel',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Översättning',
'Type' => 'Typ',
'Unit' => 'Enhet',
'UsedIn' => '',
'Value' => 'Värde',
'Variation' => 'Variation',
'Variations' => 'Variationer',
'Volume' => 'Volym',
'Warehouse' => 'lager',
'Width' => 'Bredd',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'การบัญชี',
'Address' => '',
'All' => 'ทั้งหมด',
'Article' => 'บทความ',
'Articlegroup' => 'ArticleGroup',
'Attribute' => 'คุณลักษณะ',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'ประเทศ',
'Created' => 'สร้าง',
'CreatedAt' => 'สร้าง',
'Customer' => 'ลูกค้า',
'CustomerGroup' => 'กลุ่มลูกค้า',
'CustomsID' => 'รหัสศุลกากร',
'Date' => 'วันที่',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'id',
'ILV' => 'ilv',
'Info' => 'ข้อมูล',
'IsActive' => 'คล่องแคล่ว?',
'Issues' => '',
'Item' => 'สิ่งของ',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'มาก',
'MRR' => 'MRR',
'MTDSales' => 'ขาย MTD',
'Machines' => '',
'Makespan' => 'แต่งหน้า',
'Margin' => 'ระยะขอบ',
'Master' => 'ผู้เชี่ยวชาญ',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'ชื่อ 1',
'Name2' => 'ชื่อ 2',
'Name3' => 'ชื่อ 3',
'Name4' => 'ชื่อ 4',
'Name5' => 'ชื่อ 5',
'Net' => 'น้ำหนักสุทธิ',
'NetWeight' => 'น้ำหนักสุทธิ',
'None' => 'ไม่มี',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'ตัวเลข',
'Ordered' => 'ที่ได้รับคำสั่ง',
'Packaging' => 'บรรจุภัณฑ์',
'PartsList' => '',
'Price' => 'ราคา',
'PriceChange' => 'การเปลี่ยนแปลงราคา',
'PriceUnit' => 'หน่วยของราคา',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'กลุ่มผลิตภัณฑ์',
'Production' => 'การผลิต',
'ProductionSteps' => '',
'Profile' => 'ประวัติโดยย่อ',
'Properties' => 'คุณสมบัติ',
'Property' => 'คุณสมบัติ',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'ส่วน',
'ShelfLife' => 'อายุการเก็บรักษา',
'Source' => 'แหล่งที่มา',
'Start' => 'เริ่ม',
'Status' => 'สถานะ',
'Stock' => 'คลังสินค้า',
'StockList' => 'รายการสต็อก',
'Successor' => 'ผู้สืบทอด',
'Supplier' => 'ผู้ผลิต',
'Tax' => 'ภาษี',
'Text' => 'ข้อความ',
'TimeUnit' => 'หน่วยของเวลา',
'Title' => 'ชื่อ',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'การแปล',
'Type' => 'พิมพ์',
'Unit' => 'หน่วย',
'UsedIn' => '',
'Value' => 'ค่า',
'Variation' => 'การเปลี่ยนแปลง',
'Variations' => 'การเปลี่ยนแปลง',
'Volume' => 'ปริมาณ',
'Warehouse' => 'คลังสินค้า',
'Width' => 'ความกว้าง',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Muhasebe',
'Address' => '',
'All' => 'Herşey',
'Article' => 'Madde',
'Articlegroup' => 'Makale grubu',
'Attribute' => 'Bağlanmak',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Ülke',
'Created' => 'Yaratılmış',
'CreatedAt' => 'Yaratılmış',
'Customer' => 'Müşteri',
'CustomerGroup' => 'müşteri grubu',
'CustomsID' => 'Gümrük kimliği',
'Date' => 'Tarih',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'İD',
'ILV' => 'İlve',
'Info' => 'Bilgi',
'IsActive' => 'Aktif?',
'Issues' => '',
'Item' => 'Kalem',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Çok güzelsin',
'MRR' => 'Mrr',
'MTDSales' => 'Mtd satışları',
'Machines' => '',
'Makespan' => 'Makespan',
'Margin' => 'Marj',
'Master' => 'Usta',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'İsim1',
'Name2' => 'İsim2',
'Name3' => 'İsim3',
'Name4' => 'İsim4',
'Name5' => 'İsim5',
'Net' => 'Net ağırlığı',
'NetWeight' => 'Net ağırlığı',
'None' => 'Hiçbiri',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Numara',
'Ordered' => 'Emir',
'Packaging' => 'Ambalajlama',
'PartsList' => '',
'Price' => 'Fiyat',
'PriceChange' => 'Fiyat değişikliği',
'PriceUnit' => 'Fiyat birimi',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Ürün grubu',
'Production' => 'Üretme',
'ProductionSteps' => '',
'Profile' => 'Profil',
'Properties' => 'Özellikler',
'Property' => 'Mülk',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Segment',
'ShelfLife' => 'Raf ömrü',
'Source' => 'Kaynak',
'Start' => 'Başlangıç',
'Status' => 'Durum',
'Stock' => 'Stoklamak',
'StockList' => 'Stok listesi',
'Successor' => 'Varis',
'Supplier' => 'Tedarikçi',
'Tax' => 'Vergi',
'Text' => 'Metin',
'TimeUnit' => 'Zaman birimi',
'Title' => 'Başlık',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Tercüme',
'Type' => 'Tip',
'Unit' => 'Birim',
'UsedIn' => '',
'Value' => 'Değer',
'Variation' => 'varyasyon',
'Variations' => 'Varyasyonlar',
'Volume' => 'Ses',
'Warehouse' => 'Depo',
'Width' => 'Genişlik',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => 'Бухгалтерський облік',
'Address' => '',
'All' => 'Все',
'Article' => 'Стаття',
'Articlegroup' => 'Статтюгрупи',
'Attribute' => 'Атрибут',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => 'Країна',
'Created' => 'Створений',
'CreatedAt' => 'Створений',
'Customer' => 'Клієнт',
'CustomerGroup' => 'Група клієнтів',
'CustomsID' => 'Митний ідентифікатор',
'Date' => 'Дата',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'Ідентифікатор',
'ILV' => 'Ільв',
'Info' => 'Інформація',
'IsActive' => 'Активний?',
'Issues' => '',
'Item' => 'Елемент',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => 'Лот',
'MRR' => 'Пан',
'MTDSales' => 'Продажі MTD',
'Machines' => '',
'Makespan' => 'Макіяж',
'Margin' => 'Маржа',
'Master' => 'Майстер',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => 'Name1',
'Name2' => 'Name2',
'Name3' => 'Name3',
'Name4' => 'Name4',
'Name5' => 'Назва5',
'Net' => 'Вага чистого',
'NetWeight' => 'Вага чистого',
'None' => 'Ніякий',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => 'Число',
'Ordered' => 'Упорядкований',
'Packaging' => 'Упаковка',
'PartsList' => '',
'Price' => 'Ціна',
'PriceChange' => 'Зміна ціни',
'PriceUnit' => 'Одиниця ціни',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => 'Група продуктів',
'Production' => 'Виробництво',
'ProductionSteps' => '',
'Profile' => 'Профіль',
'Properties' => 'Властивості',
'Property' => 'Майно',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => 'Сегмент',
'ShelfLife' => 'Термін придатності',
'Source' => 'Джерело',
'Start' => 'Почати',
'Status' => 'Статус',
'Stock' => 'Запас',
'StockList' => 'Запасний список',
'Successor' => 'Наступник',
'Supplier' => 'Постачальник',
'Tax' => 'Оподаткування',
'Text' => 'Текст',
'TimeUnit' => 'Підрозділ часу',
'Title' => 'Заголовок',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => 'Переклад',
'Type' => 'Тип',
'Unit' => 'Підрозділ',
'UsedIn' => '',
'Value' => 'Вартість',
'Variation' => 'Зміна',
'Variations' => 'Варіації',
'Volume' => 'Обсяг',
'Warehouse' => 'Склад',
'Width' => 'Ширина',

View File

@ -15,8 +15,6 @@ declare(strict_types=1);
return ['ItemManagement' => [
'Accounting' => '会计',
'Address' => '',
'All' => '全部',
'Article' => '文章',
'Articlegroup' => '商品组',
'Attribute' => '属性',
'AttributeTypes' => '',
@ -38,7 +36,6 @@ return ['ItemManagement' => [
'Country' => '国家',
'Created' => '创造了',
'CreatedAt' => '创造了',
'Customer' => '顾客',
'CustomerGroup' => '客户组',
'CustomsID' => '海关ID',
'Date' => '日期',
@ -58,10 +55,7 @@ return ['ItemManagement' => [
'ID' => 'ID',
'ILV' => 'ilv.',
'Info' => '信息',
'IsActive' => '积极的?',
'Issues' => '',
'Item' => '物品',
'ItemGroup' => '',
'ItemSection' => '',
'ItemSegment' => '',
'ItemType' => '',
@ -78,7 +72,6 @@ return ['ItemManagement' => [
'Lot' => '很多',
'MRR' => 'MRR.',
'MTDSales' => 'MTD销售',
'Machines' => '',
'Makespan' => 'MEPESPAN.',
'Margin' => '利润',
'Master' => '掌握',
@ -90,8 +83,6 @@ return ['ItemManagement' => [
'Name1' => '名称1',
'Name2' => '名称2.',
'Name3' => '名称3.',
'Name4' => '名称4.',
'Name5' => '姓名5.',
'Net' => '净重',
'NetWeight' => '净重',
'None' => '没有任何',
@ -99,7 +90,6 @@ return ['ItemManagement' => [
'Number' => '数字',
'Ordered' => '订购',
'Packaging' => '打包',
'PartsList' => '',
'Price' => '价格',
'PriceChange' => '价格变动',
'PriceUnit' => '价格单位',
@ -108,7 +98,6 @@ return ['ItemManagement' => [
'Procurement' => '',
'Productgroup' => '产品组',
'Production' => '生产',
'ProductionSteps' => '',
'Profile' => '轮廓',
'Properties' => '特性',
'Property' => '财产',
@ -128,14 +117,12 @@ return ['ItemManagement' => [
'SalesPricing' => '',
'Segment' => '分割',
'ShelfLife' => '保质期',
'Source' => '来源',
'Start' => '开始',
'Status' => '地位',
'Stock' => '库存',
'StockList' => '股票名单',
'Successor' => '接班人',
'Supplier' => '供应商',
'Tax' => '税',
'Text' => '文本',
'TimeUnit' => '单位的时间',
'Title' => '标题',
@ -145,10 +132,7 @@ return ['ItemManagement' => [
'Translation' => '翻译',
'Type' => '类型',
'Unit' => '单元',
'UsedIn' => '',
'Value' => '价值',
'Variation' => '变化',
'Variations' => '变化',
'Volume' => '体积',
'Warehouse' => '仓库',
'Width' => '宽度',

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,71 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ItemManagement
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
use phpOMS\Uri\UriFactory;
/** @var \phpOMS\Views\View $this */
$types = $this->data['types'];
echo $this->data['nav']->render(); ?>
<div class="row">
<div class="col-xs-12">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Materials'); ?><i class="g-icon download btn end-xs">download</i></div>
<div class="slider">
<table id="iContractTypeList" class="default sticky">
<thead>
<tr>
<td><?= $this->getHtml('ID', '0', '0'); ?>
<label for="iContractTypeList-sort-1">
<input type="radio" name="iContractTypeList-sort" id="iContractTypeList-sort-1">
<i class="sort-asc g-icon">expand_less</i>
</label>
<label for="iContractTypeList-sort-2">
<input type="radio" name="iContractTypeList-sort" id="iContractTypeList-sort-2">
<i class="sort-desc g-icon">expand_more</i>
</label>
<label>
<i class="filter g-icon">filter_alt</i>
</label>
<td class="wf-100"><?= $this->getHtml('Name'); ?>
<label for="iContractTypeList-sort-2">
<input type="radio" name="iContractTypeList-sort" id="iContractTypeList-sort-2">
<i class="sort-asc g-icon">expand_less</i>
</label>
<label for="iContractTypeList-sort-3">
<input type="radio" name="iContractTypeList-sort" id="iContractTypeList-sort-3">
<i class="sort-desc g-icon">expand_more</i>
</label>
<label>
<i class="filter g-icon">filter_alt</i>
</label>
<tbody>
<?php
$count = 0;
foreach ($types as $key => $value) : ++$count;
$url = UriFactory::build('{/base}/bill/payment/view?{?}&id=' . $value->id);
?>
<tr data-href="<?= $url; ?>">
<td><a href="<?= $url; ?>"><?= $value->id; ?></a>
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->getL11n()); ?></a>
<?php endforeach; ?>
<?php if ($count === 0) : ?>
<tr><td colspan="2" class="empty"><?= $this->getHtml('Empty', '0', '0'); ?>
<?php endif; ?>
</table>
</div>
</section>
</div>
</div>

View File

@ -0,0 +1,53 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ItemManagement
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
use phpOMS\Uri\UriFactory;
/** @var \phpOMS\Localization\BaseStringL11nType */
$type = $this->data['type'];
/** @var \phpOMS\Views\View $this */
echo $this->data['nav']->render(); ?>
<div class="row">
<div class="col-xs-12 col-md-6">
<div class="portlet">
<form id="materialForm" method="POST" action="<?= UriFactory::build('{/api}item/material'); ?>"
data-ui-container="#materialTable tbody"
data-add-form="materialForm"
data-add-tpl="#materialTable tbody .oms-add-tpl-material">
<div class="portlet-head"><?= $this->getHtml('Material'); ?></div>
<div class="portlet-body">
<div class="form-group">
<label for="iName"><?= $this->getHtml('Name'); ?></label>
<input type="text" name="code" id="iName" placeholder="" value="<?= $this->printHtml($type->title); ?>">
</div>
</div>
<div class="portlet-foot">
<input type="hidden" name="id" value="<?= $type->id; ?>">
<input id="iSubmit" name="submit" type="submit" value="<?= $this->getHtml('Save', '0', '0'); ?>">
</div>
</form>
</div>
</div>
</div>
<div class="row">
<?= $this->data['l11nView']->render(
$this->data['l11nValues'],
[],
'{/api}item/material/l11n'
);
?>
</div>

View File

@ -36,7 +36,7 @@ $monthlySalesCosts = $this->data['monthlySalesCosts'] ?? [];
$languages = ISO639Enum::getConstants();
/** @var \phpOMS\Localization\Localization $l11n */
$l11n = $this->getData('defaultlocalization') ?? new NullLocalization();
$l11n = $this->getData('default_localization') ?? new NullLocalization();
echo $this->data['nav']->render();
?>