Files
vexplor/frontend/lib/api/outsourcingOutbound.ts
kjs 3b796ca9e3 feat: Add outsourcing outbound functionality
- Introduced a new controller for managing outsourcing outbound processes, including automatic candidate retrieval and outbound list management.
- Implemented API routes for fetching candidates, listing outsourcing outbounds, and creating new outbound records.
- Enhanced the SQL queries to ensure proper filtering by company code and to utilize existing outbound management tables effectively.
- Added new routes for handling outsourcing outbound operations in the Express application, improving the overall functionality of the logistics module.
2026-04-22 09:27:45 +09:00

122 lines
3.4 KiB
TypeScript

import { apiClient } from "./client";
// ===== 타입 =====
export interface OutsourcingCandidate {
completed_process_id: string;
wo_id: string;
completed_seq_no: string;
completed_process_code: string;
completed_process_name: string;
good_qty: number;
next_process_id: string;
next_seq_no: string;
next_process_code: string;
next_process_name: string;
next_status: string;
instruction_no: string;
item_code: string;
item_name: string;
spec: string;
material: string;
unit: string;
subcontractor_id: string;
subcontractor_code: string;
subcontractor_name: string;
}
export interface OutsourcingOutboundItem {
id: string;
outbound_number: string;
outbound_type: string;
outbound_date: string;
reference_number: string;
customer_code: string;
customer_name: string;
item_code: string;
item_name: string;
specification: string;
material: string;
unit: string;
outbound_qty: number;
warehouse_code: string;
warehouse_name?: string;
location_code: string;
outbound_status: string;
source_type: string;
source_id: string;
manager_id: string;
memo: string;
}
export interface WarehouseOption {
warehouse_code: string;
warehouse_name: string;
warehouse_type?: string;
}
// ===== API 함수 =====
export async function getCandidates(keyword?: string) {
const params: Record<string, string> = {};
if (keyword) params.keyword = keyword;
const res = await apiClient.get("/outsourcing-outbound/candidates", { params });
return res.data as { success: boolean; data: OutsourcingCandidate[] };
}
export async function getOutsourcingOutboundList(params?: {
outbound_status?: string;
search_keyword?: string;
date_from?: string;
date_to?: string;
}) {
const res = await apiClient.get("/outsourcing-outbound/list", { params: params || {} });
return res.data as { success: boolean; data: OutsourcingOutboundItem[] };
}
export async function createOutsourcingOutbound(payload: {
outbound_number: string;
outbound_date: string;
warehouse_code?: string;
location_code?: string;
manager_id?: string;
memo?: string;
items: Array<{
reference_number?: string;
subcontractor_code?: string;
subcontractor_name?: string;
item_code?: string;
item_name?: string;
spec?: string;
material?: string;
unit?: string;
outbound_qty: number;
completed_process_id?: string;
warehouse_code?: string;
location_code?: string;
}>;
}) {
const res = await apiClient.post("/outsourcing-outbound", payload);
return res.data as { success: boolean; data: OutsourcingOutboundItem[]; message?: string };
}
export async function updateOutsourcingOutbound(id: string, payload: Partial<OutsourcingOutboundItem>) {
const res = await apiClient.put(`/outsourcing-outbound/${id}`, payload);
return res.data as { success: boolean; data: OutsourcingOutboundItem };
}
export async function deleteOutsourcingOutbound(id: string) {
const res = await apiClient.delete(`/outsourcing-outbound/${id}`);
return res.data as { success: boolean; message?: string };
}
export async function generateOutsourcingOutboundNumber() {
const res = await apiClient.get("/outsourcing-outbound/generate-number");
return res.data as { success: boolean; data: string };
}
export async function getOutsourcingWarehouses() {
const res = await apiClient.get("/outsourcing-outbound/warehouses");
return res.data as { success: boolean; data: WarehouseOption[] };
}