first commit
This commit is contained in:
235
upgrade/list/upgrade.2012-11-06.php
Normal file
235
upgrade/list/upgrade.2012-11-06.php
Normal file
@@ -0,0 +1,235 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user