/*
 *========================================================================
 *
 *   시스템명 : 요금징수 시스템
 *   파 일 명 :
 *   작 성 자 : 오효섭 (catacath@neighbor21.co.kr)
 *   작 성 일 : 2012.09.17
 *   수 정 일 :
 *   설    명 :
 *
 *========================================================================
*/

#define _MAIN_TABLE_

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <time.h>
#include <sys/time.h>

#include "mmi_handler.h"
#include "dir_path.h"
#include "file_no.h"
#include "ipc_def.h"
#include "ctrl_job.h"
#include "file_lb.h"  /* 공통 Library Prototypes */
#include "io_msg_def.h"
#include "func_list.h"
#include "lb_func_list.h"

int fw_table_rvs(char *plz_id, char *grp_id, char *rvs_code, int gdiv)
{
    int   i;
    int   result;
    struct chg_struc cs;
    time_t ctime;
    struct tm *struc_tm;

    proc_log("-------개정코드[%s]-------\n", rvs_code);
    proc_log( "차로개정 처리중");
    rvs_code[0] = 0x30;    /* 기초파일 파일은 시간때문에 뒤에서 처리 */

    for(i = 0; i < 20; i++)
    {
        if(rvs_code[i] == 0x30) continue;

        memset(&cs, 0, sizeof(struct chg_struc));
        memcpy(cs.plz_id, plz_id, 6);
        memcpy(cs.grp_id, grp_id, 6);
        cs.gdiv = gdiv;
        cs.file_id = tbl_rvs_file_job2[i].FileNo;
        ctime = time(0);
        struc_tm = local_time(&ctime);
        sprintf(cs.file_year, "%04d", struc_tm->tm_year + 1900);
        sprintf(cs.file_mon,  "%02d", struc_tm->tm_mon+1);
        sprintf(cs.file_day,  "%02d", struc_tm->tm_mday);
        proc_log("[%.6s] 영업소 파일개정 %d = [%s]\n", plz_id, i, tbl_rvs_file_job2[i].TblId);
proc_log("fw_table_rvs [%d]\n", i);
        if(i == 3 || i == 5)
        {
            proc_log("====전자카드 B/L 개정지시 [%d]", i);
            result = lb_tbl2file_bl(&cs);
        }
        else
        {
            proc_log("====개정지시 [%d]", i);
            result = lb_tbl2file(&cs);
        }
        proc_log( "[%.6s] 영업소 파일생성결과 [%d]\n", plz_id, result);
    }

    /* 개정번호 갱신을 위해서 각 영업소 기초정보 파일 갱신 */
    memset(&cs, 0, sizeof(struct chg_struc));
    memcpy(cs.plz_id, plz_id, 6);
    memcpy(cs.grp_id, grp_id, 6);
    cs.gdiv = gdiv;
    cs.file_id = tbl_rvs_file_job2[0].FileNo;
    ctime = time(0);
    struc_tm = local_time(&ctime);
    sprintf(cs.file_year, "%04d", struc_tm->tm_year + 1900);
    sprintf(cs.file_mon,  "%02d", struc_tm->tm_mon+1);
    sprintf(cs.file_day,  "%02d", struc_tm->tm_mday);
    proc_log("[%.6s] 영업소 기초파일개정 %d = [%s]\n", plz_id, i, tbl_rvs_file_job2[0].TblId);
    result = lb_tbl2file(&cs);
    proc_log( "[%.6s] 영업소 기초파일생성결과 [%d]\n", plz_id, result);

    return result;
}

/*- 테이블 개정 지령 -*/
int  cmd_table_rvs(PACKET_RQ *rq, char *msg)
{
    int   result;
    char  plz_id[6+1]; memset(plz_id, 0x0, sizeof(plz_id));
    char  grp_id[6+1]; memset(grp_id, 0x0, sizeof(grp_id));
    char  data[50+1];  memset(data, 0x0, sizeof(data));
    time_t ctime;

    struct tm *ptm;
    struct write_info wi;

    result = 0;

    memcpy(plz_id, rq->plz_id, 6);
    memcpy(grp_id, rq->grp_id, 6);
    memcpy(data,   rq->data, 50);

    switch(rq->work)
    {
        case 100: //개정지령(GROUP)
            result = fw_table_rvs(grp_id, plz_id, data, 0);
            break;
        case 110: //개정지령(PLAZA)
            result = fw_table_rvs(grp_id, plz_id, data, 1);
            break;
    }

    if (result == 1)
    {
        proc_log("%.6s 파일[%04d] 생성 오류", plz_id, rq->work);
        return 5013;
    }

    proc_log("%.6s 파일[%04d] 생성했습니다.", plz_id, rq->work);

    return(0);
}
