Files
sam-api/app/Http/Requests/V1/Purchase/StorePurchaseRequest.php
hskwon cbed92a95c 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
2025-12-17 22:14:48 +09:00

40 lines
1.5 KiB
PHP

<?php
namespace App\Http\Requests\V1\Purchase;
use Illuminate\Foundation\Http\FormRequest;
class StorePurchaseRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'purchase_date' => ['required', 'date'],
'client_id' => ['required', 'integer', 'exists:clients,id'],
'supply_amount' => ['required', 'numeric', 'min:0'],
'tax_amount' => ['required', 'numeric', 'min:0'],
'total_amount' => ['required', 'numeric', 'min:0'],
'description' => ['nullable', 'string', 'max:1000'],
'withdrawal_id' => ['nullable', 'integer', 'exists:withdrawals,id'],
];
}
public function messages(): array
{
return [
'purchase_date.required' => __('validation.required', ['attribute' => '매입일자']),
'client_id.required' => __('validation.required', ['attribute' => '거래처']),
'client_id.exists' => __('validation.exists', ['attribute' => '거래처']),
'supply_amount.required' => __('validation.required', ['attribute' => '공급가액']),
'supply_amount.numeric' => __('validation.numeric', ['attribute' => '공급가액']),
'tax_amount.required' => __('validation.required', ['attribute' => '세액']),
'total_amount.required' => __('validation.required', ['attribute' => '합계']),
];
}
}