- 论坛徽章:
- 0
|
/*
* $Date: 2003/07/15 22:06:37 $
* $Revision: 1.1.1.1 $
* $Name: $
*
* Description: 有折存款
*
*
*/
# include "easy.h"
# include "macro.h"
# include "proc.h"
# define TDKMH 41602
EXEC SQL include "dbbuf.h";
EXEC SQL INCLUDE SQLCA;
long init_fdrmx_1202();
EXEC SQL BEGIN DECLARE SECTION;
struct ldt_rec {
int gyh;
int jym;
int hbh;
char jgm[11];
char zh[17];
int ybtxh;
double jyje;
int zy;
} ldt_rec;
struct ldt_snd {
int flag;
int gylsh;
char errmsg[80];
int dyhh;
int mybs;
char czmx[8193];
char ptxx[2000];
} ldt_snd;
struct ffhz1 ldt_ffhz;
struct fybtfh ldt_fybtfh;
struct ffhz3 ldt_fxjfh;
struct fdrmx ldt_fdrmx;
struct szdxx ldt_szdxx;
struct dlzwydjb ldt_dlzwydjb;
char lds_xjzh[17];
char lds_dac[17];
long ldl_jzgy,ldl_cngy;
long ldl_ds;
long ldl_days;
EXEC SQL END DECLARE SECTION;
long lrl_getflag;
long lrl_rnt;
long lrl_dqhh;
long lrl_dqyh;
long at_function409()
{
EXEC SQL BEGIN DECLARE SECTION;
long ldl_gylsh,ldl_zxlsh;
long lds_zxrq,lds_xtrq;
char lds_jgm[11];
char lds_czcdh;
EXEC SQL END DECLARE SECTION;
char lrs_czline[128];
long lrl_ret;
short lrl_mdy[3] ;
long lrl_lzwybz ; /*零整违约标志*/
char filename[80],prt_file1[20],prt_file2[20];
/*
初始化数据
*/
memset(lrs_czline,0,sizeof(lrs_czline));
memset(&ldt_snd,0,sizeof(ldt_snd));
memset(&ldt_rec,0,sizeof(ldt_rec));
memset( prt_file1, 0, sizeof( prt_file1 ) );
memset( prt_file2, 0, sizeof( prt_file2 ) );
memset( filename, 0, sizeof( filename ) );
memset((char*)&lrl_mdy,0x00,sizeof(lrl_mdy));
ldl_ds=0;
lrl_lzwybz = 0 ;
/* 接受数据包*/
ldt_rec.gyh=_OperTlr;
ldt_rec.jym=_TranNo;
strcpy(ldt_rec.jgm,_InstNo);
get_lng("_HBH",UP.upbuf,&ldt_rec.hbh);
get_string("__ZH",UP.upbuf,ldt_rec.zh);
get_lng("__XH",UP.upbuf,&ldt_rec.ybtxh);
get_double("JYJE",UP.upbuf,&ldt_rec.jyje);
get_lng("I080",UP.upbuf,&ldt_rec.zy);
if (ldt_rec.jyje < 0.005) {
strcpy(ldt_snd.errmsg,"交易金额不能为零");
ldt_snd.flag = -1;
goto return_back;
}
if(init_pub_var(ldt_rec.gyh)) {
strcpy(ldt_snd.errmsg,grs_errmsg);
ldt_snd.flag = -1;
goto return_back;
}
ldl_jzgy = grl_jzgy;
ldl_cngy = grl_cngy;
lds_zxrq = _AccWDay;
/*
初始化结束
*/
/*
获取初始数据
*/
/*取自动分录帐号*/
if(get_auto_accounts(ldt_rec.jgm,ldt_rec.hbh,YWZL_XJZH,lds_xjzh)) {
strcpy(ldt_snd.errmsg,grs_errmsg);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag = -1;
goto return_back;
}
/*取分户帐结构*/
if(get_account_struct(&ldt_ffhz,ldt_rec.zh,ldt_rec.ybtxh,
ldt_rec.hbh)) {
strcpy(ldt_snd.errmsg,grs_errmsg);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag = -1;
goto return_back;
}
lrl_dqhh = ldt_ffhz.dyhh;
lrl_dqyh = ldt_ffhz.dyyh;
/*
交易允许检查
*/
/*检查帐户状态*/
if(chk_account_state(ldt_ffhz.zhzt,2)) {
strcpy(ldt_snd.errmsg,grs_errmsg);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag = -1;
goto return_back;
}
if (ldt_ffhz.zh[ZL_WZ] == ZL_DSDQ ) {
/*定期储蓄只允许零存整取做此交易*/
if(ldt_ffhz.czh != CZH_LCZQ && ldt_ffhz.czh != CZH_JYCX ) {
strcpy(ldt_snd.errmsg,"本交易不允许该储种操作!");
ldt_snd.flag=-760;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
if( ldt_ffhz.czh == CZH_JYCX ) {
if ( ( ABS( ldt_ffhz.ye ) + ldt_rec.jyje ) > JYCX_ZGYE ) {
strcpy( ldt_snd.errmsg, "存入金额超过教育储蓄最高金额" );
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag = -1;
goto return_back;
}
}
/* 2003-03-08 Added by Yuming.Shi For ShaoGuan */
if(ldt_rec.jyje != ldt_ffhz.lfzje) {
sprintf(ldt_snd.errmsg,"该户零整定期每次只能存入[%.2lf]元!",
ldt_ffhz.lfzje);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag=-760;
goto return_back;
}
if(((int)(ldt_rec.jyje*100)%(int)(ldt_ffhz.lfzje*100))!=0) {
strcpy(ldt_snd.errmsg,"零整定期存入金额不符!");
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag=-760;
goto return_back;
}
if(lds_zxrq >= ldt_ffhz.dqrq) {
strcpy(ldt_snd.errmsg,"零整定期已到期!");
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag=-760;
goto return_back;
}
EXEC SQL SELECT :ldt_ffhz.dqrq-:ldt_ffhz.khrq
INTO :ldl_ds FROM cxtzt;
if(SQLCODE) {
sprintf(ldt_snd.errmsg,"计算到期天数错%d",SQLCODE);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag = -1;
goto return_back;
}
if(ABS(ldt_ffhz.ye) == ((long)(ldl_ds / 30)) * ldt_ffhz.lfzje) {
strcpy(ldt_snd.errmsg,"零整定期已存满金额,不需再存!");
ldt_snd.flag=-760;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
if(ABS(ldt_ffhz.ye - ldt_rec.jyje)
> ((long)(ldl_ds/30) * ldt_ffhz.lfzje)) {
strcpy(ldt_snd.errmsg,"累计存入金额已超过总金额!");
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag=-760;
goto return_back;
}
EXEC SQL SELECT :lds_zxrq-:ldt_ffhz.khrq
INTO :ldl_days FROM cxtzt;
if(SQLCODE) {
sprintf(ldt_snd.errmsg,"计算天数错%d",SQLCODE);
ldt_snd.flag = -1;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
if( ( ( ( (long)( ldl_days / 30 ) ) * ldt_ffhz.lfzje )
- ABS( ldt_ffhz.ye ) ) >= ldt_ffhz.lfzje * LCZQ_WYQS ) {
strcpy( ldt_dlzwydjb.jgm, ldt_ffhz.jgm );
ldt_dlzwydjb.hbh = ldt_ffhz.hbh;
strcpy( ldt_dlzwydjb.zh, ldt_ffhz.zh );
ldt_dlzwydjb.wyrq= lds_zxrq ;
ldt_dlzwydjb.wysye = ldt_ffhz.ye;
ldt_dlzwydjb.wysjs = ldt_ffhz.js;
ldt_dlzwydjb.djrq= lds_zxrq ;
ldt_dlzwydjb.djgy = ldt_rec.gyh;
ldt_dlzwydjb.gylsh = 0;
EXEC SQL INSERT INTO dlzwydjb VALUES ( :ldt_dlzwydjb );
if ( SQLCODE && SQLCODE != -239 ) /*不能重复登记*/ {
sprintf( ldt_snd.errmsg, "登记违约登记簿错%d",
SQLCODE );
ldt_snd.flag = -1;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
if (SQLCODE == -239) {
/*读取零整违约登记簿登记日期,对柜员进行通知*/
EXEC SQL SELECT djrq INTO :ldt_dlzwydjb.djrq
FROM easydb:dlzwydjb
WHERE zh = :ldt_ffhz.zh ;
if (SQLCODE && SQLCODE != SQLNOTFOUND) {
sprintf(ldt_snd.errmsg,"查询零整违约登记簿错[%d]",SQLCODE);
ldt_snd.flag = -1;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
lrl_lzwybz = 2 ;
}
else
lrl_lzwybz = 1 ;
}
}
/*对公户只允许存折户的基本存款户交易*/
if(ldt_rec.zh[ZL_WZ] == ZL_DGHQ)
{
/*********2003/06/07 closed by Yuming.Shi
if (ldt_ffhz.czh != CZH_HQCZCK || ldt_ffhz.zhkz[3] != ZHKZ_DGHLX_JBH)
{
strcpy(ldt_snd.errmsg,"本交易不允许该储种操作!");
ldt_snd.flag=-760;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
*********/
/*2003/06/07 added by Yuming.Shi 韶关农信要求不对一般账户进行限制*/
if (ldt_ffhz.czh != CZH_HQCZCK )
{
strcpy(ldt_snd.errmsg,"本交易不允许该储种操作!");
ldt_snd.flag=-760;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
}
lrl_ret = 0;
/*检查是否为通存通兑并是否允许交易*/
if( (lrl_ret = chk_organ_trans_any(ldt_rec.jgm,ldt_ffhz.jgm,
ldt_ffhz.czh,ldt_rec.hbh,ldt_ffhz.zhkz,"2")) < 0) {
strcpy(ldt_snd.errmsg,grs_errmsg);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag=-760;
goto return_back;
}
/*
交易检查结束
*/
/*
分户帐务处理
*/
/*检查分户帐DAC*/
if(chk_account_dac(ldt_ffhz,ldt_ffhz.dac,2))
{
strcpy(ldt_snd.errmsg,"帐户被非法改动过!");
ldt_snd.flag=-760;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
strncpy(lds_dac,ldt_ffhz.dac,17);
/*取折单信息*/
if(get_voucher_struct(&ldt_szdxx,ldt_ffhz.czcdlx))
{
strcpy(ldt_snd.errmsg,grs_errmsg);
ldt_snd.flag = -1;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
ldt_snd.mybs = ldt_szdxx.mybs ;
/*检查存折是否已满*/
lrl_getflag = get_voucher_rowid(VERIFY_PGLN,1,ldt_ffhz.czcdlx,
&ldt_ffhz.dyhh,&ldt_ffhz.dyyh,0);
if(lrl_getflag )
{
ldt_snd.flag = -760;
strcpy(ldt_snd.errmsg,grs_errmsg);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
/*取未登折明细*/
if (ldt_ffhz.wdzxs != 0)
{
if(gen_not_prt_record(ldt_snd.czmx,8192,ldt_rec.zh,
ldt_ffhz.wdzxs,ldt_ffhz.czcdlx))
{
strcpy(ldt_snd.errmsg,grs_errmsg);
ldt_snd.flag=-760;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
}
/*初始化当日明细*/
if(init_fdrmx_1202())
{
goto return_back;
}
/*生成当日明细和分户帐数据*/
if(crt_ledger_data(&ldt_ffhz,&ldt_fdrmx,ldt_rec.jgm,"2",ldt_rec.jyje,
ldt_rec.jym,ldt_rec.zy,0,"0",0,'1',1))
{
strcpy(ldt_snd.errmsg,grs_errmsg);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag = -1;
goto return_back;
}
/*del by mmnx
ldt_ffhz.zqcs=ldt_ffhz.zqcs+1;
*/
ldt_ffhz.wdzxs=0;
/*修改分户帐*/
if(upd_ledger(ldt_ffhz))
{
strcpy(ldt_snd.errmsg,grs_errmsg);
ldt_snd.flag = -1;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
/* 更新一本通分户*/
if(ldt_ffhz.ybtbz == 1)
{
if(upd_multi_ledger(ldt_ffhz,lrl_dqhh,lrl_dqyh))
{
strcpy(ldt_snd.errmsg,grs_errmsg);
ldt_snd.flag = -1;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
}
strcpy( ldt_fdrmx.dfkmh,KMH_XJ );
/*插明细帐*/
if(insert_detailed_ledger(ldt_fdrmx))
{
strcpy(ldt_snd.errmsg,grs_errmsg);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag = -1;
goto return_back;
}
/*生成存折明细*/
if(gen_bankbook_record(lrs_czline,
ldt_ffhz,
ldt_fdrmx.jdbz[0],
ldt_fdrmx.jyrq,
ldt_fdrmx.zy,
ldt_fdrmx.jyje,
0.00,
ldt_fdrmx.gy1))
{
strcpy(ldt_snd.errmsg,grs_errmsg);
ldt_snd.flag = -1;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
strcat(ldt_snd.czmx,lrs_czline);
/*
分户帐务处理结束
*/
/*
现金帐户处理
*/
EXEC SQL SELECT * INTO :ldt_fxjfh
FROM ffhz3
WHERE zh = :lds_xjzh;
if(SQLCODE)
{
sprintf(ldt_snd.errmsg,"取现金帐户错%d",SQLCODE);
ldt_snd.flag = -1;
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
/* 检查分户帐DAC*/
if(chk_account_dac(ldt_fxjfh,ldt_fxjfh.dac,2))
{
strcpy(ldt_snd.errmsg,"现金帐户被非法改动过!");
ldt_snd.flag=-760; /*现金户DAC错*/
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
strncpy(lds_dac,ldt_fxjfh.dac,17);
/*计算积数*/
if (ldt_fxjfh.zhkz[0] != ZHKZ_JX_BJX)
{
ldt_fxjfh.js = get_account_accrual(ldt_fxjfh,lds_zxrq);
}
ldt_fxjfh.ye=ldt_fxjfh.ye + ldt_rec.jyje;
ldt_fxjfh.zqcs = ldt_fxjfh.zqcs + 1;
/*设置当前行号和页号*/
lrl_getflag = get_voucher_rowid(SET_CUR_PGLN,0,ldt_fxjfh.czcdlx,
&ldt_fxjfh.dyhh,&ldt_fxjfh.dyyh,0);
if(lrl_getflag < 0)
{
ldt_snd.flag = -760;
strcpy(ldt_snd.errmsg,grs_errmsg);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
ldt_fxjfh.wdzxs=0;
ldt_fxjfh.jyrq = lds_zxrq;
/*修改现金分户*/
if ( upd_ledger( ldt_fxjfh ) ) {
strcpy( ldt_snd.errmsg, grs_errmsg );
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag = -760;
goto return_back;
}
/*
现金分户处理结束
*/
/*钱箱处理*/
ldt_snd.flag = proc_cashbox(ldt_fxjfh.hbh,ldt_rec.jyje,ldl_cngy,JMC);
if (ldt_snd.flag)
{
strcpy(ldt_snd.errmsg,grs_errmsg);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
goto return_back;
}
ldt_snd.gylsh = ldt_fdrmx.gylsh;
/*
处理凭条信息
*/
if ( gen_voucher_record( ldt_ffhz, ldt_fdrmx,
0.00, ldt_snd.ptxx ) )
{
strcpy(ldt_snd.errmsg,grs_errmsg);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag = -760;
goto return_back;
}
/*
生成凭条结束
*/
if(strcmp(ldt_snd.ptxx,""))
{
sprintf(prt_file1,"P1.%06d",ldt_rec.gyh);
sprintf(filename,"%s/%s",getenv("UDTFILEDIR"),prt_file1);
/* 一本通 */
if ( ldt_ffhz.ybtbz == 1 ) {
lrl_ret = buf_to_printfile("YBTPT1",ldt_snd.ptxx,filename);
}
/* 非一本通 */
else {
lrl_ret = buf_to_printfile("PT1",ldt_snd.ptxx,filename);
}
if ( lrl_ret ) {
find_err(lrl_ret,ldt_snd.errmsg);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag = -760;
goto return_back;
}
}
if(strcmp(ldt_snd.czmx,""))
{
sprintf(prt_file2,"P2.%06d",ldt_rec.gyh);
sprintf(filename,"%s/%s",getenv("UDTFILEDIR"),prt_file2);
/* 一本通帐户 */
if ( ldt_ffhz.ybtbz == 1 ) {
lrl_ret = buf_to_printfile("YBTCZMX1",ldt_snd.czmx,filename) ;
}
/* 非一本通存折户 */
else {
lrl_ret = buf_to_printfile("CZMX1",ldt_snd.czmx,filename) ;
}
if( lrl_ret )
{
find_err(lrl_ret,ldt_snd.errmsg);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag = -760;
goto return_back;
}
}
if(strcmp(prt_file1,""))
{
sprintf(_SndFile,"%s",prt_file1);
if(strcmp(prt_file2,""))
{
sprintf(_SndFile,"%s+%s",_SndFile,prt_file2);
}
}
else if(strcmp(prt_file2,""))
{
sprintf(_SndFile,"%s",prt_file2);
}
ldt_snd.flag = 0 ;
return_back:
if(ldt_snd.flag==0) {
put_lng("_hostseqno",DOWN.downbuf,ldt_snd.gylsh);
if (lrl_lzwybz != 0) {
/*
*韶关客户要求零存整取当月漏存,次月可补存,
*次月不补,则为违约。系统进行提示,
*违约后存入的金额按活期计息 ----Yuming.Shi 2003-01-08
*/
if (lrl_lzwybz == 1)
sprintf( ldt_snd.errmsg,
"交易成功,已两次漏存,违约后存入金额按活期计息");
else {
rjulmdy( ldt_dlzwydjb.djrq,lrl_mdy);
sprintf( ldt_snd.errmsg,
"交易成功,[%04d/%02d/%02d]曾两次漏存,违约后存入金额按活期计息",
lrl_mdy[2],lrl_mdy[0],lrl_mdy[1]);
}
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
put_string("_errmsg",DOWN.downbuf,ldt_snd.errmsg);
}
}
else {
put_string("_errmsg",DOWN.downbuf,ldt_snd.errmsg);
}
return ldt_snd.flag;
} /*** end of main ****/
/*初始化当日明细*/
long init_fdrmx_1202()
{
strcpy(ldt_fdrmx.kmh," ");
ldt_fdrmx.hbh = 1;
strcpy(ldt_fdrmx.khdh,"0");
strcpy(ldt_fdrmx.zh,"0");
strcpy(ldt_fdrmx.dljg,"0");
strcpy(ldt_fdrmx.jgm,"0");
ldt_fdrmx.xtrq=0;
ldt_fdrmx.jyrq=0;
ldt_fdrmx.zxlsh = 0;
ldt_fdrmx.jym = ldt_rec.jym;
ldt_fdrmx.jyje = 0.00;
ldt_fdrmx.ye = 0.00;
ldt_fdrmx.js = 0.00;
strcpy(ldt_fdrmx.pzbz,"1");
strcpy(ldt_fdrmx.tdbz,"0");
ldt_fdrmx.zy = ldt_rec.zy;
ldt_fdrmx.dycs = 1;
strcpy(ldt_fdrmx.sqm,"0");
ldt_fdrmx.pzzl = 0;
strcpy(ldt_fdrmx.pzhm,"0");
strcpy(ldt_fdrmx.jdbz,"0");
ldt_fdrmx.dqyc = ldt_ffhz.dyyh;
ldt_fdrmx.dqybs = ldt_ffhz.dyhh;
ldt_fdrmx.pj = 0.0000;
ldt_fdrmx.gy1 = ldl_jzgy;
ldt_fdrmx.gy2 = 0;
strcpy(ldt_fdrmx.dac,"1");
strcpy(ldt_fdrmx.zl," ");
strcpy(ldt_fdrmx.dyzh,lds_xjzh);
strcpy(ldt_fdrmx.jysj," ");
ldt_fdrmx.cngy = 0;
if((ldt_fdrmx.gylsh = get_clerk_serial_num(ldt_rec.gyh)) <= 0)
{
strcpy(ldt_snd.errmsg,grs_errmsg);
errlog1(8,__FILE__,__LINE__,ldt_snd.errmsg ) ;
ldt_snd.flag = -1;
return -1;
}
return 0;
} |
|