From 34d33571ded288176823e6cf3254d83dcc25afa7 Mon Sep 17 00:00:00 2001 From: DeepnaPooja Date: Wed, 21 Oct 2026 13:01:23 +0530 Subject: [PATCH] feat: enhance invoice item updates --- distribution_fe/lib/api/sales.ts | 11 +++++++++-- distribution_fe/types/api.ts | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/distribution_fe/lib/api/sales.ts b/distribution_fe/lib/api/sales.ts index 31db419..cb07213 100644 --- a/distribution_fe/lib/api/sales.ts +++ b/distribution_fe/lib/api/sales.ts @@ -4,6 +4,7 @@ import type { ShopPOResponse, InvoiceResponse, InvoiceStatus, + InvoiceVersionResponse, PaymentStatus, PaymentResponse, PaymentMethod, @@ -93,8 +94,14 @@ export const invoices = { print: (id: string, printedByUserId?: string | null) => api.post(`/invoices/${id}/print`, { printedByUserId }).then(r => r.data), - finalize: (id: string, finalizedByUserId?: string | null) => - api.post(`/invoices/${id}/finalize`, { finalizedByUserId }).then(r => r.data), + finalize: (id: string, finalizedByUserId?: string | null, adjustments?: { invoiceItemId: string; adjustedQuantity: number; isRemoved?: boolean }[]) => + api.post(`/invoices/${id}/finalize`, { finalizedByUserId, adjustments }).then(r => r.data), + + updateItems: (id: string, items: { invoiceItemId?: string; itemId?: string; quantity: number; unitPrice?: number | null; isRemoved?: boolean }[], editedByUserId?: string | null) => + api.put(`/invoices/${id}/items`, { items, editedByUserId }).then(r => r.data), + + versions: (id: string) => + api.get(`/invoices/${id}/versions`).then(r => r.data), } // ─── Payments ───────────────────────────────────────────────────────────────── diff --git a/distribution_fe/types/api.ts b/distribution_fe/types/api.ts index 1af3b93..c0885e1 100644 --- a/distribution_fe/types/api.ts +++ b/distribution_fe/types/api.ts @@ -12,6 +12,7 @@ export type PurchaseOrderStatus = | 'Issued' | 'PartiallyReceived' | 'Received' | 'Closed' | 'Cancelled' export type ShopPOStatus = 'Pending' | 'PartiallyFulfilled' | 'Fulfilled' | 'Cancelled' export type InvoiceStatus = 'Draft' | 'Printed' | 'Finalized' +export type InvoiceVersionStage = 'Created' | 'DraftEdited' | 'Printed' | 'Finalized' export type InvoiceCreationMode = 'ModeA' | 'ModeB' export type PaymentStatus = 'Pending' | 'PartiallyPaid' | 'Paid' export type PaymentMethod = 'Cash' | 'Cheque' | 'Credit' @@ -1001,6 +1002,36 @@ export interface ShopPOResponse { cancelledByRole: string | null } +export interface InvoiceItemResponse { + id: string + shopPOItemId: string | null + itemId: string + itemName: string + orderedQuantity: number | null + quantity: number + unitPrice: number + isRemoved: boolean +} + +export interface InvoiceVersionItemResponse { + shopPOItemId: string | null + itemId: string + itemName: string + quantity: number + unitPrice: number + isRemoved: boolean +} + +export interface InvoiceVersionResponse { + id: string + versionNumber: number + stage: InvoiceVersionStage + totalAmount: number + createdBy: string + createdAt: string + items: InvoiceVersionItemResponse[] +} + export interface InvoiceResponse { id: string shopPOId: string @@ -1017,6 +1048,7 @@ export interface InvoiceResponse { paidAmount: number isActive: boolean createdAt: string + items: InvoiceItemResponse[] } export interface OutstandingPaymentsResponse {