apppack
来源:互联网 发布:爆破网络连接图 编辑:程序博客网 时间:2024/05/08 23:03
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <curses.h>#include "pbbase/pbtcpdeal.h"#include "pbsysstrlen.h"#include "pbstructdef.h"#include "pbcomm.h"#include "pbbase/pberrlog.h"#include "pbbase/pbbaseipc.h"#include "pbbase/pbmsgdeal.h"#include "pbbase/pbsem.h"#include "pbbase/pbshm.h"#include "pbsys/pbconstval.h"#include "pbbase/pbfuncroute.h"EXEC SQL INCLUDE "pbappdb.h";EXEC SQL INCLUDE "pbdbfunc.h";#define ENTRY_ROW 100#define ENTRY_COL 1024EXEC SQL INCLUDE "pbbusi/busi004.h";/* * Name : Data_HostAddHead( char *hosttrancode_para ) * Action: HostAddHead * Input : _tx_code * Output: * Return: 0-succ other-false * Auther: syd * Date : 20130131 */intData_HostAddHead( char *hosttrancode_para ){ EXEC SQL BEGIN DECLARE SECTION; char tlrno[10+1]; char instno[4+1]; EXEC SQL END DECLARE SECTION; char hosttrancode[50]; char pbjourno[10+1]; char seq_no[10+1]; char tmp_str[8+1]; char ListSeqNo[10+1]; char clrdate[8+1]; char r_idx[200+1]; char tran_date_time[10+1]; char pbdate_str[8+1]; char sys_trace_num[6+1]; int i=0; long rellen=0; int relen=0; memset( hosttrancode, 0x00, sizeof(hosttrancode) ); memset( pbjourno, 0x00, sizeof(pbjourno) ); memset( seq_no, 0x00, sizeof(seq_no) ); memset( tmp_str, 0x00, sizeof(tmp_str) ); memset( ListSeqNo, 0x00, sizeof(ListSeqNo) ); memset( clrdate, 0x00, sizeof(clrdate) ); memset( r_idx, 0x00, sizeof(r_idx) ); memset(tran_date_time,0x00,sizeof(tran_date_time)); memset(sys_trace_num,0x00,sizeof(sys_trace_num)); memset(pbdate_str,0x00,sizeof(pbdate_str)); /* set data for host head */ GetPoolDataByName("PBSYS", "PbJourNo", 0, 0, pbjourno, &relen ); if(strlen(pbjourno)<=8) { for(i=0;i<8-strlen(pbjourno);i++) { tmp_str[i]='0'; } strcat(tmp_str,pbjourno); WriteLog( ERR_LVL, "tmp_str1[%s]", tmp_str ); } else { memcpy(tmp_str,pbjourno+(strlen(pbjourno)-8),8); WriteLog( ERR_LVL, "tmp_str2[%s]", tmp_str ); } sprintf(seq_no, "%s%s", "TT", tmp_str ); trim(seq_no); sprintf(ListSeqNo, "%s%s", "PB", tmp_str ); trim(ListSeqNo); WriteLog( ERR_LVL, "seq_no[%s]ListSeqNo[%s]", seq_no ,ListSeqNo ); /* add by syd 20150119 */ GetPoolDataByName("Bconnex8583","tran_date_time",0,0,tran_date_time,&relen); GetPoolDataByName("Bconnex8583","sys_trace_num",0,0,sys_trace_num,&relen); GetPoolDataByName("PBSYS", "PbDate", 0, 0, pbdate_str, &relen ); trim(tran_date_time); trim(sys_trace_num); trim(pbdate_str); WriteLog( ERR_LVL, "tran_date_time[%s]", tran_date_time ); WriteLog( ERR_LVL, "sys_trace_num[%s]", sys_trace_num ); WriteLog( ERR_LVL, "PbDate[%s]", pbdate_str ); memcpy(clrdate,pbdate_str,4); memcpy(clrdate+4,tran_date_time,4); sprintf(r_idx,"%s%s",clrdate,sys_trace_num); trim(clrdate); trim(r_idx); WriteLog( ERR_LVL, "clrdate[%s]", clrdate ); WriteLog( ERR_LVL, "r_idx[%s]", r_idx ); PutPoolDataByName( "ABSHEAD", "ClrDate", 0, 0, clrdate , 0 ); PutPoolDataByName( "ABSHEAD", "record_idx", 0, 0, r_idx , 0 ); PutPoolDataByName( "ABSHEAD", "AddElements", 0, 0, "||||||||||" , 0 ); PutPoolDataByName( "ABSHEAD", "PBDate", 0, 0, pbdate_str, 0 ); strcpy( hosttrancode, hosttrancode_para ); PutPoolDataByName( "ABSHEAD", "_tx_code", 0, 0, hosttrancode , 0 ); PutPoolDataByName( "ABSHEAD", "chnl_no", 0, 0, "4", 0 ); PutPoolDataByName( "ABSHEAD", "_tx_op_stat", 0, 0, "N", 0 ); if(memcmp(hosttrancode,"9099",4)==0) { PutPoolDataByName( "ABSHEAD", "_seq_no", 0, 0, tmp_str, 0 ); PutPoolDataByName( "ABSHEAD", "list_seqno", 0, 0, "", 0 ); } else { PutPoolDataByName( "ABSHEAD", "_seq_no", 0, 0, seq_no, 0 ); } PutPoolDataByName( "ABSHEAD", "AreaNo", 0, 0, "000000", 0 ); PutPoolDataByName( "ABSHEAD", "ChnlNo", 0, 0, "001", 0 ); PutPoolDataByName( "ABSHEAD", "BusiType", 0, 0, "001", 0 ); if(memcmp(hosttrancode,"5710",4)==0 || memcmp(hosttrancode,"5715",4)==0 || memcmp(hosttrancode,"5718",4)==0) { PutPoolDataByName( "ABSHEAD", "list_seqno", 0, 0, ListSeqNo, 0 ); } PutPoolDataByName( "ABSHEAD", "tran_flag", 0, 0, (char *)&rellen, 0 ); memset( instno, 0x00, sizeof(instno) ); memset( tlrno, 0x00, sizeof(tlrno) ); EXEC SQL select virinstno,virtlrno into :instno, :tlrno from t_pb_busi_tlr where chnlno='001' and busitype='001' and areano='000000' and terminal_no='0000000000' and terminal_type = '1' and flag='00000000000000000000'; if( SQLCODE != 0 ) { WriteLog( ERR_LVL, "select instno,tlrno err SQLCODE[%d]!", SQLCODE ); } rtrim(tlrno); WriteLog( ERR_LVL, "tlrno[%s]", tlrno ); rtrim(instno); WriteLog( ERR_LVL, "instno[%s]", instno ); if( (0>=strlen(instno)) || (0>=strlen(tlrno)) ) { WriteLog( ERR_LVL, "instno[%s] tlrno[%s] err", instno, tlrno ); return(-1); } PutPoolDataByName( "ABSHEAD", "organ_no", 0, 0, instno, 0 ); PutPoolDataByName( "ABSHEAD", "_tlr_no", 0, 0, tlrno, 0 ); return(0); } /* Fuction : Pb_ftpData * Action : PB call host ftp sever * Input : filename * Output : * Author : * Date : 2013/02/20 */intPb_ftpData(char *filename){ int ret; char file_name[500+1]; memset( file_name, 0x00, sizeof(file_name) ); //sprintf(file_name, "%s/99/9996/%s",getenv("PRINTERDIR"),filename ); sprintf(file_name, "%s/%s/%s/%s",getenv("PRINTERDIR"),getenv("INST_PATH"),getenv("INST_NO_PATH"),filename ); //ret = TransFileRecv( "FTPFILE", file_name, "9996", 0 ); ret = TransFileRecv( "FTPFILE", file_name, getenv("INST_NO_PATH"), 0 ); if( ret !=0 ) { WriteLog(ERR_LVL,"Receiving file failed!"); return PB_ERR; } return PB_OK;}/* Fuction : Host_ftpData * Action : PB call host ftp sever, put file to host * Input : filename * Output : * Author : * Date : 2013/02/20 */intHost_ftpData(char *filename){ int ret; char file_name[500+1]; memset( file_name, 0x00, sizeof(file_name) ); memcpy(file_name, filename, strlen(filename)); //ret = TransFileSend( "FTPFILE", file_name, "9996", 0 ); ret = TransFileSend( "FTPFILE", file_name, getenv("INST_NO_PATH"), 0 ); if( ret !=0 ) { WriteLog(ERR_LVL,"Sending file failed!"); return PB_ERR; } return PB_OK;}const char *get_date_time( ){ EXEC SQL BEGIN DECLARE SECTION; dtime_t process_begin; EXEC SQL END DECLARE SECTION; static char t_time[30]; char s_time[30]; char tmp_time[30]; memset( s_time, 0, sizeof(s_time) ); memset( t_time, 0, sizeof(t_time) ); memset( tmp_time, 0, sizeof(tmp_time) ); dtcurrent( &process_begin ); dttoasc( &process_begin, s_time ); memcpy(tmp_time,s_time,10); strcpy(t_time,tmp_time); memset(tmp_time, 0x00, sizeof( tmp_time)); memcpy(tmp_time,s_time+11,12); strcat(t_time, tmp_time); rtrim(t_time); WriteLog( ERR_LVL, "1111111t_time[%s]", t_time ); return(t_time);}intGet_pbjourno(char * const PbJourNo,char * const TTPbJourNo,char * const PBPbJourNo){ int rellen=0; int i; char tmp_str[8+1]; memset(tmp_str,0x00,sizeof(tmp_str)); GetPoolDataByName("PBSYS","PbJourNo",0,0,PbJourNo,&rellen); if(strlen(PbJourNo)<=8) { for(i=0;i<8-strlen(PbJourNo);i++) { tmp_str[i]='0'; } strcat(tmp_str,PbJourNo); WriteLog( ERR_LVL, "tmp_str1[%s]", tmp_str ); } else { memcpy(tmp_str,PbJourNo+(strlen(PbJourNo)-8),8); WriteLog( ERR_LVL, "tmp_str2[%s]", tmp_str ); } sprintf(TTPbJourNo, "%s%s", "TT", tmp_str ); trim(TTPbJourNo); sprintf(PBPbJourNo, "%s%s", "PB", tmp_str ); trim(PBPbJourNo); WriteLog( ERR_LVL, "PbJourNo[%s]TTPbJourNo[%s]PBPbJourNo[%s]",PbJourNo,TTPbJourNo,PBPbJourNo); return PB_OK;}/*************************************** Function :GetValue Action :从串中取对应域的值 Author :WangQiao Date :2010/03/24 Paramater input_str :输入 index :域号 output_str :输出 seq_str :分隔符***************************************/intGetValue( char * const input_str, int index, char * const output_str, char * const seq_str){ char *ptr= NULL; char *hptr = NULL; int i = 0; /*输出串初始化*/ rtrim(seq_str); ltrim(seq_str); if (index <= 0 ) { WriteLog( ERR_LVL, "域号必须为大于零的整数index[%d]!", index ); return PB_ERR; } if( strlen(seq_str) == 0 ) { WriteLog( ERR_LVL, "seq_str不能为空!"); return PB_ERR; } hptr = input_str; ptr=strstr( input_str, seq_str ); while( ptr != NULL ) { i++; if( i == index ) break; hptr = ptr+strlen(seq_str); if( *hptr == '\0' ) break; ptr = NULL; ptr = strstr( hptr, seq_str ); } if( i < index ) { WriteLog( ERR_LVL, "串中最大域号为:[%d]", i); return PB_ERR; } strncpy( output_str, hptr, ptr-hptr ); output_str[ptr-hptr] = '\0'; rtrim( output_str ); ltrim( output_str ); return PB_OK;} int get_out_currtype(char * const CurrType,char * const currtype){ memset( currtype, 0x00, sizeof(currtype) ); rtrim(CurrType); if(memcmp(CurrType,"01",2)==0) memcpy(currtype,"156",3); else if(memcmp(CurrType,"14",2)==0) memcpy(currtype,"840",3); else if(memcmp(CurrType,"41",2)==0) memcpy(currtype,"746",3); else if(memcmp(CurrType,"40",2)==0) memcpy(currtype,"418",3); else memcpy(currtype,"XXX",3); WriteLog( ERR_LVL, "currtype[%s]", currtype ); return 0;} int get_in_currtype(char * const CurrType,char * const currtype){ memset( currtype, 0x00, sizeof(currtype) ); rtrim(CurrType); if(memcmp(CurrType,"156",3)==0) memcpy(currtype,"01",2); else if(memcmp(CurrType,"840",3)==0) memcpy(currtype,"14",2); else if(memcmp(CurrType,"746",3)==0) memcpy(currtype,"41",2); else if(memcmp(CurrType,"418",3)==0) memcpy(currtype,"40",2); else memcpy(currtype,"XX",2); WriteLog( ERR_LVL, "currtype[%s]", currtype ); return 0;}/* Fuction : Pb_ReturnClient8583 * Action : Pb Return data to Client8583 * Input : * Output : * Author : * Date : 2014/11/06 */intPb_ReturnClient8583(char *ret_code){ int ret = -1; int rellen = 0; char trancode[6+1]; char tmp_str[100+1]; char PAccNum[99+1]; char ProcCode[6+1]; char tran_amt[12+1]; char tran_date_time[10+1]; char sys_trace_num[6+1]; char local_time[6+1]; char local_tran_date[4+1]; char settle_date[4+1]; char merchant_type[4+1]; char acq_ins_cou_code[3+1]; char acq_ins_id[99+1]; char track2_data[99+1]; char retr_ref_num[12+1]; char card_accp_termid[8+1]; char tran_curr_code[3+1]; char auth_num[6+1]; char add_amt[99+1]; char card_accp_name_loc[40+1]; char orig_data_ele[42+1]; memset(trancode,0x00,sizeof(trancode)); memset(tmp_str,0x00,sizeof(tmp_str)); memset(PAccNum,0x00,sizeof(PAccNum)); memset(ProcCode,0x00,sizeof(ProcCode)); memset(tran_amt,0x00,sizeof(tran_amt)); memset(tran_date_time,0x00,sizeof(tran_date_time)); memset(sys_trace_num,0x00,sizeof(sys_trace_num)); memset(local_time,0x00,sizeof(local_time)); memset(local_tran_date,0x00,sizeof(local_tran_date)); memset(settle_date,0x00,sizeof(settle_date)); memset(merchant_type,0x00,sizeof(merchant_type)); memset(acq_ins_cou_code,0x00,sizeof(acq_ins_cou_code)); memset(acq_ins_id,0x00,sizeof(acq_ins_id)); memset(track2_data,0x00,sizeof(track2_data)); memset(retr_ref_num,0x00,sizeof(retr_ref_num)); memset(card_accp_termid,0x00,sizeof(card_accp_termid)); memset(tran_curr_code,0x00,sizeof(tran_curr_code)); memset(auth_num,0x00,sizeof(auth_num)); memset(add_amt,0x00,sizeof(add_amt)); memset(card_accp_name_loc,0x00,sizeof(card_accp_name_loc)); memset(orig_data_ele,0x00,sizeof(orig_data_ele)); WriteLog(ERR_LVL,"========= Pb_ReturnClient8583 begin ========="); /* Add Public Information Returns */ GetPoolDataByName("Bconnex8583","PAccNum",0,0,PAccNum,&rellen); GetPoolDataByName("Bconnex8583","ProcCode",0,0,ProcCode,&rellen); GetPoolDataByName("Bconnex8583","tran_amt",0,0,tran_amt,&rellen); GetPoolDataByName("Bconnex8583","tran_date_time",0,0,tran_date_time,&rellen); GetPoolDataByName("Bconnex8583","sys_trace_num",0,0,sys_trace_num,&rellen); rtrim(PAccNum); rtrim(ProcCode); rtrim(tran_amt); rtrim(tran_date_time); rtrim(sys_trace_num); WriteLog(ERR_LVL,"PAccNum[%s]",PAccNum); WriteLog(ERR_LVL,"ProcCode[%s]",ProcCode); WriteLog(ERR_LVL,"tran_amt[%s]",tran_amt); WriteLog(ERR_LVL,"tran_date_time[%s]",tran_date_time); WriteLog(ERR_LVL,"sys_trace_num[%s]",sys_trace_num); PutPoolDataByName("Bconnex8583","PAccNum",0,0,PAccNum,0); PutPoolDataByName("Bconnex8583","ProcCode",0,0,ProcCode,0); PutPoolDataByName("Bconnex8583","tran_amt",0,0,tran_amt,0); PutPoolDataByName("Bconnex8583","tran_date_time",0,0,tran_date_time,0); PutPoolDataByName("Bconnex8583","sys_trace_num",0,0,sys_trace_num,0); GetPoolDataByName("PBSYS", "TranCode", 0, 0, trancode, &rellen ); rtrim(trancode); WriteLog(ERR_LVL ,"TranCode[%s]",trancode); if(memcmp(trancode,"001001",6)==0 || \ memcmp(trancode,"001009",6)==0 || \ memcmp(trancode,"001010",6)==0 || \ memcmp(trancode,"001012",6)==0) { GetPoolDataByName("Bconnex8583","local_time",0,0,local_time,&rellen); GetPoolDataByName("Bconnex8583","local_tran_date",0,0,local_tran_date,&rellen); GetPoolDataByName("Bconnex8583","settle_date",0,0,settle_date,&rellen); GetPoolDataByName("Bconnex8583","merchant_type",0,0,merchant_type,&rellen); GetPoolDataByName("Bconnex8583","acq_ins_cou_code",0,0,acq_ins_cou_code,&rellen); GetPoolDataByName("Bconnex8583","acq_ins_id",0,0,acq_ins_id,&rellen); GetPoolDataByName("Bconnex8583","track2_data",0,0,track2_data,&rellen); GetPoolDataByName("Bconnex8583","retr_ref_num",0,0,retr_ref_num,&rellen); GetPoolDataByName("Bconnex8583","card_accp_termid",0,0,card_accp_termid,&rellen); GetPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,&rellen); GetPoolDataByName("Bconnex8583","add_amt",0,0,add_amt,&rellen); GetPoolDataByName("Bconnex8583","auth_num",0,0,auth_num,&rellen); rtrim(local_time); rtrim(local_tran_date); rtrim(settle_date); rtrim(merchant_type); rtrim(acq_ins_cou_code); rtrim(acq_ins_id); rtrim(track2_data); rtrim(retr_ref_num); rtrim(card_accp_termid); rtrim(tran_curr_code); rtrim(add_amt); trim(auth_num); WriteLog(ERR_LVL,"local_time[%s]",local_time); WriteLog(ERR_LVL,"local_tran_date[%s]",local_tran_date); WriteLog(ERR_LVL,"settle_date[%s]",settle_date); WriteLog(ERR_LVL,"merchant_type[%s]",merchant_type); WriteLog(ERR_LVL,"acq_ins_cou_code[%s]",acq_ins_cou_code); WriteLog(ERR_LVL,"acq_ins_id[%s]",acq_ins_id); WriteLog(ERR_LVL,"track2_data[%s]",track2_data); WriteLog(ERR_LVL,"retr_ref_num[%s]",retr_ref_num); WriteLog(ERR_LVL,"card_accp_termid[%s]",card_accp_termid); WriteLog(ERR_LVL,"tran_curr_code[%s]",tran_curr_code); WriteLog(ERR_LVL,"add_amt[%s]",add_amt); WriteLog(ERR_LVL,"auth_num[%s]",auth_num); PutPoolDataByName("Bconnex8583","local_time",0,0,local_time,0); PutPoolDataByName("Bconnex8583","local_tran_date",0,0,local_tran_date,0); PutPoolDataByName("Bconnex8583","settle_date",0,0,settle_date,0); PutPoolDataByName("Bconnex8583","merchant_type",0,0,merchant_type,0); PutPoolDataByName("Bconnex8583","acq_ins_cou_code",0,0,acq_ins_cou_code,0); PutPoolDataByName("Bconnex8583","acq_ins_id",0,0,acq_ins_id,0); PutPoolDataByName("Bconnex8583","track2_data",0,0,track2_data,0); PutPoolDataByName("Bconnex8583","retr_ref_num",0,0,retr_ref_num,0); PutPoolDataByName("Bconnex8583","card_accp_termid",0,0,card_accp_termid,0); PutPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,0); PutPoolDataByName("Bconnex8583","MsgType",0,0,"0210",0); if(strlen(add_amt)==0) { sprintf(tmp_str,"00 %s %0*d%s",tran_curr_code,12-strlen(add_amt),0,""); rtrim(tmp_str); PutPoolDataByName("Bconnex8583","add_amt",0,0,tmp_str,0); WriteLog(ERR_LVL,"***now*** add_amt[%s]",tmp_str); } if(strlen(auth_num)==0) { ret = GetAuthNo(auth_num); if( ret != PB_OK ) { WriteLog( ERR_LVL, "GetAuthNo err!!!!" ); Pb_ReturnClient8583("06"); return PB_ERR; } rtrim(auth_num); PutPoolDataByName("Bconnex8583","auth_num",0,0,auth_num,0); WriteLog(ERR_LVL,"***now*** auth_num[%s]",auth_num); } } else if(memcmp(trancode,"001003",6)==0 || \ memcmp(trancode,"001007",6)==0 || \ memcmp(trancode,"001008",6)==0 || \ memcmp(trancode,"001011",6)==0) { GetPoolDataByName("Bconnex8583","local_time",0,0,local_time,&rellen); GetPoolDataByName("Bconnex8583","local_tran_date",0,0,local_tran_date,&rellen); GetPoolDataByName("Bconnex8583","settle_date",0,0,settle_date,&rellen); GetPoolDataByName("Bconnex8583","merchant_type",0,0,merchant_type,&rellen); GetPoolDataByName("Bconnex8583","acq_ins_id",0,0,acq_ins_id,&rellen); GetPoolDataByName("Bconnex8583","track2_data",0,0,track2_data,&rellen); GetPoolDataByName("Bconnex8583","retr_ref_num",0,0,retr_ref_num,&rellen); GetPoolDataByName("Bconnex8583","card_accp_termid",0,0,card_accp_termid,&rellen); GetPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,&rellen); GetPoolDataByName("Bconnex8583","add_amt",0,0,add_amt,&rellen); GetPoolDataByName("Bconnex8583","auth_num",0,0,auth_num,&rellen); rtrim(local_time); rtrim(local_tran_date); rtrim(settle_date); rtrim(merchant_type); rtrim(acq_ins_id); rtrim(track2_data); rtrim(retr_ref_num); rtrim(card_accp_termid); rtrim(tran_curr_code); rtrim(add_amt); trim(auth_num); WriteLog(ERR_LVL,"local_time[%s]",local_time); WriteLog(ERR_LVL,"local_tran_date[%s]",local_tran_date); WriteLog(ERR_LVL,"settle_date[%s]",settle_date); WriteLog(ERR_LVL,"merchant_type[%s]",merchant_type); WriteLog(ERR_LVL,"acq_ins_id[%s]",acq_ins_id); WriteLog(ERR_LVL,"track2_data[%s]",track2_data); WriteLog(ERR_LVL,"retr_ref_num[%s]",retr_ref_num); WriteLog(ERR_LVL,"card_accp_termid[%s]",card_accp_termid); WriteLog(ERR_LVL,"tran_curr_code[%s]",tran_curr_code); WriteLog(ERR_LVL,"add_amt[%s]",add_amt); WriteLog(ERR_LVL,"auth_num[%s]",auth_num); PutPoolDataByName("Bconnex8583","local_time",0,0,local_time,0); PutPoolDataByName("Bconnex8583","local_tran_date",0,0,local_tran_date,0); PutPoolDataByName("Bconnex8583","settle_date",0,0,settle_date,0); PutPoolDataByName("Bconnex8583","merchant_type",0,0,merchant_type,0); PutPoolDataByName("Bconnex8583","acq_ins_id",0,0,acq_ins_id,0); PutPoolDataByName("Bconnex8583","track2_data",0,0,track2_data,0); PutPoolDataByName("Bconnex8583","retr_ref_num",0,0,retr_ref_num,0); PutPoolDataByName("Bconnex8583","card_accp_termid",0,0,card_accp_termid,0); PutPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,0); PutPoolDataByName("Bconnex8583","MsgType",0,0,"0210",0); if(strlen(add_amt)==0) { sprintf(tmp_str,"00 %s %0*d%s",tran_curr_code,12-strlen(add_amt),0,""); rtrim(tmp_str); PutPoolDataByName("Bconnex8583","add_amt",0,0,tmp_str,0); WriteLog(ERR_LVL,"***now*** add_amt[%s]",tmp_str); } if(strlen(auth_num)==0) { ret = GetAuthNo(auth_num); if( ret != PB_OK ) { WriteLog( ERR_LVL, "GetAuthNo err!!!!" ); Pb_ReturnClient8583("06"); return PB_ERR; } rtrim(auth_num); PutPoolDataByName("Bconnex8583","auth_num",0,0,auth_num,0); WriteLog(ERR_LVL,"***now*** auth_num[%s]",auth_num); } } else if(memcmp(trancode,"001004",6)==0 || \ memcmp(trancode,"001013",6)==0 || \ memcmp(trancode,"001014",6)==0 || \ memcmp(trancode,"001015",6)==0) { GetPoolDataByName("Bconnex8583","acq_ins_cou_code",0,0,acq_ins_cou_code,&rellen); GetPoolDataByName("Bconnex8583","acq_ins_id",0,0,acq_ins_id,&rellen); GetPoolDataByName("Bconnex8583","track2_data",0,0,track2_data,&rellen); GetPoolDataByName("Bconnex8583","retr_ref_num",0,0,retr_ref_num,&rellen); GetPoolDataByName("Bconnex8583","card_accp_termid",0,0,card_accp_termid,&rellen); GetPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,&rellen); GetPoolDataByName("Bconnex8583","card_accp_name_loc",0,0,card_accp_name_loc,&rellen); GetPoolDataByName("Bconnex8583","orig_data_ele",0,0,orig_data_ele,&rellen); rtrim(acq_ins_cou_code); rtrim(acq_ins_id); rtrim(track2_data); rtrim(retr_ref_num); rtrim(card_accp_termid); rtrim(tran_curr_code); rtrim(card_accp_name_loc); rtrim(orig_data_ele); WriteLog(ERR_LVL,"acq_ins_cou_code[%s]",acq_ins_cou_code); WriteLog(ERR_LVL,"acq_ins_id[%s]",acq_ins_id); WriteLog(ERR_LVL,"track2_data[%s]",track2_data); WriteLog(ERR_LVL,"retr_ref_num[%s]",retr_ref_num); WriteLog(ERR_LVL,"card_accp_termid[%s]",card_accp_termid); WriteLog(ERR_LVL,"tran_curr_code[%s]",tran_curr_code); WriteLog(ERR_LVL,"card_accp_name_loc[%s]",card_accp_name_loc); WriteLog(ERR_LVL,"orig_data_ele[%s]",orig_data_ele); PutPoolDataByName("Bconnex8583","acq_ins_cou_code",0,0,acq_ins_cou_code,0); PutPoolDataByName("Bconnex8583","acq_ins_id",0,0,acq_ins_id,0); PutPoolDataByName("Bconnex8583","track2_data",0,0,track2_data,0); PutPoolDataByName("Bconnex8583","retr_ref_num",0,0,retr_ref_num,0); PutPoolDataByName("Bconnex8583","card_accp_termid",0,0,card_accp_termid,0); PutPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,0); PutPoolDataByName("Bconnex8583","card_accp_name_loc",0,0,card_accp_name_loc,0); PutPoolDataByName("Bconnex8583","orig_data_ele",0,0,orig_data_ele,0); PutPoolDataByName("Bconnex8583","MsgType",0,0,"0430",0); } else { WriteLog(ERR_LVL,"get TranCode failed!"); } PutPoolDataByName("Bconnex8583","resp_code",0,0,ret_code,0); WriteLog(ERR_LVL,"***now*** RetCode[%s]",ret_code); WriteLog(ERR_LVL,"========= Pb_ReturnClient8583 end ========="); return PB_OK; } int errcode_transform(char *errcode,char * const ret_code){ EXEC SQL BEGIN DECLARE SECTION; char err_code[10+1]; char tmp_str[20+1]; EXEC SQL END DECLARE SECTION; int ret = -1; char recode[2+1]; memset(err_code,0x00,sizeof(err_code)); memset(tmp_str,0x00,sizeof(tmp_str)); memset(recode,0x00,sizeof(recode)); memcpy(err_code,errcode,strlen(errcode)); rtrim(err_code); WriteLog(ERR_LVL,"errcode[%s]",err_code); WriteLog(ERR_LVL,"========= ****** errcode_transform begin ****** ========="); EXEC SQL select retcode into :tmp_str from t_pb_busi_ret_code where areano='000000' and chnlno='001' and hostretcode=:err_code; WriteLog( ERR_LVL, "select retcode from t_pb_busi_ret_code where areano='000000' and chnlno='001' and hostretcode='%s' SQLCODE[%d]!", err_code,SQLCODE ); if( SQLCODE != 0 ) { WriteLog( ERR_LVL, "Data is not found, the default return!!!" ); EXEC SQL select retcode into :tmp_str from t_pb_busi_ret_code where areano='000000' and chnlno='001' and hostretcode='DFT'; WriteLog( ERR_LVL, "select retcode from t_pb_busi_ret_code where areano='000000' and chnlno='001' and hostretcode='DFT' SQLCODE[%d]!",SQLCODE ); if( SQLCODE != 0 ) { WriteLog( ERR_LVL, "errcode transform err!!!, the default return!!!" ); memcpy(tmp_str,"96",2); } } rtrim(tmp_str); memcpy(ret_code,tmp_str,2); WriteLog( ERR_LVL, "ret_code[%s]", ret_code ); WriteLog(ERR_LVL,"========= ****** errcode_transform end ****** ========="); return PB_OK;}/* Fuction : Pb_Amt_Exch8583 * Action : Pb amount exchange,call 5716 * Input : * Output : * Author : * Date : 2014/11/06 */intPb_Amt_Exch8583(char *currtype,char *amt,char * const nowamt){ int ret = -1; int rellen = 0; long transtate = 0; char retmsg[2000+1]; char out_recode[2+1]; char errcode[10+1]; char errmessage[300+1]; char tag_amt[22+1]; char exch_rate[9+1]; memset(retmsg,0x00,sizeof(retmsg)); memset(out_recode,0x00,sizeof(out_recode)); memset(errcode,0x00,sizeof(errcode)); memset(errmessage,0x00,sizeof(errmessage)); memset(tag_amt,0x00,sizeof(tag_amt)); memset(exch_rate,0x00,sizeof(exch_rate)); WriteLog(ERR_LVL,"========= ****** Pb_Amt_Exch8583 begin ****** ========="); rtrim(currtype); rtrim(amt); WriteLog(ERR_LVL,"currtype[%s]",currtype); WriteLog(ERR_LVL,"amt[%s]",amt); /* HostAddHead */ ret = Data_HostAddHead("5716"); if(ret !=0) { WriteLog(ERR_LVL,"HostAddHead failed!"); Pb_ReturnClient8583("96"); return PB_ERR; } /* HostAddBody */ PutPoolDataByName("FDWH","soc_currtype",0,0,currtype,0); PutPoolDataByName("FDWH","soc_amt",0,0,amt,0); PutPoolDataByName("FDWH","tag_currtype",0,0,currtype,0); PutPoolDataByName("FDWH","CR_flag",0,0,"0",0); PutPoolDataByName("FDWH","BS_flag",0,0,"0",0); PutPoolDataByName("FDWH","amt_rate",0,0,"100",0); PutPoolDataByName("FDWH","tag_CR_flag",0,0,"1",0); /* CallHost */ WriteLog( DEBUG_LVL0, "-----------fml dopack-------------"); ret = Data_PackFml("810|5716|0"); if( ret < 0 ) { Pb_ReturnClient8583("96"); WriteLog( ERR_LVL, "fml dopack err! " ); return PB_ERR; } WriteLog( DEBUG_LVL0, "-------------call host-------------"); ret = Comm_AcCallFml( "810|PBSVC" ); if( ret < 0 ) { Pb_ReturnClient8583("96"); WriteLog( ERR_LVL, "call host err! " ); return PB_ERR; } WriteLog( DEBUG_LVL0, "-----------fml unpack-----------"); ret = Data_UnpackFml("810|5716|1"); if( ret < 0 ) { Pb_ReturnClient8583("96"); WriteLog( ERR_LVL, "fml unpack err! " ); return PB_ERR; } GetPoolDataByName("FDWH","transtate",0,0,&transtate,&rellen); WriteLog(ERR_LVL ,"transtate[%ld]",transtate); GetPoolDataByName("FDWH", "retmsg", 0, 0, retmsg, &rellen ); rtrim(retmsg); WriteLog(ERR_LVL ,"retmsg[%s]",retmsg); if(transtate!=0) { WriteLog(ERR_LVL,"chech failed! msg[%s]",retmsg); sscanf(retmsg,"[%[^]]]:%[^'']",errcode,errmessage); trim(errcode); trim(errmessage); if(strlen(errcode)==0) { sscanf(retmsg,"%*[^0-9]%*[0-9]%*[^0-9]%[0-9]]:%[^'']",errcode,errmessage); trim(errcode); trim(errmessage); } WriteLog(ERR_LVL ,"errcode[%s]errmsg[%s]transtate[%ld]",errcode,errmessage,transtate); errcode_transform(errcode,out_recode); Pb_ReturnClient8583(out_recode); return PB_ERR; } else { GetPoolDataByName("FDWH", "tag_amt", 0, 0, tag_amt, &rellen ); rtrim(tag_amt); WriteLog(ERR_LVL ,"tag_amt[%s]",tag_amt); GetPoolDataByName("FDWH", "exch_rate", 0, 0, exch_rate, &rellen ); rtrim(exch_rate); WriteLog(ERR_LVL ,"exch_rate[%s]",exch_rate); if(strlen(tag_amt)<11) { memcpy(nowamt,tag_amt,strlen(tag_amt)); } else { memcpy(nowamt,tag_amt,11); } WriteLog(ERR_LVL ,"**********amt[%s]**********",nowamt); } WriteLog(ERR_LVL,"========= ****** Pb_Amt_Exch8583 end ****** ========="); return PB_OK;}/** 取系统追踪号*/intGetSysTraceNo(char *systraceno){ EXEC SQL BEGIN DECLARE SECTION; long jour_no; EXEC SQL END DECLARE SECTION; int i = 0; EXEC SQL SELECT SystemTraceAuditNumber.nextval INTO :jour_no FROM dual; if(SQLCODE) { WriteLog(ERR_LVL,"ERROR: GetSysTraceNo:SystemTraceAuditNumber.nextval ERR [%s] %ld\n", SQLMSG,SQLCODE); return PB_ERR; } if ( jour_no < 0 || jour_no > 999999) { WriteLog( DEBUG_LVL0,"INFO: ERROR_Value[%ld] time[%d]",jour_no,i); return PB_ERR ; } sprintf(systraceno,"%06ld",jour_no); return PB_OK;} /* * 取日期天数*/ int GetDayCount(char *startDay,char *countDay){ int idate1=0,idate2=0; rdefmtdate(&idate1, "yyyymmdd",startDay); rdefmtdate(&idate2, "yyyymmdd",countDay); return (idate1 - idate2 + 1);} /** 取授权码*/int GetAuthNo(char *authno){ EXEC SQL BEGIN DECLARE SECTION; long jour_no; EXEC SQL END DECLARE SECTION; int i = 0; EXEC SQL SELECT AuthorizationNumber.nextval INTO :jour_no FROM dual; if(SQLCODE) { WriteLog(ERR_LVL,"ERROR: GetAuthorizationNumber:AuthorizationNumber.nextval ERR [%s] %ld\n", SQLMSG,SQLCODE); return PB_ERR; } if ( jour_no < 0 || jour_no > 999999) { WriteLog( DEBUG_LVL0,"INFO: ERROR_Value[%ld] time[%d]",jour_no,i); return PB_ERR ; } sprintf(authno,"%06ld",jour_no); return PB_OK;} /** 取内部帐机构元素* 输入:区域号、渠道号、业务类型、终端号、终端类型* 输出:机构号*/intGetInstNo(char *areano,char *chnlno,char *busitype,char *terminal_no,char *terminal_type,char *inst){ int rellen=0; EXEC SQL BEGIN DECLARE SECTION; char instno[4+1]; char tm_no[30+1]; char tm_type[1+1]; char area_no[6+1]; char chnl_no[3+1]; char busi_type[3+1]; EXEC SQL END DECLARE SECTION; memset(instno,0x00,sizeof(instno)); memset(tm_no,0x00,sizeof(tm_no)); memset(tm_type,0x00,sizeof(tm_type)); memset(area_no,0x00,sizeof(area_no)); memset(chnl_no,0x00,sizeof(chnl_no)); memset(busi_type,0x00,sizeof(busi_type)); memcpy(area_no,areano,strlen(areano)); memcpy(chnl_no,chnlno,strlen(chnlno)); memcpy(busi_type,busitype,strlen(busitype)); memcpy(tm_no,terminal_no,strlen(terminal_no)); memcpy(tm_type,terminal_type,strlen(terminal_type)); rtrim(tm_no); rtrim(tm_type); rtrim(area_no); rtrim(chnl_no); rtrim(busi_type); WriteLog( ERR_LVL, "areano[%s]", area_no ); WriteLog( ERR_LVL, "busitype[%s]", busi_type ); WriteLog( ERR_LVL, "chnlno[%s]", chnl_no ); WriteLog( ERR_LVL, "terminal_no[%s]", tm_no ); WriteLog( ERR_LVL, "tm_type[%s]", tm_type ); EXEC SQL select accinstno into :instno from t_pb_busi_tlr where areano=:area_no and chnlno=:chnl_no and busitype=:busi_type and terminal_no=:tm_no and terminal_type=:tm_type; if( SQLCODE != 0 ) { WriteLog( ERR_LVL, "select instno err SQLCODE[%d]!", SQLCODE ); return PB_ERR; } rtrim(instno); WriteLog( ERR_LVL, "instno[%s]", instno ); memcpy(inst,instno,strlen(instno)); WriteLog( ERR_LVL, "ret instno[%s]!!!!!!", inst ); return PB_OK;}/** 取内部帐分录尾* 输入:区域号、渠道号、业务类型、交易码、记账类型、现转类型、币种、分录类型、账类、序号* 输出:分录尾*/intGetEntryTail(char *areano,char *chnlno,char *busitype,char *trancode,char *acc_flag,char *csh_tsf_type,char *curr_type,char *entry_type,char *acc_type,char *sort_no,char *entry_tail){ int rellen=0; EXEC SQL BEGIN DECLARE SECTION; char entry[25+1]; char area_no[6+1]; char chnl_no[3+1]; char busi_type[3+1]; char tcode[20+1]; char ac_flag[1+1]; char ct_type[1+1]; char c_type[3+1]; char e_type[1+1]; char ac_type[1+1]; char s_no[4+1]; EXEC SQL END DECLARE SECTION; memset(entry,0x00,sizeof(entry)); memset(area_no,0x00,sizeof(area_no)); memset(chnl_no,0x00,sizeof(chnl_no)); memset(busi_type,0x00,sizeof(busi_type)); memset(tcode,0x00,sizeof(tcode)); memset(ac_flag,0x00,sizeof(ac_flag)); memset(ct_type,0x00,sizeof(ct_type)); memset(c_type,0x00,sizeof(c_type)); memset(e_type,0x00,sizeof(e_type)); memset(ac_type,0x00,sizeof(ac_type)); memset(s_no,0x00,sizeof(s_no)); memcpy(area_no,areano,strlen(areano)); memcpy(chnl_no,chnlno,strlen(chnlno)); memcpy(busi_type,busitype,strlen(busitype)); memcpy(tcode,trancode,strlen(trancode)); memcpy(ac_flag,acc_flag,strlen(acc_flag)); memcpy(ct_type,csh_tsf_type,strlen(csh_tsf_type)); memcpy(c_type,curr_type,strlen(curr_type)); memcpy(e_type,entry_type,strlen(entry_type)); memcpy(ac_type,acc_type,strlen(acc_type)); memcpy(s_no,sort_no,strlen(sort_no)); rtrim(area_no); rtrim(chnl_no); rtrim(busi_type); rtrim(tcode); rtrim(ac_flag); rtrim(ct_type); rtrim(c_type); rtrim(e_type); rtrim(ac_type); rtrim(s_no); WriteLog( ERR_LVL, "areano[%s]", area_no ); WriteLog( ERR_LVL, "chnlno[%s]", chnl_no ); WriteLog( ERR_LVL, "busitype[%s]", busi_type ); WriteLog( ERR_LVL, "trancode[%s]", tcode ); WriteLog( ERR_LVL, "acc_flag[%s]", ac_flag ); WriteLog( ERR_LVL, "csh_tsf_type[%s]", ct_type ); WriteLog( ERR_LVL, "curr_type[%s]", c_type ); WriteLog( ERR_LVL, "entry_type[%s]", e_type ); WriteLog( ERR_LVL, "acc_type[%s]", ac_type ); WriteLog( ERR_LVL, "sort_no[%s]", s_no ); EXEC SQL select acc into :entry from t_pb_busi_entry where areano=:area_no and chnlno=:chnl_no and busitype=:busi_type and trancode=:tcode and acc_flag=:ac_flag and csh_tsf_type=:ct_type and curr_type=:c_type and entry_type=:e_type and acc_type = :ac_type and sort_no=:s_no; if( SQLCODE != 0 ) { WriteLog( ERR_LVL, "select entry err SQLCODE[%d]!", SQLCODE ); return PB_ERR; } rtrim(entry); WriteLog( ERR_LVL, "entry[%s]", entry ); memcpy(entry_tail,entry,strlen(entry)); WriteLog( ERR_LVL, "entry_tail[%s]!!!!!!", entry_tail ); return PB_OK;}/** 取内部帐分录* 输入:交易码、记账类型、现转类型、币种、分录类型、序号* 输出:内部帐分录*/intGetEntry(char *trancode,char *acc_flag,char *csh_tsf_type,char *curr_type,char *entry_type,char *sort_no,char *entry){ int ret = -1; int rellen=0; char instno[4+1]; char entry_tail[25+1]; char areano[6+1]; char chnlno[3+1]; char busitype[3+1]; memset(instno,0x00,sizeof(instno)); memset(entry_tail,0x00,sizeof(entry_tail)); memset(areano,0x00,sizeof(areano)); memset(chnlno,0x00,sizeof(chnlno)); memset(busitype,0x00,sizeof(busitype)); GetPoolDataByName("PBSYS", "AreaNo", 0, 0, areano, &rellen ); GetPoolDataByName("PBSYS", "BusiType", 0, 0, busitype, &rellen ); GetPoolDataByName("PBSYS", "RChnlNo", 0, 0, chnlno, &rellen ); rtrim(areano); rtrim(chnlno); rtrim(busitype); WriteLog( ERR_LVL, "areano[%s]", areano ); WriteLog( ERR_LVL, "chnlno[%s]", chnlno ); WriteLog( ERR_LVL, "busitype[%s]", busitype ); ret = GetInstNo(areano,chnlno,busitype,"0000000000","1",instno); if( ret != PB_OK ) { WriteLog( ERR_LVL, "GetInstNo err!!!!" ); return PB_ERR; } ret = GetEntryTail(areano,chnlno,busitype,trancode,acc_flag,csh_tsf_type,curr_type,entry_type,"0",sort_no,entry_tail); if( ret != PB_OK ) { WriteLog( ERR_LVL, "GetEntryTail err!!!!" ); return PB_ERR; } sprintf(entry ,"%4s%2s%1s%12s",instno,curr_type,"5",entry_tail); rtrim(entry); WriteLog( ERR_LVL, "entry[%s]", entry ); return PB_OK;} /** 取记账分录* 输入:区域号、渠道号、业务类型、交易码、记账类型、现转类型、PB交易日期、(账户、户名、交易金额、币种)* 输出:记账分录数组、记账分录个数*/int GetJourEntryArray(areano,chnlno,busitype,trancode,accflag,cshtsftype,pbtrandate,s_cstm_info,entry,entry_count)char *areano;char *chnlno; char *busitype;char *trancode;char *accflag;char *cshtsftype;char *pbtrandate;char entry[ENTRY_ROW][ENTRY_COL];int *entry_count;struct S_CSTM_INFO *s_cstm_info;{ int ret = -1; int count = 0; int i = 0; char innentry[32+1]; EXEC SQL BEGIN DECLARE SECTION; char area_no[6+1]; /* 区域号 */ char chnl_no[3+1]; /* 渠道号 */ char busi_type[3+1]; /* 业务类型 */ char tran_code[20+1]; /* 交易码 */ char acc_flag[1+1]; /* 记账类型 0-记账 1-冲账 */ char csh_tsf_type[1+1]; /*现转类型 0-现金(本代本) 1-现金(本代他)2- 现金(他代本) 3- 转账(本转本) 4- 转账(本转他)5- 转账(他转本) */ char curr_type[2+1]; /* 币种 */ struct S_PB_BUSI_ENTRY busientry; EXEC SQL END DECLARE SECTION; memset(area_no,0x00,sizeof(area_no)); memset(chnl_no,0x00,sizeof(chnl_no)); memset(busi_type,0x00,sizeof(busi_type)); memset(tran_code,0x00,sizeof(tran_code)); memset(acc_flag,0x00,sizeof(acc_flag)); memset(csh_tsf_type,0x00,sizeof(csh_tsf_type)); memset(curr_type,0x00,sizeof(curr_type)); memset(innentry,0x00,sizeof(innentry)); WriteLog( ERR_LVL , ">>>>>>>>>>>>GetJourEntryArray<<<<<<<<<<<<<,"); memcpy(area_no,areano,6); memcpy(chnl_no,chnlno,3); memcpy(busi_type,busitype,3); memcpy(tran_code,trancode,20); memcpy(acc_flag,accflag,1); memcpy(csh_tsf_type,cshtsftype,1); memcpy(curr_type,s_cstm_info->curr_type,2); rtrim(area_no); rtrim(chnl_no); rtrim(busi_type); rtrim(tran_code); rtrim(acc_flag); rtrim(csh_tsf_type); rtrim(curr_type); WriteLog( ERR_LVL ,"area_no[%s]",area_no); WriteLog( ERR_LVL ,"chnl_no[%s]",chnl_no); WriteLog( ERR_LVL ,"busi_type[%s]",busi_type); WriteLog( ERR_LVL ,"tran_code[%s]",tran_code); WriteLog( ERR_LVL ,"acc_flag[%s]",acc_flag); WriteLog( ERR_LVL ,"curr_type[%s]",curr_type); EXEC SQL DECLARE cur_getentry CURSOR FOR SELECT * FROM t_pb_busi_entry WHERE areano = :area_no AND chnlno = :chnl_no AND busitype = :busi_type AND trancode = :tran_code AND acc_flag = :acc_flag AND csh_tsf_type = :csh_tsf_type AND curr_type = :curr_type AND entry_type = '0'; EXEC SQL OPEN cur_getentry; if (SQLCODE != 0) { WriteLog(ERR_LVL, "打开游标错 = [%d]", SQLCODE); return(-1); } while(1) { memset(&busientry,0x00,sizeof(busientry)); EXEC SQL FETCH cur_getentry INTO :busientry; if (SQLCODE == SQLNOTFOUND) break; else if( SQLCODE ) { WriteLog(ERR_LVL, "数据库操作错 SQLCODE = [%d]", SQLCODE); EXEC SQL CLOSE cur_getentry; EXEC SQL FREE cur_getentry; return( -1 ); } rtrim(busientry.areano); rtrim(busientry.chnlno); rtrim(busientry.busitype); rtrim(busientry.trancode); rtrim(busientry.acc_flag); rtrim(busientry.csh_tsf_type); rtrim(busientry.CshTsfFlag); rtrim(busientry.curr_type); rtrim(busientry.entry_type); rtrim(busientry.acc_type); rtrim(busientry.sort_no); rtrim(busientry.entry_desc); rtrim(busientry.dr_cr_flag); rtrim(busientry.acc); rtrim(busientry.FeeNo); rtrim(busientry.AccStat); rtrim(busientry.ProcFlag); rtrim(busientry.summ_no); rtrim(busientry.summ); rtrim(busientry.remark); rtrim(busientry.cert_no); rtrim(busientry.cert_type); rtrim(busientry.Cert_date); rtrim(busientry.CshItmFlag); rtrim(busientry.TwoEntryFlag); rtrim(busientry.FeeFlag); rtrim(busientry.AnalCode); rtrim(busientry.FeeTranCode); rtrim(busientry.DistFlag); rtrim(busientry.note1); rtrim(busientry.note2); rtrim(busientry.note3); WriteLog( ERR_LVL, "busientry.areano[%s]",busientry.areano); WriteLog( ERR_LVL, "busientry.chnlno[%s]",busientry.chnlno); WriteLog( ERR_LVL, "busientry.busitype[%s]",busientry.busitype); WriteLog( ERR_LVL, "busientry.trancode[%s]",busientry.trancode); WriteLog( ERR_LVL, "busientry.acc_flag[%s]",busientry.acc_flag); WriteLog( ERR_LVL, "busientry.csh_tsf_type[%s]",busientry.csh_tsf_type); WriteLog( ERR_LVL, "busientry.CshTsfFlag[%s]",busientry.CshTsfFlag); WriteLog( ERR_LVL, "busientry.curr_type[%s]",busientry.curr_type); WriteLog( ERR_LVL, "busientry.entry_type[%s]",busientry.entry_type); WriteLog( ERR_LVL, "busientry.acc_type[%s]",busientry.acc_type); WriteLog( ERR_LVL, "busientry.sort_no[%s]",busientry.sort_no); WriteLog( ERR_LVL, "busientry.entry_desc[%s]",busientry.entry_desc); WriteLog( ERR_LVL, "busientry.dr_cr_flag[%s]",busientry.dr_cr_flag); WriteLog( ERR_LVL, "busientry.acc[%s]",busientry.acc); WriteLog( ERR_LVL, "busientry.FeeNo[%s]",busientry.FeeNo); WriteLog( ERR_LVL, "busientry.AccStat[%s]",busientry.AccStat); WriteLog( ERR_LVL, "busientry.ProcFlag[%s]",busientry.ProcFlag); WriteLog( ERR_LVL, "busientry.summ_no[%s]",busientry.summ_no); WriteLog( ERR_LVL, "busientry.summ[%s]",busientry.summ); WriteLog( ERR_LVL, "busientry.remark[%s]",busientry.remark); WriteLog( ERR_LVL, "busientry.cert_no[%s]",busientry.cert_no); WriteLog( ERR_LVL, "busientry.cert_type[%s]",busientry.cert_type); WriteLog( ERR_LVL, "busientry.Cert_date[%s]",busientry.Cert_date); WriteLog( ERR_LVL, "busientry.CshItmFlag[%s]",busientry.CshItmFlag); WriteLog( ERR_LVL, "busientry.TwoEntryFlag[%s]",busientry.TwoEntryFlag); WriteLog( ERR_LVL, "busientry.FeeFlag[%s]",busientry.FeeFlag); WriteLog( ERR_LVL, "busientry.AnalCode[%s]",busientry.AnalCode); WriteLog( ERR_LVL, "busientry.FeeTranCode[%s]",busientry.FeeTranCode); WriteLog( ERR_LVL, "busientry.DistFlag[%s]",busientry.DistFlag); WriteLog( ERR_LVL, "busientry.note1[%s]",busientry.note1); WriteLog( ERR_LVL, "busientry.note2[%s]",busientry.note2); WriteLog( ERR_LVL, "busientry.note3[%s]",busientry.note3); WriteLog( ERR_LVL , "s_cstm_info[atoi(busientry.sort_no)].acc_no[%s]",s_cstm_info[atoi(busientry.sort_no)].acc_no); WriteLog( ERR_LVL , "s_cstm_info[atoi(busientry.sort_no)].tran_amt[%lf]",s_cstm_info[atoi(busientry.sort_no)].tran_amt); /* acc_type 0-内部帐 1-客户帐 */ if( strcmp(busientry.acc_type,"1") == 0 ) /* 客户帐 */ { sprintf( entry[count] , "%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||%s|%s|", busientry.AccStat, busientry.ProcFlag, pbtrandate, s_cstm_info[atoi(busientry.sort_no)].curr_type, s_cstm_info[atoi(busientry.sort_no)].acc_no, s_cstm_info[atoi(busientry.sort_no)].tran_amt, busientry.cert_type, busientry.cert_no, busientry.Cert_date, busientry.dr_cr_flag, busientry.CshTsfFlag, busientry.CshItmFlag, busientry.summ_no, busientry.summ, busientry.remark, busientry.TwoEntryFlag, busientry.FeeFlag, busientry.FeeTranCode, s_cstm_info[atoi(busientry.sort_no)].acc_no, busientry.FeeNo); } else /* 内部帐 */ { ret = GetEntry(tran_code,acc_flag,csh_tsf_type,s_cstm_info[atoi(busientry.sort_no)].curr_type,"0",busientry.sort_no,innentry); rtrim(innentry); WriteLog( ERR_LVL ," innentry[%s] ",innentry ); if( ret != PB_OK ) { WriteLog( ERR_LVL , " Err Call GetEntry "); return(-1); } sprintf( entry[count] , "%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||||||", busientry.AccStat, busientry.ProcFlag, pbtrandate, s_cstm_info[atoi(busientry.sort_no)].curr_type, innentry, s_cstm_info[atoi(busientry.sort_no)].tran_amt, busientry.cert_type, busientry.cert_no, busientry.Cert_date, busientry.dr_cr_flag, busientry.CshTsfFlag, busientry.CshItmFlag, busientry.summ_no, busientry.summ, busientry.remark, busientry.TwoEntryFlag); } count++; } EXEC SQL CLOSE cur_getentry; EXEC SQL FREE cur_getentry; /****** 组手续费分录 **********/ memset(innentry,0x00,sizeof(innentry)); EXEC SQL DECLARE cur_getentry2 CURSOR FOR SELECT * FROM t_pb_busi_entry WHERE areano = :area_no AND chnlno = :chnl_no AND busitype = :busi_type AND trancode = :tran_code AND acc_flag = :acc_flag AND csh_tsf_type = :csh_tsf_type AND curr_type = :curr_type AND entry_type = '1'; EXEC SQL OPEN cur_getentry2; if (SQLCODE != 0) { WriteLog(ERR_LVL, "打开游标错 = [%d]", SQLCODE); return(-1); } while(1) { memset(&busientry,0x00,sizeof(busientry)); EXEC SQL FETCH cur_getentry2 INTO :busientry; if (SQLCODE == SQLNOTFOUND) break; else if( SQLCODE ) { WriteLog(ERR_LVL, "数据库操作错 SQLCODE = [%d]", SQLCODE); EXEC SQL CLOSE cur_getentry2; EXEC SQL FREE cur_getentry2; return( -1 ); } rtrim(busientry.areano); rtrim(busientry.chnlno); rtrim(busientry.busitype); rtrim(busientry.trancode); rtrim(busientry.acc_flag); rtrim(busientry.csh_tsf_type); rtrim(busientry.CshTsfFlag); rtrim(busientry.curr_type); rtrim(busientry.entry_type); rtrim(busientry.acc_type); rtrim(busientry.sort_no); rtrim(busientry.entry_desc); rtrim(busientry.dr_cr_flag); rtrim(busientry.acc); rtrim(busientry.FeeNo); rtrim(busientry.AccStat); rtrim(busientry.ProcFlag); rtrim(busientry.summ_no); rtrim(busientry.summ); rtrim(busientry.remark); rtrim(busientry.cert_no); rtrim(busientry.cert_type); rtrim(busientry.Cert_date); rtrim(busientry.CshItmFlag); rtrim(busientry.TwoEntryFlag); rtrim(busientry.FeeFlag); rtrim(busientry.AnalCode); rtrim(busientry.FeeTranCode); rtrim(busientry.DistFlag); rtrim(busientry.note1); rtrim(busientry.note2); rtrim(busientry.note3); WriteLog( ERR_LVL, "busientry.areano[%s]",busientry.areano); WriteLog( ERR_LVL, "busientry.chnlno[%s]",busientry.chnlno); WriteLog( ERR_LVL, "busientry.busitype[%s]",busientry.busitype); WriteLog( ERR_LVL, "busientry.trancode[%s]",busientry.trancode); WriteLog( ERR_LVL, "busientry.acc_flag[%s]",busientry.acc_flag); WriteLog( ERR_LVL, "busientry.csh_tsf_type[%s]",busientry.csh_tsf_type); WriteLog( ERR_LVL, "busientry.CshTsfFlag[%s]",busientry.CshTsfFlag); WriteLog( ERR_LVL, "busientry.curr_type[%s]",busientry.curr_type); WriteLog( ERR_LVL, "busientry.entry_type[%s]",busientry.entry_type); WriteLog( ERR_LVL, "busientry.acc_type[%s]",busientry.acc_type); WriteLog( ERR_LVL, "busientry.sort_no[%s]",busientry.sort_no); WriteLog( ERR_LVL, "busientry.entry_desc[%s]",busientry.entry_desc); WriteLog( ERR_LVL, "busientry.dr_cr_flag[%s]",busientry.dr_cr_flag); WriteLog( ERR_LVL, "busientry.acc[%s]",busientry.acc); WriteLog( ERR_LVL, "busientry.FeeNo[%s]",busientry.FeeNo); WriteLog( ERR_LVL, "busientry.AccStat[%s]",busientry.AccStat); WriteLog( ERR_LVL, "busientry.ProcFlag[%s]",busientry.ProcFlag); WriteLog( ERR_LVL, "busientry.summ_no[%s]",busientry.summ_no); WriteLog( ERR_LVL, "busientry.summ[%s]",busientry.summ); WriteLog( ERR_LVL, "busientry.remark[%s]",busientry.remark); WriteLog( ERR_LVL, "busientry.cert_no[%s]",busientry.cert_no); WriteLog( ERR_LVL, "busientry.cert_type[%s]",busientry.cert_type); WriteLog( ERR_LVL, "busientry.Cert_date[%s]",busientry.Cert_date); WriteLog( ERR_LVL, "busientry.CshItmFlag[%s]",busientry.CshItmFlag); WriteLog( ERR_LVL, "busientry.TwoEntryFlag[%s]",busientry.TwoEntryFlag); WriteLog( ERR_LVL, "busientry.FeeFlag[%s]",busientry.FeeFlag); WriteLog( ERR_LVL, "busientry.AnalCode[%s]",busientry.AnalCode); WriteLog( ERR_LVL, "busientry.FeeTranCode[%s]",busientry.FeeTranCode); WriteLog( ERR_LVL, "busientry.DistFlag[%s]",busientry.DistFlag); WriteLog( ERR_LVL, "busientry.note1[%s]",busientry.note1); WriteLog( ERR_LVL, "busientry.note2[%s]",busientry.note2); WriteLog( ERR_LVL, "busientry.note3[%s]",busientry.note3); WriteLog( ERR_LVL , "s_cstm_info[atoi(busientry.sort_no)].acc_no[%s]",s_cstm_info[atoi(busientry.sort_no)].acc_no); WriteLog( ERR_LVL , "s_cstm_info[atoi(busientry.sort_no)].fee_amt[%lf]",s_cstm_info[atoi(busientry.sort_no)].fee_amt); /* acc_type 0-内部帐 1-客户帐 */ if( strcmp(busientry.acc_type,"1") == 0 ) /* 客户帐 */ { sprintf( entry[count] , "%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||%s|%s|", busientry.AccStat, busientry.ProcFlag, pbtrandate, s_cstm_info[atoi(busientry.sort_no)].curr_type, s_cstm_info[atoi(busientry.sort_no)].acc_no, s_cstm_info[atoi(busientry.sort_no)].fee_amt, busientry.cert_type, busientry.cert_no, busientry.Cert_date, busientry.dr_cr_flag, busientry.CshTsfFlag, busientry.CshItmFlag, busientry.summ_no, busientry.summ, busientry.remark, busientry.TwoEntryFlag, busientry.FeeFlag, busientry.FeeTranCode, s_cstm_info[atoi(busientry.sort_no)].acc_no, busientry.FeeNo); } else /* 内部帐 */ { ret = GetEntry(tran_code,acc_flag,csh_tsf_type,s_cstm_info[atoi(busientry.sort_no)].curr_type,"1",busientry.sort_no,innentry); rtrim(innentry); WriteLog( ERR_LVL ," innentry[%s] ",innentry ); if( ret != PB_OK ) { WriteLog( ERR_LVL , " Err Call GetEntry "); return(-1); } sprintf( entry[count] , "%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||||||", busientry.AccStat, busientry.ProcFlag, pbtrandate, s_cstm_info[atoi(busientry.sort_no)].curr_type, innentry, s_cstm_info[atoi(busientry.sort_no)].fee_amt, busientry.cert_type, busientry.cert_no, busientry.Cert_date, busientry.dr_cr_flag, busientry.CshTsfFlag, busientry.CshItmFlag, busientry.summ_no, busientry.summ, busientry.remark, busientry.TwoEntryFlag); } count++; } *entry_count = count; WriteLog( ERR_LVL , "entry_count[%d]",*entry_count ); EXEC SQL CLOSE cur_getentry2; EXEC SQL FREE cur_getentry2; for( i = 0;i<count;i++) { WriteLog( ERR_LVL ,"!!!entry[%d][%s]",i,entry[i]); } return PB_OK;}/** 取记账分录* 输入:记账类型、现转类型、分录类型、PB交易日期、(账户、户名、交易金额、币种)* 输出:记账分录数组、记账分录个数*/ int GetJourEntryArray2(accflag,cshtsftype,pbtrandate,s_cstm_info,entry,entry_count)char *accflag; char *cshtsftype; char *pbtrandate;char entry[ENTRY_ROW][ENTRY_COL]; int *entry_count;struct S_CSTM_INFO *s_cstm_info;{ long rellen = 0; int ret = -1; int count = 0; char areano[6+1]; char chnlno[3+1]; char busitype[3+1]; char trancode[20+1]; memset( areano , 0x00 , sizeof(areano)); memset( chnlno , 0x00 , sizeof(chnlno)); memset( busitype , 0x00 , sizeof(busitype)); memset( trancode , 0x00 , sizeof(trancode)); WriteLog( ERR_LVL , ">>>>>>>>>>>>GetJourEntryArray2<<<<<<<<<<<<<,"); GetPoolDataByName("PBSYS", "AreaNo", 0, 0, areano, &rellen ); GetPoolDataByName("PBSYS", "RChnlNo", 0, 0, chnlno, &rellen ); GetPoolDataByName("PBSYS", "BusiType", 0, 0, busitype, &rellen ); GetPoolDataByName("PBSYS", "TranCode", 0, 0, trancode, &rellen ); rtrim(areano); rtrim(chnlno); rtrim(busitype); rtrim(trancode); WriteLog(ERR_LVL ,"areano[%s]",areano); WriteLog(ERR_LVL ,"chnlno[%s]",chnlno); WriteLog(ERR_LVL ,"busitype[%s]",busitype); WriteLog(ERR_LVL ,"trancode[%s]",trancode); ret = GetJourEntryArray(areano,chnlno,busitype,trancode,accflag,cshtsftype,pbtrandate,s_cstm_info,entry,&count); if( ret != PB_OK ) { WriteLog( ERR_LVL ,"Err Call GetJourEntryArray" ); return(-1); } *entry_count = count; return PB_OK;}/** 取记账分录* 输入:PB交易日期、(账户、户名、交易金额、币种)* 输出:记账分录数组、记账分录个数*/intGetJourEntryArray3(pbtrandate,s_cstm_info,entry,entry_count)char *pbtrandate;char entry[ENTRY_ROW][ENTRY_COL];int *entry_count;struct S_CSTM_INFO *s_cstm_info;{ int ret = -1; int i = 0; char accflag[1+1]; char cshtsftype[1+1]; int entry_count1 = 0; memset( accflag, 0x00, sizeof(accflag)); memset( cshtsftype, 0x00, sizeof(cshtsftype)); sprintf(accflag,"0"); sprintf(cshtsftype,"2"); WriteLog( ERR_LVL , ">>>>>>>>>>>>GetJourEntryArray3<<<<<<<<<<<<<,"); WriteLog( ERR_LVL , "s_cstm_info.acc_no[%s]",s_cstm_info->acc_no); WriteLog( ERR_LVL , "s_cstm_info.cstm_name[%s]",s_cstm_info->cstm_name); WriteLog( ERR_LVL , "s_cstm_info.tran_amt[%lf]",s_cstm_info->tran_amt); WriteLog( ERR_LVL , "s_cstm_info.curr_type[%s]",s_cstm_info->curr_type); ret = GetJourEntryArray2(accflag,cshtsftype,pbtrandate,s_cstm_info,entry,&entry_count1); if( ret != PB_OK ) { WriteLog( ERR_LVL ," Err Call GetJourEntryArray2"); return(-1); } *entry_count = entry_count1; return PB_OK;}/** 取冲账记账分录* 输入:区域号、渠道号、业务类型、交易码、记账类型、现转类型、PB交易日期、(账户、户名、交易金额、币种)* 输出:冲账分录数组、冲账分录个数*/intGetReverEntryArray(areano,chnlno,busitype,trancode,accflag,cshtsftype,pbtrandate,s_cstm_rever_info,entry,entry_count)char *areano;char *chnlno;char *busitype;char *trancode;char *accflag;char *cshtsftype;char *pbtrandate;char entry[ENTRY_ROW][ENTRY_COL];int *entry_count;struct S_CSTM_REVER_INFO *s_cstm_rever_info;{ int ret = -1; int count = 0; int i = 0; char innentry[32+1]; EXEC SQL BEGIN DECLARE SECTION; char area_no[6+1]; /* 区域号 */ char chnl_no[3+1]; /* 渠道号 */ char busi_type[3+1]; /* 业务类型 */ char tran_code[20+1]; /* 交易码 */ char acc_flag[1+1]; /* 记账类型 0-记账 1-冲账 */ char csh_tsf_type[1+1]; /*现转类型 0-现金(本代本) 1-现金(本代他)2- 现金(他代本) 3- 转账(本转本) 4- 转账(本转他)5- 转账(他转本) */ char curr_type[2+1]; /* 币种 */ struct S_PB_BUSI_ENTRY busientry; EXEC SQL END DECLARE SECTION; memset(area_no,0x00,sizeof(area_no)); memset(chnl_no,0x00,sizeof(chnl_no)); memset(busi_type,0x00,sizeof(busi_type)); memset(tran_code,0x00,sizeof(tran_code)); memset(acc_flag,0x00,sizeof(acc_flag)); memset(csh_tsf_type,0x00,sizeof(csh_tsf_type)); memset(curr_type,0x00,sizeof(curr_type)); memset(innentry,0x00,sizeof(innentry)); WriteLog( ERR_LVL , ">>>>>>>>>>>>GetJourEntryArray<<<<<<<<<<<<<,"); memcpy(area_no,areano,6); memcpy(chnl_no,chnlno,3); memcpy(busi_type,busitype,3); memcpy(tran_code,trancode,20); memcpy(acc_flag,accflag,1); memcpy(csh_tsf_type,cshtsftype,1); memcpy(curr_type,s_cstm_rever_info->curr_type,2); rtrim(area_no); rtrim(chnl_no); rtrim(busi_type); rtrim(tran_code); rtrim(acc_flag); rtrim(csh_tsf_type); rtrim(curr_type); WriteLog( ERR_LVL ,"area_no[%s]",area_no); WriteLog( ERR_LVL ,"chnl_no[%s]",chnl_no); WriteLog( ERR_LVL ,"busi_type[%s]",busi_type); WriteLog( ERR_LVL ,"tran_code[%s]",tran_code); WriteLog( ERR_LVL ,"acc_flag[%s]",acc_flag); WriteLog( ERR_LVL ,"curr_type[%s]",curr_type); EXEC SQL DECLARE cur_getentry3 CURSOR FOR SELECT * FROM t_pb_busi_entry WHERE areano = :area_no AND chnlno = :chnl_no AND busitype = :busi_type AND trancode = :tran_code AND acc_flag = :acc_flag AND csh_tsf_type = :csh_tsf_type AND curr_type = :curr_type AND entry_type = '0'; EXEC SQL OPEN cur_getentry3; if (SQLCODE != 0) { WriteLog(ERR_LVL, "打开游标错 = [%d]", SQLCODE); return(-1); } while(1) { memset(&busientry,0x00,sizeof(busientry)); EXEC SQL FETCH cur_getentry3 INTO :busientry; if (SQLCODE == SQLNOTFOUND) break; else if( SQLCODE ) { WriteLog(ERR_LVL, "数据库操作错 SQLCODE = [%d]", SQLCODE); EXEC SQL CLOSE cur_getentry3; EXEC SQL FREE cur_getentry3; return( -1 ); } rtrim(busientry.areano); rtrim(busientry.chnlno); rtrim(busientry.busitype); rtrim(busientry.trancode); rtrim(busientry.acc_flag); rtrim(busientry.csh_tsf_type); rtrim(busientry.CshTsfFlag); rtrim(busientry.curr_type); rtrim(busientry.entry_type); rtrim(busientry.acc_type); rtrim(busientry.sort_no); rtrim(busientry.entry_desc); rtrim(busientry.dr_cr_flag); rtrim(busientry.acc); rtrim(busientry.FeeNo); rtrim(busientry.AccStat); rtrim(busientry.ProcFlag); rtrim(busientry.summ_no); rtrim(busientry.summ); rtrim(busientry.remark); rtrim(busientry.cert_no); rtrim(busientry.cert_type); rtrim(busientry.Cert_date); rtrim(busientry.CshItmFlag); rtrim(busientry.TwoEntryFlag); rtrim(busientry.FeeFlag); rtrim(busientry.AnalCode); rtrim(busientry.FeeTranCode); rtrim(busientry.DistFlag); rtrim(busientry.note1); rtrim(busientry.note2); rtrim(busientry.note3); WriteLog( ERR_LVL, "busientry.areano[%s]",busientry.areano); WriteLog( ERR_LVL, "busientry.chnlno[%s]",busientry.chnlno); WriteLog( ERR_LVL, "busientry.busitype[%s]",busientry.busitype); WriteLog( ERR_LVL, "busientry.trancode[%s]",busientry.trancode); WriteLog( ERR_LVL, "busientry.acc_flag[%s]",busientry.acc_flag); WriteLog( ERR_LVL, "busientry.csh_tsf_type[%s]",busientry.csh_tsf_type); WriteLog( ERR_LVL, "busientry.CshTsfFlag[%s]",busientry.CshTsfFlag); WriteLog( ERR_LVL, "busientry.curr_type[%s]",busientry.curr_type); WriteLog( ERR_LVL, "busientry.entry_type[%s]",busientry.entry_type); WriteLog( ERR_LVL, "busientry.acc_type[%s]",busientry.acc_type); WriteLog( ERR_LVL, "busientry.sort_no[%s]",busientry.sort_no); WriteLog( ERR_LVL, "busientry.entry_desc[%s]",busientry.entry_desc); WriteLog( ERR_LVL, "busientry.dr_cr_flag[%s]",busientry.dr_cr_flag); WriteLog( ERR_LVL, "busientry.acc[%s]",busientry.acc); WriteLog( ERR_LVL, "busientry.FeeNo[%s]",busientry.FeeNo); WriteLog( ERR_LVL, "busientry.AccStat[%s]",busientry.AccStat); WriteLog( ERR_LVL, "busientry.ProcFlag[%s]",busientry.ProcFlag); WriteLog( ERR_LVL, "busientry.summ_no[%s]",busientry.summ_no); WriteLog( ERR_LVL, "busientry.summ[%s]",busientry.summ); WriteLog( ERR_LVL, "busientry.remark[%s]",busientry.remark); WriteLog( ERR_LVL, "busientry.cert_no[%s]",busientry.cert_no); WriteLog( ERR_LVL, "busientry.cert_type[%s]",busientry.cert_type); WriteLog( ERR_LVL, "busientry.Cert_date[%s]",busientry.Cert_date); WriteLog( ERR_LVL, "busientry.CshItmFlag[%s]",busientry.CshItmFlag); WriteLog( ERR_LVL, "busientry.TwoEntryFlag[%s]",busientry.TwoEntryFlag); WriteLog( ERR_LVL, "busientry.FeeFlag[%s]",busientry.FeeFlag); WriteLog( ERR_LVL, "busientry.AnalCode[%s]",busientry.AnalCode); WriteLog( ERR_LVL, "busientry.FeeTranCode[%s]",busientry.FeeTranCode); WriteLog( ERR_LVL, "busientry.DistFlag[%s]",busientry.DistFlag); WriteLog( ERR_LVL, "busientry.note1[%s]",busientry.note1); WriteLog( ERR_LVL, "busientry.note2[%s]",busientry.note2); WriteLog( ERR_LVL, "busientry.note3[%s]",busientry.note3); WriteLog( ERR_LVL , "s_cstm_rever_info[atoi(busientry.sort_no)].acc_no[%s]",s_cstm_rever_info[atoi(busientry.sort_no)].acc_no); WriteLog( ERR_LVL , "s_cstm_rever_info[atoi(busientry.sort_no)].tran_amt[%lf]",s_cstm_rever_info[atoi(busientry.sort_no)].tran_amt); /* acc_type 0-内部帐 1-客户帐 */ if( strcmp(busientry.acc_type,"1") == 0 ) /* 客户帐 */ { sprintf( entry[count],"%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||%s|%s|%s|%s|%s|", busientry.AccStat, busientry.ProcFlag, pbtrandate, s_cstm_rever_info[atoi(busientry.sort_no)].curr_type, s_cstm_rever_info[atoi(busientry.sort_no)].acc_no, s_cstm_rever_info[atoi(busientry.sort_no)].tran_amt, busientry.cert_type, busientry.cert_no, busientry.Cert_date, busientry.dr_cr_flag, busientry.CshTsfFlag, busientry.CshItmFlag, busientry.summ_no, busientry.summ, busientry.remark, busientry.TwoEntryFlag, busientry.FeeFlag, busientry.FeeTranCode, s_cstm_rever_info[atoi(busientry.sort_no)].acc_no, busientry.FeeNo, s_cstm_rever_info[atoi(busientry.sort_no)].corr_flag, s_cstm_rever_info[atoi(busientry.sort_no)].corr_date, s_cstm_rever_info[atoi(busientry.sort_no)].corrseqno); } else /* 内部帐 */ { ret = GetEntry(tran_code,acc_flag,csh_tsf_type,s_cstm_rever_info[atoi(busientry.sort_no)].curr_type,"0",busientry.sort_no,innentry); rtrim(innentry); WriteLog( ERR_LVL ," innentry[%s] ",innentry ); if( ret != PB_OK ) { WriteLog( ERR_LVL , " Err Call GetEntry "); return(-1); } sprintf( entry[count] , "%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||||||%s|%s|%s|", busientry.AccStat, busientry.ProcFlag, pbtrandate, s_cstm_rever_info[atoi(busientry.sort_no)].curr_type, innentry, s_cstm_rever_info[atoi(busientry.sort_no)].tran_amt, busientry.cert_type, busientry.cert_no, busientry.Cert_date, busientry.dr_cr_flag, busientry.CshTsfFlag, busientry.CshItmFlag, busientry.summ_no, busientry.summ, busientry.remark, busientry.TwoEntryFlag, s_cstm_rever_info[atoi(busientry.sort_no)].corr_flag, s_cstm_rever_info[atoi(busientry.sort_no)].corr_date, s_cstm_rever_info[atoi(busientry.sort_no)].corrseqno); } count++; } EXEC SQL CLOSE cur_getentry3; EXEC SQL FREE cur_getentry3; /****** 组手续费分录 **********/ memset(innentry,0x00,sizeof(innentry)); EXEC SQL DECLARE cur_getentry4 CURSOR FOR SELECT * FROM t_pb_busi_entry WHERE areano = :area_no AND chnlno = :chnl_no AND busitype = :busi_type AND trancode = :tran_code AND acc_flag = :acc_flag AND csh_tsf_type = :csh_tsf_type AND curr_type = :curr_type AND entry_type = '1'; EXEC SQL OPEN cur_getentry4; if (SQLCODE != 0) { WriteLog(ERR_LVL, "打开游标错 = [%d]", SQLCODE); return(-1); } while(1) { memset(&busientry,0x00,sizeof(busientry)); EXEC SQL FETCH cur_getentry4 INTO :busientry; if (SQLCODE == SQLNOTFOUND) break; else if( SQLCODE ) { WriteLog(ERR_LVL, "数据库操作错 SQLCODE = [%d]", SQLCODE); EXEC SQL CLOSE cur_getentry4; EXEC SQL FREE cur_getentry4; return( -1 ); } rtrim(busientry.areano); rtrim(busientry.chnlno); rtrim(busientry.busitype); rtrim(busientry.trancode); rtrim(busientry.acc_flag); rtrim(busientry.csh_tsf_type); rtrim(busientry.CshTsfFlag); rtrim(busientry.curr_type); rtrim(busientry.entry_type); rtrim(busientry.acc_type); rtrim(busientry.sort_no); rtrim(busientry.entry_desc); rtrim(busientry.dr_cr_flag); rtrim(busientry.acc); rtrim(busientry.FeeNo); rtrim(busientry.AccStat); rtrim(busientry.ProcFlag); rtrim(busientry.summ_no); rtrim(busientry.summ); rtrim(busientry.remark); rtrim(busientry.cert_no); rtrim(busientry.cert_type); rtrim(busientry.Cert_date); rtrim(busientry.CshItmFlag); rtrim(busientry.TwoEntryFlag); rtrim(busientry.FeeFlag); rtrim(busientry.AnalCode); rtrim(busientry.FeeTranCode); rtrim(busientry.DistFlag); rtrim(busientry.note1); rtrim(busientry.note2); rtrim(busientry.note3); WriteLog( ERR_LVL, "busientry.areano[%s]",busientry.areano); WriteLog( ERR_LVL, "busientry.chnlno[%s]",busientry.chnlno); WriteLog( ERR_LVL, "busientry.busitype[%s]",busientry.busitype); WriteLog( ERR_LVL, "busientry.trancode[%s]",busientry.trancode); WriteLog( ERR_LVL, "busientry.acc_flag[%s]",busientry.acc_flag); WriteLog( ERR_LVL, "busientry.csh_tsf_type[%s]",busientry.csh_tsf_type); WriteLog( ERR_LVL, "busientry.CshTsfFlag[%s]",busientry.CshTsfFlag); WriteLog( ERR_LVL, "busientry.curr_type[%s]",busientry.curr_type); WriteLog( ERR_LVL, "busientry.entry_type[%s]",busientry.entry_type); WriteLog( ERR_LVL, "busientry.acc_type[%s]",busientry.acc_type); WriteLog( ERR_LVL, "busientry.sort_no[%s]",busientry.sort_no); WriteLog( ERR_LVL, "busientry.entry_desc[%s]",busientry.entry_desc); WriteLog( ERR_LVL, "busientry.dr_cr_flag[%s]",busientry.dr_cr_flag); WriteLog( ERR_LVL, "busientry.acc[%s]",busientry.acc); WriteLog( ERR_LVL, "busientry.FeeNo[%s]",busientry.FeeNo); WriteLog( ERR_LVL, "busientry.AccStat[%s]",busientry.AccStat); WriteLog( ERR_LVL, "busientry.ProcFlag[%s]",busientry.ProcFlag); WriteLog( ERR_LVL, "busientry.summ_no[%s]",busientry.summ_no); WriteLog( ERR_LVL, "busientry.summ[%s]",busientry.summ); WriteLog( ERR_LVL, "busientry.remark[%s]",busientry.remark); WriteLog( ERR_LVL, "busientry.cert_no[%s]",busientry.cert_no); WriteLog( ERR_LVL, "busientry.cert_type[%s]",busientry.cert_type); WriteLog( ERR_LVL, "busientry.Cert_date[%s]",busientry.Cert_date); WriteLog( ERR_LVL, "busientry.CshItmFlag[%s]",busientry.CshItmFlag); WriteLog( ERR_LVL, "busientry.TwoEntryFlag[%s]",busientry.TwoEntryFlag); WriteLog( ERR_LVL, "busientry.FeeFlag[%s]",busientry.FeeFlag); WriteLog( ERR_LVL, "busientry.AnalCode[%s]",busientry.AnalCode); WriteLog( ERR_LVL, "busientry.FeeTranCode[%s]",busientry.FeeTranCode); WriteLog( ERR_LVL, "busientry.DistFlag[%s]",busientry.DistFlag); WriteLog( ERR_LVL, "busientry.note1[%s]",busientry.note1); WriteLog( ERR_LVL, "busientry.note2[%s]",busientry.note2); WriteLog( ERR_LVL, "busientry.note3[%s]",busientry.note3); WriteLog( ERR_LVL , "s_cstm_rever_info[atoi(busientry.sort_no)].acc_no[%s]",s_cstm_rever_info[atoi(busientry.sort_no)].acc_no); WriteLog( ERR_LVL , "s_cstm_rever_info[atoi(busientry.sort_no)].fee_amt[%lf]",s_cstm_rever_info[atoi(busientry.sort_no)].fee_amt); /* acc_type 0-内部帐 1-客户帐 */ if( strcmp(busientry.acc_type,"1") == 0 ) /* 客户帐 */ { sprintf( entry[count],"%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||%s|%s|%s|%s|%s|", busientry.AccStat, busientry.ProcFlag, pbtrandate, s_cstm_rever_info[atoi(busientry.sort_no)].curr_type, s_cstm_rever_info[atoi(busientry.sort_no)].acc_no, s_cstm_rever_info[atoi(busientry.sort_no)].fee_amt, busientry.cert_type, busientry.cert_no, busientry.Cert_date, busientry.dr_cr_flag, busientry.CshTsfFlag, busientry.CshItmFlag, busientry.summ_no, busientry.summ, busientry.remark, busientry.TwoEntryFlag, busientry.FeeFlag, busientry.FeeTranCode, s_cstm_rever_info[atoi(busientry.sort_no)].acc_no, busientry.FeeNo, s_cstm_rever_info[atoi(busientry.sort_no)].corr_flag, s_cstm_rever_info[atoi(busientry.sort_no)].corr_date, s_cstm_rever_info[atoi(busientry.sort_no)].corrseqno); } else /* 内部帐 */ { ret = GetEntry(tran_code,acc_flag,csh_tsf_type,s_cstm_rever_info[atoi(busientry.sort_no)].curr_type,"1",busientry.sort_no,innentry); rtrim(innentry); WriteLog( ERR_LVL ," innentry[%s] ",innentry ); if( ret != PB_OK ) { WriteLog( ERR_LVL , " Err Call GetEntry "); return(-1); } sprintf( entry[count] , "%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||||||%s|%s|%s|", busientry.AccStat, busientry.ProcFlag, pbtrandate, s_cstm_rever_info[atoi(busientry.sort_no)].curr_type, innentry, s_cstm_rever_info[atoi(busientry.sort_no)].fee_amt, busientry.cert_type, busientry.cert_no, busientry.Cert_date, busientry.dr_cr_flag, busientry.CshTsfFlag, busientry.CshItmFlag, busientry.summ_no, busientry.summ, busientry.remark, busientry.TwoEntryFlag, s_cstm_rever_info[atoi(busientry.sort_no)].corr_flag, s_cstm_rever_info[atoi(busientry.sort_no)].corr_date, s_cstm_rever_info[atoi(busientry.sort_no)].corrseqno); } count++; } *entry_count = count; WriteLog( ERR_LVL , "entry_count[%d]",*entry_count ); EXEC SQL CLOSE cur_getentry4; EXEC SQL FREE cur_getentry4; for( i = 0;i<count;i++) { WriteLog( ERR_LVL ,"!!!entry[%d][%s]",i,entry[i]); } return PB_OK; } /* * 取冲账分录 * 输入:冲账类型、现转类型、分录类型、PB交易日期、(账户、户名、交易金额、币种)* 输出:冲账分录数组、冲账分录个数*/ int GetReverEntryArray2(accflag,cshtsftype,pbtrandate,s_cstm_rever_info,entry,entry_count)char *accflag; char *cshtsftype;char *pbtrandate; char entry[ENTRY_ROW][ENTRY_COL];int *entry_count;struct S_CSTM_REVER_INFO *s_cstm_rever_info;{ int rellen = 0; int ret = -1; int count = 0; char areano[6+1]; char chnlno[3+1]; char busitype[3+1]; char trancode[20+1]; memset( areano , 0x00 , sizeof(areano)); memset( chnlno , 0x00 , sizeof(chnlno)); memset( busitype , 0x00 , sizeof(busitype)); memset( trancode , 0x00 , sizeof(trancode)); WriteLog( ERR_LVL , ">>>>>>>>>>>>GetJourEntryArray2<<<<<<<<<<<<<,"); GetPoolDataByName("PBSYS", "AreaNo", 0, 0, areano, &rellen ); GetPoolDataByName("PBSYS", "RChnlNo", 0, 0, chnlno, &rellen ); GetPoolDataByName("PBSYS", "BusiType", 0, 0, busitype, &rellen ); GetPoolDataByName("PBSYS", "TranCode", 0, 0, trancode, &rellen ); rtrim(areano); rtrim(chnlno); rtrim(busitype); rtrim(trancode); WriteLog(ERR_LVL ,"areano[%s]",areano); WriteLog(ERR_LVL ,"chnlno[%s]",chnlno); WriteLog(ERR_LVL ,"busitype[%s]",busitype); WriteLog(ERR_LVL ,"trancode[%s]",trancode); ret = GetReverEntryArray(areano,chnlno,busitype,trancode,accflag,cshtsftype,pbtrandate,s_cstm_rever_info,entry,&count); if( ret != PB_OK ) { WriteLog( ERR_LVL ,"Err Call GetReverEntryArray" ); return(-1); } *entry_count = count; return PB_OK;}/** 取冲账分录* 输入:PB交易日期、(账户、户名、交易金额、币种)* 输出:冲账分录数组、冲账分录个数*/intGetReverEntry(pbtrandate,s_cstm_rever_info,entry,entry_count)char *pbtrandate;char entry[ENTRY_ROW][ENTRY_COL];int *entry_count;struct S_CSTM_REVER_INFO *s_cstm_rever_info;{ int ret = -1; int i = 0; char accflag[1+1]; char cshtsftype[1+1]; int entry_count1 = 0; memset( accflag, 0x00, sizeof(accflag)); memset( cshtsftype, 0x00, sizeof(cshtsftype)); sprintf(accflag,"1"); sprintf(cshtsftype,"2"); WriteLog( ERR_LVL , ">>>>>>>>>>>>GetReverEntry<<<<<<<<<<<<<,"); WriteLog( ERR_LVL , "s_cstm_rever_info.acc_no[%s]",s_cstm_rever_info->acc_no); WriteLog( ERR_LVL , "s_cstm_rever_info.cstm_name[%s]",s_cstm_rever_info->cstm_name); WriteLog( ERR_LVL , "s_cstm_rever_info.tran_amt[%lf]",s_cstm_rever_info->tran_amt); WriteLog( ERR_LVL , "s_cstm_rever_info.curr_type[%s]",s_cstm_rever_info->curr_type); ret = GetReverEntryArray2(accflag,cshtsftype,pbtrandate,s_cstm_rever_info,entry,&entry_count1); if( ret != PB_OK ) { WriteLog( ERR_LVL ," Err Call GetJourEntryArray2"); return(-1); } *entry_count = entry_count1; return PB_OK; }
0 0