From 21ac73527db75f1c0d066162cb11fb5e504ae6a1 Mon Sep 17 00:00:00 2001 From: rstubryan Date: Tue, 11 Nov 2025 13:23:48 +0700 Subject: [PATCH] feat(FE-212): refactor purchase requisitions services and update item schema for approval process --- src/services/api/purchase.ts | 39 +++++++++++++++++++++------- src/types/api/purchase/purchase.d.ts | 18 ++++++------- 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/src/services/api/purchase.ts b/src/services/api/purchase.ts index 91bad395..56590975 100644 --- a/src/services/api/purchase.ts +++ b/src/services/api/purchase.ts @@ -8,18 +8,12 @@ import { import { BaseApiService } from '@/services/api/base'; import { BaseApiResponse } from '@/types/api/api-general'; -export const PurchaseRequisitionsApi = new BaseApiService< +export class PurchaseRequisitionsService extends BaseApiService< Purchase, CreatePurchaseRequisitionsPayload, UpdatePurchaseRequisitionsPayload ->('/purchases/requisitions'); - -export class StaffApprovalService extends BaseApiService< - Purchase, - CreateStaffApprovalRequisitionsPayload, - CreateAcceptApprovalRequisitionsPayload > { - constructor(basePath: string = '') { + constructor(basePath: string = '/purchases/requisitions') { super(basePath); } @@ -52,6 +46,18 @@ export class StaffApprovalService extends BaseApiService< }, }); } +} + +export const PurchaseRequisitionsApi = new PurchaseRequisitionsService(); + +export class StaffApprovalService extends BaseApiService< + Purchase, + CreateStaffApprovalRequisitionsPayload, + CreateAcceptApprovalRequisitionsPayload +> { + constructor(basePath: string = '') { + super(basePath); + } async createStaffApproval( purchaseRequisitionId: number, @@ -66,12 +72,23 @@ export class StaffApprovalService extends BaseApiService< ); } + } + +export class AcceptApprovalService extends BaseApiService< + Purchase, + CreateAcceptApprovalRequisitionsPayload, + CreateAcceptApprovalRequisitionsPayload +> { + constructor(basePath: string = '') { + super(basePath); + } + async acceptApproval( purchaseRequisitionId: number, payload: CreateAcceptApprovalRequisitionsPayload ): Promise | undefined> { return await this.customRequest>( - `${purchaseRequisitionId}/approvals/accept`, + `${purchaseRequisitionId}/approvals/receipts`, { method: 'POST', payload, @@ -83,3 +100,7 @@ export class StaffApprovalService extends BaseApiService< export const StaffApprovalApi = new StaffApprovalService( '/purchases/requisitions' ); + +export const AcceptApprovalApi = new AcceptApprovalService( + '/purchases/requisitions' +); diff --git a/src/types/api/purchase/purchase.d.ts b/src/types/api/purchase/purchase.d.ts index 25eae363..74f91af7 100644 --- a/src/types/api/purchase/purchase.d.ts +++ b/src/types/api/purchase/purchase.d.ts @@ -60,15 +60,15 @@ export type CreateAcceptApprovalRequisitionsPayload = { notes?: string; items: { purchase_item_id: number; - accepted_date: string; - destination_warehouse_id: number; - delivery_document_number: string; - delivery_vehicle_plate: string; - document_index?: number; - received_quantity: number; - expedition_id: number; - transport_cost: number; - transport_cost_per_item: number; + received_date: string; + warehouse_id: number; + travel_number: string; + travel_document_path: string; + vehicle_number: string; + expedition_vendor_id: number; + received_qty: number; + transport_per_item: number; + transport_total: number; }[]; };