- PosSaleDto: CashShiftId/RetailPointId/IsReturn/ReferenceSaleId (nullable, обратносовместимо с v1). PosController проставляет их в RetailSale, резолвит склад по точке продаж, проверяет что смена открыта. Без этого чеки кассы не попадали в Z-отчёт/материализацию денег смены (MoneyService агрегирует продажи по CashShiftId). - Возврат покупателю (IsReturn): движение +остаток (CustomerReturn), без pre-flight на остаток; наличные к выдаче, учитывается в смене. - GET /api/pos/v1/version (anon): версия + ссылки на сборки из конфигурации Pos (автообновление кассы + ссылка в админке). - Интеграционные тесты: продажа в смене попадает в expected cash при закрытии; возврат возвращает остаток (9/9 PosSyncTests зелёные, Testcontainers). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
47 lines
1 KiB
JSON
47 lines
1 KiB
JSON
{
|
|
"Serilog": {
|
|
"MinimumLevel": {
|
|
"Default": "Information",
|
|
"Override": {
|
|
"Microsoft.AspNetCore": "Warning",
|
|
"Microsoft.EntityFrameworkCore": "Warning"
|
|
}
|
|
},
|
|
"WriteTo": [
|
|
{ "Name": "Console" },
|
|
{
|
|
"Name": "File",
|
|
"Args": {
|
|
"path": "logs/food-market-.log",
|
|
"rollingInterval": "Day",
|
|
"retainedFileCountLimit": 14
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ConnectionStrings": {
|
|
"Default": "Host=localhost;Port=5432;Database=food_market;Username=nns;Password="
|
|
},
|
|
"OpenIddict": {
|
|
"Issuer": "https://localhost:5001/",
|
|
"AccessTokenLifetime": "01:00:00",
|
|
"RefreshTokenLifetime": "30.00:00:00"
|
|
},
|
|
"Cors": {
|
|
"AllowedOrigins": [
|
|
"http://localhost:5173",
|
|
"http://localhost:4173",
|
|
"https://test.food-market.kz",
|
|
"https://admin.food-market.kz"
|
|
]
|
|
},
|
|
"Pos": {
|
|
"LatestVersion": "0.0.0",
|
|
"DownloadWindows": "",
|
|
"DownloadLinux": "",
|
|
"ReleaseNotes": "",
|
|
"Mandatory": false
|
|
},
|
|
"AllowedHosts": "*"
|
|
}
|