Files
interblue.pl/modules/x13allegro/upgrade/install-7.3.0.php
2024-10-25 14:16:28 +02:00

170 lines
7.0 KiB
PHP

<?php
if (!defined('_PS_VERSION_')) {
exit;
}
require_once (dirname(__FILE__) . '/../x13allegro.php');
use x13allegro\Adapter\DbAdapter;
use x13allegro\Api\Model\Order\Enum\FulfillmentStatus;
/**
* @param $module x13allegro
* @return bool
*/
function upgrade_module_7_3_0($module)
{
XAllegroAutoLoader::getInstance()
->generateClassIndex()
->autoload();
$dbCharset = DbAdapter::getUtf8Collation();
Db::getInstance()->execute('
ALTER TABLE `' . _DB_PREFIX_ . 'xallegro_order_status`
RENAME `' . _DB_PREFIX_ . 'xallegro_order_status_backup`'
);
Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'xallegro_order_status` (
`allegro_status` char(32) NULL,
`marketplace` char(32) NULL,
`id_order_state` int(10) unsigned NULL,
UNIQUE KEY (`allegro_status`, `marketplace`),
INDEX (`allegro_status`),
INDEX (`marketplace`),
INDEX (`id_order_state`)
) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset
);
Db::getInstance()->execute('
ALTER TABLE `' . _DB_PREFIX_ . 'xallegro_account`
ADD `id_language` int(10) unsigned NULL AFTER `base_marketplace`,
ADD INDEX(`id_language`)'
);
Db::getInstance()->execute('
UPDATE `' . _DB_PREFIX_ . 'xallegro_account`
SET `id_language` = ' . (int)XAllegroConfiguration::get('AUCTION_LANGUAGE')
);
Db::getInstance()->execute('
ALTER TABLE `' . _DB_PREFIX_ . 'xallegro_auction`
ADD `auto_renew` tinyint(1) NULL AFTER `start_time`,
ADD `end_date` datetime NULL AFTER `archived_date`,
ADD INDEX(`auto_renew`),
ADD INDEX(`end_date`)'
);
Db::getInstance()->execute('
ALTER TABLE `' . _DB_PREFIX_ . 'xallegro_custom_product`
ADD `auto_renew` tinyint(1) NULL AFTER `sync_quantity_allegro`'
);
Db::getInstance()->execute('
ALTER TABLE `' . _DB_PREFIX_ . 'xallegro_auction_process`
MODIFY `operation` char(255) NOT NULL,
DROP INDEX operation'
);
Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'xallegro_log` (
`id_xallegro_log` char(64) NOT NULL,
`id_xallegro_account` int(10) unsigned NULL,
`id_employee` int(10) unsigned NULL,
`id_offer` bigint(20) unsigned NULL,
`id_shop` int(10) unsigned NULL,
`id_product` int(10) unsigned NULL,
`id_product_attribute` int(10) unsigned NULL,
`id_order` int(10) unsigned NULL,
`env` char(64) NOT NULL,
`level` char(64) NOT NULL,
`type` char(64) NOT NULL,
`message` text NULL,
`hash` char(32) NOT NULL,
`counter` int(10) unsigned NOT NULL DEFAULT 1,
`displayed` tinyint(1) unsigned NOT NULL DEFAULT 0,
`send` tinyint(1) unsigned NOT NULL DEFAULT 1,
`last_occurrence` datetime NOT NULL,
PRIMARY KEY (`id_xallegro_log`),
INDEX (`id_xallegro_account`),
INDEX (`id_employee`),
INDEX (`id_shop`),
INDEX (`id_product`),
INDEX (`id_product_attribute`),
INDEX (`id_order`),
INDEX (`env`),
INDEX (`level`),
INDEX (`type`),
UNIQUE INDEX (`hash`, `displayed`),
INDEX (`send`),
INDEX (`last_occurrence`)
) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset
);
$statusBackup = Db::getInstance()->executeS('SELECT * FROM `' . _DB_PREFIX_ . 'xallegro_order_status_backup`');
if (!empty($statusBackup)) {
$statusNew = [];
foreach ($statusBackup as $status) {
$statusNew['default'][$status['allegro_status']]['id_order_state'] = $status['id_order_state'];
}
XAllegroStatus::updateStatuses($statusNew, false);
}
$productizationMode = XAllegroConfiguration::get('PRODUCTIZATION_MODE');
if ($productizationMode == XAllegroAuction::PRODUCTIZATION_NONE) {
XAllegroConfiguration::updateValue('PRODUCTIZATION_MODE', XAllegroAuction::PRODUCTIZATION_NEW);
}
$priceUpdateChunk = (int)XAllegroConfiguration::get('PRICE_UPDATE_CHUNK');
$quantityUpdateChunk = (int)XAllegroConfiguration::get('QUANITY_ALLEGRO_UPDATE_CHUNK');
$updateOfferChunk = max($priceUpdateChunk, $quantityUpdateChunk, X13_ALLEGRO_UPDATE_OFFERS_CHUNK);
XAllegroConfiguration::updateValue('UPDATE_OFFERS_CHUNK', $updateOfferChunk);
XAllegroConfiguration::updateValue('PRODUCT_ASSOC_CLOSE_UNACTIVE_DB', 0);
XAllegroConfiguration::updateValue('PRODUCT_ASSOC_CLOSE_SKIP_BID_AUCTION', 0);
XAllegroConfiguration::updateValue('ORDER_STATUS_BY_MARKETPLACE', 0);
XAllegroConfiguration::updateValue('ORDER_IMPORT_UNASSOC_PRODUCTS_EXTERNAL', 0);
XAllegroConfiguration::updateValue('ORDER_ALLEGRO_SHIPPING_STATUS_FULFILLMENT', FulfillmentStatus::SENT()->getKey());
XAllegroConfiguration::updateValue('QUANTITY_AUTO_RENEW', 0);
XAllegroConfiguration::updateValue('QUANTITY_AUTO_RENEW_THRESHOLD', 0);
XAllegroConfiguration::updateValue('PRODUCT_ASSOC_RENEW_ONLY_ACTIVE', 1);
XAllegroConfiguration::updateValue('PRODUCT_ASSOC_RENEW_ACTIVE', 0);
XAllegroConfiguration::updateValue('PRODUCT_ASSOC_RENEW_ACTIVE_DB', 0);
XAllegroConfiguration::updateValue('OFFER_RENEW_KEEP_PROMOTION', 1);
XAllegroConfiguration::updateValue('OFFER_RENEW_MAX_DAYS', 0);
XAllegroConfiguration::updateValue('LOG_SEND', 0);
XAllegroConfiguration::updateValue('LOG_SEND_LEVEL', json_encode([]));
XAllegroConfiguration::updateValue('LOG_SEND_EMAIL_LIST', json_encode([]));
// new "global-options" in ConfigurationAccount for all Accounts
foreach (XAllegroAccount::getAllIds(false) as $row) {
$config = new XAllegroConfigurationAccount($row['id_xallegro_account']);
$config->updateValue('QUANTITY_AUTO_RENEW', XAllegroConfigurationAccount::GLOBAL_OPTION);
$config->updateValue('OFFER_RENEW_KEEP_PROMOTION', XAllegroConfigurationAccount::GLOBAL_OPTION);
}
$module->reinstallTabs();
$emptyProductId = (int)XAllegroConfiguration::get('EMPTY_PRODUCT_ID');
if ($emptyProductId) {
$productFieldsNotNull = [];
if (version_compare(_PS_VERSION_, '1.7.0.0', '>=')) {
$productFieldsNotNull['isbn'] = '';
}
if (version_compare(_PS_VERSION_, '1.7.7.0', '>=')) {
$productFieldsNotNull['mpn'] = '';
}
Db::getInstance()->update('product', array_merge($productFieldsNotNull, [
'ean13' => '',
'upc' => ''
]), 'id_product = ' . $emptyProductId);
}
return true;
}