set_material_cost_data (자재 비용 데이터 저장)
특정 날짜의 자재 비용 데이터를 저장합니다. 기존 데이터가 있으면 덮어씁니다.
기본 정보
| 항목 |
값 |
| URL |
https://asia-northeast3-construction24-test.cloudfunctions.net/set_material_cost_data |
| Method |
POST |
| 인증 |
Firebase ID Token 필요 |
| 권한 |
해당 회사의 멤버 |
요청
Body
| 필드 |
타입 |
필수 |
설명 |
검증 |
| token |
string |
O |
Firebase ID Token |
- |
| company_id |
string |
O |
회사 ID |
- |
| site_id |
string |
O |
현장 ID |
- |
| supplier_id |
string |
O |
공급자 ID |
- |
| date |
string |
O |
날짜 |
YYYY-MM-DD 형식 |
| data |
array |
O |
자재 비용 항목 배열 |
각 항목 검증 필요 |
data 배열 요소 형식
| 필드 |
타입 |
설명 |
검증 |
| quantity |
number |
수량 |
숫자로 변환 가능해야 함 |
| unit_price |
number |
단가 |
숫자로 변환 가능해야 함 |
| supply_amount |
number |
공급가액 |
숫자로 변환 가능해야 함 |
| tax |
number |
세액 |
숫자로 변환 가능해야 함 |
| total |
number |
합계 |
수량*단가 == 합계, 공급가액+세액 == 합계 |
요청 예시
{
"token": "eyJhbGci...",
"company_id": "abc123",
"site_id": "site456",
"supplier_id": "supplier789",
"date": "2024-03-15",
"data": [
{
"quantity": 100,
"unit_price": 10000,
"supply_amount": 909091,
"tax": 90909,
"total": 1000000
},
{
"quantity": 50,
"unit_price": 20000,
"supply_amount": 909091,
"tax": 90909,
"total": 1000000
}
]
}
응답
성공 (200)
{
"message": "자재 비용 데이터 저장 완료",
"date": "2024-03-15",
"date_doc_id": "20240315"
}
실패
| 코드 |
message |
원인 |
| 400 |
"data는 배열이어야 합니다." |
data가 배열이 아닌 경우 |
| 400 |
"{n}번째 항목 숫자 변환 오류: ..." |
숫자 필드 변환 실패 |
| 400 |
"{n}번째 항목 검증 실패: 공급가액+세액(...) != 합계(...)" |
공급가액+세액 != 합계인 경우 |
| 400 |
"{n}번째 항목 검증 실패: 수량*단가(...) != 합계(...)" |
수량*단가 != 합계인 경우 |
| 500 |
"date는 YYYY-MM-DD 형식이어야 합니다." |
날짜 형식 오류 |
| 500 |
"해당 회사의 멤버가 아닙니다." |
요청자가 해당 회사의 멤버가 아닌 경우 |
| 500 |
"존재하지 않는 공급자입니다." |
해당 공급자가 존재하지 않는 경우 |
참고
- 동일 날짜에 데이터가 이미 존재하면 덮어씁니다.
- 저장 시 total_sum(합계의 총합)과 tax_sum(세액의 총합)이 자동 계산됩니다.
- 저장 후 Firestore 트리거에 의해 공급자의 total_cost, total_tax, year_costs, year_tax, month_costs, month_tax가 자동 업데이트됩니다.
- 관련 API: [[add_material_supplier]], [[material_document_extraction]]