public function hookOrderReturn($params) { $result = Db::getInstance()->getRow(' SELECT f.id_loyalty FROM `' . _DB_PREFIX_ . 'loyalty` f WHERE f.id_customer = ' . intval($params['orderReturn']->id_customer) . ' AND f.id_order = ' . intval($params['orderReturn']->id_order)); $loyalty = new LoyaltyModule(intval($result['id_loyalty'])); if (!Validate::isLoadedObject($loyalty)) { return false; } $totalPrice = 0; $details = OrderReturn::getOrdersReturnDetail($params['orderReturn']->id); foreach ($details as $detail) { $result = Db::getInstance()->getRow(' SELECT product_price * (1 + (tax_rate / 100)) AS ttc FROM ' . _DB_PREFIX_ . 'order_detail od WHERE id_order_detail = ' . intval($detail['id_order_detail'])); $totalPrice += $result['ttc'] * $detail['product_quantity']; } $canceledTotal = floor($totalPrice / floatval(Configuration::get('PS_LOYALTY_POINT_RATE'))); if ($canceledTotal > $loyalty->points) { $canceledTotal = $loyalty->points; } Db::getInstance()->Execute(' INSERT INTO `' . _DB_PREFIX_ . 'loyalty_history` (`id_loyalty`, `id_loyalty_state`, `points`, `date_add`) VALUES (' . intval($loyalty->id) . ', ' . intval(LoyaltyStateModule::getCancelId()) . ', -' . intval($canceledTotal) . ', NOW())'); $loyalty->points -= $canceledTotal; $loyalty->update(); Db::getInstance()->Execute(' INSERT INTO `' . _DB_PREFIX_ . 'loyalty_history` (`id_loyalty`, `id_loyalty_state`, `points`, `date_add`) VALUES (' . intval($loyalty->id) . ', ' . intval(LoyaltyStateModule::getValidationId()) . ', ' . intval($loyalty->points) . ', NOW())'); }
public static function getOrdersReturnProducts($orderReturnId, $order) { $productsRet = OrderReturn::getOrdersReturnDetail($orderReturnId); $products = $order->getProducts(); $tmp = array(); foreach ($productsRet as $return_detail) { $tmp[$return_detail['id_order_detail']]['quantity'] = isset($tmp[$return_detail['id_order_detail']]['quantity']) ? $tmp[$return_detail['id_order_detail']]['quantity'] + (int) $return_detail['product_quantity'] : (int) $return_detail['product_quantity']; $tmp[$return_detail['id_order_detail']]['customizations'] = (int) $return_detail['id_customization']; } $resTab = array(); foreach ($products as $key => $product) { if (isset($tmp[$product['id_order_detail']])) { $resTab[$key] = $product; $resTab[$key]['product_quantity'] = $tmp[$product['id_order_detail']]['quantity']; $resTab[$key]['customizations'] = $tmp[$product['id_order_detail']]['customizations']; } } return $resTab; }
public function hookOrderReturn($params) { include_once dirname(__FILE__) . '/LoyaltyStateModule.php'; include_once dirname(__FILE__) . '/LoyaltyModule.php'; $total_price = 0; $details = OrderReturn::getOrdersReturnDetail((int) $params['orderReturn']->id); foreach ($details as $detail) { $total_price += Db::getInstance()->getValue(' SELECT ROUND(total_price_tax_incl, 2) FROM ' . _DB_PREFIX_ . 'order_detail od WHERE id_order_detail = ' . (int) $detail['id_order_detail']); } $loyalty_new = new LoyaltyModule(); $loyalty_new->points = (int) (-1 * LoyaltyModule::getNbPointsByPrice($total_price)); $loyalty_new->id_loyalty_state = (int) LoyaltyStateModule::getCancelId(); $loyalty_new->id_order = (int) $params['orderReturn']->id_order; $loyalty_new->id_customer = (int) $params['orderReturn']->id_customer; $loyalty_new->save(); }
public function hookOrderReturn($params) { include_once dirname(__FILE__) . '/LoyaltyStateModule.php'; include_once dirname(__FILE__) . '/LoyaltyModule.php'; $totalPrice = 0; $details = OrderReturn::getOrdersReturnDetail((int) $params['orderReturn']->id); foreach ($details as $detail) { $price_wt = Db::getInstance()->getValue(' SELECT product_price * (1 + (tax_rate / 100)) price FROM ' . _DB_PREFIX_ . 'order_detail od WHERE id_order_detail = ' . (int) $detail['id_order_detail']); $totalPrice += number_format($price_wt, 2, '.', '') * $detail['product_quantity']; } $loyaltyNew = new LoyaltyModule(); $loyaltyNew->points = (int) (-1 * LoyaltyModule::getNbPointsByPrice($totalPrice)); $loyaltyNew->id_loyalty_state = (int) LoyaltyStateModule::getCancelId(); $loyaltyNew->id_order = (int) $params['orderReturn']->id_order; $loyaltyNew->id_customer = (int) $params['orderReturn']->id_customer; $loyaltyNew->save(); }