Serveur preprod f0c0c48223 first push
2016-04-14 16:14:31 +02:00

186 lines
6.9 KiB
PHP
Executable File

<?php
/**
* Description of privatesales_tools
*
* @author Florent Colombier
* @company Antadis
*/
/**
*
*/
if(!file_exists(_PS_MODULE_DIR_.'privatesales/models/SaleCore.php'))
throw new Exception("Sale Class doesn't exists", 1);
require_once(_PS_MODULE_DIR_.'privatesales/models/SaleCore.php');
require('classes/PrivateSalesExport.php');
require('classes/MakeStats.php');
require('classes/MakeFile.php');
// require('classes/PrivateSalesExtend.php');
// require('classes/PrivateSalesExtendStats.php');
require('classes/PrivateSalesStatsStates.php');
require('classes/SaleCoreExtend.php');
require('rules.php');
class Privatesales_tools extends Module
{
public function __construct($name = null, Context $context = null)
{
$this->name = 'privatesales_tools';
$this->tab = 'others';
$this->version = '0.1';
$this->author = 'Antadis';
$this->need_instance = 0;
$this->module_key = "";
parent::__construct($name, $context);
$this->displayName = $this->l('Private sale tools');
$this->description = $this->l('Private sale tools : stats, logistique, etc...');
$this->confirmUninstall = $this->l('are you sur to uninstall ?');
$this->currentIndex = 'index.php?controller=AdminModules';
$this->base_config_url = $this->currentIndex .'&configure=' . $this->name . '&token=' . Tools::getValue('token');
}
public function install()
{
if (!parent::install()
|| !$this->installDb()
|| !$this->installTab()){
$this->uninstall();
return false;
}
return true;
}
public function installDb()
{
//MULTI CREATE A TESTER
try {
Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'privatesales_logistique_export` (
`id_privatesales_export` int(11) NOT NULL AUTO_INCREMENT,
`id_sale` int(11) NOT NULL,
`status` varchar(150) NOT NULL,
`from` datetime NOT NULL,
`to` datetime NOT NULL,
`date_add` datetime NOT NULL,
PRIMARY KEY (`id_privatesales_export`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'privatesales_stats_order` (
`id_sale` int(11) NOT NULL,
`date` date NOT NULL,
`total_order` int(11) NOT NULL,
`total_products` int(11) NOT NULL,
`total_products_price` float(10,4) NOT NULL,
`total_products_price_tax_excl` float(10,4) NOT NULL,
`total_shipping` float(10,4) NOT NULL,
`total_wholesale_price` float NOT NULL,
`rate_amount` float(10,4) NOT NULL,
`rate` float(10,4) NOT NULL,
KEY `annee` (`date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'privatesales_stats_order_global` (
`id_sale` int(11) NOT NULL,
`total_products` int(11) NOT NULL,
`total_products_price` float(10,4) NOT NULL,
`total_products_price_tax_excl` float(10,4) NOT NULL,
`total_shipping` float(10,4) NOT NULL,
`total_wholesale_price` float(10,4) NOT NULL,
`rate_amount` float(10,4) NOT NULL,
`rate` float(10,4) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'privatesales_stats_other` (
`name` varchar(150) NOT NULL,
`date` date NOT NULL,
`value` float(10,4) NOT NULL,
`value_txt` text NOT NULL,
PRIMARY KEY (`name`,`date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'privatesales_stats_products` (
`id_sale` int(11) NOT NULL,
`date` date NOT NULL,
`product_id` int(11) NOT NULL,
`product_attribute_id` int(11) NOT NULL,
`reference` varchar(150) NOT NULL,
`supplier_reference` varchar(150) NOT NULL,
`name` varchar(250) NOT NULL,
`total_products` int(11) NOT NULL,
`total_products_price` float(10,4) NOT NULL,
`total_products_price_tax_excl` float(10,4) NOT NULL,
`total_products_wholesale_price` float(10,4) NOT NULL,
`rate_amount` float(10,4) NOT NULL,
`rate` float(10,4) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'privatesales_stats_states` (
`id_privatesale_stats_states` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(150) NOT NULL,
PRIMARY KEY (`id_privatesale_stats_states`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'privatesales_stats_states_states` (
`id_privatesale_stats_states` int(11) NOT NULL,
`id_order_state` int(11) NOT NULL,
PRIMARY KEY (`id_privatesale_stats_states`,`id_order_state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
return true;
} catch(Exception $e) {
return false;
}
}
public function installTab()
{
$parent_tab = Db::getInstance()->getValue('SELECT id_tab FROM '._DB_PREFIX_.'tab WHERE id_parent = 0 AND class_name = "AdminPrivateSales"');
if(!$parent_tab)
$parent_tab = 9; //CATALOG TAB
if(!self::createTab($parent_tab, $this->name, 'Stats', 'AdminPrivatesalesStats'))
return false;
if(!self::createTab($parent_tab, $this->name, 'Logistique', 'AdminPrivatesalesLogistique'))
return false;
return true;
}
static function createTab($id_parent, $module, $name, $class_name)
{
$Tab = new Tab();
$Tab->module = $module;
foreach(Language::getLanguages(true) as $languages)
{
$Tab->name[$languages["id_lang"]] = $name;
}
$Tab->id_parent = $id_parent;
$Tab->class_name = $class_name;
$r = $Tab->save();
if($r === false)
return false;
return $Tab->id;
}
/**
*
* @return boolean
*/
public function uninstall() {
if(!parent::uninstall()){
return false;
}
return true;
}
}