food-market/src/food-market.domain/Money/ExpenseItem.cs
nns a25b5b3277
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
feat(money): бэкенд модуля «Деньги» для простого режима (пп.0–6)
Сверка с МойСкладом (docs/money-moysklad-reference.md) + домен/инфра/API:

- Счета и кассы (MoneyAccount: Cash/Safe/Bank/Acquiring, начальный остаток,
  привязка к магазину, IsDefault/IsActive, инвариант CurrentBalance).
- Денежные документы (MoneyTransaction: PaymentIn/Out, CashIn/Out, переводы
  парой TransferOut↔TransferIn; статьи расходов ExpenseItem; проведение/отмена
  в Serializable-транзакции через MoneyService).
- Оплата поставщикам: Supply/SupplierReturn.PayedSum + MoneyTransactionLink,
  SuppliesController отдаёт PaymentStatus + фильтр paymentStatus.
- Взаиморасчёты: CounterpartyAdjustment + MoneyReportsController.SupplierDebts.
- Смены кассы: CashShift + CashDrawerOperation (open/close, expected↔actual,
  Z-отчёт), запрет розничной продажи без открытой смены в RetailSalesController.
- Отчёт «Деньги»: balances/movement с проверкой инварианта остатков.

Права: RolePermissions +MoneyView/MoneyEdit/CashShiftOperate; сидер раздаёт
кассиру CashShiftOperate+MoneyView, кладовщику — нет; 5 системных статей
расходов на новую орг. Миграция Phase33a (ручная, с [Migration]+[DbContext]).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-07 21:52:04 +05:00

30 lines
1.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using foodmarket.Domain.Common;
namespace foodmarket.Domain.Money;
/// <summary>Статья расходов (у МойСклада — <c>expenseItem</c>). Привязывается
/// к расходным документам: paymentout, cashout. Сид создаёт стартовый набор
/// (Закупка товара, Аренда, Зарплата, Коммунальные, Прочее) с
/// <see cref="IsSystem"/>=true — его переименовать можно, удалить нет.
///
/// Магазин может добавить свои (например, «Инкассация», «Хоз-товары») —
/// у них <see cref="IsSystem"/>=false, удаляются при условии «ни на одном
/// документе не используется» (валидатор в контроллере).</summary>
public class ExpenseItem : TenantEntity, IVersionedEntity
{
public uint Xmin { get; set; }
public string Name { get; set; } = null!;
/// <summary>Для UI: короткий код (например, "PURCHASE", "RENT"). Нужен
/// в основном сидеру + для сверки с 1С/МойСкладом при синхронизации.
/// Пользователь может оставить пустым.</summary>
public string? Code { get; set; }
public bool IsSystem { get; set; }
public bool IsActive { get; set; } = true;
public string? Notes { get; set; }
}