첫 행 잔액 지정 (기초 잔액 보정)
원장 첫 행의 balance_after 를 정해 원장 도입 이전 이월분을 바로잡습니다.
첫 행 잔액 지정
원장 첫 행의 balanceAfter 를 지정한 값으로 두고, 그 기준으로 전체를 다시 굴립니다.
왜 필요한가
원장은 나중에 도입됐습니다. 그 이전의 충전·차감은 행이 없고 결과만 기업 잔액에 남아 있습니다. 이 "원장에 행으로 없는 돈"이 이월분입니다.
이월분은 저장된 값이 아닙니다. 첫 행에서 매번 거꾸로 계산해 씁니다.
이월분 = 첫 행.balanceAfter - 첫 행.amount| 행 | 타입 | amount | balanceAfter |
|---|---|---|---|
| 1 | CREDIT_ADD | +50,000 | 150,000 |
| 2 | CAMPAIGN_DEPOSIT | -30,000 | 120,000 |
| 3 | CREDIT_ADD | +20,000 | 140,000 |
150,000 - 50,000 = 100,000 이 이월분입니다. 그래서 이월분을 바로잡는 손잡이가
첫 행의 balanceAfter 하나뿐입니다.
중간 행의 balanceAfter 는 지정할 수 없습니다. 앞 행에서 계산돼 나오는 값이라
손으로 정할 대상이 아닙니다. 중간 행을 고치려면 금액 자체를
수정하세요.
HTTP 요청
PUT /ai/admin/finance/ledger/business/{businessAccountId}/first-row-balance?apply=false
Authorization: Bearer {access_token}
Content-Type: application/json{ "balanceAfter": 150000 }| 파라미터 | 위치 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|---|
businessAccountId | path | Long | 예 | — | 기업 계정 id |
balanceAfter | body | Integer | 예 | — | 첫 행의 balanceAfter 로 둘 값. 음수 가능 |
apply | query | boolean | 아니오 | false | true 여야 실제로 저장 |
adminId | query | String | 아니오 | — | 처리자 ID |
apply 를 빠뜨리면 아무것도 저장되지 않습니다. 화면에서는 "값 입력 → 미리보기 →
결과 확인 → 적용" 순으로 붙여주세요.
동작
첫 행은 occurredAt 이 가장 이른 행이고, 같은 시각이면 id 가 작은 쪽입니다. 소프트
삭제된 행은 첫 행 판정에서 빠집니다.
지정한 값으로 이월분을 다시 정한 뒤 첫 행부터 끝까지 다시 굴립니다. 응답 형태는
원장 전체 재계산과 동일하며, openingBalance 로
새로 정해진 이월분을, openingOverridden: true 로 덮어썼음을 알려줍니다.
위 표에서 balanceAfter: 150000 이면 이월분이 100,000, balanceAfter: 50000 이면
이월분이 0 이 됩니다.
응답 (200 OK)
{
"status": 200,
"code": null,
"message": "첫 행 잔액 반영 미리보기",
"data": {
"businessAccountId": 418,
"openingBalance": 100000,
"firstTxId": 451,
"openingOverridden": true,
"applied": false,
"scannedCount": 168,
"mismatchedCount": 12,
"remainCreditBefore": 140000,
"remainCreditAfter": 240000,
"skippedEmptyLedger": false,
"diffs": [],
"diffsTruncated": 0
}
}필드 설명은 원장 전체 재계산 문서와 같습니다.
에러
| 상태 코드 | 설명 |
|---|---|
400 | 원장에 행이 없어 첫 행을 정할 수 없음 |
404 | 기업을 찾을 수 없음 |
현재 첫 행보다 더 오래된 행을 새로 넣으면 첫 행이 바뀝니다. 그러면 이월분도 새 첫 행
기준으로 다시 역산되므로 값이 달라집니다. 응답의 firstTxId 로 첫 행이 무엇인지 확인하세요.