From 24b7c4f0e2245b128946a67d50aec85a0e8216a2 Mon Sep 17 00:00:00 2001 From: Tomas Saghy Date: Thu, 23 Nov 2023 20:27:42 +0100 Subject: [PATCH] suppliers --- spec/Pohoda/SupplierSpec.php | 80 ++++++++++++++++++++++++++++ src/Pohoda.php | 2 + src/Pohoda/Supplier.php | 63 ++++++++++++++++++++++ src/Pohoda/Supplier/StockItem.php | 44 +++++++++++++++ src/Pohoda/Supplier/SupplierItem.php | 64 ++++++++++++++++++++++ 5 files changed, 253 insertions(+) create mode 100644 spec/Pohoda/SupplierSpec.php create mode 100644 src/Pohoda/Supplier.php create mode 100644 src/Pohoda/Supplier/StockItem.php create mode 100644 src/Pohoda/Supplier/SupplierItem.php diff --git a/spec/Pohoda/SupplierSpec.php b/spec/Pohoda/SupplierSpec.php new file mode 100644 index 0000000..436233d --- /dev/null +++ b/spec/Pohoda/SupplierSpec.php @@ -0,0 +1,80 @@ +beConstructedWith([ + 'stockItem' => [ + 'stockItem' => [ + 'ids' => 'B04' + ] + ], + 'suppliers' => [ + [ + 'supplierItem' => [ + 'default' => true, + 'refAd' => [ + 'id' => 2 + ], + 'orderCode' => 'A1', + 'orderName' => 'A-zasoba', + 'purchasingPrice' => 1968, + 'rate' => 0, + 'payVAT' => false, + 'ean' => '11112228', + 'printEAN' => true, + 'unitEAN' => 'ks', + 'unitCoefEAN' => 1, + 'deliveryTime' => 12, + 'minQuantity' => 2, + 'note' => 'fdf' + ] + ], + [ + 'supplierItem' => [ + 'default' => false, + 'refAd' => [ + 'ids' => 'INTEAK spol. s r. o.' + ], + 'orderCode' => 'I1', + 'orderName' => 'I-zasoba', + 'purchasingPrice' => 500, + 'rate' => 0, + 'payVAT' => false, + 'ean' => '212121212', + 'printEAN' => true, + 'unitEAN' => 'ks', + 'unitCoefEAN' => 1, + 'deliveryTime' => 12, + 'minQuantity' => 2, + 'note' => 'aasn' + ] + ] + ] + ], '123'); + } + + public function it_is_initializable_and_extends_agenda() + { + $this->shouldHaveType('Riesenia\Pohoda\Supplier'); + $this->shouldHaveType('Riesenia\Pohoda\Agenda'); + } + + public function it_creates_correct_xml() + { + $this->getXML()->asXML()->shouldReturn('B042A1A-zasoba19680false11112228trueks1122fdfINTEAK spol. s r. o.I1I-zasoba5000false212121212trueks1122aasn'); + } +} diff --git a/src/Pohoda.php b/src/Pohoda.php index e3f5523..b17a39d 100644 --- a/src/Pohoda.php +++ b/src/Pohoda.php @@ -32,6 +32,7 @@ * @method \Riesenia\Pohoda\Stock createStock(array $data = []) * @method \Riesenia\Pohoda\StockTransfer createStockTransfer(array $data = []) * @method \Riesenia\Pohoda\Storage createStorage(array $data = []) + * @method \Riesenia\Pohoda\Supplier createSupplier(array $data = []) * @method \Riesenia\Pohoda\UserList createUserList(array $data = []) */ class Pohoda @@ -58,6 +59,7 @@ class Pohoda 'pro' => 'http://www.stormware.cz/schema/version_2/prodejka.xsd', 'str' => 'http://www.stormware.cz/schema/version_2/storage.xsd', 'stk' => 'http://www.stormware.cz/schema/version_2/stock.xsd', + 'sup' => 'http://www.stormware.cz/schema/version_2/supplier.xsd', 'typ' => 'http://www.stormware.cz/schema/version_2/type.xsd', 'vyd' => 'http://www.stormware.cz/schema/version_2/vydejka.xsd' ]; diff --git a/src/Pohoda/Supplier.php b/src/Pohoda/Supplier.php new file mode 100644 index 0000000..46306fb --- /dev/null +++ b/src/Pohoda/Supplier.php @@ -0,0 +1,63 @@ +_createXML()->addChild('sup:supplier', '', $this->_namespace('sup')); + $xml->addAttribute('version', '2.0'); + + $this->_addElements($xml, ['stockItem', 'suppliers'], 'sup'); + + return $xml; + } + + /** + * {@inheritdoc} + */ + protected function _configureOptions(OptionsResolver $resolver) + { + // available options + $resolver->setDefined(['stockItem', 'suppliers']); + } +} diff --git a/src/Pohoda/Supplier/StockItem.php b/src/Pohoda/Supplier/StockItem.php new file mode 100644 index 0000000..501a65a --- /dev/null +++ b/src/Pohoda/Supplier/StockItem.php @@ -0,0 +1,44 @@ +_createXML()->addChild('sup:stockItem', '', $this->_namespace('sup')); + + $this->_addElements($xml, $this->_elements, 'typ'); + + return $xml; + } + + /** + * {@inheritdoc} + */ + protected function _configureOptions(OptionsResolver $resolver) + { + // available options + $resolver->setDefined($this->_elements); + } +} diff --git a/src/Pohoda/Supplier/SupplierItem.php b/src/Pohoda/Supplier/SupplierItem.php new file mode 100644 index 0000000..c701a9b --- /dev/null +++ b/src/Pohoda/Supplier/SupplierItem.php @@ -0,0 +1,64 @@ +_createXML()->addChild('sup:supplierItem', '', $this->_namespace('sup')); + + // handle default + if ($this->_data['default']) { + $xml->addAttribute('default', $this->_data['default']); + unset($this->_data['default']); + } + + $this->_addElements($xml, $this->_elements, 'sup'); + + return $xml; + } + + /** + * {@inheritdoc} + */ + protected function _configureOptions(OptionsResolver $resolver) + { + // available options + $resolver->setDefined($this->_elements); + + $resolver->setNormalizer('default', $resolver->getNormalizer('bool')); + $resolver->setNormalizer('orderCode', $resolver->getNormalizer('string64')); + $resolver->setNormalizer('orderName', $resolver->getNormalizer('string90')); + $resolver->setNormalizer('purchasingPrice', $resolver->getNormalizer('number')); + $resolver->setNormalizer('rate', $resolver->getNormalizer('float')); + $resolver->setNormalizer('payVAT', $resolver->getNormalizer('bool')); + $resolver->setNormalizer('ean', $resolver->getNormalizer('string20')); + $resolver->setNormalizer('printEAN', $resolver->getNormalizer('bool')); + $resolver->setNormalizer('unitEAN', $resolver->getNormalizer('string10')); + $resolver->setNormalizer('unitCoefEAN', $resolver->getNormalizer('float')); + $resolver->setNormalizer('deliveryTime', $resolver->getNormalizer('int')); + $resolver->setNormalizer('minQuantity', $resolver->getNormalizer('float')); + $resolver->setNormalizer('unit', $resolver->getNormalizer('string10')); + } +}