From f6e391d5882a98cd13f82966b4b1a6b77a809ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=D1=81=20=D0=A1=D1=83=D0=BB=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Tue, 29 Sep 2026 16:11:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=94=D0=A1=20=D0=B2=20DI2:=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=80=D1=8F=D0=B4=D0=BE=D0=BA=20=D1=82=D1=83=D0=BB=D1=82?= =?UTF-8?q?=D0=B8=D0=BF=D0=B0=20=D0=B3=D1=80=D0=B0=D1=84=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?,=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=B0=D0=BA=D1=82=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=B2=D0=B8=D0=B4=D0=B6=D0=B5=D1=82=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8F=20=D0=BA=D0=B2=D0=B0=D1=80?= =?UTF-8?q?=D1=82=D0=B0=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Тултип «Динамики НДС»: порядок Начислено за месяц → Вычет за месяц → К уплате за месяц → Накоплено за квартал; линии переименованы с уточнением «за месяц» - «Контроль квартала»: высота таблицы ~5 строк с вертикальной прокруткой (как у трекера), убран список «Оплачено, аванс не висячий» --- client-di2/src/pages/calculations.tsx | 43 ++++++++++++++------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/client-di2/src/pages/calculations.tsx b/client-di2/src/pages/calculations.tsx index 0ab5f6a..bacfeb7 100644 --- a/client-di2/src/pages/calculations.tsx +++ b/client-di2/src/pages/calculations.tsx @@ -595,12 +595,19 @@ function formatQuarterLabel(q: string): string { return `${q.slice(0, 4)} Q${quarter}`; } -function ChartTooltip({ active, payload, label, formatValue }: any) { +function ChartTooltip({ active, payload, label, formatValue, seriesOrder }: any) { if (!active || !payload?.length) return null; + const items = seriesOrder + ? [...payload].sort((a: any, b: any) => { + const ia = seriesOrder.indexOf(a.dataKey); + const ib = seriesOrder.indexOf(b.dataKey); + return (ia === -1 ? 999 : ia) - (ib === -1 ? 999 : ib); + }) + : payload; return (

{label}

- {payload.map((entry: any) => ( + {items.map((entry: any) => (
{entry.name} @@ -688,7 +695,6 @@ function VatTab({ data, quarters, balance, sync, tracker, quarterControl }: { const purchasesByRate = (data.byRate ?? []).filter((r: any) => r.direction === "purchases"); const quarter = data.currentQuarter ?? null; const redHanging: any[] = quarterControl?.redHanging ?? []; - const redNoAdvance: any[] = quarterControl?.redNoAdvance ?? []; const contractTotals = quarterControl?.totals ?? null; const markerCounts: any[] = quarterControl?.byMarker ?? []; const allContractRows: any[] = allContractsQuery.data?.rows ?? []; @@ -795,14 +801,24 @@ function VatTab({ data, quarters, balance, sync, tracker, quarterControl }: { tickLine={false} /> - } /> + ( + + )} + /> {groupBy === "month" ? ( <> - - + + ) : ( <> @@ -962,7 +978,7 @@ function VatTab({ data, quarters, balance, sync, tracker, quarterControl }: { ) : (
{redHanging.length > 0 ? ( -
+
@@ -990,19 +1006,6 @@ function VatTab({ data, quarters, balance, sync, tracker, quarterControl }: {

Договоров с висячим авансом и без отгрузки нет

)} - {redNoAdvance.length > 0 && ( -
-

- Оплачено, аванс не висячий — проверить зачёт у бухгалтерии ({redNoAdvance.length}): -

-
- {redNoAdvance.map((r: any, i: number) => ( - {r.counterparty} — {formatCurrency(r.paid)} - ))} -
-
- )} -

Итого по списку: {redHanging.length} договоров, сумма авансов {formatCurrency(redHangingAdvanceSum)}