/**
  * @param $aDatas
  * @param $aNewData
  */
 public function checkImport($aDatas, &$aNewData)
 {
     foreach ($aDatas as $aData) {
         // Initialisation
         $aData['error'] = "";
         if (!array_key_exists('product_reference', $aData)) {
             $aData['product_reference'] = '';
         }
         if (!array_key_exists('product_id', $aData)) {
             $aData['product_id'] = '';
         }
         if (empty($aData['product_reference']) && empty($aData['product_id'])) {
             $aData['error'] = $this->module->l('Product reference and product ID is empty.', 'AdminNowAllImport');
             continue;
         } else {
             // On vérifie l'Id produit si il existe
             if (empty($aData['product_id']) || !NowProduct::isRealProduct($aData['product_id'])) {
                 // Get product by product reference
                 if (empty($aData['product_reference']) || !($aData['product_id'] = NowProduct::getIdProductByProductReference($aData['product_reference']))) {
                     $aData['error'] = sprintf($this->module->l('Product reference doesn\'t exist: "%s".', 'AdminNowAllImport'), $aData['product_reference']);
                 }
             }
             // On récuprère les informations du produit
             $aProduct = NowProduct::getProductLight($aData['product_id']);
             // On récupère le nouveau type de produit
             if (!empty($aData['id_now_product_type'])) {
                 $oNewNowProductType = NowProductType::getObjectByIdProductType($aData['id_now_product_type'], Context::getContext()->language->id);
                 if (Validate::isLoadedObject($oNewNowProductType)) {
                     // On récupère l'ancien type de produit
                     $oOldNowProductType = NowProductType::getObjectByIdProduct($aProduct['id_product'], Context::getContext()->language->id);
                     if (Validate::isLoadedObject($oOldNowProductType)) {
                         $oldproductTypeName = $oOldNowProductType->name;
                     }
                     $aData['product_type'] = $oNewNowProductType->name . ' ' . (isset($oldproductTypeName) && $oOldNowProductType->id != $oNewNowProductType->id ? sprintf($this->module->l('(Old: %s)', 'AdminNowAllImport'), $oldproductTypeName) : '');
                 } else {
                     $aData['error'] = sprintf($this->module->l('Product type ID doesn\'t exist: "%s".', 'AdminNowAllImport'), $aData['id_now_product_type']);
                 }
             }
         }
         $aNewData[] = array('id_product' => isset($aProduct['id_product']) ? $aProduct['id_product'] : '', 'product_name' => isset($aProduct['name']) ? $aProduct['name'] : '', 'product_reference' => isset($aProduct['reference']) ? $aProduct['reference'] : '', 'active' => isset($aData['active']) ? $aData['active'] : '', 'accessories' => isset($aData['accessories']) ? $aData['accessories'] : '', 'new_accessories' => isset($aData['accessories']) ? $this->getNewAccessories($aData['accessories']) : '', 'old_accessories' => isset($aData['product_id']) ? $this->getOldAccessories($aData['product_id']) : '', 'id_now_product_type' => isset($aData['id_now_product_type']) ? $aData['id_now_product_type'] : '', 'product_type' => isset($aData['product_type']) ? $aData['product_type'] : '', 'ideas_tips' => isset($aData['ideas_tips']) ? $aData['ideas_tips'] : '', 'new_ideas_tips' => isset($aData['ideas_tips']) ? $this->getNewIdeasOrTips($aData['ideas_tips']) : '', 'old_ideas_tips' => isset($aData['product_id']) ? $this->getOldIdeasOrTips($aData['product_id']) : '', 'products_pack' => isset($aData['products_pack']) ? $aData['products_pack'] : '', 'new_products_pack' => isset($aData['products_pack']) ? $this->getNewProductsPacks($aData['products_pack']) : '', 'old_products_pack' => isset($aData['product_id']) ? $this->getOldProductsPacks($aData['product_id']) : '', 'error' => isset($aData['error']) ? $aData['error'] : '');
     }
 }
 /**
  * @param $aDatas
  * @param $aNewData
  */
 public function checkIdeasOrTips($aDatas, &$aNewData)
 {
     foreach ($aDatas as $aData) {
         // Initialisation
         $aData['error'] = "";
         if (!array_key_exists('product_reference', $aData)) {
             $aData['product_reference'] = '';
         }
         if (!array_key_exists('product_id', $aData)) {
             $aData['product_id'] = '';
         }
         if (empty($aData['product_reference']) && empty($aData['product_id'])) {
             $aData['error'] = $this->module->l('Product reference and product ID is empty.', 'AdminNowImportTipsAndIdeas');
         }
         // On vérifie l'Id produit si il existe
         if (empty($aData['product_id']) || !NowProduct::isRealProduct($aData['product_id'])) {
             // Get product by product reference
             if (empty($aData['product_reference']) || !($aData['product_id'] = NowProduct::getIdProductByProductReference($aData['product_reference']))) {
                 $aData['error'] = sprintf($this->module->l('Product reference doesn\'t exist: "%s".', 'AdminNowImportTipsAndIdeas'), $aData['product_reference']);
             }
         }
         // On récuprère les informations du produit
         $aProduct = NowProduct::getProductLight($aData['product_id']);
         $aNewData[] = array('id_product' => $aProduct['id_product'], 'product_name' => $aProduct['name'], 'product_reference' => $aProduct['reference'], 'ideas_tips' => $aData['ideas_tips'], 'new_ideas_tips' => $this->getNewIdeasOrTips($aData['ideas_tips']), 'old_ideas_tips' => $this->getOldIdeasOrTips($aData['product_id']), 'error' => $aData['error']);
     }
 }
 public function checkProductTypes($aDatas, &$aNewData)
 {
     foreach ($aDatas as $aData) {
         // Initialisation
         $aData['error'] = "";
         if (!array_key_exists('product_reference', $aData)) {
             $aData['product_reference'] = '';
         }
         if (!array_key_exists('product_id', $aData)) {
             $aData['product_id'] = '';
         }
         if (empty($aData['product_reference']) && empty($aData['product_id'])) {
             $aData['error'] = $this->module->l('Product reference and product ID is empty.', 'AdminNowImportProductType');
         }
         // On vérifie l'Id produit si il existe
         if (empty($aData['product_id']) || !NowProduct::isRealProduct($aData['product_id'])) {
             // Get product by product reference
             if (empty($aData['product_reference']) || !($aData['product_id'] = NowProduct::getIdProductByProductReference($aData['product_reference']))) {
                 $aData['error'] = sprintf($this->module->l('Product reference doesn\'t exist: "%s".', 'AdminNowImportProductType'), $aData['product_reference']);
             }
         }
         // On récuprère les informations du produit
         $aProduct = NowProduct::getProductLight($aData['product_id']);
         // On récupère le nouveau type de produit
         $oNewNowProductType = NowProductType::getObjectByIdProductType($aData['id_now_product_type'], Context::getContext()->language->id);
         if (Validate::isLoadedObject($oNewNowProductType)) {
             $aData['new_product_type'] = $oNewNowProductType->name;
         } else {
             $aData['error'] = sprintf($this->module->l('Product type ID doesn\'t exist: "%s".', 'AdminNowImportProductType'), $aData['id_now_product_type']);
         }
         // On récupère l'ancien type de produit
         $oOldNowProductType = NowProductType::getObjectByIdProduct($aProduct['id_product'], Context::getContext()->language->id);
         if (Validate::isLoadedObject($oOldNowProductType)) {
             $aData['old_product_type'] = $oOldNowProductType->name;
         } else {
             $aData['old_product_type'] = '';
         }
         $aNewData[] = array('id_product' => $aProduct['id_product'], 'product_reference' => $aProduct['reference'], 'product_name' => $aProduct['name'], 'id_now_product_type' => $aData['id_now_product_type'], 'new_product_type' => $aData['new_product_type'], 'old_product_type' => $aData['old_product_type'], 'active' => $aData['active'], 'error' => $aData['error']);
     }
 }