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