first commit

This commit is contained in:
2025-08-02 16:30:27 +02:00
commit 23646bfcee
14851 changed files with 1750626 additions and 0 deletions

View 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();
}
}