📄 mcommitys.c
字号:
/* MCOMMIT:销帐 Input : 1 银行序号 2 电力系统为每一个联网的银行一个编号,以使同一系统可以与多个银行进行联网。 2 客户编号 10 3 销帐流水 20 该流水由银行方生成,并作为对帐主要标识。 4 本次缴费的总金额 13 格式:##########.## 5 是否打印发票标志 1 1-打印;0-不打印 6 缴费时的电费笔数n 4 由该项决定ITEM_DATA的行数 7 对帐标志 20 8 缴费的项目数组 41 * n 交几笔产生几行数据,如果全部交纳,则将取费用的所有结果全部列出7的数据格式: 电费流水 CHAR(15) 电费总额 CHAR(13) ##########.## 违约金额 CHAR(13) ##########.## Output: 1 返回状态(可以转换成int型) 8 0--成功 -11--外部凭证未建立或金额不足 -21--流水帐中累计和不相符 -31--无法记入预收余额 -41--无法记入调尾余额 -51--无法记入电费表,可能是应收有变化,或金额超出 -61--记流水帐出错 -1--操作失败*/#include "public.h"#define SIZE_OF_DATA 41 /*每一明细记录的大小*/#ifdef __cplusplusextern "C"#endifvoid#ifdef MW_CICSmain(MW_SVCINFO * transb)h#endif#ifdef MW_TUXEDOMCOMMITYS(MW_SVCINFO * transb)#endif{ /*定义输入参数*/ int iBankSerial = 0; /*银行编号*/ char szKHBH[11] = ""; /*客户编号*/ char szPaySum[14]; /*销帐总金额*/ char szPaySerialNbr[21] = ""; /*销帐的流水号*/ int iItemCount = 0; /*销帐的明细记录数*/ char *szItemData; /*销帐明细*/ char szPrintFlag[2]; /*是否打印发票的标志*/ char szdzFlag[21]; /*对帐标志*/ /*定义输出参数*/ int iReturn = 0; /*定义数据库变量*/ char sz_DFID[16] = ""; char sz_BD_SUM[14] = ""; char sz_LATE_FEE[14] = ""; /*定义临时变量*/ char szMsg[255]; void *ppVar[2]; char szSql[1000]; //char szDropSql[100] = "drop table #tmp_bank_pay"; char szDelSql[100] = "delete from I_TMP_BANK_PAY where ID=@@spid"; char szTemp[1000]= ""; char *szInBuf; BOOL bRet; int i = 0; int nStatus = 0; unsigned char pParam[] = TYPE_INT TYPE_CHAR TYPE_CHAR TYPE_CHAR TYPE_INT TYPE_CHAR TYPE_CHAR TYPE_INT; CMiddleWare mwMidWare; MW_Init(&mwMidWare,transb); MW_AllocateString(&mwMidWare,1024); szInBuf = MW_GetInBuf(&mwMidWare); if (szInBuf == NULL) { gf_Return(&mwMidWare,-1,"没有输入参数!"); return; } /*取输入参数,格式: BANK_SERIAL(2)KHBH(10)PAY_SERIAL_NBR(20)PAY_SUM(13.2)PRINT_FLAG(1)ITEM_COUNT(4) 41 * n */ MW_Trace(szInBuf); strncpy(szTemp,szInBuf,2); szTemp[2] = '\0'; iBankSerial = atoi(szTemp); strncpy(szKHBH,szInBuf + 2,10); szKHBH[10] = '\0'; strncpy(szPaySerialNbr,szInBuf + 12,20); szPaySerialNbr[20] = '\0'; strncpy(szPaySum,szInBuf + 32,13); szPaySum[13] = '\0'; strncpy(szPrintFlag ,szInBuf + 32 + 13,1); szPrintFlag[1] = '\0'; strncpy(szTemp,szInBuf + 32 + 14,4); szTemp[4] = '\0'; iItemCount = atoi(szTemp); strncpy(szdzFlag,szInBuf + 32 + 18,20); szdzFlag[20]= '\0'; //MW_Trace(szdzFlag);// strncpy(szdzFlag,szInBuF + 32 + 18,20);// szdzFlag[20]= '\0'; szItemData = (char*)(szInBuf + 32 + 18 +20);/* MW_GetValueInt(&mwMidWare,BANK_SERIAL,"BANK_SERIAL",&iBankSerial); MW_GetValue(&mwMidWare,KHBH,"KHBH",szKHBH,sizeof(szKHBH)); MW_GetValue(&mwMidWare,PAY_SERIAL_NBR,"PAY_SERIAL_NBR",szPaySerialNbr,sizeof(szPaySerialNbr)); MW_GetValueDouble(&mwMidWare,PAY_SUM,"PAY_SUM",&dPaySum); MW_GetValueInt(&mwMidWare,PRINT_FLAG,"PRINT_FLAG",&iPrintFlag); MW_GetValueInt(&mwMidWare,ITEM_COUNT,"ITEM_COUNT",&iItemCount);*/ /*根据ItemCount的值分配ItemData的大小*//* szItemData = (char *)malloc(SIZE_OF_DATA * iItemCount + 10); if (szItemData == NULL) { gf_Return(&mwMidWare,-1,"分配内存失败"); return; } MW_GetValue(&mwMidWare,ITEM_DATA,"ITEM_DATA",szItemData,sizeof(SIZE_OF_DATA * iItemCount + 10));*/ /*创建临时表#tmp,用于存放本次销帐的明细记录*/ /*strcpy(szSql,"create table #tmp_bank_pay (DFID numeric(15,0) not null,POWER_FEE numeric(13,2) not null,LATE_FEE numeric(13,2) not null)"); if (!DB_ExecuteSQL(&theDatabase,szSql)) { gf_Return(&mwMidWare,-1,"创建费用临时表失败!"); return; } */ /*将ItemData中的数据入到临时表中*/ for (i =0 ;i < iItemCount;i++) { strncpy(sz_DFID,szItemData + i * SIZE_OF_DATA,15); sz_DFID[15] = '\0'; strncpy(sz_BD_SUM,szItemData + i * SIZE_OF_DATA + 15,13); sz_BD_SUM[13] = '\0'; strncpy(sz_LATE_FEE,szItemData + i * SIZE_OF_DATA + 15 + 13,13); sz_LATE_FEE[13] = '\0'; if (atof(sz_DFID) !=0 && atof(sz_BD_SUM) + atof(sz_LATE_FEE) != 0) { sprintf(szSql,"insert into I_TMP_BANK_PAY values(@@spid,%15s,%13s,%13s)",sz_DFID,sz_BD_SUM,sz_LATE_FEE); //sprintf(szSql,"insert into #tmp_bank_pay values(%15s,%13s,%13s)",sz_DFID,sz_BD_SUM,sz_LATE_FEE); if (!DB_ExecuteSQL(&theDatabase,szSql)) { sprintf(szMsg,"%s 执行失败!",szSql); DB_ExecuteSQL(&theDatabase,szDelSql); gf_Return(&mwMidWare,-1,szMsg); return; } } }/* strcpy(szSql,"insert into gjl_temp select * from #tmp_bank_pay"); DB_ExecuteSQL(&theDatabase,szSql); DB_CommitTransaction(&theDatabase);*//*@BANK_SERIAL INT, --银行序号,电力系统为每一个联网的银行一个编号,以使同一系统可以与多个银行进行联网。1--GH 工商银行2--NH 农业银行3--ZH 中国银行4--JH 建设银行5--JT 交通银行6--ZS 招商银行7--SH 商业银行8--GD 光大银行9--MS 民生银行0--YC 邮政局@KHBH CHAR(10), --客户编号@PAY_SERIAL_NBR CHAR(20), --销帐流水,该流水由银行方生成,并作为对帐主要标识。@PAY_AMOUNT CHAR(13), --本次缴费的总金额格式:##########.##@ITEM_COUNT INT, --缴费时的电费笔数@PRINT_FLAG CHAR(1), --是否打印发票标志 1-打印;0-不打印@I_RETURN INT output --返回状态,销帐结果*/ /*调用销帐存储过程进行销帐*/// MW_Trace("before procedure"); iReturn = 0; ppVar[0] = &iReturn; bRet = DB_ExecuteStoredProcedureWithResult(&theDatabase, "Up_c_bank_commit_ys", &nStatus, ppVar,1, pParam,iBankSerial,szKHBH,szPaySerialNbr,szPaySum,iItemCount,szPrintFlag,szdzFlag,0); DB_ExecuteSQL(&theDatabase,szDelSql); if(!bRet || nStatus) //失败 { if (iReturn >= 0) iReturn = -1; gf_Return(&mwMidWare,iReturn,"执行Up_c_bank_commit_ys失败"); return; } /*返回*/ gf_Return(&mwMidWare,iReturn,""); return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -