From 68f45623953dcbca7fef0813e4b04bb148f55194 Mon Sep 17 00:00:00 2001 From: Adnan Zahir Date: Wed, 22 Apr 2026 10:10:10 +0700 Subject: [PATCH] fix: schema update for bulk approve --- .../marketing/form/MarketingForm.schema.ts | 12 +++++----- src/services/api/expense.ts | 21 ++++++++++++++++++ src/services/api/marketing/marketing.ts | 22 +++++++++++++++++++ src/types/api/expense.d.ts | 13 +++++++++++ src/types/api/marketing/marketing.d.ts | 10 +++++++++ 5 files changed, 73 insertions(+), 5 deletions(-) diff --git a/src/components/pages/marketing/form/MarketingForm.schema.ts b/src/components/pages/marketing/form/MarketingForm.schema.ts index f9a3c476..aa304315 100644 --- a/src/components/pages/marketing/form/MarketingForm.schema.ts +++ b/src/components/pages/marketing/form/MarketingForm.schema.ts @@ -144,9 +144,11 @@ export const DeliveryProductToFieldValues = ( delivery: BaseDeliveryOrder ): DeliveryOrderProductFormValues[] => { const data = delivery.deliveries.map((item) => { - const salesOrder = salesOrders.find( - (so) => so.product_warehouse.id === item.product_warehouse.id - ); + const salesOrder = + salesOrders.find((so) => so.id === item.marketing_product_id) ?? + salesOrders.find( + (so) => so.product_warehouse.id === item.product_warehouse.id + ); const warehouseOption = { value: item.product_warehouse.warehouse.id, label: item.product_warehouse.warehouse.name, @@ -180,7 +182,7 @@ export const DeliveryProductToFieldValues = ( vehicle_number: item.vehicle_number, delivery_date: formatDate(delivery.delivery_date, 'yyyy-MM-DD'), do_number: delivery.do_number, - marketing_product_id: salesOrder?.id, + marketing_product_id: item.marketing_product_id ?? salesOrder?.id, marketing_type: salesOrder?.marketing_type ? { value: salesOrder?.marketing_type, @@ -194,7 +196,7 @@ export const DeliveryProductToFieldValues = ( } : null, marketing_product: { - id: salesOrder?.id, + id: item.marketing_product_id ?? salesOrder?.id, vehicle_number: item.vehicle_number, warehouse_id: item.product_warehouse.warehouse.id, warehouse: warehouseOption, diff --git a/src/services/api/expense.ts b/src/services/api/expense.ts index b9256506..613b93c0 100644 --- a/src/services/api/expense.ts +++ b/src/services/api/expense.ts @@ -2,6 +2,7 @@ import axios from 'axios'; import { BaseApiService } from '@/services/api/base'; import { BaseApiResponse, GroupedApprovals } from '@/types/api/api-general'; import { + BulkApproveExpensePayload, CreateExpensePayload, CreateExpenseRealizationPayload, Expense, @@ -330,6 +331,26 @@ export class ExpenseApiService extends BaseApiService< } } + async bulkApproveToStatus( + payload: BulkApproveExpensePayload + ): Promise | undefined> { + try { + return await httpClient>( + `${this.basePath}/approvals/bulk`, + { + method: 'POST', + body: payload, + } + ); + } catch (error) { + if (axios.isAxiosError>(error)) { + return error.response?.data; + } + + return undefined; + } + } + async rejectHeadArea( id: number, notes?: string diff --git a/src/services/api/marketing/marketing.ts b/src/services/api/marketing/marketing.ts index 0a34009b..3ba3faa7 100644 --- a/src/services/api/marketing/marketing.ts +++ b/src/services/api/marketing/marketing.ts @@ -2,7 +2,9 @@ import { isResponseError } from '@/lib/api-helper'; import { BaseApiService } from '@/services/api/base'; import { httpClient, httpClientFetcher } from '@/services/http/client'; import { BaseApiResponse } from '@/types/api/api-general'; +import axios from 'axios'; import { + BulkApproveMarketingPayload, Marketing, CreateSalesOrderPayload, UpdateSalesOrderPayload, @@ -73,6 +75,26 @@ export class SalesOrderService extends BaseApiService< } } + async bulkApproveToStatus( + payload: BulkApproveMarketingPayload + ): Promise | undefined> { + try { + return await httpClient>( + '/marketing/approvals/bulk', + { + method: 'POST', + body: payload, + } + ); + } catch (error) { + if (axios.isAxiosError>(error)) { + return error.response?.data; + } + + return undefined; + } + } + /** * Delivery */ diff --git a/src/types/api/expense.d.ts b/src/types/api/expense.d.ts index abeab48a..6c966160 100644 --- a/src/types/api/expense.d.ts +++ b/src/types/api/expense.d.ts @@ -99,3 +99,16 @@ export type CreateExpenseRealizationPayload = { }; export type UpdateExpenseRealizationPayload = CreateExpenseRealizationPayload; + +export type ExpenseBulkApprovalStatus = + | 'HEAD_AREA' + | 'UNIT_VICE_PRESIDENT' + | 'FINANCE' + | 'REALISASI'; + +export type BulkApproveExpensePayload = { + approvable_ids: number[]; + status: ExpenseBulkApprovalStatus; + date?: string; + notes?: string; +}; diff --git a/src/types/api/marketing/marketing.d.ts b/src/types/api/marketing/marketing.d.ts index 15d34345..f89954d8 100644 --- a/src/types/api/marketing/marketing.d.ts +++ b/src/types/api/marketing/marketing.d.ts @@ -54,6 +54,7 @@ export type BaseDeliveryOrder = { }; export type BaseDelivery = { + marketing_product_id: number; product_warehouse: ProductWarehouse; qty: number; unit_price: number; @@ -162,3 +163,12 @@ export type UpdateDeliveryOrderProductPayload = export type UpdateSalesOrderPayload = CreateSalesOrderPayload; export type UpdateDeliveryOrderPayload = CreateDeliveryOrderPayload; + +export type MarketingBulkApprovalStatus = 'SALES_ORDER' | 'DELIVERY'; + +export type BulkApproveMarketingPayload = { + approvable_ids: number[]; + status: MarketingBulkApprovalStatus; + date?: string; + notes?: string; +};