feat: [client] 거래처 API 2차 필드 추가 및 견적 계획 업데이트

- 거래처 유형(client_type), 연락처(mobile, fax), 담당자 정보 필드 추가
- 발주처 설정(account_id/password, payment_day) 필드 추가
- 약정 세금(tax_agreement, tax_amount, tax_start/end_date) 필드 추가
- 악성채권(bad_debt 관련 5개 필드) 정보 필드 추가
- Model, Service, FormRequest, Swagger 문서 업데이트
- 견적 API 계획에 문서 발송 API(email/fax/kakao) 요구사항 추가
This commit is contained in:
2025-12-04 21:13:58 +09:00
parent 96e9a0ba18
commit d164bb4c4a
7 changed files with 318 additions and 11 deletions

View File

@@ -15,13 +15,32 @@
* @OA\Property(property="client_group_id", type="integer", nullable=true, example=1, description="고객 그룹 ID"),
* @OA\Property(property="client_code", type="string", example="CLIENT_001"),
* @OA\Property(property="name", type="string", example="거래처명"),
* @OA\Property(property="client_type", type="string", enum={"매입", "매출", "매입매출"}, example="매입", description="거래처 유형"),
* @OA\Property(property="contact_person", type="string", nullable=true, example="홍길동"),
* @OA\Property(property="phone", type="string", nullable=true, example="010-1234-5678"),
* @OA\Property(property="phone", type="string", nullable=true, example="02-1234-5678"),
* @OA\Property(property="mobile", type="string", nullable=true, example="010-1234-5678", description="모바일 번호"),
* @OA\Property(property="fax", type="string", nullable=true, example="02-1234-5679", description="팩스 번호"),
* @OA\Property(property="email", type="string", nullable=true, example="client@example.com"),
* @OA\Property(property="address", type="string", nullable=true, example="서울시 강남구"),
* @OA\Property(property="manager_name", type="string", nullable=true, example="김담당", description="담당자명"),
* @OA\Property(property="manager_tel", type="string", nullable=true, example="010-9876-5432", description="담당자 전화"),
* @OA\Property(property="system_manager", type="string", nullable=true, example="박시스템", description="시스템 관리자"),
* @OA\Property(property="account_id", type="string", nullable=true, example="user123", description="계정 ID"),
* @OA\Property(property="purchase_payment_day", type="string", nullable=true, example="매월 25일", description="매입 결제일"),
* @OA\Property(property="sales_payment_day", type="string", nullable=true, example="매월 말일", description="매출 결제일"),
* @OA\Property(property="business_no", type="string", nullable=true, maxLength=20, example="123-45-67890", description="사업자등록번호"),
* @OA\Property(property="business_type", type="string", nullable=true, maxLength=50, example="제조업", description="업태"),
* @OA\Property(property="business_item", type="string", nullable=true, maxLength=100, example="전자부품", description="업종"),
* @OA\Property(property="tax_agreement", type="boolean", example=false, description="세금 약정 여부"),
* @OA\Property(property="tax_amount", type="number", format="float", nullable=true, example=1000000, description="약정 금액"),
* @OA\Property(property="tax_start_date", type="string", format="date", nullable=true, example="2025-01-01", description="약정 시작일"),
* @OA\Property(property="tax_end_date", type="string", format="date", nullable=true, example="2025-12-31", description="약정 종료일"),
* @OA\Property(property="bad_debt", type="boolean", example=false, description="악성채권 여부"),
* @OA\Property(property="bad_debt_amount", type="number", format="float", nullable=true, example=500000, description="악성채권 금액"),
* @OA\Property(property="bad_debt_receive_date", type="string", format="date", nullable=true, example="2024-06-01", description="채권 발생일"),
* @OA\Property(property="bad_debt_end_date", type="string", format="date", nullable=true, example="2025-06-01", description="채권 만료일"),
* @OA\Property(property="bad_debt_progress", type="string", enum={"협의중", "소송중", "회수완료", "대손처리"}, nullable=true, description="진행 상태"),
* @OA\Property(property="memo", type="string", nullable=true, example="특이사항 메모", description="메모"),
* @OA\Property(property="is_active", type="string", enum={"Y", "N"}, example="Y"),
* @OA\Property(property="created_at", type="string", example="2025-10-01 12:00:00"),
* @OA\Property(property="updated_at", type="string", example="2025-10-01 12:00:00")
@@ -70,13 +89,33 @@
* @OA\Property(property="client_group_id", type="integer", nullable=true, example=1, description="고객 그룹 ID"),
* @OA\Property(property="client_code", type="string", maxLength=50, example="CLIENT_001"),
* @OA\Property(property="name", type="string", maxLength=100, example="거래처명"),
* @OA\Property(property="client_type", type="string", enum={"매입", "매출", "매입매출"}, nullable=true, example="매입", description="거래처 유형"),
* @OA\Property(property="contact_person", type="string", nullable=true, maxLength=100, example="홍길동"),
* @OA\Property(property="phone", type="string", nullable=true, maxLength=20, example="010-1234-5678"),
* @OA\Property(property="phone", type="string", nullable=true, maxLength=20, example="02-1234-5678"),
* @OA\Property(property="mobile", type="string", nullable=true, maxLength=20, example="010-1234-5678", description="모바일 번호"),
* @OA\Property(property="fax", type="string", nullable=true, maxLength=20, example="02-1234-5679", description="팩스 번호"),
* @OA\Property(property="email", type="string", nullable=true, maxLength=100, example="client@example.com"),
* @OA\Property(property="address", type="string", nullable=true, maxLength=255, example="서울시 강남구"),
* @OA\Property(property="manager_name", type="string", nullable=true, maxLength=50, example="김담당", description="담당자명"),
* @OA\Property(property="manager_tel", type="string", nullable=true, maxLength=20, example="010-9876-5432", description="담당자 전화"),
* @OA\Property(property="system_manager", type="string", nullable=true, maxLength=50, example="박시스템", description="시스템 관리자"),
* @OA\Property(property="account_id", type="string", nullable=true, maxLength=50, example="user123", description="계정 ID"),
* @OA\Property(property="account_password", type="string", nullable=true, maxLength=255, example="password123", description="계정 비밀번호"),
* @OA\Property(property="purchase_payment_day", type="string", nullable=true, maxLength=20, example="매월 25일", description="매입 결제일"),
* @OA\Property(property="sales_payment_day", type="string", nullable=true, maxLength=20, example="매월 말일", description="매출 결제일"),
* @OA\Property(property="business_no", type="string", nullable=true, maxLength=20, example="123-45-67890", description="사업자등록번호"),
* @OA\Property(property="business_type", type="string", nullable=true, maxLength=50, example="제조업", description="업태"),
* @OA\Property(property="business_item", type="string", nullable=true, maxLength=100, example="전자부품", description="업종"),
* @OA\Property(property="tax_agreement", type="boolean", nullable=true, example=false, description="세금 약정 여부"),
* @OA\Property(property="tax_amount", type="number", format="float", nullable=true, example=1000000, description="약정 금액"),
* @OA\Property(property="tax_start_date", type="string", format="date", nullable=true, example="2025-01-01", description="약정 시작일"),
* @OA\Property(property="tax_end_date", type="string", format="date", nullable=true, example="2025-12-31", description="약정 종료일"),
* @OA\Property(property="bad_debt", type="boolean", nullable=true, example=false, description="악성채권 여부"),
* @OA\Property(property="bad_debt_amount", type="number", format="float", nullable=true, example=500000, description="악성채권 금액"),
* @OA\Property(property="bad_debt_receive_date", type="string", format="date", nullable=true, example="2024-06-01", description="채권 발생일"),
* @OA\Property(property="bad_debt_end_date", type="string", format="date", nullable=true, example="2025-06-01", description="채권 만료일"),
* @OA\Property(property="bad_debt_progress", type="string", enum={"협의중", "소송중", "회수완료", "대손처리"}, nullable=true, description="진행 상태"),
* @OA\Property(property="memo", type="string", nullable=true, example="특이사항 메모", description="메모"),
* @OA\Property(property="is_active", type="string", enum={"Y", "N"}, example="Y")
* )
*
@@ -87,13 +126,33 @@
* @OA\Property(property="client_group_id", type="integer", nullable=true, example=1, description="고객 그룹 ID"),
* @OA\Property(property="client_code", type="string", maxLength=50),
* @OA\Property(property="name", type="string", maxLength=100),
* @OA\Property(property="client_type", type="string", enum={"매입", "매출", "매입매출"}, nullable=true, description="거래처 유형"),
* @OA\Property(property="contact_person", type="string", nullable=true, maxLength=100),
* @OA\Property(property="phone", type="string", nullable=true, maxLength=20),
* @OA\Property(property="mobile", type="string", nullable=true, maxLength=20, description="모바일 번호"),
* @OA\Property(property="fax", type="string", nullable=true, maxLength=20, description="팩스 번호"),
* @OA\Property(property="email", type="string", nullable=true, maxLength=100),
* @OA\Property(property="address", type="string", nullable=true, maxLength=255),
* @OA\Property(property="manager_name", type="string", nullable=true, maxLength=50, description="담당자명"),
* @OA\Property(property="manager_tel", type="string", nullable=true, maxLength=20, description="담당자 전화"),
* @OA\Property(property="system_manager", type="string", nullable=true, maxLength=50, description="시스템 관리자"),
* @OA\Property(property="account_id", type="string", nullable=true, maxLength=50, description="계정 ID"),
* @OA\Property(property="account_password", type="string", nullable=true, maxLength=255, description="계정 비밀번호"),
* @OA\Property(property="purchase_payment_day", type="string", nullable=true, maxLength=20, description="매입 결제일"),
* @OA\Property(property="sales_payment_day", type="string", nullable=true, maxLength=20, description="매출 결제일"),
* @OA\Property(property="business_no", type="string", nullable=true, maxLength=20, description="사업자등록번호"),
* @OA\Property(property="business_type", type="string", nullable=true, maxLength=50, description="업태"),
* @OA\Property(property="business_item", type="string", nullable=true, maxLength=100, description="업종"),
* @OA\Property(property="tax_agreement", type="boolean", nullable=true, description="세금 약정 여부"),
* @OA\Property(property="tax_amount", type="number", format="float", nullable=true, description="약정 금액"),
* @OA\Property(property="tax_start_date", type="string", format="date", nullable=true, description="약정 시작일"),
* @OA\Property(property="tax_end_date", type="string", format="date", nullable=true, description="약정 종료일"),
* @OA\Property(property="bad_debt", type="boolean", nullable=true, description="악성채권 여부"),
* @OA\Property(property="bad_debt_amount", type="number", format="float", nullable=true, description="악성채권 금액"),
* @OA\Property(property="bad_debt_receive_date", type="string", format="date", nullable=true, description="채권 발생일"),
* @OA\Property(property="bad_debt_end_date", type="string", format="date", nullable=true, description="채권 만료일"),
* @OA\Property(property="bad_debt_progress", type="string", enum={"협의중", "소송중", "회수완료", "대손처리"}, nullable=true, description="진행 상태"),
* @OA\Property(property="memo", type="string", nullable=true, description="메모"),
* @OA\Property(property="is_active", type="string", enum={"Y", "N"})
* )
*/