From a9f17ba8bde733563eea2dd42af669bff3dc78a1 Mon Sep 17 00:00:00 2001 From: dSevere Date: Mon, 21 Nov 2011 19:10:27 +0000 Subject: [PATCH] // Product Warehouse location : Manage multiple warehouses and location associated for a product / product attribute --- classes/stock/WarehouseProductLocation.php | 139 +++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 classes/stock/WarehouseProductLocation.php diff --git a/classes/stock/WarehouseProductLocation.php b/classes/stock/WarehouseProductLocation.php new file mode 100644 index 000000000..aeeb500c6 --- /dev/null +++ b/classes/stock/WarehouseProductLocation.php @@ -0,0 +1,139 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 7310 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ +/** + * @since 1.5.0 + */ +class WarehouseProductLocationCore extends ObjectModel +{ + /** + * @var integer product ID + * */ + public $id_product; + + /** + * @var integer product attribute ID + * */ + public $id_product_attribute; + + /** + * @var integer the warehouse ID + * */ + public $id_warehouse; + + /** + * @var string The location of the product + * */ + public $location; + + protected $fieldsRequired = array('id_product', 'id_product_attribute', 'id_warehouse'); + protected $fieldsSize = array('location' => 64); + protected $fieldsValidate = array( + 'location' => 'isReference', + 'id_product' => 'isUnsignedId', + 'id_product_attribute' => 'isUnsignedId', + 'id_warehouse' => 'isUnsignedId', + ); + + protected $table = 'warehouse_product_location'; + protected $identifier = 'id_warehouse_product_location'; + + public function getFields() + { + $this->validateFields(); + + $fields['id_product'] = (int)$this->id_product; + $fields['id_product_attribute'] = (int)$this->id_product_attribute; + $fields['id_warehouse'] = (int)$this->id_warehouse; + $fields['location'] = pSQL($this->location); + + return $fields; + } + + /** + * For a given product and warehouse, get the location + * + * @param int $id_product + * @param int $id_product_attribute + * @param int $id_warehouse + * @return array + */ + public static function getProductLocation($id_product, $id_product_attribute, $id_warehouse) + { + // build query + $query = new DbQuery(); + $query->select('wpl.location'); + $query->from('warehouse_product_location wpl'); + $query->where('wpl.id_product = '.(int)$id_product.' + AND wpl.id_product_attribute = '.(int)$id_product_attribute.' + AND wpl.id_warehouse = '.(int)$id_warehouse + ); + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query); + } + + /** + * For a given product and warehouse, get the WarehouseProductLocation corresponding ID + * + * @param int $id_product + * @param int $id_product_attribute + * @param int $id_supplier + * @return array + */ + public static function getIdByProductAndWarehouse($id_product, $id_product_attribute, $id_warehouse) + { + // build query + $query = new DbQuery(); + $query->select('wpl.id_warehouse_product_location'); + $query->from('warehouse_product_location wpl'); + $query->where('wpl.id_product = '.(int)$id_product.' + AND wpl.id_product_attribute = '.(int)$id_product_attribute.' + AND wpl.id_warehouse = '.(int)$id_warehouse + ); + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query); + } + + /** + * For a given product, retrieves its warehouses + * + * @param int $id_product + * @param int $id_lang + * @return array + */ + public static function getCollection($id_product) + { + // build query + $query = new DbQuery(); + $query->select('*'); + $query->from('warehouse_product_location wpl'); + $query->where('wpl.id_product = '.(int)$id_product); + + $results = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query); + + return ObjectModel::hydrateCollection('WarehouseProductLocation', $results); + } +} \ No newline at end of file