📄 qtsylib.c
字号:
return 1;
}
//时点打折函数
double sql_sddz(_SPStruct *rec,char *dzlx)
{
DBFLT8 yhl=0.0;
DBCHAR _dzlx[2]="0";
if(!__syfs||dbproc==NULL||DBDEAD(dbproc)) //单计时点打折
yhl = dbf_sddz(rec->spbm,_dzlx);
else
{
//求符合条件的最大编码
dbfreebuf(dbproc);
dbcmd(dbproc, "select yhl,dzlx ");
dbcmd(dbproc, "from jxc_sddzb ");
dbfcmd(dbproc,"where '%s'like ltrim(rtrim(bm))+'%%'",rec->spbm);
dbcmd(dbproc," and getdate() between stime and etime and qfbz='1' ");
dbcmd(dbproc," and convert(char(8),getdate(),8) between convert(char(8),stime,8) ");
dbcmd(dbproc," and convert(char(8),etime,8)");
dbsqlexec(dbproc);
while ((result_code = dbresults(dbproc)) != NO_MORE_RESULTS)
if(result_code == SUCCEED)
{
dbbind(dbproc, 1, FLT8BIND, (DBINT) 0,(BYTE *) &yhl);
dbbind(dbproc, 2, NTBSTRINGBIND, (DBINT) 0,_dzlx);
while (dbnextrow(dbproc) != NO_MORE_ROWS);
if(DBCOUNT(dbproc)==0)
{
yhl = 0.0;
break;
}
}
}
strcpy(dzlx,_dzlx);
return yhl;
}
//取商品类别优惠率(类别编码)
double sql_yhl(char *splb)
{
DBFLT8 yhl=0.0;
char _buf[21];
if(!__syfs||dbproc==NULL||DBDEAD(dbproc)) //单机优惠率
{
if(!GetDataFromDbf(&_LBBDataSet,_LBBFields,"lbbm",splb)) //找到
GetDataFromField(_LBBDataSet.FieldCount,_LBBFields,"yhl",_buf,&yhl);
}
else
{
dbfreebuf(dbproc);
dbcmd(dbproc, " select isnull(yhl,1) ");
dbcmd(dbproc, " from jxc_lbb ");
dbfcmd(dbproc," where lbbm='%s' ",splb);
dbsqlexec(dbproc);
while((result_code=dbresults(dbproc))!=NO_MORE_RESULTS)
if(result_code==SUCCEED)
{
dbbind(dbproc, 1, FLT8BIND, (DBINT) 0,(BYTE *) &yhl);
while(dbnextrow(dbproc)!=NO_MORE_ROWS);
}
else break;
// printf("%s %f\n",splb,yhl);
// getchar();
}
return (yhl<0)?0.0:yhl;
}
//从条码称表中取商品编码
int sql_spbm(_SPStruct *CurrSP,char *_spbm)
{
DBCHAR spbm[9],spmc[51];
DBFLT8 sj;
char _buf[21];
int Result=2;
if(!__syfs||dbproc==NULL||DBDEAD(dbproc)) //单机优惠率
{
Result=GetDataFromDbf(&_TMCDataSet,_TMCFields,"tplu",_spbm);
if(!Result)
{
GetDataFromField(_TMCDataSet.FieldCount,_TMCFields,"spbm",spbm,NULL);
GetDataFromField(_TMCDataSet.FieldCount,_TMCFields,"spmc",spmc,NULL);
GetDataFromField(_TMCDataSet.FieldCount,_TMCFields,"sj",_buf,&sj);
}
}
else
{
dbfreebuf(dbproc);
dbcmd(dbproc, " select spbm,spmc,sj from jxc_tmcb ");
dbfcmd(dbproc," where tplu='%s' ",_spbm);
dbsqlexec(dbproc);
while((result_code=dbresults(dbproc))!=NO_MORE_RESULTS)
if(result_code==SUCCEED)
{
dbbind(dbproc,1,NTBSTRINGBIND,(DBINT) 0, spbm);
dbbind(dbproc,2,NTBSTRINGBIND,(DBINT) 0, spmc);
dbbind(dbproc,3,FLT8BIND,(DBINT)0, (BYTE *)&sj);
while(dbnextrow(dbproc)!=NO_MORE_ROWS);
if(!DBCOUNT(dbproc))
Result=1;
else
Result=0;
break;
}
else
break;
}
if(!Result)
{
strcpy(CurrSP->spbm,spbm);
strcpy(CurrSP->spmc,spmc);
CurrSP->sj=sj;
CurrSP->yhj=sj;
CurrSP->sjsj=sj;
return 0;
}
else return -1;
}
//从商品表中取
int sql_spbmex(_SPStruct *CurrSP,char *_spbm)
{
DBCHAR spbm[9],spmc[51];
DBFLT8 sj;
char _buf[21];
int Result=2;
if(!__syfs||dbproc==NULL||DBDEAD(dbproc)) //单机优惠率
{
Result=GetDataFromDbf(&_SPBDataSet,_SPBFields,"spbm",_spbm);
if(!Result)
{
GetDataFromField(_SPBDataSet.FieldCount,_SPBFields,"spbm",spbm,NULL);
GetDataFromField(_SPBDataSet.FieldCount,_SPBFields,"spmc",spmc,NULL);
GetDataFromField(_SPBDataSet.FieldCount,_SPBFields,"sj",_buf,&sj);
}
}
else
{
dbfreebuf(dbproc);
dbcmd(dbproc, " select spbm,rtrim(spmc)+isnull(ggxh,''),sj from jxc_spb");
dbfcmd(dbproc," where spbm='%s'",_spbm);
dbsqlexec(dbproc);
while((result_code=dbresults(dbproc))!=NO_MORE_RESULTS)
if(result_code==SUCCEED)
{
dbbind(dbproc,1,NTBSTRINGBIND,(DBINT) 0, spbm);
dbbind(dbproc,2,NTBSTRINGBIND,(DBINT) 0, spmc);
dbbind(dbproc,3,FLT8BIND,(DBINT)0, (BYTE *)&sj);
while(dbnextrow(dbproc)!=NO_MORE_ROWS);
if(!DBCOUNT(dbproc))
Result=1;
else
Result=0;
break;
}
else
break;
}
switch(Result)
{
case 0:strcpy(CurrSP->spbm,spbm);
strcpy(CurrSP->spmc,spmc);
CurrSP->sj=sj;
CurrSP->sjsj=sj;
break;
case 1:MsgBoxEx("无该条码秤商品!",3);
break;
case 2:MsgBoxEx("无法查询到相关的商品!",3);
break;
}
return (!Result)?0:-1;
}
//取商品明细
int sql_spxx(_SPStruct *CurrSP)
{
DBCHAR spmc[51],gg[11],gzbm[5],csbm[7],splb[7],jyfs[3],jldw[5],spdj[2];
DBFLT8 sj,yhj,jj,spsl;
char tmpstr[7],_buf[30],dzlx[2];
double tmpyhl=0;
int Result=0,FCount;
spdj[0]='0';
spdj[1]='\0';
if(!__syfs||(dbproc==NULL||DBDEAD(dbproc))) //单机收银方式
{ //或者无法联通数据库
//从本地查询商品
Result=GetDataFromDbf(&_SPBDataSet,_SPBFields,"spbm",CurrSP->spbm);
if(!Result) //找到
{
FCount = _SPBDataSet.FieldCount;
GetDataFromField(FCount,_SPBFields,"spmc",spmc,NULL);
GetDataFromField(FCount,_SPBFields,"ggxh",gg,NULL);
strcat(spmc,"(");
strcat(spmc,gg);
strcat(spmc,")");
GetDataFromField(FCount,_SPBFields,"gzbm",gzbm,NULL);
GetDataFromField(FCount,_SPBFields,"csbm",csbm,NULL);
GetDataFromField(FCount,_SPBFields,"splb",splb,NULL);
GetDataFromField(FCount,_SPBFields,"jyfs",jyfs,NULL);
GetDataFromField(FCount,_SPBFields,"jldw",jldw,NULL);
GetDataFromField(FCount,_SPBFields,"sj",_buf,&sj);
GetDataFromField(FCount,_SPBFields,"yhj",_buf,&yhj);
GetDataFromField(FCount,_SPBFields,"jj",_buf,&jj);
GetDataFromField(FCount,_SPBFields,"spsl",_buf,&spsl);
}
}
else
{
dbfreebuf(dbproc);
dbcmd(dbproc, " select rtrim(spmc)+isnull(ggxh,''),jldw,splb,gzbm,csbm,jyfs, ");
dbcmd(dbproc, " isnull(jj,0),isnull(sj,0),isnull(yhj,0),isnull(spsl,1),spdj");
dbcmd(dbproc, " from jxc_spb");
dbfcmd(dbproc," where spbm='%s'",CurrSP->spbm);
dbsqlexec(dbproc);
Result = 2;
while((result_code=dbresults(dbproc))!=NO_MORE_RESULTS)
if(result_code==SUCCEED)
{
dbbind(dbproc,1,NTBSTRINGBIND,(DBINT) 0, spmc);
dbbind(dbproc,2,NTBSTRINGBIND,(DBINT) 0, jldw);
dbbind(dbproc,3,NTBSTRINGBIND,(DBINT) 0, splb);
dbbind(dbproc,4, NTBSTRINGBIND, (DBINT) 0, gzbm);
dbbind(dbproc,5, NTBSTRINGBIND, (DBINT) 0, csbm);
dbbind(dbproc,6, NTBSTRINGBIND, (DBINT) 0, jyfs);
dbbind(dbproc,7, FLT8BIND, (DBINT) 0,(BYTE *) &jj);
dbbind(dbproc,8, FLT8BIND, (DBINT) 0,(BYTE *) &sj);
dbbind(dbproc,9, FLT8BIND, (DBINT) 0,(BYTE *) &yhj);
dbbind(dbproc,10, FLT8BIND, (DBINT) 0,(BYTE *) &spsl);
dbbind(dbproc,11, NTBSTRINGBIND, (DBINT) 0, spdj);
Result = 0;
while(dbnextrow(dbproc)!=NO_MORE_ROWS);
if(!DBCOUNT(dbproc)) //无该商品
{
Result=1;
break;
}
}
else
{
Result=2;
break;
}
}
switch(Result)
{
case 0:if(spdj[0]=='1')
{
MsgBoxEx("商品已被冻结,不能销售!",3);
return -1;
}
break;
case 1:MsgBoxEx("找不到商品!",3);
return -1;
case 2:MsgBoxEx("寻找商品失败!",3);
return -1;
}
if(CurrSP->state!=1)
strcpy(CurrSP->spmc,spmc);
strcpy(CurrSP->jldw,jldw);
strcpy(CurrSP->gzbm,gzbm);
strcpy(CurrSP->splb,splb);
strcpy(CurrSP->csbm,csbm);
strcpy(CurrSP->jyfs,jyfs);
CurrSP->jj=jj;
CurrSP->spsl=spsl;
CurrSP->yhl=1.0;
if(CurrSP->state==0) //
{
if(CurrSP->sl==0)
CurrSP->sl=1;
CurrSP->sj=sj;
if(CurrSP->sjsj==0)
CurrSP->sjsj=sj;
CurrSP->yhj=yhj;
if(sj&&yhj) CurrSP->yhl=yhj/sj; //优惠率默认等于1
else CurrSP->yhj=sj;
}
//检查时点打折表
if(!(Param.Bzspdz[0]=='0'&&CurrSP->state==2)&&
!(Param.Tmspdz[0]=='0'&&CurrSP->state==1))
{
if(Param.Sddz[0]!='0') //允许时点打折
{
tmpyhl=sql_sddz(CurrSP,dzlx);
}
if(tmpyhl) //有时点打折
{
CurrSP->state=5; //设置时点打折商品标记
if(Param.Sddz[0]=='1') //负数方式
{
if(tmpyhl<0)
{
CurrSP->yhj=0-tmpyhl; //优惠价
if(CurrSP->sj)
CurrSP->yhl=CurrSP->yhj/CurrSP->sj; //时点优惠率
else
CurrSP->yhl=1.0;
}
else
{
CurrSP->yhj=CurrSP->sj*tmpyhl;
CurrSP->yhl=tmpyhl;
}
}
else if(Param.Sddz[0]=='2') //小于1方式
{
if(tmpyhl<0) tmpyhl=0-tmpyhl;
if(tmpyhl>=1)
{
CurrSP->yhj=tmpyhl; //优惠价
if(CurrSP->sj)
CurrSP->yhl=CurrSP->yhj/CurrSP->sj; //时点优惠率
else
CurrSP->yhl=1.0;
}
else
{
CurrSP->yhj=CurrSP->sj*tmpyhl;
CurrSP->yhl=tmpyhl;
}
}
else //按打折类型打折
{
if(tmpyhl<0) tmpyhl=0-tmpyhl;
if(dzlx[0]=='0') //打折率
{
CurrSP->yhj=CurrSP->sj*tmpyhl;
CurrSP->yhl=tmpyhl;
}
else //打折价
{
CurrSP->yhj=tmpyhl*CurrSP->bzsl; //优惠价
if(CurrSP->sj)
CurrSP->yhl=CurrSP->yhj/CurrSP->sj; //时点优惠率
else
CurrSP->yhl=1.0;
}
}
}
else //无时点打折,求类别打折
if(CurrSP->yhl==1&&yhj==0) //尚未优惠
{
tmpyhl=sql_yhl(splb);
if(tmpyhl==0) //取类别优惠价
{
uf_strmid(tmpstr,splb,0,4);
tmpyhl=sql_yhl(tmpstr);
if(tmpyhl==0)
{
uf_strmid(tmpstr,splb,0,2);
tmpyhl=sql_yhl(tmpstr);
if(!tmpyhl) tmpyhl=1;
}
}
CurrSP->yhl=tmpyhl;
CurrSP->yhj=CurrSP->sj*CurrSP->yhl;
}
}
//计算实际价
if(Param.PFeed[3]!='0'&&SPLists->fklp.yhk.kh[0]!='\0') //已刷优惠卡
{
// printf("\nok yhj:%f",CurrSP->yhj);
if(Param.Gbksy[0]!='0'&&SPLists->fklp.yhk.VIP==1&&
CurrSP->sj!=CurrSP->yhj) //lijing VIP卡(特价商品除外)
CurrSP->sjsj=CurrSP->sj*SPLists->fklp.yhk.yhl;
else
CurrSP->sjsj=CurrSP->yhj;
}
//检查商品类型
switch(CurrSP->state)
{
case 0://正常商品
CurrSP->je = CurrSP->sj*CurrSP->sl;
CurrSP->ssje = CurrSP->sjsj*CurrSP->sl;
break;
case 2://二次包装商品
CurrSP->je=CurrSP->sj; //计算金额
CurrSP->ssje=CurrSP->sjsj; //计算金额
break;
case 1://条码称商品
if(strcmp(CurrSP->jyfs,"10")==0&&Param.Xzbm[5]=='1')
{
CurrSP->sl = 1.0;
CurrSP->sj = CurrSP->je;
CurrSP->sj = CurrSP->ssje;
CurrSP->sjsj = CurrSP->ssje;
}
break;
case 3://改销价商品
break;
case 4://打折商品
break;
case 5://时点销售商品
CurrSP->je=CurrSP->sj; //计算金额
CurrSP->sjsj=CurrSP->yhj;
CurrSP->ssje=CurrSP->sjsj; //计算金额
break;
//lijing
case 8://联营商品
CurrSP->je=CurrSP->sj;
CurrSP->sjsj=CurrSP->yhj;
CurrSP->ssje=CurrSP->sjsj;
break;
//
}
//设置工作方式
strcpy(CurrSP->gzbm,g_gz_mode);
return 0x21;
}
//检查商品是否已经存在于销售列标中
//返回1时表示已经存在
int sql_checkop(double sls,double sld)
{
switch(Param.PFeed[5])
{
case '0':if(sls<0) return 0; //负数不叠加
break;
case '1':if((sls<0&&sld>0)||(sls>0&&sld<0)) //不同符号叠加
return 0;
break;
case '2':if(sls<0||(sls<0&&sld>0)||(sls>0&&sld<0))
return 0;
}
return 1;
}
int sql_spexists(_SPStruct *CurrSP)
{
int i;
_SPStruct *Orig=NULL;
if(Param.Sldjfs[0]=='0') return 0;
for(i=SPLists->RecordCount;i>=1;i--)
if(CurrSP->mark==SPLists->SPList[i].mark&&
strcmp(CurrSP->spbm,SPLists->SPList[i].spbm)==0&&
(CurrSP->mark==0||
(CurrSP->mark==1&&strcmp(CurrSP->spmc,SPLists->SPList[i].spmc)==0)||
(CurrSP->mark==2&&strcmp(CurrSP->sptm,SPLists->SPList[i].sptm)==0)))
if(sql_checkop(CurrSP->sl,SPLists->SPList[i].sl))
{ //相等
Orig=&(SPLists->SPList[i]);
if(CurrSP->sl==0) CurrSP->sl=1;
break;
}
if(strcmp(CurrSP->jyfs,"10")==0&&Param.PFeed[4]=='0')
Orig = NULL;
if(Param.Sldjfs[0]!='0'&&Orig) //找到并且允许迭加
if(Orig->RecNo==SPLists->RecordCount||Param.Sldjfs[0]=='2')
{
if(CurrSP->state==1&&strcmp(CurrSP->jyfs,"10")==0&&
Param.Xzbm[5]=='1')
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -