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.                         'https://api.orlenpaczka.pl/WebServicePwRProd/WebServicePwR.asmx?wsdl'  => 'https://api.orlenpaczka.pl/WebServicePwRProd/WebServicePwR.asmx?wsdl',
  73.                     ],
  74.                 ])
  75.             );
  76.             $fedexData $fieldset->addChild(
  77.                 $builder->getElement('nested_fieldset', [
  78.                     'name'  => 'fedex_data',
  79.                     'label' => 'shipment.fieldset.fedex',
  80.                 ])
  81.             );
  82.             $fedexData->addChild(
  83.                 $builder->getElement('text_field', [
  84.                     'name'  => 'fedexLogin',
  85.                     'label' => 'shipment.label.fedex.login',
  86.                 ])
  87.             );
  88.             $fedexData->addChild(
  89.                 $builder->getElement('text_field', [
  90.                     'name'  => 'fedexPass',
  91.                     'label' => 'shipment.label.fedex.pass',
  92.                 ])
  93.             );
  94.             $fedexData->addChild(
  95.                 $builder->getElement('text_field', [
  96.                     'name'  => 'fedexWsdl',
  97.                     'label' => 'shipment.label.fedex.wsdl',
  98.                 ])
  99.             );
  100.             $fedexData->addChild(
  101.                 $builder->getElement('text_field', [
  102.                     'name'  => 'fedexCourier',
  103.                     'label' => 'shipment.label.fedex.courier',
  104.                 ])
  105.             );
  106.             $fedexData->addChild(
  107.                 $builder->getElement('text_field', [
  108.                     'name'  => 'fedexAccount',
  109.                     'label' => 'shipment.label.fedex.account',
  110.                 ])
  111.             );
  112.             $fedexData->addChild(
  113.                 $builder->getElement('text_field', [
  114.                     'name'  => 'fedexContent',
  115.                     'label' => 'shipment.label.fedex.content',
  116.                 ])
  117.             );
  118.             $fedexData->addChild(
  119.                 $builder->getElement('text_field', [
  120.                     'name'   => 'fedexReturnValidity',
  121.                     'label'  => 'shipment.label.fedex.return_validity',
  122.                     'suffix' => 'dni',
  123.                 ])
  124.             );
  125.             $fedexData->addChild(
  126.                 $builder->getElement('text_field', [
  127.                     'name'  => 'fedexShipperName',
  128.                     'label' => 'shipment.label.fedex.name',
  129.                 ])
  130.             );
  131.             $fedexData->addChild(
  132.                 $builder->getElement('text_field', [
  133.                     'name'  => 'fedexShipperSurname',
  134.                     'label' => 'shipment.label.fedex.surname',
  135.                 ])
  136.             );
  137.             $fedexData->addChild(
  138.                 $builder->getElement('text_field', [
  139.                     'name'  => 'fedexShipperEmail',
  140.                     'label' => 'shipment.label.fedex.email',
  141.                 ])
  142.             );
  143.             $fedexData->addChild(
  144.                 $builder->getElement('text_field', [
  145.                     'name'  => 'fedexShipperPhone',
  146.                     'label' => 'shipment.label.fedex.phone',
  147.                 ])
  148.             );
  149.             $fedexData->addChild(
  150.                 $builder->getElement('checkbox', [
  151.                     'name'  => 'fedexEnablePostalCodeValidator',
  152.                     'label' => 'shipment.label.fedex.enable_postal_code_validator',
  153.                 ])
  154.             );
  155.             $dhlData $fieldset->addChild(
  156.                 $builder->getElement('nested_fieldset', [
  157.                     'name'  => 'dhl_data',
  158.                     'label' => 'shipment.fieldset.dhl',
  159.                 ])
  160.             );
  161.             $dhlData->addChild(
  162.                 $builder->getElement('text_field', [
  163.                     'name'  => 'dhlLogin',
  164.                     'label' => 'shipment.label.dhl.login',
  165.                 ])
  166.             );
  167.             $dhlData->addChild(
  168.                 $builder->getElement('text_field', [
  169.                     'name'  => 'dhlPass',
  170.                     'label' => 'shipment.label.dhl.pass',
  171.                 ])
  172.             );
  173.             $dhlData->addChild(
  174.                 $builder->getElement('text_field', [
  175.                     'name'  => 'parcelShopLogin',
  176.                     'label' => 'shipment.label.dhl.parcel_shop_login',
  177.                 ])
  178.             );
  179.             $dhlData->addChild(
  180.                 $builder->getElement('text_field', [
  181.                     'name'  => 'parcelShopPass',
  182.                     'label' => 'shipment.label.dhl.parcel_shop_pass',
  183.                 ])
  184.             );
  185.             $dhlData->addChild(
  186.                 $builder->getElement('text_field', [
  187.                     'name'  => 'dhlAccount',
  188.                     'label' => 'shipment.label.dhl.account',
  189.                 ])
  190.             );
  191.             $dhlData->addChild(
  192.                 $builder->getElement('checkbox', [
  193.                     'name'  => 'dhlSandbox',
  194.                     'label' => 'shipment.label.dhl.sandbox',
  195.                 ])
  196.             );
  197.             $dhlData->addChild(
  198.                 $builder->getElement('text_field', [
  199.                     'name'  => 'dhlPackageWidth',
  200.                     'label' => 'shipment.label.dhl.package_width',
  201.                 ])
  202.             );
  203.             $dhlData->addChild(
  204.                 $builder->getElement('text_field', [
  205.                     'name'  => 'dhlPackageHeight',
  206.                     'label' => 'shipment.label.dhl.package_height',
  207.                 ])
  208.             );
  209.             $dhlData->addChild(
  210.                 $builder->getElement('text_field', [
  211.                     'name'  => 'dhlPackageLength',
  212.                     'label' => 'shipment.label.dhl.package_length',
  213.                 ])
  214.             );
  215.             $dhlData->addChild(
  216.                 $builder->getElement('text_field', [
  217.                     'name'  => 'dhlPackageContents',
  218.                     'label' => 'shipment.label.dhl.package_contents',
  219.                 ])
  220.             );
  221.             $dpdData $fieldset->addChild(
  222.                 $builder->getElement('nested_fieldset', [
  223.                     'name'  => 'dpd_data',
  224.                     'label' => 'shipment.fieldset.dpd',
  225.                 ])
  226.             );
  227.             $dpdData->addChild(
  228.                 $builder->getElement('text_field', [
  229.                     'name'  => 'dpdLogin',
  230.                     'label' => 'shipment.label.dpd.login',
  231.                 ])
  232.             );
  233.             $dpdData->addChild(
  234.                 $builder->getElement('text_field', [
  235.                     'name'  => 'dpdPass',
  236.                     'label' => 'shipment.label.dpd.pass',
  237.                 ])
  238.             );
  239.             $dpdData->addChild(
  240.                 $builder->getElement('text_field', [
  241.                     'name'  => 'dpdMasterFid',
  242.                     'label' => 'shipment.label.dpd.master_fid',
  243.                 ])
  244.             );
  245.             $dpdData->addChild(
  246.                 $builder->getElement('text_field', [
  247.                     'name'  => 'dpdFid',
  248.                     'label' => 'shipment.label.dpd.fid',
  249.                 ])
  250.             );
  251.             $dpdData->addChild(
  252.                 $builder->getElement('checkbox', [
  253.                     'name'  => 'dpdTest',
  254.                     'label' => 'shipment.label.dpd.test',
  255.                 ])
  256.             );
  257.             $elektronicznyNadawcaData $fieldset->addChild(
  258.                 $builder->getElement('nested_fieldset', [
  259.                     'name'  => 'elektroniczny_nadawca_data',
  260.                     'label' => 'shipment.fieldset.elektroniczny_nadawca',
  261.                 ])
  262.             );
  263.             $elektronicznyNadawcaData->addChild(
  264.                 $builder->getElement('text_field', [
  265.                     'name'  => 'elektronicznyNadawcaUser',
  266.                     'label' => 'shipment.label.elektroniczny_nadawca.user',
  267.                 ])
  268.             );
  269.             $elektronicznyNadawcaData->addChild(
  270.                 $builder->getElement('password', [
  271.                     'name'  => 'elektronicznyNadawcaPass',
  272.                     'label' => 'shipment.label.elektroniczny_nadawca.pass',
  273.                 ])
  274.             );
  275.             $elektronicznyNadawcaData->addChild(
  276.                 $builder->getElement('text_field', [
  277.                     'name'  => 'elektronicznyNadawcaCodAccount',
  278.                     'label' => 'shipment.label.elektroniczny_nadawca.cod_account',
  279.                 ])
  280.             );
  281.             $elektronicznyNadawcaData->addChild(
  282.                 $builder->getElement('checkbox', [
  283.                     'name'  => 'elektronicznyNadawcaTest',
  284.                     'label' => 'shipment.label.elektroniczny_nadawca.test',
  285.                 ])
  286.             );
  287.             if ($this->elektronicznyNadawcaAdapter->isEnabled()) {
  288.                 $elektronicznyNadawcaData->addChild(
  289.                     $builder->getElement('select', [
  290.                         'name'    => 'elektronicznyNadawcaGabaryt',
  291.                         'label'   => 'Gabaryt',
  292.                         'options' => $this->elektronicznyNadawcaAdapter->getGabaryty(),
  293.                     ])
  294.                 );
  295.                 $urzedy $this->elektronicznyNadawcaAdapter->getUrzedyNadania($resource);
  296.                 if (count($urzedy)) {
  297.                     $elektronicznyNadawcaData->addChild(
  298.                         $builder->getElement('select', [
  299.                             'name'    => 'elektronicznyNadawcaUrzadNadania',
  300.                             'label'   => 'Urząd nadania',
  301.                             'options' => $urzedy,
  302.                         ])
  303.                     );
  304.                 }
  305.             }
  306.             $inpostData $fieldset->addChild(
  307.                 $builder->getElement('nested_fieldset', [
  308.                     'name'  => 'inpost_data',
  309.                     'label' => 'shipment.fieldset.inpost',
  310.                 ])
  311.             );
  312.             $inpostData->addChild(
  313.                 $builder->getElement('text_field', [
  314.                     'name'  => 'inpostUser',
  315.                     'label' => 'shipment.label.inpost.user',
  316.                 ])
  317.             );
  318.             $inpostData->addChild(
  319.                 $builder->getElement('password', [
  320.                     'name'  => 'inpostPass',
  321.                     'label' => 'shipment.label.inpost.pass',
  322.                 ])
  323.             );
  324.             $inpostData->addChild(
  325.                 $builder->getElement('select', [
  326.                     'name'    => 'inpostUrl',
  327.                     'label'   => 'shipment.label.inpost.url',
  328.                     'options' => [
  329.                         'https://sandbox-api.paczkomaty.pl' => 'sandbox-api.paczkomaty.pl',
  330.                         'https://api.paczkomaty.pl'         => 'api.paczkomaty.pl',
  331.                     ],
  332.                 ])
  333.             );
  334.             $inpostToken $inpostData->addChild(
  335.                 $builder->getElement('text_field', [
  336.                     'name'  => 'inpostToken',
  337.                     'label' => 'shipment.label.inpost.access_token',
  338.                 ])
  339.             );
  340.             $inpostData->addChild(
  341.                 $builder->getElement('text_field', [
  342.                     'name'  => 'inpostDropoffPoint',
  343.                     'label' => 'Paczkomat do zwrotu przesyłek',
  344.                 ])
  345.             );
  346.             $inpostData->addChild(
  347.                 $builder->getElement('select', [
  348.                     'name'         => 'inpostOrganization',
  349.                     'label'        => 'shipment.label.inpost.organization',
  350.                     'dependencies' => [
  351.                         $builder->getDependency('exchange_options', [
  352.                             'field'              => $inpostToken,
  353.                             'load_options_route' => 'admin.shipx.organizations',
  354.                             'form'               => $form,
  355.                         ]),
  356.                     ],
  357.                 ])
  358.             );
  359.             $inpostData->addChild(
  360.                 $builder->getElement('select', [
  361.                     'name'         => 'inpostService',
  362.                     'label'        => 'shipment.label.inpost.service',
  363.                     'dependencies' => [
  364.                         $builder->getDependency('exchange_options', [
  365.                             'field'              => $inpostToken,
  366.                             'load_options_route' => 'admin.shipx.services',
  367.                             'form'               => $form,
  368.                         ]),
  369.                     ],
  370.                 ])
  371.             );
  372.             $inpostData->addChild(
  373.                 $builder->getElement('select', [
  374.                     'name'    => 'inpostEnvironment',
  375.                     'label'   => 'shipment.label.inpost.environment',
  376.                     'options' => [
  377.                         'live' => 'live',
  378.                         'test' => 'test',
  379.                     ],
  380.                 ])
  381.             );
  382.             $inpostData->addChild(
  383.                 $builder->getElement('checkbox', [
  384.                     'name'    => 'inpostOrderComment',
  385.                     'label'   => 'Komentarz do zamówienia',
  386.                     'comment' => 'Zaznacz aby komentarz do zamówienia znalazł się w opisie przesyłki.',
  387.                 ])
  388.             );
  389.             $inpostData->addChild(
  390.                 $builder->getElement('checkbox', [
  391.                     'name'    => 'inpostBoxPacker',
  392.                     'label'   => 'Automatyczne obliczanie gabarytu',
  393.                     'comment' => 'Zaznacz aby system sam obliczył gabaryt przesyłki w oparciu o wymiary pojedynczych produktów',
  394.                 ])
  395.             );
  396.             $inpostData->addChild(
  397.                 $builder->getElement('tip', [
  398.                     'name' => 'inpostSenderTip',
  399.                     '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.',
  400.                 ])
  401.             );
  402.             $forceSender $inpostData->addChild(
  403.                 $builder->getElement('checkbox', [
  404.                     'name'  => 'inpostForceSender',
  405.                     'label' => 'Wymuś inne dane nadawcy',
  406.                 ])
  407.             );
  408.             $inpostData->addChild(
  409.                 $builder->getElement('text_field', [
  410.                     'name'         => 'inpostSenderCompanyName',
  411.                     'label'        => 'Firma nadawcy',
  412.                     'rules'        => [
  413.                         $builder->getRule('required'),
  414.                     ],
  415.                     'dependencies' => [
  416.                         $builder->getDependency('show', [
  417.                             'form'      => $form,
  418.                             'field'     => $forceSender,
  419.                             'condition' => new Equals(1),
  420.                         ]),
  421.                     ],
  422.                 ])
  423.             );
  424.             $inpostData->addChild(
  425.                 $builder->getElement('text_field', [
  426.                     'name'         => 'inpostSenderEmail',
  427.                     'label'        => 'E-mail nadawcy',
  428.                     'rules'        => [
  429.                         $builder->getRule('required'),
  430.                     ],
  431.                     'dependencies' => [
  432.                         $builder->getDependency('show', [
  433.                             'form'      => $form,
  434.                             'field'     => $forceSender,
  435.                             'condition' => new Equals(1),
  436.                         ]),
  437.                     ],
  438.                 ])
  439.             );
  440.             $inpostData->addChild(
  441.                 $builder->getElement('text_field', [
  442.                     'name'         => 'inpostSenderPhone',
  443.                     'label'        => 'Numer telefonu nadawcy',
  444.                     'rules'        => [
  445.                         $builder->getRule('required'),
  446.                     ],
  447.                     'dependencies' => [
  448.                         $builder->getDependency('show', [
  449.                             'form'      => $form,
  450.                             'field'     => $forceSender,
  451.                             'condition' => new Equals(1),
  452.                         ]),
  453.                     ],
  454.                 ])
  455.             );
  456.             $inpostData->addChild(
  457.                 $builder->getElement('text_field', [
  458.                     'name'         => 'inpostSenderAddress',
  459.                     'label'        => 'Adres nadawcy',
  460.                     'rules'        => [
  461.                         $builder->getRule('required'),
  462.                     ],
  463.                     'dependencies' => [
  464.                         $builder->getDependency('show', [
  465.                             'form'      => $form,
  466.                             'field'     => $forceSender,
  467.                             'condition' => new Equals(1),
  468.                         ]),
  469.                     ],
  470.                 ])
  471.             );
  472.             $inpostData->addChild(
  473.                 $builder->getElement('text_field', [
  474.                     'name'         => 'inpostSenderCity',
  475.                     'label'        => 'Miasto nadawcy',
  476.                     'rules'        => [
  477.                         $builder->getRule('required'),
  478.                     ],
  479.                     'dependencies' => [
  480.                         $builder->getDependency('show', [
  481.                             'form'      => $form,
  482.                             'field'     => $forceSender,
  483.                             'condition' => new Equals(1),
  484.                         ]),
  485.                     ],
  486.                 ])
  487.             );
  488.             $inpostData->addChild(
  489.                 $builder->getElement('text_field', [
  490.                     'name'         => 'inpostSenderPostalCode',
  491.                     'label'        => 'Kod pocztowy nadawcy',
  492.                     'rules'        => [
  493.                         $builder->getRule('required'),
  494.                     ],
  495.                     'dependencies' => [
  496.                         $builder->getDependency('show', [
  497.                             'form'      => $form,
  498.                             'field'     => $forceSender,
  499.                             'condition' => new Equals(1),
  500.                         ]),
  501.                     ],
  502.                 ])
  503.             );
  504.             $inpostData->addChild(
  505.                 $builder->getElement('text_field', [
  506.                     'name'         => 'inpostSenderCountryCode',
  507.                     'label'        => 'Kod kraju nadawcy',
  508.                     'rules'        => [
  509.                         $builder->getRule('required'),
  510.                     ],
  511.                     'dependencies' => [
  512.                         $builder->getDependency('show', [
  513.                             'form'      => $form,
  514.                             'field'     => $forceSender,
  515.                             'condition' => new Equals(1),
  516.                         ]),
  517.                     ],
  518.                 ])
  519.             );
  520.             $upsData $fieldset->addChild(
  521.                 $builder->getElement('nested_fieldset', [
  522.                     'name'  => 'ups_data',
  523.                     'label' => 'shipment.fieldset.ups',
  524.                 ])
  525.             );
  526.             $upsData->addChild(
  527.                 $builder->getElement('text_field', [
  528.                     'name'  => 'upsKey',
  529.                     'label' => 'shipment.label.ups.key',
  530.                 ])
  531.             );
  532.             $upsData->addChild(
  533.                 $builder->getElement('text_field', [
  534.                     'name'  => 'upsUser',
  535.                     'label' => 'shipment.label.ups.user',
  536.                 ])
  537.             );
  538.             $upsData->addChild(
  539.                 $builder->getElement('text_field', [
  540.                     'name'  => 'upsPass',
  541.                     'label' => 'shipment.label.ups.pass',
  542.                 ])
  543.             );
  544.             $upsData->addChild(
  545.                 $builder->getElement('text_field', [
  546.                     'name'  => 'upsAccount',
  547.                     'label' => 'shipment.label.ups.account',
  548.                 ])
  549.             );
  550.             $upsData->addChild(
  551.                 $builder->getElement('checkbox', [
  552.                     'name'  => 'upsEnablePostalCodeValidator',
  553.                     'label' => 'shipment.label.ups.enable_postal_code_validator',
  554.                 ])
  555.             );
  556.         }
  557.     }
  558. }