도저히 답을 찾지 못해 도움을 청합니다.
Van사에서 가상계좌에 입금된 내용을 받아 DB에 저장 시키는 소스인데 현재 7.3에서 원활히 동작되고 있는 소스입니다.
그런데, R1.4로 옮긴 후 데이터가 저장이 되질 않습니다.ㅜㅜ
이것 때문에 4일째 헤매고 있는데 원인을 찾질 못하고 있습니다.
아래(빨간색) 함수에 오류나 나는 것 같은데 정확히 문제를 해결하지 못하고 있습니다.
제발 좀 도와 주세요ㅜㅜ
아래처럼 실행시 메세지가 나타납니다.
----------------실행 메세지
Connect to DB .... OK!
no_account[40600000097022]
nm_bank[기업은행 ]
nm_receipt[가나다 ]
SELECT CD_VENDOR, NM_NICK, CD_CONTACT, NO_VT_ACC FROM VENDOR_SETUP WHERE NO_VT_ACC='40600000097022'
o_cd_vendor=[(null)]
o_nm_vendor=[(null)]
o_cd_staff=[(null)]
데아타 저장/중복체크
SELECT COUNT(*) FROM RECEIPT_MASTER WHERE NO_MESSAGE='0002000050'
가입금 채번시작
저장실패/데이터중복
----------------------- 소스
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include "cas_cci.h"
char *buffer;
char strbuf[50];
char *cd_vendor;
char *nm_vendor;
char *st_mobile;
char *nm_staff;
char *cd_staff;
char *ct_mobile;
char *nm_contact;
char *am_remain;
char *no_serial;
char *receiptno;
char *dy_receipt;
char *dy_current;
int con = 0,res=0;
int req = 0, ind, i, col_count;
int recnt=0;
int ctcnt = 0;
T_CCI_ERROR error;
T_CCI_SQLX_CMD cmd_type;
T_CCI_COL_INFO *res_col_info;
int db_proc(char *);
int sms_send(char *, char *, char *, char *, char *, char *, char *);
int insert_receipt2(char *, int);
int insert_receipt3(char *);
int select_receiptno();
int select_ctcnt(char *);
void select_staff(char *);
long select_initMisu(char *);
long select_trMisu(char *, char *);
char *strmcpy(char *,int,int);
void select_vendor(char *);
void select_contact(char *);
int select_resend(char *);
void delchar(char*, const char*);
char *commify(double, char *, int);
int db_main(char buff[1000])
//int main()
{
char *cas_ip = "localhost";
int cas_port = 33000;
char *dbname = "aaaa";
con = cci_connect(cas_ip, cas_port, dbname, "dba", "aaaa");
if( con < 0 ) {
//err_rtn();
return 1;
}
else
printf("Connect to DB .... OK! n");
switch(buff[71]){
case '1' : /* 입금취소 */
if (db_proc(buff)==0)
{
printf("저장성공n");
res = cci_disconnect(con, &error);
return 0;
}
else
{
printf("저장실패/데이타중복n");
res = cci_disconnect(con, &error);
return 3;
}
case '2' : /* 정산집계 */
res = cci_disconnect(con, &error);
return 4;
case '4' : /* 수취조회 */
res = cci_disconnect(con, &error);
return 5;
default:
res = cci_disconnect(con, &error);
break;
}
res = cci_disconnect(con, &error);
printf(" DisConnect to DB [ eBlind ] .... OK! n");
if( res < 0 ) {
//err_rtn();
return 2;
}
else
printf(" Disconnect DB [ eBlind ] .... OK! n");
return 0;
}
int db_proc(char *buff)
{
/*
char *no_msg=strmcpy(buff,34,10);
if (select_resend(no_msg)>0)
return 9;
*/
switch(buff[68])
{
case '2' : /* 입금 */
return insert_receipt2(buff,2);
case '4' : /* 취소 */
return insert_receipt2(buff,3);
}
return 0;
}
void select_staff(char *cd_Staff)
{
char query[500];
sprintf(query,"SELECT NM_STAFF, nvl(NO_MOBILE,'') as MOBILE FROM STAFF_MASTER WHERE CD_STAFF='%s'",cd_Staff);
if ((req=cci_prepare(con, query,0,&error))<0)
return;
printf(query);
printf("n");
res_col_info = cci_get_result_info(req, &cmd_type, &col_count);
if (!res_col_info)
return;
if ((res=cci_execute(req, 0, 0, &error))<0)
return;
if ((res=cci_fetch_size(req, 100))<0)
return;
res = cci_cursor(req, 0, CCI_CURSOR_CURRENT, &error);
if (res<0)
return;
if ((res=cci_fetch(req, &error))<0)
return;
if ((res=cci_get_data(req, 1, CCI_A_TYPE_STR, &nm_staff, &ind))<0)
return;
if ((res=cci_get_data(req, 2, CCI_A_TYPE_STR, &st_mobile, &ind))<0)
return;
if ((res=cci_close_req_handle(req))<0)
return;
//return st_mobile;
}
void select_vendor(char *no_account)
{
char query[500];
sprintf(query,"SELECT CD_VENDOR, NM_NICK, CD_CONTACT, NO_VT_ACC FROM VENDOR_SETUP WHERE NO_VT_ACC='%s'",no_account);
printf(query);
printf("n");
if ((req=cci_prepare(con, query,0,&error))<0)
return;
res_col_info = cci_get_result_info(req, &cmd_type, &col_count);
if (!res_col_info)
return;
if ((res=cci_execute(req, 0, 0, &error))<0)
return;
if ((res=cci_fetch_size(req, 100))<0)
return;
res = cci_cursor(req, 0, CCI_CURSOR_CURRENT, &error);
if (res<0)
return;
if ((res=cci_fetch(req, &error))<0)
return;
if ((res=cci_get_data(req, 1, CCI_A_TYPE_STR, &cd_vendor, &ind))<0)
return;
if ((res=cci_get_data(req, 2, CCI_A_TYPE_STR, &nm_vendor, &ind))<0)
return;
if ((res=cci_get_data(req, 3, CCI_A_TYPE_STR, &cd_staff, &ind))<0)
return;
if ((res=cci_close_req_handle(req))<0)
return;
printf("cdVendor=%sn",cd_vendor);
printf("nmVendor=%sn",nm_vendor);
printf("cdstaff=%sn",cd_staff);
}
int select_ctcnt(char *cd_Vendor)
{
char query[500];
sprintf(query,"SELECT COUNT(*) FROM VENDOR_CONTACT WHERE SUBSTR(CD_CONTACT,1,6)='%s'",cd_Vendor);
if ((req=cci_prepare(con, query,0,&error))<0)
return 1;
printf(query);
printf("n");
res_col_info = cci_get_result_info(req, &cmd_type, &col_count);
if (!res_col_info)
return 1;
if ((res=cci_execute(req, 0, 0, &error))<0)
return 1;
if ((res=cci_fetch_size(req, 100))<0)
return 1;
res = cci_cursor(req, 0, CCI_CURSOR_CURRENT, &error);
if (res<0)
return 1;
if ((res=cci_fetch(req, &error))<0)
return 1;
if ((res=cci_get_data(req, 1, CCI_A_TYPE_INT, &ctcnt, &ind))<0)
return 1;
if ((res=cci_close_req_handle(req))<0)
return 1;
return 0;
}
void select_contact(char *cd_Vendor)
{
char query[500];
sprintf(query,"SELECT NM_CONTACT, nvl(NO_MOBILE,'') as MOBILE FROM VENDOR_CONTACT WHERE SUBSTR(CD_CONTACT,1,6)='%s'",cd_Vendor);
if ((req=cci_prepare(con, query,0,&error))<0)
return;
res_col_info = cci_get_result_info(req, &cmd_type, &col_count);
if (!res_col_info)
return;
if ((res=cci_execute(req, 0, 0, &error))<0)
return;
if ((res=cci_fetch_size(req, 100))<0)
return;
res = cci_cursor(req, 0, CCI_CURSOR_CURRENT, &error);
if (res<0)
return;
if ((res=cci_fetch(req, &error))<0)
return;
if ((res=cci_get_data(req, 1, CCI_A_TYPE_STR, &nm_contact, &ind))<0)
return;
if ((res=cci_get_data(req, 2, CCI_A_TYPE_STR, &ct_mobile, &ind))<0)
return;
if ((res=cci_close_req_handle(req))<0)
return;
}
long select_initMisu(char *cd_vendor)
{
char query[500];
long initamt;
initamt=0;
sprintf(query,"SELECT nvl(AM_INITIAL,0) FROM VENDOR_SETUP WHERE CD_VENDOR='%s'",cd_vendor);
if ((req=cci_prepare(con, query,0,&error))<0)
return 0;
res_col_info = cci_get_result_info(req, &cmd_type, &col_count);
if (!res_col_info)
return 0;
if ((res=cci_execute(req, 0, 0, &error))<0)
return 0;
if ((res=cci_fetch_size(req, 100))<0)
return 0;
res = cci_cursor(req, 0, CCI_CURSOR_CURRENT, &error);
if (res<0)
return 0;
if ((res=cci_fetch(req, &error))<0)
return 0;
if ((res=cci_get_data(req, 1, CCI_A_TYPE_INT, &initamt, &ind))<0)
return 0;
if ((res=cci_close_req_handle(req))<0)
return 0;
return initamt;
}
long select_trMisu(char *oDate, char *cd_vendor)
{
char query[5000];
long trmisu;
trmisu=0;
sprintf(query, "SELECT (SUM(A.misuAmt)-SUM(A.trInAmt)) AS misu FROM (SELECT nvl(sum(T.am_trade),0) as misuAmt, 0 AS trInAmt FROM order_master O, trade_master T WHERE O.no_order=substr(T.no_order,1,10) AND O.cd_vendor='%s' and T.dy_trade <= '%s' UNION SELECT nvl(sum(L.am_total),0) as misuAmt, 0 AS trInAmt FROM order_master O, order_list L WHERE O.no_order=L.no_order AND O.cd_vendor='%s' and O.dy_order<='%s' AND (O.fg_order='1' or O.fg_order='3') and nvl(L.fg_ordlist,'')<'4' UNION SELECT 0 AS misuAmt, (nvl(sum(R.am_receipt),0)+nvl(sum(R.am_disc),0)) as trInAmt FROM receipt_master R WHERE R.cd_vendor='%s' and R.dy_receipt <= '%s') A",cd_vendor, oDate, cd_vendor, oDate, cd_vendor, oDate);
if ((req=cci_prepare(con, query,0,&error))<0)
return 0;
res_col_info = cci_get_result_info(req, &cmd_type, &col_count);
if (!res_col_info)
return 0;
if ((res=cci_execute(req, 0, 0, &error))<0)
return 0;
if ((res=cci_fetch_size(req, 100))<0)
return 0;
res = cci_cursor(req, 0, CCI_CURSOR_CURRENT, &error);
if (res<0)
return 0;
if ((res=cci_fetch(req, &error))<0)
return 0;
if ((res=cci_get_data(req, 1, CCI_A_TYPE_INT, &trmisu, &ind))<0)
return 0;
if ((res=cci_close_req_handle(req))<0)
return 0;
return trmisu;
}
int select_receiptno()
{
if ((req=cci_prepare(con, "SELECT TO_CHAR(sysdate,'yyMMdd') || LPAD(TO_CHAR(NVL(MAX(TO_NUMBER(SUBSTR(NO_RECEIPT,7,4))), 0)+1),4,'0'),TO_CHAR(sysdate,'yyyy-MM-dd'),TO_CHAR(systimestamp,'yyyyMMddhh24mi') FROM RECEIPT_MASTER WHERE SUBSTR(NO_RECEIPT,1,6)=TO_CHAR(sysdate,'yyMMdd')",0,&error))<0)
return 1;
res_col_info = cci_get_result_info(req, &cmd_type, &col_count);
if (!res_col_info)
return 1;
if ((res=cci_execute(req, 0, 0, &error))<0)
return 1;
if ((res=cci_fetch_size(req, 100))<0)
return 1;
res = cci_cursor(req, 0, CCI_CURSOR_CURRENT, &error);
if (res<0)
return 1;
if ((res=cci_fetch(req, &error))<0)
return 1;
if ((res=cci_get_data(req, 1, CCI_A_TYPE_STR, &receiptno, &ind))<0)
return 1;
if ((res=cci_get_data(req, 2, CCI_A_TYPE_STR, &dy_receipt, &ind))<0)
return 1;
if ((res=cci_get_data(req, 3, CCI_A_TYPE_STR, &dy_current, &ind))<0)
return 1;
if ((res=cci_close_req_handle(req))<0)
return 1;
printf(receiptno);
printf("n");
printf(dy_receipt);
printf("n");
printf(dy_current);
printf("n");
return 0;
}
int select_resend(char *no_msg)
{
char query[500];
sprintf(query,"SELECT COUNT(*) FROM RECEIPT_MASTER WHERE NO_MESSAGE='%s'",no_msg);
if ((req=cci_prepare(con, query,0,&error))<0)
return -1;
printf(query);
printf("n");
res_col_info = cci_get_result_info(req, &cmd_type, &col_count);
if (!res_col_info)
return -1;
if ((res=cci_execute(req, 0, 0, &error))<0)
return -1;
if ((res=cci_fetch_size(req, 100))<0)
return -1;
res = cci_cursor(req, 0, CCI_CURSOR_CURRENT, &error);
if (res<0)
return -1;
if ((res=cci_fetch(req, &error))<0)
return -1;
if ((res=cci_get_data(req, 1, CCI_A_TYPE_INT, &recnt, &ind))<0)
return -1;
if ((res=cci_close_req_handle(req))<0)
return -1;
return recnt;
}
int insert_receipt2(char *buff, int flag)
{
char query[500];
char vendor[50];
char sms_msg[200];
char sms_msg1[200];
char dest[40];
char o_receiptno[20];
char o_dy_receipt[20];
char o_dy_current[20];
char o_am_receipt[20];
char o_no_account[20];
char o_no_message[20];
char o_nm_bank[10];
char o_nm_receipt[20];
char o_cd_vendor[20];
char o_nm_vendor[40];
char o_cd_staff[20];
char o_nm_staff[20];
char o_st_mobile[20];
char o_ct_mobile[20];
memset(o_st_mobile,'