Подготовка к новой модели цен сторонняя система-style: - Product.PurchasePrice → ReferencePrice (справочная закупочная, не обязательная). + ReferencePriceUpdatedAt для 30-дневного таймера. - Product.+ Cost numeric(18,4) — себестоимость по скользящему среднему. - Product.+ LastSupplyAt — UTC последней Posted приёмки. - ProductGroup.+ MarkupPercent (5,2) — % наценки на cost для авто-розничной. - Organization.+ MultiplePriceTypesEnabled (default false) и ShowReferencePriceOnProduct (default true). - SupplyLine.+ RetailPriceManuallyOverridden + RetailPriceOverride — отметка ручной правки розничной в строке приёмки. Миграция Phase3a_PricingModel: RENAME + AddColumn'ы. Logic перерасчёта себестоимости, автонаценки, recalc-endpoint и Hangfire job — следующими коммитами. DTO/контроллеры/OtherSystem-импорт/UI поля переименованы в referencePrice (включая фильтры списка товаров). UI-логика следующего коммита будет показывать Cost и кнопку «привести розничную к себестоимости»; пока referencePrice работает как раньше. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
71 lines
3.6 KiB
C#
71 lines
3.6 KiB
C#
using Microsoft.EntityFrameworkCore.Migrations;
|
|
|
|
#nullable disable
|
|
|
|
namespace foodmarket.Infrastructure.Persistence.Migrations
|
|
{
|
|
/// <summary>Новая модель цен:
|
|
/// - products.PurchasePrice → ReferencePrice (справочная цена закупа)
|
|
/// - products.+ ReferencePriceUpdatedAt timestamptz NULL
|
|
/// - products.+ Cost numeric(18,4) NOT NULL DEFAULT 0 (себестоимость, скользящее среднее)
|
|
/// - products.+ LastSupplyAt timestamptz NULL
|
|
/// - product_groups.+ MarkupPercent numeric(5,2) NULL (% наценки на cost для авто-розничной)
|
|
/// - organizations.+ MultiplePriceTypesEnabled boolean DEFAULT false
|
|
/// - organizations.+ ShowReferencePriceOnProduct boolean DEFAULT true
|
|
/// - supply_lines.+ RetailPriceManuallyOverridden boolean DEFAULT false
|
|
/// - supply_lines.+ RetailPriceOverride numeric(18,2) NULL
|
|
/// </summary>
|
|
public partial class Phase3a_PricingModel : Migration
|
|
{
|
|
protected override void Up(MigrationBuilder b)
|
|
{
|
|
b.RenameColumn(name: "PurchasePrice", schema: "public", table: "products", newName: "ReferencePrice");
|
|
|
|
b.AddColumn<System.DateTime>(
|
|
name: "ReferencePriceUpdatedAt", schema: "public", table: "products",
|
|
type: "timestamp with time zone", nullable: true);
|
|
|
|
b.AddColumn<decimal>(
|
|
name: "Cost", schema: "public", table: "products",
|
|
type: "numeric(18,4)", precision: 18, scale: 4, nullable: false, defaultValue: 0m);
|
|
|
|
b.AddColumn<System.DateTime>(
|
|
name: "LastSupplyAt", schema: "public", table: "products",
|
|
type: "timestamp with time zone", nullable: true);
|
|
|
|
b.AddColumn<decimal>(
|
|
name: "MarkupPercent", schema: "public", table: "product_groups",
|
|
type: "numeric(5,2)", precision: 5, scale: 2, nullable: true);
|
|
|
|
b.AddColumn<bool>(
|
|
name: "MultiplePriceTypesEnabled", schema: "public", table: "organizations",
|
|
type: "boolean", nullable: false, defaultValue: false);
|
|
|
|
b.AddColumn<bool>(
|
|
name: "ShowReferencePriceOnProduct", schema: "public", table: "organizations",
|
|
type: "boolean", nullable: false, defaultValue: true);
|
|
|
|
b.AddColumn<bool>(
|
|
name: "RetailPriceManuallyOverridden", schema: "public", table: "supply_lines",
|
|
type: "boolean", nullable: false, defaultValue: false);
|
|
|
|
b.AddColumn<decimal>(
|
|
name: "RetailPriceOverride", schema: "public", table: "supply_lines",
|
|
type: "numeric(18,2)", precision: 18, scale: 2, nullable: true);
|
|
}
|
|
|
|
protected override void Down(MigrationBuilder b)
|
|
{
|
|
b.DropColumn(name: "RetailPriceOverride", schema: "public", table: "supply_lines");
|
|
b.DropColumn(name: "RetailPriceManuallyOverridden", schema: "public", table: "supply_lines");
|
|
b.DropColumn(name: "ShowReferencePriceOnProduct", schema: "public", table: "organizations");
|
|
b.DropColumn(name: "MultiplePriceTypesEnabled", schema: "public", table: "organizations");
|
|
b.DropColumn(name: "MarkupPercent", schema: "public", table: "product_groups");
|
|
b.DropColumn(name: "LastSupplyAt", schema: "public", table: "products");
|
|
b.DropColumn(name: "Cost", schema: "public", table: "products");
|
|
b.DropColumn(name: "ReferencePriceUpdatedAt", schema: "public", table: "products");
|
|
b.RenameColumn(name: "ReferencePrice", schema: "public", table: "products", newName: "PurchasePrice");
|
|
}
|
|
}
|
|
}
|