src/WellCommerce/Bundle/OrderBundle/EventListener/ShipmentSubscriber.php line 47

Open in your IDE?
  1. <?php
  2. declare(strict_types=0);
  3. /*
  4.  * WellCommerce Foundation
  5.  *
  6.  * This file is part of the WellCommerce package.
  7.  *
  8.  * (c) Adam Piotrowski <adam@wellcommerce.org>, Adrian Potepa <adrian@wellcommerce.org>
  9.  *
  10.  * For the full copyright and license information,
  11.  * please view the LICENSE file that was distributed with this source code.
  12.  */
  13. namespace WellCommerce\Bundle\OrderBundle\EventListener;
  14. use Psr\Container\ContainerInterface;
  15. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  16. use WellCommerce\Bundle\AppBundle\Entity\Shop;
  17. use WellCommerce\Bundle\CoreBundle\DependencyInjection\AbstractServiceSubscriber;
  18. use WellCommerce\Bundle\OrderBundle\Service\Shipment\Adapter\ElektronicznyNadawcaAdapter;
  19. use WellCommerce\Component\Form\Conditions\Equals;
  20. use WellCommerce\Component\Form\Event\FormEvent;
  21. /**
  22.  * Class ShipmentSubscriber
  23.  *
  24.  * @author  Adam Piotrowski <adam@wellcommerce.org>
  25.  */
  26. class ShipmentSubscriber extends AbstractServiceSubscriber implements EventSubscriberInterface
  27. {
  28.     protected ElektronicznyNadawcaAdapter $elektronicznyNadawcaAdapter;
  29.     public function __construct(ContainerInterface $locatorElektronicznyNadawcaAdapter $elektronicznyNadawcaAdapter)
  30.     {
  31.         parent::__construct($locator);
  32.         $this->elektronicznyNadawcaAdapter $elektronicznyNadawcaAdapter;
  33.     }
  34.     public static function getSubscribedEvents()
  35.     {
  36.         return [
  37.             'admin.shop.pre_form_init' => ['onShopFormAdminInit'],
  38.         ];
  39.     }
  40.     public function onShopFormAdminInit(FormEvent $event)
  41.     {
  42.         $resource $event->getResource();
  43.         if ($resource instanceof Shop) {
  44.             $form    $event->getForm();
  45.             $builder $event->getFormBuilder();
  46.             $fieldset $form->getChildren()->get('shipment_settings_data');
  47.             $ruchData $fieldset->addChild(
  48.                 $builder->getElement('nested_fieldset', [
  49.                     'name'  => 'ruch_data',
  50.                     'label' => 'shipment.fieldset.ruch',
  51.                 ])
  52.             );
  53.             $ruchData->addChild(
  54.                 $builder->getElement('text_field', [
  55.                     'name'  => 'ruchPartnerId',
  56.                     'label' => 'shipment.label.ruch.partner_id',
  57.                 ])
  58.             );
  59.             $ruchData->addChild(
  60.                 $builder->getElement('text_field', [
  61.                     'name'  => 'ruchPartnerKey',
  62.                     'label' => 'shipment.label.ruch.partner_key',
  63.                 ])
  64.             );
  65.             $ruchData->addChild(
  66.                 $builder->getElement('select', [
  67.                     'name'    => 'ruchWsdl',
  68.                     'label'   => 'shipment.label.ruch.wsdl',
  69.                     'options' => [
  70.                         'https://api.paczkawruchu.pl/WebServicePwRProd/WebServicePwR.asmx?wsdl' => 'https://api.paczkawruchu.pl/WebServicePwRProd/WebServicePwR.asmx?wsdl',
  71.                         'https://api-test.orlenpaczka.pl/WebServicePwR/WebServicePwR.asmx?wsdl' => 'https://api-test.orlenpaczka.pl/WebServicePwR/WebServicePwR.asmx?wsdl',
  72.                     ],
  73.                 ])
  74.             );
  75.             $fedexData $fieldset->addChild(
  76.                 $builder->getElement('nested_fieldset', [
  77.                     'name'  => 'fedex_data',
  78.                     'label' => 'shipment.fieldset.fedex',
  79.                 ])
  80.             );
  81.             $fedexData->addChild(
  82.                 $builder->getElement('text_field', [
  83.                     'name'  => 'fedexLogin',
  84.                     'label' => 'shipment.label.fedex.login',
  85.                 ])
  86.             );
  87.             $fedexData->addChild(
  88.                 $builder->getElement('text_field', [
  89.                     'name'  => 'fedexPass',
  90.                     'label' => 'shipment.label.fedex.pass',
  91.                 ])
  92.             );
  93.             $fedexData->addChild(
  94.                 $builder->getElement('text_field', [
  95.                     'name'  => 'fedexWsdl',
  96.                     'label' => 'shipment.label.fedex.wsdl',
  97.                 ])
  98.             );
  99.             $fedexData->addChild(
  100.                 $builder->getElement('text_field', [
  101.                     'name'  => 'fedexCourier',
  102.                     'label' => 'shipment.label.fedex.courier',
  103.                 ])
  104.             );
  105.             $fedexData->addChild(
  106.                 $builder->getElement('text_field', [
  107.                     'name'  => 'fedexAccount',
  108.                     'label' => 'shipment.label.fedex.account',
  109.                 ])
  110.             );
  111.             $fedexData->addChild(
  112.                 $builder->getElement('text_field', [
  113.                     'name'  => 'fedexContent',
  114.                     'label' => 'shipment.label.fedex.content',
  115.                 ])
  116.             );
  117.             $fedexData->addChild(
  118.                 $builder->getElement('text_field', [
  119.                     'name'   => 'fedexReturnValidity',
  120.                     'label'  => 'shipment.label.fedex.return_validity',
  121.                     'suffix' => 'dni',
  122.                 ])
  123.             );
  124.             $fedexData->addChild(
  125.                 $builder->getElement('text_field', [
  126.                     'name'  => 'fedexShipperName',
  127.                     'label' => 'shipment.label.fedex.name',
  128.                 ])
  129.             );
  130.             $fedexData->addChild(
  131.                 $builder->getElement('text_field', [
  132.                     'name'  => 'fedexShipperSurname',
  133.                     'label' => 'shipment.label.fedex.surname',
  134.                 ])
  135.             );
  136.             $fedexData->addChild(
  137.                 $builder->getElement('text_field', [
  138.                     'name'  => 'fedexShipperEmail',
  139.                     'label' => 'shipment.label.fedex.email',
  140.                 ])
  141.             );
  142.             $fedexData->addChild(
  143.                 $builder->getElement('text_field', [
  144.                     'name'  => 'fedexShipperPhone',
  145.                     'label' => 'shipment.label.fedex.phone',
  146.                 ])
  147.             );
  148.             $fedexData->addChild(
  149.                 $builder->getElement('checkbox', [
  150.                     'name'  => 'fedexEnablePostalCodeValidator',
  151.                     'label' => 'shipment.label.fedex.enable_postal_code_validator',
  152.                 ])
  153.             );
  154.             $dhlData $fieldset->addChild(
  155.                 $builder->getElement('nested_fieldset', [
  156.                     'name'  => 'dhl_data',
  157.                     'label' => 'shipment.fieldset.dhl',
  158.                 ])
  159.             );
  160.             $dhlData->addChild(
  161.                 $builder->getElement('text_field', [
  162.                     'name'  => 'dhlLogin',
  163.                     'label' => 'shipment.label.dhl.login',
  164.                 ])
  165.             );
  166.             $dhlData->addChild(
  167.                 $builder->getElement('text_field', [
  168.                     'name'  => 'dhlPass',
  169.                     'label' => 'shipment.label.dhl.pass',
  170.                 ])
  171.             );
  172.             $dhlData->addChild(
  173.                 $builder->getElement('text_field', [
  174.                     'name'  => 'parcelShopLogin',
  175.                     'label' => 'shipment.label.dhl.parcel_shop_login',
  176.                 ])
  177.             );
  178.             $dhlData->addChild(
  179.                 $builder->getElement('text_field', [
  180.                     'name'  => 'parcelShopPass',
  181.                     'label' => 'shipment.label.dhl.parcel_shop_pass',
  182.                 ])
  183.             );
  184.             $dhlData->addChild(
  185.                 $builder->getElement('text_field', [
  186.                     'name'  => 'dhlAccount',
  187.                     'label' => 'shipment.label.dhl.account',
  188.                 ])
  189.             );
  190.             $dhlData->addChild(
  191.                 $builder->getElement('checkbox', [
  192.                     'name'  => 'dhlSandbox',
  193.                     'label' => 'shipment.label.dhl.sandbox',
  194.                 ])
  195.             );
  196.             $dhlData->addChild(
  197.                 $builder->getElement('text_field', [
  198.                     'name'  => 'dhlPackageWidth',
  199.                     'label' => 'shipment.label.dhl.package_width',
  200.                 ])
  201.             );
  202.             $dhlData->addChild(
  203.                 $builder->getElement('text_field', [
  204.                     'name'  => 'dhlPackageHeight',
  205.                     'label' => 'shipment.label.dhl.package_height',
  206.                 ])
  207.             );
  208.             $dhlData->addChild(
  209.                 $builder->getElement('text_field', [
  210.                     'name'  => 'dhlPackageLength',
  211.                     'label' => 'shipment.label.dhl.package_length',
  212.                 ])
  213.             );
  214.             $dhlData->addChild(
  215.                 $builder->getElement('text_field', [
  216.                     'name'  => 'dhlPackageContents',
  217.                     'label' => 'shipment.label.dhl.package_contents',
  218.                 ])
  219.             );
  220.             $dpdData $fieldset->addChild(
  221.                 $builder->getElement('nested_fieldset', [
  222.                     'name'  => 'dpd_data',
  223.                     'label' => 'shipment.fieldset.dpd',
  224.                 ])
  225.             );
  226.             $dpdData->addChild(
  227.                 $builder->getElement('text_field', [
  228.                     'name'  => 'dpdLogin',
  229.                     'label' => 'shipment.label.dpd.login',
  230.                 ])
  231.             );
  232.             $dpdData->addChild(
  233.                 $builder->getElement('text_field', [
  234.                     'name'  => 'dpdPass',
  235.                     'label' => 'shipment.label.dpd.pass',
  236.                 ])
  237.             );
  238.             $dpdData->addChild(
  239.                 $builder->getElement('text_field', [
  240.                     'name'  => 'dpdMasterFid',
  241.                     'label' => 'shipment.label.dpd.master_fid',
  242.                 ])
  243.             );
  244.             $dpdData->addChild(
  245.                 $builder->getElement('text_field', [
  246.                     'name'  => 'dpdFid',
  247.                     'label' => 'shipment.label.dpd.fid',
  248.                 ])
  249.             );
  250.             $dpdData->addChild(
  251.                 $builder->getElement('checkbox', [
  252.                     'name'  => 'dpdTest',
  253.                     'label' => 'shipment.label.dpd.test',
  254.                 ])
  255.             );
  256.             $elektronicznyNadawcaData $fieldset->addChild(
  257.                 $builder->getElement('nested_fieldset', [
  258.                     'name'  => 'elektroniczny_nadawca_data',
  259.                     'label' => 'shipment.fieldset.elektroniczny_nadawca',
  260.                 ])
  261.             );
  262.             $elektronicznyNadawcaData->addChild(
  263.                 $builder->getElement('text_field', [
  264.                     'name'  => 'elektronicznyNadawcaUser',
  265.                     'label' => 'shipment.label.elektroniczny_nadawca.user',
  266.                 ])
  267.             );
  268.             $elektronicznyNadawcaData->addChild(
  269.                 $builder->getElement('password', [
  270.                     'name'  => 'elektronicznyNadawcaPass',
  271.                     'label' => 'shipment.label.elektroniczny_nadawca.pass',
  272.                 ])
  273.             );
  274.             $elektronicznyNadawcaData->addChild(
  275.                 $builder->getElement('text_field', [
  276.                     'name'  => 'elektronicznyNadawcaCodAccount',
  277.                     'label' => 'shipment.label.elektroniczny_nadawca.cod_account',
  278.                 ])
  279.             );
  280.             $elektronicznyNadawcaData->addChild(
  281.                 $builder->getElement('checkbox', [
  282.                     'name'  => 'elektronicznyNadawcaTest',
  283.                     'label' => 'shipment.label.elektroniczny_nadawca.test',
  284.                 ])
  285.             );
  286.             if ($this->elektronicznyNadawcaAdapter->isEnabled()) {
  287.                 $elektronicznyNadawcaData->addChild(
  288.                     $builder->getElement('select', [
  289.                         'name'    => 'elektronicznyNadawcaGabaryt',
  290.                         'label'   => 'Gabaryt',
  291.                         'options' => $this->elektronicznyNadawcaAdapter->getGabaryty(),
  292.                     ])
  293.                 );
  294.                 $urzedy $this->elektronicznyNadawcaAdapter->getUrzedyNadania($resource);
  295.                 if (count($urzedy)) {
  296.                     $elektronicznyNadawcaData->addChild(
  297.                         $builder->getElement('select', [
  298.                             'name'    => 'elektronicznyNadawcaUrzadNadania',
  299.                             'label'   => 'Urząd nadania',
  300.                             'options' => $urzedy,
  301.                         ])
  302.                     );
  303.                 }
  304.             }
  305.             $inpostData $fieldset->addChild(
  306.                 $builder->getElement('nested_fieldset', [
  307.                     'name'  => 'inpost_data',
  308.                     'label' => 'shipment.fieldset.inpost',
  309.                 ])
  310.             );
  311.             $inpostData->addChild(
  312.                 $builder->getElement('text_field', [
  313.                     'name'  => 'inpostUser',
  314.                     'label' => 'shipment.label.inpost.user',
  315.                 ])
  316.             );
  317.             $inpostData->addChild(
  318.                 $builder->getElement('password', [
  319.                     'name'  => 'inpostPass',
  320.                     'label' => 'shipment.label.inpost.pass',
  321.                 ])
  322.             );
  323.             $inpostData->addChild(
  324.                 $builder->getElement('select', [
  325.                     'name'    => 'inpostUrl',
  326.                     'label'   => 'shipment.label.inpost.url',
  327.                     'options' => [
  328.                         'https://sandbox-api.paczkomaty.pl' => 'sandbox-api.paczkomaty.pl',
  329.                         'https://api.paczkomaty.pl'         => 'api.paczkomaty.pl',
  330.                     ],
  331.                 ])
  332.             );
  333.             $inpostToken $inpostData->addChild(
  334.                 $builder->getElement('text_field', [
  335.                     'name'  => 'inpostToken',
  336.                     'label' => 'shipment.label.inpost.access_token',
  337.                 ])
  338.             );
  339.             $inpostData->addChild(
  340.                 $builder->getElement('text_field', [
  341.                     'name'  => 'inpostDropoffPoint',
  342.                     'label' => 'Paczkomat do zwrotu przesyłek',
  343.                 ])
  344.             );
  345.             $inpostData->addChild(
  346.                 $builder->getElement('select', [
  347.                     'name'         => 'inpostOrganization',
  348.                     'label'        => 'shipment.label.inpost.organization',
  349.                     'dependencies' => [
  350.                         $builder->getDependency('exchange_options', [
  351.                             'field'              => $inpostToken,
  352.                             'load_options_route' => 'admin.shipx.organizations',
  353.                             'form'               => $form,
  354.                         ]),
  355.                     ],
  356.                 ])
  357.             );
  358.             $inpostData->addChild(
  359.                 $builder->getElement('select', [
  360.                     'name'         => 'inpostService',
  361.                     'label'        => 'shipment.label.inpost.service',
  362.                     'dependencies' => [
  363.                         $builder->getDependency('exchange_options', [
  364.                             'field'              => $inpostToken,
  365.                             'load_options_route' => 'admin.shipx.services',
  366.                             'form'               => $form,
  367.                         ]),
  368.                     ],
  369.                 ])
  370.             );
  371.             $inpostData->addChild(
  372.                 $builder->getElement('select', [
  373.                     'name'    => 'inpostEnvironment',
  374.                     'label'   => 'shipment.label.inpost.environment',
  375.                     'options' => [
  376.                         'live' => 'live',
  377.                         'test' => 'test',
  378.                     ],
  379.                 ])
  380.             );
  381.             $inpostData->addChild(
  382.                 $builder->getElement('checkbox', [
  383.                     'name'    => 'inpostOrderComment',
  384.                     'label'   => 'Komentarz do zamówienia',
  385.                     'comment' => 'Zaznacz aby komentarz do zamówienia znalazł się w opisie przesyłki.',
  386.                 ])
  387.             );
  388.             $inpostData->addChild(
  389.                 $builder->getElement('checkbox', [
  390.                     'name'    => 'inpostBoxPacker',
  391.                     'label'   => 'Automatyczne obliczanie gabarytu',
  392.                     'comment' => 'Zaznacz aby system sam obliczył gabaryt przesyłki w oparciu o wymiary pojedynczych produktów',
  393.                 ])
  394.             );
  395.             $inpostData->addChild(
  396.                 $builder->getElement('tip', [
  397.                     'name' => 'inpostSenderTip',
  398.                     'tip'  => '<strong>OPCJONALNIE</strong> możesz podać inne dane nadawcy niż określone w managerze paczek. W przypadku braku podania tych danych zostaną zastosowane domyślne dla organizacji.',
  399.                 ])
  400.             );
  401.             $forceSender $inpostData->addChild(
  402.                 $builder->getElement('checkbox', [
  403.                     'name'  => 'inpostForceSender',
  404.                     'label' => 'Wymuś inne dane nadawcy',
  405.                 ])
  406.             );
  407.             $inpostData->addChild(
  408.                 $builder->getElement('text_field', [
  409.                     'name'         => 'inpostSenderCompanyName',
  410.                     'label'        => 'Firma nadawcy',
  411.                     'rules'        => [
  412.                         $builder->getRule('required'),
  413.                     ],
  414.                     'dependencies' => [
  415.                         $builder->getDependency('show', [
  416.                             'form'      => $form,
  417.                             'field'     => $forceSender,
  418.                             'condition' => new Equals(1),
  419.                         ]),
  420.                     ],
  421.                 ])
  422.             );
  423.             $inpostData->addChild(
  424.                 $builder->getElement('text_field', [
  425.                     'name'         => 'inpostSenderEmail',
  426.                     'label'        => 'E-mail nadawcy',
  427.                     'rules'        => [
  428.                         $builder->getRule('required'),
  429.                     ],
  430.                     'dependencies' => [
  431.                         $builder->getDependency('show', [
  432.                             'form'      => $form,
  433.                             'field'     => $forceSender,
  434.                             'condition' => new Equals(1),
  435.                         ]),
  436.                     ],
  437.                 ])
  438.             );
  439.             $inpostData->addChild(
  440.                 $builder->getElement('text_field', [
  441.                     'name'         => 'inpostSenderPhone',
  442.                     'label'        => 'Numer telefonu nadawcy',
  443.                     'rules'        => [
  444.                         $builder->getRule('required'),
  445.                     ],
  446.                     'dependencies' => [
  447.                         $builder->getDependency('show', [
  448.                             'form'      => $form,
  449.                             'field'     => $forceSender,
  450.                             'condition' => new Equals(1),
  451.                         ]),
  452.                     ],
  453.                 ])
  454.             );
  455.             $inpostData->addChild(
  456.                 $builder->getElement('text_field', [
  457.                     'name'         => 'inpostSenderAddress',
  458.                     'label'        => 'Adres nadawcy',
  459.                     'rules'        => [
  460.                         $builder->getRule('required'),
  461.                     ],
  462.                     'dependencies' => [
  463.                         $builder->getDependency('show', [
  464.                             'form'      => $form,
  465.                             'field'     => $forceSender,
  466.                             'condition' => new Equals(1),
  467.                         ]),
  468.                     ],
  469.                 ])
  470.             );
  471.             $inpostData->addChild(
  472.                 $builder->getElement('text_field', [
  473.                     'name'         => 'inpostSenderCity',
  474.                     'label'        => 'Miasto nadawcy',
  475.                     'rules'        => [
  476.                         $builder->getRule('required'),
  477.                     ],
  478.                     'dependencies' => [
  479.                         $builder->getDependency('show', [
  480.                             'form'      => $form,
  481.                             'field'     => $forceSender,
  482.                             'condition' => new Equals(1),
  483.                         ]),
  484.                     ],
  485.                 ])
  486.             );
  487.             $inpostData->addChild(
  488.                 $builder->getElement('text_field', [
  489.                     'name'         => 'inpostSenderPostalCode',
  490.                     'label'        => 'Kod pocztowy nadawcy',
  491.                     'rules'        => [
  492.                         $builder->getRule('required'),
  493.                     ],
  494.                     'dependencies' => [
  495.                         $builder->getDependency('show', [
  496.                             'form'      => $form,
  497.                             'field'     => $forceSender,
  498.                             'condition' => new Equals(1),
  499.                         ]),
  500.                     ],
  501.                 ])
  502.             );
  503.             $inpostData->addChild(
  504.                 $builder->getElement('text_field', [
  505.                     'name'         => 'inpostSenderCountryCode',
  506.                     'label'        => 'Kod kraju nadawcy',
  507.                     'rules'        => [
  508.                         $builder->getRule('required'),
  509.                     ],
  510.                     'dependencies' => [
  511.                         $builder->getDependency('show', [
  512.                             'form'      => $form,
  513.                             'field'     => $forceSender,
  514.                             'condition' => new Equals(1),
  515.                         ]),
  516.                     ],
  517.                 ])
  518.             );
  519.             $upsData $fieldset->addChild(
  520.                 $builder->getElement('nested_fieldset', [
  521.                     'name'  => 'ups_data',
  522.                     'label' => 'shipment.fieldset.ups',
  523.                 ])
  524.             );
  525.             $upsData->addChild(
  526.                 $builder->getElement('text_field', [
  527.                     'name'  => 'upsKey',
  528.                     'label' => 'shipment.label.ups.key',
  529.                 ])
  530.             );
  531.             $upsData->addChild(
  532.                 $builder->getElement('text_field', [
  533.                     'name'  => 'upsUser',
  534.                     'label' => 'shipment.label.ups.user',
  535.                 ])
  536.             );
  537.             $upsData->addChild(
  538.                 $builder->getElement('text_field', [
  539.                     'name'  => 'upsPass',
  540.                     'label' => 'shipment.label.ups.pass',
  541.                 ])
  542.             );
  543.             $upsData->addChild(
  544.                 $builder->getElement('text_field', [
  545.                     'name'  => 'upsAccount',
  546.                     'label' => 'shipment.label.ups.account',
  547.                 ])
  548.             );
  549.             $upsData->addChild(
  550.                 $builder->getElement('checkbox', [
  551.                     'name'  => 'upsEnablePostalCodeValidator',
  552.                     'label' => 'shipment.label.ups.enable_postal_code_validator',
  553.                 ])
  554.             );
  555.         }
  556.     }
  557. }