From 8efbc4df183434c12daf608ea5ea147ff06f5fb7 Mon Sep 17 00:00:00 2001 From: Dominik Skerhak Date: Tue, 16 Mar 2021 17:54:09 +0100 Subject: [PATCH] Inform user if product was not stored into distribution center Added catching of `ProductSaveEventDistributionException` into `ProductsFormFactory` to inform user that product was not stored into distribution center. This exception has to be thrown from inside `ProductSaveEvent` handler when your module is creating / updating product in distribution center. KikaModule now throws this exception if creation/update was not successful. remp/crm#1804 --- src/forms/ProductsFormFactory.php | 11 ++++++++++- src/lang/products.cs_CZ.neon | 1 + src/lang/products.en_US.neon | 1 + src/lang/products.sk_SK.neon | 1 + .../ProductSaveEventDistributionException.php | 8 ++++++++ 5 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 src/models/Distribution/ProductSaveEventDistributionException.php diff --git a/src/forms/ProductsFormFactory.php b/src/forms/ProductsFormFactory.php index 2221d28..b0d32f2 100644 --- a/src/forms/ProductsFormFactory.php +++ b/src/forms/ProductsFormFactory.php @@ -6,6 +6,7 @@ use Crm\ApplicationModule\DataProvider\DataProviderManager; use Crm\ProductsModule\Builder\ProductBuilder; use Crm\ProductsModule\DataProvider\ProductsFormDataProviderInterface; +use Crm\ProductsModule\Distribution\ProductSaveEventDistributionException; use Crm\ProductsModule\Events\ProductSaveEvent; use Crm\ProductsModule\ProductsCache; use Crm\ProductsModule\Repository\DistributionCentersRepository; @@ -22,6 +23,7 @@ use Nette\Database\Table\ActiveRow; use Nette\Utils\Html; use Tomaj\Form\Renderer\BootstrapRenderer; +use Tracy\Debugger; class ProductsFormFactory { @@ -342,7 +344,14 @@ public function formSucceeded($form, $values) $this->productPropertiesRepository->setProductProperties($product, $productProperties); $this->productTagsRepository->setProductTags($product, $tags); - $this->emitter->emit(new ProductSaveEvent($product->id)); + try { + $this->emitter->emit(new ProductSaveEvent($product->id)); + } catch (ProductSaveEventDistributionException $e) { + Debugger::log($e, Debugger::EXCEPTION); + $form->addError($this->translator->translate('products.data.products.errors.not_stored_to_distribution_center')); + return; + } + $this->onUpdate->__invoke($product); return; diff --git a/src/lang/products.cs_CZ.neon b/src/lang/products.cs_CZ.neon index 8cd24a0..4cf25fc 100644 --- a/src/lang/products.cs_CZ.neon +++ b/src/lang/products.cs_CZ.neon @@ -59,6 +59,7 @@ data: ean13: EAN kód musí mít 13 znaků template_property: Položka '%s' je povinná vat: DPH je povinná + not_stored_to_distribution_center: 'Produkt se nepodařilo uložit do distribučního centra.' tags: fields: name: Název diff --git a/src/lang/products.en_US.neon b/src/lang/products.en_US.neon index 1fac1ca..e0113e3 100644 --- a/src/lang/products.en_US.neon +++ b/src/lang/products.en_US.neon @@ -60,6 +60,7 @@ data: ean13: EAN code must be 13 characters template_property: Field '%s' is required vat: VAT is required + not_stored_to_distribution_center: 'Unable to save product to distribution center.' tags: fields: name: Name diff --git a/src/lang/products.sk_SK.neon b/src/lang/products.sk_SK.neon index 4d0a61c..909a295 100644 --- a/src/lang/products.sk_SK.neon +++ b/src/lang/products.sk_SK.neon @@ -60,6 +60,7 @@ data: ean13: EAN kód musí mať 13 znakov template_property: Položka '%s' je povinná vat: DPH je povinná + not_stored_to_distribution_center: 'Produkt sa nepodarilo uložiť do distribučného centra.' tags: fields: name: Názov diff --git a/src/models/Distribution/ProductSaveEventDistributionException.php b/src/models/Distribution/ProductSaveEventDistributionException.php new file mode 100644 index 0000000..de6939b --- /dev/null +++ b/src/models/Distribution/ProductSaveEventDistributionException.php @@ -0,0 +1,8 @@ +