custom/plugins/cnh-product-exporter-main/src/CnhProductExporter.php line 20

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace CnhProductExporter;
  4. use Shopware\Core\Checkout\Order\Aggregate\OrderLineItem\OrderLineItemDefinition;
  5. use Shopware\Core\Checkout\Order\OrderDefinition;
  6. use Shopware\Core\Content\Category\CategoryDefinition;
  7. use Shopware\Core\Content\Product\ProductDefinition;
  8. use Shopware\Core\Content\Rule\RuleDefinition;
  9. use Shopware\Core\Framework\Context;
  10. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
  11. use Shopware\Core\Framework\Plugin;
  12. use Shopware\Core\Framework\Plugin\Context\InstallContext;
  13. use Shopware\Core\Framework\Plugin\Context\UpdateContext;
  14. use Shopware\Core\System\CustomField\CustomFieldTypes;
  15. use Shopware\Core\System\Language\LanguageDefinition;
  16. class CnhProductExporter extends Plugin
  17. {
  18.     const CF_CNH_API_BASE "cnh_api";
  19.     const CATEGORY_CUSTOM_FIELD_SET_CNH_API self::CF_CNH_API_BASE "_category";
  20.     const CATEGORY_CUSTOM_FIELD_SET_CNH_API_ID self::CATEGORY_CUSTOM_FIELD_SET_CNH_API "_id";
  21.     const LANGUAGE_CUSTOM_FIELD_SET_CNH_API self::CF_CNH_API_BASE "_language";
  22.     const LANGUAGE_CUSTOM_FIELD_SET_CNH_API_ID self::LANGUAGE_CUSTOM_FIELD_SET_CNH_API "_id";
  23.     const PRODUCT_CUSTOM_FIELD_SET_CNH_API self::CF_CNH_API_BASE "_product";
  24.     const PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_CNH_INDUSTRIAL self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_cnh_industrial";
  25.     const PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_CASE_IH_FANSHOP self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_case_ih_fanshop";
  26.     const PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_STEYR_FANSHOP self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_steyr_fanshop";
  27.     const PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_CASE_FANSHOP self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_case_fanshop";
  28.     const PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_NEW_HOLLAND_STYLE self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_new_holland_style";
  29.     const PRODUCT_CUSTOM_FIELD_SET_GROUP_DFS self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_group_dfs";
  30.     const PRODUCT_CUSTOM_FIELD_SET_GROUP_DFS2 self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_group_dfs2";
  31.     const PRODUCT_CUSTOM_FIELD_SET_GROUP_DFS_INTERNATIONAL self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_group_dfs_international";
  32.     const PRODUCT_CUSTOM_FIELD_SET_GROUP_DIREX self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_group_direx";
  33.     const PRODUCT_CUSTOM_FIELD_SET_GROUP_DIREX_UK self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_group_direx_uk";
  34.     const PRODUCT_CUSTOM_FIELD_SET_GROUP_IMPORTER self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_group_importer";
  35.     const PRODUCT_CUSTOM_FIELD_SET_GROUP_INTERN self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_group_intern";
  36.     const PRODUCT_CUSTOM_FIELD_SET_GROUP_MITARBEITER self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_group_mitarbeiter";
  37.     const PRODUCT_CUSTOM_FIELD_SET_GROUP_PRIVATE_USER self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_group_private_user";
  38.     const PRODUCT_CUSTOM_FIELD_SET_GROUP_PRIVATE_FIRMA self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_group_private_firma";
  39.     const PRODUCT_CUSTOM_FIELD_SET_GROUP_INTERN_UK self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_group_intern_uk";
  40.     const PRODUCT_CUSTOM_FIELD_SET_GROUP_MITARBEITER_UK self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_group_mitarbeiter_uk";
  41.     const PRODUCT_CUSTOM_FIELD_SET_GROUP_B2C_UK self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_group_b2c_uk";
  42.     const PRODUCT_CUSTOM_FIELD_SET_COMING_SOON self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_coming_soon";
  43.     const PRODUCT_CUSTOM_FIELD_SET_EXPIRE self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_expire";
  44.     const PRODUCT_CUSTOM_FIELD_SET_PUBLISHED self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_published";
  45.     const PRODUCT_CUSTOM_FIELD_SET_PREORDER self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_preorder";
  46.     const PRODUCT_CUSTOM_FIELD_SET_VOUHCER self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_is_voucher";
  47.     const PRODUCT_CUSTOM_FIELD_SET_CNH_DISPLAY_BUY_BUTTON self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_display_buy_button";
  48.     const PRODUCT_CUSTOM_FIELD_SET_CNH_SUPPLIER_ORDER_QUANTITY self::PRODUCT_CUSTOM_FIELD_SET_CNH_API "_supplier_order_quantity";
  49.     const RULE_CUSTOM_FIELD_SET_CNH_API self::CF_CNH_API_BASE "_rule";
  50.     const RULE_CUSTOM_FIELD_SET_CNH_API_ACL_ID self::RULE_CUSTOM_FIELD_SET_CNH_API "_rule_acl_id";
  51.     const ORDER_CUSTOM_FIELD_SET_CNH_API self::CF_CNH_API_BASE "_order";
  52.     const ORDER_CUSTOM_FIELD_SET_CNH_API_TARGET_CURRENCY "targetCurrency";
  53.     const ORDER_CUSTOM_FIELD_SET_CNH_API_CURRENCY_EXCHANGE_RATE "currencyFactor";
  54.     const ORDER_CUSTOM_FIELD_SET_CNH_API_LOCALE "locale";
  55.     const ORDER_CUSTOM_FIELD_SET_CNH_API_DEALER_INFO "dealerInfo";
  56.     const ORDER_CUSTOM_FIELD_SET_CNH_API_PROMO_NAME "_promo_name";
  57.     const ORDER_CUSTOM_FIELD_SET_CNH_API_COST_CENTER_NUMBER "costCenterNumber";
  58.     const ORDER_CUSTOM_FIELD_SET_CNH_API_PO_NUMBER "poNumber";
  59.     const ORDER_CUSTOM_FIELD_SET_CNH_API_MANAGER_EMAIL "managerEmail";
  60.     const ORDER_LINE_CUSTOM_FIELD_SET_CNH_API self::CF_CNH_API_BASE "_order_line";
  61.     const ORDER_LINE_CUSTOM_FIELD_SET_CNH_API_PROMO_NAME self::CF_CNH_API_BASE "_promo_name";
  62.     const PRODUCT_STORE_FIELDS = [
  63.         self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_CNH_INDUSTRIAL,
  64.         self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_CASE_IH_FANSHOP,
  65.         self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_STEYR_FANSHOP,
  66.         self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_CASE_FANSHOP,
  67.         self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_NEW_HOLLAND_STYLE
  68.     ];
  69.     const CUSTOMER_GROUPS_ALLOWED = [
  70.         self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DFS,
  71.         self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DFS2,
  72.         self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DFS_INTERNATIONAL,
  73.         self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DIREX,
  74.         self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DIREX_UK,
  75.         self::PRODUCT_CUSTOM_FIELD_SET_GROUP_IMPORTER,
  76.         self::PRODUCT_CUSTOM_FIELD_SET_GROUP_INTERN,
  77.         self::PRODUCT_CUSTOM_FIELD_SET_GROUP_MITARBEITER,
  78.         self::PRODUCT_CUSTOM_FIELD_SET_GROUP_PRIVATE_USER,
  79.         self::PRODUCT_CUSTOM_FIELD_SET_GROUP_PRIVATE_FIRMA,
  80.         self::PRODUCT_CUSTOM_FIELD_SET_GROUP_MITARBEITER_UK,
  81.         self::PRODUCT_CUSTOM_FIELD_SET_GROUP_INTERN_UK,
  82.         self::PRODUCT_CUSTOM_FIELD_SET_GROUP_B2C_UK
  83.     ];
  84.     public function install(InstallContext $installContext): void
  85.     {
  86.         parent::install($installContext);
  87.         $this->registerCustomFields($installContext->getContext());
  88.     }
  89.     public function update(UpdateContext $updateContext): void
  90.     {
  91.         parent::update($updateContext);
  92.         $this->registerCustomFields($updateContext->getContext());
  93.     }
  94.     public function registerCustomFields(Context $context)
  95.     {
  96.         /** @var EntityRepository $customFieldSetRepository */
  97.         $customFieldSetRepository $this->container->get('custom_field_set.repository');
  98.         $customFields = [
  99.             $this->getCategoryCustomFields($context),
  100.             $this->getProductCustomFields($context),
  101.             $this->getLanguageCustomFields($context),
  102.             $this->getRuleCustomFields($context),
  103.             $this->getOrderCustomFields($context),
  104.             $this->getOrderLineCustomFields($context),
  105.         ];
  106.         $customFieldSetRepository->upsert($customFields$context);
  107.     }
  108.     private function getCategoryCustomFields(Context $context): array
  109.     {
  110.         return [
  111.             'id' => md5(self::CATEGORY_CUSTOM_FIELD_SET_CNH_API),
  112.             'name' => self::CATEGORY_CUSTOM_FIELD_SET_CNH_API,
  113.             'postion' => 21,
  114.             'config' => [
  115.                 'label' => [
  116.                     'de-DE' => 'CNH API mapping für Kategorien',
  117.                     'en-GB' => 'CNH API map for categories'
  118.                 ]
  119.             ],
  120.             'relations' => [
  121.                 [
  122.                     'id' => md5(self::CATEGORY_CUSTOM_FIELD_SET_CNH_API CategoryDefinition::ENTITY_NAME),
  123.                     'entityName' => CategoryDefinition::ENTITY_NAME
  124.                 ],
  125.             ],
  126.             'customFields' => [
  127.                 [
  128.                     'id' => md5(self::CATEGORY_CUSTOM_FIELD_SET_CNH_API_ID),
  129.                     'name' => self::CATEGORY_CUSTOM_FIELD_SET_CNH_API_ID,
  130.                     'type' => CustomFieldTypes::TEXT,
  131.                     'config' => [
  132.                         'customFieldType' => CustomFieldTypes::TEXT,
  133.                         'customFieldPosition' => 0,
  134.                         'componentName' => 'sw-text-field',
  135.                         'label' => [
  136.                             'de-DE' => 'CNH ID',
  137.                             'en-GB' => 'CNH ID'
  138.                         ],
  139.                         'placeholder' => [
  140.                             'de-DE' => 'ID bei CNH für diese Kategorie',
  141.                             'en-GB' => 'CNH id for this category'
  142.                         ]
  143.                     ]
  144.                 ]
  145.             ]
  146.         ];
  147.     }
  148.     private function getProductCustomFields(Context $context): array
  149.     {
  150.         return [
  151.             'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_CNH_API),
  152.             'name' => self::PRODUCT_CUSTOM_FIELD_SET_CNH_API,
  153.             'postion' => 0,
  154.             'config' => [
  155.                 'label' => [
  156.                     'de-DE' => 'CNH API mapping für Produkten',
  157.                     'en-GB' => 'CNH API map for products'
  158.                 ]
  159.             ],
  160.             'relations' => [
  161.                 [
  162.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_CNH_API ProductDefinition::ENTITY_NAME),
  163.                     'entityName' => ProductDefinition::ENTITY_NAME
  164.                 ],
  165.             ],
  166.             'customFields' => [
  167.                 [
  168.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_CNH_DISPLAY_BUY_BUTTON),
  169.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_CNH_DISPLAY_BUY_BUTTON,
  170.                     'type' => CustomFieldTypes::CHECKBOX,
  171.                     'config' => [
  172.                         'customFieldType' => CustomFieldTypes::CHECKBOX,
  173.                         'customFieldPosition' => 0,
  174.                         'label' => [
  175.                             'de-DE' => 'Kauf Knopf anzeigen',
  176.                             'en-GB' => 'Display Buy Button'
  177.                         ]
  178.                     ]
  179.                 ],
  180.                 [
  181.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_CNH_INDUSTRIAL),
  182.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_CNH_INDUSTRIAL,
  183.                     'type' => CustomFieldTypes::BOOL,
  184.                     'config' => [
  185.                         'customFieldType' => CustomFieldTypes::BOOL,
  186.                         'customFieldPosition' => 1,
  187.                         'label' => [
  188.                             'de-DE' => 'CNH Industrial Store',
  189.                             'en-GB' => 'CNH Industrial Store'
  190.                         ]
  191.                     ]
  192.                 ],
  193.                 [
  194.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_CASE_IH_FANSHOP),
  195.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_CASE_IH_FANSHOP,
  196.                     'type' => CustomFieldTypes::BOOL,
  197.                     'config' => [
  198.                         'customFieldType' => CustomFieldTypes::BOOL,
  199.                         'customFieldPosition' => 2,
  200.                         'label' => [
  201.                             'de-DE' => 'Case IH Fanshop Store',
  202.                             'en-GB' => 'Case IH Fanshop Store'
  203.                         ]
  204.                     ]
  205.                 ],
  206.                 [
  207.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_STEYR_FANSHOP),
  208.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_STEYR_FANSHOP,
  209.                     'type' => CustomFieldTypes::BOOL,
  210.                     'config' => [
  211.                         'customFieldType' => CustomFieldTypes::BOOL,
  212.                         'customFieldPosition' => 3,
  213.                         'label' => [
  214.                             'de-DE' => 'Steyr Fanshop',
  215.                             'en-GB' => 'Steyr Fanshop'
  216.                         ]
  217.                     ]
  218.                 ],
  219.                 [
  220.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_CASE_FANSHOP),
  221.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_CASE_FANSHOP,
  222.                     'type' => CustomFieldTypes::BOOL,
  223.                     'config' => [
  224.                         'customFieldType' => CustomFieldTypes::BOOL,
  225.                         'customFieldPosition' => 4,
  226.                         'label' => [
  227.                             'de-DE' => 'Case Fanshop',
  228.                             'en-GB' => 'Case Fanshop'
  229.                         ]
  230.                     ]
  231.                 ],
  232.                 [
  233.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_NEW_HOLLAND_STYLE),
  234.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_CNH_API_STORE_NEW_HOLLAND_STYLE,
  235.                     'type' => CustomFieldTypes::BOOL,
  236.                     'config' => [
  237.                         'customFieldType' => CustomFieldTypes::BOOL,
  238.                         'customFieldPosition' => 5,
  239.                         'label' => [
  240.                             'de-DE' => 'New Holland Style Store',
  241.                             'en-GB' => 'New Holland Style Store'
  242.                         ]
  243.                     ]
  244.                 ],
  245.                 [
  246.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DFS),
  247.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DFS,
  248.                     'type' => CustomFieldTypes::BOOL,
  249.                     'config' => [
  250.                         'customFieldType' => CustomFieldTypes::BOOL,
  251.                         'customFieldPosition' => 5,
  252.                         'label' => [
  253.                             'de-DE' => 'DFS',
  254.                             'en-GB' => 'DFS'
  255.                         ]
  256.                     ]
  257.                 ],
  258.                 [
  259.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DFS2),
  260.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DFS2,
  261.                     'type' => CustomFieldTypes::BOOL,
  262.                     'config' => [
  263.                         'customFieldType' => CustomFieldTypes::BOOL,
  264.                         'customFieldPosition' => 5,
  265.                         'label' => [
  266.                             'de-DE' => 'DFS 2',
  267.                             'en-GB' => 'DFS 2'
  268.                         ]
  269.                     ]
  270.                 ],
  271.                 [
  272.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DFS_INTERNATIONAL),
  273.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DFS_INTERNATIONAL,
  274.                     'type' => CustomFieldTypes::BOOL,
  275.                     'config' => [
  276.                         'customFieldType' => CustomFieldTypes::BOOL,
  277.                         'customFieldPosition' => 6,
  278.                         'label' => [
  279.                             'de-DE' => 'DFS International',
  280.                             'en-GB' => 'DFS International'
  281.                         ]
  282.                     ]
  283.                 ],
  284.                 [
  285.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DIREX),
  286.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DIREX,
  287.                     'type' => CustomFieldTypes::BOOL,
  288.                     'config' => [
  289.                         'customFieldType' => CustomFieldTypes::BOOL,
  290.                         'customFieldPosition' => 7,
  291.                         'label' => [
  292.                             'de-DE' => 'Direx',
  293.                             'en-GB' => 'Direx'
  294.                         ]
  295.                     ]
  296.                 ],
  297.                 [
  298.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DIREX_UK),
  299.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_GROUP_DIREX_UK,
  300.                     'type' => CustomFieldTypes::BOOL,
  301.                     'config' => [
  302.                         'customFieldType' => CustomFieldTypes::BOOL,
  303.                         'customFieldPosition' => 7,
  304.                         'label' => [
  305.                             'de-DE' => 'Direx UK',
  306.                             'en-GB' => 'Direx UK'
  307.                         ]
  308.                     ]
  309.                 ],
  310.                 [
  311.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_GROUP_IMPORTER),
  312.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_GROUP_IMPORTER,
  313.                     'type' => CustomFieldTypes::BOOL,
  314.                     'config' => [
  315.                         'customFieldType' => CustomFieldTypes::BOOL,
  316.                         'customFieldPosition' => 8,
  317.                         'label' => [
  318.                             'de-DE' => 'Imperter',
  319.                             'en-GB' => 'Imperter'
  320.                         ]
  321.                     ]
  322.                 ],
  323.                 [
  324.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_GROUP_INTERN),
  325.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_GROUP_INTERN,
  326.                     'type' => CustomFieldTypes::BOOL,
  327.                     'config' => [
  328.                         'customFieldType' => CustomFieldTypes::BOOL,
  329.                         'customFieldPosition' => 9,
  330.                         'label' => [
  331.                             'de-DE' => 'Intern',
  332.                             'en-GB' => 'Intern'
  333.                         ]
  334.                     ]
  335.                 ],
  336.                 [
  337.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_GROUP_MITARBEITER),
  338.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_GROUP_MITARBEITER,
  339.                     'type' => CustomFieldTypes::BOOL,
  340.                     'config' => [
  341.                         'customFieldType' => CustomFieldTypes::BOOL,
  342.                         'customFieldPosition' => 10,
  343.                         'label' => [
  344.                             'de-DE' => 'Mitarbeiter',
  345.                             'en-GB' => 'Mitarbeiter'
  346.                         ]
  347.                     ]
  348.                 ],
  349.                 [
  350.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_GROUP_PRIVATE_FIRMA),
  351.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_GROUP_PRIVATE_FIRMA,
  352.                     'type' => CustomFieldTypes::BOOL,
  353.                     'config' => [
  354.                         'customFieldType' => CustomFieldTypes::BOOL,
  355.                         'customFieldPosition' => 11,
  356.                         'label' => [
  357.                             'de-DE' => 'Private Firma',
  358.                             'en-GB' => 'Private Firma'
  359.                         ]
  360.                     ]
  361.                 ],
  362.                 [
  363.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_GROUP_PRIVATE_USER),
  364.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_GROUP_PRIVATE_USER,
  365.                     'type' => CustomFieldTypes::BOOL,
  366.                     'config' => [
  367.                         'customFieldType' => CustomFieldTypes::BOOL,
  368.                         'customFieldPosition' => 12,
  369.                         'label' => [
  370.                             'de-DE' => 'Private User',
  371.                             'en-GB' => 'Private User'
  372.                         ]
  373.                     ]
  374.                 ],
  375.                 [
  376.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_GROUP_INTERN_UK),
  377.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_GROUP_INTERN_UK,
  378.                     'type' => CustomFieldTypes::BOOL,
  379.                     'config' => [
  380.                         'customFieldType' => CustomFieldTypes::BOOL,
  381.                         'customFieldPosition' => 13,
  382.                         'label' => [
  383.                             'de-DE' => 'Intern UK',
  384.                             'en-GB' => 'Intern UK'
  385.                         ]
  386.                     ]
  387.                 ],
  388.                 [
  389.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_GROUP_MITARBEITER_UK),
  390.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_GROUP_MITARBEITER_UK,
  391.                     'type' => CustomFieldTypes::BOOL,
  392.                     'config' => [
  393.                         'customFieldType' => CustomFieldTypes::BOOL,
  394.                         'customFieldPosition' => 14,
  395.                         'label' => [
  396.                             'de-DE' => 'Mitarbeiter UK',
  397.                             'en-GB' => 'Employee UK'
  398.                         ]
  399.                     ]
  400.                 ],
  401.                 [
  402.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_GROUP_B2C_UK),
  403.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_GROUP_B2C_UK,
  404.                     'type' => CustomFieldTypes::BOOL,
  405.                     'config' => [
  406.                         'customFieldType' => CustomFieldTypes::BOOL,
  407.                         'customFieldPosition' => 15,
  408.                         'label' => [
  409.                             'de-DE' => 'B2C UK',
  410.                             'en-GB' => 'B2C UK'
  411.                         ]
  412.                     ]
  413.                 ],
  414.                 [
  415.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_COMING_SOON),
  416.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_COMING_SOON,
  417.                     'type' => CustomFieldTypes::BOOL,
  418.                     'config' => [
  419.                         'customFieldType' => CustomFieldTypes::BOOL,
  420.                         'customFieldPosition' => 16,
  421.                         'label' => [
  422.                             'de-DE' => 'Coming Soon',
  423.                             'en-GB' => 'Coming Soon'
  424.                         ]
  425.                     ]
  426.                 ],
  427.                 [
  428.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_EXPIRE),
  429.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_EXPIRE,
  430.                     'type' => CustomFieldTypes::BOOL,
  431.                     'config' => [
  432.                         'customFieldType' => CustomFieldTypes::BOOL,
  433.                         'customFieldPosition' => 17,
  434.                         'label' => [
  435.                             'de-DE' => 'Expire',
  436.                             'en-GB' => 'Expire'
  437.                         ]
  438.                     ]
  439.                 ],
  440.                 [
  441.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_PUBLISHED),
  442.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_PUBLISHED,
  443.                     'type' => CustomFieldTypes::BOOL,
  444.                     'config' => [
  445.                         'customFieldType' => CustomFieldTypes::BOOL,
  446.                         'customFieldPosition' => 17,
  447.                         'label' => [
  448.                             'de-DE' => 'Published',
  449.                             'en-GB' => 'Published'
  450.                         ]
  451.                     ]
  452.                 ],
  453.                 [
  454.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_PREORDER),
  455.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_PREORDER,
  456.                     'type' => CustomFieldTypes::BOOL,
  457.                     'config' => [
  458.                         'customFieldType' => CustomFieldTypes::BOOL,
  459.                         'customFieldPosition' => 18,
  460.                         'label' => [
  461.                             'de-DE' => 'Preorder',
  462.                             'en-GB' => 'Preorder'
  463.                         ]
  464.                     ]
  465.                 ],
  466.                 [
  467.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_VOUHCER),
  468.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_VOUHCER,
  469.                     'type' => CustomFieldTypes::BOOL,
  470.                     'config' => [
  471.                         'customFieldType' => CustomFieldTypes::BOOL,
  472.                         'customFieldPosition' => 19,
  473.                         'label' => [
  474.                             'de-DE' => 'Ist voucher',
  475.                             'en-GB' => 'Is voucher'
  476.                         ]
  477.                     ]
  478.                 ],
  479.                 [
  480.                     'id' => md5(self::PRODUCT_CUSTOM_FIELD_SET_CNH_SUPPLIER_ORDER_QUANTITY),
  481.                     'name' => self::PRODUCT_CUSTOM_FIELD_SET_CNH_SUPPLIER_ORDER_QUANTITY,
  482.                     'type' => CustomFieldTypes::TEXT,
  483.                     'config' => [
  484.                         'customFieldType' => CustomFieldTypes::TEXT,
  485.                         'customFieldPosition' => 20,
  486.                         'label' => [
  487.                             'de-DE' => 'Lieferbestellmenge',
  488.                             'en-GB' => 'Supplier order quantity'
  489.                         ]
  490.                     ]
  491.                 ]
  492.             ]
  493.         ];
  494.     }
  495.     private function getLanguageCustomFields(Context $context): array
  496.     {
  497.         return [
  498.             'id' => md5(self::LANGUAGE_CUSTOM_FIELD_SET_CNH_API),
  499.             'name' => self::LANGUAGE_CUSTOM_FIELD_SET_CNH_API,
  500.             'postion' => 0,
  501.             'config' => [
  502.                 'label' => [
  503.                     'de-DE' => 'CNH API mapping für Sprachen',
  504.                     'en-GB' => 'CNH API map for Languages'
  505.                 ]
  506.             ],
  507.             'relations' => [
  508.                 [
  509.                     'id' => md5(self::LANGUAGE_CUSTOM_FIELD_SET_CNH_API LanguageDefinition::ENTITY_NAME),
  510.                     'entityName' => LanguageDefinition::ENTITY_NAME
  511.                 ],
  512.             ],
  513.             'customFields' => [
  514.                 [
  515.                     'id' => md5(self::LANGUAGE_CUSTOM_FIELD_SET_CNH_API_ID),
  516.                     'name' => self::LANGUAGE_CUSTOM_FIELD_SET_CNH_API_ID,
  517.                     'type' => CustomFieldTypes::TEXT,
  518.                     'config' => [
  519.                         'customFieldType' => CustomFieldTypes::TEXT,
  520.                         'customFieldPosition' => 0,
  521.                         'componentName' => 'sw-text-field',
  522.                         'label' => [
  523.                             'de-DE' => 'CNH ID',
  524.                             'en-GB' => 'CNH ID'
  525.                         ],
  526.                         'placeholder' => [
  527.                             'de-DE' => 'ID bei CNH für diese Sprache',
  528.                             'en-GB' => 'CNH id for this language'
  529.                         ]
  530.                     ]
  531.                 ]
  532.             ]
  533.         ];
  534.     }
  535.     private function getRuleCustomFields(Context $context): array
  536.     {
  537.         return [
  538.             'id' => md5(self::RULE_CUSTOM_FIELD_SET_CNH_API),
  539.             'name' => self::RULE_CUSTOM_FIELD_SET_CNH_API,
  540.             'postion' => 0,
  541.             'config' => [
  542.                 'label' => [
  543.                     'de-DE' => 'CNH API mapping für Regeln',
  544.                     'en-GB' => 'CNH API map for Rules'
  545.                 ]
  546.             ],
  547.             'relations' => [
  548.                 [
  549.                     'id' => md5(self::RULE_CUSTOM_FIELD_SET_CNH_API RuleDefinition::ENTITY_NAME),
  550.                     'entityName' => RuleDefinition::ENTITY_NAME
  551.                 ],
  552.             ],
  553.             'customFields' => [
  554.                 [
  555.                     'id' => md5(self::RULE_CUSTOM_FIELD_SET_CNH_API_ACL_ID),
  556.                     'name' => self::RULE_CUSTOM_FIELD_SET_CNH_API_ACL_ID,
  557.                     'type' => CustomFieldTypes::TEXT,
  558.                     'config' => [
  559.                         'customFieldType' => CustomFieldTypes::TEXT,
  560.                         'customFieldPosition' => 0,
  561.                         'componentName' => 'sw-text-field',
  562.                         'label' => [
  563.                             'de-DE' => 'IDs der Kundengruppen bei CNH',
  564.                             'en-GB' => 'IDs for the CNH customer group for this rule'
  565.                         ],
  566.                         'placeholder' => [
  567.                             'de-DE' => 'z.b.: 1|5',
  568.                             'en-GB' => 'e.g.: 1|5'
  569.                         ]
  570.                     ]
  571.                 ]
  572.             ]
  573.         ];
  574.     }
  575.     private function getOrderCustomFields(Context $context): array
  576.     {
  577.         return [
  578.             'id' => md5(self::ORDER_CUSTOM_FIELD_SET_CNH_API),
  579.             'name' => self::ORDER_CUSTOM_FIELD_SET_CNH_API,
  580.             'postion' => 0,
  581.             'config' => [
  582.                 'label' => [
  583.                     'de-DE' => 'CNH Bestellung Erweiterung set',
  584.                     'en-GB' => 'CNH data set for Order'
  585.                 ]
  586.             ],
  587.             'relations' => [
  588.                 [
  589.                     'id' => md5(self::ORDER_CUSTOM_FIELD_SET_CNH_API OrderDefinition::ENTITY_NAME),
  590.                     'entityName' => OrderDefinition::ENTITY_NAME
  591.                 ],
  592.             ],
  593.             'customFields' => [
  594.                 [
  595.                     'id' => md5(self::ORDER_CUSTOM_FIELD_SET_CNH_API_TARGET_CURRENCY),
  596.                     'name' => self::ORDER_CUSTOM_FIELD_SET_CNH_API_TARGET_CURRENCY,
  597.                     'type' => CustomFieldTypes::TEXT,
  598.                     'config' => [
  599.                         'customFieldType' => CustomFieldTypes::TEXT,
  600.                         'customFieldPosition' => 0,
  601.                         'componentName' => 'sw-text-field',
  602.                         'label' => [
  603.                             'de-DE' => 'CNH währung',
  604.                             'en-GB' => 'CNH currency'
  605.                         ]
  606.                     ]
  607.                 ],
  608.                 [
  609.                     'id' => md5(self::ORDER_CUSTOM_FIELD_SET_CNH_API_CURRENCY_EXCHANGE_RATE),
  610.                     'name' => self::ORDER_CUSTOM_FIELD_SET_CNH_API_CURRENCY_EXCHANGE_RATE,
  611.                     'type' => CustomFieldTypes::FLOAT,
  612.                     'config' => [
  613.                         'customFieldType' => CustomFieldTypes::FLOAT,
  614.                         'customFieldPosition' => 1,
  615.                         'componentName' => 'sw-text-field',
  616.                         'label' => [
  617.                             'de-DE' => 'CNH währung umwandlung factor',
  618.                             'en-GB' => 'CNH currency exchange rate'
  619.                         ]
  620.                     ]
  621.                 ],
  622.                 [
  623.                     'id' => md5(self::ORDER_CUSTOM_FIELD_SET_CNH_API_LOCALE),
  624.                     'name' => self::ORDER_CUSTOM_FIELD_SET_CNH_API_LOCALE,
  625.                     'type' => CustomFieldTypes::TEXT,
  626.                     'config' => [
  627.                         'customFieldType' => CustomFieldTypes::TEXT,
  628.                         'customFieldPosition' => 2,
  629.                         'componentName' => 'sw-text-field',
  630.                         'label' => [
  631.                             'de-DE' => 'CNH Bestellung sprache',
  632.                             'en-GB' => 'CNH order locale'
  633.                         ]
  634.                     ]
  635.                 ],
  636.                 [
  637.                     'id' => md5(self::ORDER_CUSTOM_FIELD_SET_CNH_API_DEALER_INFO),
  638.                     'name' => self::ORDER_CUSTOM_FIELD_SET_CNH_API_DEALER_INFO,
  639.                     'type' => CustomFieldTypes::TEXT,
  640.                     'config' => [
  641.                         'customFieldType' => CustomFieldTypes::TEXT,
  642.                         'customFieldPosition' => 4,
  643.                         'componentName' => 'sw-text-field',
  644.                         'label' => [
  645.                             'de-DE' => 'CNH Dealer Informationen',
  646.                             'en-GB' => 'CNH dealer info'
  647.                         ]
  648.                     ]
  649.                 ],
  650.                 [
  651.                     'id' => md5(self::ORDER_CUSTOM_FIELD_SET_CNH_API_PROMO_NAME),
  652.                     'name' => self::ORDER_CUSTOM_FIELD_SET_CNH_API_PROMO_NAME,
  653.                     'type' => CustomFieldTypes::TEXT,
  654.                     'config' => [
  655.                         'customFieldType' => CustomFieldTypes::TEXT,
  656.                         'customFieldPosition' => 5,
  657.                         'componentName' => 'sw-text-field',
  658.                         'label' => [
  659.                             'de-DE' => 'CNH Bestellung Promotion name',
  660.                             'en-GB' => 'CNH order promo name'
  661.                         ]
  662.                     ]
  663.                 ],
  664.                 [
  665.                     'id' => md5(self::ORDER_CUSTOM_FIELD_SET_CNH_API_PO_NUMBER),
  666.                     'name' => self::ORDER_CUSTOM_FIELD_SET_CNH_API_PO_NUMBER,
  667.                     'type' => CustomFieldTypes::TEXT,
  668.                     'config' => [
  669.                         'customFieldType' => CustomFieldTypes::TEXT,
  670.                         'customFieldPosition' => 5,
  671.                         'componentName' => 'sw-text-field',
  672.                         'label' => [
  673.                             'de-DE' => 'CNH Bestellung PO Nummer',
  674.                             'en-GB' => 'CNH order PO number'
  675.                         ]
  676.                     ]
  677.                 ],
  678.                 [
  679.                     'id' => md5(self::ORDER_CUSTOM_FIELD_SET_CNH_API_COST_CENTER_NUMBER),
  680.                     'name' => self::ORDER_CUSTOM_FIELD_SET_CNH_API_COST_CENTER_NUMBER,
  681.                     'type' => CustomFieldTypes::TEXT,
  682.                     'config' => [
  683.                         'customFieldType' => CustomFieldTypes::TEXT,
  684.                         'customFieldPosition' => 5,
  685.                         'componentName' => 'sw-text-field',
  686.                         'label' => [
  687.                             'de-DE' => 'CNH Bestellung Cost Center Number',
  688.                             'en-GB' => 'CNH order Cost Center Number'
  689.                         ]
  690.                     ]
  691.                 ],
  692.                 [
  693.                     'id' => md5(self::ORDER_CUSTOM_FIELD_SET_CNH_API_MANAGER_EMAIL),
  694.                     'name' => self::ORDER_CUSTOM_FIELD_SET_CNH_API_MANAGER_EMAIL,
  695.                     'type' => CustomFieldTypes::TEXT,
  696.                     'config' => [
  697.                         'customFieldType' => CustomFieldTypes::TEXT,
  698.                         'customFieldPosition' => 5,
  699.                         'componentName' => 'sw-text-field',
  700.                         'label' => [
  701.                             'de-DE' => 'CNH Bestellung Manager E-Mail',
  702.                             'en-GB' => 'CNH order manager e-mail'
  703.                         ]
  704.                     ]
  705.                 ],
  706.             ]
  707.         ];
  708.     }
  709.     private function getOrderLineCustomFields(Context $context): array
  710.     {
  711.         return [
  712.             'id' => md5(self::ORDER_LINE_CUSTOM_FIELD_SET_CNH_API),
  713.             'name' => self::ORDER_LINE_CUSTOM_FIELD_SET_CNH_API,
  714.             'postion' => 0,
  715.             'config' => [
  716.                 'label' => [
  717.                     'de-DE' => 'CNH Bestellung Positionen Erweiterung set',
  718.                     'en-GB' => 'CNH data set for Order line'
  719.                 ]
  720.             ],
  721.             'relations' => [
  722.                 [
  723.                     'id' => md5(self::ORDER_LINE_CUSTOM_FIELD_SET_CNH_API OrderLineItemDefinition::ENTITY_NAME),
  724.                     'entityName' => OrderLineItemDefinition::ENTITY_NAME
  725.                 ],
  726.             ],
  727.             'customFields' => [
  728.                 [
  729.                     'id' => md5(self::ORDER_LINE_CUSTOM_FIELD_SET_CNH_API_PROMO_NAME),
  730.                     'name' => self::ORDER_LINE_CUSTOM_FIELD_SET_CNH_API_PROMO_NAME,
  731.                     'type' => CustomFieldTypes::TEXT,
  732.                     'config' => [
  733.                         'customFieldType' => CustomFieldTypes::TEXT,
  734.                         'customFieldPosition' => 0,
  735.                         'componentName' => 'sw-text-field',
  736.                         'label' => [
  737.                             'de-DE' => 'CNH Promo für bestellzeile',
  738.                             'en-GB' => 'CNH promo name for order line'
  739.                         ]
  740.                     ]
  741.                 ]
  742.             ]
  743.         ];
  744.     }
  745. }