public function getGroup() { if ($this->_group == null) { $this->_group = mage::getResourceModel('BackgroundTask/Taskgroup')->loadByGroupCode($this->_groupCode); } return $this->_group; }
/** * Retourne le dernier prix d'achat sans frais d'approche pour un produit * * @param unknown_type $ProductId */ public function GetLastPriceWithoutFees($ProductId) { $sql = 'select pop_price_ht_base from ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'purchase_order_product, ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'purchase_order where pop_order_num = po_num and po_status = \'' . MDN_Purchase_Model_Order::STATUS_COMPLETE . '\' and pop_price_ht_base > 0 and pop_product_id = ' . $ProductId . ' order by po_num DESC LIMIT 1'; $retour = mage::getResourceModel('sales/order_item_collection')->getConnection()->fetchOne($sql); $retour = number_format($retour, 2); return $retour; }
/** * Calcul le stock pour un produit * */ public function ComputeProductStock($ProductId) { $sql = ' select sum(sm_coef * sm_qty) stock from ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'stock_movement where sm_product_id = ' . $ProductId . ' '; $data = mage::getResourceModel('sales/order_item_collection')->getConnection()->fetchAll($sql); if (count($data) > 0) { if ($data[0]['stock'] == '') { return 0; } else { return $data[0]['stock']; } } return 0; }
/** * Met a jour la qté réservée * * @param unknown_type $qty */ public function UpdateReservedQty($product) { //recupere la qté $reservedQty = $this->GetReservedQty($product->getId()); //check if record exists $sql = 'select count(*) from ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'catalog_product_entity_int where entity_id = ' . $product->getId() . ' and attribute_id = ' . mage::getModel('Purchase/Constant')->GetProductReservedQtyAttributeId(); $res = mage::getResourceModel('sales/order_item_collection')->getConnection()->fetchOne($sql); if ($res == 0) { //insert record $sql = 'insert into ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'catalog_product_entity_int (value, entity_id, attribute_id) values (' . $reservedQty . ', ' . $product->getId() . ', ' . mage::getModel('Purchase/Constant')->GetProductReservedQtyAttributeId() . ')'; $res = mage::getResourceModel('sales/order_item_collection')->getConnection()->query($sql); } else { //met a jour pour le produit $sql = 'update ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'catalog_product_entity_int set value = ' . $reservedQty . ' where entity_id = ' . $product->getId() . ' and attribute_id = ' . mage::getModel('Purchase/Constant')->GetProductReservedQtyAttributeId(); mage::getResourceModel('sales/order_item_collection')->getConnection()->query($sql); } return; }
/** * Clear all tasks * */ public function ClearGroupTasksAction() { mage::getResourceModel('BackgroundTask/Task')->deleteAllGroupTasks(); mage::getResourceModel('BackgroundTask/Taskgroup')->deleteAllGroups(); //confirm & redirect Mage::getSingleton('adminhtml/session')->addSuccess($this->__('Group Tasks successfully deleted')); $this->_redirect('BackgroundTask/Admin/Grid'); }
/** * Return ids for product that must be in supply needs * */ public function getCandidateProductIds() { //recupere les valeurs par défaut pour le store $DefaultManageStock = Mage::getStoreConfig('cataloginventory/item_options/manage_stock'); if ($DefaultManageStock == '') { $DefaultManageStock = 1; } $DefaultNotifyStockQty = Mage::getStoreConfig('cataloginventory/item_options/notify_stock_qty'); if ($DefaultNotifyStockQty == '') { $DefaultNotifyStockQty = 0; } //retrieve concerned products $sql = "\n\t\t\t\t\tselect \n\t\t\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "catalog_product_entity.entity_id product_id,\n\t\t\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "cataloginventory_stock_item.qty qty,\n\t\t\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "cataloginventory_stock_item.notify_stock_qty notify_stock_qty,\n\t\t\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "cataloginventory_stock_item.use_config_notify_stock_qty use_config_notify_stock_qty,\n\t\t\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "cataloginventory_stock_item.manage_stock manage_stock,\n\t\t\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "cataloginventory_stock_item.use_config_manage_stock use_config_manage_stock,\n\t\t\t\t\t\t\ttbl_ordered_qty.value ordered_qty\n\t\t\t\t\t\t\t\n\t\t\t\t\tfrom \t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "catalog_product_entity,\n\t\t\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "cataloginventory_stock_item,\n\t\t\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "catalog_product_entity_int tbl_status,\n\t\t\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "catalog_product_entity_int tbl_ordered_qty\n\t\t\t\t\twhere \n\t\t\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "catalog_product_entity.entity_id = " . mage::getModel('Purchase/Constant')->getTablePrefix() . "cataloginventory_stock_item.product_id\n\t\t\t\t\t\t\tand " . mage::getModel('Purchase/Constant')->getTablePrefix() . "cataloginventory_stock_item.stock_id = 1\n\t\t\t\t\t\t\tand tbl_status.entity_id = " . mage::getModel('Purchase/Constant')->getTablePrefix() . "catalog_product_entity.entity_id\n\t\t\t\t\t\t\tand tbl_status.attribute_id = " . mage::getModel('Purchase/Constant')->GetProductStatusAttributeId() . "\n\t\t\t\t\t\t\tand tbl_status.value = 1\n\t\t\t\t\t\t\tand tbl_status.store_id = 0\n\t\t\t\t\t\t\tand tbl_ordered_qty.entity_id = " . mage::getModel('Purchase/Constant')->getTablePrefix() . "catalog_product_entity.entity_id\n\t\t\t\t\t\t\tand tbl_ordered_qty.attribute_id = " . mage::getModel('Purchase/Constant')->GetProductOrderedQtyAttributeId() . "\n\t\t\t\t\t\t\tand tbl_ordered_qty.store_id = 0\n\t\t\t\t\t\t\tand " . mage::getModel('Purchase/Constant')->getTablePrefix() . "catalog_product_entity.exclude_from_supply_needs = 0\n\t\t\t\t"; $data = mage::getResourceModel('sales/order_item_collection')->getConnection()->fetchAll($sql); return $data; }
/** * Enregistre les modifs faite sur le manufacturer * */ public function SaveAction() { //Charge le manufacturer $Manufacturer = Mage::getModel('Purchase/Manufacturer')->load($this->getRequest()->getParam('man_id')); //Enregistre les modifs $Manufacturer->setman_name($this->getRequest()->getParam('man_name')); $Manufacturer->setman_contact($this->getRequest()->getParam('man_contact')); $Manufacturer->setman_address1($this->getRequest()->getParam('man_address1')); $Manufacturer->setman_address2($this->getRequest()->getParam('man_address2')); $Manufacturer->setman_zipcode($this->getRequest()->getParam('man_zipcode')); $Manufacturer->setman_city($this->getRequest()->getParam('man_city')); $Manufacturer->setman_country($this->getRequest()->getParam('man_country')); $Manufacturer->setman_tel($this->getRequest()->getParam('man_tel')); $Manufacturer->setman_fax($this->getRequest()->getParam('man_fax')); $Manufacturer->setman_email($this->getRequest()->getParam('man_email')); $Manufacturer->setman_website($this->getRequest()->getParam('man_website')); $Manufacturer->setman_comments($this->getRequest()->getParam('man_comments')); $Manufacturer->setman_attribute_option_id($this->getRequest()->getParam('man_attribute_option_id')); //Si on doit créer le manufacturer magento if ($this->getRequest()->getParam('create_magento_manufacturer') == '1') { //cree l'option $option['attribute_id'] = mage::getModel('Purchase/Constant')->GetProductManufacturerAttributeId(); $option['value'][0][0] = $Manufacturer->getman_name(); $setup = new Mage_Eav_Model_Entity_Setup('core_setup'); $setup->addAttributeOption($option); //recupere son id $OptionId = null; $sql = "\n\t\t\t\tSELECT \n\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "eav_attribute_option_value.option_id id, " . mage::getModel('Purchase/Constant')->getTablePrefix() . "eav_attribute_option_value.value name\n\t\t\t\tfrom \n\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "eav_attribute_option,\n\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "eav_attribute_option_value\n\t\t\t\twhere \n\t\t\t\t\t" . mage::getModel('Purchase/Constant')->getTablePrefix() . "eav_attribute_option.attribute_id = " . mage::getModel('Purchase/Constant')->GetProductManufacturerAttributeId() . "\n\t\t\t\t\tand " . mage::getModel('Purchase/Constant')->getTablePrefix() . "eav_attribute_option.option_id = " . mage::getModel('Purchase/Constant')->getTablePrefix() . "eav_attribute_option_value.option_id \n\t\t\t\t\torder by " . mage::getModel('Purchase/Constant')->getTablePrefix() . "eav_attribute_option_value.value\n\t\t\t\t"; //execute la requete $data = mage::getResourceModel('sales/order_item_collection')->getConnection()->fetchAll($sql); for ($i = 0; $i < count($data); $i++) { if ($data[$i]['name'] == $Manufacturer->getman_name()) { $OptionId = $data[$i]['id']; } } //l'associe $Manufacturer->setman_attribute_option_id($OptionId); } $Manufacturer->save(); //confirme Mage::getSingleton('adminhtml/session')->addSuccess($this->__('Manufacturer Saved')); //Redirige vers la fiche créée $this->_redirect('Purchase/Manufacturers/Edit/man_id/' . $Manufacturer->getId()); }
public function getIngoingMovement($from, $to, $productId) { $tablePrefix = Mage::getConfig()->getTablePrefix(); $sql = "select sum(sm_qty * sm_coef) from " . $tablePrefix . "stock_movement where sm_coef > 0 and sm_product_id=" . $productId . " and sm_date >= '" . date('Y-m-d', $from) . "' and sm_date <= '" . date('Y-m-d', $to) . "'"; $retour = mage::getResourceModel('sales/order_item_collection')->getConnection()->fetchOne($sql); return abs((int) $retour); }
/** * Méthode appelée par le cron pour mettre a jour les qte commandés des produits * */ public function UpdateStocksForOrders() { //Parcourt les commandes dont les stocks n'ont pas été mis a jour (stocks_updated = 0) echo '<h2>UpdateStocksForOrders</h2>'; $sql = 'select entity_id from ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'sales_order where stocks_updated = 0'; $data = mage::getResourceModel('sales/order_item_collection')->getConnection()->fetchAll($sql); for ($i = 0; $i < count($data); $i++) { //Charge la commande $order = mage::getModel('sales/order')->load($data[$i]['entity_id']); echo '<p><b>Processing order #' . $order->getId() . '</b>'; //Si la commande remplit les conditions if ($order->IsValidForPurchaseProcess()) { try { //Pour chaque produit de la commande foreach ($order->getAllItems() as $item) { if ($item->getproduct_id()) { //charge le produit $product = mage::getModel('catalog/product')->load($item->getproduct_id()); if ($product->getId() != '') { echo '<br>Updating product ordered qty for product #' . $product->getId(); //reserve le produit si possible $model = mage::getModel('Purchase/Productstock'); mage::helper('purchase/ProductReservation')->reserveProductForOrder($order->getId(), $product->getId()); //met a jour les qte (reservée et ordered) echo '<br>Update ordered and reserved qty'; $model->UpdateOrderedQty($product); } } } } catch (Exception $ex) { echo 'Error while browsing products : ' . $ex->getMessage() . ' <br> ' . $ex->getTraceAsString(); } //Specifie que le stock a été mis a jour $sql = 'update ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'sales_order set stocks_updated = 1 where entity_id = ' . $data[$i]['entity_id']; echo '<br>' . $sql; mage::getResourceModel('sales/order_item_collection')->getConnection()->query($sql); //dispatch order in order preparation tabs mage::helper('BackgroundTask')->AddTask('Dispatch order #' . $order->getId(), 'Orderpreparation', 'dispatchOrder', $order->getId()); //Store planning try { echo '<br>Store planning'; $planning = mage::helper('purchase/Planning')->createPlanning($order); $planning->setpsop_anounced_date($planning->getpsop_delivery_date()); $planning->setpsop_anounced_date_max($planning->getpsop_delivery_date_max()); $planning->save(); } catch (Exception $ex) { echo '<font color="red">Error creating order planning: ' . $ex->getMessage() . '</font>'; } //update supply needs for products /* foreach($order->getAllItems() as $item) { $productId = $item->getproduct_id(); Mage::dispatchEvent('purchase_update_supply_needs_for_product', array('product_id'=>$productId, 'from' => 'order #'.$order->getId().' placed')); } */ } else { echo '<p>Order doesnt fullfill supplyneeds and reservation requiresites. Stocks not updated'; } } }
/** * Delete group's tasks * */ protected function _afterDelete() { mage::getResourceModel('BackgroundTask/Task')->deleteGroupTasks($this->getbtg_code()); }
/** * Collect next task to execute * */ public function getNextTaskToExecute() { $collection = mage::getResourceModel('BackgroundTask/Task_Collection')->getNextTaskToExecute(); foreach ($collection as $item) { return $item; } }
/** * Retourne la liste des erreurs * */ public function getList() { $retour = array(); $ProductStockModel = mage::getModel('Purchase/Productstock'); //Recupere la liste des produits $sql = ' select product_id, qty, tbl_ordered.value ordered_qty, tbl_reserved.value reserved_qty, tbl_name.value name from ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'catalog_product_entity, ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'cataloginventory_stock_item, ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'catalog_product_entity_int tbl_ordered, ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'catalog_product_entity_int tbl_reserved, ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'catalog_product_entity_varchar tbl_name where ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'catalog_product_entity.entity_id = ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'cataloginventory_stock_item.product_id and ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'catalog_product_entity.entity_id = tbl_ordered.entity_id and ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'catalog_product_entity.entity_id = tbl_reserved.entity_id and tbl_reserved.attribute_id = ' . mage::getModel('Purchase/Constant')->GetProductReservedQtyAttributeId() . ' and tbl_ordered.attribute_id = ' . mage::getModel('Purchase/Constant')->GetProductOrderedQtyAttributeId() . ' and tbl_name.entity_id = tbl_ordered.entity_id and tbl_name.attribute_id = ' . mage::getModel('Purchase/Constant')->GetProductNameAttributeId() . ' and ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'catalog_product_entity.type_id = \'simple\' order by ' . mage::getModel('Purchase/Constant')->getTablePrefix() . 'catalog_product_entity.entity_id '; $data = mage::getResourceModel('sales/order_item_collection')->getConnection()->fetchAll($sql); for ($i = 0; $i < count($data); $i++) { $AddProduct = false; $StockProblem = false; $OrderedProblem = false; $ReservedProblem = false; $productId = $data[$i]['product_id']; //Recupere le stock calcué via les mouvements de stock $CalculatedStock = (int) $ProductStockModel->ComputeProductStock($productId); if ($CalculatedStock != $data[$i]['qty']) { $AddProduct = true; $StockProblem = true; } //Recupere le stock calcué via les mouvements de stock $OrderedQty = (int) $ProductStockModel->GetOrderedQty($productId); if ($OrderedQty != $data[$i]['ordered_qty']) { $AddProduct = true; $OrderedProblem = true; } //Recupere le stock calcué via les mouvements de stock $ReservedQty = (int) mage::helper('purchase/ProductReservation')->GetReservedQty($productId); if ($ReservedQty != $data[$i]['reserved_qty']) { $AddProduct = true; $ReservedProblem = true; } if ($ReservedQty > $CalculatedStock) { $AddProduct = true; } if ($ReservedQty > $OrderedQty) { $AddProduct = true; } //Si le produit a un pb if ($AddProduct) { $item = array(); $item['product_name'] = '<a href="' . $this->getUrl('Purchase/Products/Edit', array('product_id' => $productId)) . '">' . $data[$i]['name'] . ' (' . $productId . ')</a>'; $item['ordered_qty'] = ''; $item['reserved_qty'] = ''; $item['product_id'] = $productId; $item['other'] = ''; $item['stock'] = ''; if ($StockProblem) { $item['stock'] = '<font color="red">Error (' . (int) $data[$i]['qty'] . ' / ' . $CalculatedStock . ')</font>'; } else { $item['stock'] = $CalculatedStock; } if ($OrderedProblem) { $item['ordered_qty'] = '<font color="red">Error (' . (int) $data[$i]['ordered_qty'] . ' / ' . $OrderedQty . ')</font>'; } else { $item['ordered_qty'] = $OrderedQty; } if ($ReservedProblem) { $item['reserved_qty'] = '<font color="red">Error (' . (int) $data[$i]['reserved_qty'] . ' / ' . $ReservedQty . ')</font>'; } else { $item['reserved_qty'] = $ReservedQty; } if ($ReservedQty > $CalculatedStock) { $item['other'] .= '<font color="red">Reserved qty > stock</font>'; } if ($ReservedQty > $OrderedQty) { $item['other'] .= '<font color="red">Reserved qty > ordered qty</font>'; } $retour[] = $item; } } //retourne return $retour; }