Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function stockUpdate(Varien_Event_Observer $observer)
- {
- # Produto
- $event = $observer->getEvent()->getItem()->getProduct();
- if ($event->getAllnationsSync() == 1) {
- # Verifica qual o atributo que representa o ID da All Nations
- $control = Mage::getStoreConfig('allnations/general/id_allnations', Mage::app()->getStore());
- $id = $event->getData($control);
- Mage::helper('novapc_allnations')->updateStock($id);
- }
- }
- public static function updateStock($codigo = null)
- {
- try {
- # Força o load da página em modo ADMIN
- Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
- # Pega usuario e senha colocados na config
- $apiUser = Mage::getStoreConfig('allnations/general/api_user', Mage::app()->getStore());
- $apiPassword = Mage::getStoreConfig('allnations/general/api_password', Mage::app()->getStore());
- # Model da integração, para pegar a data da ultima atualização
- $integration = Mage::getModel('novapc_allnations/integration');
- $productIntegration = $integration->load(2);
- $integration = $integration->load(3);
- # Checa qual é maior, se é a data da integração dos produtos ou da atualização
- if ($integration->getUpdatedAt() < $productIntegration->getUpdatedAt()) {
- $updatedAt = substr($integration->getUpdatedAt(), 0, 9);
- } else {
- $updatedAt = substr($productIntegration->getUpdatedAt(), 0, 9);
- }
- # Verifica qual o atributo que representa o ID da All Nations
- $control = Mage::getStoreConfig('allnations/general/id_allnations', Mage::app()->getStore());
- # Instancia o model de estoque
- $stockItem = Mage::getModel('cataloginventory/stock_item');
- # Variavel de controle
- $success = 0;
- # Se for chamado sem o parametro $codigo, atualiza todos os produtos
- if ($codigo == null) {
- $ANProducts = Mage::getModel('catalog/product')
- ->getCollection()
- ->addAttributeToSelect('*')
- ->addAttributeToFilter('allnations_sync', ['eq' => 1]);
- foreach ($ANProducts as $single) {
- $id = $single->getData($control); // Pega o ID da All Nations
- $url = 'http://wspub.allnations.com.br/wsIntEstoqueClientesV2/ServicoReservasPedidosExt.asmx/ConsultaEstoqueProdutos' .
- '?CodigoCliente=' . $apiUser .
- '&Senha=' . $apiPassword .
- '&CodigoProduto=' . $id .
- '&Data=' . $updatedAt;
- $return = Mage::helper('novapc_allnations')->callCurl('GET', $url);
- $httpCode = $return['httpCode']['httpCode'];
- $return = $return['response']['diffgrdiffgram']['NewDataSet']['Estoques'];
- if ($httpCode == '200') {
- if ($return['CODIGO'] == $single->getData($control)) {
- if ($single->getData('allnations_promo') == 0) {
- $single->setPrice
- ($return['PRECOREVENDA']);
- } else {
- $single->setSpecialPrice
- ($return['PRECOREVENDA']);
- }
- $single->save();
- $stock = $stockItem->loadByProduct($single->getId());
- $stock->setQty($return['ESTOQUEDISPONIVEL']);
- $stock->setIsInStock($return['DISPONIVEL']);
- $stock->save();
- if ($success != 1) {
- $success = 1;
- };
- }
- } else {
- return $httpCode;
- }
- }
- if ($success == 1) {
- $firstUpdate = $integration->getData('first_update');
- # Checa se ja foi atualizado antes
- if (!$firstUpdate) {
- $integration->setFirstUpdate(Mage::getModel('core/date')->gmtDate('Y-m-d H:i:s'));
- $integration->setUpdatedAt(Mage::getModel('core/date')->gmtDate('Y-m-d H:i:s'));
- $integration->save();
- } else {
- $integration->setUpdatedAt(Mage::getModel('core/date')->gmtDate('Y-m-d H:i:s'));
- $integration->save();
- }
- return $httpCode;
- }
- } else {
- $url = 'http://wspub.allnations.com.br/wsIntEstoqueClientesV2/ServicoReservasPedidosExt.asmx/ConsultaEstoqueProdutos' .
- '?CodigoCliente=' . $apiUser .
- '&Senha=' . $apiPassword .
- '&CodigoProduto=' . $codigo .
- '&Data=' . $updatedAt;
- $return = Mage::helper('novapc_allnations')->callCurl('GET', $url);
- $httpCode = $return['httpCode']['httpCode'];
- if ($httpCode == '200') {
- $product = Mage::getModel('catalog/product')
- ->loadByAttribute($control, $codigo);
- if ($return['CODIGO'] == $product->getData($control)) {
- if ($product->getData('allnations_promo') == 0) {
- $product->setPrice
- ($return['PRECOREVENDA']);
- } else {
- $product->setSpecialPrice
- ($return['PRECOREVENDA']);
- }
- $product->save();
- $stock = $stockItem->loadByProduct($product->getId());
- $stock->setQty($return['ESTOQUEDISPONIVEL']);
- $stock->setIsInStock($return['DISPONIVEL']);
- $stock->save();
- return $httpCode;
- }
- }
- }
- } catch (Exception $e) {
- return $e->getMessage();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement