refactor: renommer Order en Facture + meme OrderNumber partage entre Devis/Advert/Facture
Changement de modele: - Le meme OrderNumber est partage entre Devis, Advert et Facture (ex: 04/2026-00001 pour les 3) - Les relations OrderNumber passent de OneToOne a ManyToOne pour permettre le partage du meme numero src/Entity/Order.php supprime, remplace par: src/Entity/Facture.php (nouveau): - orderNumber: ManyToOne vers OrderNumber (meme numero que l'Advert parent) - advert: ManyToOne vers Advert (nullable) - splitIndex: smallint, suffixe pour factures multiples sur un meme advert (0 = pas de suffixe, 1 = -1, 2 = -2, etc.) - getInvoiceNumber(): retourne le numero complet avec suffixe si splitIndex > 0 (ex: 04/2026-00001 ou 04/2026-00001-2) src/Entity/Devis.php: - orderNumber: OneToOne remplace par ManyToOne vers OrderNumber - adverts: OneToMany vers Advert (inchange) src/Entity/Advert.php: - orderNumber: OneToOne remplace par ManyToOne vers OrderNumber - orders: renomme en factures, OneToMany vers Facture src/Repository/OrderRepository.php supprime, remplace par: src/Repository/FactureRepository.php (nouveau) migrations/Version20260402202809.php: - Suppression table `order`, creation table facture - Modification des contraintes unique sur devis et advert (unique index supprime car ManyToOne) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
53
migrations/Version20260402202809.php
Normal file
53
migrations/Version20260402202809.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DoctrineMigrations;
|
||||
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Doctrine\Migrations\AbstractMigration;
|
||||
|
||||
/**
|
||||
* Auto-generated Migration: Please modify to your needs!
|
||||
*/
|
||||
final class Version20260402202809 extends AbstractMigration
|
||||
{
|
||||
public function getDescription(): string
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
public function up(Schema $schema): void
|
||||
{
|
||||
// this up() migration is auto-generated, please modify it to your needs
|
||||
$this->addSql('CREATE TABLE facture (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, split_index SMALLINT DEFAULT 0 NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, order_number_id INT NOT NULL, advert_id INT DEFAULT NULL, PRIMARY KEY (id))');
|
||||
$this->addSql('CREATE INDEX IDX_FE8664108C26A5E8 ON facture (order_number_id)');
|
||||
$this->addSql('CREATE INDEX IDX_FE866410D07ECCB6 ON facture (advert_id)');
|
||||
$this->addSql('ALTER TABLE facture ADD CONSTRAINT FK_FE8664108C26A5E8 FOREIGN KEY (order_number_id) REFERENCES order_number (id) NOT DEFERRABLE');
|
||||
$this->addSql('ALTER TABLE facture ADD CONSTRAINT FK_FE866410D07ECCB6 FOREIGN KEY (advert_id) REFERENCES advert (id) NOT DEFERRABLE');
|
||||
$this->addSql('ALTER TABLE "order" DROP CONSTRAINT fk_f5299398d07eccb6');
|
||||
$this->addSql('ALTER TABLE "order" DROP CONSTRAINT fk_f52993988c26a5e8');
|
||||
$this->addSql('DROP TABLE "order"');
|
||||
$this->addSql('DROP INDEX uniq_54f1f40b8c26a5e8');
|
||||
$this->addSql('CREATE INDEX IDX_54F1F40B8C26A5E8 ON advert (order_number_id)');
|
||||
$this->addSql('DROP INDEX uniq_8b27c52b8c26a5e8');
|
||||
$this->addSql('CREATE INDEX IDX_8B27C52B8C26A5E8 ON devis (order_number_id)');
|
||||
}
|
||||
|
||||
public function down(Schema $schema): void
|
||||
{
|
||||
// this down() migration is auto-generated, please modify it to your needs
|
||||
$this->addSql('CREATE TABLE "order" (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, split_index SMALLINT DEFAULT 0 NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, order_number_id INT NOT NULL, advert_id INT DEFAULT NULL, PRIMARY KEY (id))');
|
||||
$this->addSql('CREATE INDEX idx_f5299398d07eccb6 ON "order" (advert_id)');
|
||||
$this->addSql('CREATE UNIQUE INDEX uniq_f52993988c26a5e8 ON "order" (order_number_id)');
|
||||
$this->addSql('ALTER TABLE "order" ADD CONSTRAINT fk_f5299398d07eccb6 FOREIGN KEY (advert_id) REFERENCES advert (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||
$this->addSql('ALTER TABLE "order" ADD CONSTRAINT fk_f52993988c26a5e8 FOREIGN KEY (order_number_id) REFERENCES order_number (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||
$this->addSql('ALTER TABLE facture DROP CONSTRAINT FK_FE8664108C26A5E8');
|
||||
$this->addSql('ALTER TABLE facture DROP CONSTRAINT FK_FE866410D07ECCB6');
|
||||
$this->addSql('DROP TABLE facture');
|
||||
$this->addSql('DROP INDEX IDX_54F1F40B8C26A5E8');
|
||||
$this->addSql('CREATE UNIQUE INDEX uniq_54f1f40b8c26a5e8 ON advert (order_number_id)');
|
||||
$this->addSql('DROP INDEX IDX_8B27C52B8C26A5E8');
|
||||
$this->addSql('CREATE UNIQUE INDEX uniq_8b27c52b8c26a5e8 ON devis (order_number_id)');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user