mirror of
https://github.com/Karaka-Management/oms-ItemManagement.git
synced 2026-02-05 23:08:41 +00:00
code fixes
This commit is contained in:
parent
259657c410
commit
a6aa448ed0
|
|
@ -18,10 +18,10 @@ use Modules\ItemManagement\Models\SettingsEnum;
|
|||
return [
|
||||
[
|
||||
"description" => "Default item segmentation (segment, section, sales group, product group)",
|
||||
'type' => 'setting',
|
||||
'name' => SettingsEnum::DEFAULT_SEGMENTATION,
|
||||
'content' => '{"segment":1, "section":1, "sales_group":1, "product_group":1}',
|
||||
'pattern' => '',
|
||||
'module' => ApiController::NAME,
|
||||
'type' => 'setting',
|
||||
'name' => SettingsEnum::DEFAULT_SEGMENTATION,
|
||||
'content' => '{"segment":1, "section":1, "sales_group":1, "product_group":1}',
|
||||
'pattern' => '',
|
||||
'module' => ApiController::NAME,
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -522,6 +522,7 @@
|
|||
"is_required": true,
|
||||
"default_value": "",
|
||||
"values": [
|
||||
{ "value": "GENERAL" },
|
||||
{ "value": "SOFTWARE" },
|
||||
{ "value": "SERVICE" }
|
||||
]
|
||||
|
|
@ -538,6 +539,7 @@
|
|||
"is_required": true,
|
||||
"default_value": "",
|
||||
"values": [
|
||||
{ "value": "GENERAL" },
|
||||
{ "value": "SOFTWARE" },
|
||||
{ "value": "SERVICE" }
|
||||
]
|
||||
|
|
|
|||
|
|
@ -61,6 +61,8 @@ final class Installer extends InstallerAbstract
|
|||
$attrValues = self::createAttributeValues($app, $attrTypes, $attributes);
|
||||
|
||||
$data = include __DIR__ . '/Install/Admin.install.php';
|
||||
|
||||
/** @var array $content */
|
||||
$content = \json_decode($data[0]['content'], true);
|
||||
|
||||
foreach ($content as $type => $_) {
|
||||
|
|
|
|||
|
|
@ -95,6 +95,7 @@ final class ApiController extends Controller
|
|||
->execute();
|
||||
|
||||
if (empty($l11n)) {
|
||||
/** @var BaseStringL11n[] $l11n */
|
||||
$l11n = ItemL11nMapper::getAll()
|
||||
->with('type')
|
||||
->where('type/title', ['name1', 'name2'], 'IN')
|
||||
|
|
@ -107,6 +108,7 @@ final class ApiController extends Controller
|
|||
if (empty($l11n)) {
|
||||
$searches = \explode(' ', $request->getDataString('search') ?? '');
|
||||
foreach ($searches as $search) {
|
||||
/** @var BaseStringL11n[] $l11n */
|
||||
$l11n = ItemL11nMapper::getAll()
|
||||
->with('type')
|
||||
->where('type/title', ['internal_matchcodes'], 'IN')
|
||||
|
|
@ -122,6 +124,7 @@ final class ApiController extends Controller
|
|||
|
||||
if (empty($l11n)) {
|
||||
foreach ($searches as $search) {
|
||||
/** @var BaseStringL11n[] $l11n */
|
||||
$l11n = ItemL11nMapper::getAll()
|
||||
->with('type')
|
||||
->where('type/title', ['name1', 'name2'], 'IN')
|
||||
|
|
@ -139,10 +142,11 @@ final class ApiController extends Controller
|
|||
|
||||
$itemList = [];
|
||||
if (!empty($l11n)) {
|
||||
$itemIds = \array_map(function (BaseStringL11n $l) {
|
||||
$itemIds = \array_map(function (BaseStringL11n $l) : int {
|
||||
return $l->ref;
|
||||
}, $l11n);
|
||||
|
||||
/** @var Item[] $itemList */
|
||||
$itemList = ItemMapper::getAll()
|
||||
->with('l11n')
|
||||
->with('l11n/type')
|
||||
|
|
@ -187,6 +191,19 @@ final class ApiController extends Controller
|
|||
. (empty($item->number) ? $item->id : $item->number);
|
||||
}
|
||||
|
||||
/**
|
||||
* Api method to export items items
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param array $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiItemListExport(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void
|
||||
{
|
||||
$items = [];
|
||||
|
|
@ -194,13 +211,13 @@ final class ApiController extends Controller
|
|||
/** @var Item $item */
|
||||
foreach (ItemMapper::yield()->execute() as $item) {
|
||||
$items[] = [
|
||||
'id' => $item->id,
|
||||
'id' => $item->id,
|
||||
'name1' => $item->getL11n('name1')->content,
|
||||
'name2' => $item->getL11n('name2')->content,
|
||||
];
|
||||
}
|
||||
|
||||
$report = new \Modules\Exchange\Models\Report();
|
||||
$report = new \Modules\Exchange\Models\Report();
|
||||
$report->data = $items;
|
||||
|
||||
$this->app->moduleManager->get('Exchange', 'Api')
|
||||
|
|
@ -236,20 +253,24 @@ final class ApiController extends Controller
|
|||
$this->app->dbPool->get()->con->commit();
|
||||
|
||||
// Define default item containers
|
||||
/** @var \Modules\Attribute\Models\AttributeType[] $types */
|
||||
$types = ItemAttributeTypeMapper::getAll()
|
||||
->where('name', ['default_sales_container', 'default_purchase_container'], 'IN')
|
||||
->execute();
|
||||
|
||||
foreach ($types as $type) {
|
||||
$internalResponse = clone $response;
|
||||
$internalRequest = new HttpRequest();
|
||||
$primaryContainer = \reset($item->container);
|
||||
if ($primaryContainer !== false) {
|
||||
foreach ($types as $type) {
|
||||
$internalResponse = clone $response;
|
||||
$internalRequest = new HttpRequest();
|
||||
|
||||
$internalRequest->header->account = $request->header->account;
|
||||
$internalRequest->setData('ref', $item->id);
|
||||
$internalRequest->setData('type', $type->id);
|
||||
$internalRequest->setData('value', \reset($item->container)->id);
|
||||
$internalRequest->header->account = $request->header->account;
|
||||
$internalRequest->setData('ref', $item->id);
|
||||
$internalRequest->setData('type', $type->id);
|
||||
$internalRequest->setData('value', $primaryContainer->id);
|
||||
|
||||
$this->app->moduleManager->get('ItemManagement', 'ApiAttribute')->apiItemAttributeCreate($internalRequest, $internalResponse);
|
||||
$this->app->moduleManager->get('ItemManagement', 'ApiAttribute')->apiItemAttributeCreate($internalRequest, $internalResponse);
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->app->moduleManager->isActive('Billing')) {
|
||||
|
|
@ -330,16 +351,31 @@ final class ApiController extends Controller
|
|||
$this->createStandardCreateResponse($request, $response, $item);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create item segmentation.
|
||||
*
|
||||
* Default: segment->section->sales_group->product_group and to the side product_type
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param Item $item Item
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function createItemSegmentation(RequestAbstract $request, ResponseAbstract $response, Item $item) : void
|
||||
{
|
||||
/** @var \Model\Setting $settings */
|
||||
$settings = $this->app->appSettings->get(null, ItemSettingsEnum::DEFAULT_SEGMENTATION);
|
||||
|
||||
/** @var array $segmentation */
|
||||
$segmentation = \json_decode($settings->content, true);
|
||||
if ($segmentation === false || $segmentation === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var \Modules\Attribute\Models\AttributeType[] $types */
|
||||
$types = ItemAttributeTypeMapper::getAll()
|
||||
->where('name', \array_keys($segmentation), 'IN')
|
||||
->execute();
|
||||
|
|
|
|||
|
|
@ -435,7 +435,6 @@ final class BackendController extends Controller
|
|||
$view->setTemplate('/Modules/ItemManagement/Theme/Backend/item-view');
|
||||
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1004803001, $request, $response);
|
||||
|
||||
/** @var \Modules\ItemManagement\Models\Item */
|
||||
$view->data['item'] = ItemMapper::get()
|
||||
->with('l11n')
|
||||
->with('l11n/type')
|
||||
|
|
@ -471,7 +470,6 @@ final class BackendController extends Controller
|
|||
->where(ItemMapper::HAS_MANY['files']['self'], '=', $view->data['item']->id)
|
||||
->where(MediaTypeMapper::TABLE . '.' . MediaTypeMapper::getColumnByMember('name'), '=', 'item_profile_image');
|
||||
|
||||
/** @var \Modules\Media\Models\Media */
|
||||
$view->data['itemImage'] = MediaMapper::get()
|
||||
->with('types')
|
||||
->where('id', $results)
|
||||
|
|
@ -492,29 +490,24 @@ final class BackendController extends Controller
|
|||
|
||||
$view->data['l11nView'] = new \Web\Backend\Views\L11nView($this->app->l11nManager, $request, $response);
|
||||
|
||||
/** @var \phpOMS\Localization\BaseStringL11nType[] */
|
||||
$view->data['l11nTypes'] = ItemL11nTypeMapper::getAll()
|
||||
->execute();
|
||||
|
||||
/** @var \phpOMS\Localization\BaseStringL11n[] */
|
||||
$view->data['l11nValues'] = ItemL11nMapper::getAll()
|
||||
->with('type')
|
||||
->where('ref', $view->data['item']->id)
|
||||
->execute();
|
||||
|
||||
/** @var \Modules\Attribute\Models\AttributeType[] */
|
||||
$view->data['attributeTypes'] = ItemAttributeTypeMapper::getAll()
|
||||
->with('l11n')
|
||||
->where('l11n/language', $response->header->l11n->language)
|
||||
->execute();
|
||||
|
||||
/** @var \Modules\Organization\Models\Unit[] */
|
||||
$view->data['units'] = UnitMapper::getAll()
|
||||
->execute();
|
||||
|
||||
$view->data['hasBilling'] = $this->app->moduleManager->isActive('Billing');
|
||||
|
||||
/** @var \Modules\Billing\Models\Price\Price[] */
|
||||
$view->data['prices'] = $view->data['hasBilling']
|
||||
? \Modules\Billing\Models\Price\PriceMapper::getAll()
|
||||
->with('supplier')
|
||||
|
|
@ -533,8 +526,8 @@ final class BackendController extends Controller
|
|||
//'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))
|
||||
->where(ItemAttributeValueL11nMapper::getColumnByMember('ref') ?? '', '=', null)
|
||||
->orWhere(ItemAttributeValueL11nMapper::getColumnByMember('language') ?? '', '=', $response->header->l11n->language))
|
||||
->execute();
|
||||
|
||||
$defaultAttributeTypes = [];
|
||||
|
|
@ -549,8 +542,8 @@ final class BackendController extends Controller
|
|||
->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))
|
||||
->where(ClientAttributeValueL11nMapper::getColumnByMember('ref') ?? '', '=', null)
|
||||
->orWhere(ClientAttributeValueL11nMapper::getColumnByMember('language') ?? '', '=', $response->header->l11n->language))
|
||||
->execute();
|
||||
|
||||
$clientSegmentationTypes = [];
|
||||
|
|
@ -569,7 +562,7 @@ final class BackendController extends Controller
|
|||
PermissionCategory::ITEM_LOG,
|
||||
)
|
||||
) {
|
||||
/** @var \Modules\Auditor\Models\Audit[] */
|
||||
/** @var \Modules\Auditor\Models\Audit[] $logs */
|
||||
$logs = AuditMapper::getAll()
|
||||
->where('type', StringUtils::intHash(ItemMapper::class))
|
||||
->where('module', 'ItemManagement')
|
||||
|
|
@ -581,7 +574,6 @@ final class BackendController extends Controller
|
|||
|
||||
// @todo join audit with files, attributes, localization, prices, notes, ...
|
||||
|
||||
/** @var \Modules\Media\Models\Media[] */
|
||||
$view->data['files'] = MediaMapper::getAll()
|
||||
->with('types')
|
||||
->join('id', ItemMapper::class, 'files') // id = media id, files = item relations
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ final class ItemMapper extends DataMapperFactory
|
|||
'itemmgmt_item_purchaseprice' => ['name' => 'itemmgmt_item_purchaseprice', 'type' => 'Serializable', 'internal' => 'purchasePrice'],
|
||||
'itemmgmt_item_parent' => ['name' => 'itemmgmt_item_parent', 'type' => 'int', 'internal' => 'parent'],
|
||||
'itemmgmt_item_unit' => ['name' => 'itemmgmt_item_unit', 'type' => 'int', 'internal' => 'unit'],
|
||||
'itemmgmt_item_createdat' => ['name' => 'itemmgmt_item_createdat', 'type' => 'DateTimeImmutable', 'internal' => 'createdAt'],
|
||||
'itemmgmt_item_createdat' => ['name' => 'itemmgmt_item_createdat', 'type' => 'DateTimeImmutable', 'internal' => 'createdAt'],
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -47,6 +47,11 @@ class Material implements \JsonSerializable
|
|||
|
||||
public int $item = 0;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->type = new NullBaseStringL11nType();
|
||||
|
|
|
|||
|
|
@ -29,9 +29,7 @@ return ['ItemManagement' => [
|
|||
'ClientType' => 'Kundentyp',
|
||||
'Commission' => 'Kommission',
|
||||
'Container' => 'Container',
|
||||
'CostCenter' => 'Kostenstelle',
|
||||
'CostIndicator' => 'Einkaufssteuerkennzeichen',
|
||||
'CostObject' => 'Kostenträger',
|
||||
'Countries' => 'Länder',
|
||||
'Country' => 'Land',
|
||||
'Created' => 'Erstellt',
|
||||
|
|
@ -142,7 +140,7 @@ return ['ItemManagement' => [
|
|||
'Promocode' => 'Promocode',
|
||||
'Region' => 'Region',
|
||||
'Materials' => 'Materialien',
|
||||
'Material' => 'Material',
|
||||
'Material' => 'Material',
|
||||
'Weight' => 'Gewicht',
|
||||
'Depth' => 'Tiefe',
|
||||
'WidthLength' => 'Breite/Länge',
|
||||
|
|
|
|||
|
|
@ -28,11 +28,9 @@ return ['ItemManagement' => [
|
|||
'ClientSegment' => 'Client Segment',
|
||||
'ClientType' => 'Client Type',
|
||||
'Commission' => 'Commission',
|
||||
'Material' => 'Material',
|
||||
'Material' => 'Material',
|
||||
'Container' => 'Container',
|
||||
'CostCenter' => 'CostCenter',
|
||||
'CostIndicator' => 'Purchase tax code',
|
||||
'CostObject' => 'CostObject',
|
||||
'Countries' => 'Countries',
|
||||
'Country' => 'Country',
|
||||
'Created' => 'Created',
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user