get_point_sum 함수 내용
본문
// 유효기간이 있을 때 기간이 지난 포인트 expired 체크
$sql = " update {$g5['point_table']}
set po_expired = '1'
where mb_id = '$mb_id'
and po_expired <> '1'
and po_expire_date <> '9999-12-31'
and po_expire_date < '".G5_TIME_YMD."' ";
sql_query($sql);
이 코드가 실행되는 때가 언제인가요?
이코드가 실행되기전 위에서 po_exipired 를 1로 바꿔주니까...
po_exipired가 1이 아닐 때가 있을까요?
!-->답변 4
위코드의 윗부분 코드는 insert 구문이므로 신규 포인트를 입력하는것이고
현재 표시한 코드는 기존 포인트중에서 유효기간이 만료된 포인트를 1로 변경해주는것입니다.
1. 만료된 포인트를 합산혀야 신규 마이너스 포인트로 처리
2. 1에서 만료된 포인트들을 실제 만료처리
and po_expired <> '1'
po_expired 값이 1이된건 수정하지 않으므로 1번에서 추가한건 영향을 받지 않습니다.
$expire_point = get_expire_point($mb_id);
=> and po_expired = '0'
=> po_expired 값이 0인걸 합산해서 if 아래구문 실행
=> 만료된 값에 po_expired 를 1로 변경해주지 않는다면 get_point_sum 함수를 실행할때마다
=> 0인값을 누적으로 하므로 만료된 값들이 계속 중복으로 마이너스 처리됨
=> 만료되어 마이너스 처리한 포인트는 po_expired 값을 1로 처리하여 다음번에는 제외할려고 업데이트를 하는 것입니다.
만료되는 포인트를 총 포인트에서 마이너스 처리하고 insert 할 때 po_expired 를 1로 추가했으니까 반복해서 마이너스가 안되는거 아닌가요? ㅜㅜ
=> 만료된 포인트 합산을 해서 신규 기록하지만 만료된 포인트 내역들은 그대로 있음
=> 만료됨 포인트를 1로 업데이트 해주지 않으면 다음번 만료계산시에도 계속 합산되서 마이너스됨
예)
10 <= 만료
20 <= 만료
=> 30포인트를 만료후 마이너스 입력
=> 1로 업데이트 해주지 않으면 10, 20은 계속 만료포인트임
=> 이후 30포인트가 만료됨
만료처리를 하지 않은경우 (0인 값을 합산함)
10 <= 만료 (po_expired : 0)
20 <= 만료 (po_expired : 0)
30 <= 만료 (po_expired : 0)
=> 60포인트가 만료 처리됨
=> 이미 30포인트가 마이너스 되었으나 다시 30포인트가 추가로 마이너스됨
만료처리를 한경우 (0인 값을 합산하므로 1은 제외)
10 <= 제외 (po_expired : 1)
20 <= 제외 (po_expired : 1)
30 <= 만료 (po_expired : 0)
=> 10, 20은 만료처리하였으므로 30포인트만 만료 처리됨