📄 s13030.ec.c
字号:
/**********************************************************
*
* FILENAME: S13030.ec
* FUNCTION: 有折存款
* 交 易 码: 130301
* 作 者: 李 昕
* LASTCHANG: 1998.05, 珠海
***********************************************************/
#ifndef NORMAL
#define EXTERN
#endif
# include "easy.h"
$ include "dbbuf.h";
# define YZCKJYM "130301"
# define TDKMH 41604
# define DGCZH 15
FILE *fpw;
$ struct{
int gyh;
int jym;
int hbh;
char jgm[10];
char zdh[11];
char zh[14];
double fse;
int zy;
}s_rec1303;
$ struct{
int flag;
int dyhh;
int dzlx;
int wdzxs;
long gylsh;
char mc[41];
double ye;
long kmh;
char errmsg[80];
}s_snd1303;
int getflag;
#ifdef NORMAL
main(argc,argv)
int argc;
char *argv[];
{
#else
int s13030( cSock , cJym )
char *cSock , *cJym;
{
char argv[3][20];
#endif
char jym[7],_address[10];
$long gy_lsh,zxlsh;
$int czh;
$long zxrq,xtrq;
$char zhzt[4],zhkz[9],jgm[10],sendfile[20],tmpfile[60],tmpnr[1024];
int td_flag,i,chk_jym;
char *format="%h%i%s", *get_time();
char rq[7];
$struct ffhz3 rfh;
#ifndef NORMAL
strcpy ( argv[1] , cSock );
strcpy ( argv[2] , cJym );
#endif
memset( &s_snd1303, 0, sizeof( s_snd1303 ) );
memset( &s_rec1303, 0, sizeof( s_rec1303 ) );
memset( &tmpnr, 0, 1024 );
s_snd1303.flag=0;
strcpy(s_snd1303.errmsg,"\0");
if ( recv_from(argv[1],argv[2],_address,&s_rec1303,NULL)<0 ){
s_snd1303.flag = 1;
strcpy(s_snd1303.errmsg, "中心接受交易失败!");
send_to(argv[1],argv[2],_address,&s_snd1303,NULL);
return -1;
}
if ( strcmp (argv[2],YZCKJYM)!=0) {
s_snd1303.flag = 1;
strcpy(s_snd1303.errmsg, "中心接受交易失败!");
send_to(argv[1],argv[2],_address,&s_snd1303,NULL);
return -1;
}
s_snd1303.wdzxs=0;
s_snd1303.ye=0;
strcpy(s_snd1303.mc,"\0");
s_snd1303.kmh=0;
trace("jgm=[%s] gyh=[%d]",s_rec1303.jgm,s_rec1303.gyh);
#ifdef NORMAL
$database easydb;
if (sqlca.sqlcode) {
sprintf(s_snd1303.errmsg,"打开数据库错[%d]!",sqlca.sqlcode);
errout ("有折存款",argv[2],__FILE__,__LINE__,sqlca.sqlcode);
s_snd1303.flag=sqlca.sqlcode;
goto return_back;
}
#endif
/**add by lwy****/
chk_jym = s_rec1303.jym;
s_rec1303.jym = fabs(s_rec1303.jym);
/****************/
if((i=chk_gyqx(s_rec1303.gyh,0,"",s_rec1303.jym,0.00,0))!=0){
strcpy(s_snd1303.errmsg,g_errmsg);
s_snd1303.flag=i;
goto return_back1;
}
sprintf(sendfile,"easyfile.%05d",g_jzgy);
sprintf(tmpfile,"%s/%s",getenv("UDTFILEDIR"),sendfile);
if((fpw=fopen(tmpfile,"w"))==NULL){
strcpy(s_snd1303.errmsg,"主机打开文件错!");
s_snd1303.flag=37; /*打开文件错 */
errout("打开文件错",argv[2],__FILE__,__LINE__,-1);
goto return_back1;
}
$select * into $rczdflb from czdflb
where jgm=$s_rec1303.jgm and hbh=$s_rec1303.hbh and ywzl=13;
if (sqlca.sqlcode) {
if(sqlca.sqlcode != 100)
sprintf(s_snd1303.errmsg,"取自动分录表错[%d]!",sqlca.sqlcode);
else
sprintf(s_snd1303.errmsg,"自动分录表无现金交易记录!");
errout ("有折存款",argv[2],__FILE__,__LINE__,sqlca.sqlcode);
s_snd1303.flag=sqlca.sqlcode;
goto return_back;
}
switch(s_rec1303.zh[12]){
case '1':
$select * into $rffhz1 from ffhz1 where zh=$s_rec1303.zh;
strcpy(jgm,rffhz1.jgm);
czh = rffhz1.czh;
strcpy(zhzt,rffhz1.zhzt);
strcpy(zhkz,rffhz1.zhkz);
break;
case '2': /***增加对公活期户(15)*/
$select * into $rffhz2 from ffhz2 where zh=$s_rec1303.zh;
strcpy(jgm,rffhz2.jgm);
czh = rffhz2.czh;
strcpy(zhzt,rffhz2.zhzt);
strcpy(zhkz,rffhz2.zhkz);
break;
case '3':
$select * into $rffhz3 from ffhz3 where zh=$s_rec1303.zh;
strcpy(jgm,rffhz3.jgm);
czh = rffhz3.czh;
strcpy(zhzt,rffhz3.zhzt);
strcpy(zhkz,rffhz3.zhkz);
break;
default:
s_snd1303.flag=-999;
strcpy(s_snd1303.errmsg,"帐户无效!");
goto return_back;
}
if (sqlca.sqlcode && sqlca.sqlcode!=100) {
sprintf(s_snd1303.errmsg,"取分户信息错[%d]!",sqlca.sqlcode);
errout ("有折存款",argv[2],__FILE__,__LINE__,sqlca.sqlcode);
s_snd1303.flag=sqlca.sqlcode;
goto return_back;
}
if (sqlca.sqlcode==100) {
strcpy(s_snd1303.errmsg,"无此帐户!");
s_snd1303.flag=5;/*无此帐户*/
goto return_back;
}
if(zhzt[0]=='2'){
strcpy(s_snd1303.errmsg,"帐户已销户!");
s_snd1303.flag=14;/*销户*/
goto return_back;
}
if(zhzt[1]=='1' || zhzt[1]=='2'){
strcpy(s_snd1303.errmsg,"帐户已挂失!");
s_snd1303.flag=1;/*帐户挂失*/
goto return_back;
}
if(zhzt[2]=='3'){
strcpy(s_snd1303.errmsg,"帐户已封锁!");
s_snd1303.flag=6;/*帐户封锁*/
goto return_back;
}
if (s_rec1303.zh[12]=='3' && czh!=3 && czh!=60) {
strcpy(s_snd1303.errmsg,"本交易不允许该储种操作!");
s_snd1303.flag=30;/*该储种不允许做此交易*/
goto return_back;
}
/******** mody by zwq 20000614 *******/
if (rffhz3.czh==60) {
if ((20000.00-(fabs(rffhz3.ye)+fabs(s_rec1303.fse)))<-0.005) {
strcpy(s_snd1303.errmsg,"教育储蓄余额不能超过20000元!");
s_snd1303.flag=13;
goto return_back;
}
}
/******** mody by zwq 20000614 *******/
/**** add by jm 1999.04.26 ***/
if (s_rec1303.zh[12]=='2' && czh!=DGCZH) {
strcpy(s_snd1303.errmsg,"本交易不允许该储种操作!");
s_snd1303.flag=30;/*该储种不允许做此交易*/
goto return_back;
}
td_flag=0;
/* add for xinhui */
if( (td_flag = tc_td(s_rec1303.jgm,jgm,czh,s_rec1303.hbh,zhkz,'2')) < 0) {
strcpy(s_snd1303.errmsg,g_errmsg);
s_snd1303.flag=13;
goto return_back;
}
/*****************/
/***add by lwy 2000.03.31***/
if(s_rec1303.zh[12]=='1'){
killblank(rffhz1.dbr);
if( rffhz1.cwdh==0 && (strlen(rffhz1.dbr)==0) && (chk_jym>0)){
s_snd1303.flag = 1000;
goto return_back;
}
}
if(s_rec1303.zh[12]=='3'){
killblank(rffhz3.dbr);
if( rffhz3.cwdh==0 && strlen(rffhz3.dbr)==0 && (chk_jym>0)){
s_snd1303.flag = 1000;
goto return_back;
}
}
/***************************/
zxrq = rcxtzt.yyrq;
/* modify by tl 2001/02/13 因为零整的漏二补五情况已发生,但追帐时实际系统未处理
if(lz_cl(rcxtzt.yyrq,&rffhz3,s_rec1303.fse)){
s_snd1303.flag=7;
strcpy(s_snd1303.errmsg,g_errmsg);
goto return_back;
}
*/
zxlsh=get_zxlsh();
if (zxlsh<0) {
strcpy(s_snd1303.errmsg,g_errmsg);
s_snd1303.flag=19;
goto return_back;
}
rfmtdate(zxrq,"yymmdd",rq);
$begin work;
gy_lsh=get_gylsh(g_jzgy);
s_snd1303.gylsh=gy_lsh;
if (gy_lsh<0) {
strcpy(s_snd1303.errmsg,g_errmsg);
s_snd1303.flag=7;
$rollback work;
goto return_back;
}
switch(s_rec1303.zh[12]){
case '1':
if(fhz_dac(rffhz1,rffhz1.dac,2)){
strcpy(s_snd1303.errmsg,"帐户被非法改动过!");
s_snd1303.flag=27; /*分户DAC错*/
$rollback work;
goto return_back;
}
strncpy(g_dac,rffhz1.dac,17);
$select * into $rszdxx from szdxx where zdlx=$rffhz1.czcdlx;
if (sqlca.sqlcode) {
sprintf(s_snd1303.errmsg,"取折单信息错[%d]!",sqlca.sqlcode);
errout ("有折存款",argv[2],__FILE__,__LINE__,sqlca.sqlcode);
s_snd1303.flag=sqlca.sqlcode;
$rollback work;
goto return_back;
}
/*请先更换存折*/
/********************
if ( ((rffhz1.dyyh-1)*rszdxx.mybs+rffhz1.dyhh+1)>(rszdxx.mybs*rszdxx.ys) ) {
strcpy(s_snd1303.errmsg,"请先更换存折!");
s_snd1303.flag=25;
$rollback work;
goto return_back;
}
***************/
getflag = get_dqhh(1,rffhz1.czcdlx,&rffhz1.dyhh,&rffhz1.dyyh,0);
if(getflag<0) {
s_snd1303.flag = 1;
strcpy(s_snd1303.errmsg,g_errmsg);
$rollback work;
goto return_back;
}
if(getflag) {
strcpy(s_snd1303.errmsg,"请先更换存折!");
s_snd1303.flag=25;
$rollback work;
goto return_back;
}
/******
if (rffhz1.wdzxs>0) {
strcpy(s_snd1303.errmsg,"有未登折项,请先补登折!");
s_snd1303.flag=11;
$rollback work;
goto return_back;
}
******/
if (rffhz1.wdzxs!=0) {
s_snd1303.wdzxs=rffhz1.wdzxs;
i=get_wdz(fpw,s_rec1303.zh,rffhz1.wdzxs,rffhz1.czcdlx);
if (i!=0) {
strcpy(s_snd1303.errmsg,g_errmsg);
s_snd1303.flag=1; /*未登折有错*/
$rollback work;
goto return_back;
}
}
s_snd1303.dyhh=(rffhz1.dyyh-1)*rszdxx.mybs+rffhz1.dyhh-rffhz1.wdzxs+1;
s_snd1303.dzlx=rffhz1.czcdlx;
/*
if (rffhz1.zhkz[0]!='0')
rffhz1.js=rffhz1.js+rffhz1.ye*(zxrq-rffhz1.jyrq);
*/
if (rffhz1.zhkz[0]!='0')
rffhz1.js=get_fhjs(rffhz1,zxrq);
rffhz1.ye=rffhz1.ye-s_rec1303.fse;
if (td_flag!=0) rffhz1.tcje=rffhz1.tcje + s_rec1303.fse;
rffhz1.jyrq=zxrq;
rffhz1.zqcs=rffhz1.zqcs+1;
rffhz1.wdzxs=0;
/*****************
if (rffhz1.dyhh+1>rszdxx.mybs) {
rffhz1.dyyh=rffhz1.dyyh+1;
rffhz1.dyhh=1;
}
else rffhz1.dyhh=rffhz1.dyhh+1;
*****************/
getflag = get_dqhh(2,rffhz1.czcdlx,&rffhz1.dyhh,&rffhz1.dyyh,0);
if(getflag<0) {
s_snd1303.flag = 1;
strcpy(s_snd1303.errmsg,g_errmsg);
$rollback work;
goto return_back;
}
strcpy(s_snd1303.mc,rffhz1.hm);
if (td_flag!=0) s_snd1303.kmh=TDKMH;
else s_snd1303.kmh=rffhz1.kmh;
s_snd1303.ye=rffhz1.ye;
fhz_dac(rffhz1,rffhz1.dac,1);
/***add by lwy****/
rffhz1.bsxj = get_czye(rffhz1.czh,rffhz1.wdzxs,rffhz1.ye,rffhz1.bsxj);
$update ffhz1 set (ye,tcje,bsxj,js,jyrq,zqcs,wdzxs,dyyh,dyhh,dac)
=($rffhz1.ye,$rffhz1.tcje,$rffhz1.bsxj,$rffhz1.js,$rffhz1.jyrq,$rffhz1.zqcs,$rffhz1.wdzxs,$rffhz1.dyyh,$rffhz1.dyhh,$rffhz1.dac)
where zh=$s_rec1303.zh and dac=$g_dac;
if (sqlca.sqlcode || sqlca.sqlerrd[2]!=1) {
sprintf(s_snd1303.errmsg,"更新分户错[%d][%d]!",sqlca.sqlcode,sqlca.sqlerrd[2]);
errout ("有折存款",argv[2],__FILE__,__LINE__,sqlca.sqlcode);
s_snd1303.flag=68;
$rollback work;
goto return_back;
}
/************ add by zwq 20000428 **********/
memcpy(&rfh,&rffhz1,sizeof(rffhz1));
/************ add by zwq 20000428 **********/
memset(&rfdrmx,0,sizeof(rfdrmx));
rfdrmx.kmh=rffhz1.kmh;
rfdrmx.hbh=rffhz1.hbh;
strncpy(rfdrmx.zh,rffhz1.zh,14);
strncpy(rfdrmx.dljg,s_rec1303.jgm,10);
strncpy(rfdrmx.jgm,rffhz1.jgm,10);
rtoday(&rfdrmx.xtrq);
rfdrmx.jyrq=zxrq;
rfdrmx.zxlsh=zxlsh;
rfdrmx.gylsh=gy_lsh;
rfdrmx.jym=s_rec1303.jym;
rfdrmx.jyje=s_rec1303.fse;
rfdrmx.ye=rffhz1.ye;
rfdrmx.js=rffhz1.js;
rfdrmx.pzbz[0]='1';
if (td_flag!=0) rfdrmx.tdbz[0]='1';
else rfdrmx.tdbz[0]='0';
rfdrmx.zy=s_rec1303.zy;
rfdrmx.dycs=1;
rfdrmx.pzzl=0;
strcpy(rfdrmx.pzhm,"00000000");
rfdrmx.jdbz[0]='2';
rfdrmx.dqyc=rffhz1.dyyh;
rfdrmx.dqybs=rffhz1.dyhh;
rfdrmx.pj=0.00;
rfdrmx.gy1=g_jzgy;
rfdrmx.cngy=g_cngy;
get_cur_time( rfdrmx.jysj );
$select * into $rczdflb from czdflb
where jgm=$s_rec1303.jgm and hbh=$s_rec1303.hbh and ywzl=13;
strcpy( rfdrmx.dyzh,rczdflb.zh );
/***** end ****/
rfdrmx.gy2=0;
rfdrmx.zl[0]=rffhz1.zl[0];
strcpy(rfdrmx.sqm, " " );
rfdrmx.dac[0]='1';
$insert into fdrmx values($rfdrmx);
if (sqlca.sqlcode) {
sprintf(s_snd1303.errmsg,"增加当日明细错[%d]!",sqlca.sqlcode);
errout ("有折存款",argv[2],__FILE__,__LINE__,sqlca.sqlcode);
s_snd1303.flag=sqlca.sqlcode;
$rollback work;
goto return_back;
}
rfdrmx.ye=0-rfdrmx.ye;
gen_czline(tmpnr,rfdrmx.jdbz[0],rfdrmx.jyrq,rfdrmx.zy,rfdrmx.jyje,rfdrmx.ye,rfdrmx.gy1,rffhz1.czcdlx);
fprintf(fpw,"%s\n",tmpnr);
break;
case '2':
if(fhz_dac(rffhz2,rffhz2.dac,2)){
strcpy(s_snd1303.errmsg,"帐户被非法改动过!");
s_snd1303.flag=27; /*分户DAC错*/
$rollback work;
goto return_back;
}
strncpy(g_dac,rffhz2.dac,17);
$select * into $rszdxx from szdxx where zdlx=$rffhz2.czcdlx;
if (sqlca.sqlcode) {
sprintf(s_snd1303.errmsg,"取折单信息错[%d]!",sqlca.sqlcode);
errout ("有折存款",argv[2],__FILE__,__LINE__,sqlca.sqlcode);
s_snd1303.flag=sqlca.sqlcode;
$rollback work;
goto return_back;
}
/*请先更换存折*/
/*****************
if ( ((rffhz2.dyyh-1)*rszdxx.mybs+rffhz2.dyhh+1)>(rszdxx.mybs*rszdxx.ys) ) {
strcpy(s_snd1303.errmsg,"请先更换存折!");
s_snd1303.flag=25;
$rollback work;
goto return_back;
}
******************/
getflag = get_dqhh(1,rffhz2.czcdlx,&rffhz2.dyhh,&rffhz2.dyyh,0);
if(getflag<0) {
s_snd1303.flag = 1;
strcpy(s_snd1303.errmsg,g_errmsg);
$rollback work;
goto return_back;
}
if(getflag) {
strcpy(s_snd1303.errmsg,"请先更换存折!");
s_snd1303.flag=25;
$rollback work;
goto return_back;
}
/*******
if (rffhz2.wdzxs>0) {
strcpy(s_snd1303.errmsg,"有未登折项,请先补登折!");
s_snd1303.flag=11;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -