first commit
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
services:
|
||||
_defaults:
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
|
||||
KupShop\PricelistBundle\:
|
||||
resource: ../../{Context,EventListener,Util}
|
||||
exclude: ../../Util/Price/PriceListPrice.php
|
||||
@@ -0,0 +1,198 @@
|
||||
<?php
|
||||
|
||||
class PricelistUpgrade extends UpgradeNew
|
||||
{
|
||||
protected $priority = 1100;
|
||||
|
||||
public function check_tableExists()
|
||||
{
|
||||
return $this->checkTableExists('pricelists');
|
||||
}
|
||||
|
||||
public function check_tablePricelistsProductsExists()
|
||||
{
|
||||
return $this->checkTableExists('pricelists_products');
|
||||
}
|
||||
|
||||
public function check_uniqueIdVariation()
|
||||
{
|
||||
return $this->checkIndexOnColumnExists('pricelists_products', 'id_variation');
|
||||
}
|
||||
|
||||
/** Pricelists_products set (id_pricelist, id_product, id_variation) unique */
|
||||
public function upgrade_uniqueIdVariation()
|
||||
{
|
||||
sqlQuery('ALTER TABLE pricelists_products ADD CONSTRAINT pricelist_product UNIQUE (id_pricelist, id_product, id_variation);');
|
||||
|
||||
$this->upgradeOK();
|
||||
}
|
||||
|
||||
/** Creating pricelists table */
|
||||
public function upgrade_tableExists()
|
||||
{
|
||||
sqlQuery('CREATE TABLE pricelists (
|
||||
id INT AUTO_INCREMENT NOT NULL,
|
||||
currency VARCHAR(3) DEFAULT NULL,
|
||||
name VARCHAR(60) NOT NULL,
|
||||
INDEX IDX_28511D046956883F (currency),
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE = InnoDB');
|
||||
|
||||
sqlQuery('ALTER TABLE pricelists ADD CONSTRAINT FK_28511D046956883F FOREIGN KEY (currency) REFERENCES currencies (id)');
|
||||
|
||||
$this->upgradeOK();
|
||||
}
|
||||
|
||||
/** Creating pricelists_products table */
|
||||
public function upgrade_tablePricelistsProductsExists()
|
||||
{
|
||||
sqlQuery('CREATE TABLE pricelists_products (
|
||||
id INT AUTO_INCREMENT NOT NULL,
|
||||
id_pricelist INT NOT NULL,
|
||||
id_product INT NOT NULL,
|
||||
id_variation INT DEFAULT NULL,
|
||||
price NUMERIC(15, 4) DEFAULT NULL COMMENT \'(DC2Type:decimal)\',
|
||||
discount NUMERIC(12, 8) DEFAULT NULL COMMENT \'(DC2Type:decimal)\',
|
||||
INDEX IDX_49750F94DCFA564A (id_pricelist),
|
||||
CONSTRAINT FK_49750F94DCFA564A FOREIGN KEY (id_pricelist) REFERENCES pricelists (id) ON DELETE CASCADE,
|
||||
PRIMARY KEY(id)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB;');
|
||||
|
||||
$this->upgradeOK();
|
||||
}
|
||||
|
||||
public function check_emptyPricelistsProducts()
|
||||
{
|
||||
return sqlQueryBuilder()->select('count(id)')
|
||||
->from('pricelists_products')
|
||||
->where('price IS NULL AND discount IS NULL')
|
||||
->execute()->fetchColumn() > 0;
|
||||
}
|
||||
|
||||
/** Delete empty pricelists_products */
|
||||
public function upgrade_emptyPricelistsProducts()
|
||||
{
|
||||
sqlQueryBuilder()->delete('pricelists_products')
|
||||
->where('price IS NULL AND discount IS NULL')
|
||||
->execute();
|
||||
|
||||
$this->upgradeOK();
|
||||
}
|
||||
|
||||
public function check_integrityUnique()
|
||||
{
|
||||
return $this->checkConstraintExists('pricelists_products', 'integrity_unique');
|
||||
}
|
||||
|
||||
/** Add virtual column to check uniqueness even for NULL variations */
|
||||
public function upgrade_integrityUnique()
|
||||
{
|
||||
try {
|
||||
sqlQuery('ALTER TABLE pricelists_products ADD integrity_unique varchar(50) as (CONCAT_WS("-", `id_pricelist`, `id_product`, `id_variation`)) VIRTUAL');
|
||||
} catch (Exception $e) {
|
||||
// Ignore exception if column already exists - caused by failing DELETE statement
|
||||
}
|
||||
sqlQuery('DELETE pp FROM pricelists_products pp WHERE pp.id NOT IN (SELECT t.* FROM (SELECT MAX(pp2.id) FROM pricelists_products pp2 GROUP BY pp2.integrity_unique) t)');
|
||||
sqlQuery('ALTER TABLE pricelists_products ADD UNIQUE integrity_unique(integrity_unique)');
|
||||
|
||||
$this->upgradeOK();
|
||||
}
|
||||
|
||||
public function check_ProductForeignKey(): bool
|
||||
{
|
||||
return $this->checkConstraintWithColumnExists('pricelists_products', 'FK_pricelists_products_id_product', 'id_product');
|
||||
}
|
||||
|
||||
/** pricelist_products: add foreign key on id_product and id_variation columns */
|
||||
public function upgrade_ProductForeignKey(): void
|
||||
{
|
||||
// Smazat zaznamy na neexistujici produkty
|
||||
sqlQuery('DELETE FROM pricelists_products WHERE id_product NOT IN (SELECT id FROM products)');
|
||||
sqlQuery('DELETE FROM pricelists_products WHERE id_variation IS NOT NULL AND id_variation NOT IN (SELECT id FROM products_variations)');
|
||||
|
||||
// Vytvorim foreign keys
|
||||
sqlQuery('ALTER TABLE pricelists_products ADD CONSTRAINT `FK_pricelists_products_id_product`
|
||||
FOREIGN KEY (id_product) REFERENCES products (id) ON DELETE CASCADE ON UPDATE CASCADE');
|
||||
|
||||
sqlQuery('ALTER TABLE pricelists_products ADD CONSTRAINT `FK_pricelists_products_id_variation`
|
||||
FOREIGN KEY (id_variation) REFERENCES products_variations (id) ON DELETE CASCADE ON UPDATE CASCADE');
|
||||
|
||||
$this->upgradeOK();
|
||||
}
|
||||
|
||||
public function check_PricelistsToken()
|
||||
{
|
||||
return findModule(Modules::PRICELISTS, Modules::SUB_ACTIVATION_TOKEN) && $this->checkColumnExists('pricelists', 'token');
|
||||
}
|
||||
|
||||
/** Add `token` column to `pricelists` */
|
||||
public function upgrade_PricelistsToken()
|
||||
{
|
||||
sqlQuery('ALTER TABLE pricelists ADD COLUMN token varchar(255)');
|
||||
|
||||
$this->upgradeOK();
|
||||
}
|
||||
|
||||
public function check_PriceListPriceHistory(): bool
|
||||
{
|
||||
return findModule(Modules::PRICE_HISTORY) && $this->checkColumnExists('pricelists', 'price_history');
|
||||
}
|
||||
|
||||
/** Add pricelists.price_history column */
|
||||
public function upgrade_PriceListPriceHistory(): void
|
||||
{
|
||||
sqlQuery('ALTER TABLE pricelists ADD COLUMN price_history TINYINT DEFAULT 0');
|
||||
sqlQuery('ALTER TABLE pricelists_products ADD COLUMN price_for_discount DECIMAL(15, 4) DEFAULT NULL AFTER price');
|
||||
|
||||
$this->upgradeOK();
|
||||
}
|
||||
|
||||
public function check_extendProductDiscount(): bool
|
||||
{
|
||||
return $this->checkColumnExists('pricelists', 'use_product_discount');
|
||||
}
|
||||
|
||||
/** Add pricelists.use_product_discount column */
|
||||
public function upgrade_extendProductDiscount(): void
|
||||
{
|
||||
sqlQuery('ALTER TABLE pricelists ADD COLUMN use_product_discount TINYINT DEFAULT 0');
|
||||
$this->upgradeOK();
|
||||
}
|
||||
|
||||
public function check_coefficient(): bool
|
||||
{
|
||||
return $this->checkColumnExists('pricelists', 'coefficient');
|
||||
}
|
||||
|
||||
/** Add pricelists.coefficient column */
|
||||
public function upgrade_coefficient(): void
|
||||
{
|
||||
sqlQuery('ALTER TABLE pricelists ADD COLUMN coefficient DECIMAL(4,2) DEFAULT NULL');
|
||||
$this->upgradeOK();
|
||||
}
|
||||
|
||||
public function check_generated(): bool
|
||||
{
|
||||
return $this->checkColumnExists('pricelists_products', 'generated');
|
||||
}
|
||||
|
||||
/** Add pricelists_products.generated column */
|
||||
public function upgrade_generated(): void
|
||||
{
|
||||
sqlQuery('ALTER TABLE pricelists_products ADD COLUMN generated TINYINT DEFAULT 0');
|
||||
$this->upgradeOK();
|
||||
}
|
||||
|
||||
public function check_PriceListDataColumn(): bool
|
||||
{
|
||||
return $this->checkColumnExists('pricelists', 'data');
|
||||
}
|
||||
|
||||
/** add `pricelists.data` column */
|
||||
public function upgrade_PriceListDataColumn(): void
|
||||
{
|
||||
sqlQuery('ALTER TABLE pricelists ADD COLUMN data MEDIUMTEXT DEFAULT NULL');
|
||||
|
||||
$this->upgradeOK();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace KupShop\PricelistBundle\Resources\upgrade;
|
||||
|
||||
class UserUpgrade extends \UpgradeNew
|
||||
{
|
||||
protected $priority = 1110;
|
||||
|
||||
public function check_PriceListId(): bool
|
||||
{
|
||||
return $this->checkColumnExists('users', 'id_pricelist');
|
||||
}
|
||||
|
||||
/** users: add id_pricelist column */
|
||||
public function upgrade_PriceListId(): void
|
||||
{
|
||||
sqlQuery('ALTER TABLE users ADD COLUMN id_pricelist INT(11)');
|
||||
sqlQuery('ALTER TABLE users ADD FOREIGN KEY (id_pricelist) REFERENCES pricelists(id) ON UPDATE CASCADE ON DELETE SET NULL');
|
||||
|
||||
$this->upgradeOK();
|
||||
}
|
||||
|
||||
public function check_UserGroupsPriceListId(): bool
|
||||
{
|
||||
return $this->checkColumnExists('users_groups', 'id_pricelist');
|
||||
}
|
||||
|
||||
/** Add `users_groups.id_pricelist` */
|
||||
public function upgrade_UserGroupsPriceListId(): void
|
||||
{
|
||||
sqlQuery('ALTER TABLE users_groups ADD COLUMN id_pricelist INT DEFAULT NULL;');
|
||||
sqlQuery('ALTER TABLE users_groups ADD CONSTRAINT users_groups_id_pricelists FOREIGN KEY (id_pricelist) REFERENCES pricelists(id) ON UPDATE CASCADE ON DELETE CASCADE;');
|
||||
|
||||
$this->upgradeOK();
|
||||
}
|
||||
|
||||
public function check_UserGroupsPriceListConstraint(): bool
|
||||
{
|
||||
return $this->checkConstraintRule('users_groups', 'users_groups_id_pricelists', 'SET NULL', 'CASCADE');
|
||||
}
|
||||
|
||||
public function upgrade_UserGroupsPriceListConstraint(): void
|
||||
{
|
||||
try {
|
||||
sqlQuery('ALTER TABLE users_groups DROP CONSTRAINT users_groups_id_pricelists;');
|
||||
} catch (\Exception $e) {
|
||||
}
|
||||
sqlQuery('ALTER TABLE users_groups ADD CONSTRAINT users_groups_id_pricelists FOREIGN KEY (id_pricelist) REFERENCES pricelists(id) ON UPDATE CASCADE ON DELETE SET NULL;');
|
||||
|
||||
$this->upgradeOK();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user