⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s11050.ec.c

📁 源程序是银行综合业务平台中基本业务里的其中几个子业务的c语言的源码
💻 C
📖 第 1 页 / 共 3 页
字号:
/******************************************************************
*	功    能:	帐户销户 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 + -