feat: 견적확정 밸리데이션, 수주등록 개소그룹, 작업지시 개선
- 견적확정 시 업체명/현장명/담당자/연락처 프론트 밸리데이션 추가 - 견적확정 후 수주등록 버튼 동적 전환 - 수주등록 품목 개소별(floor+code) 그룹핑 수정 - 작업지시 상세 quantity 문자열→숫자 변환 (formatQuantity) - 작업지시 탭 카운트 초기 로딩 시 전체 표시 (by_process 활용) - 작업지시 상세 개소별/품목별 합산 테이블 추가 - 작업자 화면 API 연동 및 목업 데이터 분리 - 입고관리 완료건 수정, 재고현황 개선
This commit is contained in:
@@ -41,7 +41,6 @@ function generateLocation(type: string, seed: number): string {
|
||||
const rawMaterialItems: StockItem[] = [
|
||||
{
|
||||
id: 'rm-1',
|
||||
stockNumber: 'STK-RM-001',
|
||||
itemCode: 'SCR-FABRIC-WHT-03T',
|
||||
itemName: '스크린원단-백색-0.3T',
|
||||
itemType: 'raw_material',
|
||||
@@ -61,7 +60,6 @@ const rawMaterialItems: StockItem[] = [
|
||||
},
|
||||
{
|
||||
id: 'rm-2',
|
||||
stockNumber: 'STK-RM-002',
|
||||
itemCode: 'SCR-FABRIC-GRY-03T',
|
||||
itemName: '스크린원단-회색-0.3T',
|
||||
itemType: 'raw_material',
|
||||
@@ -81,7 +79,6 @@ const rawMaterialItems: StockItem[] = [
|
||||
},
|
||||
{
|
||||
id: 'rm-3',
|
||||
stockNumber: 'STK-RM-003',
|
||||
itemCode: 'SCR-FABRIC-BLK-03T',
|
||||
itemName: '스크린원단-흑색-0.3T',
|
||||
itemType: 'raw_material',
|
||||
@@ -101,7 +98,6 @@ const rawMaterialItems: StockItem[] = [
|
||||
},
|
||||
{
|
||||
id: 'rm-4',
|
||||
stockNumber: 'STK-RM-004',
|
||||
itemCode: 'SCR-FABRIC-BEI-03T',
|
||||
itemName: '스크린원단-베이지-0.3T',
|
||||
itemType: 'raw_material',
|
||||
@@ -133,7 +129,6 @@ const bentPartItems: StockItem[] = Array.from({ length: 41 }, (_, i) => {
|
||||
|
||||
return {
|
||||
id: `bp-${i + 1}`,
|
||||
stockNumber: `STK-BP-${String(i + 1).padStart(3, '0')}`,
|
||||
itemCode: `BENT-${type.toUpperCase().slice(0, 3)}-${variant}-${String(i + 1).padStart(2, '0')}`,
|
||||
itemName: `${type}-${variant}형-${i + 1}`,
|
||||
itemType: 'bent_part' as const,
|
||||
@@ -167,7 +162,6 @@ const purchasedPartItems: StockItem[] = [
|
||||
|
||||
return {
|
||||
id: `pp-sqp-${i + 1}`,
|
||||
stockNumber: `STK-PP-SQP-${String(i + 1).padStart(3, '0')}`,
|
||||
itemCode: `SQP-${size.replace('×', '')}-${length.slice(0, 2)}`,
|
||||
itemName: `각파이프 ${size} L:${length}`,
|
||||
itemType: 'purchased_part' as const,
|
||||
@@ -198,7 +192,6 @@ const purchasedPartItems: StockItem[] = [
|
||||
|
||||
return {
|
||||
id: `pp-ang-${i + 1}`,
|
||||
stockNumber: `STK-PP-ANG-${String(i + 1).padStart(3, '0')}`,
|
||||
itemCode: `ANG-${size.replace('×', '')}-${length.slice(0, 2)}`,
|
||||
itemName: `앵글 ${size} L:${length}`,
|
||||
itemType: 'purchased_part' as const,
|
||||
@@ -231,7 +224,6 @@ const purchasedPartItems: StockItem[] = [
|
||||
|
||||
return {
|
||||
id: `pp-motor-${i + 1}`,
|
||||
stockNumber: `STK-PP-MOT-${String(i + 1).padStart(3, '0')}`,
|
||||
itemCode: `MOTOR-${voltage}${weight}${type === '무선' ? '-W' : ''}`,
|
||||
itemName: `전동개폐기-${voltage}${weight}${type}`,
|
||||
itemType: 'purchased_part' as const,
|
||||
@@ -262,7 +254,6 @@ const purchasedPartItems: StockItem[] = [
|
||||
|
||||
return {
|
||||
id: `pp-bolt-${i + 1}`,
|
||||
stockNumber: `STK-PP-BLT-${String(i + 1).padStart(3, '0')}`,
|
||||
itemCode: `BOLT-${size}-${length}`,
|
||||
itemName: `볼트 ${size}×${length}mm`,
|
||||
itemType: 'purchased_part' as const,
|
||||
@@ -291,7 +282,6 @@ const purchasedPartItems: StockItem[] = [
|
||||
|
||||
return {
|
||||
id: `pp-bearing-${i + 1}`,
|
||||
stockNumber: `STK-PP-BRG-${String(i + 1).padStart(3, '0')}`,
|
||||
itemCode: `BEARING-${type}`,
|
||||
itemName: `베어링 ${type}`,
|
||||
itemType: 'purchased_part' as const,
|
||||
@@ -322,7 +312,6 @@ const purchasedPartItems: StockItem[] = [
|
||||
|
||||
return {
|
||||
id: `pp-spring-${i + 1}`,
|
||||
stockNumber: `STK-PP-SPR-${String(i + 1).padStart(3, '0')}`,
|
||||
itemCode: `SPRING-${type.toUpperCase().slice(0, 2)}-${size}`,
|
||||
itemName: `스프링-${type}-${size}`,
|
||||
itemType: 'purchased_part' as const,
|
||||
@@ -347,7 +336,6 @@ const purchasedPartItems: StockItem[] = [
|
||||
const subMaterialItems: StockItem[] = [
|
||||
{
|
||||
id: 'sm-1',
|
||||
stockNumber: 'STK-SM-001',
|
||||
itemCode: 'SEW-WHT',
|
||||
itemName: '미싱실-백색',
|
||||
itemType: 'sub_material',
|
||||
@@ -367,7 +355,6 @@ const subMaterialItems: StockItem[] = [
|
||||
},
|
||||
{
|
||||
id: 'sm-2',
|
||||
stockNumber: 'STK-SM-002',
|
||||
itemCode: 'ALU-BAR',
|
||||
itemName: '하단바-알루미늄',
|
||||
itemType: 'sub_material',
|
||||
@@ -387,7 +374,6 @@ const subMaterialItems: StockItem[] = [
|
||||
},
|
||||
{
|
||||
id: 'sm-3',
|
||||
stockNumber: 'STK-SM-003',
|
||||
itemCode: 'END-CAP-STD',
|
||||
itemName: '앤드락-표준',
|
||||
itemType: 'sub_material',
|
||||
@@ -407,7 +393,6 @@ const subMaterialItems: StockItem[] = [
|
||||
},
|
||||
{
|
||||
id: 'sm-4',
|
||||
stockNumber: 'STK-SM-004',
|
||||
itemCode: 'SILICON-TRANS',
|
||||
itemName: '실리콘-투명',
|
||||
itemType: 'sub_material',
|
||||
@@ -427,7 +412,6 @@ const subMaterialItems: StockItem[] = [
|
||||
},
|
||||
{
|
||||
id: 'sm-5',
|
||||
stockNumber: 'STK-SM-005',
|
||||
itemCode: 'TAPE-DBL-25',
|
||||
itemName: '양면테이프-25mm',
|
||||
itemType: 'sub_material',
|
||||
@@ -447,7 +431,6 @@ const subMaterialItems: StockItem[] = [
|
||||
},
|
||||
{
|
||||
id: 'sm-6',
|
||||
stockNumber: 'STK-SM-006',
|
||||
itemCode: 'RIVET-STL-4',
|
||||
itemName: '리벳-스틸-4mm',
|
||||
itemType: 'sub_material',
|
||||
@@ -467,7 +450,6 @@ const subMaterialItems: StockItem[] = [
|
||||
},
|
||||
{
|
||||
id: 'sm-7',
|
||||
stockNumber: 'STK-SM-007',
|
||||
itemCode: 'WASHER-M8',
|
||||
itemName: '와셔-M8',
|
||||
itemType: 'sub_material',
|
||||
@@ -491,7 +473,6 @@ const subMaterialItems: StockItem[] = [
|
||||
const consumableItems: StockItem[] = [
|
||||
{
|
||||
id: 'cs-1',
|
||||
stockNumber: 'STK-CS-001',
|
||||
itemCode: 'PKG-BOX-L',
|
||||
itemName: '포장박스-대형',
|
||||
itemType: 'consumable',
|
||||
@@ -511,7 +492,6 @@ const consumableItems: StockItem[] = [
|
||||
},
|
||||
{
|
||||
id: 'cs-2',
|
||||
stockNumber: 'STK-CS-002',
|
||||
itemCode: 'PKG-BOX-M',
|
||||
itemName: '포장박스-중형',
|
||||
itemType: 'consumable',
|
||||
|
||||
Reference in New Issue
Block a user