/*
 * PAY_RELEASE.pgc - py 모듈 서비스 PAY_RELEASE (one service = one file).
 * 보류 해제: 직전 상태를 조회하여 보류(H)가 아니면 무효 처리, 보류면 dbio 로
 * 요청(R) 전이하고 이전 상태를 T_STR1 로 함께 회신. SELECT + guard + dbio.
 * Runs on the caller's XA branch (no EXEC SQL CONNECT). Advertised by py_svr.
 */
#include "PAY_RELEASE.h"

void PAY_RELEASE(TPSVCINFO *p)
{
    UBFH *b = (UBFH *)p->data;
    char prev[4];
    EXEC SQL BEGIN DECLARE SECTION;
    long h_pay;
    char h_prev[8];
    EXEC SQL END DECLARE SECTION;

    h_pay = getl(b, T_ID1);
    EXEC SQL SELECT status INTO :h_prev FROM py_payout WHERE payout_id = :h_pay;
    if (sqlca.sqlcode < 0 || sqlca.sqlcode == 100) FAIL(b);
    prev[0] = h_prev[0]; prev[1] = 0;
    if (prev[0] != 'H') { Bchg(b, T_STATUS, 0, prev, 0L); setl(b, T_RC, 1); OK(b); }
    if (pydb_update_status(h_pay, "R") < 0) FAIL(b);
    Bchg(b, T_STR1, 0, prev, 0L);
    Bchg(b, T_STATUS, 0, "R", 0L);
    setl(b, T_RC, 0);
    OK(b);
}
