using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace foodmarket.Infrastructure.Persistence.Migrations { /// VAT теперь основывается на стране, но хранится и на товаре: /// - countries.VatRate (numeric(5,2), default 0) — ставка страны, источник правды. /// - organizations.ShowVatEnabledOnProduct (bool, default false) — показывать ли /// поля Vat/VatEnabled на карточке товара в UI; внутренне они есть всегда. /// - organizations.DefaultVat (int) удаляется (заменён на Country.VatRate). /// - products.Vat ОСТАЁТСЯ: для KZ есть льготные категории (хлеб/молоко/ /// лекарства = 0%) и фискальный чек требует ставку на каждой позиции. /// Seed: KZ=16%, RU=20%, BY=20%, US=0%, DE=19%, CN=13%, TR=18%, UZ=12%, KG=12%, /// KR=10%, IT=22%, PL=23%. public partial class Phase5_VatAsCountryProperty : Migration { protected override void Up(MigrationBuilder b) { b.AddColumn( name: "VatRate", schema: "public", table: "countries", type: "numeric(5,2)", precision: 5, scale: 2, nullable: false, defaultValue: 0m); b.AddColumn( name: "ShowVatEnabledOnProduct", schema: "public", table: "organizations", type: "boolean", nullable: false, defaultValue: false); b.DropColumn(name: "DefaultVat", schema: "public", table: "organizations"); b.Sql(""" UPDATE public.countries SET "VatRate" = CASE "Code" WHEN 'KZ' THEN 16 WHEN 'RU' THEN 20 WHEN 'BY' THEN 20 WHEN 'DE' THEN 19 WHEN 'CN' THEN 13 WHEN 'TR' THEN 18 WHEN 'UZ' THEN 12 WHEN 'KG' THEN 12 WHEN 'KR' THEN 10 WHEN 'IT' THEN 22 WHEN 'PL' THEN 23 ELSE 0 END; """); } protected override void Down(MigrationBuilder b) { b.AddColumn( name: "DefaultVat", schema: "public", table: "organizations", type: "integer", nullable: false, defaultValue: 16); b.DropColumn(name: "ShowVatEnabledOnProduct", schema: "public", table: "organizations"); b.DropColumn(name: "VatRate", schema: "public", table: "countries"); } } }