migrations/Finance/Version20200511103553_FinanceTax.php line 1
<?php
declare(strict_types=1);
namespace DoctrineMigrations\Finance;
use App\Doctrine\Type\Finance\ChargeableType;
use App\Doctrine\Type\Finance\ExpenseType;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20200511103553_FinanceTax extends AbstractMigration
{
public function getDescription() : string
{
return 'Add chargeable table';
}
public function up(Schema $schema) : void
{
$chargeableType = ChargeableType::getName();
$expenseType = ExpenseType::getName();
$this->addSql("CREATE TABLE finance_tax (
id SERIAL PRIMARY KEY,
bill_id INTEGER REFERENCES public.finance_bill (id),
invoice_id INTEGER REFERENCES public.finance_invoice (id),
chargeable_id INTEGER REFERENCES public.finance_chargeable (id),
name CHARACTER VARYING NOT NULL,
amount DECIMAL(18, 2) NOT NULL,
rate DECIMAL(5, 2) NOT NULL,
CONSTRAINT finance_tax_xor_taxable CHECK (
(bill_id IS NOT NULL AND invoice_id IS NULL AND chargeable_id IS NULL) OR
(bill_id IS NULL AND invoice_id IS NOT NULL AND chargeable_id IS NULL) OR
(bill_id IS NULL AND invoice_id IS NULL AND chargeable_id IS NOT NULL)
)
)");
$this->addSql("CREATE INDEX finance_tax_bill_id_idx ON finance_tax (bill_id)");
$this->addSql("CREATE INDEX finance_tax_invoice_id_idx ON finance_tax (invoice_id)");
$this->addSql("CREATE INDEX finance_tax_chargeable_id_idx ON finance_tax (chargeable_id)");
}
public function down(Schema $schema) : void
{
$this->addSql("DROP TABLE IF EXISTS finance_tax");
}
}