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