diff --git a/.gitignore b/.gitignore
index e7f91a9e..25617dca 100755
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,6 @@ config_fr.xml
**/.DS_Store
config/marketplaces.json
tools/vars.sh
+.php_cs.cache
+.php-cs-fixer.cache
+.php-cs-fixer.dist.php
diff --git a/README.md b/README.md
index 3942e768..cbb4541c 100755
--- a/README.md
+++ b/README.md
@@ -1,9 +1,9 @@
# Lengow for PrestaShop
-- **Requires at least:** 1.7
-- **Tested up to:** 8.1.2
+- **Requires at least:** 1.7.7
+- **Tested up to:** 8.1.7
- **Requires PHP:** 7.4
-- **Stable tag:** 3.5.3
+- **Stable tag:** 3.5.4
- **License:** Apache-2.0
- **License URI:** http://www.apache.org/licenses/LICENSE-2.0
diff --git a/classes/controllers/LengowFeedController.php b/classes/controllers/LengowFeedController.php
index f42a9654..1cd46baf 100755
--- a/classes/controllers/LengowFeedController.php
+++ b/classes/controllers/LengowFeedController.php
@@ -236,6 +236,50 @@ public function postProcess()
}
echo json_encode($data);
break;
+ case 'update_fields':
+ $fields = Tools::getValue('fields');
+ $exportFeatures = Tools::getValue('LENGOW_EXPORT_PRODUCT_FEATURE_ENABLED');
+ if ($exportFeatures === 'on') {
+ LengowConfiguration::updateValue(
+ LengowConfiguration::EXPORT_PRODUCT_FEATURE_ENABLED,
+ 1
+ );
+ } else {
+ LengowConfiguration::updateValue(
+ LengowConfiguration::EXPORT_PRODUCT_FEATURE_ENABLED,
+ 0
+ );
+ }
+ if (is_array($fields)) {
+ foreach ($fields as $key => $field) {
+ if (in_array($field['prestashop_value'], ['id', 'category', 'name', 'price_incl_tax', 'language'])) {
+ $field['exported'] = '1';
+ }
+ $defaultKey = $key;
+ $prestashopValue = isset($field['prestashop_value']) ? pSQL($field['prestashop_value']) : '';
+ $lengowField = isset($field['lengow_field']) ? pSQL($field['lengow_field']) : '';
+ $exported = isset($field['exported']) ? (int) $field['exported'] : 0;
+
+ $sql = 'SELECT COUNT(*) FROM ' . _DB_PREFIX_ . 'lengow_exported_fields WHERE default_key = "' . $defaultKey . '"';
+ $exists = Db::getInstance()->getValue($sql);
+
+ if ($exists) {
+ $sql = 'UPDATE ' . _DB_PREFIX_ . 'lengow_exported_fields
+ SET prestashop_value = "' . $prestashopValue . '",
+ lengow_field = "' . $lengowField . '",
+ exported = "' . $exported . '"
+ WHERE default_key = "' . $defaultKey . '"';
+ } else {
+ $sql = 'INSERT INTO ' . _DB_PREFIX_ . 'lengow_exported_fields (default_key, prestashop_value, lengow_field, exported)
+ VALUES ("' . $defaultKey . '", "' . $prestashopValue . '", "' . $lengowField . '", "' . $exported . '")';
+ }
+
+ Db::getInstance()->execute($sql);
+ }
+
+ return Tools::redirectAdmin($this->lengowLink->getAbsoluteAdminLink('AdminLengowFeed'));
+ }
+ break;
}
exit;
}
@@ -246,6 +290,10 @@ public function postProcess()
*/
public function display()
{
+ $lengowExport = new LengowExport();
+ $fields = $lengowExport->getConfigFields();
+ $form = new LengowConfigurationForm(['fields' => LengowConfiguration::getKeys()]);
+ $exportFeatures = $form->buildInputs([LengowConfiguration::EXPORT_PRODUCT_FEATURE_ENABLED]);
$shopCollection = [];
if ($currentShop = Shop::getContextShopID()) {
$results = [['id_shop' => $currentShop]];
@@ -292,7 +340,13 @@ public function display()
'list' => $this->buildTable($shop->id),
];
}
+
+ $productsData = $lengowExport->getProductsListData();
+
$this->context->smarty->assign('shopCollection', $shopCollection);
+ $this->context->smarty->assign('fields', $fields);
+ $this->context->smarty->assign('json_products', $productsData);
+ $this->context->smarty->assign('export_features', $exportFeatures);
parent::display();
}
@@ -531,9 +585,9 @@ class="lgw-btn lengow_add_to_export">
$html .= '
';
$html .= ' ';
$html .= '' . $this->locale->t(
- 'product.screen.select_all_products',
- ['nb' => $this->list->getTotal()]
- );
+ 'product.screen.select_all_products',
+ ['nb' => $this->list->getTotal()]
+ );
$html .= '';
$html .= '
';
$html .= '';
diff --git a/classes/controllers/LengowOrderSettingController.php b/classes/controllers/LengowOrderSettingController.php
index fa7d1316..c0f21f23 100755
--- a/classes/controllers/LengowOrderSettingController.php
+++ b/classes/controllers/LengowOrderSettingController.php
@@ -42,6 +42,7 @@ public function display()
LengowConfiguration::SHIPPED_ORDER_ID,
LengowConfiguration::CANCELED_ORDER_ID,
LengowConfiguration::SHIPPED_BY_MARKETPLACE_ORDER_ID,
+ LengowConfiguration::SEND_EMAIL_DISABLED
]
);
$importParams = $form->buildInputs(
@@ -184,3 +185,4 @@ public function postProcess()
}
}
}
+
diff --git a/classes/models/LengowConfiguration.php b/classes/models/LengowConfiguration.php
index b870c780..89668630 100755
--- a/classes/models/LengowConfiguration.php
+++ b/classes/models/LengowConfiguration.php
@@ -85,6 +85,8 @@ class LengowConfiguration extends Configuration
public const LAST_UPDATE_PLUGIN_DATA = 'LENGOW_PLUGIN_DATA_UPDATE';
public const LAST_UPDATE_AUTHORIZATION_TOKEN = 'LENGOW_LAST_AUTH_TOKEN_UPDATE';
public const LAST_UPDATE_PLUGIN_MODAL = 'LENGOW_LAST_PLUGIN_MODAL';
+ public const SEND_EMAIL_DISABLED = 'LENGOW_SEND_EMAIL_DISABLED';
+ public const EXPORT_PRODUCT_FEATURE_ENABLED = 'LENGOW_EXPORT_PRODUCT_FEATURE_ENABLED';
/* Configuration parameters */
public const PARAM_COLLECTION = 'collection';
@@ -107,6 +109,7 @@ class LengowConfiguration extends Configuration
public const RETURN_TYPE_INTEGER = 'integer';
public const RETURN_TYPE_ARRAY = 'array';
public const RETURN_TYPE_STRING = 'string';
+ public const RETURN_TYPE_FLOAT = 'float';
/**
* @var array params correspondence keys for toolbox
@@ -168,6 +171,8 @@ class LengowConfiguration extends Configuration
self::LAST_UPDATE_PLUGIN_DATA => 'last_update_plugin_data',
self::LAST_UPDATE_AUTHORIZATION_TOKEN => 'last_update_authorization_token',
self::LAST_UPDATE_PLUGIN_MODAL => 'last_update_plugin_modal',
+ self::SEND_EMAIL_DISABLED => 'send_email_disabled',
+ self::EXPORT_PRODUCT_FEATURE_ENABLED => 'export_product_feature_enabled',
];
/**
@@ -436,7 +441,7 @@ public static function getKeys($key = null)
self::PARAM_LABEL => $locale->t('lengow_setting.lengow_import_days_title'),
self::PARAM_DEFAULT_VALUE => 3,
self::PARAM_UPDATE => true,
- self::PARAM_RETURN => self::RETURN_TYPE_INTEGER,
+ self::PARAM_RETURN => self::RETURN_TYPE_FLOAT,
],
self::ANONYMIZE_EMAIL => [
self::PARAM_TYPE => LengowConfigurationForm::TYPE_CHECKBOX,
@@ -575,6 +580,19 @@ public static function getKeys($key = null)
self::PARAM_GLOBAL => true,
self::PARAM_RETURN => self::RETURN_TYPE_INTEGER,
],
+ self::SEND_EMAIL_DISABLED => [
+ self::PARAM_TYPE => LengowConfigurationForm::TYPE_CHECKBOX,
+ self::PARAM_GLOBAL => true,
+ self::PARAM_RETURN => self::RETURN_TYPE_BOOLEAN,
+ self::PARAM_LABEL => $locale->t('lengow_setting.lengow_disable_send_email_title'),
+ self::PARAM_LEGEND => $locale->t('lengow_setting.lengow_disable_send_email_legend'),
+ ],
+ self::EXPORT_PRODUCT_FEATURE_ENABLED => [
+ self::PARAM_TYPE => LengowConfigurationForm::TYPE_CHECKBOX,
+ self::PARAM_GLOBAL => true,
+ self::PARAM_RETURN => self::RETURN_TYPE_BOOLEAN,
+ self::PARAM_LABEL => "Export product feature",
+ ],
];
}
@@ -1000,6 +1018,16 @@ public static function isProductionMode()
return self::getPluginEnvironment() === 'prod';
}
+ /**
+ * Will return the global the typed global value
+ * @return mixed
+ */
+ public static function getTypedGlobalValue($key)
+ {
+ $value = self::get($key);
+ return self::getValueWithCorrectType($key, $value);
+ }
+
/**
* Get configuration value in correct type
*
@@ -1023,9 +1051,12 @@ private static function getValueWithCorrectType($key, $value = null)
: [];
case self::RETURN_TYPE_STRING:
return (string) $value;
+ case self::RETURN_TYPE_FLOAT:
+ return (float) $value;
}
}
return $value;
}
}
+
diff --git a/classes/models/LengowExport.php b/classes/models/LengowExport.php
index c66acdc2..97967caf 100755
--- a/classes/models/LengowExport.php
+++ b/classes/models/LengowExport.php
@@ -85,66 +85,6 @@ class LengowExport
self::PARAM_GET_PARAMS,
];
- /**
- * @var array new fields for v3
- */
- protected $newFields = [
- 'id' => 'id',
- 'sku' => 'sku',
- 'sku_supplier' => 'sku_supplier',
- 'ean' => 'ean',
- 'upc' => 'upc',
- 'isbn' => 'isbn',
- 'name' => 'name',
- 'quantity' => 'quantity',
- 'minimal_quantity' => 'minimal_quantity',
- 'availability' => 'availability',
- 'is_virtual' => 'is_virtual',
- 'condition' => 'condition',
- 'category' => 'category',
- 'status' => 'status',
- 'url' => 'url',
- 'url_rewrite' => 'url_rewrite',
- 'price_excl_tax' => 'price_excl_tax',
- 'price_incl_tax' => 'price_incl_tax',
- 'price_before_discount_excl_tax' => 'price_before_discount_excl_tax',
- 'price_before_discount_incl_tax' => 'price_before_discount_incl_tax',
- 'price_wholesale' => 'price_wholesale',
- 'discount_percent' => 'discount_percent',
- 'discount_start_date' => 'discount_start_date',
- 'discount_end_date' => 'discount_end_date',
- 'ecotax' => 'ecotax',
- 'shipping_cost' => 'shipping_cost',
- 'shipping_delay' => 'shipping_delay',
- 'currency' => 'currency',
- 'image_url_1' => 'image_1',
- 'image_url_2' => 'image_2',
- 'image_url_3' => 'image_3',
- 'image_url_4' => 'image_4',
- 'image_url_5' => 'image_5',
- 'image_url_6' => 'image_6',
- 'image_url_7' => 'image_7',
- 'image_url_8' => 'image_8',
- 'image_url_9' => 'image_9',
- 'image_url_10' => 'image_10',
- 'type' => 'type',
- 'parent_id' => 'parent_id',
- 'variation' => 'variation',
- 'language' => 'language',
- 'description' => 'description',
- 'description_html' => 'description_html',
- 'description_short' => 'short_description',
- 'description_short_html' => 'short_description_html',
- 'tags' => 'tags',
- 'meta_title' => 'meta_title',
- 'meta_keyword' => 'meta_keywords',
- 'meta_description' => 'meta_description',
- 'manufacturer' => 'manufacturer',
- 'supplier' => 'supplier',
- 'weight' => 'weight',
- 'weight_unit' => 'weight_unit',
- ];
-
/**
* @var array legacy fields for export
*/
@@ -290,7 +230,7 @@ class LengowExport
/**
* @var array cache combination
*/
- protected $cacheCombination;
+ public $cacheCombination;
/**
* @var array excluded products for export
@@ -323,7 +263,7 @@ public function __construct($params = [])
$this->stream = isset($params[self::PARAM_STREAM]) ? $params[self::PARAM_STREAM] : false;
$this->limit = isset($params[self::PARAM_LIMIT]) ? (int) $params[self::PARAM_LIMIT] : false;
$this->idShop = (int) (
- isset($params[self::PARAM_SHOP_ID])
+ isset($params[self::PARAM_SHOP_ID])
? $params[self::PARAM_SHOP_ID]
: Context::getContext()->shop->id
);
@@ -506,9 +446,57 @@ public function setLegacyFields()
$this->legacy = false;
}
}
- self::$defaultFields = $this->legacy ? $this->legacyFields : $this->newFields;
+ self::$defaultFields = $this->legacy ? $this->legacyFields : $this->getNewFields();
+ }
+
+ /**
+ * Retrieves new fields from the lengow_exported_fields table
+ *
+ * @return array Array of fields and valuies
+ */
+ public function getNewFields()
+ {
+ $sql = 'SELECT prestashop_value, lengow_field, exported FROM ' . _DB_PREFIX_ . 'lengow_exported_fields';
+ $result = Db::getInstance()->executeS($sql);
+
+
+ $newFields = [];
+ if ($result) {
+ foreach ($result as $row) {
+ if ($row['exported'] === '1') {
+ $newFields[$row['lengow_field']] = $row['prestashop_value'];
+ }
+ }
+ }
+
+ return $newFields;
}
+ /**
+ * Retrieves fields config from the lengow_exported_fields table
+ *
+ * @return array Array of fields with their values
+ */
+ public function getConfigFields()
+ {
+ $sql = 'SELECT default_key, prestashop_value, lengow_field, exported FROM ' . _DB_PREFIX_ . 'lengow_exported_fields';
+ $result = Db::getInstance()->executeS($sql);
+
+ $newFields = [];
+ if ($result) {
+ foreach ($result as $row) {
+ $newFields[$row['default_key']] = [
+ 'prestashop_value' => $row['prestashop_value'],
+ 'lengow_field' => $row['lengow_field'],
+ 'exported' => $row['exported'],
+ ];
+ }
+ }
+
+ return $newFields;
+ }
+
+
/**
* Export products
*
@@ -831,31 +819,34 @@ protected function getFields()
$fields[] = $key;
$formattedFields[] = LengowFeed::formatFields($key, $this->format, $this->legacy);
}
- // get product Features
- $features = Feature::getFeatures($this->language->id);
- foreach ($features as $feature) {
- $formattedFeature = LengowFeed::formatFields($feature['name'], $this->format, $this->legacy);
- if (!in_array($formattedFeature, $formattedFields, true)) {
- $fields[] = $feature['name'];
- $formattedFields[] = $formattedFeature;
- } else {
- if ($this->legacy) {
- $fields[] = $feature['name'] . '_1';
+ if ((bool)LengowConfiguration::get(LengowConfiguration::EXPORT_PRODUCT_FEATURE_ENABLED)) {
+ // product Features
+ $features = Feature::getFeatures($this->language->id);
+ foreach ($features as $feature) {
+ $formattedFeature = LengowFeed::formatFields($feature['name'], $this->format, $this->legacy);
+ if (!in_array($formattedFeature, $formattedFields, true)) {
+ $fields[] = $feature['name'];
+ $formattedFields[] = $formattedFeature;
+ } else {
+ if ($this->legacy) {
+ $fields[] = $feature['name'] . '_1';
+ }
}
}
- }
- // if export product variations -> get variations attributes
- if ($this->variation) {
- $attributes = AttributeGroup::getAttributesGroups($this->language->id);
- foreach ($attributes as $attribute) {
- // don't export empty attributes
- if ($attribute['name'] === '') {
- continue;
- }
- $formattedAttribute = LengowFeed::formatFields($attribute['name'], $this->format, $this->legacy);
- if (!in_array($formattedAttribute, $formattedFields, true)) {
- $fields[] = $attribute['name'];
- $formattedFields[] = $formattedAttribute;
+
+ // if export product variations -> get variations attributes
+ if ($this->variation) {
+ $attributes = AttributeGroup::getAttributesGroups($this->language->id);
+ foreach ($attributes as $attribute) {
+ // don't export empty attributes
+ if ($attribute['name'] === '') {
+ continue;
+ }
+ $formattedAttribute = LengowFeed::formatFields($attribute['name'], $this->format, $this->legacy);
+ if (!in_array($formattedAttribute, $formattedFields, true)) {
+ $fields[] = $attribute['name'];
+ $formattedFields[] = $formattedAttribute;
+ }
}
}
}
@@ -989,4 +980,58 @@ public static function setAdditionalFieldsValues($product, $idProductAttribute =
return $arrayProduct;
}
+
+ public function getProductsListData() {
+ $lengowProduct = new LengowProduct();
+ $productsData = [];
+ try {
+ $exportFields = $this->getNewFields();
+ $products = $lengowProduct->getIdProductWithMostData();
+
+ foreach ($products as $p) {
+ $idProduct = (int)$p['id_product'];
+ $idProductAttribute = (int)$p['id_product_attribute'];
+
+ if (in_array($idProduct, $this->excludedProducts, true)) {
+ continue;
+ }
+
+ $productData = [];
+ $product = new LengowProduct($idProduct, $this->language->id, [
+ 'carrier' => $this->carrier,
+ 'image_size' => LengowProduct::getMaxImageType(),
+ 'language' => $this->language,
+ ]);
+
+ if ($idProduct) {
+ foreach ($exportFields as $field) {
+ $data = $product->getData($field, $idProductAttribute);
+ // Ensure data is properly encoded
+ $productData[$field] = $data;
+ }
+
+ $productsData[] = $productData;
+ }
+ }
+ } catch (Exception $e) {
+ LengowMain::log(LengowLog::CODE_EXPORT, LengowMain::setLogMessage('log.export.error', ['message' => $e->getMessage()]), $this->logOutput);
+ }
+
+ $lengowFeed = new LengowFeed(1, 'json', false);
+ $allProductsArray = [];
+
+ foreach ($productsData as $product) {
+ $productJson = $lengowFeed->getBody($product, true, 0);
+ if ($productJson !== false) {
+ $productArray = json_decode($productJson, true); // Decode the JSON string to an associative array
+ if (json_last_error() === JSON_ERROR_NONE) {
+ $allProductsArray[] = $productArray;
+ }
+ }
+ }
+
+ return json_encode($allProductsArray);
+ }
+
+
}
diff --git a/classes/models/LengowFeed.php b/classes/models/LengowFeed.php
index 17b35d1c..a8bf96c0 100755
--- a/classes/models/LengowFeed.php
+++ b/classes/models/LengowFeed.php
@@ -191,7 +191,7 @@ protected function getHeader($data)
return rtrim($header, self::CSV_SEPARATOR) . self::EOL;
case self::FORMAT_XML:
return '' . self::EOL
- . '' . self::EOL;
+ . '' . self::EOL;
case self::FORMAT_JSON:
return '{"catalog":[';
case self::FORMAT_YAML:
@@ -208,7 +208,7 @@ protected function getHeader($data)
*
* @return string
*/
- protected function getBody($data, $isFirst, $maxCharacter)
+ public function getBody($data, $isFirst, $maxCharacter)
{
switch ($this->format) {
case self::FORMAT_CSV:
@@ -387,23 +387,19 @@ public static function formatFields($str, $format, $legacy = false)
}
return Tools::substr(
- Tools::strtolower(
- preg_replace(
- '/[^a-zA-Z0-9_]+/',
- '',
- str_replace([' ', '\''], '_', LengowMain::replaceAccentedChars($str))
- )
+ preg_replace(
+ '/[^a-zA-Z0-9_]+/',
+ '',
+ str_replace([' ', '\''], '_', LengowMain::replaceAccentedChars($str))
),
0,
58
);
default:
- return Tools::strtolower(
- preg_replace(
- '/[^a-zA-Z0-9_]+/',
- '',
- str_replace([' ', '\''], '_', LengowMain::replaceAccentedChars($str))
- )
+ return preg_replace(
+ '/[^a-zA-Z0-9_]+/',
+ '',
+ str_replace([' ', '\''], '_', LengowMain::replaceAccentedChars($str))
);
}
}
diff --git a/classes/models/LengowHook.php b/classes/models/LengowHook.php
index d4562ba5..5cc21d80 100755
--- a/classes/models/LengowHook.php
+++ b/classes/models/LengowHook.php
@@ -117,7 +117,7 @@ public function registerHooks()
'displayBackOfficeHeader' => '1.6',
];
foreach ($lengowHooks as $hook => $version) {
- if ($version <= Tools::substr(_PS_VERSION_, 0, 3)) {
+ if ((float) $version <= (float) Tools::substr(_PS_VERSION_, 0, 3)) {
if ($this->module->isRegisteredInHook($hook)) {
continue;
}
@@ -178,9 +178,14 @@ public function hookFooter()
* Hook on order confirmation page to init order's product list
*
* @param array $args arguments of hook
+ *
+ * @return mixed null|void
*/
public function hookOrderConfirmation($args)
{
+ if (!isset($args['objOrder']) && !isset($args['order'])) {
+ return;
+ }
$i = 0;
$productsCart = [];
$order = isset($args['objOrder']) ? $args['objOrder'] : $args['order'];
@@ -234,6 +239,9 @@ public function hookOrderConfirmation($args)
*/
public function hookAdminOrder($args)
{
+ if (!isset($args['id_order'])) {
+ return;
+ }
if (LengowOrder::isFromLengow($args['id_order'])) {
$lengowLink = new LengowLink();
$locale = new LengowTranslation();
@@ -301,9 +309,17 @@ public function hookAdminOrder($args)
* Hook before an status' update to synchronize status with lengow
*
* @param array $args arguments of hook
+ *
+ * @return mixed null|void
*/
public function hookUpdateOrderStatus($args)
{
+ if (!isset($args['id_order'])) {
+ return;
+ }
+ if (!(bool) LengowConfiguration::get(LengowConfiguration::SEND_EMAIL_DISABLED)) {
+ return;
+ }
$lengowOrder = new LengowOrder($args['id_order']);
// not send state if we are on lengow import module
if (LengowImport::$currentOrder !== $lengowOrder->lengowMarketplaceSku
@@ -317,9 +333,14 @@ public function hookUpdateOrderStatus($args)
* Hook after an status' update to synchronize status with lengow
*
* @param array $args arguments of hook
+ *
+ * @return mixed null|void
*/
public function hookPostUpdateOrderStatus($args)
{
+ if (!isset($args['id_order'])) {
+ return;
+ }
$lengowOrder = new LengowOrder($args['id_order']);
// do nothing if order is not from Lengow or is being imported
if (LengowImport::$currentOrder !== $lengowOrder->lengowMarketplaceSku
@@ -344,9 +365,17 @@ public function hookPostUpdateOrderStatus($args)
* Update, if isset tracking number
*
* @param array $args arguments of hook
+ *
+ * @return mixed null|void
*/
public function hookActionObjectUpdateAfter($args)
{
+ if (!isset($args['object']->id)) {
+ return;
+ }
+ if (! $args['object'] instanceof Order) {
+ return;
+ }
if (($args['object'] instanceof Order) && LengowOrder::isFromLengow($args['object']->id)) {
$lengowOrder = new LengowOrder($args['object']->id);
@@ -366,3 +395,4 @@ public function hookActionObjectUpdateAfter($args)
}
}
}
+
diff --git a/classes/models/LengowImport.php b/classes/models/LengowImport.php
index c86b73ac..8b2ae66d 100755
--- a/classes/models/LengowImport.php
+++ b/classes/models/LengowImport.php
@@ -280,7 +280,7 @@ class LengowImport
* integer delivery_address_id Lengow delivery address id to synchronize
* integer id_order_lengow Lengow order id in PrestaShop
* integer shop_id Shop id for current synchronization
- * integer days Synchronization interval time
+ * float days Synchronization interval time
* integer limit Maximum number of new orders created
* boolean log_output Display log messages
* boolean debug_mode Activate debug mode
@@ -322,7 +322,7 @@ public function __construct($params = [])
$this->marketplaceSku = null;
// set the time interval
$this->setIntervalTime(
- isset($params[self::PARAM_DAYS]) ? (int) $params[self::PARAM_DAYS] : null,
+ isset($params[self::PARAM_DAYS]) ? (float) $params[self::PARAM_DAYS] : null,
isset($params[self::PARAM_CREATED_FROM]) ? $params[self::PARAM_CREATED_FROM] : null,
isset($params[self::PARAM_CREATED_TO]) ? $params[self::PARAM_CREATED_TO] : null
);
@@ -459,7 +459,7 @@ public static function restTimeToImport()
/**
* Set interval time for order synchronisation
*
- * @param int|null $days Import period
+ * @param float|null $days Import period
* @param string|null $createdFrom Import of orders since
* @param string|null $createdTo Import of orders until
*/
@@ -468,7 +468,12 @@ private function setIntervalTime($days = null, $createdFrom = null, $createdTo =
if ($createdFrom && $createdTo) {
// retrieval of orders created from ... until ...
$this->createdFrom = strtotime($createdFrom);
- $createdToTimestamp = strtotime($createdTo) + 86399;
+ if ($createdFrom === $createdTo) {
+ $createdToTimestamp = strtotime($createdTo) + self::MIN_INTERVAL_TIME - 1;
+ } else {
+ $createdToTimestamp = strtotime($createdTo);
+ }
+
$intervalTime = $createdToTimestamp - $this->createdFrom;
$this->createdTo = $intervalTime > self::MAX_INTERVAL_TIME
? $this->createdFrom + self::MAX_INTERVAL_TIME
@@ -477,20 +482,20 @@ private function setIntervalTime($days = null, $createdFrom = null, $createdTo =
return;
}
if ($days) {
- $intervalTime = $days * 86400;
+ $intervalTime = floor($days * self::MIN_INTERVAL_TIME);
$intervalTime = $intervalTime > self::MAX_INTERVAL_TIME ? self::MAX_INTERVAL_TIME : $intervalTime;
} else {
// order recovery updated since ... days
- $importDays = (int) LengowConfiguration::getGlobalValue(
+ $importDays = LengowConfiguration::getTypedGlobalValue(
LengowConfiguration::SYNCHRONIZATION_DAY_INTERVAL
);
- $intervalTime = $importDays * 86400;
+ $intervalTime = floor($importDays * self::MIN_INTERVAL_TIME);
// add security for older versions of the plugin
$intervalTime = $intervalTime < self::MIN_INTERVAL_TIME ? self::MIN_INTERVAL_TIME : $intervalTime;
$intervalTime = $intervalTime > self::MAX_INTERVAL_TIME ? self::MAX_INTERVAL_TIME : $intervalTime;
// get dynamic interval time for cron synchronisation
$lastImport = LengowMain::getLastImport();
- $lastSettingUpdate = (int) LengowConfiguration::getGlobalValue(
+ $lastSettingUpdate = LengowConfiguration::getTypedGlobalValue(
LengowConfiguration::LAST_UPDATE_SETTING
);
if ($this->typeImport === self::TYPE_CRON
diff --git a/classes/models/LengowImportOrder.php b/classes/models/LengowImportOrder.php
index d2d8dadf..e76f9ff7 100755
--- a/classes/models/LengowImportOrder.php
+++ b/classes/models/LengowImportOrder.php
@@ -1011,6 +1011,7 @@ private function createOrder()
$this->checkCarrierCompatibility($order);
if (LengowConfiguration::getGlobalValue(LengowConfiguration::ACTIVE_NEW_ORDER_HOOK)) {
// launch validateOrder hook for other plugin
+
$this->launchValidateOrderHook($order);
}
}
@@ -1219,11 +1220,11 @@ private function getCartData()
// generation of fictitious email
$billingData['email'] = $this->getCustomerEmail();
- if ((bool) LengowConfiguration::getGlobalValue(LengowConfiguration::ANONYMIZE_EMAIL)) {
+ if (LengowConfiguration::getTypedGlobalValue(LengowConfiguration::ANONYMIZE_EMAIL)) {
$domain = !LengowMain::getHost() ? 'prestashop.shop' : LengowMain::getHost();
- if ((int) LengowConfiguration::getGlobalValue(LengowConfiguration::TYPE_ANONYMIZE_EMAIL) === 0) {
+ if (LengowConfiguration::getTypedGlobalValue(LengowConfiguration::TYPE_ANONYMIZE_EMAIL) === 0) {
$billingData['email'] = md5($this->marketplaceSku . '-' . $this->marketplace->name) . '@' . strtolower($domain);
- } elseif ((int) LengowConfiguration::getGlobalValue(LengowConfiguration::TYPE_ANONYMIZE_EMAIL) === 1) {
+ } elseif (LengowConfiguration::getTypedGlobalValue(LengowConfiguration::TYPE_ANONYMIZE_EMAIL) === 1) {
$billingData['email'] = $this->marketplaceSku . '-' . $this->marketplace->name . '@' . $domain;
}
}
diff --git a/classes/models/LengowInstall.php b/classes/models/LengowInstall.php
index 0d5323ec..419d117d 100755
--- a/classes/models/LengowInstall.php
+++ b/classes/models/LengowInstall.php
@@ -43,6 +43,7 @@ class LengowInstall
LengowMethod::TABLE_METHOD_MARKETPLACE,
LengowMethod::TABLE_MARKETPLACE_METHOD_MARKETPLACE,
LengowMethod::TABLE_MARKETPLACE_METHOD_COUNTRY,
+ 'lengow_exported_fields',
];
/**
@@ -385,7 +386,7 @@ public static function dropTable()
$column = LengowAction::ARG_RETURN_TRACKING_NUMBER;
if (self::checkTableExists($name) && self::checkFieldExists($name, $column)) {
$sql = 'ALTER TABLE ' . _DB_PREFIX_ . 'order_carrier '
- . 'DROP COLUMN `' . Db::getInstance()->_escape($column) . '`;';
+ . 'DROP COLUMN `' . Db::getInstance()->_escape($column) . '`;';
Db::getInstance()->execute($sql);
LengowMain::log(
LengowLog::CODE_UNINSTALL,
@@ -395,7 +396,7 @@ public static function dropTable()
$column = LengowAction::ARG_RETURN_CARRIER;
if (self::checkTableExists($name) && self::checkFieldExists($name, $column)) {
$sql = 'ALTER TABLE ' . _DB_PREFIX_ . 'order_carrier '
- . 'DROP COLUMN `' . Db::getInstance()->_escape($column) . '`;';
+ . 'DROP COLUMN `' . Db::getInstance()->_escape($column) . '`;';
Db::getInstance()->execute($sql);
LengowMain::log(
LengowLog::CODE_UNINSTALL,
@@ -851,7 +852,7 @@ private function createLengowTables()
$column = LengowAction::ARG_RETURN_TRACKING_NUMBER;
if (self::checkTableExists($name) && !self::checkFieldExists($name, $column)) {
$sql = 'ALTER TABLE ' . _DB_PREFIX_ . 'order_carrier '
- . 'ADD COLUMN `' . $column . '` VARCHAR(64);';
+ . 'ADD COLUMN `' . $column . '` VARCHAR(64);';
Db::getInstance()->execute($sql);
LengowMain::log(
LengowLog::CODE_INSTALL,
@@ -866,7 +867,7 @@ private function createLengowTables()
$column = LengowAction::ARG_RETURN_CARRIER;
if (self::checkTableExists($name) && !self::checkFieldExists($name, $column)) {
$sql = 'ALTER TABLE ' . _DB_PREFIX_ . 'order_carrier '
- . 'ADD COLUMN `' . $column . '` VARCHAR(64);';
+ . 'ADD COLUMN `' . $column . '` VARCHAR(64);';
Db::getInstance()->execute($sql);
LengowMain::log(
LengowLog::CODE_INSTALL,
diff --git a/classes/models/LengowProduct.php b/classes/models/LengowProduct.php
index 105eef22..931abd28 100755
--- a/classes/models/LengowProduct.php
+++ b/classes/models/LengowProduct.php
@@ -628,7 +628,7 @@ protected function getShippingCost($idProductAttribute = null)
*
* @return string
*/
- protected function getImageLink($name, $idProductAttribute = null)
+ public function getImageLink($name, $idProductAttribute = null)
{
$index = explode('_', $name);
$idImage = $index[1] - 1;
@@ -1064,4 +1064,120 @@ public static function getMaxImageType()
}
throw new LengowException(LengowMain::setLogMessage('log.export.error_cant_find_image_size'));
}
+
+ public function getTopProductsWithScores($langId, $limit = 10)
+ {
+ $query = new DbQuery();
+
+ $query->select('p.id_product');
+ $query->select('pl.name AS product_name');
+ $query->select('pa.id_product_attribute');
+ $query->select('(LENGTH(pl.description) > 0) AS description_score');
+ $query->select('(LENGTH(pl.description_short) > 0) AS short_description_score');
+ $query->select('(SELECT COUNT(img.id_image) FROM ' . _DB_PREFIX_ . 'image img WHERE img.id_product = p.id_product) AS image_score');
+ $query->select('(SELECT COUNT(pa_inner.id_product_attribute) FROM ' . _DB_PREFIX_ . 'product_attribute pa_inner WHERE pa_inner.id_product = p.id_product) AS attribute_score');
+ $query->select('(SELECT COUNT(pf.id_feature) FROM ' . _DB_PREFIX_ . 'feature_product pf WHERE pf.id_product = p.id_product) AS feature_score');
+ $query->select('(SELECT COUNT(pt.id_tag) FROM ' . _DB_PREFIX_ . 'product_tag pt WHERE pt.id_product = p.id_product) AS tag_score');
+ $query->select('((LENGTH(pl.description) > 0) +
+ (LENGTH(pl.description_short) > 0) +
+ (SELECT COUNT(img.id_image) FROM ' . _DB_PREFIX_ . 'image img WHERE img.id_product = p.id_product) +
+ (SELECT COUNT(pa_inner.id_product_attribute) FROM ' . _DB_PREFIX_ . 'product_attribute pa_inner WHERE pa_inner.id_product = p.id_product) +
+ (SELECT COUNT(pf.id_feature) FROM ' . _DB_PREFIX_ . 'feature_product pf WHERE pf.id_product = p.id_product) +
+ (SELECT COUNT(pt.id_tag) FROM ' . _DB_PREFIX_ . 'product_tag pt WHERE pt.id_product = p.id_product)) AS total_score');
+
+ $query->from('product', 'p');
+ $query->innerJoin('product_lang', 'pl', 'p.id_product = pl.id_product');
+ $query->leftJoin('product_attribute', 'pa', 'p.id_product = pa.id_product');
+
+ $query->where('pl.id_lang = ' . (int)$langId);
+
+ // Trier par score total et limiter les résultats
+ $query->orderBy('total_score DESC');
+ $query->limit((int)$limit);
+
+ return Db::getInstance()->executeS($query);
+ }
+
+ public function getProductsWithMostImages()
+ {
+ $query = new DbQuery();
+ $query->select('p.id_product');
+ $query->select('pl.name AS product_name');
+ $query->select('COUNT(img.id_image) AS image_count');
+ $query->from('product', 'p');
+ $query->innerJoin('product_lang', 'pl', 'p.id_product = pl.id_product');
+ $query->leftJoin('image', 'img', 'p.id_product = img.id_product');
+ $query->where('pl.id_lang = ' . (int)Context::getContext()->language->id);
+ $query->groupBy('p.id_product');
+ $query->orderBy('image_count DESC');
+ $query->limit(5);
+
+ return Db::getInstance()->executeS($query);
+ }
+
+ public function getProductsWithoutAttributesWithMostCompletedData()
+ {
+ $query = new DbQuery();
+
+ $query->select('p.id_product');
+ $query->select('pl.name AS product_name');
+ $query->select('(LENGTH(pl.description) > 0) AS description_score');
+ $query->select('(LENGTH(pl.description_short) > 0) AS short_description_score');
+ $query->select('(SELECT COUNT(img.id_image) FROM ' . _DB_PREFIX_ . 'image img WHERE img.id_product = p.id_product) AS image_score');
+ $query->select('(SELECT COUNT(pf.id_feature) FROM ' . _DB_PREFIX_ . 'feature_product pf WHERE pf.id_product = p.id_product) AS feature_score');
+ $query->select('(SELECT COUNT(pt.id_tag) FROM ' . _DB_PREFIX_ . 'product_tag pt WHERE pt.id_product = p.id_product) AS tag_score');
+
+ $query->select('((LENGTH(pl.description) > 0) +
+ (LENGTH(pl.description_short) > 0) +
+ (SELECT COUNT(img.id_image) FROM ' . _DB_PREFIX_ . 'image img WHERE img.id_product = p.id_product) +
+ (SELECT COUNT(pf.id_feature) FROM ' . _DB_PREFIX_ . 'feature_product pf WHERE pf.id_product = p.id_product) +
+ (SELECT COUNT(pt.id_tag) FROM ' . _DB_PREFIX_ . 'product_tag pt WHERE pt.id_product = p.id_product)) AS total_score');
+
+ $query->from('product', 'p');
+ $query->innerJoin('product_lang', 'pl', 'p.id_product = pl.id_product');
+ $query->where('pl.id_lang = ' . (int)Context::getContext()->language->id);
+ $query->where('p.id_product NOT IN (
+ SELECT pa.id_product
+ FROM ' . _DB_PREFIX_ . 'product_attribute pa )');
+ $query->orderBy('total_score DESC');
+ $query->limit(5);
+
+ return Db::getInstance()->executeS($query);
+ }
+
+ public function getIdProductWithMostData()
+ {
+ $fullestProducts = $this->getTopProductsWithScores(Context::getContext()->language->id);
+ $productsWithMostImages = $this->getProductsWithMostImages();
+ $productsWithoutDeclinaison = $this->getProductsWithoutAttributesWithMostCompletedData();
+
+ $mergedProducts = array();
+
+ foreach ($fullestProducts as $product) {
+ $mergedProducts[] = array(
+ 'id_product' => $product['id_product'],
+ 'id_product_attribute' => isset($product['id_product_attribute']) ? $product['id_product_attribute'] : null
+ );
+ }
+
+ foreach ($productsWithMostImages as $product) {
+ $mergedProducts[] = array(
+ 'id_product' => $product['id_product'],
+ 'id_product_attribute' => isset($product['id_product_attribute']) ? $product['id_product_attribute'] : null
+ );
+ }
+
+ foreach ($productsWithoutDeclinaison as $product) {
+ $mergedProducts[] = array(
+ 'id_product' => $product['id_product'],
+ 'id_product_attribute' => isset($product['id_product_attribute']) ? $product['id_product_attribute'] : null
+ );
+ }
+
+ $uniqueProducts = array_unique($mergedProducts, SORT_REGULAR);
+
+ return $uniqueProducts;
+ }
+
+
}
diff --git a/config/checkmd5.csv b/config/checkmd5.csv
index bb56db00..9c7aeabd 100644
--- a/config/checkmd5.csv
+++ b/config/checkmd5.csv
@@ -2,502 +2,507 @@
/fr.php|0688c5e6237bf1c4ebf4d8f7a622a794
/index.php|be8b25f88c14bddd7711e4585ebae316
/it.php|14e76520f64429f3436543e904e13015
-/lengow.php|3f27e5572b83ccc642bbca8356d98c94
+/lengow.php|0501065a2845c43b50f412bd96a383df
/loader.php|b3d94d65d0a074088758bc1e50736a01
/config/index.php|be8b25f88c14bddd7711e4585ebae316
-/translations/en.csv|2969fbe9e927c5b2d912d3fb22fdb611
-/translations/es.csv|6d3e1f545996f2b879b1ec49a8082a91
-/translations/fr.csv|3d2f8a49921f213d77f30fd691db7588
+/translations/en.csv|c1fa909d896e79110157a196e4798356
+/translations/es.csv|b35c3fe5f77311edfe98c62a83cffe5d
+/translations/fr.csv|e1ab94fd478304addee79007a99d8809
/translations/index.php|be8b25f88c14bddd7711e4585ebae316
-/translations/it.csv|296a4fe57f67b1d61c805bd80cd39f9e
-/classes/controllers/LengowHomeController.php|124a1bb77383394555206b022b67a1ad
-/classes/controllers/LengowOrderSettingController.php|0e1cccfc4ea3c56e00d9ddece9e9f58d
-/classes/controllers/LengowDashboardController.php|60b83659efdecee33637ec4c0999aae3
-/classes/controllers/LengowMainSettingController.php|302aaed85a09d49dd92da005146f4165
-/classes/controllers/LengowOrderController.php|5e9145ead32502c3e2212b8746b0e5f8
-/classes/controllers/LengowToolboxController.php|48c875b7c202a21c9b5ee07e9ddbd4ae
-/classes/controllers/LengowLegalsController.php|14effece7503b9524c83f628d255d146
-/classes/controllers/LengowController.php|79069614553337166806e6d95a49a875
-/classes/controllers/LengowHelpController.php|e0b813a636dcf6a6910e8a2c7199931c
-/classes/controllers/index.php|a90243841e2e64a4ee2965d4dfa12491
-/classes/controllers/LengowFeedController.php|b9a4e1bfe6836ad7a648de8a2a79bf77
-/classes/models/LengowBackup.php|0b4ad4d2a965e7df0df4639dc3230423
-/classes/models/LengowExport.php|4b80f5d76bc1612177829c8325a06057
-/classes/models/LengowConfigurationForm.php|ba4ba2a08431bf6521c5b48c4a863ef5
-/classes/models/LengowCustomer.php|dfb59e7d5a8cb8c47fae3015c66607af
-/classes/models/LengowSync.php|cf6877bf01e2794b9d9c29989894ae14
-/classes/models/LengowConnector.php|93f0eacbf405a0d504d8685eabf794b2
-/classes/models/LengowLink.php|d658ea39cfbae6deefe2069fd92ad4fa
-/classes/models/LengowInstall.php|8850827d3b933feadc8d05329cfc0717
+/translations/it.csv|d7de44f7b342cdda5f0b6ae43fe5f26e
+/classes/index.php|a90243841e2e64a4ee2965d4dfa12491
+/classes/models/LengowInstall.php|23d6701683d5c10bd29945d1f2a4c318
+/classes/models/LengowMarketplace.php|a21f95bc5e68dbfe49d5db53c5b04625
+/classes/models/LengowProduct.php|b7952d0f3d20ce2b70eb88538cf0a51e
+/classes/models/LengowHook.php|e597634ab8cf408a91705f02de7bac5e
+/classes/models/LengowOrderError.php|a6764f224b3b42fdd5b5c765cef9aaaf
+/classes/models/LengowOrderCarrier.php|593f0e1ff6bc9611739de14b8f3d192a
+/classes/models/LengowFile.php|5a58b3cf03a99bfeb305abe048799206
+/classes/models/LengowList.php|31030820ccfc2ed94bfc5249c72d94f6
+/classes/models/index.php|a90243841e2e64a4ee2965d4dfa12491
+/classes/models/LengowShop.php|9f2898b82329096caedba902a30a0a6a
+/classes/models/LengowCatalog.php|48fb568b8823482ef6b1e7bc48122300
/classes/models/LengowException.php|8beecbf00b5c1c047ee19af552903439
-/classes/models/LengowConfiguration.php|d90bab53b02bfe8c599b41ee607660c0
-/classes/models/LengowLog.php|5ca3e0b79356d72945bb5fe721f4f246
-/classes/models/LengowHook.php|69e641ad00b04efa23b988c9183d2185
-/classes/models/LengowGender.php|be904df135ff78f17a55ea60ab1413d5
/classes/models/LengowToolbox.php|16c719778050e0492cbed92d2adf75e1
+/classes/models/LengowGender.php|be904df135ff78f17a55ea60ab1413d5
+/classes/models/LengowFeed.php|7dd97977afed7c00a6a5d3663e77b038
/classes/models/LengowCarrier.php|ec7de4fba34adbbb30cbde3ef9bb59c8
-/classes/models/LengowOrderError.php|a6764f224b3b42fdd5b5c765cef9aaaf
-/classes/models/LengowImportOrder.php|8104a5e8ea344a65f20b389f910d9291
-/classes/models/LengowOrderLine.php|749e718219adf697b559f88e998860df
-/classes/models/LengowTranslation.php|a3cf23bc8af338976a392f9d0bb146ca
+/classes/models/LengowLink.php|d658ea39cfbae6deefe2069fd92ad4fa
/classes/models/LengowCountry.php|3f0559f5ec914a4cec1ca7848204553b
-/classes/models/LengowPaymentModule.php|7b3d642f1ea4d80eb20571f6fbdfddb7
-/classes/models/LengowMethod.php|269ff651d60ba3e2604e3f4ee98ac883
-/classes/models/LengowOrderDetail.php|c0ea8445020fc1c49b3d9e7099650d7a
-/classes/models/LengowMarketplace.php|a21f95bc5e68dbfe49d5db53c5b04625
-/classes/models/LengowProduct.php|b7952d0f3d20ce2b70eb88538cf0a51e
-/classes/models/LengowCart.php|dd2dc66b0c046a3ef8461807d4432280
/classes/models/LengowMain.php|68ff3498a94537a51bc5e6b61bd854df
-/classes/models/LengowList.php|31030820ccfc2ed94bfc5249c72d94f6
-/classes/models/LengowOrderCarrier.php|593f0e1ff6bc9611739de14b8f3d192a
-/classes/models/LengowCatalog.php|48fb568b8823482ef6b1e7bc48122300
-/classes/models/LengowNameParser.php|24faacd2e9367fc4652784090b20d0d5
-/classes/models/LengowShop.php|9f2898b82329096caedba902a30a0a6a
/classes/models/LengowAddress.php|b6f361b8c5f658c41adb5b437166c5e3
-/classes/models/LengowFeed.php|0b1cac677bebaff745d54e60d20ef84e
-/classes/models/index.php|a90243841e2e64a4ee2965d4dfa12491
+/classes/models/LengowCart.php|dd2dc66b0c046a3ef8461807d4432280
+/classes/models/LengowPaymentModule.php|7b3d642f1ea4d80eb20571f6fbdfddb7
+/classes/models/LengowOrderDetail.php|c0ea8445020fc1c49b3d9e7099650d7a
/classes/models/LengowToolboxElement.php|20dbd4958f8914acd3d9654b9cde026a
-/classes/models/LengowImport.php|86292645321d62c92729ae482b8a503a
+/classes/models/LengowImport.php|27c9684c21cd1d34894df9bb3a968ec7
/classes/models/LengowAction.php|c697eb825f2d69baca255d94e0fa79d5
+/classes/models/LengowOrderLine.php|749e718219adf697b559f88e998860df
+/classes/models/LengowImportOrder.php|dac707f6938181c58deb518b0bd7f80b
+/classes/models/LengowTranslation.php|a3cf23bc8af338976a392f9d0bb146ca
/classes/models/LengowOrder.php|2ab9808c9ae021b403a94aa8f58a4b9f
-/classes/models/LengowFile.php|5a58b3cf03a99bfeb305abe048799206
-/classes/index.php|a90243841e2e64a4ee2965d4dfa12491
-/controllers/admin/AdminLengowMainSettingController.php|cb8b24a5405860c955a6e56faba62d08
-/controllers/admin/AdminLengowOrderController.php|3f287ca4f413ed8256694d45f873980f
-/controllers/admin/AdminLengowHelpController.php|d17ee58a9f6d2ebd84d55e76e4fd6055
-/controllers/admin/AdminLengowFeedController.php|4e7db60977fb58dc257a8be90245b637
-/controllers/admin/AdminLengowLegalsController.php|c61e9ab8da13e272606369772448b0c7
+/classes/models/LengowMethod.php|269ff651d60ba3e2604e3f4ee98ac883
+/classes/models/LengowConfigurationForm.php|ba4ba2a08431bf6521c5b48c4a863ef5
+/classes/models/LengowConnector.php|93f0eacbf405a0d504d8685eabf794b2
+/classes/models/LengowCustomer.php|dfb59e7d5a8cb8c47fae3015c66607af
+/classes/models/LengowBackup.php|0b4ad4d2a965e7df0df4639dc3230423
+/classes/models/LengowSync.php|cf6877bf01e2794b9d9c29989894ae14
+/classes/models/LengowLog.php|5ca3e0b79356d72945bb5fe721f4f246
+/classes/models/LengowConfiguration.php|1e89893aa7f1146e06d5d9fa635d061b
+/classes/models/LengowExport.php|a53265e0fcbf075ec91e761d21b3505a
+/classes/models/LengowNameParser.php|24faacd2e9367fc4652784090b20d0d5
+/classes/controllers/index.php|a90243841e2e64a4ee2965d4dfa12491
+/classes/controllers/LengowHelpController.php|e0b813a636dcf6a6910e8a2c7199931c
+/classes/controllers/LengowOrderSettingController.php|37302b5543075b99f68e986f641cbafc
+/classes/controllers/LengowController.php|79069614553337166806e6d95a49a875
+/classes/controllers/LengowFeedController.php|c2da3e52a7737e9a55ae3f8c7bb81a8f
+/classes/controllers/LengowDashboardController.php|60b83659efdecee33637ec4c0999aae3
+/classes/controllers/LengowMainSettingController.php|302aaed85a09d49dd92da005146f4165
+/classes/controllers/LengowToolboxController.php|48c875b7c202a21c9b5ee07e9ddbd4ae
+/classes/controllers/LengowOrderController.php|5e9145ead32502c3e2212b8746b0e5f8
+/classes/controllers/LengowHomeController.php|124a1bb77383394555206b022b67a1ad
+/classes/controllers/LengowLegalsController.php|14effece7503b9524c83f628d255d146
+/controllers/index.php|be8b25f88c14bddd7711e4585ebae316
+/controllers/admin/index.php|be8b25f88c14bddd7711e4585ebae316
/controllers/admin/AdminLengowHomeController.php|01a450088f055ac12f56201534732f19
+/controllers/admin/AdminLengowFeedController.php|4e7db60977fb58dc257a8be90245b637
/controllers/admin/AdminLengowDashboardController.php|e996a37046ab4b400a942c20c0310a7d
+/controllers/admin/AdminLengowOrderController.php|3f287ca4f413ed8256694d45f873980f
+/controllers/admin/AdminLengowMainSettingController.php|cb8b24a5405860c955a6e56faba62d08
+/controllers/admin/AdminLengowLegalsController.php|c61e9ab8da13e272606369772448b0c7
/controllers/admin/AdminLengowToolboxController.php|f40e82431eb689c849552a37cdf3da5a
/controllers/admin/AdminLengowOrderSettingController.php|1b8c3ea8b3797fd1d4b7fe2afeb375a9
-/controllers/admin/index.php|be8b25f88c14bddd7711e4585ebae316
-/controllers/index.php|be8b25f88c14bddd7711e4585ebae316
-/mails/gb/report.txt|de4160ab037db7fa1806b1dabe546a60
-/mails/gb/report.html|aa21eced7789f09a68ca474b04cc431e
-/mails/gb/index.php|be8b25f88c14bddd7711e4585ebae316
-/mails/it/report.txt|de4160ab037db7fa1806b1dabe546a60
-/mails/it/report.html|aa21eced7789f09a68ca474b04cc431e
-/mails/it/index.php|be8b25f88c14bddd7711e4585ebae316
+/controllers/admin/AdminLengowHelpController.php|d17ee58a9f6d2ebd84d55e76e4fd6055
+/mails/sv/index.php|be8b25f88c14bddd7711e4585ebae316
/mails/sv/report.txt|de4160ab037db7fa1806b1dabe546a60
/mails/sv/report.html|aa21eced7789f09a68ca474b04cc431e
-/mails/sv/index.php|be8b25f88c14bddd7711e4585ebae316
-/mails/fr/report.txt|de4160ab037db7fa1806b1dabe546a60
-/mails/fr/report.html|aa21eced7789f09a68ca474b04cc431e
-/mails/fr/index.php|be8b25f88c14bddd7711e4585ebae316
-/mails/nl/report.txt|de4160ab037db7fa1806b1dabe546a60
-/mails/nl/report.html|aa21eced7789f09a68ca474b04cc431e
-/mails/nl/index.php|be8b25f88c14bddd7711e4585ebae316
-/mails/en/report.txt|de4160ab037db7fa1806b1dabe546a60
-/mails/en/report.html|aa21eced7789f09a68ca474b04cc431e
-/mails/en/index.php|be8b25f88c14bddd7711e4585ebae316
-/mails/es/report.txt|de4160ab037db7fa1806b1dabe546a60
-/mails/es/report.html|aa21eced7789f09a68ca474b04cc431e
-/mails/es/index.php|be8b25f88c14bddd7711e4585ebae316
/mails/index.php|be8b25f88c14bddd7711e4585ebae316
+/mails/it/index.php|be8b25f88c14bddd7711e4585ebae316
+/mails/it/report.txt|de4160ab037db7fa1806b1dabe546a60
+/mails/it/report.html|aa21eced7789f09a68ca474b04cc431e
+/mails/pt/index.php|be8b25f88c14bddd7711e4585ebae316
/mails/pt/report.txt|de4160ab037db7fa1806b1dabe546a60
/mails/pt/report.html|aa21eced7789f09a68ca474b04cc431e
-/mails/pt/index.php|be8b25f88c14bddd7711e4585ebae316
+/mails/gb/index.php|be8b25f88c14bddd7711e4585ebae316
+/mails/gb/report.txt|de4160ab037db7fa1806b1dabe546a60
+/mails/gb/report.html|aa21eced7789f09a68ca474b04cc431e
+/mails/nl/index.php|be8b25f88c14bddd7711e4585ebae316
+/mails/nl/report.txt|de4160ab037db7fa1806b1dabe546a60
+/mails/nl/report.html|aa21eced7789f09a68ca474b04cc431e
+/mails/de/index.php|be8b25f88c14bddd7711e4585ebae316
/mails/de/report.txt|de4160ab037db7fa1806b1dabe546a60
/mails/de/report.html|aa21eced7789f09a68ca474b04cc431e
-/mails/de/index.php|be8b25f88c14bddd7711e4585ebae316
+/mails/fr/index.php|be8b25f88c14bddd7711e4585ebae316
+/mails/fr/report.txt|de4160ab037db7fa1806b1dabe546a60
+/mails/fr/report.html|aa21eced7789f09a68ca474b04cc431e
+/mails/es/index.php|be8b25f88c14bddd7711e4585ebae316
+/mails/es/report.txt|de4160ab037db7fa1806b1dabe546a60
+/mails/es/report.html|aa21eced7789f09a68ca474b04cc431e
+/mails/en/index.php|be8b25f88c14bddd7711e4585ebae316
+/mails/en/report.txt|de4160ab037db7fa1806b1dabe546a60
+/mails/en/report.html|aa21eced7789f09a68ca474b04cc431e
+/upgrade/update_3.5.4.php|ec694dd56a2ff2bf86b08702c458994c
+/upgrade/index.php|a90243841e2e64a4ee2965d4dfa12491
/upgrade/update_3.0.2.php|ee99924a6b556bd82ee52f7966f45bac
-/upgrade/update_3.2.2.php|192eb7b032dead89666ffe41b1ba8646
-/upgrade/update_3.2.3.php|7c168fc6b974f17dea3f4879acee71d6
/upgrade/update_3.0.1.php|715cedb6c2f1d9651e84ea2a6b54939d
-/upgrade/index.php|a90243841e2e64a4ee2965d4dfa12491
+/upgrade/update_3.2.3.php|7c168fc6b974f17dea3f4879acee71d6
+/upgrade/update_3.2.2.php|192eb7b032dead89666ffe41b1ba8646
/upgrade/update_3.0.0.php|f1f09d1725b39114b4fa4e51583668c3
-/views/js/select2.js|2565df263f3a062418fb9ef1202d7e4e
+/views/.DS_Store|1f5ad4a4cb09949ac2d21d5ea1407e34
+/views/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/css/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/css/select2.css|8969ac4614d64a13dfc32e1eb4e731f7
+/views/css/font-awesome.css|bf4b58c946c9234e4a6b9f7a70d38006
+/views/css/lengow-pages.css|ca4b43a727cf775482ff5c53a4c80164
+/views/css/bootstrap-datepicker.css|d5260247b97663d887f4efe8ec894353
+/views/css/lengow-components.css|917e753f22a48aa28f4ccfbf1184e8a0
+/views/css/lengow-tab.css|5b6066640ae15dce94cd2225d84cec50
+/views/css/lengow-layout.css|4138aa929a5dcd6a44ca640cbd81894e
+/views/js/bootstrap-datepicker.js|5e12aafeadd2893b88641fa55e102dd7
+/views/js/index.php|be8b25f88c14bddd7711e4585ebae316
/views/js/clipboard.js|55db0ff82a3b6b247844ae0d07d85fc6
/views/js/bootstrap.min.js|3584d6a859bebce245bae0a6e0606e2f
-/views/js/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/js/jquery.1.12.0.min.js|e63f1452800f328881a789956054aca3
+/views/js/select2.js|2565df263f3a062418fb9ef1202d7e4e
/views/js/lengow/order.js|53696be1ee061487de8230f8312ad4b4
-/views/js/lengow/admin.js|62eeab452a15d83278e4d0c6dcdc50a1
-/views/js/lengow/main_setting.js|1bfae4b8bf1c6ba01def0ef3a36d462c
-/views/js/lengow/feed.js|a7a0ea439567693a141121bda090f611
+/views/js/lengow/feed.js|386d0d7c79724ba6c157656144688f4d
+/views/js/lengow/index.php|be8b25f88c14bddd7711e4585ebae316
/views/js/lengow/toolbox.js|72db7b5a4e5b19702770ad899b5f3e9a
/views/js/lengow/home.js|1f2e8c28ae870b3476483d3759f76964
/views/js/lengow/order_setting.js|7f4ef586c987fbddf686945149fe18a9
-/views/js/lengow/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/js/bootstrap-datepicker.js|5e12aafeadd2893b88641fa55e102dd7
-/views/img/bag.png|d812d529e1b5404cf7b92d4f36ab7abd
-/views/img/connection-module.png|edb3364c8b46d07cbaa7192944f01475
-/views/img/carret-down.png|f54e84c999caf3849f56fcf6537141bc
-/views/img/search.png|7f9b41e3ae4871543c2962369b9de277
-/views/img/plug-grey.png|4231ef1a002a23decaa0e3e292a417fc
-/views/img/arrow-right.png|e56e5bb1dd1c9e23161dd7f0aa4293d2
-/views/img/modal-close.png|32cadb3a7cfff33ff4d79b53b817f8e2
-/views/img/home-orders.png|db05b21ec6b166d844b42c0e807cb265
+/views/js/lengow/admin.js|62eeab452a15d83278e4d0c6dcdc50a1
+/views/js/lengow/main_setting.js|1bfae4b8bf1c6ba01def0ef3a36d462c
+/views/js/jquery.1.12.0.min.js|e63f1452800f328881a789956054aca3
/views/img/plugin-update.png|a350fb0045bd61298a90268d0026e022
-/views/img/lengow-blue.png|fae0834ea05ab923912a47bbcb3af59b
-/views/img/unplugged.png|55b5eeee08952d538185a659abbbb932
-/views/img/plane.png|7d27896af3e0f3cf6e353cccef8f8267
-/views/img/clock.png|499ea8d7905f77624cb64b1af3f955b5
-/views/img/lengow-white.png|0324647d065652cd15282d7fac4ef8ff
-/views/img/connected-prestashop.png|190c1dd936024ad8bb95d42491e7fe1e
-/views/img/flag/XK.png|6d8d386104193e251f4c3077e5bf5d3b
-/views/img/flag/PE.png|2213daa82fbd4344c53ed14272064ed3
-/views/img/flag/PY.png|47ba6b57d21f58b4e206251230b19ac8
-/views/img/flag/MO.png|9e22cff886b227b7c66a7299cee60c4a
-/views/img/flag/VI.png|e69dce8e3db81cbc4e43f41b41eb5de7
-/views/img/flag/GN.png|37244e09a030931a398207bbed599818
-/views/img/flag/BH.png|4c735715f2b57bf14008bc277ba43c51
-/views/img/flag/PA.png|9407681f91e287935c4a7f987da34c63
-/views/img/flag/RU.png|784a2a8638e99ff3e7d229be90b4f420
-/views/img/flag/EG.png|22e30f3af14155502c2f4a4819bcf799
-/views/img/flag/JO.png|30a9129bf6502226ba7fd9da08e4b35c
-/views/img/flag/SI.png|87f0819a7674137b062db99f7b888af7
-/views/img/flag/LA.png|73e8e91f8cec75bc2cb582effb937212
-/views/img/flag/CF.png|5f181e4dc309c220174c64376759a89a
-/views/img/flag/SD.png|fa421effd81aa5f626083d0b2474853b
-/views/img/flag/DJ.png|5ddb0d34fd83107a3d83e18880fa0305
-/views/img/flag/BE.png|a538d77b0d0e599095ca6db2ada1c2f3
+/views/img/carret-down.png|f54e84c999caf3849f56fcf6537141bc
+/views/img/flag/TG.png|e2cf3a5f662ba166b85bf7a224d9ded9
/views/img/flag/ME.png|b9d7ebeaa14eaf5c2132098e57ac3b3a
-/views/img/flag/GM.png|d5273ab5a2bb48c0678db55894849363
-/views/img/flag/IL.png|ca066a0cb246da38676b6a4930b29971
-/views/img/flag/AU.png|ab3991ad7489bf384fb5446222bb48c6
-/views/img/flag/GQ.png|a3535b533b2af91719ba770f308ceb67
-/views/img/flag/BV.png|2f9326738982ae4876fc7f0f0960c77e
-/views/img/flag/IR.png|304c0bf838a4fbc343b85f2a0c252d1b
-/views/img/flag/ST.png|c879c939fdce2c819a2f80f1680580d2
-/views/img/flag/VC.png|04d50353949376995d0ca8827fd35241
-/views/img/flag/BN.png|54fbed23e5e0467e10530f00e5a53d8a
-/views/img/flag/AR.png|2c0793e851675c4178e6c623bedada68
-/views/img/flag/VG.png|cd80422040f3569cdee8fe37c9ac233b
-/views/img/flag/DK.png|4c8c04806671345cacfabbd0781aaa64
-/views/img/flag/CM.png|7944de5a7885828172fe267c5f0bd666
-/views/img/flag/IE.png|6882a56174318552db95a58dc4bc295c
-/views/img/flag/ES.png|6db63d7e4bee7add3ead8eb95c9668e8
-/views/img/flag/CC.png|7fecb4864f239d8d672d4dd0c780797c
-/views/img/flag/CO.png|e9239e0e2019b75b50908273696037a5
+/views/img/flag/LA.png|73e8e91f8cec75bc2cb582effb937212
/views/img/flag/MR.png|88251c8ae9701c1c130b51c206462216
-/views/img/flag/LS.png|424c47d3ce5111e4f646abcfafc652be
-/views/img/flag/MX.png|4585eaa23399ff97b0edddebc9548733
-/views/img/flag/MW.png|eaadfcd54efd99816aa1e98cde55b48a
-/views/img/flag/SY.png|5f25bd15bf8a63c5f55b36a63ad029b5
-/views/img/flag/TD.png|c09a11652d7215dbbb86b9f2e08e1eaa
-/views/img/flag/NL.png|f9da0a905e9fec2ff6a12d52b0bae61c
-/views/img/flag/KM.png|130b19dbbed58a2896335af73c1a7ff2
-/views/img/flag/NU.png|d89e7c94b030bb809a10231c0ee38e8e
-/views/img/flag/CR.png|fb27f4596f9ac16b951e0f017dbeaa2b
-/views/img/flag/LY.png|cc1fe9b7e51a1ffa91c5f79d26043a25
-/views/img/flag/PR.png|587404b281120855ff304375851e3793
-/views/img/flag/VE.png|60739b59a02254e88e103f154f434087
-/views/img/flag/BZ.png|9481ccc9362b14353caa982b525793a8
-/views/img/flag/TV.png|87b460b75260e3da93f06e56840a95b9
-/views/img/flag/CL.png|6e05e10bbad0945a6a0ac4f72de351bd
-/views/img/flag/LI.png|ba8539c6542d4d7e443a10f91bea414c
-/views/img/flag/HT.png|3dd1a60ae95e7348b00fa8c1bffd0258
-/views/img/flag/HK.png|9e22cff886b227b7c66a7299cee60c4a
+/views/img/flag/NI.png|7f337fe073caff1ecb41acae6a9d1e3d
+/views/img/flag/LV.png|48efa49e2a85e9c077be41542ad17a1a
+/views/img/flag/OM.png|03760a212630cc7c0e5471df8281355e
+/views/img/flag/AF.png|49d77e12111afc3d4194ade2664d286f
+/views/img/flag/CY.png|eb2365a3603d60aff08f3c50cc87f249
+/views/img/flag/BJ.png|e0db6fe266bf66ddebe037bc574a930d
+/views/img/flag/AQ.png|7b496e199605b532dba8319044097d7e
+/views/img/flag/CN.png|9e22cff886b227b7c66a7299cee60c4a
+/views/img/flag/CO.png|e9239e0e2019b75b50908273696037a5
+/views/img/flag/CX.png|3f3aba1069496a40934637cf4b4f766c
+/views/img/flag/AG.png|3e96767508f891bee4e18b0879197059
+/views/img/flag/MS.png|ecfd4b85afd85b8bf8c531f8e6255cae
+/views/img/flag/MD.png|2b7d7b14d52f8fe8d800c000f2ddd0a9
+/views/img/flag/ZM.png|90feb476b1cf845ec389074f32585c34
+/views/img/flag/ZZ.png|737e91fb2b9da9e69ab2495a49cce79d
/views/img/flag/VN.png|8c03bf96d845425cda900ed4cf965193
-/views/img/flag/TC.png|1988184525b5d9410d8bbc07fca834c0
+/views/img/flag/TF.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/TD.png|c09a11652d7215dbbb86b9f2e08e1eaa
+/views/img/flag/YT.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/LB.png|a40045be63d6f413ff91c9b5867aa880
+/views/img/flag/MF.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/LU.png|b30b097b3f764af26f3fc551e10b62fa
/views/img/flag/MQ.png|cc1fc719aa70170cf59aa97989f32fca
-/views/img/flag/ER.png|098530d2dfadf464e46eeb7b67f88391
-/views/img/flag/SV.png|7f337fe073caff1ecb41acae6a9d1e3d
-/views/img/flag/GI.png|ecfd4b85afd85b8bf8c531f8e6255cae
-/views/img/flag/SN.png|1a524290e23411b9f33e2e4426cb2d40
-/views/img/flag/NF.png|380b2fedcc87649ed83992a0e8fcfcc8
+/views/img/flag/CZ.png|c29892cb415d8489c5e4024a867fe8b6
+/views/img/flag/AE.png|ea9875d8e8afafed9f07e63e7fae0b3d
+/views/img/flag/CM.png|7944de5a7885828172fe267c5f0bd666
+/views/img/flag/BI.png|2bc04f56f098abfd22ec8dc9b4d25c6f
+/views/img/flag/AR.png|2c0793e851675c4178e6c623bedada68
/views/img/flag/AS.png|6e81163a35de2f77ef3feb9ff4c36819
-/views/img/flag/GD.png|2f520ce09043643b7252eb0ce75a3d0c
-/views/img/flag/PM.png|cc1fc719aa70170cf59aa97989f32fca
-/views/img/flag/EH.png|64c0643f5f65257b22dd3bb070d3acf5
-/views/img/flag/NR.png|0d5e83ccb1ccd3a8f02fc61acaa6e47b
-/views/img/flag/MU.png|026a9a35bf226c5466e85912d37c80ec
-/views/img/flag/DM.png|863a58ff3765e2285d6b2f519620640e
-/views/img/flag/PK.png|bb24b773e81e7daebc3ba3e263e67c20
-/views/img/flag/FJ.png|dabe04af951004527f0b1094cfd218d1
-/views/img/flag/CD.png|1a91773608e0dc37943f2e3b64e2fd74
-/views/img/flag/ET.png|a8ccdaec951da596214f55351e1ce618
+/views/img/flag/BH.png|4c735715f2b57bf14008bc277ba43c51
+/views/img/flag/CL.png|6e05e10bbad0945a6a0ac4f72de351bd
+/views/img/flag/AD.png|ca92647387865e00fd0128eea3c0b3f0
+/views/img/flag/MP.png|6c26816f5aaeae7d369b60fce14da9db
+/views/img/flag/LT.png|6a8428cf97967d9726f9a78277fec777
+/views/img/flag/MG.png|1d31e4ce165056179bbe39248a7170cc
+/views/img/flag/LC.png|92badafa246492aed1cffb0bb913a21b
/views/img/flag/TR.png|ae9e141ce534888b8b298f3a63d36e38
-/views/img/flag/KZ.png|1944b754503564c281ce18e5902229e9
-/views/img/flag/UY.png|bb2ddc17d73acbc625c0ec8ab5ff51c4
-/views/img/flag/GP.png|cc1fc719aa70170cf59aa97989f32fca
-/views/img/flag/BG.png|aad68b8269f4c43558b53089c6e42d71
-/views/img/flag/UM.png|6c26816f5aaeae7d369b60fce14da9db
-/views/img/flag/FR.png|cc1fc719aa70170cf59aa97989f32fca
-/views/img/flag/LV.png|48efa49e2a85e9c077be41542ad17a1a
-/views/img/flag/JP.png|e6f8733f45d9c7ac9dcf834aba625cbb
-/views/img/flag/GU.png|49c3a9df1fe4d853a0a5fc76e3270b20
-/views/img/flag/DE.png|d8cd6c8e3fa88c3a5d71aade7691711d
-/views/img/flag/ZZ.png|737e91fb2b9da9e69ab2495a49cce79d
-/views/img/flag/SR.png|0a74189d8580fae462170f51fdfd5b9b
-/views/img/flag/TN.png|fb43183a6891caf1600763cb51cde4a5
-/views/img/flag/GL.png|4c8c04806671345cacfabbd0781aaa64
-/views/img/flag/TK.png|3f70b39454fe3d56ea975185438edeb0
-/views/img/flag/TT.png|3dd6607f691fdc7244b08e30f9cb5266
-/views/img/flag/KI.png|da6b34f01691dfaaad7424078d741a6a
-/views/img/flag/MF.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/UA.png|01969d09f7817a4ed6b9f152123fd5fa
+/views/img/flag/TV.png|87b460b75260e3da93f06e56840a95b9
+/views/img/flag/VI.png|e69dce8e3db81cbc4e43f41b41eb5de7
+/views/img/flag/TA.png|ecfd4b85afd85b8bf8c531f8e6255cae
+/views/img/flag/MT.png|a31f908619bd13739d39dfca7d3900a4
+/views/img/flag/NO.png|e3fa15f998178a590461f1fc6a0d2de8
+/views/img/flag/MC.png|85754149e4307e821f27c80389263d6e
+/views/img/flag/CH.png|d3f7ffa92fc89d18ecf93a210dcbd046
+/views/img/flag/BL.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/AW.png|ec19a347739ea0e70970e2a604614837
+/views/img/flag/BZ.png|9481ccc9362b14353caa982b525793a8
/views/img/flag/BM.png|9dd3a4a2f7082b5ec1d62888cc091c49
-/views/img/flag/IT.png|42d6ced0776d3c3ea8295b704202ff44
+/views/img/flag/CI.png|06b9dd31f9661b9a162857eef2f33cc2
+/views/img/flag/MU.png|026a9a35bf226c5466e85912d37c80ec
+/views/img/flag/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/img/flag/US.png|96becb321dbd9e9fab92cf6b3c9b5163
+/views/img/flag/TW.png|6ae84dc3a37d433ee650f0089a8e8f4f
+/views/img/flag/YE.png|393dee2beda492bbdae758640b615561
+/views/img/flag/MW.png|eaadfcd54efd99816aa1e98cde55b48a
+/views/img/flag/NL.png|f9da0a905e9fec2ff6a12d52b0bae61c
+/views/img/flag/LS.png|424c47d3ce5111e4f646abcfafc652be
/views/img/flag/BO.png|4e5e360f3cfec693bddd39707f79254a
-/views/img/flag/MP.png|6c26816f5aaeae7d369b60fce14da9db
-/views/img/flag/PH.png|38df9e3c0944ffe4d5b015be95793be5
-/views/img/flag/JE.png|3d4f6a61cc22ad5a77b4cbe36c26c9d7
+/views/img/flag/AT.png|d94ad12cbb42e07163dad620027b3a80
+/views/img/flag/CK.png|3859da524e0ff3fedf39784da126a647
+/views/img/flag/BY.png|30eb3989b884d4aed254eef073a21e9f
+/views/img/flag/AU.png|ab3991ad7489bf384fb5446222bb48c6
+/views/img/flag/BN.png|54fbed23e5e0467e10530f00e5a53d8a
+/views/img/flag/MA.png|b9214415961f794af1034dab0cace3b3
+/views/img/flag/NZ.png|c9eb80f47846f678803710fd86e4fb91
+/views/img/flag/LR.png|88412f2e2d5322bdd1d10f011fda38e3
/views/img/flag/MV.png|ba000bb35f554921cf272250f30c2e10
-/views/img/flag/AO.png|835be1589972b119e2a3aea772e21a18
-/views/img/flag/AX.png|6bfdcba08d5eac28c8b2f444d403fbd7
-/views/img/flag/TL.png|e782b6cfd00d15f709104755f400a578
-/views/img/flag/CV.png|0e39eebc150f3825588ebd015b958372
+/views/img/flag/TC.png|1988184525b5d9410d8bbc07fca834c0
+/views/img/flag/UG.png|2e03029719fda3470ee6263150a7466b
+/views/img/flag/TT.png|3dd6607f691fdc7244b08e30f9cb5266
+/views/img/flag/PL.png|08b70dfd937f53fc448e084334df133d
+/views/img/flag/RS.png|6e44d2f1b54aeb9f6a470796c05307b8
+/views/img/flag/IN.png|c1b8cf0460974ae1739a2f0ee72a0a36
+/views/img/flag/GE.png|6ece075c9a93ba4cabbd65f015fa91b3
+/views/img/flag/GR.png|1490aa27b7e0f14ac0757139cf3804fa
+/views/img/flag/GS.png|fcfa6d9375d344cdad3cba278059f9dc
+/views/img/flag/GD.png|2f520ce09043643b7252eb0ce75a3d0c
/views/img/flag/IO.png|1c5a9a59d014fad88383a6d864458bc8
-/views/img/flag/SS.png|83ab553ec6ed1454b5523b9bb5f9e4f9
-/views/img/flag/PF.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/HK.png|9e22cff886b227b7c66a7299cee60c4a
+/views/img/flag/KP.png|6b12eacf3bd315e433ba0b1eacf9d802
+/views/img/flag/KG.png|aa27c4a8269656e2b7e22ee2782869fd
+/views/img/flag/PM.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/SV.png|7f337fe073caff1ecb41acae6a9d1e3d
+/views/img/flag/RE.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/SA.png|fa0d37fefbcb03be08a96ff39c35e9fb
/views/img/flag/SC.png|59f0b2fdc9c66ca24e723225fea73c3f
+/views/img/flag/ST.png|c879c939fdce2c819a2f80f1680580d2
+/views/img/flag/KE.png|ba0a3ef22e0a59d8db268ae25d4fcb77
+/views/img/flag/IM.png|9a71aa37ec75db5858d66cf3a9a943f4
+/views/img/flag/KR.png|26ddd3e45a9a097d781fd1c9cfddc468
+/views/img/flag/GF.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/DJ.png|5ddb0d34fd83107a3d83e18880fa0305
+/views/img/flag/GQ.png|a3535b533b2af91719ba770f308ceb67
+/views/img/flag/OTHERS.png|ca92647387865e00fd0128eea3c0b3f0
+/views/img/flag/GP.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/DK.png|4c8c04806671345cacfabbd0781aaa64
+/views/img/flag/GG.png|d104842e7f86efd100c0ee29a0fa40ca
+/views/img/flag/IL.png|ca066a0cb246da38676b6a4930b29971
+/views/img/flag/PN.png|dc374e50b3c4d72a5663d422d276776a
+/views/img/flag/SB.png|bf3795be21421952a58ca2039aaaf5b5
+/views/img/flag/PY.png|47ba6b57d21f58b4e206251230b19ac8
+/views/img/flag/RU.png|784a2a8638e99ff3e7d229be90b4f420
+/views/img/flag/KW.png|04474a00fd44b8c39fcce5cb6f2b94f7
+/views/img/flag/DO.png|7ca29ece3c9d65228080ba12e0be8940
+/views/img/flag/GT.png|d4b7180e1da0f1f2baede267bec4d045
+/views/img/flag/GB.png|ecfd4b85afd85b8bf8c531f8e6255cae
+/views/img/flag/GU.png|49c3a9df1fe4d853a0a5fc76e3270b20
+/views/img/flag/JE.png|3d4f6a61cc22ad5a77b4cbe36c26c9d7
+/views/img/flag/HM.png|ab3991ad7489bf384fb5446222bb48c6
/views/img/flag/JR.png|532ea8b20fa31e751d81f819d1e6774d
-/views/img/flag/BB.png|a0a004f000c7ea6ab8d150959ac8d3fe
-/views/img/flag/GH.png|748acbf0e69a5b10243d3ef200d9ea7f
-/views/img/flag/NI.png|7f337fe073caff1ecb41acae6a9d1e3d
-/views/img/flag/CX.png|3f3aba1069496a40934637cf4b4f766c
-/views/img/flag/YE.png|393dee2beda492bbdae758640b615561
-/views/img/flag/CG.png|fd66daf57f1a96e802ba44b07ce712c8
-/views/img/flag/NA.png|17f102547f2ad6154227108af755dad2
+/views/img/flag/SG.png|f0f0bb2bf6639e472ef6ff90f9eaf0c7
+/views/img/flag/PK.png|bb24b773e81e7daebc3ba3e263e67c20
+/views/img/flag/SR.png|0a74189d8580fae462170f51fdfd5b9b
/views/img/flag/SE.png|b8e45aecfb0ad66627b731f7d5fee095
-/views/img/flag/KW.png|04474a00fd44b8c39fcce5cb6f2b94f7
-/views/img/flag/BI.png|2bc04f56f098abfd22ec8dc9b4d25c6f
-/views/img/flag/CZ.png|c29892cb415d8489c5e4024a867fe8b6
-/views/img/flag/AE.png|ea9875d8e8afafed9f07e63e7fae0b3d
-/views/img/flag/AG.png|3e96767508f891bee4e18b0879197059
-/views/img/flag/PW.png|b5ae6117e7e8c6c506f4ec2bed045e33
-/views/img/flag/YT.png|cc1fc719aa70170cf59aa97989f32fca
-/views/img/flag/JM.png|3d54284d8d3cb58632a152175cb42866
-/views/img/flag/DZ.png|96aecc1300df553a35b3758e3ecfba3e
-/views/img/flag/AW.png|ec19a347739ea0e70970e2a604614837
-/views/img/flag/IM.png|9a71aa37ec75db5858d66cf3a9a943f4
-/views/img/flag/UG.png|2e03029719fda3470ee6263150a7466b
-/views/img/flag/MK.png|a58f238f52c62e8eb54fa6d056c37d38
-/views/img/flag/LT.png|6a8428cf97967d9726f9a78277fec777
-/views/img/flag/WS.png|dbfe225a535339b992abd582c9e69037
-/views/img/flag/MZ.png|04cfeaaf203ceb1ffc56d95914956d3d
-/views/img/flag/FO.png|0268b567af566647f953d8c3524c9ca7
-/views/img/flag/ZA.png|55dc8a9767f651d0c1f81dc47580f5d8
-/views/img/flag/FK.png|38cba6706a7246740309b9ca0fbc0b73
-/views/img/flag/TW.png|6ae84dc3a37d433ee650f0089a8e8f4f
-/views/img/flag/SZ.png|cba65b0b5c6d94904dcba4f3150c5ca8
-/views/img/flag/UZ.png|9cd7f3e20f89d37e4a2854f30622d27a
-/views/img/flag/NP.png|3885515ee4827a6d374e0bbcc3ddaaef
-/views/img/flag/KP.png|6b12eacf3bd315e433ba0b1eacf9d802
-/views/img/flag/CY.png|eb2365a3603d60aff08f3c50cc87f249
-/views/img/flag/CK.png|3859da524e0ff3fedf39784da126a647
-/views/img/flag/MC.png|85754149e4307e821f27c80389263d6e
-/views/img/flag/KE.png|ba0a3ef22e0a59d8db268ae25d4fcb77
-/views/img/flag/UA.png|01969d09f7817a4ed6b9f152123fd5fa
+/views/img/flag/JP.png|e6f8733f45d9c7ac9dcf834aba625cbb
/views/img/flag/GW.png|9103e6399b262a7ad40a5d06e0ea8ecd
-/views/img/flag/GE.png|6ece075c9a93ba4cabbd65f015fa91b3
+/views/img/flag/EH.png|64c0643f5f65257b22dd3bb070d3acf5
+/views/img/flag/DZ.png|96aecc1300df553a35b3758e3ecfba3e
+/views/img/flag/GA.png|334f0731d029c587625f0b7b98e6e17d
+/views/img/flag/FR.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/DM.png|863a58ff3765e2285d6b2f519620640e
+/views/img/flag/HN.png|e969c09f78ba886511b46ac692d9f204
+/views/img/flag/SD.png|fa421effd81aa5f626083d0b2474853b
+/views/img/flag/RW.png|3c21dcfbee72c5a9229317ba9e3b9cdb
+/views/img/flag/PH.png|38df9e3c0944ffe4d5b015be95793be5
+/views/img/flag/SS.png|83ab553ec6ed1454b5523b9bb5f9e4f9
+/views/img/flag/QA.png|f38b2d29e8a446e5764d5258c8afd6eb
+/views/img/flag/PE.png|2213daa82fbd4344c53ed14272064ed3
+/views/img/flag/PR.png|587404b281120855ff304375851e3793
+/views/img/flag/SI.png|87f0819a7674137b062db99f7b888af7
+/views/img/flag/HT.png|3dd1a60ae95e7348b00fa8c1bffd0258
+/views/img/flag/ES.png|6db63d7e4bee7add3ead8eb95c9668e8
+/views/img/flag/GL.png|4c8c04806671345cacfabbd0781aaa64
+/views/img/flag/GM.png|d5273ab5a2bb48c0678db55894849363
+/views/img/flag/ER.png|098530d2dfadf464e46eeb7b67f88391
+/views/img/flag/FI.png|6bfdcba08d5eac28c8b2f444d403fbd7
/views/img/flag/EE.png|9d2fe6fa37282535b72b5b4428e02a1d
-/views/img/flag/TZ.png|aeab49fe6ea2334ee06286245759f40a
-/views/img/flag/AT.png|d94ad12cbb42e07163dad620027b3a80
-/views/img/flag/CI.png|06b9dd31f9661b9a162857eef2f33cc2
+/views/img/flag/KN.png|73c41ac33b42de3aa30fca903333f7fb
+/views/img/flag/HU.png|aa1de41f497f81700e4bbf862e3454ee
+/views/img/flag/IQ.png|e80063e93b8c7a79490dfcfae80b6aae
+/views/img/flag/KY.png|ecfd4b85afd85b8bf8c531f8e6255cae
+/views/img/flag/SH.png|ecfd4b85afd85b8bf8c531f8e6255cae
+/views/img/flag/PS.png|f9f7ff5e3c9d12173aca821154719f7e
+/views/img/flag/PF.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/SJ.png|e3fa15f998178a590461f1fc6a0d2de8
+/views/img/flag/ID.png|85754149e4307e821f27c80389263d6e
+/views/img/flag/IS.png|e3afdbe32403f05ab6bed0acd8336604
+/views/img/flag/EG.png|22e30f3af14155502c2f4a4819bcf799
+/views/img/flag/FK.png|38cba6706a7246740309b9ca0fbc0b73
+/views/img/flag/FJ.png|dabe04af951004527f0b1094cfd218d1
+/views/img/flag/GN.png|37244e09a030931a398207bbed599818
+/views/img/flag/GY.png|ab7cebdcd0f057c92edb1d92d4c45ed1
+/views/img/flag/IR.png|304c0bf838a4fbc343b85f2a0c252d1b
+/views/img/flag/KM.png|130b19dbbed58a2896335af73c1a7ff2
+/views/img/flag/IE.png|6882a56174318552db95a58dc4bc295c
+/views/img/flag/KZ.png|1944b754503564c281ce18e5902229e9
+/views/img/flag/RO.png|0701088a3c572a894daa458455c957f1
/views/img/flag/SK.png|6bfe648618589d94ccad3c6e27aec692
-/views/img/flag/MM.png|96647eab72c5fe93e4be84e1c5f3d7a7
-/views/img/flag/AF.png|49d77e12111afc3d4194ade2664d286f
-/views/img/flag/FI.png|6bfdcba08d5eac28c8b2f444d403fbd7
-/views/img/flag/MH.png|14bc97a69158b9c8b513b4b4adc6b861
-/views/img/flag/MD.png|2b7d7b14d52f8fe8d800c000f2ddd0a9
-/views/img/flag/BR.png|8f5c8e3aec893ab67e226a15db7cf0c0
-/views/img/flag/TF.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/PG.png|e13e005b63bc30978dc3e4232623e8d1
+/views/img/flag/PT.png|2e7c7be8522b84c10ac8c584c3932fab
+/views/img/flag/SO.png|053a1a934a1e0e0e3c4b455c3a0bf1db
+/views/img/flag/SX.png|f9da0a905e9fec2ff6a12d52b0bae61c
/views/img/flag/HR.png|24cb403f2615ba725761dfbbcb843cfa
-/views/img/flag/KG.png|aa27c4a8269656e2b7e22ee2782869fd
-/views/img/flag/BY.png|30eb3989b884d4aed254eef073a21e9f
-/views/img/flag/ML.png|a902428bbc6d2e20381b5f4a58ffc750
+/views/img/flag/KI.png|da6b34f01691dfaaad7424078d741a6a
+/views/img/flag/JM.png|3d54284d8d3cb58632a152175cb42866
/views/img/flag/EC.png|061930954ddd6fb786cd4060f0876fce
-/views/img/flag/QA.png|f38b2d29e8a446e5764d5258c8afd6eb
-/views/img/flag/SX.png|f9da0a905e9fec2ff6a12d52b0bae61c
-/views/img/flag/NZ.png|c9eb80f47846f678803710fd86e4fb91
-/views/img/flag/RO.png|0701088a3c572a894daa458455c957f1
-/views/img/flag/GT.png|d4b7180e1da0f1f2baede267bec4d045
-/views/img/flag/PS.png|f9f7ff5e3c9d12173aca821154719f7e
-/views/img/flag/VU.png|cade21feef734a691c19396d4cacd4d4
-/views/img/flag/TJ.png|725785afd7652b97fc79b9f9a2219759
-/views/img/flag/TG.png|e2cf3a5f662ba166b85bf7a224d9ded9
-/views/img/flag/MG.png|1d31e4ce165056179bbe39248a7170cc
-/views/img/flag/LB.png|a40045be63d6f413ff91c9b5867aa880
-/views/img/flag/OM.png|03760a212630cc7c0e5471df8281355e
-/views/img/flag/SH.png|ecfd4b85afd85b8bf8c531f8e6255cae
-/views/img/flag/US.png|96becb321dbd9e9fab92cf6b3c9b5163
-/views/img/flag/MA.png|b9214415961f794af1034dab0cace3b3
-/views/img/flag/NC.png|cc1fc719aa70170cf59aa97989f32fca
-/views/img/flag/CH.png|d3f7ffa92fc89d18ecf93a210dcbd046
-/views/img/flag/GY.png|ab7cebdcd0f057c92edb1d92d4c45ed1
+/views/img/flag/ET.png|a8ccdaec951da596214f55351e1ce618
+/views/img/flag/FO.png|0268b567af566647f953d8c3524c9ca7
/views/img/flag/KH.png|0ffb252a38a5001bd776633c7d294063
-/views/img/flag/OTHERS.png|ca92647387865e00fd0128eea3c0b3f0
-/views/img/flag/NG.png|bd9daa305a8a954cffaff6649a464b5d
-/views/img/flag/KY.png|ecfd4b85afd85b8bf8c531f8e6255cae
+/views/img/flag/SY.png|5f25bd15bf8a63c5f55b36a63ad029b5
+/views/img/flag/SN.png|1a524290e23411b9f33e2e4426cb2d40
+/views/img/flag/PW.png|b5ae6117e7e8c6c506f4ec2bed045e33
+/views/img/flag/SL.png|262fe618a191d0d8a60bc364746d3c04
+/views/img/flag/FM.png|6ade62bece03f1d514fdbccdda641de1
+/views/img/flag/GI.png|ecfd4b85afd85b8bf8c531f8e6255cae
+/views/img/flag/DE.png|d8cd6c8e3fa88c3a5d71aade7691711d
+/views/img/flag/GH.png|748acbf0e69a5b10243d3ef200d9ea7f
+/views/img/flag/IC.png|6db63d7e4bee7add3ead8eb95c9668e8
+/views/img/flag/JO.png|30a9129bf6502226ba7fd9da08e4b35c
+/views/img/flag/IT.png|42d6ced0776d3c3ea8295b704202ff44
+/views/img/flag/PA.png|9407681f91e287935c4a7f987da34c63
+/views/img/flag/SZ.png|cba65b0b5c6d94904dcba4f3150c5ca8
+/views/img/flag/SM.png|ad4c6e282255da7434889bd83a069286
+/views/img/flag/TN.png|fb43183a6891caf1600763cb51cde4a5
+/views/img/flag/ML.png|a902428bbc6d2e20381b5f4a58ffc750
+/views/img/flag/CG.png|fd66daf57f1a96e802ba44b07ce712c8
+/views/img/flag/AX.png|6bfdcba08d5eac28c8b2f444d403fbd7
+/views/img/flag/AO.png|835be1589972b119e2a3aea772e21a18
+/views/img/flag/BT.png|3d1dd6d51b8706976d8e52985f572dd1
/views/img/flag/AN.png|a8c499377e0868f60a435229aa146fb1
-/views/img/flag/WF.png|cc1fc719aa70170cf59aa97989f32fca
-/views/img/flag/TM.png|58f31979cd5840ed53c4c0244226ad88
-/views/img/flag/PG.png|e13e005b63bc30978dc3e4232623e8d1
-/views/img/flag/TO.png|59a189738b32f9e766c913ed9296de03
-/views/img/flag/GB.png|ecfd4b85afd85b8bf8c531f8e6255cae
-/views/img/flag/PT.png|2e7c7be8522b84c10ac8c584c3932fab
-/views/img/flag/LC.png|92badafa246492aed1cffb0bb913a21b
-/views/img/flag/RE.png|cc1fc719aa70170cf59aa97989f32fca
-/views/img/flag/LU.png|b30b097b3f764af26f3fc551e10b62fa
+/views/img/flag/BB.png|a0a004f000c7ea6ab8d150959ac8d3fe
+/views/img/flag/CF.png|5f181e4dc309c220174c64376759a89a
+/views/img/flag/MM.png|96647eab72c5fe93e4be84e1c5f3d7a7
+/views/img/flag/LI.png|ba8539c6542d4d7e443a10f91bea414c
+/views/img/flag/NA.png|17f102547f2ad6154227108af755dad2
+/views/img/flag/MZ.png|04cfeaaf203ceb1ffc56d95914956d3d
+/views/img/flag/TO.png|59a189738b32f9e766c913ed9296de03
+/views/img/flag/VG.png|cd80422040f3569cdee8fe37c9ac233b
+/views/img/flag/VE.png|60739b59a02254e88e103f154f434087
+/views/img/flag/TZ.png|aeab49fe6ea2334ee06286245759f40a
+/views/img/flag/TM.png|58f31979cd5840ed53c4c0244226ad88
+/views/img/flag/MX.png|4585eaa23399ff97b0edddebc9548733
+/views/img/flag/NC.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/MO.png|9e22cff886b227b7c66a7299cee60c4a
/views/img/flag/LK.png|4af94d1108d1dbd3daee42e5d7027e73
-/views/img/flag/SL.png|262fe618a191d0d8a60bc364746d3c04
-/views/img/flag/AI.png|59b67277582e2170cfe037c35ba4ed7a
-/views/img/flag/ZM.png|90feb476b1cf845ec389074f32585c34
-/views/img/flag/NO.png|e3fa15f998178a590461f1fc6a0d2de8
-/views/img/flag/HU.png|aa1de41f497f81700e4bbf862e3454ee
-/views/img/flag/PL.png|08b70dfd937f53fc448e084334df133d
-/views/img/flag/FM.png|6ade62bece03f1d514fdbccdda641de1
-/views/img/flag/MT.png|a31f908619bd13739d39dfca7d3900a4
-/views/img/flag/GF.png|cc1fc719aa70170cf59aa97989f32fca
-/views/img/flag/BJ.png|e0db6fe266bf66ddebe037bc574a930d
-/views/img/flag/CN.png|9e22cff886b227b7c66a7299cee60c4a
-/views/img/flag/DO.png|7ca29ece3c9d65228080ba12e0be8940
+/views/img/flag/CD.png|1a91773608e0dc37943f2e3b64e2fd74
+/views/img/flag/AL.png|5d34661c52bbda24fb4a49adf5ef82a0
/views/img/flag/BW.png|5fb1b531e34de1e246560f3a9defefe2
-/views/img/flag/BL.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/CR.png|fb27f4596f9ac16b951e0f017dbeaa2b
+/views/img/flag/BV.png|2f9326738982ae4876fc7f0f0960c77e
+/views/img/flag/AM.png|3461136703e8e2b5dffe869e3e086ce1
+/views/img/flag/AZ.png|eed74a4b4d1d9320554380ecd298c603
/views/img/flag/BA.png|0ca33f9b22f6317781e167a74843a19e
-/views/img/flag/SA.png|fa0d37fefbcb03be08a96ff39c35e9fb
-/views/img/flag/AQ.png|7b496e199605b532dba8319044097d7e
+/views/img/flag/MN.png|6b459e34b09e6eb540ca41ff45f5d978
+/views/img/flag/NU.png|d89e7c94b030bb809a10231c0ee38e8e
/views/img/flag/MY.png|1e8b313da9168f9b03b235d2952e142b
-/views/img/flag/AD.png|ca92647387865e00fd0128eea3c0b3f0
-/views/img/flag/BQ.png|f9da0a905e9fec2ff6a12d52b0bae61c
-/views/img/flag/GR.png|1490aa27b7e0f14ac0757139cf3804fa
-/views/img/flag/BT.png|3d1dd6d51b8706976d8e52985f572dd1
-/views/img/flag/MS.png|ecfd4b85afd85b8bf8c531f8e6255cae
-/views/img/flag/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/img/flag/TL.png|e782b6cfd00d15f709104755f400a578
+/views/img/flag/WS.png|dbfe225a535339b992abd582c9e69037
/views/img/flag/TH.png|04ae701cf5d13862c0badd8f931844b6
-/views/img/flag/BF.png|80b84a563590f903257bfe44f1332870
-/views/img/flag/AL.png|5d34661c52bbda24fb4a49adf5ef82a0
+/views/img/flag/XK.png|6d8d386104193e251f4c3077e5bf5d3b
+/views/img/flag/NF.png|380b2fedcc87649ed83992a0e8fcfcc8
+/views/img/flag/LY.png|cc1fe9b7e51a1ffa91c5f79d26043a25
+/views/img/flag/AI.png|59b67277582e2170cfe037c35ba4ed7a
+/views/img/flag/BR.png|8f5c8e3aec893ab67e226a15db7cf0c0
+/views/img/flag/CV.png|0e39eebc150f3825588ebd015b958372
+/views/img/flag/BE.png|a538d77b0d0e599095ca6db2ada1c2f3
+/views/img/flag/CA.png|959ca28fd07235ef971d3ea388c16397
/views/img/flag/BD.png|ea5f4a802e6b2969197551c64750b9a6
-/views/img/flag/MN.png|6b459e34b09e6eb540ca41ff45f5d978
-/views/img/flag/ZW.png|7d535d7ed7bb8fad8684610d869c4058
-/views/img/flag/IS.png|e3afdbe32403f05ab6bed0acd8336604
-/views/img/flag/ID.png|85754149e4307e821f27c80389263d6e
-/views/img/flag/RS.png|6e44d2f1b54aeb9f6a470796c05307b8
-/views/img/flag/IN.png|c1b8cf0460974ae1739a2f0ee72a0a36
-/views/img/flag/RW.png|3c21dcfbee72c5a9229317ba9e3b9cdb
-/views/img/flag/SO.png|053a1a934a1e0e0e3c4b455c3a0bf1db
-/views/img/flag/IQ.png|e80063e93b8c7a79490dfcfae80b6aae
-/views/img/flag/SM.png|ad4c6e282255da7434889bd83a069286
-/views/img/flag/LR.png|88412f2e2d5322bdd1d10f011fda38e3
-/views/img/flag/AZ.png|eed74a4b4d1d9320554380ecd298c603
/views/img/flag/BS.png|9bd57b913f78269f420d06006adc4881
-/views/img/flag/AM.png|3461136703e8e2b5dffe869e3e086ce1
-/views/img/flag/TA.png|ecfd4b85afd85b8bf8c531f8e6255cae
+/views/img/flag/NG.png|bd9daa305a8a954cffaff6649a464b5d
+/views/img/flag/MK.png|a58f238f52c62e8eb54fa6d056c37d38
+/views/img/flag/NP.png|3885515ee4827a6d374e0bbcc3ddaaef
/views/img/flag/VA.png|14a0946355567991035d1c4a235b7890
-/views/img/flag/SG.png|f0f0bb2bf6639e472ef6ff90f9eaf0c7
-/views/img/flag/SB.png|bf3795be21421952a58ca2039aaaf5b5
+/views/img/flag/UZ.png|9cd7f3e20f89d37e4a2854f30622d27a
+/views/img/flag/UM.png|6c26816f5aaeae7d369b60fce14da9db
+/views/img/flag/TK.png|3f70b39454fe3d56ea975185438edeb0
+/views/img/flag/VC.png|04d50353949376995d0ca8827fd35241
+/views/img/flag/ZW.png|7d535d7ed7bb8fad8684610d869c4058
+/views/img/flag/NR.png|0d5e83ccb1ccd3a8f02fc61acaa6e47b
/views/img/flag/NE.png|fc09575c0fabcb08e083e2b25f8e4343
-/views/img/flag/CA.png|959ca28fd07235ef971d3ea388c16397
-/views/img/flag/HM.png|ab3991ad7489bf384fb5446222bb48c6
-/views/img/flag/IC.png|6db63d7e4bee7add3ead8eb95c9668e8
-/views/img/flag/HN.png|e969c09f78ba886511b46ac692d9f204
-/views/img/flag/GS.png|fcfa6d9375d344cdad3cba278059f9dc
-/views/img/flag/KR.png|26ddd3e45a9a097d781fd1c9cfddc468
-/views/img/flag/GG.png|d104842e7f86efd100c0ee29a0fa40ca
-/views/img/flag/PN.png|dc374e50b3c4d72a5663d422d276776a
-/views/img/flag/KN.png|73c41ac33b42de3aa30fca903333f7fb
-/views/img/flag/SJ.png|e3fa15f998178a590461f1fc6a0d2de8
-/views/img/flag/GA.png|334f0731d029c587625f0b7b98e6e17d
/views/img/flag/CU.png|4ba302408d9eddb58f79ef741668bf3b
-/views/img/home-settings.png|4f7751e943137d3c10b71da358f7b1d7
+/views/img/flag/BQ.png|f9da0a905e9fec2ff6a12d52b0bae61c
+/views/img/flag/BF.png|80b84a563590f903257bfe44f1332870
+/views/img/flag/BG.png|aad68b8269f4c43558b53089c6e42d71
+/views/img/flag/CC.png|7fecb4864f239d8d672d4dd0c780797c
+/views/img/flag/MH.png|14bc97a69158b9c8b513b4b4adc6b861
+/views/img/flag/ZA.png|55dc8a9767f651d0c1f81dc47580f5d8
+/views/img/flag/UY.png|bb2ddc17d73acbc625c0ec8ab5ff51c4
+/views/img/flag/WF.png|cc1fc719aa70170cf59aa97989f32fca
+/views/img/flag/VU.png|cade21feef734a691c19396d4cacd4d4
+/views/img/flag/TJ.png|725785afd7652b97fc79b9f9a2219759
/views/img/tick.png|93392d528788c75f2c61f48632e3a93e
-/views/img/carret-up.png|3e14398dbf0566a04e32160d61fb0dd8
-/views/img/lengow-white-big.png|6e6178f2db21104a157aebb27f9a5ca2
-/views/img/laser-gun.png|5b09dfd39f2c17e6e818e79fdf8c03c0
-/views/img/home-products.png|99ff45448ea094f8c70b58a0cd4d9303
-/views/img/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/img/settings-product.svg|1a725d366cc55c55c54774274e1afc84
+/views/img/home-orders.png|db05b21ec6b166d844b42c0e807cb265
+/views/img/lengow-blue.png|fae0834ea05ab923912a47bbcb3af59b
/views/img/connected-lengow.png|c80e8065bd5d1568efca50388622fd42
/views/img/box-close.png|73512c2351bfc39c6d10b95a3f2810c3
+/views/img/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/img/arrow-right.png|e56e5bb1dd1c9e23161dd7f0aa4293d2
+/views/img/plane.png|7d27896af3e0f3cf6e353cccef8f8267
+/views/img/home-settings.png|4f7751e943137d3c10b71da358f7b1d7
+/views/img/modal-close.png|32cadb3a7cfff33ff4d79b53b817f8e2
+/views/img/connected-prestashop.png|190c1dd936024ad8bb95d42491e7fe1e
+/views/img/unplugged.png|55b5eeee08952d538185a659abbbb932
+/views/img/settings-product.png|7a30f16f9797e784d1c446b70791d32d
/views/img/logo-blue.png|20c05b7249c00f126861223ecc5b6ce9
-/views/css/bootstrap-datepicker.css|d5260247b97663d887f4efe8ec894353
-/views/css/font-awesome.css|bf4b58c946c9234e4a6b9f7a70d38006
-/views/css/select2.css|8969ac4614d64a13dfc32e1eb4e731f7
-/views/css/lengow-pages.css|559ca86bb0be6b6d86fe21a443fbe704
-/views/css/lengow-layout.css|768416b1c8fbc2d02f013f2bbee9ee5f
-/views/css/lengow-components.css|d8e1abd6cfd93e95c0c9cea6da0cc532
-/views/css/lengow-tab.css|5b6066640ae15dce94cd2225d84cec50
-/views/css/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/fonts/fontawesome-webfont.eot|32400f4e08932a94d8bfd2422702c446
-/views/fonts/fontawesome-webfont.woff|a35720c2fed2c7f043bc7e4ffb45e073
-/views/fonts/fontawesome-webfont.woff2|db812d8a70a4e88e888744c1c9a27e89
-/views/fonts/fontawesome-webfont.svg|f775f9cca88e21d45bebe185b27c0e5b
-/views/fonts/fontawesome-webfont.ttf|a3de2170e4e9df77161ea5d3f31b2668
-/views/fonts/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/fonts/FontAwesome.otf|87d8ca3ddc57e7d2da6226e480f90457
-/views/PrestaShop/Admin/Sell/Order/Order/Blocks/View/shipping.html.twig|f8a6cd2da200718da882c869c94a5f19
+/views/img/search.png|7f9b41e3ae4871543c2962369b9de277
+/views/img/lengow-white.png|0324647d065652cd15282d7fac4ef8ff
+/views/img/home-products.png|99ff45448ea094f8c70b58a0cd4d9303
+/views/img/clock.png|499ea8d7905f77624cb64b1af3f955b5
+/views/img/carret-up.png|3e14398dbf0566a04e32160d61fb0dd8
+/views/img/plug-grey.png|4231ef1a002a23decaa0e3e292a417fc
+/views/img/connection-module.png|edb3364c8b46d07cbaa7192944f01475
+/views/img/laser-gun.png|5b09dfd39f2c17e6e818e79fdf8c03c0
+/views/img/lengow-white-big.png|6e6178f2db21104a157aebb27f9a5ca2
+/views/img/bag.png|d812d529e1b5404cf7b92d4f36ab7abd
+/views/PrestaShop/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/PrestaShop/Admin/Sell/Order/Order/Blocks/index.php|be8b25f88c14bddd7711e4585ebae316
/views/PrestaShop/Admin/Sell/Order/Order/Blocks/View/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/PrestaShop/Admin/Sell/Order/Order/Blocks/View/Modal/update_shipping_modal.html.twig|74663ee30f4923a29ad683d779712f95
/views/PrestaShop/Admin/Sell/Order/Order/Blocks/View/Modal/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/PrestaShop/Admin/Sell/Order/Order/Blocks/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/PrestaShop/Admin/Sell/Order/Order/Blocks/View/Modal/update_shipping_modal.html.twig|74663ee30f4923a29ad683d779712f95
+/views/PrestaShop/Admin/Sell/Order/Order/Blocks/View/shipping.html.twig|f8a6cd2da200718da882c869c94a5f19
/views/PrestaShop/Admin/Sell/Order/Order/index.php|be8b25f88c14bddd7711e4585ebae316
/views/PrestaShop/Admin/Sell/Order/index.php|be8b25f88c14bddd7711e4585ebae316
/views/PrestaShop/Admin/Sell/index.php|be8b25f88c14bddd7711e4585ebae316
/views/PrestaShop/Admin/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/PrestaShop/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/order/info.tpl|aed8436e09c5b0b86589789fa189f4e6
+/views/templates/admin/order/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_toolbox/index.php|8c05a3431d3dcff6cdbfb4890fcafeb2
+/views/templates/admin/lengow_toolbox/layout.tpl|dce5c18c3f7ee6d8deb4b15ae67b9eed
+/views/templates/admin/lengow_toolbox/helpers/index.php|8c05a3431d3dcff6cdbfb4890fcafeb2
+/views/templates/admin/lengow_toolbox/helpers/view/index.php|8c05a3431d3dcff6cdbfb4890fcafeb2
+/views/templates/admin/lengow_toolbox/helpers/view/view.tpl|d7f5ab6dca7d8abef5c987378bdc606a
+/views/templates/admin/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_home/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_home/layout.tpl|d4e23ff27234d8621b4fc909e1aea5dd
/views/templates/admin/lengow_home/helpers/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_home/helpers/view/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_home/helpers/view/connection_home.tpl|719d3053ad5fe0212ca04b836fe3ed15
+/views/templates/admin/lengow_home/helpers/view/connection_catalog_failed.tpl|8dc9149312cf84a7f579508b69c7ae82
+/views/templates/admin/lengow_home/helpers/view/view.tpl|8e0c9ac0a8269c60c6ae2f64203f5d32
/views/templates/admin/lengow_home/helpers/view/connection_cms.tpl|b9017bfcbb77996f2e307056ec476d91
/views/templates/admin/lengow_home/helpers/view/connection_catalog.tpl|761994719aed4e1b7a115429b09d8fd4
/views/templates/admin/lengow_home/helpers/view/connection_cms_result.tpl|a7bdfe86ab8654b2c0ece23fe5eee4e9
-/views/templates/admin/lengow_home/helpers/view/view.tpl|8e0c9ac0a8269c60c6ae2f64203f5d32
-/views/templates/admin/lengow_home/helpers/view/connection_catalog_failed.tpl|8dc9149312cf84a7f579508b69c7ae82
-/views/templates/admin/lengow_home/helpers/view/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_home/helpers/view/connection_home.tpl|719d3053ad5fe0212ca04b836fe3ed15
-/views/templates/admin/lengow_home/layout.tpl|d4e23ff27234d8621b4fc909e1aea5dd
-/views/templates/admin/lengow_home/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/header_order.tpl|452332339e744007db76a1c4e8ae5805
+/views/templates/admin/footer.tpl|639dccd9927e638989452a65ebc766cd
+/views/templates/admin/lengow_feed/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_feed/layout.tpl|8296463aac5333e3d045024628ee14d7
/views/templates/admin/lengow_feed/helpers/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_feed/helpers/view/view.tpl|0d4877cdcea508fc2ecde8fdd77e4551
/views/templates/admin/lengow_feed/helpers/view/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_feed/layout.tpl|8296463aac5333e3d045024628ee14d7
-/views/templates/admin/lengow_feed/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_feed/helpers/view/view.tpl|215a67502c8ad5a0f842e8832784e2c6
+/views/templates/admin/lengow_feed/helpers/view/edit_fields_feed.tpl|3b7dc9fba449e61aa038972295a8cd9f
+/views/templates/admin/lengow_legals/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_legals/layout.tpl|8296463aac5333e3d045024628ee14d7
+/views/templates/admin/lengow_legals/helpers/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_legals/helpers/view/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_legals/helpers/view/view.tpl|f16dd97c1a6a5c475170492a0a851dc0
+/views/templates/admin/lengow_main_setting/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_main_setting/layout.tpl|8296463aac5333e3d045024628ee14d7
+/views/templates/admin/lengow_main_setting/helpers/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_main_setting/helpers/view/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_main_setting/helpers/view/view.tpl|6c982c3f0c4cad049ecc94594bd49642
+/views/templates/admin/lengow_order/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_order/layout.tpl|901527885b6fdd8c04949bfe750e438d
+/views/templates/admin/lengow_order/helpers/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_order/helpers/view/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_order/helpers/view/view.tpl|c4dd33661b6ab2bfcaf4976f7c3c2732
+/views/templates/admin/lengow_order/helpers/view/last_importation.tpl|a8e4e40f74074b6f1a1a2318fab63f73
+/views/templates/admin/lengow_order/helpers/view/warning_message.tpl|821acd8febe35f9381d9462ed36e3fca
+/views/templates/admin/lengow_order/helpers/view/no_order.tpl|806dda4cd3f405507f7e89046e222120
+/views/templates/admin/header.tpl|e1df0c2da09c6f7b0b95851d260da714
+/views/templates/admin/lengow_help/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_help/layout.tpl|8296463aac5333e3d045024628ee14d7
+/views/templates/admin/lengow_help/helpers/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_help/helpers/view/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_help/helpers/view/view.tpl|922255f0c88cf95737dc8f46434bd806
+/views/templates/admin/lengow_dashboard/index.php|eba0357470b4f2caf856c15f9ee875a0
+/views/templates/admin/lengow_dashboard/layout.tpl|89267905b72cffc708bb36c1c9bb1ca1
/views/templates/admin/lengow_dashboard/helpers/index.php|eba0357470b4f2caf856c15f9ee875a0
-/views/templates/admin/lengow_dashboard/helpers/view/status.tpl|1e6678a36f90f268f7d8fec583b22154
-/views/templates/admin/lengow_dashboard/helpers/view/view.tpl|01c5146729441a7adf8a7dc65fd03ff4
/views/templates/admin/lengow_dashboard/helpers/view/index.php|eba0357470b4f2caf856c15f9ee875a0
/views/templates/admin/lengow_dashboard/helpers/view/dashboard.tpl|63237d59aacd6849801b6cdbe1decf4f
-/views/templates/admin/lengow_dashboard/layout.tpl|89267905b72cffc708bb36c1c9bb1ca1
-/views/templates/admin/lengow_dashboard/index.php|eba0357470b4f2caf856c15f9ee875a0
-/views/templates/admin/lengow_toolbox/helpers/index.php|8c05a3431d3dcff6cdbfb4890fcafeb2
-/views/templates/admin/lengow_toolbox/helpers/view/view.tpl|d7f5ab6dca7d8abef5c987378bdc606a
-/views/templates/admin/lengow_toolbox/helpers/view/index.php|8c05a3431d3dcff6cdbfb4890fcafeb2
-/views/templates/admin/lengow_toolbox/layout.tpl|dce5c18c3f7ee6d8deb4b15ae67b9eed
-/views/templates/admin/lengow_toolbox/index.php|8c05a3431d3dcff6cdbfb4890fcafeb2
-/views/templates/admin/footer.tpl|639dccd9927e638989452a65ebc766cd
+/views/templates/admin/lengow_dashboard/helpers/view/view.tpl|01c5146729441a7adf8a7dc65fd03ff4
+/views/templates/admin/lengow_dashboard/helpers/view/status.tpl|1e6678a36f90f268f7d8fec583b22154
+/views/templates/admin/lengow_order_setting/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/admin/lengow_order_setting/layout.tpl|901527885b6fdd8c04949bfe750e438d
/views/templates/admin/lengow_order_setting/helpers/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_order_setting/helpers/view/country_selector.tpl|a267b04ca30c63272a0518df44d2d132
+/views/templates/admin/lengow_order_setting/helpers/view/marketplace_method.tpl|ebc5d69c98f9f796a83c1ae6a32420b0
+/views/templates/admin/lengow_order_setting/helpers/view/index.php|be8b25f88c14bddd7711e4585ebae316
/views/templates/admin/lengow_order_setting/helpers/view/default_carrier.tpl|59082017288f80c73b1fde08de8fd088
-/views/templates/admin/lengow_order_setting/helpers/view/marketplace_matching.tpl|795fa9a03687067686437818681c1131
/views/templates/admin/lengow_order_setting/helpers/view/view.tpl|07ce03342ced4f4b9d8a505b790d891e
+/views/templates/admin/lengow_order_setting/helpers/view/country_selector.tpl|a267b04ca30c63272a0518df44d2d132
/views/templates/admin/lengow_order_setting/helpers/view/marketplace_carrier.tpl|52c4ee9821380783e3816deb28f8f22f
-/views/templates/admin/lengow_order_setting/helpers/view/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_order_setting/helpers/view/marketplace_method.tpl|ebc5d69c98f9f796a83c1ae6a32420b0
-/views/templates/admin/lengow_order_setting/layout.tpl|901527885b6fdd8c04949bfe750e438d
-/views/templates/admin/lengow_order_setting/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_order/helpers/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_order/helpers/view/last_importation.tpl|a8e4e40f74074b6f1a1a2318fab63f73
-/views/templates/admin/lengow_order/helpers/view/warning_message.tpl|821acd8febe35f9381d9462ed36e3fca
-/views/templates/admin/lengow_order/helpers/view/view.tpl|c4dd33661b6ab2bfcaf4976f7c3c2732
-/views/templates/admin/lengow_order/helpers/view/no_order.tpl|806dda4cd3f405507f7e89046e222120
-/views/templates/admin/lengow_order/helpers/view/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_order/layout.tpl|901527885b6fdd8c04949bfe750e438d
-/views/templates/admin/lengow_order/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_main_setting/helpers/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_main_setting/helpers/view/view.tpl|6c982c3f0c4cad049ecc94594bd49642
-/views/templates/admin/lengow_main_setting/helpers/view/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_main_setting/layout.tpl|8296463aac5333e3d045024628ee14d7
-/views/templates/admin/lengow_main_setting/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/order/info.tpl|aed8436e09c5b0b86589789fa189f4e6
-/views/templates/admin/order/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/header.tpl|3711f5805799295ae700262bfc7ea0c5
-/views/templates/admin/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/header_order.tpl|452332339e744007db76a1c4e8ae5805
-/views/templates/admin/lengow_help/helpers/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_help/helpers/view/view.tpl|922255f0c88cf95737dc8f46434bd806
-/views/templates/admin/lengow_help/helpers/view/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_help/layout.tpl|8296463aac5333e3d045024628ee14d7
-/views/templates/admin/lengow_help/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_legals/helpers/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_legals/helpers/view/view.tpl|f16dd97c1a6a5c475170492a0a851dc0
-/views/templates/admin/lengow_legals/helpers/view/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/admin/lengow_legals/layout.tpl|8296463aac5333e3d045024628ee14d7
-/views/templates/admin/lengow_legals/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/templates/front/tagpage.tpl|f040d02eb2f79ed7d50e72f7f707db0e
+/views/templates/admin/lengow_order_setting/helpers/view/marketplace_matching.tpl|795fa9a03687067686437818681c1131
/views/templates/front/index.php|be8b25f88c14bddd7711e4585ebae316
-/views/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/templates/front/tagpage.tpl|f040d02eb2f79ed7d50e72f7f707db0e
+/views/fonts/fontawesome-webfont.svg|f775f9cca88e21d45bebe185b27c0e5b
+/views/fonts/FontAwesome.otf|87d8ca3ddc57e7d2da6226e480f90457
+/views/fonts/index.php|be8b25f88c14bddd7711e4585ebae316
+/views/fonts/fontawesome-webfont.woff2|db812d8a70a4e88e888744c1c9a27e89
+/views/fonts/fontawesome-webfont.ttf|a3de2170e4e9df77161ea5d3f31b2668
+/views/fonts/fontawesome-webfont.woff|a35720c2fed2c7f043bc7e4ffb45e073
+/views/fonts/fontawesome-webfont.eot|32400f4e08932a94d8bfd2422702c446
+/webservice/index.php|be8b25f88c14bddd7711e4585ebae316
/webservice/export.php|93ae5e6f44bdb7e32564f6c9d771e184
/webservice/toolbox.php|460e115e59104dd9517039215f0376c5
-/webservice/cron.php|d0a49d51493637c7f9445d4412b4792a
-/webservice/index.php|be8b25f88c14bddd7711e4585ebae316
+/webservice/cron.php|b761754b8b345fd28c4b83bc2c033664
diff --git a/lengow.php b/lengow.php
index 4c79ee66..dae50a4f 100755
--- a/lengow.php
+++ b/lengow.php
@@ -45,7 +45,7 @@ public function __construct()
{
$this->name = 'lengow';
$this->tab = 'export';
- $this->version = '3.5.3';
+ $this->version = '3.5.4';
$this->author = 'Lengow';
$this->module_key = '__LENGOW_PRESTASHOP_PRODUCT_KEY__';
$this->ps_versions_compliancy = [
@@ -140,6 +140,14 @@ public function hookHome()
$this->hookClass->hookHome();
}
+ /**
+ * Hook on Home page
+ */
+ public function hookDisplayHome()
+ {
+ $this->hookClass->hookHome();
+ }
+
/**
* Hook on Payment page
*/
@@ -148,6 +156,14 @@ public function hookPaymentTop()
$this->hookClass->hookPaymentTop();
}
+ /**
+ * Hook on Payment page
+ */
+ public function hookDisplayPaymentTop()
+ {
+ $this->hookClass->hookPaymentTop();
+ }
+
/**
* Hook for generate tracker on front footer page
*
@@ -158,6 +174,16 @@ public function hookFooter()
return $this->hookClass->hookFooter();
}
+ /**
+ * Hook for generate tracker on front footer page
+ *
+ * @return mixed
+ */
+ public function hookDisplayFooter()
+ {
+ return $this->hookClass->hookFooter();
+ }
+
/**
* Hook on order confirmation page to init order's product list
*
@@ -168,6 +194,16 @@ public function hookOrderConfirmation($args)
$this->hookClass->hookOrderConfirmation($args);
}
+ /**
+ * Hook on order confirmation page to init order's product list
+ *
+ * @param array $args Arguments of hook
+ */
+ public function hookDisplayOrderConfirmation($args)
+ {
+ $this->hookClass->hookOrderConfirmation($args);
+ }
+
/**
* Hook before an status update to synchronize status with lengow
*
@@ -178,6 +214,25 @@ public function hookUpdateOrderStatus($args)
$this->hookClass->hookUpdateOrderStatus($args);
}
+ /**
+ * Order status update
+ * Event This hook launches modules when the status of an order changes
+ */
+ public function hookActionOrderStatusUpdate($args)
+ {
+ $this->hookClass->hookUpdateOrderStatus($args);
+ }
+
+ /**
+ * Order status post update
+ * @param array $args Arguments of hook
+ */
+ public function hookActionOrderStatusPostUpdate($args)
+ {
+ $this->hookClass->hookPostUpdateOrderStatus($args);
+ }
+
+
/**
* Hook after an status update to synchronize status with lengow
*
diff --git a/tools/build.sh b/tools/build.sh
index 6327e407..f001fc2a 100755
--- a/tools/build.sh
+++ b/tools/build.sh
@@ -10,23 +10,6 @@
# - Remove tools folder
# - Remove .git Folder and .gitignore
-unameOut="$(uname -s)"
-case "${unameOut}" in
- Linux*) CURRENT_OS=Linux;;
- Darwin*) CURRENT_OS=MacOS;;
- CYGWIN*) CURRENT_OS=Cygwin;;
- MINGW*) CURRENT_OS=MinGw;;
- MSYS_NT*) CURRENT_OS=Git;;
- *) CURRENT_OS="UNKNOWN:${unameOut}"
-esac
-echo "RUNNING ON: ${CURRENT_OS} ..."
-sleep 3
-source decrypt.sh
-if [ ! -f "./vars.sh" ]; then
- echo 'Variables file not found. can not build module archive.'
- exit 0
-fi
-
remove_if_exist(){
if [ -f "$1" ]; then
rm "$1"
@@ -38,11 +21,12 @@ remove_directory(){
rm -rf "$1"
fi
}
+
remove_files(){
DIRECTORY="$1"
FILE="$2"
if [ -f "${DIRECTORY}/${FILE}" ]; then
- find "$DIRECTORY" -name "$FILE" -exec rm -rf {} \;
+ find "$DIRECTORY" -name "$FILE" -nowarn -exec rm -rf {} \;
echo -e "- Delete ${FILE} : ${VERT}DONE${NORMAL}"
fi
if [ -d "${DIRECTORY}/${FILE}" ]; then
@@ -76,52 +60,47 @@ fi
if [ ! -z "$2" ] && [ "$2" == "preprod" ]; then
ARCHIVE_NAME="preprod__${ARCHIVE_NAME}"
fi
-echo "ARCHIVE_NAME will be: ${ARCHIVE_NAME}"
-# load vars
-source vars.sh
-# encrypt vars file
-source encrypt.sh
+# Variables
+FOLDER_TMP="/tmp/lengow"
+FOLDER_LOGS="/tmp/lengow/logs"
+FOLDER_CONFIG="/tmp/lengow/config"
+FOLDER_EXPORT="/tmp/lengow/export"
+FOLDER_TOOLS="/tmp/lengow/tools"
+FOLDER_TRANSLATION="/tmp/lengow/translations/yml"
+
+VERT="\e[32m"
+ROUGE="\e[31m"
+NORMAL="\e[39m"
+BLEU="\e[36m"
+DEPLOY_ENV="$2"
# process
echo
echo "#####################################################"
echo "## ##"
-echo -e "## "${BLEU}Lengow Prestashop${NORMAL}" - Build Module ##"
+echo -e "## ${BLEU}Lengow Magento${NORMAL} - Build Module ##"
echo "## ##"
echo "#####################################################"
echo
PWD=$(pwd)
FOLDER=$(dirname "${PWD}")
echo "${FOLDER}"
-sleep 3
-
# Change config for preprod
if [ ! -z "${DEPLOY_ENV}" ] && [ "${DEPLOY_ENV}" == "preprod" ]; then
- if [ "$CURRENT_OS" == "MacOS" ]; then
- sed -i '' 's/lengow.io/lengow.net/g' "${FOLDER}/classes/models/LengowConnector.php"
- sed -i '' 's/lengow.local/lengow.net/g' "${FOLDER}/classes/models/LengowConnector.php"
- else
- sed -i 's/lengow.io/lengow.net/g' "${FOLDER}/classes/models/LengowConnector.php"
- sed -i 's/lengow.local/lengow.net/g' "${FOLDER}/classes/models/LengowConnector.php"
- fi
+ sed -i '' 's/lengow.io/lengow.net/g' "${FOLDER}/classes/models/LengowConnector.php"
fi
-
if [ ! -z "${DEPLOY_ENV}" ] && [ "${DEPLOY_ENV}" == "prod" ]; then
- if [ "$CURRENT_OS" == "MacOS" ]; then
- sed -i '' 's/lengow.net/lengow.io/g' "${FOLDER}/classes/models/LengowConnector.php"
- sed -i '' 's/lengow.local/lengow.io/g' "${FOLDER}/classes/models/LengowConnector.php"
- else
- sed -i 's/lengow.net/lengow.io/g' "${FOLDER}/classes/models/LengowConnector.php"
- sed -i 's/lengow.local/lengow.io/g' "${FOLDER}/classes/models/LengowConnector.php"
- fi
+ sed -i '' 's/lengow.net/lengow.io/g' "${FOLDER}/classes/models/LengowConnector.php"
fi
-
# remove TMP FOLDER
if [ -d "${FOLDER_TMP}" ]; then
rm -Rf "${FOLDER_TMP}"
fi
-mkdir "${FOLDER_TMP}"
+# create folder
+if [ ! -d "${FOLDER_TMP}" ]; then
+ mkdir "${FOLDER_TMP}"
+fi
if [ ! -d "$FOLDER" ]; then
echo -e "Folder doesn't exist : ${ROUGE}ERROR${NORMAL}"
@@ -129,15 +108,9 @@ if [ ! -d "$FOLDER" ]; then
exit 0
fi
-if [ "$CURRENT_OS" == "MacOS" ]; then
- PHP=$(realpath "$(which php)")
-else
- PHP=$(which php8.1)
-fi
+PHP=$(realpath "$(which php)")
+echo "${PHP}"
-echo "php binary is ${PHP}"
-
-sleep 3
# generate translations
"${PHP}" translate.php
echo -e "- Generate translations : ${VERT}DONE${NORMAL}"
@@ -146,7 +119,7 @@ echo -e "- Generate translations : ${VERT}DONE${NORMAL}"
echo -e "- Create files checksum : ${VERT}DONE${NORMAL}"
# remove TMP FOLDER
remove_directory "$FOLDER_TMP"
-# copy files
+# copy files (excluding .DS_Store)
rsync -a --exclude='.DS_Store' "$FOLDER/" "$FOLDER_TMP/"
# remove dod
remove_files "$FOLDER_TMP" "dod.md"
@@ -156,17 +129,12 @@ remove_files "$FOLDER_TMP" "README.md"
remove_files "$FOLDER_TMP" ".gitignore"
# remove php-cs-fixer-cache
remove_files "$FOLDER_TMP" ".php-cs-fixer.cache"
-remove_files "$FOLDER_TMP" ".php-cs-fixer.dist.php"
-remove_files "$FOLDER_TMP" ".php_cs.cache"
# remove .git
remove_files "$FOLDER_TMP" ".git"
# remove .DS_Store
remove_files "$FOLDER_TMP" ".DS_Store"
-# remove composer.json
-remove_files "$FOLDER_TMP" "composer.json"
# remove .AdminLengowHome.gif
remove_files "$FOLDER_TMP" "AdminLengowHome.gif"
-sleep 3
# remove .idea
remove_files "$FOLDER_TMP" ".idea"
# remove Jenkinsfile
@@ -197,28 +165,16 @@ echo -e "- Delete config_es.xml : ${VERT}DONE${NORMAL}"
# remove config_it.xml
find "$FOLDER_TMP" -name "config_it.xml" -delete
echo -e "- Delete config_it.xml : ${VERT}DONE${NORMAL}"
-sleep 3
# remove todo.txt
find "$FOLDER_TMP" -name "todo.txt" -delete
echo -e "- todo.txt : ${VERT}DONE${NORMAL}"
-# add module key
-if [ ! -z "${DEPLOY_ENV}" ] && [ "${DEPLOY_ENV}" == "prod" ]; then
- if [ "$CURRENT_OS" == "MacOS" ]; then
- sed -i '' "s/__LENGOW_PRESTASHOP_PRODUCT_KEY__/${MODULE_KEY}/g" "${FOLDER_TMP}/lengow.php"
- else
- sed -i "s/__LENGOW_PRESTASHOP_PRODUCT_KEY__/${MODULE_KEY}/g" ${FOLDER_TMP}/lengow.php
- fi
- echo -e "- Add module key : ${VERT}DONE${NORMAL}"
-fi
-
# make zip
cd /tmp
-zip "-r" "$ARCHIVE_NAME" "lengow"
+zip -r "$ARCHIVE_NAME" "lengow"
echo -e "- Build archive : ${VERT}DONE${NORMAL}"
if [ -d "~/Bureau" ]; then
mv "$ARCHIVE_NAME" ~/Bureau
else
mv "$ARCHIVE_NAME" ~/shared
fi
-sleep 3
-echo "End of build."
\ No newline at end of file
+
diff --git a/tools/vars.enc b/tools/vars.enc
index 24518bc4..b08f0c6e 100644
Binary files a/tools/vars.enc and b/tools/vars.enc differ
diff --git a/translations/en.csv b/translations/en.csv
index d250b068..e858d3f3 100755
--- a/translations/en.csv
+++ b/translations/en.csv
@@ -113,6 +113,12 @@ product.screen.date_from|From
product.screen.date_to|To
product.screen.button_copy|Copy
product.screen.button_download|Download
+product.screen.button_filter|Filter
+product.screen.button_fields_setting|Modify field names
+product.screen.button_fields_reset|Reset all fields
+product.screen.title_fields_settings|Modify the default field of the exported catalogue
+product.screen.title_column_name_fields|Name of the Lengow field
+product.screen.title_column_prestashop_value|PrestaShop value
product.screen.button_yes|Yes
product.screen.button_no|No
product.screen.button_search|Search
@@ -243,7 +249,7 @@ help.screen.contain_text_support|Ask us anything about Lengow or share feedback
help.screen.title_lengow_support|Lengow Support.
help.screen.need_some_help|Need some help?
help.screen.contain_text_support_hour|We’ll do our best to get back to you during regular business hours (Monday to Friday – 9am to 6pm GMT+1).
-help.screen.find_answer|You can also find answers in our
+help.screen.find_answer|You can also find answers in our
help.screen.link_prestashop_guide|PrestaShop dedicated guide
legals.screen.simplified_company|Simplified limited liability company
legals.screen.social_capital|Social capital:
@@ -381,6 +387,8 @@ lengow_setting.lengow_tracking_id_legend|The name of the unique identifier enter
lengow_setting.lengow_currency_conversion_title|Convert the currency of your order
lengow_setting.lengow_currency_conversion_legend|All orders imported into PrestaShop will be automatically converted into the currency you've selected in Lengow
lengow_setting.lengow_currency_conversion_switch|Activate conversion
+lengow_setting.lengow_disable_send_email_title|Disable sending emails
+lengow_setting.lengow_disable_send_email_legend|Activate this option if you do not want to send emails to customers when order's statuses change
lengow_log.error.nb_order_imported|%{nb_order} order(s) imported
lengow_log.error.nb_order_updated|%{nb_order} order(s) updated
lengow_log.error.nb_order_with_error|%{nb_order} order(s) with errors
diff --git a/translations/es.csv b/translations/es.csv
index b18c5340..a1512151 100755
--- a/translations/es.csv
+++ b/translations/es.csv
@@ -69,7 +69,7 @@ connection.cms.failed_description_second_credentials_prod|Por favor, verifique q
connection.cms.failed_description_second_credentials_preprod|Por favor, verifique que estas credenciales coincidan con el entorno de pre-producción de Lengow.
connection.cms.failed_help|Si el problema persiste, puede consultar la
connection.cms.failed_help_center|"Guía de PrestaShop"
-connection.cms.failed_help_or|o contactar con nuestro
+connection.cms.failed_help_or|o contactar con nuestro
connection.cms.failed_help_customer_success_team|"Equipo de éxito del cliente"
connection.cms.failed_button|Volver a intentar
connection.catalog.link_title|Vincule sus tiendas con Lengow
@@ -113,6 +113,12 @@ product.screen.date_from|Desde
product.screen.date_to|Hasta
product.screen.button_copy|Copiar
product.screen.button_download|Descargar
+product.screen.button_filter|Filtro
+product.screen.button_fields_setting|Modificación de los nombres de los campos
+product.screen.button_fields_reset|Restablecer todos los campos
+product.screen.title_fields_settings|Modificar los campo por defecto del catálogo exportado
+product.screen.title_column_name_fields|Nombre del campo de Lengow
+product.screen.title_column_prestashop_value|Valor de PrestaShop
product.screen.button_yes|Si
product.screen.button_no|No
product.screen.button_search|Buscar
@@ -133,7 +139,7 @@ product.table.lengow_status|Incluir en el export ?
product.table.pagination_of|de
order.screen.import_charge_first|Recuperando tus pedidos...
order.screen.import_charge_second|Por favor, ten paciencia con nosotros; esto no te llevará mucho tiempo (2 minutos de espera más o menos )
-order.screen.all_order_will_be_sent_to|Todos los informes de envios de pedidos serán enviados por email
+order.screen.all_order_will_be_sent_to|Todos los informes de envios de pedidos serán enviados por email
order.screen.change_this|¿Cambiar esto?
order.screen.last_order_importation|Última sincronización
order.screen.no_order_importation|No hay sincronización por ahora
@@ -381,6 +387,8 @@ lengow_setting.lengow_tracking_id_legend|El nombre del identificador único indi
lengow_setting.lengow_currency_conversion_title|Convierte la divisa de tu pedido
lengow_setting.lengow_currency_conversion_legend|Todos los pedidos importados a Magento serán transformados automáticamente con la moneda que seleccionaste en Lengow
lengow_setting.lengow_currency_conversion_switch|Activa la conversion
+lengow_setting.lengow_disable_send_email_title|Deshabilitar el envío de email
+lengow_setting.lengow_disable_send_email_legend|Deshabilitar el envío de email al cambiar el estado del pedido
lengow_log.error.nb_order_imported|%{nb_order} pedido(s) importada
lengow_log.error.nb_order_updated|%{nb_order} pedido(s) actualizado
lengow_log.error.nb_order_with_error|%{nb_order} pedido(s) con errores
@@ -407,11 +415,11 @@ lengow_log.exception.order_list_is_empty|el pedido no ha podido ser registrado
lengow_log.exception.carrier_shipping_address_no_country|la dirección de envío no contiene el país
lengow_log.exception.no_default_carrier_for_country|Debe seleccionar un proveedor predeterminado para el país: %{country_name} y marketplace: %{marketplace_name}
lengow_log.exception.marketplace_not_present|Lengow error: %{marketplace_name} no figura en la lista del mercado
-lengow_log.exception.order_line_required|la línea de pedido es requerida pero no se encuentra
+lengow_log.exception.order_line_required|la línea de pedido es requerida pero no se encuentra
lengow_log.exception.action_not_valid|la acción %{action} no es válida
lengow_log.exception.marketplace_action_not_present|acción marketplace %{action} no está presente
lengow_log.exception.marketplace_sku_require|se requiere la referencia del pedido marketplace
-lengow_log.exception.marketplace_name_require|es necesario el nombre del marketplace
+lengow_log.exception.marketplace_name_require|es necesario el nombre del marketplace
lengow_log.exception.no_delivery_country_in_order|no puede encontrar el país de entrega en el pedido
lengow_log.exception.match_carrier_with_country|necesitas relacionar el transportista %{carrier_name} con el país %{country_name}
lengow_log.exception.arg_is_required|envío de acción imposible: %{arg_name} es requerido
@@ -419,7 +427,7 @@ lengow_log.exception.action_not_created|creación de la acción imposible: %{err
lengow_log.exception.action_not_created_api|la acción no puede crearse porque la API Lengow se encuentra indisponible. Inténtelo de nuevo
lengow_log.exception.action_is_too_old|order action is too old. Please retry the call
lengow_log.exception.cannot_load_order_status|no se puede cargar el estado del pedido
-lengow_log.exception.order_creation_failed|la creación del pedido PrestaShop ha fallado
+lengow_log.exception.order_creation_failed|la creación del pedido PrestaShop ha fallado
lengow_log.exception.payment_module_not_active|el módulo de "pagos" no está activo
lengow_log.exception.cart_cannot_be_loaded|la compra no se puede cargar, o bien un pedido ya ha sido colocado usando esta misma compra
lengow_log.exception.delivery_country_not_active|el país %{country_name} en la dirección de entrega no está activo
diff --git a/translations/fr.csv b/translations/fr.csv
index 4f58015c..dfa90d2f 100755
--- a/translations/fr.csv
+++ b/translations/fr.csv
@@ -100,7 +100,7 @@ status.screen.third_description_end_free_trial|Votre compte d'essai sera supprim
status.screen.upgrade_account_button|Je suis prêt à souscrire !
status.screen.refresh_action|Actualiser mon compte
product.screen.filter_exported|filtrer les produits exportés
-product.screen.nb_exported|produits exportés
+product.screen.nb_exported|produits exportés
product.screen.nb_available|produits disponibles
product.screen.include_variation_product|Inclure les variations de produits
product.screen.include_out_of_stock_product|Inclure les produits hors stock
@@ -113,6 +113,12 @@ product.screen.date_from|Du
product.screen.date_to|Au
product.screen.button_copy|Copier
product.screen.button_download|Télécharger
+product.screen.button_filter|Filtre
+product.screen.button_fields_setting|Modifier les noms de champs
+product.screen.button_fields_reset|Réinitialiser tous les champs
+product.screen.title_fields_settings|Modifier les champs par default du catalogue exporté
+product.screen.title_column_name_fields|Nom du Champ Lengow
+product.screen.title_column_prestashop_value|Valeur PrestaShop
product.screen.button_yes|Oui
product.screen.button_no|Non
product.screen.button_search|Rechercher
@@ -152,7 +158,7 @@ order.screen.action_sent|Action %{action_type} envoyée
order.screen.action_waiting_return|Action envoyée, en attente d'une réponse.
order.screen.action_sent_not_work|Erreur sur l'action envoyée à la marketplace.
order.screen.no_error_message|Erreur non identifiée, merci de contacter le support Lengow pour plus d'informations
-order.screen.no_order_title|Le meilleur est encore à venir !
+order.screen.no_order_title|Le meilleur est encore à venir !
order.screen.no_order_description|Vos produits sont bien visibles, vos ventes sont sur le point de décoller
order.screen.action_success|Succès
order.screen.action_error|Erreur
@@ -381,6 +387,8 @@ lengow_setting.lengow_tracking_id_legend|Le nom de l'identifiant unique indiqué
lengow_setting.lengow_currency_conversion_title|Convertir la devise de vos commandes
lengow_setting.lengow_currency_conversion_legend|Toutes les commandes importées dans PrestaShop seront automatiquement converties dans la devise choisie dans Lengow
lengow_setting.lengow_currency_conversion_switch|Activer la conversion de devises
+lengow_setting.lengow_disable_send_email_title|Désactiver l'envoi d'email
+lengow_setting.lengow_disable_send_email_legend|Désactive l'envoi d'email lors des changements de statut de commande
lengow_log.error.nb_order_imported|%{nb_order} commande(s) importée(s)
lengow_log.error.nb_order_updated|%{nb_order} commande(s) mise(s) à jour
lengow_log.error.nb_order_with_error|%{nb_order} commande(s) avec erreurs
diff --git a/translations/it.csv b/translations/it.csv
index 195e1720..199beb64 100755
--- a/translations/it.csv
+++ b/translations/it.csv
@@ -65,7 +65,7 @@ connection.cms.success_button_catalog|Collega i cataloghi
connection.cms.failed_title|Ooops! Impossibile collegare Lengow al tuo PrestaShop
connection.cms.failed_description|Non siamo stati in grado di effettuare il collegamento tra il tuo PrestaShop e Lengow.
connection.cms.failed_description_first_credentials|Incapace di connettersi con le credenziali fornite.
-connection.cms.failed_description_second_credentials_prod|Si prega di verificare che queste credenziali corrispondano all'ambiente di produzione di Lengow.
+connection.cms.failed_description_second_credentials_prod|Si prega di verificare che queste credenziali corrispondano all'ambiente di produzione di Lengow.
connection.cms.failed_description_second_credentials_preprod|Si prega di verificare che queste credenziali corrispondano all'ambiente di pre-produzione di Lengow.
connection.cms.failed_help|Se il problema persiste, potrai dare un'occhiata alla
connection.cms.failed_help_center|"guida PrestaShop"
@@ -113,6 +113,12 @@ product.screen.date_from|Da
product.screen.date_to|A
product.screen.button_copy|Copia
product.screen.button_download|Scarica
+product.screen.button_filter|Filtro
+product.screen.button_fields_setting|Modifica dei nomi dei campi
+product.screen.button_fields_reset|Azzeramento di tutti i campi
+product.screen.title_fields_settings|Modificare i campi predefiniti del catalogo esportato
+product.screen.title_column_name_fields|Nome del campo Lengow
+product.screen.title_column_prestashop_value|Valore di PrestaShop
product.screen.button_yes|Si
product.screen.button_no|No
product.screen.button_search|Cerca
@@ -243,7 +249,7 @@ help.screen.contain_text_support|Contattaci o condividi i tuoi feedback con
help.screen.title_lengow_support|il Supporto Lengow
help.screen.need_some_help|Hai bisogno d'aiuto ?
help.screen.contain_text_support_hour|Faremo il possibile per darti una risposta durante le ore di lavoro (dal Lunedi al Venerdi - 9h/18h)
-help.screen.find_answer|Potresti trovare una risposta nella nostra
+help.screen.find_answer|Potresti trovare una risposta nella nostra
help.screen.link_prestashop_guide|guida dedicata PrestaShop
legals.screen.simplified_company|Società responsabilità limitata
legals.screen.social_capital|Capitale sociale:
@@ -344,7 +350,7 @@ lengow_setting.lengow_export_format_title|Esporta formato
lengow_setting.lengow_export_file_enabled_title|Esporta in un file
lengow_setting.lengow_export_file_enabled_legend|E' consigliato attivare questa opzione se avete 3.000 o piu' prodotti nel vostro flusso.
lengow_setting.lengow_export_carrier_default_title|Trasportatore di default
-lengow_setting.lengow_last_export_title|Ultima esportazione
+lengow_setting.lengow_last_export_title|Ultima esportazione
lengow_setting.lengow_order_id_process_title|Ordini in preparazione
lengow_setting.lengow_order_id_shipped_title|Ordine Spedizione
lengow_setting.lengow_order_id_cancel_title|Ordine cancellato
@@ -381,6 +387,8 @@ lengow_setting.lengow_tracking_id_legend|Il numero degli id unici indicati in Le
lengow_setting.lengow_currency_conversion_title|Converti la divisa del tuo ordine
lengow_setting.lengow_currency_conversion_legend|Tutti gli ordini importati in PrestaShop saranno automaticamente importati nella Divisa che hai selezionato in Lengow
lengow_setting.lengow_currency_conversion_switch|Attivare la conversione
+lengow_setting.lengow_disable_send_email_title|Disabilita l'invio di email
+lengow_setting.lengow_disable_send_email_legend|Disabilita l'invio di email al cambiamento dello stato dell'ordine
lengow_log.error.nb_order_imported|%{nb_order} ordine importato
lengow_log.error.nb_order_updated|%{nb_order} ordine aggiornato
lengow_log.error.nb_order_with_error|%{nb_order} errore numero ordine
diff --git a/translations/yml/en.yml b/translations/yml/en.yml
index 75a289e9..3554e599 100755
--- a/translations/yml/en.yml
+++ b/translations/yml/en.yml
@@ -129,6 +129,12 @@ en:
date_to: "To"
button_copy: "Copy"
button_download: "Download"
+ button_filter: "Filter"
+ button_fields_setting: "Modify field names"
+ button_fields_reset: "Reset all fields"
+ title_fields_settings: "Modify the default field names of the exported catalogue"
+ title_column_name_fields: "Name of the Lengow field"
+ title_column_prestashop_value: "PrestaShop value"
button_yes: "Yes"
button_no: "No"
button_search: "Search"
@@ -412,6 +418,8 @@ en:
lengow_currency_conversion_title: "Convert the currency of your order"
lengow_currency_conversion_legend: "All orders imported into PrestaShop will be automatically converted into the currency you've selected in Lengow"
lengow_currency_conversion_switch: "Activate conversion"
+ lengow_disable_send_email_title: "Disable sending emails"
+ lengow_disable_send_email_legend: "Activate this option if you do not want to send emails to customers when order's statuses change"
lengow_log:
error:
nb_order_imported: "%{nb_order} order(s) imported"
diff --git a/translations/yml/es.yml b/translations/yml/es.yml
index 3d43786e..6ed5ef30 100755
--- a/translations/yml/es.yml
+++ b/translations/yml/es.yml
@@ -129,6 +129,12 @@ es:
date_to: "Hasta"
button_copy: "Copiar"
button_download: "Descargar"
+ button_filter: "Filtro"
+ button_fields_setting: "Modificación de los nombres de los campos"
+ button_fields_reset: "Restablecer todos los campos"
+ title_fields_settings: "Modificar los nombres de campo por defecto del catálogo exportado"
+ title_column_name_fields: "Nombre del campo de Lengow"
+ title_column_prestashop_value: "Valor de PrestaShop"
button_yes: "Si"
button_no: "No"
button_search: "Buscar"
@@ -412,6 +418,8 @@ es:
lengow_currency_conversion_title: "Convierte la divisa de tu pedido"
lengow_currency_conversion_legend: "Todos los pedidos importados a Magento serán transformados automáticamente con la moneda que seleccionaste en Lengow"
lengow_currency_conversion_switch: "Activa la conversion"
+ lengow_disable_send_email_title: "Deshabilitar el envío de email"
+ lengow_disable_send_email_legend: "Deshabilitar el envío de email al cambiar el estado del pedido"
lengow_log:
error:
nb_order_imported: "%{nb_order} pedido(s) importada"
diff --git a/translations/yml/fr.yml b/translations/yml/fr.yml
index aa00682a..dde7ae94 100755
--- a/translations/yml/fr.yml
+++ b/translations/yml/fr.yml
@@ -129,6 +129,12 @@ fr:
date_to: "Au"
button_copy: "Copier"
button_download: "Télécharger"
+ button_filter: "Filtre"
+ button_fields_setting: "Modifier les noms de champs"
+ button_fields_reset: "Réinitialiser tous les champs"
+ title_fields_settings: "Modifier les noms de champs par default du catalogue exporté"
+ title_column_name_fields: "Nom du champ Lengow"
+ title_column_prestashop_value: "Valeur PrestaShop"
button_yes: "Oui"
button_no: "Non"
button_search: "Rechercher"
@@ -412,6 +418,8 @@ fr:
lengow_currency_conversion_title: "Convertir la devise de vos commandes"
lengow_currency_conversion_legend: "Toutes les commandes importées dans PrestaShop seront automatiquement converties dans la devise choisie dans Lengow"
lengow_currency_conversion_switch: "Activer la conversion de devises"
+ lengow_disable_send_email_title: "Désactiver l'envoi d'email"
+ lengow_disable_send_email_legend: "Désactive l'envoi d'email lors des changements de statut de commande"
lengow_log:
error:
nb_order_imported: "%{nb_order} commande(s) importée(s)"
diff --git a/translations/yml/it.yml b/translations/yml/it.yml
index 4f3f7068..8b4d7100 100755
--- a/translations/yml/it.yml
+++ b/translations/yml/it.yml
@@ -129,6 +129,12 @@ it:
date_to: "A"
button_copy: "Copia"
button_download: "Scarica"
+ button_filter: "Filtro"
+ button_fields_setting: "Modifica dei nomi dei campi"
+ button_fields_reset: "Azzeramento di tutti i campi"
+ title_fields_settings: "Modificare i nomi dei campi predefiniti del catalogo esportato"
+ title_column_name_fields: "Nome del campo Lengow"
+ title_column_prestashop_value: "Valore di PrestaShop"
button_yes: "Si"
button_no: "No"
button_search: "Cerca"
@@ -412,6 +418,8 @@ it:
lengow_currency_conversion_title: "Converti la divisa del tuo ordine"
lengow_currency_conversion_legend: "Tutti gli ordini importati in PrestaShop saranno automaticamente importati nella Divisa che hai selezionato in Lengow"
lengow_currency_conversion_switch: "Attivare la conversione"
+ lengow_disable_send_email_title: "Disabilita l'invio di email"
+ lengow_disable_send_email_legend: "Disabilita l'invio di email al cambiamento dello stato dell'ordine"
lengow_log:
error:
nb_order_imported: "%{nb_order} ordine importato"
diff --git a/upgrade/update_3.5.4.php b/upgrade/update_3.5.4.php
new file mode 100755
index 00000000..914d1773
--- /dev/null
+++ b/upgrade/update_3.5.4.php
@@ -0,0 +1,114 @@
+
+ * @copyright 2024 Lengow SAS
+ * @license http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+if (!defined('_PS_VERSION_')) {
+ exit;
+}
+
+if (!LengowInstall::isInstallationInProgress()) {
+ exit;
+}
+
+// *********************************************************
+// Create lengow_exported_fields Table
+// *********************************************************
+
+$tableExists = LengowInstall::checkTableExists('lengow_exported_fields');
+
+if (!$tableExists) {
+ $sql = 'CREATE TABLE ' . _DB_PREFIX_ . 'lengow_exported_fields (
+ id INT(11) NOT NULL AUTO_INCREMENT,
+ lengow_field VARCHAR(255) NOT NULL,
+ prestashop_value VARCHAR(255) NOT NULL,
+ default_key VARCHAR(255) NOT NULL,
+ exported TINYINT(1) NOT NULL DEFAULT 1,
+ PRIMARY KEY (id)
+ ) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8;';
+
+ Db::getInstance()->execute($sql);
+
+ // *********************************************************
+ // Insert Default Values
+ // *********************************************************
+
+ $fields = [
+ 'id' => 'id',
+ 'sku' => 'sku',
+ 'sku_supplier' => 'sku_supplier',
+ 'ean' => 'ean',
+ 'upc' => 'upc',
+ 'isbn' => 'isbn',
+ 'name' => 'name',
+ 'quantity' => 'quantity',
+ 'minimal_quantity' => 'minimal_quantity',
+ 'availability' => 'availability',
+ 'is_virtual' => 'is_virtual',
+ 'condition' => 'condition',
+ 'category' => 'category',
+ 'status' => 'status',
+ 'url' => 'url',
+ 'url_rewrite' => 'url_rewrite',
+ 'price_excl_tax' => 'price_excl_tax',
+ 'price_incl_tax' => 'price_incl_tax',
+ 'price_before_discount_excl_tax' => 'price_before_discount_excl_tax',
+ 'price_before_discount_incl_tax' => 'price_before_discount_incl_tax',
+ 'price_wholesale' => 'price_wholesale',
+ 'discount_percent' => 'discount_percent',
+ 'discount_start_date' => 'discount_start_date',
+ 'discount_end_date' => 'discount_end_date',
+ 'ecotax' => 'ecotax',
+ 'shipping_cost' => 'shipping_cost',
+ 'shipping_delay' => 'shipping_delay',
+ 'currency' => 'currency',
+ 'image_url_1' => 'image_1',
+ 'image_url_2' => 'image_2',
+ 'image_url_3' => 'image_3',
+ 'image_url_4' => 'image_4',
+ 'image_url_5' => 'image_5',
+ 'image_url_6' => 'image_6',
+ 'image_url_7' => 'image_7',
+ 'image_url_8' => 'image_8',
+ 'image_url_9' => 'image_9',
+ 'image_url_10' => 'image_10',
+ 'type' => 'type',
+ 'parent_id' => 'parent_id',
+ 'variation' => 'variation',
+ 'language' => 'language',
+ 'description' => 'description',
+ 'description_html' => 'description_html',
+ 'description_short' => 'short_description',
+ 'description_short_html' => 'short_description_html',
+ 'tags' => 'tags',
+ 'meta_title' => 'meta_title',
+ 'meta_keyword' => 'meta_keywords',
+ 'meta_description' => 'meta_description',
+ 'manufacturer' => 'manufacturer',
+ 'supplier' => 'supplier',
+ 'weight' => 'weight',
+ 'weight_unit' => 'weight_unit',
+ ];
+
+ foreach ($fields as $lengowField => $prestashopValue) {
+ $sql = 'INSERT INTO ' . _DB_PREFIX_ . 'lengow_exported_fields (lengow_field, prestashop_value, default_key)
+ VALUES ("' . pSQL($lengowField) . '", "' . pSQL($prestashopValue) . '", "' . pSQL($lengowField) . '")';
+ Db::getInstance()->execute($sql);
+ }
+}
diff --git a/views/css/lengow-components.css b/views/css/lengow-components.css
index 0445e22f..8cacf28c 100755
--- a/views/css/lengow-components.css
+++ b/views/css/lengow-components.css
@@ -18,7 +18,7 @@
color: #555;
text-decoration: none;
transition: top 100ms ease,
- box-shadow 100ms ease;
+ box-shadow 100ms ease;
}
a.lgw-box-link:hover {
@@ -255,9 +255,9 @@ a.lgw-box-link:hover {
transform: scale(0.0);
-webkit-transform: scale(0.0);
} 50% {
- transform: scale(1.0);
- -webkit-transform: scale(1.0);
- }
+ transform: scale(1.0);
+ -webkit-transform: scale(1.0);
+ }
}
/*************************************************/
@@ -427,6 +427,7 @@ a.lgw-box-link:hover {
display: block;
width: 100% !important;
max-width: 500px;
+ z-index: 100000;
}
.select2-container--default .select2-selection--single {
@@ -1120,12 +1121,18 @@ a.lgw-box-link:hover {
background: url('../img/carret-up.png') no-repeat right center;
}
-.lgw-container .accordion .lgw-arrow-right {
+.lgw-arrow-right {
background: url('../img/arrow-right.png') no-repeat right center;
height: 43px;
width: 30px;
}
+.lgw-arrow-left {
+ background: url('../img/arrow-right.png') no-repeat left center;
+ height: 43px;
+ width: 30px;
+}
+
/*************************************************/
/* LOADER */
@@ -1230,4 +1237,4 @@ a.lgw-box-link:hover {
.lgw-icon.mod-pro:after {
font-size: 20px;
-}
\ No newline at end of file
+}
diff --git a/views/css/lengow-layout.css b/views/css/lengow-layout.css
index 0cd455e7..611231a0 100755
--- a/views/css/lengow-layout.css
+++ b/views/css/lengow-layout.css
@@ -369,7 +369,7 @@ hr {
body.page-sidebar-closed .lengow-nav,
body.page-sidebar-closed .lengow-nav-bottom {
- left: -5px;
+ left: 30px;
}
#lengow_logo img {
@@ -488,6 +488,10 @@ body.page-sidebar-closed .lengow-nav-bottom {
top: 54px;
}
+body.page-sidebar-closed #lgw-debug {
+ left: 60px;
+}
+
/*************************************************/
/* SELECT2 */
/*************************************************/
diff --git a/views/css/lengow-pages.css b/views/css/lengow-pages.css
index 5a2a5884..cac7c825 100755
--- a/views/css/lengow-pages.css
+++ b/views/css/lengow-pages.css
@@ -381,9 +381,6 @@
}
.sticky-icon {
- position: fixed;
- top: 170px;
- transform: translateY(-50%);
z-index: 999;
padding: 10px;
cursor: pointer;
@@ -394,13 +391,12 @@
}
.sticky-switch {
+ position: absolute;
display: flex;
justify-content: center;
flex-direction: column;
visibility: hidden;
- position: fixed;
- top: 275px;
- transform: translateY(-50%);
+ top: 10px;
padding: 10px;
width: 25%;
max-height: 100vh;
@@ -419,11 +415,213 @@
.filter-column {
float: left;
- width: 50px;
+ margin-top: 10px;
+ width: 80px;
+ display: flex;
+ justify-content: center;
+}
+
+.feed-field {
+ width: fit-content !important;
+}
+
+.fade-scale {
+ opacity: 0;
+ -webkit-transition: all .25s linear;
+ -o-transition: all .25s linear;
+ transition: all .25s linear;
+ display: none;
+}
+
+.fade-scale.in {
+ opacity: 1;
+ display: block;
+}
+
+.lengow-modal-dialog {
+ margin-top: 20px;
+ display: flex;
+ justify-content: center;
+}
+
+.lengow-modal-content {
+ background: white;
+ width: 1200px;
+}
+
+.modal-header-lengow {
+ padding: 15px;
+ padding-bottom: 0;
+ min-height: 16.428571429px;
+}
+
+.lengow-modal-body {
+ padding: 0 15px;
+ height: 430px;
+ overflow-y: scroll;
+ overflow-x: hidden;
+}
+
+.grid-header,
+.grid-row {
+display: flex;
+}
+
+.grid-header {
display: flex;
+ background: #f9f9f9;
+}
+
+.grid-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 100%;
+ min-width: 225px;
+ text-align: center;
+ border: 1px solid #d5dadc;
+}
+
+.header-item {
+ height: 50px;
+ background: #f0f0f0;
+ font-weight: bold;
+}
+
+.arrow-column {
+ display: flex;
+ align-items: center;
justify-content: center;
}
+.line-name-field {
+ display: flex;
+ justify-content: space-around;
+}
+
+.field-value {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ height: 60px;
+ width: 230px;
+ overflow: auto;
+}
+
+.lengow_input {
+ margin-top: 15px !important;
+}
+
+.form__buttons {
+ display: flex;
+ justify-content: space-around;
+ border-top: 1px solid #c9cfd2;
+ background: white;
+ position: sticky;
+ bottom: 0;
+ padding: 1em;
+ margin: -1em;
+}
+
+.config_field_button-container {
+ width: 98%;
+ display: flex;
+ justify-content: end;
+}
+
+.config_field_button {
+ position: relative;
+ margin-bottom: 10px;
+ width: 20px;
+ padding: 10px;
+ background: #ded3d3;
+}
+
+.config_field_button:hover {
+ cursor: pointer;
+ background: grey;
+}
+
+.config_field_button:hover i {
+ color: white !important;
+}
+
+.container-close-button {
+ display: flex;
+ justify-content: end;
+}
+
+.close-button {
+ box-sizing: border-box;
+ color: #949393;
+ cursor: pointer;
+ display: inline-block;
+ font-size: 26px;
+ font-weight: 800;
+ line-height: 16px;
+ min-height: 30px;
+ outline: 0;
+ text-align: center;
+ text-rendering: geometricprecision;
+ text-transform: none;
+ user-select: none;
+ -webkit-user-select: none;
+ touch-action: manipulation;
+ vertical-align: middle;
+}
+
+.close-button:hover,
+.close-button:active {
+ background-color: initial;
+ background-position: 0 0;
+ color: #555;
+}
+
+.close-button:active {
+ opacity: .5;
+}
+
+/* Product selector */
+
+.select-product-container {
+ margin-top: 20px;
+ margin-bottom: 10px;
+ width: 120px;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+}
+
+.select-product-container p {
+ font-weight: bold;
+ color: #333;
+ margin-bottom: 4px;
+ margin-right: 10px;
+ padding-bottom: 5px;
+}
+
+.select-product-container .select2-container {
+ width: 100% !important;
+}
+
+.product-setting-header-row {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+}
+
+.export-feature {
+ display: flex;
+ align-items: center;
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
+
+#toggle-all-fields {
+ margin-right: 10px;
+}
+
/*************************************************/
/* ORDERS */
/*************************************************/
@@ -434,7 +632,7 @@ body.page-sidebar #lengow_form_order_setting{
}
.adminlengoworder .lengow-nav {
- min-width: 1450px;
+ min-width: 1250px;
}
.adminlengoworder .nobootstrap,
@@ -443,7 +641,7 @@ body.page-sidebar #lengow_form_order_setting{
}
.adminlengoworder .lgw-container {
- min-width: 1450px;
+ min-width: 1250px;
width:100%;
}
diff --git a/views/img/settings-product.png b/views/img/settings-product.png
new file mode 100644
index 00000000..dbc89d5d
Binary files /dev/null and b/views/img/settings-product.png differ
diff --git a/views/img/settings-product.svg b/views/img/settings-product.svg
new file mode 100755
index 00000000..382f778b
--- /dev/null
+++ b/views/img/settings-product.svg
@@ -0,0 +1,17 @@
+
+
+
\ No newline at end of file
diff --git a/views/js/lengow/feed.js b/views/js/lengow/feed.js
index 13c9ee1d..6239aa28 100755
--- a/views/js/lengow/feed.js
+++ b/views/js/lengow/feed.js
@@ -17,50 +17,39 @@
* @copyright 2017 Lengow SAS
* @license http://www.apache.org/licenses/LICENSE-2.0
*/
-
document.addEventListener('DOMContentLoaded', function() {
- const stickyIcon = document.getElementById('sticky-icon');
- const stickySwitches = document.querySelectorAll('.sticky-switch');
- const lengowBoxes = document.querySelectorAll('.lgw-box');
- if (lengowBoxes && lengowBoxes.length > 1) {
- stickyIcon.style.display = 'none';
- }
-
- stickyIcon.addEventListener('click', function() {
- stickySwitches.forEach(function(switchElem) {
- const isSwitchVisible = switchElem.classList.contains('show-switch');
- if (isSwitchVisible) {
- switchElem.classList.remove('show-switch');
- } else {
- switchElem.classList.add('show-switch');
- }
+ document.querySelectorAll('.sticky-icon').forEach(icon => {
+ icon.addEventListener('click', function() {
+ const shopId = this.dataset.shopId;
+ const stickySwitches = document.querySelectorAll(`.sticky-switch${shopId}`);
+
+ stickySwitches.forEach(function(switchElem) {
+ const isSwitchVisible = switchElem.classList.contains('show-switch');
+ if (isSwitchVisible) {
+ switchElem.classList.remove('show-switch');
+ } else {
+ switchElem.classList.add('show-switch');
+ }
+ });
});
});
document.addEventListener('click', function(event) {
const clickedElement = event.target;
const isStickySwitch = clickedElement.closest('.sticky-switch');
- const isStickyIcon = clickedElement.closest('#sticky-icon');
+ const isStickyIcon = clickedElement.closest('.sticky-icon');
if (!isStickySwitch && !isStickyIcon) {
- stickySwitches.forEach(function(switchElem) {
+ document.querySelectorAll('.sticky-switch.show-switch').forEach(function(switchElem) {
switchElem.classList.remove('show-switch');
});
}
});
});
-
-
(function ($) {
$(document).ready(function () {
-
- /**
- * Refresh total product/product exported
- * @param data Number of products exported and total products
- * @param idShop Shop id
- */
function reloadTotal(data, idShop) {
lengow_jquery("#block_" + idShop + " .lengow_exported").html(data['total_export_product']);
lengow_jquery("#block_" + idShop + " .lengow_total").html(data['total_product']);
@@ -71,10 +60,9 @@ document.addEventListener('DOMContentLoaded', function() {
var action = $(this).attr('data-action');
var idShop = $(this).attr('data-id_shop');
+ var className = $(this).attr('class').replace('lengow_switch_option ', '');
- var className = $(this).attr('class').replace('lengow_switch_option ','');
- switch(className)
- {
+ switch(className) {
case 'option-selection':
lengow_jquery('.option-out-of-stock').prop('checked', true);
lengow_jquery('.option-variation').prop('checked', true);
@@ -85,44 +73,38 @@ document.addEventListener('DOMContentLoaded', function() {
break;
}
- var state_selection = lengow_jquery('.option-selection').prop('checked');
- var state_out_of_stock = lengow_jquery('.option-out-of-stock').prop('checked');
- var state_variation = lengow_jquery('.option-variation').prop('checked');
- var state_inactive = lengow_jquery('.option-inactive').prop('checked');
-
+ var state_selection = lengow_jquery(`.option-selection-${idShop}`).prop('checked');
+ var state_out_of_stock = lengow_jquery(`.option-out-of-stock-${idShop}`).prop('checked');
+ var state_variation = lengow_jquery(`.option-variation-${idShop}`).prop('checked');
+ var state_inactive = lengow_jquery(`.option-inactive-${idShop}`).prop('checked');
var data = {
state_selection: state_selection ? 1 : 0,
state_variation: state_variation ? 1 : 0,
- state_out_of_stock : state_out_of_stock ? 1 :0,
- state_inactive : state_inactive ? 1 : 0,
+ state_out_of_stock: state_out_of_stock ? 1 : 0,
+ state_inactive: state_inactive ? 1 : 0,
action: action,
id_shop: idShop
};
-
$.getJSON(href, data, function(content) {
var selector = lengow_jquery('#block_' + idShop + ' .lengow_feed_block_footer_content');
reloadTotal(content, idShop);
- if (content['option'] !== 'selection'){
+ if (content['option'] !== 'selection') {
selector.slideUp(150);
lengow_jquery('.switch-selection').removeClass('checked');
} else {
- //window.location.reload();
if (content['state'] === true) {
- console.log('add class checked');
lengow_jquery('.switch-variation').addClass('checked');
lengow_jquery('.switch-out-of-stock').addClass('checked');
lengow_jquery('.switch-inactive').removeClass('checked');
}
}
-
if (content['state'] != null) {
- if (content['state'] === true
- && content['option'] === 'selection') {
+ if (content['state'] === true && content['option'] === 'selection') {
selector.slideDown(150);
} else {
selector.slideUp(150);
@@ -138,8 +120,6 @@ document.addEventListener('DOMContentLoaded', function() {
var idProduct = $(this).attr('data-id_product');
var state = $(this).prop('checked');
-
-
var data = {
state: state ? 1 : 0,
action: action,
@@ -152,7 +132,6 @@ document.addEventListener('DOMContentLoaded', function() {
});
});
-
$('.lgw-container').on('click', '.lgw-pagination a', function () {
if ($(this).parent().hasClass('disabled')) {
return false;
@@ -170,134 +149,6 @@ document.addEventListener('DOMContentLoaded', function() {
$('#lengow_feed_wrapper #form_table_shop_' + idShop + ' input[name="order_value"]').val($(this).attr('data-order'));
$('#lengow_feed_wrapper #form_table_shop_' + idShop + ' input[name="order_column"]').val($(this).attr('data-column'));
$('#lengow_feed_wrapper #form_table_shop_' + idShop).submit();
- return false;
- });
-
- $('#lengow_feed_wrapper').on('change', '.lgw-pagination-select-item', function () {
- $('#lengow_feed_wrapper .lengow_form_table input[name="nb_per_page"]').val($(this).val());
- $('#lengow_feed_wrapper .lengow_form_table').submit();
- return false;
- });
-
- // update by input
-
- var typingTimer;
- var idShop;
- $('#lengow_feed_wrapper').on('keyup', 'thead input[type="text"]', function () {
- idShop = $(this).closest('table').attr('id').split('_')[2];
- clearTimeout(typingTimer);
- typingTimer = setTimeout(doneTyping, 750);
- });
- $('#lengow_feed_wrapper').on('keydown', 'thead input[type="text"]', function () {
- clearTimeout(typingTimer);
- });
- function doneTyping (){
- $('#lengow_feed_wrapper #form_table_shop_' + idShop).submit();
- }
-
- $('#lengow_feed_wrapper').on('submit', '.lengow_form_table', function () {
- var href = $(this).attr('data-href');
- var idShop = $(this).attr('id').split('_')[3];
- var form = $(this).serialize();
- var url = href + "&" + form;
- var data = {
- action: 'load_table',
- id_shop: idShop
- };
-
- $.getJSON(url, data, function(content) {
- lengow_jquery("#block_" + content['shop_id']
- + " .lengow_feed_block_footer_content").html(content['footer_content']);
- pluginsRender();
- });
-
- return false;
- });
- $('#lengow_feed_wrapper').on('click', '.lengow_select_all', function () {
- var idShop = $(this).attr('id').split('_')[2];
- if ($(this).prop('checked')) {
- $('#table_shop_' + idShop + ' tbody .lengow_selection').prop('checked', true);
- $('#table_shop_' + idShop + ' tbody tr').addClass('select');
- $('#block_' + idShop + ' .lengow_toolbar a').show();
- $('#block_' + idShop + ' .lengow_toolbar .lengow_select_all_shop').show();
- } else {
- $('#table_shop_' + idShop + ' tbody .lengow_selection').prop('checked', false);
- $('#table_shop_' + idShop + ' tbody tr').removeClass('select');
- $('#block_' + idShop + ' .lengow_toolbar a').hide();
- $('#block_' + idShop + ' .lengow_toolbar .lengow_select_all_shop').hide();
- }
- });
- $('#lengow_feed_wrapper').on('click', '.lengow_selection', function () {
- var idShop = $(this).parents('table').attr('id').split('_')[2];
- $('#block_' + idShop + ' .lengow_toolbar a').show();
-
- if ($(this).prop('checked')) {
- $(this).parents('tr').addClass('select');
- } else {
- $('#block_' + idShop + ' .lengow_toolbar .lengow_select_all_shop input').prop('checked', false);
- $(this).parents('tr').removeClass('select');
-
- }
- var findProductSelected = false;
- $(this).parents('table').find('.lengow_selection').each(function (index) {
- if ($(this).prop('checked')) {
- findProductSelected = true;
- }
- });
- if (!findProductSelected) {
- $('#block_' + idShop + ' .lengow_toolbar a').hide();
- }
- });
- $('#lengow_feed_wrapper').on('click', '.lengow_add_to_export, .lengow_remove_from_export', function () {
- var href = $(this).attr('data-href');
- var idShop = $(this).attr('data-id_shop');
- var message = $(this).attr('data-message');
- var action = $(this).attr('data-action');
- var exportAction = $(this).attr('data-export-action');
- var form = $('#form_table_shop_' + idShop).serialize();
- var url = href + "&" + form;
- var check = $('#select_all_shop_' + idShop).prop('checked');
- var data = {
- action: action,
- id_shop: idShop,
- select_all: check,
- export_action: exportAction
- };
- if (!check || (check && confirm(message))) {
- $.getJSON(url, data, function(content) {
- if (content['message']) {
- alert(content['message']);
- } else {
- $.each(content['product_id'], function(idx, productId) {
- if (exportAction == 'lengow_add_to_export') {
- lengow_jquery("#shop_" + idShop + "_" + productId + " .lgw-switch").addClass("checked");
- lengow_jquery(".lengow_switch_product").prop("checked", true);
- } else {
- lengow_jquery("#shop_" + idShop + "_" + productId + " .lgw-switch").removeClass("checked");
- lengow_jquery(".lengow_switch_product").prop("checked", false);
- }
- });
- reloadTotal(content, idShop);
- }
- });
- }
- return false;
- });
-
- $('#lengow_feed_wrapper').on('click', '.lengow_select_all_shop input', function () {
- var idShop = $('.lengow_select_all').attr('id').split('_')[2];
- if ($(this).prop('checked')) {
- $('#table_shop_' + idShop + ' tbody .lengow_selection').prop('checked', true);
- $('.lengow_selection').parents('tr').addClass('select');
- }
- });
-
- $('.lengow_table').on('click', '.table_row td:not(.no-link)', function(){
- var url = $(this).closest('.table_row').find('.feed_name a').attr('href');
- if (url) {
- window.open(url, '_blank');
- };
- return false;
});
pluginsRender();
@@ -305,7 +156,6 @@ document.addEventListener('DOMContentLoaded', function() {
});
})(lengow_jquery);
-function pluginsRender(){
- // Selects
+function pluginsRender() {
lengow_jquery('.lgw-pagination-select-item').select2({minimumResultsForSearch: Infinity});
}
diff --git a/views/templates/admin/lengow_feed/helpers/view/edit_fields_feed.tpl b/views/templates/admin/lengow_feed/helpers/view/edit_fields_feed.tpl
new file mode 100644
index 00000000..b10ff8c0
--- /dev/null
+++ b/views/templates/admin/lengow_feed/helpers/view/edit_fields_feed.tpl
@@ -0,0 +1,221 @@
+{*
+ * Copyright 2017 Lengow SAS.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License. You may obtain
+ * a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ *
+ * @author Team Connector
+ * @copyright 2017 Lengow SAS
+ * @license http://www.apache.org/licenses/LICENSE-2.0
+ *}
+
+
+
+
+
+
diff --git a/views/templates/admin/lengow_feed/helpers/view/view.tpl b/views/templates/admin/lengow_feed/helpers/view/view.tpl
index 2a45fc43..bc269b22 100755
--- a/views/templates/admin/lengow_feed/helpers/view/view.tpl
+++ b/views/templates/admin/lengow_feed/helpers/view/view.tpl
@@ -20,19 +20,24 @@
-
{if $debugMode}
{$locale->t('menu.debug_active')|escape:'htmlall':'UTF-8'}
{/if}
+ {include file='./edit_fields_feed.tpl'}
{foreach from=$shopCollection item=shop}
+
-
+
+
diff --git a/webservice/cron.php b/webservice/cron.php
index dcb04724..38a1677d 100755
--- a/webservice/cron.php
+++ b/webservice/cron.php
@@ -107,7 +107,7 @@
$params[LengowImport::PARAM_DEBUG_MODE] = (bool) Tools::getValue(LengowImport::PARAM_DEBUG_MODE);
}
if (Tools::getIsset(LengowImport::PARAM_DAYS) && is_numeric(Tools::getValue(LengowImport::PARAM_DAYS))) {
- $params[LengowImport::PARAM_DAYS] = (int) Tools::getValue(LengowImport::PARAM_DAYS);
+ $params[LengowImport::PARAM_DAYS] = (float) Tools::getValue(LengowImport::PARAM_DAYS);
}
if (Tools::getIsset(LengowImport::PARAM_CREATED_FROM)) {
$params[LengowImport::PARAM_CREATED_FROM] = Tools::getValue(LengowImport::PARAM_CREATED_FROM);