236 lines
8.1 KiB
PHP
236 lines
8.1 KiB
PHP
<?php
|
|
|
|
class Upgrade16 extends Upgrade
|
|
{
|
|
public function upgrade()
|
|
{
|
|
$changed = false;
|
|
|
|
if (findModule('products_suppliers') || findModule('automatic_import')) {
|
|
// jestlize je opravnene udelat upgrade, tak provest
|
|
if ($this->checkRightfulness_1()) {
|
|
$this->makeChanges_1();
|
|
$changed = true;
|
|
}
|
|
|
|
if ($this->checkRightfulness_2()) {
|
|
$this->makeChanges_2();
|
|
$changed = true;
|
|
}
|
|
|
|
if ($this->checkRightfulness_3()) {
|
|
$this->makeChanges_3();
|
|
$changed = true;
|
|
}
|
|
|
|
if ($this->checkRightfulness_4()) {
|
|
$this->makeChanges_4();
|
|
$changed = true;
|
|
}
|
|
}
|
|
|
|
if (findModule('stock_in') && $this->checkRightfulness_5()) {
|
|
$this->makeChanges_5();
|
|
$changed = true;
|
|
}
|
|
|
|
if ($changed == false) {
|
|
$this->noChanges();
|
|
}
|
|
|
|
$this->printResult();
|
|
}
|
|
|
|
// overi, jestli je opravnene provest upgrade
|
|
public function checkRightfulness_1()
|
|
{
|
|
$change = false;
|
|
|
|
$SQL = sqlQuery("SHOW TABLES LIKE '".getTableName('stock_in_suppliers', false)."'");
|
|
if (sqlNumRows($SQL) > 0) {
|
|
$change = true;
|
|
}
|
|
|
|
return $change;
|
|
}
|
|
|
|
// provest samotny upgrade
|
|
public function makeChanges_1()
|
|
{
|
|
$SQL = sqlQuery('RENAME TABLE stock_in_suppliers TO suppliers ;');
|
|
|
|
$this->upgradeOK();
|
|
}
|
|
|
|
// overi, jestli je opravnene provest upgrade
|
|
public function checkRightfulness_2()
|
|
{
|
|
$change = true;
|
|
|
|
$SQL = sqlQuery("SHOW TABLES LIKE '".getTableName('suppliers', false)."'");
|
|
if (sqlNumRows($SQL) > 0) {
|
|
$change = false;
|
|
}
|
|
|
|
return $change;
|
|
}
|
|
|
|
// provest samotny upgrade
|
|
public function makeChanges_2()
|
|
{
|
|
$SQL = sqlQuery('CREATE TABLE IF NOT EXISTS '.getTableName('suppliers').' (
|
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(30) NOT NULL,
|
|
`order_url` TEXT NULL,
|
|
`address` VARCHAR(50) NULL,
|
|
`phone` VARCHAR(15) NULL,
|
|
`email` VARCHAR(30) NULL,
|
|
`ico` VARCHAR(15) NULL,
|
|
`dic` VARCHAR(15) NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `ico` (`ico`)
|
|
) ENGINE=InnoDB');
|
|
|
|
$this->upgradeOK();
|
|
}
|
|
|
|
// overi, jestli je opravnene provest upgrade
|
|
public function checkRightfulness_3()
|
|
{
|
|
$change = true;
|
|
|
|
$SQL = sqlQuery("SHOW TABLES LIKE '".getTableName('products_of_suppliers', false)."'");
|
|
if (sqlNumRows($SQL) > 0) {
|
|
$change = false;
|
|
}
|
|
|
|
return $change;
|
|
}
|
|
|
|
// provest samotny upgrade
|
|
public function makeChanges_3()
|
|
{
|
|
$SQL = sqlQuery('CREATE TABLE IF NOT EXISTS '.getTableName('products_of_suppliers')." (
|
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
`id_product` INT(11) NOT NULL,
|
|
`id_variation` INT(11) DEFAULT NULL,
|
|
`id_supplier` INT(11) NOT NULL,
|
|
`code` VARCHAR(25) NULL,
|
|
`in_store` INT(11) NOT NULL DEFAULT '0',
|
|
`last_sync` DATETIME NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `id_product_2` (`id_product`,`id_variation`,`id_supplier`),
|
|
KEY `id_variation` (`id_variation`),
|
|
KEY `id_supplier` (`id_supplier`),
|
|
KEY `id_product` (`id_product`)
|
|
) ENGINE=InnoDB");
|
|
|
|
sqlQuery('ALTER TABLE `products_of_suppliers` ADD FOREIGN KEY ( `id_product` ) REFERENCES `products` (
|
|
`id`
|
|
) ON DELETE CASCADE ON UPDATE CASCADE');
|
|
|
|
sqlQuery('ALTER TABLE `products_of_suppliers` ADD FOREIGN KEY ( `id_variation` ) REFERENCES `products_variations` (
|
|
`id`
|
|
) ON DELETE CASCADE ON UPDATE CASCADE');
|
|
|
|
sqlQuery('ALTER TABLE `products_of_suppliers` ADD FOREIGN KEY ( `id_supplier` ) REFERENCES `suppliers` (
|
|
`id`
|
|
) ON DELETE CASCADE ON UPDATE CASCADE');
|
|
|
|
$this->upgradeOK();
|
|
}
|
|
|
|
// overi, jestli je opravnene provest upgrade
|
|
public function checkRightfulness_4()
|
|
{
|
|
return (findModule(Modules::PRODUCTS_SUPPLIERS)
|
|
|| findModule(Modules::SUPPLIERS)
|
|
|| findModule(Modules::STOCK_IN)) && $this->checkTableExists('products_of_suppliers');
|
|
}
|
|
|
|
// provest samotny upgrade
|
|
public function makeChanges_4()
|
|
{
|
|
$SQL = sqlQuery('ALTER TABLE '.getTableName('products_of_suppliers')."
|
|
ADD (
|
|
`in_store` INT(11) NOT NULL DEFAULT '0',
|
|
`last_sync` DATETIME NULL
|
|
)");
|
|
|
|
// Delete old records nonexistent product/variation
|
|
sqlQuery('DELETE pos FROM products_of_suppliers pos
|
|
LEFT JOIN products p ON p.id=pos.id_product
|
|
LEFT JOIN products_variations pv ON pv.id=pos.id_variation
|
|
WHERE p.id IS NULL OR pv.id IS NULL');
|
|
|
|
sqlQuery('ALTER TABLE `products_of_suppliers` ADD FOREIGN KEY ( `id_product` ) REFERENCES `products` (
|
|
`id`
|
|
) ON DELETE CASCADE ON UPDATE CASCADE');
|
|
|
|
sqlQuery('ALTER TABLE `products_of_suppliers` ADD FOREIGN KEY ( `id_variation` ) REFERENCES `products_variations` (
|
|
`id`
|
|
) ON DELETE CASCADE ON UPDATE CASCADE');
|
|
|
|
sqlQuery('ALTER TABLE `products_of_suppliers` ADD FOREIGN KEY ( `id_supplier` ) REFERENCES `suppliers` (
|
|
`id`
|
|
) ON DELETE CASCADE ON UPDATE CASCADE');
|
|
|
|
$this->upgradeOK();
|
|
}
|
|
|
|
// overi, jestli je opravnene provest upgrade
|
|
public function checkRightfulness_5()
|
|
{
|
|
return $this->checkTableExists('stock_in');
|
|
}
|
|
|
|
// provest samotny upgrade
|
|
public function makeChanges_5()
|
|
{
|
|
sqlQuery('CREATE TABLE IF NOT EXISTS '.getTableName('stock_in')." (
|
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
`number` INT(11) NOT NULL,
|
|
`code` INT(11) NOT NULL,
|
|
`closed` TINYINT(1) NOT NULL DEFAULT '0',
|
|
`date_created` DATETIME NOT NULL,
|
|
`id_supplier` INT(11) NOT NULL,
|
|
`total_price` DOUBLE NOT NULL DEFAULT '0',
|
|
`transport_price` DOUBLE NOT NULL DEFAULT '0',
|
|
`date_expiration` DATE DEFAULT NULL,
|
|
`date_issued` DATE DEFAULT NULL,
|
|
`payment_method` ENUM('dobirka','prevodem') NOT NULL DEFAULT 'dobirka',
|
|
`paid` TINYINT(1) NOT NULL DEFAULT '0',
|
|
`note` VARCHAR(50) DEFAULT NULL,
|
|
`discount` DOUBLE NOT NULL DEFAULT '0',
|
|
`finished` TINYINT(1) NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `code` (`code`,`id_supplier`),
|
|
KEY `supplier` (`id_supplier`)
|
|
) ENGINE=InnoDB");
|
|
|
|
sqlQuery('ALTER TABLE '.getTableName('stock_in').'
|
|
ADD CONSTRAINT `stock_in_ibfk_1` FOREIGN KEY (`id_supplier`) REFERENCES `suppliers` (`id`)');
|
|
|
|
sqlQuery('CREATE TABLE IF NOT EXISTS '.getTableName('stock_in_items').' (
|
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(100) DEFAULT NULL,
|
|
`id_stock_in` INT(11) NOT NULL,
|
|
`id_product` INT(11) DEFAULT NULL,
|
|
`id_variation` INT(11) DEFAULT NULL,
|
|
`quantity` INT(11) NOT NULL,
|
|
`price` DOUBLE NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `id_stock_in` (`id_stock_in`),
|
|
KEY `id_product` (`id_product`),
|
|
KEY `id_variation` (`id_variation`)
|
|
) ENGINE=InnoDB');
|
|
|
|
sqlQuery('ALTER TABLE '.getTableName('stock_in_items').'
|
|
ADD CONSTRAINT `stock_in_items_ibfk_1` FOREIGN KEY (`id_stock_in`) REFERENCES `stock_in` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
ADD CONSTRAINT `stock_in_items_ibfk_4` FOREIGN KEY (`id_product`) REFERENCES `products` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
|
|
ADD CONSTRAINT `stock_in_items_ibfk_5` FOREIGN KEY (`id_variation`) REFERENCES `products_variations` (`id`) ON DELETE SET NULL ON UPDATE CASCADE');
|
|
|
|
$this->upgradeOK();
|
|
}
|
|
}
|