/*
 * MM_VALIDATE.pgc - mm 모듈 서비스 MM_VALIDATE (one service = one file).
 * 기능: 가맹점 마스터 정합성 검사 (존재+수수료율 존재).
 * 기존 인라인 mm_svr.pgc에서 분리; caller의 XA 브랜치에서 실행(EXEC SQL CONNECT 없음).
 * mm_svr가 tpsvrinit에서 이 서비스를 tpadvertise 한다.
 */
#include "MM_VALIDATE.h"

void MM_VALIDATE(TPSVCINFO *p)
{
    UBFH *b = (UBFH *)p->data;
    char merch[64];
    long rc = 0;
    EXEC SQL BEGIN DECLARE SECTION;
    long h_mcnt, h_fcnt;
    char h_merch[64];
    EXEC SQL END DECLARE SECTION;
    gets_(b, T_MERCHANT, merch, sizeof(merch));
    strncpy(h_merch, merch, sizeof(h_merch)-1); h_merch[sizeof(h_merch)-1] = 0;
    EXEC SQL SELECT count(*) INTO :h_mcnt FROM mm_merchant_ext
        WHERE merchant_id = :h_merch AND status = 'ACTIVE';
    if (sqlca.sqlcode < 0) FAIL(b);
    EXEC SQL SELECT count(*) INTO :h_fcnt FROM mm_fee_rate WHERE merchant_id = :h_merch;
    if (sqlca.sqlcode < 0) FAIL(b);
    if (h_mcnt == 0) rc = 1;              /* 마스터 없음/비활성 */
    else if (h_fcnt == 0) rc = 2;         /* 수수료율 미설정 */
    setl(b, T_RC, rc);
    OK(b);
}
