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

📄 qtsylib.c

📁 dos下pos机程序 连接sybase数据库 使用Microsoft c7 编译
💻 C
📖 第 1 页 / 共 5 页
字号:
  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 + -