Domain (foodmarket.Domain.Catalog): - Global references: Country (ISO-2), Currency (ISO-3 + symbol + minor unit) - Tenant references: VatRate (Percent + IncludedInPrice + IsDefault), UnitOfMeasure (ОКЕИ code + DecimalPlaces) - Counterparty: kind (Supplier/Customer/Both), type (Legal/Individual), BIN/IIN/TaxNumber, bank details - Store + RetailPoint with fiscal placeholders - ProductGroup: hierarchy via ParentId + denormalized Path - PriceType (Розничная/Оптовая), Product (article, VAT, group, supplier, flags IsService/IsWeighed/IsAlcohol/IsMarked, min/max stock) - ProductPrice (composite unique product+priceType), ProductBarcode (EAN13/EAN8/CODE128/UPC), ProductImage Infrastructure: - CatalogConfigurations with fluent API (indexes, precision 18/4 for money, FK with Restrict) - 13 new DbSets on AppDbContext + builder.ConfigureCatalog() - Migration Phase1Catalog — adds countries, currencies, vat_rates, units_of_measure, counterparties, stores, retail_points, product_groups, price_types, products, product_prices, product_barcodes, product_images Seeders: - SystemReferenceSeeder (always): 12 countries (KZ, RU, CN, TR, …), 5 currencies (KZT primary, RUB, USD, EUR, CNY) - DevDataSeeder extended: for Demo Market seeds VAT (0%, 12% default+included), units (шт/кг/л/м/уп), price types (Розничная default, Оптовая), main store, POS-1 Total DB schema: 26 tables. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
18 lines
869 B
C#
18 lines
869 B
C#
using foodmarket.Domain.Common;
|
||
|
||
namespace foodmarket.Domain.Catalog;
|
||
|
||
// Точка продаж (магазин/отдел). Привязана к складу, с которого продаёт.
|
||
public class RetailPoint : TenantEntity
|
||
{
|
||
public string Name { get; set; } = null!;
|
||
public string? Code { get; set; }
|
||
public Guid StoreId { get; set; } // склад, с которого идут продажи
|
||
public Store? Store { get; set; }
|
||
public string? Address { get; set; }
|
||
public string? Phone { get; set; }
|
||
public string? FiscalSerial { get; set; } // серийный номер ККМ (заполнится когда подключим фискализацию)
|
||
public string? FiscalRegNumber { get; set; } // регистрационный номер в ОФД
|
||
public bool IsActive { get; set; } = true;
|
||
}
|