From 6a78711e9de8c105f992f3001795d1d2eba2894c Mon Sep 17 00:00:00 2001 From: ellynoize Date: Thu, 20 Mar 2025 08:43:48 +0300 Subject: [PATCH] working upload --- .../model/extension/retailcrm/inventories.php | 39 +++++++++++++++++++ .../lib/service/InventoryManager.php | 15 +++++++ .../system/library/retailcrm/retailcrm.php | 5 +++ 3 files changed, 59 insertions(+) create mode 100644 src/upload/admin/model/extension/retailcrm/inventories.php create mode 100644 src/upload/system/library/retailcrm/lib/service/InventoryManager.php diff --git a/src/upload/admin/model/extension/retailcrm/inventories.php b/src/upload/admin/model/extension/retailcrm/inventories.php new file mode 100644 index 0000000..fc3c852 --- /dev/null +++ b/src/upload/admin/model/extension/retailcrm/inventories.php @@ -0,0 +1,39 @@ +load->model('setting/setting'); + + $module_setting = $this->model_setting_setting->getSetting('module_retailcrm'); + $uploadType = $module_setting['module_retailcrm_stock_upload']; + $store = $module_setting['module_retailcrm_store_select']; + + if ($uploadType === '1') { + $this->toCrmUpload($store); + } + } + + public function toCrmUpload($store) { + $products = $this->model_catalog_product->getProducts([]); + $offers = []; + + foreach ($products as $product) { + $offers[] = ['externalId' => $product['product_id'], 'stores' => [['code' => $store, 'available' => $product['quantity']]]]; + } + + $packs = array_chunk($offers, 50); + + foreach ($packs as $pack) { + $this->sendToCrm($pack); + } + } + + public function sendToCrm($pack) { + $inventory_manager = $this->retailcrm->getInventoryManager(); + + return $inventory_manager->storeInventoriesUpload($pack);; + } +} + diff --git a/src/upload/system/library/retailcrm/lib/service/InventoryManager.php b/src/upload/system/library/retailcrm/lib/service/InventoryManager.php new file mode 100644 index 0000000..0b31f00 --- /dev/null +++ b/src/upload/system/library/retailcrm/lib/service/InventoryManager.php @@ -0,0 +1,15 @@ +api = $api; + } + + public function storeInventoriesUpload($pack) { + return $this->api->storeInventoriesUpload($pack); + } +} \ No newline at end of file diff --git a/src/upload/system/library/retailcrm/retailcrm.php b/src/upload/system/library/retailcrm/retailcrm.php index c4ce323..7ecb0d4 100644 --- a/src/upload/system/library/retailcrm/retailcrm.php +++ b/src/upload/system/library/retailcrm/retailcrm.php @@ -9,6 +9,7 @@ use retailcrm\service\OrderManager; use retailcrm\factory\OrderConverterFactory; use retailcrm\factory\CustomerConverterFactory; use retailcrm\service\SettingsManager; +use retailcrm\service\InventoryManager; require_once DIR_SYSTEM . 'library/retailcrm/bootstrap.php'; @@ -54,6 +55,10 @@ class Retailcrm { return new CorporateCustomer($this->getApiClient(), new CustomerRepository($this->registry)); } + public function getInventoryManager() { + return new InventoryManager($this->getApiClient()); + } + /** * Get api client object *