- Added new route for receiving management, allowing users to manage incoming goods effectively. - Updated global CSS to unify font sizes across the application, ensuring a consistent user experience. - Modified customer and sales order fetching logic to improve data retrieval and handling, including enhanced error logging for better debugging. These changes aim to streamline the receiving process and improve overall UI consistency within the application.
180 lines
4.7 KiB
TypeScript
180 lines
4.7 KiB
TypeScript
import { apiClient } from "./client";
|
|
|
|
// --- 타입 정의 ---
|
|
|
|
export interface InboundItem {
|
|
id: string;
|
|
company_code: string;
|
|
inbound_number: string;
|
|
inbound_type: string;
|
|
inbound_date: string;
|
|
reference_number: string | null;
|
|
supplier_code: string | null;
|
|
supplier_name: string | null;
|
|
item_number: string | null;
|
|
item_name: string | null;
|
|
spec: string | null;
|
|
material: string | null;
|
|
unit: string | null;
|
|
inbound_qty: number;
|
|
unit_price: number;
|
|
total_amount: number;
|
|
lot_number: string | null;
|
|
warehouse_code: string | null;
|
|
warehouse_name?: string | null;
|
|
location_code: string | null;
|
|
inbound_status: string;
|
|
inspection_status: string | null;
|
|
inspector: string | null;
|
|
manager: string | null;
|
|
memo: string | null;
|
|
source_table: string | null;
|
|
source_id: string | null;
|
|
created_date: string;
|
|
created_by: string | null;
|
|
}
|
|
|
|
export interface PurchaseOrderSource {
|
|
id: string;
|
|
purchase_no: string;
|
|
order_date: string;
|
|
supplier_code: string;
|
|
supplier_name: string;
|
|
item_code: string;
|
|
item_name: string;
|
|
spec: string | null;
|
|
material: string | null;
|
|
order_qty: number;
|
|
received_qty: number;
|
|
remain_qty: number;
|
|
unit_price: number;
|
|
status: string;
|
|
due_date: string | null;
|
|
}
|
|
|
|
export interface ShipmentSource {
|
|
detail_id: number;
|
|
instruction_id: number;
|
|
instruction_no: string;
|
|
instruction_date: string;
|
|
partner_id: string;
|
|
instruction_status: string;
|
|
item_code: string;
|
|
item_name: string;
|
|
spec: string | null;
|
|
material: string | null;
|
|
ship_qty: number;
|
|
order_qty: number;
|
|
source_type: string | null;
|
|
}
|
|
|
|
export interface ItemSource {
|
|
id: string;
|
|
item_number: string;
|
|
item_name: string;
|
|
spec: string | null;
|
|
material: string | null;
|
|
unit: string | null;
|
|
standard_price: number;
|
|
}
|
|
|
|
export interface WarehouseOption {
|
|
warehouse_code: string;
|
|
warehouse_name: string;
|
|
warehouse_type: string;
|
|
}
|
|
|
|
export interface CreateReceivingPayload {
|
|
inbound_number: string;
|
|
inbound_date: string;
|
|
warehouse_code?: string;
|
|
location_code?: string;
|
|
inspector?: string;
|
|
manager?: string;
|
|
memo?: string;
|
|
items: Array<{
|
|
inbound_type: string;
|
|
reference_number?: string;
|
|
supplier_code?: string;
|
|
supplier_name?: string;
|
|
item_number?: string;
|
|
item_name?: string;
|
|
spec?: string;
|
|
material?: string;
|
|
unit?: string;
|
|
inbound_qty: number;
|
|
unit_price?: number;
|
|
total_amount?: number;
|
|
lot_number?: string;
|
|
warehouse_code?: string;
|
|
location_code?: string;
|
|
inbound_status?: string;
|
|
inspection_status?: string;
|
|
inspector?: string;
|
|
manager?: string;
|
|
memo?: string;
|
|
source_table: string;
|
|
source_id: string;
|
|
}>;
|
|
}
|
|
|
|
// --- API 호출 ---
|
|
|
|
export async function getReceivingList(params?: {
|
|
inbound_type?: string;
|
|
inbound_status?: string;
|
|
search_keyword?: string;
|
|
date_from?: string;
|
|
date_to?: string;
|
|
}) {
|
|
const res = await apiClient.get("/receiving/list", { params });
|
|
return res.data as { success: boolean; data: InboundItem[] };
|
|
}
|
|
|
|
export async function createReceiving(payload: CreateReceivingPayload) {
|
|
const res = await apiClient.post("/receiving", payload);
|
|
return res.data as { success: boolean; data: InboundItem[]; message?: string };
|
|
}
|
|
|
|
export async function updateReceiving(id: string, payload: Partial<InboundItem>) {
|
|
const res = await apiClient.put(`/receiving/${id}`, payload);
|
|
return res.data as { success: boolean; data: InboundItem };
|
|
}
|
|
|
|
export async function deleteReceiving(id: string) {
|
|
const res = await apiClient.delete(`/receiving/${id}`);
|
|
return res.data as { success: boolean; message?: string };
|
|
}
|
|
|
|
export async function generateReceivingNumber() {
|
|
const res = await apiClient.get("/receiving/generate-number");
|
|
return res.data as { success: boolean; data: string };
|
|
}
|
|
|
|
export async function getReceivingWarehouses() {
|
|
const res = await apiClient.get("/receiving/warehouses");
|
|
return res.data as { success: boolean; data: WarehouseOption[] };
|
|
}
|
|
|
|
// 소스 데이터 조회
|
|
export async function getPurchaseOrderSources(keyword?: string) {
|
|
const res = await apiClient.get("/receiving/source/purchase-orders", {
|
|
params: keyword ? { keyword } : {},
|
|
});
|
|
return res.data as { success: boolean; data: PurchaseOrderSource[] };
|
|
}
|
|
|
|
export async function getShipmentSources(keyword?: string) {
|
|
const res = await apiClient.get("/receiving/source/shipments", {
|
|
params: keyword ? { keyword } : {},
|
|
});
|
|
return res.data as { success: boolean; data: ShipmentSource[] };
|
|
}
|
|
|
|
export async function getItemSources(keyword?: string) {
|
|
const res = await apiClient.get("/receiving/source/items", {
|
|
params: keyword ? { keyword } : {},
|
|
});
|
|
return res.data as { success: boolean; data: ItemSource[] };
|
|
}
|