public static function insertDefaultData()
 {
     $defaultLanguage = intval(Configuration::get('PS_LANG_DEFAULT'));
     $default = new LoyaltyStateModule(LoyaltyStateModule::getDefaultId());
     $default->name[$defaultLanguage] = 'Validation';
     $default->save();
     $validation = new LoyaltyStateModule(LoyaltyStateModule::getValidationId());
     $validation->id_order_state = _PS_OS_DELIVERED_;
     $validation->name[$defaultLanguage] = 'Available';
     $validation->save();
     $cancel = new LoyaltyStateModule(LoyaltyStateModule::getCancelId());
     $cancel->id_order_state = _PS_OS_CANCELED_;
     $cancel->name[$defaultLanguage] = 'Canceled';
     $cancel->save();
     $convert = new LoyaltyStateModule(LoyaltyStateModule::getConvertId());
     $convert->name[$defaultLanguage] = 'Converted';
     $convert->save();
     $noneAward = new LoyaltyStateModule(LoyaltyStateModule::getNoneAwardId());
     $noneAward->name[$defaultLanguage] = 'Unavailable on discounts';
     $noneAward->save();
     return true;
 }
 public static function insertDefaultData()
 {
     $loyaltyModule = new Loyalty();
     $languages = Language::getLanguages();
     $defaultTranslations = array('default' => array('id_loyalty_state' => (int) LoyaltyStateModule::getDefaultId(), 'default' => $loyaltyModule->getL('Awaiting validation'), 'en' => 'Awaiting validation', 'fr' => 'En attente de validation'));
     $defaultTranslations['validated'] = array('id_loyalty_state' => (int) LoyaltyStateModule::getValidationId(), 'id_order_state' => Configuration::get('PS_OS_DELIVERED'), 'default' => $loyaltyModule->getL('Available'), 'en' => 'Available', 'fr' => 'Disponible');
     $defaultTranslations['cancelled'] = array('id_loyalty_state' => (int) LoyaltyStateModule::getCancelId(), 'id_order_state' => Configuration::get('PS_OS_CANCELED'), 'default' => $loyaltyModule->getL('Cancelled'), 'en' => 'Cancelled', 'fr' => 'Annulés');
     $defaultTranslations['converted'] = array('id_loyalty_state' => (int) LoyaltyStateModule::getConvertId(), 'default' => $loyaltyModule->getL('Already converted'), 'en' => 'Already converted', 'fr' => 'Déjà convertis');
     $defaultTranslations['none_award'] = array('id_loyalty_state' => (int) LoyaltyStateModule::getNoneAwardId(), 'default' => $loyaltyModule->getL('Unavailable on discounts'), 'en' => 'Unavailable on discounts', 'fr' => 'Non disponbile sur produits remisés');
     foreach ($defaultTranslations as $loyaltyState) {
         $state = new LoyaltyStateModule((int) $loyaltyState['id_loyalty_state']);
         if (isset($loyaltyState['id_order_state'])) {
             $state->id_order_state = (int) $loyaltyState['id_order_state'];
         }
         $state->name[(int) Configuration::get('PS_LANG_DEFAULT')] = $loyaltyState['default'];
         foreach ($languages as $language) {
             if (isset($loyaltyState[$language['iso_code']])) {
                 $state->name[(int) $language['id_lang']] = $loyaltyState[$language['iso_code']];
             }
         }
         $state->save();
     }
     return true;
 }
Exemple #3
0
 public function hookCancelProduct($params)
 {
     if (!Validate::isLoadedObject($params['order']) or !Validate::isLoadedObject($orderDetail = new OrderDetail(intval($params['id_order_detail'])))) {
         return false;
     }
     if (!Validate::isLoadedObject($loyalty = new LoyaltyModule(intval(LoyaltyModule::getByOrderId(intval($params['order']->id)))))) {
         return false;
     }
     $loyalty->points = $loyalty->points - LoyaltyModule::getNbPointsByPrice($orderDetail->product_price * (1 + $orderDetail->tax_rate / 100) * $orderDetail->product_quantity);
     $loyalty->id_loyalty_state = LoyaltyStateModule::getCancelId();
     return $loyalty->save();
     // Automatically "historize" the modification
 }
Exemple #4
0
 public function hookCancelProduct($params)
 {
     include_once dirname(__FILE__) . '/LoyaltyStateModule.php';
     include_once dirname(__FILE__) . '/LoyaltyModule.php';
     if (!Validate::isLoadedObject($params['order']) || !Validate::isLoadedObject($order_detail = new OrderDetail((int) $params['id_order_detail'])) || !Validate::isLoadedObject($loyalty = new LoyaltyModule((int) LoyaltyModule::getByOrderId((int) $params['order']->id)))) {
         return false;
     }
     $loyalty_new = new LoyaltyModule();
     $loyalty_new->points = -1 * LoyaltyModule::getNbPointsByPrice(number_format($order_detail->total_price_tax_incl, 2, '.', ''));
     $loyalty_new->id_loyalty_state = (int) LoyaltyStateModule::getCancelId();
     $loyalty_new->id_order = (int) $params['order']->id;
     $loyalty_new->id_customer = (int) $loyalty->id_customer;
     $loyalty_new->add();
     return;
 }
 public static function registerDiscount($cartRule)
 {
     if (!Validate::isLoadedObject($cartRule)) {
         die(Tools::displayError('Incorrect object CartRule.'));
     }
     $items = self::getAllByIdCustomer((int) $cartRule->id_customer, NULL, true);
     $associated = false;
     foreach ($items as $item) {
         $lm = new LoyaltyModule((int) $item['id_loyalty']);
         /* Check for negative points for this order */
         $negativePoints = (int) Db::getInstance()->getValue('SELECT SUM(points) points FROM ' . _DB_PREFIX_ . 'loyalty WHERE id_order = ' . (int) $f->id_order . ' AND id_loyalty_state = ' . (int) LoyaltyStateModule::getCancelId() . ' AND points < 0');
         if ($lm->points + $negativePoints <= 0) {
             continue;
         }
         $lm->id_cart_rule = (int) $cartRule->id;
         $lm->id_loyalty_state = (int) LoyaltyStateModule::getConvertId();
         $lm->save();
         $associated = true;
     }
     return $associated;
 }
Exemple #6
0
    public static function getPointsByCustomer($id_customer)
    {
        $return = Db::getInstance()->getRow('
		SELECT sum(f.points) AS points
		FROM `' . _DB_PREFIX_ . 'loyalty` f
		WHERE f.id_customer = ' . intval($id_customer) . '
		AND f.id_loyalty_state IN
			(' . intval(LoyaltyStateModule::getValidationId()) . ', ' . intval(LoyaltyStateModule::getCancelId()) . ', ' . intval(LoyaltyStateModule::getNoneAwardId()) . ')');
        return $return['points'];
    }
Exemple #7
0
 public function hookCancelProduct($params)
 {
     global $cookie;
     include_once dirname(__FILE__) . '/LoyaltyStateModule.php';
     include_once dirname(__FILE__) . '/LoyaltyModule.php';
     $orderDetail = '';
     if (!isset($params['order_detail']) || !Validate::isLoadedObject($params['order_detail'])) {
         if (Validate::isLoadedObject($orderDetail = new OrderDetail((int) $params['id_order_detail']))) {
             $orderDetail = get_object_vars($orderDetail);
         }
     } else {
         $orderDetail = get_object_vars($params['order_detail']);
     }
     if (!Validate::isLoadedObject($order = $params['order']) || !Validate::isLoadedObject($loyalty = new LoyaltyModule((int) LoyaltyModule::getByOrderId((int) $params['order']->id)))) {
         return false;
     }
     if (is_array($orderDetail) && count($orderDetail)) {
         $order->setProductPrices($orderDetail);
     } else {
         return false;
     }
     $qtyList = Tools::getValue('cancelQuantity');
     if (isset($qtyList[$orderDetail['id_order_detail']])) {
         $qtyList = abs((int) $qtyList[$orderDetail['id_order_detail']]);
     } else {
         $qtyList = (int) $orderDetail['product_quantity'];
     }
     $product_price = $order->getTaxCalculationMethod() == PS_TAX_EXC ? $orderDetail['product_price'] + $orderDetail['ecotax'] : $orderDetail['product_price_wt'];
     $points = (int) LoyaltyModule::getNbPointsByPrice(number_format($product_price, 2, '.', ''), (int) $params['order']->id_currency) * $qtyList;
     if (!$order->hasBeenDelivered()) {
         if ($points > $loyalty->points) {
             $points = (int) $loyalty->points;
         }
         $loyalty->points = $loyalty->points - $points;
         return $loyalty->save();
     } else {
         $loyaltyNew = new LoyaltyModule();
         $loyaltyNew->points = -1 * $points;
         $loyaltyNew->id_loyalty_state = (int) LoyaltyStateModule::getCancelId();
         $loyaltyNew->id_order = (int) $params['order']->id;
         $loyaltyNew->id_customer = (int) $loyalty->id_customer;
         return $loyaltyNew->add();
     }
     return false;
 }