📄 s11050.ec.c
字号:
/******************************************************************
* 功 能: 帐户销户 SERVER 程序
* 交 易 码: 110500
* 作 者: E.C. 1998.05 珠 海
******************************************************************/
#include "easy.h"
$include dbbuf.h;
#define EXTERN
#define ZHXHJYM "110500"
$struct rec_str{
int gyh;
int jym;
int xhlx;
char jgm[10];
char xhzh[14];
char zhmm[9];
char dfzh[14];
char czcdh[9];
long sqgy;
char sqgymm[9];
int jybz;
int pzzl;
char pzhm[9];
}s_rec;
$struct snd_str{
int flag;
long lsh;
int dyhh;
long tzcq;
char dfczcdh[9];
long dfczh;
double tzll;
double lx;
double bj;
double ye ;
double zzje;
char hm[41] ;
char zzhm[41];
char errmsg[80];
double dfye;
long yhts;
}s_snd;
double get_int_rate();
double fabs(double);
$struct ffhz3 rxhfh,rlxfh,rdffh,rbwfh,rgxfh,rlxsfh;
FILE *fpw;
FILE *fp;
int getflag;
char tmpnr[80];
$char note[13];
int i,csbz,jcz,flag_xh,ybtxhbz=0,lxs_bz=0;
$int mybs,ys,czh;
$short ind;
$char lxzczh[14];
$char xjzh[14],ybt_xh[9],lxs_zdflzh[14];
$double bj,lx;
double cal_int0(),jycxjx(),xhfhye;
$double qxye;
$struct ffhbc rdkbc;
$long counttmp;
long days;
$char cq[3];
int kfbz;
main(argc,argv)
int argc;
char *argv[];
{
char _address[10],buf[100];
char fname[41],filename[81];
char sendfile[41];
char tmpfile[80];
memset ( &s_snd , 0 , sizeof ( s_snd ) );
if ( recv_from(argv[1],argv[2],_address,(void *)&s_rec,NULL)<0 ){
strcpy ( s_snd.errmsg ,"中心接受信息错!" );
s_snd.flag = 1;
send_to(argv[1],argv[2],_address,(void *)&s_snd,NULL);
return 0;
}
if ( strcmp (argv[2],ZHXHJYM)!=0){
strcpy ( s_snd.errmsg ,"中心接受交易码错!" );
s_snd.flag = 1;
send_to(argv[1],argv[2],_address,(void *)&s_snd,NULL);
return 0;
}
s_snd.dyhh=1;
lx=bj=0.00;
csbz=0;
jcz=days=0;
strcpy(fname,"\0");
strcpy(sendfile,"\0");
strcpy(filename,"\0");
strcpy(tmpfile,"\0");
$database easydb;
if(is_ybt(s_rec.xhzh)){
sprintf(ybt_xh,"%08d",s_rec.jym%100);
s_rec.jym = s_rec.jym/100;
}
if((i=chk_gyqx(s_rec.gyh,0,"",s_rec.jym,0.00,0))!=0){
strcpy ( s_snd.errmsg , g_errmsg );
s_snd.flag = 1;
goto return_back;
}
sprintf(sendfile,"easysend.%05d",g_jzgy);
sprintf(tmpfile,"%s/%s",getenv("UDTFILEDIR"),sendfile);
if((fpw=fopen(tmpfile,"w"))==NULL){
s_snd.flag = 1;
strcpy(s_snd.errmsg,"中心创建文件失败!" );
goto return_back;
}
sprintf(fname,"easyfile.%05d",g_jzgy);
sprintf(filename,"%s/%s",getenv("UDTFILEDIR"),fname);
if((fp=fopen(filename,"w"))==NULL){
s_snd.flag = 1;
strcpy(s_snd.errmsg,"中心创建文件失败!" );
goto return_back;
}
$begin work;
if(chk_xhzh()) goto return_back;
if( rxhfh.czh==DGCZH || rxhfh.zh[12]=='1' || rxhfh.czh == 71 || rxhfh.zh[12]=='3' || rxhfh.zh[12]=='4')
flag_xh = 1;
else
flag_xh = 2;
switch(flag_xh){
case 1 :
bj=fabs(rxhfh.ye);
if(lx_compute()) goto return_back;
/******** 加入利息税的处理 *********/
/** 判断是否应该收利息税,若收,则处理,置lxs_bz=1;不收,则正常处理 **/
if(rlxdgs.lxs>=0.0005) lxs_bz=1;
else lxs_bz=0;
if(rxhfh.zhkz[0]!='0'){
/** 应收利息税的处理 **/
if(chk_lxszh()) goto return_back;
/******** 利息税处理1结束 ***********/
/************准备rflxdwj数据******************/
prepare_lxdwj();
}
if(cbqx_cl()) goto return_back;/****存本取息处理*******/
/* insert 99.4.5 */
if( tc_td( s_rec.jgm,rxhfh.jgm,rxhfh.czh,rxhfh.hbh,rxhfh.zhkz,'1')<0){
s_snd.flag=1;
strcpy(s_snd.errmsg,g_errmsg);
$rollback work;
goto return_back;
}
if(rxhfh.czh==3 && strcmp(rxhfh.jgm,s_rec.jgm)){
strcpy(s_snd.errmsg,"零存整取不能通兑");
s_snd.flag=1;
$rollback work;
goto return_back;
}
/*利息单凭证销号*/
$select * into $rsxxbm from sxxbm where zlbz="5" and bh=$s_rec.pzzl;
if ( sqlca.sqlcode ) {
strcpy ( s_snd.errmsg ,"取利息单凭证错!");
errout("现金开户",argv[2],__FILE__,__LINE__,0);
s_snd.flag=1;
$rollback work;
goto return_back;
}
if ( rsxxbm.sx[1] == '1' ) {
printf("pzhm[%s]\n",s_rec.pzhm);fflush(stdout);
/*如果利息为0则凭证不销号**modi on 20011008**/
if (fabs(lx)>0.005){
if((px_del1(atol(s_rec.pzhm),atol(s_rec.pzhm),s_rec.jgm,g_jzgy,s_rec.pzzl,rcxtzt.yyrq,s_rec.jym))!=0){
strcpy ( s_snd.errmsg ,"取利息单凭证错!");
errout("现金开户",argv[2],__FILE__,__LINE__,0);
s_snd.flag=1;
$rollback work;
goto return_back;
}
}
}
if(s_rec.xhlx==1){
if(chk_xjzh()) goto return_back;/***现金帐号检查****/
}
else{
if(chk1_dffh()) goto return_back;/***贷方分户检查***/
}
if(chk_tctd()) goto return_back;
if(chk2_dffh()) goto return_back;/***贷方分户检查***/
/*******add by fq 20010720****/
if(chk_lxzczh()) goto return_back;/***利息支出帐号检查*******/
if(cl_lxdwj()) goto return_back;/***生成利息单文件****/
if(cl_lxzczh()) goto return_back;/***利息支出帐号处理*******/
if(cl_lxsfh()) goto return_back;/***处理利息税****/
if(cl_xhzh()) goto return_back;/****销户帐号处理,插入到当日明细****/
if(cl_dfzh()) goto return_back;/****贷方帐号处理,插入到当日明细***/
/* 登记开销户登记簿 */
sprintf(note,"%02d-%-5d",rxhfh.hbh,rxhfh.kmh);
$insert into dkxhdjb values($rxhfh.jgm,$rxhfh.zh,$rxhfh.hm,$rcxtzt.yyrq,$note,$g_jzgy,0,"1");
if(sqlca.sqlcode){
errout ("帐户销户",argv[2],__FILE__,__LINE__,sqlca.sqlcode);
s_snd.flag=1;
sprintf(s_snd.errmsg,"插入开销户登记簿失败[%d] !",sqlca.sqlcode);
$rollback work;
goto return_back;
}
if( !lxs_bz ) rlxdgs.lxs=0.00;
s_snd.lx=lx-rlxdgs.lxs;
s_snd.bj=bj;
initlxdgs();
if(rxhfh.czh==4){
if(rcxtzt.yyrq-rxhfh.dqrq<0)
rlxdgs.lxje1=lx;
rlxdgs.lxhj=lx;
}
if ( gen_lxdtxt(rlxdgs,fp,1,g_jzgy) ) {
errout ("帐户销户",argv[2],__FILE__,__LINE__,sqlca.sqlcode);
s_snd.flag=1;
sprintf(s_snd.errmsg,"生成利息单文件失败!");
$rollback work;
goto return_back;
};
csbz=1;
break;
default:
if((fabs(rxhfh.js)>0.005 && rxhfh.zhkz[0]!=0)||fabs(rxhfh.ye)>0.005){
s_snd.flag=1;
strcpy(s_snd.errmsg,"余额或积数不为 0, 不能销户 !");
$rollback work;
goto return_back;
}
if(rxhfh.zh[12]=='5'){ /* 贷款销户 */
if(cl_dkzh()) goto return_back;/***贷款帐号处理****/
}
if(cl_wyezh()) goto return_back;/****无余额帐号处理*******/
break;
}
if(cl_kmzz()) goto return_back;/****处理科目总帐****/
/* delete by tl 2000/12/29 */
#if 0
if(cl_tzckzh()) goto return_back;/****处理通知存款*****/
#endif
$commit work;
return_back:
fclose(fpw);
fclose(fp);
$close database;
sprintf(buf,"%s+%s",sendfile,fname);
send_to(argv[1],argv[2],_address,(void *)&s_snd,buf);
return 0;
}
initlxdgs()
{
$char jymc[13],zwjx[7];
$select jymc into $jymc from sjymb where jym=$s_rec.jym;
strcpy(rlxdgs.jymc,jymc);
rlxdgs.rq=rcxtzt.yyrq;
rlxdgs.gylsh=rfdrmx.gylsh;
$select zwjx into $zwjx from shbxx where hbh=$rxhfh.hbh;
strcpy(rlxdgs.hbmc,zwjx);
rlxdgs.jfkm=rlxfh.kmh;
strcpy(rlxdgs.jfzh,rlxfh.zh);
strcpy(rlxdgs.jfhm,rlxfh.hm);
strcpy(rlxdgs.jfjgm,rlxfh.jgm);
/* Modi by 05.22
rlxdgs.dfkm=rdffh.kmh;
strcpy(rlxdgs.dfzh,rdffh.zh);
strcpy(rlxdgs.dfhm,rdffh.hm);
*/
rlxdgs.dfkm=rxhfh.kmh;
strcpy(rlxdgs.dfzh,rxhfh.zh);
strcpy(rlxdgs.dfhm,rxhfh.hm);
strcpy(rlxdgs.dfjgm,rdffh.jgm);
rlxdgs.gyh=g_jzgy;
strcpy(rlxdgs.rzbz,"1");
}
chk_xhzh()
{
if(is_ybt(s_rec.xhzh)){
$select * into $rfdqfhbc from fdqfhbc where zh=$s_rec.xhzh;
if(sqlca.sqlcode ){
errout("帐户销户",ZHXHJYM,__FILE__,__LINE__,sqlca.sqlcode);
s_snd.flag = 1;
if(sqlca.sqlcode!=100)
sprintf( s_snd.errmsg , "取定期分户补充表错[%d]!",sqlca.sqlcode);
else
sprintf( s_snd.errmsg , "无此一本通帐号!");
$rollback work;
return 1;
}
switch(rfdqfhbc.bz[0]) {
case '0':
break;
case '1':
case '2':
sprintf(s_snd.errmsg,"一本通存折已挂失!");
s_snd.flag = 1;
$rollback work;
return 1;
break;
case '3':
sprintf(s_snd.errmsg,"一本通存折已销户!");
s_snd.flag = 1;
$rollback work;
return 1;
break;
default:
sprintf(s_snd.errmsg,"一本通存折状态错!");
s_snd.flag = 1;
$rollback work;
return 1;
break;
}
$update fdqfhbc set ljxh = ljxh +1 where zh=$s_rec.xhzh;
if(sqlca.sqlcode){
errout ("帐户销户",ZHXHJYM,__FILE__,__LINE__,sqlca.sqlcode);
sprintf(s_snd.errmsg,"更新一本通记录错[%d] !",sqlca.sqlcode);
$rollback work;
s_snd.flag = 1;
return 1;
}
if (strncmp(rfdqfhbc.czcdh,s_rec.czcdh,8)) {
s_snd.flag = 1;
strcpy(s_snd.errmsg,"存折存单号不符 !");
$rollback work;
return 1;
}
if(rfdqfhbc.ljhs==(rfdqfhbc.ljxh+1)) ybtxhbz = 1;
else ybtxhbz = 0;
$select * into $rxhfh from ffhz3
where dyzh=$s_rec.xhzh and czcdh=$ybt_xh;
}
else{
switch(s_rec.xhzh[12]){
case '1':
$select * into $rxhfh from ffhz1 where zh=$s_rec.xhzh;
break;
case '2':
$select * into $rxhfh from ffhz2 where zh=$s_rec.xhzh;
break;
default:
$select * into $rxhfh from ffhz3 where zh=$s_rec.xhzh;
break;
}
if((is_ybt(rxhfh.dyzh) && rxhfh.zl[0]=='3')){
errout ("帐户销户",ZHXHJYM,__FILE__,__LINE__,sqlca.sqlcode);
s_snd.flag = 1;
$rollback work;
strcpy(s_snd.errmsg,"该户为一本通定期户!");
return 1;
}
if(strcmp(rxhfh.jgm,s_rec.jgm) && (rxhfh.czh==3 || rxhfh.czh==4
|| rxhfh.czh==5 || rxhfh.czh==10 || rxhfh.czh==15)){
errout ("帐户销户",ZHXHJYM,__FILE__,__LINE__,sqlca.sqlcode);
s_snd.flag = 1;
$rollback work;
strcpy(s_snd.errmsg,"该户为异所帐户!");
return 1;
}
}
if (sqlca.sqlcode && sqlca.sqlcode!=100) {
errout ("帐户销户",ZHXHJYM,__FILE__,__LINE__,sqlca.sqlcode);
s_snd.flag = 1;
sprintf(s_snd.errmsg,"检索分户帐失败[%d] !",sqlca.sqlcode);
$rollback work;
return 1;
}
if (sqlca.sqlcode==100){
s_snd.flag=1;
strcpy(s_snd.errmsg,"销户帐户不存在 !");
$rollback work;
return 1;
}
/* add by hgj 2002/02/28 增加余额方判断 */
if ( rxhfh.yef[0] == '1' && rxhfh.ye < 0.00 ){
s_snd.flag=1;
strcpy(s_snd.errmsg,"余额方错误,不能销户,请联系中心!");
$rollback work;
return 1;
}
else if ( rxhfh.yef[0] == '2' && rxhfh.ye > 0.00 ){
s_snd.flag=1;
strcpy(s_snd.errmsg,"余额方错误,不能销户,请联系中心!");
$rollback work;
return 1;
}
/* end add*/
/* add by tl 2001/3/8 为撤销销户 */
if((rxhfh.zhzt[0]=='2')||(rxhfh.zhzt[1]=='1'||rxhfh.zhzt[1]=='2')){
s_snd.flag=1;
strcpy(s_snd.errmsg,"帐户挂失,不能销户!");
$rollback work;
return 1;
}
$insert into xhfh values($rxhfh);
if (sqlca.sqlcode ) {
errout ("帐户销户",ZHXHJYM,__FILE__,__LINE__,sqlca.sqlcode);
s_snd.flag = 1;
sprintf(s_snd.errmsg,"插入销户分户帐失败[%d] !",sqlca.sqlcode);
$rollback work;
return 1;
}
/* end*/
/* add by tl 20010617 前台打印存单的需要 */
s_snd.yhts = bank_days(rxhfh.khrq,rcxtzt.yyrq);
/* add end */
/**************** add by zwq 20000429 *************/
if ((kfbz=chk_kfzh(rxhfh))==-1 || kfbz==1) {
s_snd.flag=1;
strcpy(s_snd.errmsg,"销户帐户还欠费,不能销户 !");
$rollback work;
return 1;
}
/*if (kfbz==0) {
s_snd.flag=1;
strcpy(s_snd.errmsg,"销户帐户检查话费明细失败!");
$rollback work;
return 1;
}*/
/**************** add by zwq 20000429 *************/
strncpy(s_snd.errmsg,rxhfh.zh,14);
if(ybtxhbz)
sprintf(s_snd.errmsg+14,"%1.1d%s",1,"该一本通余额为零,请销户!");
if(rxhfh.zhzt[0]=='1'&&rxhfh.zhzt[1]!='1'&&rxhfh.zhzt[1]!='2'){
s_snd.flag=1;
strcpy(s_snd.errmsg,"销户帐户异常, 不能销户 !");
$rollback work;
return 1;
}
xhfhye = rxhfh.ye;
/****** Modi For X.H. ********/
if( rxhfh.czcdlx == 52 ){
if(rxhfh.hbh==1){
rxhfh.czcdlx = 53;
rxhfh.dyhh = 14+rxhfh.wdzxs;
}
else{
rxhfh.czcdlx = 60;
rxhfh.dyhh = 12+rxhfh.wdzxs;
}
}
/******** End ***************/
if(strncmp(rxhfh.zhmm,s_rec.zhmm,9) && rxhfh.czcdlx!=1000 &&
(rxhfh.zhkz[4]=='1' || rxhfh.zhkz[4]=='4' || rxhfh.zhkz[4]=='5')){
s_snd.flag = 1;
strcpy(s_snd.errmsg,"帐户密码错, 不能销户 !");
$rollback work;
return 1;
}
if(jcz){
strcpy ( s_snd.errmsg , g_errmsg );
s_snd.flag = 1;
$rollback work;
return 1;
}
if ( rxhfh.tcje > 0.0 && s_rec.xhlx==1) {
if (s_snd.flag=chk_tcje(s_rec.sqgy,s_rec.sqgymm,s_rec.jym)) {
if (s_snd.flag==62)
strcpy(s_snd.errmsg,"本日通存现金支取需授权!");
else if(s_snd.flag==100){
strcpy(s_snd.errmsg,"无此授权柜员信息!");
}
$rollback work;
return 1;
}
}
s_snd.ye = rxhfh.ye ;
memcpy ( s_snd.hm , rxhfh.hm , 41 ) ;
return 0;
}
lx_compute()
{
/************ add by zwq 20000615 教育储蓄销户**********/
if ( rxhfh.czh==60&&rxhfh.kmh==21521 ){
/********add by fq 20010719****/
if(rxhfh.zhkz[0]!='0'){
/********add end**********/
if((lx=jycxjx(rxhfh,s_rec.jybz))<-0.005){
s_snd.flag=1;
strcpy(s_snd.errmsg,"利息计算错, 不能销户 !");
$rollback work;
return 1;
}
/********add by fq 20010719*******/
}
else{
lx=0.00;
rlxdgs.lxs=0.00;
}
/********add end*****************/
}
else {
/*******add by fq 20010719*********/
if(rxhfh.zhkz[0]!='0'){
/*******add end*******************/
if((lx=cal_int0(rxhfh,rxhfh.czh,rxhfh.ye))<-0.005){
s_snd.flag=1;
strcpy(s_snd.errmsg,"利息计算错, 不能销户 !");
$rollback work;
return 1;
}
/*******add by fq 20010719*********/
}
else{
lx=0.00;
rlxdgs.lxs=0.00;
}
/*******add end *****************/
}
/************ add by zwq 20000615 教育储蓄销户**********/
/*if((lx=cal_int0(rxhfh,rxhfh.czh,rxhfh.ye))<-0.005){
s_snd.flag=1;
strcpy(s_snd.errmsg,"利息计算错, 不能销户 !");
$rollback work;
return 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -