📄 s11060.ec.c
字号:
/*功 能: 帐户销转开户 SERVER 程序
* 交 易 码: 110600
* 作 者: E.C. 1998.05 珠 海
******************************************************************/
#include "easy.h"
$ include dbbuf.h;
#define EXTERN
#define ZHXHJYM "110600"
$struct snd_str{
int flag;
long lsh;
int dyhh;
long tzcq;
double tzll;
double lx;
double bj;
double ye ;
char hm[41];
char errmsg[80];
char zh[14];
char xhnbzh[14];
char khybtzh[14];
int khzhxh;
int khdyhh;
}s_snd;
$struct rec_str{
int gyh;
int jym;
int xhlx;
int bz;
int khbz;
int pzzl;
char jgm[10];
char xhzh[14];
char zhmm[9];
char czcdh[9];
char sqgymm[9];
char pzhm[9];
long sqgy;
struct ffhz1 rfhz;
}s_rec;
double get_int_rate();
$struct ffhz3 rxhfh,rlxfh,rdffh,rbwfh,rgxfh,rlxsfh;
int lxs_bz;
char ybtfile[80];
FILE *fpw,*fp,*fp1;
int getflag;
$char lxzczh[14],lxs_zdflzh[14],xjzh[14];
double xhfhye;
$double bj,lx,mylxs,mylx;
/*
double fabs();
*/
main(argc,argv)
int argc;
char *argv[];
{
char _address[10],buf[100];
char fname[41];
char sendfile[41];
$char note[13];
int i,jcz,flag_xh;
$int mybs,ys,czh;
$short ind;
$char ybt_xh[9];
double cal_int0();
$double qxye;
$char cq[3];
/*初始化数据*/
init();
if ( recv_from(argv[1],argv[2],_address,(void *)&s_rec,NULL)<0 )
return;
if ( strcmp (argv[2],ZHXHJYM)!=0) return;
printf("OK xhlx[%d] khbz[%d]",s_rec.xhlx,s_rec.khbz);fflush(stdout);
lx=bj=0.00;
lxs_bz=jcz=0;
mylxs=mylx=0.00;
strcpy(lxs_zdflzh,"\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_back1;
}
/* 打开相关文件 */
if ( file_open(sendfile,fname) ) {
errout ("帐户销户","打开文件错",__FILE__,__LINE__,0);
goto return_back1;
}
$begin work;
printf("\npzhm[%s],pzzl[%d]\n",s_rec.pzhm,s_rec.pzzl); fflush(stdout);
/* 得到销户分户信息并且进行检查 */
if ( get_check_xhfh(ybt_xh,xhfhye,jcz) ) {
errout ("帐户销户","",__FILE__,__LINE__,0);
goto return_back1;
}
if(rxhfh.czh==DGCZH || rxhfh.zh[12]=='1' || 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(rxhfh.zhkz[0]!='0'){
if((lx=cal_int0(rxhfh,rxhfh.czh,rxhfh.ye))<-0.005){
s_snd.flag=1;
strcpy(s_snd.errmsg,"利息计算错, 不能销户 !");
$rollback work;
goto return_back1;
}
}
else{
lx=0.00;
rlxdgs.lxs=0.00;
}
printf("\npzhm[%s],pzzl[%d]\n",s_rec.pzhm,s_rec.pzzl); fflush(stdout);
mylx=lx;
/*利息单凭证销号*/
$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_back1;
}
printf("\n test lx[%16.2f] \n",lx);fflush(stdout);
printf("\n line [%d] test lx[%16.2f] \n",__LINE__,s_snd.lx);fflush(stdout);
/*
s_snd.lx=lx;
*/
if ( rsxxbm.sx[1] == '1' && s_rec.pzhm[0]!=0 ) {
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_back1;
}
}
}
/*
if(fabs(lx)>0.005){
if((px_del1(atol(s_rec.pzhm),atol(s_rec.pzhm),s_rec.jgm,g_jzgy,89,rcxtzt.yyrq,s_rec.jym))!=0){
s_snd.flag=1;
strcpy(s_snd.errmsg,"利息单凭证错, 不能销户 !");
$rollback work;
goto return_back1;
}
}
*/
/* 在销转开户登记簿中登记*/
if ( add_dxzkhdjb(bj,lx) ) {
errout ("帐户销户","",__FILE__,__LINE__,0);
goto return_back1;
}
if ( lxsfh_cl() ) {
errout ("帐户销户","",__FILE__,__LINE__,0);
goto return_back1;
}
/************准备rflxdwj数据******************/
if(rxhfh.zhkz[0]!='0'){
if ( lxdwj_cl(lx) ) {
errout ("帐户销户","",__FILE__,__LINE__,0);
goto return_back1;
}
}
if(s_rec.xhlx==1) { /*本金转开户,利息支取现金*/
if ( xjfh_cl(bj,lx) ) {/*现金分户处理*/
errout ("帐户销户","",__FILE__,__LINE__,0);
goto return_back1;
}
}
else{
/*本金利息转开户*/
/** lxs_cl **/
if( !lxs_bz ) rlxdgs.lxs=0.00;
if( s_rec.khbz==1 && kh_cl(bj+lx-rlxdgs.lxs,argv[2])) { /*开户处理*/
$rollback work;
goto return_back1;
}
}
if(rxhfh.zhkz[0]!='0'){
if ( fabs(lx)>0.005 && lxfh_cl(lx) ) {
errout ("帐户销户","",__FILE__,__LINE__,0);
goto return_back1;
}
}
if ( wdz_cl(bj,lx) ) {/*未登折处理*/
errout ("帐户销户","",__FILE__,__LINE__,0);
goto return_back1;
}
if(rxhfh.zhkz[0]!='0'){
if ( lxfhmx_cl(lx) ) {/*利息分户明细处理*/
errout ("帐户销户","",__FILE__,__LINE__,0);
goto return_back1;
}
}
if ( xhfhmx_cl(bj,lx) ) {/*销户分户明细处理*/
errout ("帐户销户","",__FILE__,__LINE__,0);
goto return_back1;
}
if ( kxh_lxd_cl(bj,lx) ) {/*开销户和利息单处理*/
errout ("帐户销户","",__FILE__,__LINE__,0);
goto return_back1;
}
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_back1;
}
if ( dkfh_cl() ) {/*贷款分户处理*/
errout ("帐户销户","",__FILE__,__LINE__,0);
goto return_back1;
}
/* 无余额帐销户处理 */
if ( wyefhxh_cl() ) {
errout ("帐户销户","",__FILE__,__LINE__,0);
goto return_back1;
}
break;
}
if ( zz_qt_cl() ) {/*总账及其他处理*/
errout ("帐户销户","",__FILE__,__LINE__,0);
goto return_back1;
}
$commit work;
fclose(fpw);
fclose(fp);
$close database;
if(s_rec.rfhz.zl[0]=='3' && s_snd.flag==0 && s_rec.rfhz.kbz!=1)
sprintf(s_snd.errmsg,"%.2f",s_rec.rfhz.lfzje);
if(s_rec.rfhz.kbz==1 && s_rec.rfhz.zl[0]=='3'){
sprintf(buf,"%s+%s+%s",sendfile,fname,ybtfile);
killblank(s_snd.errmsg);
}
else {
sprintf(buf,"%s+%s",sendfile,fname);
}
send_to(argv[1],argv[2],_address,(void *)&s_snd,buf);
return 0;
return_back1:
fclose(fpw);
fclose(fp);
$close database;
send_to(argv[1],argv[2],_address,(void *)&s_snd,NULL);
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);
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");
}
kh_cl(khje,file)
$double khje;
char *file;
{
int flag,i,tmpint,zt;
char pjgm[4],nbzh[14],MY[17];
$long kmxh,mybs,czcdh,wxbh;
$double ye;
long zhxh,intkl;
short mdy[3];
$char zdsx[7];
$char pxqsh[9],pxjsh[9],chqsh1[9],chjsh1[9];
char checkbit;
char zl;
$char note[13];
int get_period();
long cal_dqrq();
$long xh,dycdzh;
strcpy(s_snd.zh,"\0");
memset(MY,0,17);
intkl=0;
/*控制前后台利率唯一*/
if ( check_ll() ) {
errout ("帐户销户","检查利率",__FILE__,__LINE__,0);
return (-1);
}
$select sum(fse) into $khje from dxzkhdjb where gyh=$g_jzgy and jyrq=$rcxtzt.yyrq and bz=0;
if (sqlca.sqlcode && sqlca.sqlcode!=100) {
s_snd.flag = 1;
sprintf ( s_snd.errmsg , "检索销转开户登记簿错[%d]!" , sqlca.sqlcode );
return (-1);
}
$update dxzkhdjb set bz=1 where gyh=$g_jzgy and jyrq=$rcxtzt.yyrq and bz=0;
if (sqlca.sqlcode && sqlca.sqlcode!=100) {
s_snd.flag = 1;
sprintf ( s_snd.errmsg , "修改销转开户登记簿错[%d]!" , sqlca.sqlcode );
return (-1);
}
s_rec.rfhz.ye = s_rec.rfhz.ye * khje;
s_snd.bj=s_rec.rfhz.ye;
zl=s_rec.rfhz.zl[0];
if((zl<'0')||(zl>'8')||(zl=='5')){ /* zl is error! */
strcpy ( s_snd.errmsg , "开户帐类错!");
s_snd.flag=1;
return (-1);
}
/*判断纳税编号是否存在或唯一*/
if (strncmp(s_rec.rfhz.nsbh,"000000",6) && s_rec.rfhz.nsbh[0]!=0 && s_rec.rfhz.nsbh[0]!=' ') {
$select * from ffhz2 where nsbh=$s_rec.rfhz.nsbh and zhzt[1]!='2';
if (sqlca.sqlcode && sqlca.sqlcode!=100) {
s_snd.flag = 1;
sprintf ( s_snd.errmsg , "检索分户帐错[%d]!" , sqlca.sqlcode );
return (-1);
}
else if (!sqlca.sqlcode){
s_snd.flag = 1;
strcpy ( s_snd.errmsg , "纳税编号已存在!");
return (-1);
}
}
/* insert kmzz ,insert by wei hua wu 1998 6 1 modify by lwy 1999 09 13*/
if(s_rec.rfhz.kbz!=1 || s_rec.rfhz.zl[0]!='3'){
memcpy(rzkmzz.jgm,s_rec.rfhz.jgm,9);
rzkmzz.jgm[9]=0;
rzkmzz.hbh=s_rec.rfhz.hbh;
rzkmzz.kmh=s_rec.rfhz.kmh;
$select * from zkmzz where jgm=$rzkmzz.jgm and
hbh=$rzkmzz.hbh and kmh=$rzkmzz.kmh;
if((sqlca.sqlcode!=0)&&(sqlca.sqlcode!=SQLNOTFOUND)){
errout("销转开户",file,__FILE__,__LINE__,sqlca.sqlcode);
s_snd.flag = 1;
sprintf ( s_snd.errmsg , "检索科目总帐错[%d]!" , sqlca.sqlcode );
return (-1);
}
if(sqlca.sqlcode==SQLNOTFOUND){
rzkmzz.ye=rzkmzz.jye=rzkmzz.js=rzkmzz.jjs=0.00;
rzkmzz.rcye=rzkmzz.rcjye=rzkmzz.rjfse=rzkmzz.rdfse=0.00;
rzkmzz.rjbs=rzkmzz.rdbs=0;
rzkmzz.ycjs=rzkmzz.ycjjs=rzkmzz.ycye=rzkmzz.ycjye=rzkmzz.yjfse=rzkmzz.ydfse=0.00;
rzkmzz.yjbs=rzkmzz.ydbs=0;
rzkmzz.jcjs=rzkmzz.jcjjs=rzkmzz.jcye=rzkmzz.jcjye=rzkmzz.jjfse=rzkmzz.jdfse=0.00;
rzkmzz.jjbs=rzkmzz.jdbs=0;
rzkmzz.ncjs=rzkmzz.ncjjs=rzkmzz.ncye=rzkmzz.ncjye=rzkmzz.njfse=rzkmzz.ndfse=0.00;
rzkmzz.njbs=rzkmzz.ndbs=0;
rzkmzz.rkhs=rzkmzz.ykhs=rzkmzz.jkhs=rzkmzz.nkhs=rzkmzz.ljkhs=1;
rzkmzz.rxhs=rzkmzz.yxhs=rzkmzz.jxhs=rzkmzz.nxhs=rzkmzz.ljxhs=0;
memcpy(rzkmzz.yef,s_rec.rfhz.yef,1);
rzkmzz.yef[1]=0;
rzkmzz.fsrq=rcxtzt.yyrq;
rjulmdy(rcxtzt.yyrq,mdy);
rzkmzz.yf=mdy[0];
rzkmzz.nf=mdy[2];
$insert into zkmzz values($rzkmzz);
if(sqlca.sqlcode!=0){
errout("销转开户",file,__FILE__,__LINE__,sqlca.sqlcode);
sprintf ( s_snd.errmsg , "插入科目总帐失败[%d]!" , sqlca.sqlcode );
s_snd.flag = 1;
return (-1);
}
}
else{
$update zkmzz set (rkhs,ykhs,jkhs,nkhs,ljkhs)=
(rkhs+1,ykhs+1,jkhs+1,nkhs+1,ljkhs+1)
where jgm=$rzkmzz.jgm and
hbh=$rzkmzz.hbh and kmh=$rzkmzz.kmh;
if(sqlca.sqlcode || sqlca.sqlerrd[2]!=1){
errout("销转开户",file,__FILE__,__LINE__,sqlca.sqlcode);
sprintf ( s_snd.errmsg , "更新科目总帐失败[%d]!" ,sqlca.sqlcode );
s_snd.flag = 1;
return (-1);
}
}
}
/* insert fhz */
switch(zl){
case '0':
case '6':
case '7':
case '8':
$select kmxh into $kmxh from skmzd where kmh=$s_rec.rfhz.kmh;
if(sqlca.sqlcode){
strcpy ( s_snd.errmsg , "中心科目字典错!");
s_snd.flag = 1;
return (-1);
}
if ( zl=='6' ) {
xh=atoi(s_rec.rfhz.zh);
if (( xh>=1 ) && ( xh<10 ))
s_rec.rfhz.cwdh=s_rec.rfhz.kmh + xh ;
if (( xh>=10 ) && ( xh<100 ))
s_rec.rfhz.cwdh=s_rec.rfhz.kmh*10 + xh;
if (( xh>=100 ) && ( xh<1000 ))
s_rec.rfhz.cwdh=s_rec.rfhz.kmh*100 + xh;
if (( xh>=1000 ) && ( xh<10000 ))
s_rec.rfhz.cwdh=s_rec.rfhz.kmh*1000 + xh;
}
strcpy(pjgm,"\0");
strncpy(pjgm,s_rec.rfhz.jgm+6,3);
pjgm[3]=0;
sprintf ( nbzh , "%3s%03d%04s%02d%c" , pjgm , kmxh , killblank(s_rec.rfhz.zh) , s_rec.rfhz.hbh , zl );
strcpy(s_rec.rfhz.zh,nbzh);
$select * from ffhz3 where zh=$s_rec.rfhz.zh;
if (!sqlca.sqlcode) {
s_snd.flag = 1;
strcpy ( s_snd.errmsg , "分户帐中已存在该帐号!");
return (-1);
}
if (sqlca.sqlcode != SQLNOTFOUND) {
errout("现金开户",file,__FILE__,__LINE__,sqlca.sqlcode);
s_snd.flag = 1;
sprintf ( s_snd.errmsg , "检索分户帐错[%d]!" , sqlca.sqlcode );
return (-1);
}
$select * from dkxhdjb where zh=$s_rec.rfhz.zh;
if (!sqlca.sqlcode) {
s_snd.flag = 1;
strcpy ( s_snd.errmsg , "开销户登记簿中已存在该帐号!");
return (-1);
}
if (sqlca.sqlcode != SQLNOTFOUND) {
errout("销转开户",file,__FILE__,__LINE__,sqlca.sqlcode);
sprintf ( s_snd.errmsg , "检索开销户登记簿错[%d]!" , sqlca.sqlcode );
s_snd.flag = 1;
return (-1);
}
sprintf(MY,"000%13s",s_rec.rfhz.zh);
killblank(s_rec.rfhz.zhmm);
intkl=atol(s_rec.rfhz.zhmm);
compmm(MY,intkl,s_rec.rfhz.zhmm);
if (fhz_dac(s_rec.rfhz,s_rec.rfhz.dac,1) !=0) {
strcpy ( s_snd.errmsg , g_errmsg );
s_snd.flag = 1;
return (-1);
}
$insert into ffhz3 values($s_rec.rfhz);
if (sqlca.sqlcode) {
errout("现金开户",file,__FILE__,__LINE__,sqlca.sqlcode);
sprintf ( s_snd.errmsg , "插入分户帐失败[%d]!" , sqlca.sqlcode );
s_snd.flag = 1;
return (-1);
}
sprintf(note,"%02d-%-5d",s_rec.rfhz.hbh,s_rec.rfhz.kmh);
$insert into dkxhdjb values($s_rec.rfhz.jgm,$s_rec.rfhz.zh,
$s_rec.rfhz.hm,$s_rec.rfhz.khrq,$note,$g_jzgy,0, "0");
if (sqlca.sqlcode) {
errout("现金开户",file,__FILE__,__LINE__,sqlca.sqlcode);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -