price adjustment and stock adjustments

This commit is contained in:
2026-10-12 14:08:23 +05:30
committed by ImanThiyanga
parent a788349138
commit d0354ed169
166 changed files with 98818 additions and 252 deletions
+26 -2
View File
@@ -28,7 +28,7 @@ builder.Host.UseSerilog((ctx, cfg) => cfg
.WriteTo.File("logs/erpcore-.log", rollingInterval: RollingInterval.Day));
// Controllers + JSON: serialize enums as their string names (docs/11 §8, camelCase).
builder.Services.AddControllers()
builder.Services.AddControllers(o => o.Filters.Add<ERPCore.Infra.Filters.LowStockAlertFilter>())
.AddJsonOptions(o => o.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));
// EF Core + MariaDB (Pomelo). The server version is pinned explicitly rather than using
@@ -149,6 +149,19 @@ builder.Services.AddScoped<IGrnService, GrnService>();
builder.Services.AddScoped<IPurchaseInvoiceService, PurchaseInvoiceService>();
builder.Services.AddScoped<IPurchaseInvoicePaymentService, PurchaseInvoicePaymentService>();
// Accounts: expenses (docs/EXPENSE_MODULE_PLAN.md). ExpenseService is also registered as itself:
// ExpensePaymentService reuses its post step so Post & Pay is one transaction.
builder.Services.AddScoped<IExpenseSetupService, ExpenseSetupService>();
builder.Services.AddScoped<ExpenseService>();
builder.Services.AddScoped<IExpenseService>(sp => sp.GetRequiredService<ExpenseService>());
builder.Services.AddScoped<IExpensePaymentService, ExpensePaymentService>();
// Accounts: bank deposits of till cash (docs/BANK_DEPOSIT_MODULE_PLAN.md). The business-day clock
// is shared with the Day-End Sales Report so both agree on what "today" is.
builder.Services.AddSingleton<BusinessDayClock>();
builder.Services.AddScoped<ICashInHandService, CashInHandService>();
builder.Services.AddScoped<IBankDepositService, BankDepositService>();
// Sales (Phase 1)
builder.Services.AddScoped<ISalesPricingService, SalesPricingService>();
builder.Services.AddScoped<ISalesDomainService, SalesDomainService>();
@@ -163,16 +176,27 @@ builder.Services.AddScoped<ISalesPromotionSuggestionService, SalesPromotionSugge
builder.Services.AddScoped<ISalesReportService, SalesReportService>();
builder.Services.AddScoped<ISalesReturnService, SalesReturnService>();
builder.Services.AddScoped<ISalesDayEndService, SalesDayEndService>();
builder.Services.AddScoped<IDayEndReportService, DayEndReportService>();
// Stock transactions + reference data (docs/11 §5–6)
builder.Services.AddScoped<IStockMutator, StockMutator>();
builder.Services.AddScoped<ISerialTrackingService, SerialTrackingService>();
builder.Services.AddScoped<IItemTrackingService, ItemTrackingService>();
builder.Services.AddScoped<IReasonCodeService, ReasonCodeService>();
builder.Services.AddScoped<IAdjustmentService, AdjustmentService>();
// AdjustmentService is also registered as itself: CountService submits its variances through it.
builder.Services.AddScoped<AdjustmentService>();
builder.Services.AddScoped<IAdjustmentService>(sp => sp.GetRequiredService<AdjustmentService>());
builder.Services.AddScoped<IApprovalService, ApprovalService>();
builder.Services.AddScoped<IPriceAdjustmentService, PriceAdjustmentService>();
builder.Services.AddScoped<ApprovalInboxService>();
builder.Services.AddScoped<ITransferService, TransferService>();
builder.Services.AddScoped<ICountService, CountService>();
builder.Services.AddScoped<IReorderService, ReorderService>();
// Low-stock alerts: FIFO issues record into the tracker; the global LowStockAlertFilter checks
// them against reorder points after each successful request and raises "stock.low".
builder.Services.AddScoped<ERPCore.Services.Stock.LowStockTracker>();
builder.Services.AddScoped<ERPCore.Services.Stock.LowStockAlertService>();
builder.Services.AddScoped<ERPCore.Infra.Filters.LowStockAlertFilter>();
builder.Services.AddScoped<IPurchaseReturnService, PurchaseReturnService>();
// Cross-cutting: audit trail + GL-ready journal read access (docs/11 §6 / FR-X-02, FR-STK-13)