#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 1024
EXEC 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
*/
int
Data_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
*/
int
Pb_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
*/
int
Host_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);
}
int
Get_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 :分隔符
***************************************/
int
GetValue( 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
*/
int
Pb_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
*/
int
Pb_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;
}
/*
* 取系统追踪号
*/
int
GetSysTraceNo(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;
}
/*
* 取内部帐机构元素
* 输入:区域号、渠道号、业务类型、终端号、终端类型
* 输出:机构号
*/
int
GetInstNo(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;
}
/*
* 取内部帐分录尾
* 输入:区域号、渠道号、业务类型、交易码、记账类型、现转类型、币种、分录类型、账类、序号
* 输出:分录尾
*/
int
GetEntryTail(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;
}
/*
* 取内部帐分录
* 输入:交易码、记账类型、现转类型、币种、分录类型、序号
* 输出:内部帐分录
*/
int
GetEntry(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交易日期、(账户、户名、交易金额、币种)
* 输出:记账分录数组、记账分录个数
*/
int
GetJourEntryArray3(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交易日期、(账户、户名、交易金额、币种)
* 输出:冲账分录数组、冲账分录个数
*/
int
GetReverEntryArray(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交易日期、(账户、户名、交易金额、币种)
* 输出:冲账分录数组、冲账分录个数
*/
int
GetReverEntry(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;
}