feat: 매출/매입 관리 API 구현
- 매출(Sale) 및 매입(Purchase) CRUD API 구현
- 문서번호 자동 생성 (SL/PU + YYYYMMDD + 시퀀스)
- 상태 관리 (draft → confirmed → invoiced)
- 확정(confirm) 및 요약(summary) 기능 추가
- BelongsToTenant, SoftDeletes 적용
- Swagger API 문서 작성 완료
추가된 파일:
- 마이그레이션: sales, purchases 테이블
- 모델: Sale, Purchase
- 서비스: SaleService, PurchaseService
- 컨트롤러: SaleController, PurchaseController
- FormRequest: Store/Update 4개
- Swagger: SaleApi.php, PurchaseApi.php
API 엔드포인트 (14개):
- GET/POST /v1/sales, /v1/purchases
- GET/PUT/DELETE /v1/{sales,purchases}/{id}
- POST /v1/{sales,purchases}/{id}/confirm
- GET /v1/{sales,purchases}/summary
This commit is contained in:
@@ -1,5 +1,102 @@
|
||||
# SAM API 작업 현황
|
||||
|
||||
## 2025-12-17 (화) - 매출/매입 관리 API 개발
|
||||
|
||||
### 작업 목표
|
||||
- `docs/plans/erp-api-development-plan.md` Phase 1의 2.5 매출/매입 관리
|
||||
- 매출(Sale) 및 매입(Purchase) CRUD API 구현
|
||||
- 확정(confirm) 기능 및 요약(summary) 조회 기능 포함
|
||||
|
||||
### 생성된 마이그레이션 (2개)
|
||||
|
||||
| 파일명 | 설명 |
|
||||
|--------|------|
|
||||
| `2025_12_17_100001_create_sales_table.php` | 매출 테이블 (sale_number, sale_date, client_id, 금액, 상태) |
|
||||
| `2025_12_17_100002_create_purchases_table.php` | 매입 테이블 (purchase_number, purchase_date, client_id, 금액, 상태) |
|
||||
|
||||
### 생성된 모델 (2개)
|
||||
|
||||
**app/Models/Tenants/Sale.php:**
|
||||
- 매출 모델 (BelongsToTenant, SoftDeletes)
|
||||
- 상태: draft → confirmed → invoiced
|
||||
- Relations: client(), deposit(), creator()
|
||||
- Methods: canConfirm(), canEdit(), canDelete()
|
||||
|
||||
**app/Models/Tenants/Purchase.php:**
|
||||
- 매입 모델 (BelongsToTenant, SoftDeletes)
|
||||
- 상태: draft → confirmed
|
||||
- Relations: client(), withdrawal(), creator()
|
||||
- Methods: canConfirm(), canEdit(), canDelete()
|
||||
|
||||
### 생성된 서비스 (2개)
|
||||
|
||||
**app/Services/SaleService.php:**
|
||||
- CRUD, confirm(), summary()
|
||||
- 문서번호 자동 생성: SL{YYYYMMDD}{0001}
|
||||
- 상태 검증 (수정/삭제는 draft만 가능)
|
||||
|
||||
**app/Services/PurchaseService.php:**
|
||||
- CRUD, confirm(), summary()
|
||||
- 문서번호 자동 생성: PU{YYYYMMDD}{0001}
|
||||
- 상태 검증 (수정/삭제는 draft만 가능)
|
||||
|
||||
### 생성된 FormRequest (4개)
|
||||
|
||||
| 파일 | 설명 |
|
||||
|------|------|
|
||||
| `app/Http/Requests/V1/Sale/StoreSaleRequest.php` | 매출 등록 검증 |
|
||||
| `app/Http/Requests/V1/Sale/UpdateSaleRequest.php` | 매출 수정 검증 |
|
||||
| `app/Http/Requests/V1/Purchase/StorePurchaseRequest.php` | 매입 등록 검증 |
|
||||
| `app/Http/Requests/V1/Purchase/UpdatePurchaseRequest.php` | 매입 수정 검증 |
|
||||
|
||||
### 생성된 컨트롤러 (2개)
|
||||
|
||||
| 파일 | 엔드포인트 |
|
||||
|------|-----------|
|
||||
| `SaleController.php` | index, store, show, update, destroy, confirm, summary |
|
||||
| `PurchaseController.php` | index, store, show, update, destroy, confirm, summary |
|
||||
|
||||
### 수정된 파일
|
||||
|
||||
**routes/api.php:**
|
||||
- Sales 라우트 그룹 추가 (7개 라우트)
|
||||
- Purchases 라우트 그룹 추가 (7개 라우트)
|
||||
|
||||
### 생성된 Swagger 문서 (2개)
|
||||
|
||||
| 파일 | 설명 |
|
||||
|------|------|
|
||||
| `app/Swagger/v1/SaleApi.php` | 매출 API 문서 (전체 엔드포인트) |
|
||||
| `app/Swagger/v1/PurchaseApi.php` | 매입 API 문서 (전체 엔드포인트) |
|
||||
|
||||
### API 엔드포인트
|
||||
|
||||
**매출 API (Sales):**
|
||||
- `GET /api/v1/sales` - 목록 조회
|
||||
- `POST /api/v1/sales` - 등록
|
||||
- `GET /api/v1/sales/{id}` - 상세 조회
|
||||
- `PUT /api/v1/sales/{id}` - 수정
|
||||
- `DELETE /api/v1/sales/{id}` - 삭제
|
||||
- `POST /api/v1/sales/{id}/confirm` - 확정
|
||||
- `GET /api/v1/sales/summary` - 요약
|
||||
|
||||
**매입 API (Purchases):**
|
||||
- `GET /api/v1/purchases` - 목록 조회
|
||||
- `POST /api/v1/purchases` - 등록
|
||||
- `GET /api/v1/purchases/{id}` - 상세 조회
|
||||
- `PUT /api/v1/purchases/{id}` - 수정
|
||||
- `DELETE /api/v1/purchases/{id}` - 삭제
|
||||
- `POST /api/v1/purchases/{id}/confirm` - 확정
|
||||
- `GET /api/v1/purchases/summary` - 요약
|
||||
|
||||
### 검증 완료
|
||||
- ✅ Pint 스타일 검사 통과
|
||||
- ✅ 라우트 등록 확인 (14개)
|
||||
- ✅ 마이그레이션 실행 성공
|
||||
- ✅ Swagger 문서 생성 완료
|
||||
|
||||
---
|
||||
|
||||
## 2025-12-13 (금) - Items 테이블 통합 마이그레이션 작성
|
||||
|
||||
### 작업 목표
|
||||
|
||||
Reference in New Issue
Block a user