Files
sam-docs/features/card-vehicle/corporate-vehicles.md
김보곤 a23e2560ac docs:카드/차량관리 개발문서 추가 (5개 메뉴)
- 법인카드관리: 카드 CRUD, 결제일 휴일조정, 사용금액 집계, 선불결제
- 카드사용내역: 바로빌 SOAP 연동, 분개, 거래숨김, 금액수정
- 차량목록: 법인/렌트/리스 차량 등록, 주행거리 자동계산
- 차량일지: 운행기록, 용도별 통계, 출발↔도착 교환
- 정비이력: 카테고리별 비용 관리, 주행거리 자동갱신

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:31:25 +09:00

5.3 KiB

차량목록

개요

차량목록은 회사의 법인차량(법인/렌트/리스)을 등록하고 관리하는 기능입니다. 소유형태별 차량 등록, 총 주행거리 자동 계산, 차량 상태 관리 등을 지원합니다.

  • 라우트: GET /finance/corporate-vehicles
  • UI 기술: React 18 + Babel (브라우저 트랜스파일링)

파일 구조

mng/
├── app/Http/Controllers/Finance/
│   └── CorporateVehicleController.php     # 메인 컨트롤러 (5개 메서드)
├── app/Models/
│   └── CorporateVehicle.php               # 차량 모델
└── resources/views/finance/
    └── corporate-vehicles.blade.php       # React 기반 단일 페이지

api/
└── database/migrations/
    └── 2026_02_02_220000_create_corporate_vehicles_table.php

라우트

// routes/web.php (finance prefix 그룹 내)
GET    /corporate-vehicles         index()     페이지 렌더링
GET    /corporate-vehicles/list    list()      차량 목록 (JSON)
POST   /corporate-vehicles         store()     차량 등록
PUT    /corporate-vehicles/{id}    update()    차량 수정
DELETE /corporate-vehicles/{id}    destroy()   차량 삭제

컨트롤러

CorporateVehicleController

메서드 HTTP 설명
index() GET React 페이지 렌더링 (HX-Redirect 적용)
list() GET 차량 목록 (필터 + 총 주행거리 계산)
store() POST 차량 등록
update() PUT 차량 수정
destroy() DELETE 차량 삭제

list() 핵심 로직

필터 파라미터: ownership_type, vehicle_type, status, search
    ↓
CorporateVehicle::where(tenant_id, ...)
    ↓
각 차량별 총 주행거리 계산:
  total_mileage = initial_mileage + SUM(vehicle_logs.distance_km)
    ↓
JSON 응답

모델

CorporateVehicle

테이블: corporate_vehicles

필드 타입 설명
tenant_id bigint 테넌트 ID
plate_number string(20) 차량번호
model string(100) 차량 모델명
vehicle_type string(20) 차종
ownership_type enum corporate / rent / lease
year year 연식
driver string(50) 주 운전자
status enum active / maintenance / disposed
mileage int 현재 주행거리 (정비 기준)
memo text 메모

법인 전용 필드

필드 타입 설명
purchase_date date 취득일자
purchase_price int 취득가액

렌트/리스 전용 필드

필드 타입 설명
contract_date date 계약일자
rent_company string 렌트/리스사
rent_company_tel string 연락처
rent_period string 계약기간
agreed_mileage int 약정주행거리
vehicle_price int 차량가액
residual_value int 잔존가치
deposit int 보증금
monthly_rent int 월 렌트료
monthly_rent_tax int 부가세
insurance_company string 보험사
insurance_company_tel string 보험사 연락처

Traits / Scope

  • SoftDeletes 적용
  • Casts: year, mileage, purchase_price, vehicle_price, residual_value, deposit, monthly_rent, monthly_rent_tax → integer

뷰 구성 (React)

corporate-vehicles.blade.php

┌─ 페이지 헤더 ──────────────────────
│  제목: "차량목록"
│  검색 | Excel 다운로드 | 차량 등록 버튼
│
├─ 요약 카드 (4열) ──────────────────
│  총 차량 | 법인 취득가 | 월 렌트/리스비 | 총 주행거리
│
├─ 필터 바 ──────────────────────────
│  소유형태: 전체 | 법인 | 렌트 | 리스
│  상태: 전체 | 운행중 | 정비중 | 처분
│
├─ 차량 목록 테이블 (12열 그리드) ──
│  차량번호 | 차종/모델 | 소유형태 | 운전자 | 주행거리 | 상태
│  └─ 소유형태: 법인(보라), 렌트(파랑), 리스(초록) 배지
│  └─ 상태: 운행중(초록), 정비중(노랑), 처분(빨강) 배지
│
├─ 등록/수정 모달 ───────────────────
│  차량번호, 모델명, 차종, 소유형태
│  연식, 주 운전자, 상태, 메모
│  ─────────────────────────
│  [법인일 때] 취득일자, 취득가액
│  [렌트/리스일 때] 계약일, 렌트사, 계약기간,
│    약정주행, 차량가액, 잔존가치, 보증금,
│    월렌트료, 부가세, 보험사
│  ─────────────────────────
│  [삭제] [취소] [등록/저장]
│
└─ 비어있을 때: "등록된 차량이 없습니다" 안내

데이터 흐름

CorporateVehicle (1) ← (N) VehicleLog (총 주행거리 합산)
                     ← (N) VehicleMaintenance (주행거리 갱신)

주행거리 계산 방식

총 주행거리 = CorporateVehicle.mileage (정비 시 갱신 기준값)
            + SUM(vehicle_logs.distance_km) (운행일지 거리 합계)

HTMX 호환성

  • React 기반 페이지이므로 HX-Redirect 필요
  • @push('scripts') 블록에 React/Babel 스크립트 포함