+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Resources/translations/messages.en.yml b/src/Resources/translations/messages.en.yml
index 30f1d0c..9c21f56 100644
--- a/src/Resources/translations/messages.en.yml
+++ b/src/Resources/translations/messages.en.yml
@@ -17,6 +17,13 @@ bitbag_sylius_inpost_plugin:
not_blank: This field cannot be blank
is_quick_return: Quick Return
quick_return: Quick Return
+ parcel_template:
+ label: Parcel template
+ select_template: Select template
+ template_a: Template A (8 x 38 x 64 cm)
+ template_b: Template B (19 x 38 x 64 cm)
+ template_c: Template C (41 x 38 x 64 cm)
+ select_action_performed: Parcel template has been changed
main_service:
inpost_locker_standard: Inpost Locker Standard
inpost_locker_pass_thru: Inpost Locker Pass Thru
diff --git a/src/Resources/views/ShippingExport/Grid/Field/ParcelTemplate/_inpost_template.html.twig b/src/Resources/views/ShippingExport/Grid/Field/ParcelTemplate/_inpost_template.html.twig
new file mode 100644
index 0000000..be535f4
--- /dev/null
+++ b/src/Resources/views/ShippingExport/Grid/Field/ParcelTemplate/_inpost_template.html.twig
@@ -0,0 +1,31 @@
+{% set parcelTemplate = data.getParcelTemplate %}
+{% if parcelTemplate is null %}
+ {% set parcelTemplate = bitbag_inpost_parcel_template %}
+{% endif %}
+
+{% set templates = {} %}
+{% if data.getShippingGateway.getConfig.service == 'inpost_locker_standard' %}
+ {% set templates = {'small': 'A', 'medium': 'B', 'large': 'C'} %}
+{% else %}
+ {% set templates = {'small': 'A', 'medium': 'B', 'large': 'C', 'xlarge': 'D'} %}
+{% endif %}
+
+
+ {% for key, label in templates %}
+ {% if parcelTemplate == key %}
+
+ {% else %}
+ {% if data.getExportedAt != null %}
+
+ {% else %}
+
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+
diff --git a/src/Resources/views/ShippingExport/Grid/Field/parcel_template.html.twig b/src/Resources/views/ShippingExport/Grid/Field/parcel_template.html.twig
new file mode 100644
index 0000000..56bb6a0
--- /dev/null
+++ b/src/Resources/views/ShippingExport/Grid/Field/parcel_template.html.twig
@@ -0,0 +1,5 @@
+{% if data.getShippingGateway.getName == 'INPOST_PL' %}
+ {% include '@BitBagSyliusInPostPlugin/ShippingExport/Grid/Field/ParcelTemplate/_inpost_template.html.twig' %}
+{% else %}
+
+{% endif %}
diff --git a/tests/Application/.env b/tests/Application/.env
index f4d17a6..83583c2 100644
--- a/tests/Application/.env
+++ b/tests/Application/.env
@@ -15,6 +15,9 @@ APP_SECRET=EDITME
DATABASE_URL=mysql://root@127.0.0.1/bitbag_sylius_inpost_plugin_%kernel.environment%
###< doctrine/doctrine-bundle ###
+BITBAG_INPOST_DEFAULT_LABEL_TYPE='normal'
+BITBAG_INPOST_DEFAULT_PARCEL_TEMPLATE='medium'
+
###> lexik/jwt-authentication-bundle ###
JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem
JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem
diff --git a/tests/Application/config/packages/bitbag_sylius_shipping_export_plugin.yaml b/tests/Application/config/packages/bitbag_sylius_shipping_export_plugin.yaml
index 15c0929..5944ca5 100644
--- a/tests/Application/config/packages/bitbag_sylius_shipping_export_plugin.yaml
+++ b/tests/Application/config/packages/bitbag_sylius_shipping_export_plugin.yaml
@@ -1,2 +1,9 @@
imports:
- - { resource: "@BitBagSyliusShippingExportPlugin/Resources/config/config.yml" }
\ No newline at end of file
+ - { resource: "@BitBagSyliusShippingExportPlugin/Resources/config/config.yml" }
+
+sylius_resource:
+ resources:
+ bitbag.shipping_export:
+ classes:
+ model: Tests\BitBag\SyliusInPostPlugin\Application\src\Entity\ShippingExport
+ controller: Tests\BitBag\SyliusInPostPlugin\Application\src\Controller\ShippingExportController
diff --git a/tests/Application/src/Controller/ShippingExportController.php b/tests/Application/src/Controller/ShippingExportController.php
new file mode 100644
index 0000000..ffe644b
--- /dev/null
+++ b/tests/Application/src/Controller/ShippingExportController.php
@@ -0,0 +1,82 @@
+requestConfigurationFactory->create($this->metadata, $request);
+
+ Assert::implementsInterface($this->repository, ShippingExportRepositoryInterface::class);
+ $shippingExports = $this->repository->findAllWithNewOrPendingState();
+
+ if (0 === count($shippingExports)) {
+ /** @var FlashBagInterface $flashBag */
+ $flashBag = $request->getSession()->getBag('flashes');
+ $flashBag->add('error', 'bitbag.ui.no_new_shipments_to_export');
+
+ return $this->redirectToReferer($request);
+ }
+
+ foreach ($shippingExports as $shippingExport) {
+ $this->eventDispatcher->dispatch(
+ ExportShipmentEvent::SHORT_NAME,
+ $configuration,
+ $shippingExport,
+ );
+ }
+
+ return $this->redirectToReferer($request);
+ }
+
+ public function exportSingleShipmentAction(Request $request): RedirectResponse
+ {
+ $configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
+
+ /** @var ResourceInterface|null $shippingExport */
+ $shippingExport = $this->repository->find($request->get('id'));
+ Assert::notNull($shippingExport);
+
+ $this->eventDispatcher->dispatch(
+ ExportShipmentEvent::SHORT_NAME,
+ $configuration,
+ $shippingExport,
+ );
+
+ return $this->redirectToReferer($request);
+ }
+
+ private function redirectToReferer(Request $request): RedirectResponse
+ {
+ $referer = $request->headers->get('referer');
+ if (null !== $referer) {
+ return new RedirectResponse($referer);
+ }
+
+ return $this->redirectToRoute($request->attributes->get('_route'));
+ }
+}
diff --git a/tests/Application/src/Entity/ShippingExport.php b/tests/Application/src/Entity/ShippingExport.php
new file mode 100644
index 0000000..d039367
--- /dev/null
+++ b/tests/Application/src/Entity/ShippingExport.php
@@ -0,0 +1,21 @@
+
-
+
diff --git a/tests/Application/src/Resources/config/doctrine/ShippingExport.orm.xml b/tests/Application/src/Resources/config/doctrine/ShippingExport.orm.xml
new file mode 100644
index 0000000..041d614
--- /dev/null
+++ b/tests/Application/src/Resources/config/doctrine/ShippingExport.orm.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/tests/Behat/Context/Ui/Admin/ShippingExportContext.php b/tests/Behat/Context/Ui/Admin/ShippingExportContext.php
index 0b0e852..a20f6f1 100644
--- a/tests/Behat/Context/Ui/Admin/ShippingExportContext.php
+++ b/tests/Behat/Context/Ui/Admin/ShippingExportContext.php
@@ -13,7 +13,7 @@
use Behat\Behat\Context\Context;
use Tests\BitBag\SyliusInPostPlugin\Behat\Mocker\InPostApiMocker;
-use Tests\BitBag\SyliusShippingExportPlugin\Behat\Page\Admin\ShippingExport\IndexPageInterface;
+use Tests\BitBag\SyliusInPostPlugin\Behat\Page\Admin\ShippingExport\IndexPageInterface;
final class ShippingExportContext implements Context
{
@@ -48,4 +48,20 @@ public function iExportFirsShipments(): void
$this->indexPage->exportFirsShipment();
});
}
+
+ /**
+ * @When I select parcel template
+ */
+ public function iSelectParcelTemplate(): void
+ {
+ $this->indexPage->selectParcelTemplate();
+ }
+
+ /**
+ * @Then I should see that shipping export parcel template is set
+ */
+ public function iCheckParcelTemplate(): void
+ {
+ $this->indexPage->checkParcelTemplate();
+ }
}
diff --git a/tests/Behat/Page/Admin/ShippingExport/IndexPage.php b/tests/Behat/Page/Admin/ShippingExport/IndexPage.php
new file mode 100644
index 0000000..59a0e72
--- /dev/null
+++ b/tests/Behat/Page/Admin/ShippingExport/IndexPage.php
@@ -0,0 +1,56 @@
+getDocument()->findAll('css', '.shipping-export-state');
+ $result = [];
+
+ /** @var ElementInterface $item */
+ foreach ($items as $item) {
+ if ($item->getText() === $state) {
+ $result[] = $item;
+ }
+ }
+
+ return $result;
+ }
+
+ public function exportAllShipments(): void
+ {
+ $this->getDocument()->pressButton('Export all new shipments');
+ }
+
+ public function exportFirsShipment(): void
+ {
+ $this->getDocument()->find('css', '.shipping-export-state')->click();
+ }
+
+ public function selectParcelTemplate(): void
+ {
+ $this->getDocument()->find('css', '.shipping-export-select-template')->click();
+ }
+
+ public function checkParcelTemplate(): void
+ {
+ $button = $this->getDocument()->find('xpath', '//button[@data-shipping-export-selected-template]');
+ if (null === $button) {
+ throw new \Exception('Parcel template is not selected.');
+ }
+ }
+}
diff --git a/tests/Behat/Page/Admin/ShippingExport/IndexPageInterface.php b/tests/Behat/Page/Admin/ShippingExport/IndexPageInterface.php
new file mode 100644
index 0000000..0273f59
--- /dev/null
+++ b/tests/Behat/Page/Admin/ShippingExport/IndexPageInterface.php
@@ -0,0 +1,19 @@
+shippingExport->setParcelTemplate($template);
+
+ return $this;
+ }
+
public function build(): ShippingExportInterface
{
return $this->shippingExport;