/* @tier easy @module rc @transform reconciliation-util */
/*
 * rc_cu_0001.c - 대사 공통 유틸리티 (plain C)  [tier=easy]
 */
#include "rc_cu_0001.h"

#include <string.h>

/* 수수료: 소수 2자리 스케일로 확대 후 요율 적용, 원 단위 복귀 */
long rc_cu_0001_fee(long amount, int rate_bp)
{
    long scaled, fee;
    if (amount <= 0 || rate_bp < 0)
        return 0;
    scaled = amount * 100L;
    fee = scaled * (long)rate_bp / 10000L;
    return fee / 100L;
}

/* 단위가 2의 거듭제곱이면 비트마스크 정렬, 아니면 일반 절사 */
long rc_cu_0001_round_unit(long amount, long unit)
{
    if (unit <= 0)
        return amount;
    if ((unit & (unit - 1)) == 0)
        return amount & ~(unit - 1);
    return (amount / unit) * unit;
}

/* 분류: 금액 구간 비트맵 플래그(bit0=만,bit1=십만,bit2=백만) */
int rc_cu_0001_classify(long amount)
{
    int f = 0;
    if (amount >= 10000L)   f |= 1;
    if (amount >= 100000L)  f |= 2;
    if (amount >= 1000000L) f |= 4;
    return f;
}
