diff --git a/Admin/Installer.php b/Admin/Installer.php index 14b4366..710d1f3 100755 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -67,7 +67,7 @@ final class Installer extends InstallerAbstract { $itemAttrType = []; - $itemAttrType['color'] = new ItemAttributeType('color'); // @todo: I think 'color' in this case is a ItemAttributeTypeL11n, this is wrong?! + $itemAttrType['color'] = new ItemAttributeType('color'); ItemAttributeTypeMapper::create()->execute($itemAttrType['color']); ItemAttributeTypeL11nMapper::create()->execute(new ItemAttributeTypeL11n($itemAttrType['color']->getId(), 'Color', ISO639x1Enum::_EN)); ItemAttributeTypeL11nMapper::create()->execute(new ItemAttributeTypeL11n($itemAttrType['color']->getId(), 'Farbe', ISO639x1Enum::_DE)); diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 9a4a6b9..f0f9be2 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -293,7 +293,7 @@ final class ApiController extends Controller */ private function createItemAttributeTypeFromRequest(RequestAbstract $request) : ItemAttributeType { - $attrType = new ItemAttributeType(); + $attrType = new ItemAttributeType(); $attrType->setL11n((string) ($request->getData('title') ?? ''), $request->getData('language') ?? ISO639x1Enum::_EN); $attrType->setFields((int) ($request->getData('fields') ?? 0)); $attrType->custom = (bool) ($request->getData('custom') ?? false); diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 6a906b0..f1e5aed 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -16,17 +16,14 @@ namespace Modules\ItemManagement\Controller; use Model\SettingsEnum; use Modules\Admin\Models\LocalizationMapper; -use Modules\Billing\Models\BillTypeL11n; +use Modules\Billing\Models\BillTransferType; use Modules\Billing\Models\SalesBillMapper; -use Modules\ItemManagement\Models\ItemAttributeMapper; use Modules\ItemManagement\Models\ItemAttributeTypeMapper; use Modules\ItemManagement\Models\ItemAttributeValueMapper; -use Modules\ItemManagement\Models\ItemL11nMapper; -use Modules\ItemManagement\Models\ItemL11nType; use Modules\ItemManagement\Models\ItemMapper; -use Modules\Media\Models\Media; use phpOMS\Asset\AssetType; use phpOMS\Contract\RenderableInterface; +use phpOMS\DataStorage\Database\Query\OrderType; use phpOMS\Localization\ISO3166CharEnum; use phpOMS\Localization\ISO3166NameEnum; use phpOMS\Localization\Money; @@ -64,8 +61,7 @@ final class BackendController extends Controller $view->setTemplate('/Modules/ItemManagement/Theme/Backend/attribute-type-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004801001, $request, $response)); - $attributes = ItemAttributeTypeMapper::with('language', $response->getLanguage()) - ::getAll(); + $attributes = ItemAttributeTypeMapper::getAll()->with('l11n')->where('l11n/language', $response->getLanguage())->execute(); $view->addData('attributes', $attributes); @@ -90,8 +86,7 @@ final class BackendController extends Controller $view->setTemplate('/Modules/ItemManagement/Theme/Backend/attribute-value-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004801001, $request, $response)); - $attributes = ItemAttributeValueMapper::with('language', $response->getLanguage()) - ::getAll(); + $attributes = ItemAttributeValueMapper::getAll()->with('l11n')->where('l11n/language', $response->getLanguage())->execute(); $view->addData('attributes', $attributes); @@ -116,8 +111,7 @@ final class BackendController extends Controller $view->setTemplate('/Modules/ItemManagement/Theme/Backend/attribute-type'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004801001, $request, $response)); - $attribute = ItemAttributeTypeMapper::with('language', $response->getLanguage()) - ::get((int) $request->getData('id')); + $attribute = ItemAttributeTypeMapper::get()->with('l11n')->where('id', (int) $request->getData('id'))->where('l11n/language', $response->getLanguage())->execute(); $view->addData('attribute', $attribute); @@ -142,8 +136,7 @@ final class BackendController extends Controller $view->setTemplate('/Modules/ItemManagement/Theme/Backend/attribute-value'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004801001, $request, $response)); - $attribute = ItemAttributeValueMapper::with('language', $response->getLanguage()) - ::get((int) $request->getData('id')); + $attribute = ItemAttributeValueMapper::get()->with('l11n')->where('id', (int) $request->getData('id'))->where('l11n/language', $response->getLanguage())->execute(); $view->addData('attribute', $attribute); @@ -172,19 +165,10 @@ final class BackendController extends Controller ->with('l11n') ->with('l11n/type') ->where('l11n/language', $response->getLanguage()) - ->where('l11n/type', ['name1', 'name2', 'name3'], 'IN') + ->where('l11n/type/title', ['name1', 'name2', 'name3'], 'IN') ->limit(25) ->execute(); - /* - $items = ItemMapper::with('language', $response->getLanguage()) - ::with('type', 'backend_image', models: [Media::class]) // @todo: it would be nicer if I coult say files:type or files/type and remove the models parameter? - ::with('notes', models: null) - ::with('attributes', models: null) - ::with('title', ['name1', 'name2', 'name3'], comparison: 'in', models: [ItemL11nType::class]) // @todo: profile, why does this have almost no impact on the sql performance? - ::getAfterPivot(0, null, 25); - */ - $view->addData('items', $items); return $view; @@ -208,7 +192,14 @@ final class BackendController extends Controller $view->setTemplate('/Modules/ItemManagement/Theme/Backend/purchase-item-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004806001, $request, $response)); - $items = ItemMapper::with('language', $response->getLanguage())::getAfterPivot(0, null, 25); + $items = ItemMapper::getAll() + ->with('l11n') + ->with('l11n/type') + ->where('l11n/language', $response->getLanguage()) + ->where('l11n/type/title', ['name1', 'name2', 'name3'], 'IN') + ->limit(25) + ->execute(); + $view->addData('items', $items); return $view; @@ -324,25 +315,25 @@ final class BackendController extends Controller $view->setTemplate('/Modules/ItemManagement/Theme/Backend/sales-item-profile'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004805001, $request, $response)); - $item = ItemMapper::with('language', $response->getLanguage()) - ::with('files', limit: 5)::orderBy('createdAt', 'ASC') - ::with('notes', limit: 5)::orderBy('id', 'ASC') - ::get((int) $request->getData('id')); + $item = ItemMapper::get() + ->with('l11n') + ->with('l11n/type') + ->with('files') + ->with('notes') + ->where('id', (int) $request->getData('id')) + ->where('l11n/language', $response->getLanguage()) + ->where('l11n/type/title', ['name1', 'name2', 'name3'], 'IN') + ->limit(5, 'files')->sort('files/id', OrderType::DESC) // @todo: limit not working!!! + ->limit(5, 'notes')->sort('notes/id', OrderType::DESC) + ->execute(); + $view->addData('item', $item); $settings = $this->app->appSettings->get(null, [ SettingsEnum::DEFAULT_LOCALIZATION, ]); - $view->setData('defaultlocalization', LocalizationMapper::get()->where('id', (int) $settings['id']))->execute(); - - $itemL11n = ItemL11nMapper::with('language', $response->getLanguage()) - ::with('item', $item->getId())::getAll(); - $view->addData('itemL11n', $itemL11n); - - $itemAttribute = ItemAttributeMapper::with('language', $response->getLanguage()) - ::with('item', $item->getId())::getAll(); - $view->addData('itemAttribute', $itemAttribute); + $view->setData('defaultlocalization', LocalizationMapper::get()->where('id', (int) $settings->getId())->execute()); // stats if ($this->app->moduleManager->isActive('Billing')) { @@ -350,9 +341,14 @@ final class BackendController extends Controller $mtd = SalesBillMapper::getSalesByItemId($item->getId(), new SmartDateTime('Y-m-01'), new SmartDateTime('now')); $avg = SalesBillMapper::getAvgSalesPriceByItemId($item->getId(), (new SmartDateTime('now'))->smartModify(-1), new SmartDateTime('now')); $lastOrder = SalesBillMapper::getLastOrderDateByItemId($item->getId()); - // @todo: why is the conditional array necessary, shouldn't the mapper realize when it mustn't use the conditional (when the field doesn't exist in the mapper) - $newestInvoices = SalesBillMapper::with('language', $response->getLanguage(), [BillTypeL11n::class])::getNewestItemInvoices($item->getId(), 5); - $topCustomers = SalesBillMapper::getItemTopCustomers($item->getId(), new SmartDateTime('Y-01-01'), new SmartDateTime('now'), 5); + $newestInvoices = SalesBillMapper::getAll() + ->with('type') + ->where('type/transferType', BillTransferType::SALES) + ->sort('id', OrderType::DESC) + ->limit(5) + ->execute(); + + $topCustomers = []; $allInvoices = SalesBillMapper::getItemBills($item->getId(), new SmartDateTime('Y-01-01'), new SmartDateTime('now')); $regionSales = SalesBillMapper::getItemRegionSales($item->getId(), new SmartDateTime('Y-01-01'), new SmartDateTime('now')); $countrySales = SalesBillMapper::getItemCountrySales($item->getId(), new SmartDateTime('Y-01-01'), new SmartDateTime('now'), 5); diff --git a/Models/Item.php b/Models/Item.php index 848d56e..c555026 100755 --- a/Models/Item.php +++ b/Models/Item.php @@ -80,7 +80,7 @@ class Item /** * Attributes. * - * @var int[]|ItemAttribute[] + * @var ItemAttribute[] * @since 1.0.0 */ private array $attributes = []; @@ -142,13 +142,13 @@ class Item /** * Get l11n * - * @param string $type Localization type + * @param null|string $type Localization type * * @return ItemL11n * * @since 1.0.0 */ - public function getL11n(string $type) : ItemL11n + public function getL11n(string $type = null) : ItemL11n { foreach ($this->l11n as $l11n) { if ($l11n->type->title === $type) { @@ -159,6 +159,18 @@ class Item return new NullItemL11n(); } + /** + * Get localizations + * + * @return ItemL11n[] + * + * @since 1.0.0 + */ + public function getL11ns() : array + { + return $this->l11n; + } + /** * Get status. * @@ -216,7 +228,7 @@ class Item /** * Get attributes * - * @return int[]|ItemAttribute[] + * @return ItemAttribute[] * * @since 1.0.0 */ diff --git a/Models/ItemAttributeMapper.php b/Models/ItemAttributeMapper.php index 033dc86..7bd19a0 100755 --- a/Models/ItemAttributeMapper.php +++ b/Models/ItemAttributeMapper.php @@ -47,12 +47,12 @@ final class ItemAttributeMapper extends DataMapperFactory */ public const OWNS_ONE = [ 'type' => [ - 'mapper' => ItemAttributeTypeMapper::class, - 'external' => 'itemmgmt_item_attr_type', + 'mapper' => ItemAttributeTypeMapper::class, + 'external' => 'itemmgmt_item_attr_type', ], 'value' => [ - 'mapper' => ItemAttributeValueMapper::class, - 'external' => 'itemmgmt_item_attr_value', + 'mapper' => ItemAttributeValueMapper::class, + 'external' => 'itemmgmt_item_attr_value', ], ]; diff --git a/Models/ItemAttributeTypeL11n.php b/Models/ItemAttributeTypeL11n.php index f980c53..3a64e04 100755 --- a/Models/ItemAttributeTypeL11n.php +++ b/Models/ItemAttributeTypeL11n.php @@ -38,10 +38,10 @@ class ItemAttributeTypeL11n implements \JsonSerializable, ArrayableInterface /** * Item ID. * - * @var ItemAttributeType + * @var int * @since 1.0.0 */ - public ItemAttributeType $type; + public int $type; /** * Language. @@ -62,15 +62,15 @@ class ItemAttributeTypeL11n implements \JsonSerializable, ArrayableInterface /** * Constructor. * - * @param ItemAttributeType $type Attribute type - * @param string $title Localized title - * @param string $language Language + * @param int $type Attribute type + * @param string $title Localized title + * @param string $language Language * * @since 1.0.0 */ - public function __construct(ItemAttributeType $type = null, string $title = '', string $language = ISO639x1Enum::_EN) + public function __construct(int $type = 0, string $title = '', string $language = ISO639x1Enum::_EN) { - $this->type = $type ?? new ItemAttributeType();; + $this->type = $type; $this->title = $title; $this->language = $language; } diff --git a/Models/ItemAttributeTypeL11nMapper.php b/Models/ItemAttributeTypeL11nMapper.php index d9e887a..56deded 100755 --- a/Models/ItemAttributeTypeL11nMapper.php +++ b/Models/ItemAttributeTypeL11nMapper.php @@ -33,10 +33,10 @@ final class ItemAttributeTypeL11nMapper extends DataMapperFactory * @since 1.0.0 */ public const COLUMNS = [ - 'itemmgmt_attr_type_l11n_id' => ['name' => 'itemmgmt_attr_type_l11n_id', 'type' => 'int', 'internal' => 'id'], - 'itemmgmt_attr_type_l11n_title' => ['name' => 'itemmgmt_attr_type_l11n_title', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true], - 'itemmgmt_attr_type_l11n_type' => ['name' => 'itemmgmt_attr_type_l11n_type', 'type' => 'int', 'internal' => 'type'], - 'itemmgmt_attr_type_l11n_lang' => ['name' => 'itemmgmt_attr_type_l11n_lang', 'type' => 'string', 'internal' => 'language'], + 'itemmgmt_attr_type_l11n_id' => ['name' => 'itemmgmt_attr_type_l11n_id', 'type' => 'int', 'internal' => 'id'], + 'itemmgmt_attr_type_l11n_title' => ['name' => 'itemmgmt_attr_type_l11n_title', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true], + 'itemmgmt_attr_type_l11n_type' => ['name' => 'itemmgmt_attr_type_l11n_type', 'type' => 'int', 'internal' => 'type'], + 'itemmgmt_attr_type_l11n_lang' => ['name' => 'itemmgmt_attr_type_l11n_lang', 'type' => 'string', 'internal' => 'language'], ]; /** diff --git a/Models/ItemAttributeTypeMapper.php b/Models/ItemAttributeTypeMapper.php index 2a3c3e5..6fd7bdb 100755 --- a/Models/ItemAttributeTypeMapper.php +++ b/Models/ItemAttributeTypeMapper.php @@ -33,12 +33,12 @@ final class ItemAttributeTypeMapper extends DataMapperFactory * @since 1.0.0 */ public const COLUMNS = [ - 'itemmgmt_attr_type_id' => ['name' => 'itemmgmt_attr_type_id', 'type' => 'int', 'internal' => 'id'], - 'itemmgmt_attr_type_name' => ['name' => 'itemmgmt_attr_type_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true], - '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_pattern' => ['name' => 'itemmgmt_attr_type_pattern', 'type' => 'string', 'internal' => 'validationPattern'], - 'itemmgmt_attr_type_required' => ['name' => 'itemmgmt_attr_type_required', 'type' => 'bool', 'internal' => 'isRequired'], + 'itemmgmt_attr_type_id' => ['name' => 'itemmgmt_attr_type_id', 'type' => 'int', 'internal' => 'id'], + 'itemmgmt_attr_type_name' => ['name' => 'itemmgmt_attr_type_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true], + '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_pattern' => ['name' => 'itemmgmt_attr_type_pattern', 'type' => 'string', 'internal' => 'validationPattern'], + 'itemmgmt_attr_type_required' => ['name' => 'itemmgmt_attr_type_required', 'type' => 'bool', 'internal' => 'isRequired'], ]; /** @@ -49,17 +49,17 @@ final class ItemAttributeTypeMapper extends DataMapperFactory */ public const HAS_MANY = [ 'l11n' => [ - 'mapper' => ItemAttributeTypeL11nMapper::class, - 'table' => 'itemmgmt_attr_type_l11n', - 'self' => 'itemmgmt_attr_type_l11n_type', - 'column' => 'title', - 'external' => null, + 'mapper' => ItemAttributeTypeL11nMapper::class, + 'table' => 'itemmgmt_attr_type_l11n', + 'self' => 'itemmgmt_attr_type_l11n_type', + 'column' => 'title', + 'external' => null, ], 'defaults' => [ - 'mapper' => ItemAttributeValueMapper::class, - 'table' => 'itemmgmt_item_attr_default', - 'self' => 'itemmgmt_item_attr_default_type', - 'external' => 'itemmgmt_item_attr_default_value' + 'mapper' => ItemAttributeValueMapper::class, + 'table' => 'itemmgmt_item_attr_default', + 'self' => 'itemmgmt_item_attr_default_type', + 'external' => 'itemmgmt_item_attr_default_value' ], ]; diff --git a/Models/ItemAttributeValueMapper.php b/Models/ItemAttributeValueMapper.php index 8bbde65..185bdfa 100755 --- a/Models/ItemAttributeValueMapper.php +++ b/Models/ItemAttributeValueMapper.php @@ -8,7 +8,7 @@ * @copyright Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 - * @link https: //orange-management.org + * @link https://orange-management.org */ declare(strict_types=1); @@ -21,7 +21,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; * * @package Modules\ItemManagement\Models * @license OMS License 1.0 - * @link https: //orange-management.org + * @link https://orange-management.org * @since 1.0.0 */ final class ItemAttributeValueMapper extends DataMapperFactory @@ -33,15 +33,15 @@ final class ItemAttributeValueMapper extends DataMapperFactory * @since 1.0.0 */ public const COLUMNS = [ - 'itemmgmt_attr_value_id' => ['name' => 'itemmgmt_attr_value_id', 'type' => 'int', 'internal' => 'id'], - 'itemmgmt_attr_value_default' => ['name' => 'itemmgmt_attr_value_default', 'type' => 'bool', 'internal' => 'isDefault'], - 'itemmgmt_attr_value_type' => ['name' => 'itemmgmt_attr_value_type', 'type' => 'int', 'internal' => 'type'], - 'itemmgmt_attr_value_valueStr' => ['name' => 'itemmgmt_attr_value_valueStr', 'type' => 'string', 'internal' => 'valueStr'], - 'itemmgmt_attr_value_valueInt' => ['name' => 'itemmgmt_attr_value_valueInt', 'type' => 'int', 'internal' => 'valueInt'], - 'itemmgmt_attr_value_valueDec' => ['name' => 'itemmgmt_attr_value_valueDec', 'type' => 'float', 'internal' => 'valueDec'], + 'itemmgmt_attr_value_id' => ['name' => 'itemmgmt_attr_value_id', 'type' => 'int', 'internal' => 'id'], + 'itemmgmt_attr_value_default' => ['name' => 'itemmgmt_attr_value_default', 'type' => 'bool', 'internal' => 'isDefault'], + 'itemmgmt_attr_value_type' => ['name' => 'itemmgmt_attr_value_type', 'type' => 'int', 'internal' => 'type'], + 'itemmgmt_attr_value_valueStr' => ['name' => 'itemmgmt_attr_value_valueStr', 'type' => 'string', 'internal' => 'valueStr'], + 'itemmgmt_attr_value_valueInt' => ['name' => 'itemmgmt_attr_value_valueInt', 'type' => 'int', 'internal' => 'valueInt'], + 'itemmgmt_attr_value_valueDec' => ['name' => 'itemmgmt_attr_value_valueDec', 'type' => 'float', 'internal' => 'valueDec'], 'itemmgmt_attr_value_valueDat' => ['name' => 'itemmgmt_attr_value_valueDat', 'type' => 'DateTime', 'internal' => 'valueDat'], - 'itemmgmt_attr_value_lang' => ['name' => 'itemmgmt_attr_value_lang', 'type' => 'string', 'internal' => 'language'], - 'itemmgmt_attr_value_country' => ['name' => 'itemmgmt_attr_value_country', 'type' => 'string', 'internal' => 'country'], + 'itemmgmt_attr_value_lang' => ['name' => 'itemmgmt_attr_value_lang', 'type' => 'string', 'internal' => 'language'], + 'itemmgmt_attr_value_country' => ['name' => 'itemmgmt_attr_value_country', 'type' => 'string', 'internal' => 'country'], ]; /** diff --git a/Models/ItemL11nMapper.php b/Models/ItemL11nMapper.php index 9c6d5c5..ebc013d 100755 --- a/Models/ItemL11nMapper.php +++ b/Models/ItemL11nMapper.php @@ -33,11 +33,11 @@ final class ItemL11nMapper extends DataMapperFactory * @since 1.0.0 */ public const COLUMNS = [ - 'itemmgmt_item_l11n_id' => ['name' => 'itemmgmt_item_l11n_id', 'type' => 'int', 'internal' => 'id'], - 'itemmgmt_item_l11n_description' => ['name' => 'itemmgmt_item_l11n_description', 'type' => 'string', 'internal' => 'description', 'autocomplete' => true], - 'itemmgmt_item_l11n_item' => ['name' => 'itemmgmt_item_l11n_item', 'type' => 'int', 'internal' => 'item'], - 'itemmgmt_item_l11n_lang' => ['name' => 'itemmgmt_item_l11n_lang', 'type' => 'string', 'internal' => 'language'], - 'itemmgmt_item_l11n_typeref' => ['name' => 'itemmgmt_item_l11n_typeref', 'type' => 'int', 'internal' => 'type'], + 'itemmgmt_item_l11n_id' => ['name' => 'itemmgmt_item_l11n_id', 'type' => 'int', 'internal' => 'id'], + 'itemmgmt_item_l11n_description' => ['name' => 'itemmgmt_item_l11n_description', 'type' => 'string', 'internal' => 'description', 'autocomplete' => true], + 'itemmgmt_item_l11n_item' => ['name' => 'itemmgmt_item_l11n_item', 'type' => 'int', 'internal' => 'item'], + 'itemmgmt_item_l11n_lang' => ['name' => 'itemmgmt_item_l11n_lang', 'type' => 'string', 'internal' => 'language'], + 'itemmgmt_item_l11n_typeref' => ['name' => 'itemmgmt_item_l11n_typeref', 'type' => 'int', 'internal' => 'type'], ]; /** diff --git a/Models/ItemL11nTypeMapper.php b/Models/ItemL11nTypeMapper.php index 0da0cdd..a13f53f 100755 --- a/Models/ItemL11nTypeMapper.php +++ b/Models/ItemL11nTypeMapper.php @@ -33,8 +33,8 @@ final class ItemL11nTypeMapper extends DataMapperFactory * @since 1.0.0 */ public const COLUMNS = [ - 'itemmgmt_item_l11n_type_id' => ['name' => 'itemmgmt_item_l11n_type_id', 'type' => 'int', 'internal' => 'id'], - 'itemmgmt_item_l11n_type_title' => ['name' => 'itemmgmt_item_l11n_type_title', 'type' => 'string', 'internal' => 'title'], + 'itemmgmt_item_l11n_type_id' => ['name' => 'itemmgmt_item_l11n_type_id', 'type' => 'int', 'internal' => 'id'], + 'itemmgmt_item_l11n_type_title' => ['name' => 'itemmgmt_item_l11n_type_title', 'type' => 'string', 'internal' => 'title'], ]; /** diff --git a/Models/ItemMapper.php b/Models/ItemMapper.php index 489cace..581b7e6 100755 --- a/Models/ItemMapper.php +++ b/Models/ItemMapper.php @@ -35,16 +35,12 @@ final class ItemMapper extends DataMapperFactory * @since 1.0.0 */ public const COLUMNS = [ - '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_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'], - ]; - - protected static array $conditionals = [ - + '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_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'], ]; /** @@ -77,22 +73,22 @@ final class ItemMapper extends DataMapperFactory 'self' => 'itemmgmt_item_media_item', ], 'notes' => [ - 'mapper' => EditorDocMapper::class, /* mapper of the related object */ + 'mapper' => EditorDocMapper::class, /* mapper of the related object */ 'table' => 'itemmgmt_item_note', /* table of the related object, null if no relation table is used (many->1) */ 'external' => 'itemmgmt_item_note_doc', 'self' => 'itemmgmt_item_note_item', ], 'l11n' => [ - 'mapper' => ItemL11nMapper::class, - 'table' => 'itemmgmt_item_l11n', - 'self' => 'itemmgmt_item_l11n_item', - 'external' => null, + 'mapper' => ItemL11nMapper::class, + 'table' => 'itemmgmt_item_l11n', + 'self' => 'itemmgmt_item_l11n_item', + 'external' => null, ], 'attributes' => [ - 'mapper' => ItemAttributeMapper::class, - 'table' => 'itemmgmt_item_attr', - 'self' => 'itemmgmt_item_attr_item', - 'external' => null, + 'mapper' => ItemAttributeMapper::class, + 'table' => 'itemmgmt_item_attr', + 'self' => 'itemmgmt_item_attr_item', + 'external' => null, ], ]; } diff --git a/Theme/Backend/sales-item-profile.tpl.php b/Theme/Backend/sales-item-profile.tpl.php index af53c29..6d0f8ec 100755 --- a/Theme/Backend/sales-item-profile.tpl.php +++ b/Theme/Backend/sales-item-profile.tpl.php @@ -21,11 +21,8 @@ use phpOMS\Uri\UriFactory; /** @var \Modules\ItemManagement\Models\Item $item */ $item = $this->getData('item'); -/** @var \Modules\ItemManagement\Models\ItemL11n $itemL11n */ -$itemL11n = $this->getData('itemL11n'); - -/** @var \Modules\ItemManagement\Models\ItemAttribute $itemAttribute */ -$itemAttribute = $this->getData('itemAttribute'); +$itemL11n = $item->getL11ns(); +$itemAttribute = $item->getAttributes(); $notes = $item->getNotes(); $files = $item->getFiles(); @@ -90,7 +87,7 @@ echo $this->getData('nav')->render(); - getFileByType('backend_image'); + getFileByType(0); if (!($image instanceof NullMedia)) : ?>
@@ -217,14 +214,16 @@ echo $this->getData('nav')->render(); getHtml('Net'); ?> getHtml('Date'); ?> - getId()); ?> printHtml($invoice->getNumber()); ?> printHtml($invoice->type->getL11n()); ?> printHtml($invoice->billTo); ?> - printHtml($invoice->net->getCurrency()); ?> + printHtml($invoice->netSales->getCurrency()); ?> printHtml($invoice->createdAt->format('Y-m-d')); ?> @@ -244,7 +243,7 @@ echo $this->getData('nav')->render(); getHtml('Country'); ?> getHtml('Net'); ?> - getId()); ?> @@ -922,14 +921,16 @@ echo $this->getData('nav')->render(); getHtml('Net'); ?> getHtml('Date'); ?> - getId()); ?> getNumber(); ?> type->getL11n(); ?> billTo; ?> - net->getCurrency(); ?> + netSales->getCurrency(); ?> createdAt->format('Y-m-d'); ?>