示例#1
0
    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())');
    }
示例#2
0
 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;
 }
示例#3
0
    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();
    }
示例#4
0
    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();
    }