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

📄 datamp.txt

📁 dos下pos机程序 连接sybase数据库 使用Microsoft c7 编译
💻 TXT
📖 第 1 页 / 共 3 页
字号:
int ProcessSP(void)
{
  int Result;
  char value[41];
  Result=sql_tm(&OrigSP,1);
  switch(Result)
  {
   case 1:
   case 2:
   case 3:
   case 4:break;
   case 33: InsertRecord(); //新商品增加记录
	    Result=0;
	    break;
   default:if(Result>100)
	    {
	     CalculateSum();//计算合计
	     InBuffer(-1,0x9904,3,Result-100);
	     sprintf(value,"%s %.2f",
		     SPLists->SPList[Result-100].spbm,
		     SPLists->SPList[Result-100].je);
	     ShowGuXian(value,1,0);
	     InBuffer(-1,0x9904,3,SPLists->RecNo);
	     Result=0;        //已经存在的商品
	    }
	    break;
  }
  return Result;
}
//改变商品数量
void ChangeSPSL(int RecNo,char *sl,int Att)
{
  double fsl;
  char value[31];
  if(RecNo>SPLists->RecordCount)
   RecNo=SPLists->RecordCount;

  fsl=atof(sl);           //要改变的数量
  if(!Att)                //改变数量
  {
   /*fsl=(fsl>1000.0)?1000.0:fsl;  //控制数量的范围
   fsl=(fsl<-1000.0)?-1000.0:fsl;  */

   if(fsl!=SPLists->SPList[RecNo].sl)
   {
    SPLists->SPList[RecNo].sl=fsl;  //设置数量
    SPLists->SPList[RecNo].je=SPLists->SPList[RecNo].sj*fsl;    //商品金额
    SPLists->SPList[RecNo].ssje=SPLists->SPList[RecNo].sjsj*fsl;//应收金额
   }
  }
  else                    //改变售价
  {
   if(SPLists->SPList[RecNo].bz)
   {
    MsgBoxEx("此商品不能够修改售价!",1);
    return;
   }
   if(Param.Xgsjfs[0]=='0'||(Param.Xgsjfs[0]=='1'&&
     (!strcmp(SPLists->SPList[RecNo].jyfs,"10"))))
   {
    if(SPLists->SPList[RecNo].yhl==0)
     SPLists->SPList[RecNo].yhl = 1.0;

    SPLists->SPList[RecNo].sj=fsl;
    SPLists->SPList[RecNo].yhj=SPLists->SPList[RecNo].yhl*fsl;
    if(SPLists->fklp.yhk.kh[0]!='\0')  //已刷优惠卡
     {
      SPLists->SPList[RecNo].sjsj=SPLists->SPList[RecNo].yhj;  //设置优惠价
      SPLists->SPList[RecNo].ssje=SPLists->SPList[RecNo].yhj*SPLists->SPList[RecNo].sl;//实收金额
     }
    else
     {
      SPLists->SPList[RecNo].sjsj=SPLists->SPList[RecNo].sj;
      SPLists->SPList[RecNo].ssje=SPLists->SPList[RecNo].sj*
				  SPLists->SPList[RecNo].sl;//实收金额
     }
    SPLists->SPList[RecNo].je=SPLists->SPList[RecNo].sj*SPLists->SPList[RecNo].sl;
   }
   else
    if(fsl!=SPLists->SPList[RecNo].sjsj)
    {
     SPLists->SPList[RecNo].sjsj=fsl;  //设置售价
     SPLists->SPList[RecNo].ssje=SPLists->SPList[RecNo].sl*fsl;//应收金额
    }
  }
  CalculateSum();//计算合计
  sprintf(value,"%s %.2f",
	  SPLists->SPList[RecNo].spbm,
	  SPLists->SPList[RecNo].je);
  ShowGuXian(value,1,0);
  InBuffer(-1,WM_PAINTGRID,3,RecNo);  //显示某行
  if(Att)
  {
   SPLists->RecNo=SPLists->RecordCount+1; //记录移动到最后
   InBuffer(-1,WM_PAINTGRID,3,SPLists->RecNo);  //显示某行
  }
}
//打折处理
void DaZhe(double zk,int Att) //Att  打折类型 0--单品,1--全部
{
  int i;
  if(zk>0)
  {
   zk=(zk>10)?10.0:zk;
   zk=(zk<1)?1.0:zk;
   zk=zk/10.0;
  }
  if(Att)                              //全部打折
  {
   if(zk<0)
   {
    zk=-zk;   //变为正数
    zk=zk/SPLists->spje;  //计算折率
   }
   for(i=1;i<=SPLists->RecordCount;i++)
   {
    SPLists->SPList[i].zkl=zk;
    SPLists->SPList[i].yhj=GetRound(SPLists->SPList[i].sj*zk);
    SPLists->SPList[i].sjsj=SPLists->SPList[i].yhj;
    SPLists->SPList[i].ssje=GetRound(SPLists->SPList[i].sjsj*
				     SPLists->SPList[i].sl);
    SPLists->SPList[i].state=4;  //设置打折商品标记
		//InBuffer(-1,0x9904,3,i);  //显示某行
    }
   CalculateSum();//计算合计
   InBuffer(-1,0x9904,1,0);  //显示某行
  }
  else
  {
   if(SPLists->SPList[SPLists->RecNo].bz)
   {
    MsgBoxEx("此商品不能够打折!",1);
    return;
   }
   if(zk>0)
   {
    SPLists->SPList[SPLists->RecNo].zkl=zk;
    SPLists->SPList[SPLists->RecNo].yhj=
	     GetRound(SPLists->SPList[SPLists->RecNo].sj*zk);//zh

    SPLists->SPList[SPLists->RecNo].sjsj=
	     GetRound(SPLists->SPList[SPLists->RecNo].sj*zk);
    SPLists->SPList[SPLists->RecNo].ssje=
	     GetRound(SPLists->SPList[SPLists->RecNo].sjsj*
		      SPLists->SPList[SPLists->RecNo].sl);
   }
   else
    if(SPLists->SPList[SPLists->RecNo].sl>0)
     SPLists->SPList[SPLists->RecNo].ssje=0-zk;
    else
     SPLists->SPList[SPLists->RecNo].ssje=zk;
   SPLists->SPList[SPLists->RecNo].state=4;  //设置打折商品标记
   CalculateSum();//计算合计
   InBuffer(-1,0x9904,3,SPLists->RecNo);  //显示某行
  }
}
//优惠处理
//void RemoveValidChar(
void YouHuiChuLi(char *skh)
{
  int i;
  char kh[11],mm[7],Mark;
  Mark = SPLists->fklp.yhk.kh[0];
  if(Mark=='\0')
  {
   uf_strmidEx(skh,skh);
   uf_strmid(kh,skh,0,10);   //卡号
   uf_strmid(mm,skh,10,6);   //密码
   strcpy(SPLists->fklp.yhk.kh,kh);
   strcpy(SPLists->fklp.yhk.mm,mm);
  }
  if(Mark!='\0'||sql_yhk(&(SPLists->fklp.yhk))) //是否有效优惠卡
   {
    strcpy(kh,SPLists->fklp.yhk.kh);
    for(i=1;i<=SPLists->RecordCount;i++)
     if(kh[0]==g_VIPsw[0]&&Param.Gbksy[0]!='0') //使用贵宾卡
      {
       if(SPLists->fklp.yhk.yhl==0)
	 SPLists->fklp.yhk.yhl=atof(g_VIPyhl);
       SPLists->fklp.yhk.VIP=1;

       if(Param.Gbksy[0]=='1'||SPLists->SPList[i].yhl>SPLists->fklp.yhk.yhl)
	 SPLists->SPList[i].yhl=SPLists->fklp.yhk.yhl;

       SPLists->SPList[i].sjsj=SPLists->SPList[i].sj*
			       SPLists->SPList[i].yhl;  //实际售价
       SPLists->SPList[i].ssje=SPLists->SPList[i].sjsj*
			       SPLists->SPList[i].sl;
      }
     else
      if(SPLists->SPList[i].state<3||SPLists->SPList[i].state>5)       //优惠处理
       {
	SPLists->SPList[i].sjsj=SPLists->SPList[i].yhj;  //实际售价等于优惠价
	SPLists->SPList[i].ssje=SPLists->SPList[i].sjsj*
				SPLists->SPList[i].sl;
       }
	//g_hyxf=1;//zh***
     CalculateSum();                        //计算合计
	//显示顾显
     InBuffer(-1,0x9904,1,0);  //显示某行
   };
}
//信用卡
int GetFreeXYK(void)
{
  int k;
  for(k=0;k<_MAXXYK;k++)
   if(SPLists->fklp.xyk[k].km[0]=='\0')
    return k;
  return -1;
}

//提货卡管理
double TiHuoKa(char *skh,double fkce,int *xh)
{
  int k,Mark=1;
  double Result=0,ce;
  char kh[11],mm[7];

  if(!fkce) return 0;

  uf_strmidEx(skh,skh);     //去掉字符串开头的特殊字符
  uf_strmid(kh,skh,0,10);   //卡号
  uf_strmid(mm,skh,10,6);   //密码

  k=sql_checkthk(kh);       //检查提货卡是否已经存在
  if(k!=-1)                 //提货卡未存在,k是第一个提货卡空结构的索引
  {
   strcpy(SPLists->fklp.thk[k].kh,kh);
   strcpy(SPLists->fklp.thk[k].mm,mm);
   if(!sql_thk(&(SPLists->fklp.thk[k]))) //查询提货卡
    SPLists->fklp.thk[k].kh[0]='\0';     //提货卡查询失败
   else
   {
    SPLists->fklp.thk[k].xh=k+1;
    *xh=k;
    if(fkce<0)                          //是退货
    {
     if(Param.Thk[1]=='1')              //限制退货金额
      {
       ce=SPLists->fklp.thk[k].dqye-SPLists->fklp.thk[k].fkje;
       if(ce>=0) Result=0;
       else if(ce<fkce)                 //余额必须小于发卡金额
	     Result=fkce;
       else Result=ce;                  //退货金额
      }
     else Result=fkce;
     if(Result&&Param.Thk[2]=='1')
      if(!InPutPassWord(g_cashcode))
       Result=0;
    }
    else
    {
     ce=SPLists->fklp.thk[k].dqye;
     if(ce>fkce) Result=fkce;
     else Result=ce;
    }
    if(Result)
    {
     Result = uf_round(Result,2);
     SPLists->fklp.thk[k].xzje=Result;   //下帐金额
     SPLists->fklp.thk[k].xye=SPLists->fklp.thk[k].dqye-Result;
     if(Param.Thk[3]=='2'||(Param.Thk[3]=='1'&&Result<-0.01))
      if(!ShowTiHuoKa(&(SPLists->fklp.thk[k])))
       Result=0;
      else
       Result=SPLists->fklp.thk[k].xzje;
    }
    if(!Result)
     SPLists->fklp.thk[k].kh[0]='\0';
   }
  }
  return Result;
}

//提货卡查询
void QueryTHK(char *skh)
{
  double Result=0;
  char kh[11],mm[7];
  THK tempthk;

  uf_strmidEx(skh,skh);
  uf_strmid(kh,skh,0,10);   //卡号
  uf_strmid(mm,skh,10,6);   //密码

  strcpy(tempthk.kh,kh);
  strcpy(tempthk.mm,mm);
  if(sql_thk(&tempthk)) 	//查询提货卡
   ShowTiHuoKaEx(&tempthk);
  sql_thkclose();
  return;
}

//结帐
int JieZhang(char *Value)
{
  double je;
  if(!strcmp(Value,"")) return 1;   //未付款
  je=atof(Value);
  if(je<SPLists->ysje) return 2;    //付款不足

  SPLists->fklp.xjje=je;
  SPLists->fklp.ssje=je;
  SPLists->fklp.zbje=je-SPLists->ysje;
  InBuffer(-1,0x9907,0,0);          //金额找零
  return 0;
}
//挂起检查
int GuaQiCheck(void)
{
  if(_SPListCount>=__WorkBuffer) return 2;  //挂起数不能超过规定笔数
  if(!SPLists->RecordCount) return 1;       //当前无销售商品,不用挂起
  return 0;
}

int GuaQi(char *GqName)
{
 // FILE *stream;
  int i;
  FILE *fp;
  char FileName[51];

  for(i=0;i<__WorkBuffer;i++)
   if(__GQList[i].lsh==0)             //找一个空闲的挂起区
   {
     sprintf(FileName,"DATA\\GQ%d.DAT",i+1);
     fp = fopen(FileName,"wb+");
     if(fp==NULL) return -1;
     //  g_lsh++;                     //流水号加1
     //保存到磁盘
     fwrite((char *)SPLists,sizeof(_SPLists),1,fp);
     fclose(fp);
      //
     if(Param.Gqjg[0]=='2')
      if(!sql_insertgq(i+1,SPLists->RecordCount,SPLists->spje,SPLists->ysje))
       return -1;

     __GQList[i].lsh=i+1;
     __GQList[i].sps=SPLists->RecordCount;
     Reset(SPLists);                  //清空工作区域
     SPLists->lsh=g_lsh;
     InBuffer(-1,0x9904,1,0);        //显示数据
     break;
   }
  _SPListCount++;                     //挂起数加1
  return 0;
}
//解挂
void JieGua(int Index)
{
  FILE *fp;
  char FileName[51];
  //从磁盘读入数据
  sprintf(FileName,"DATA\\GQ%d.DAT",__GQList[Index].lsh);
  fp = fopen(FileName,"rb");
  if(fp==NULL) return;

  _SPListCount--;                     //挂起数加1
  fread((char *)SPLists,sizeof(_SPLists),1,fp);
  fclose(fp);
  remove(FileName);

  if(Param.Gqjg[0]=='2')
   sql_removegq(__GQList[Index].lsh,SPLists->RecordCount,SPLists->spje,SPLists->ysje);

  SPLists->lsh = g_lsh;
  __GQList[Index].lsh = 0;
  InBuffer(-1,0x9904,1,0);	      //显示数据
}
//延时函数
void Sleep(clock_t nDelay)
{
  clock_t s,e;
  s=clock();
  e=s+nDelay;
  for(;s<e;)
   s=clock();
}
//延时函数
void SleepEx(clock_t nDelay)
{
  clock_t s,e;
  s=clock();
  e=s+nDelay;
  for(;s<e;)
  {
   if(_bios_keybrd(_KEYBRD_READY))
   {
    _bios_keybrd(0);
    break;
   }
   s=clock();
  }
}
//*******************************************************************//
//打开钱箱
void smz_opencd(void)
{
  _asm{
       mov ah,0x40
       mov dx,0x310
       in  al,dx
       or  al,ah
       out dx,al
      }
}
void dyfile(char *FileName,char *afxStr)
{
  int j=0,k=0,g=0,i;
  int c;
  char Buffer[81],afxBuf[50];
  FILE *fPrn,*fFile;
  strcpy(afxBuf,afxStr);
  if(_PortType==0)             //直接写打印端口
  {
   fFile=fopen(FileName,"r");
   if(!fFile)
    { strcpy(Buffer,"不能打开文件:");
      strcat(Buffer,FileName);
      MsgBoxEx(Buffer,1);
      return;}
   while(!feof(fFile))
   {
    if(k==0)
    {
     k=1;
     fPrn = fopen(Param.Port,"w");
     if(!fPrn)
     {
      MsgBoxEx("打印失败,打开端口错误!",1);
      fclose(fFile);
      return;
     }
     if(afxBuf[0]!='\0')
     {
      fprintf(fPrn,afxBuf);
      if(Param.Qz[0]<='1') fprintf(fPrn,"\n");
      afxBuf[0]='\0';
     }
    }
    i=0;
    while(1)   //读取数据
    {
     c=fgetc(fFile);
     if(c==EOF||c=='\n') //读取一行后中止
     {
      Buffer[i]='\0';
      break;
     }
     Buffer[i++]=(char)c;
    }
    g = strcmp(Buffer,"Pause"); //检查是否是暂停控制字符串

    if(g)
    {
     fprintf(fPrn,"%s",Buffer);
     //if(Param.Dysyt[0]=='1')
     //        换行 不换行
     //  切纸   1     2
     //不切纸   0     3
     if(Param.Qz[0]<='1') fprintf(fPrn,"\n");
    }
    j++;
    if(j%_Dyjg==0||c==EOF||g==0)
    {
     fclose(fPrn);
     Sleep(g_dyys);
     if(g==0) MsgBoxEx("按回车键继续打印...",1);
     k=0;
     j=0;
    }
   }
   fclose(fFile);
  }
  else    //调用外部打印程序
  {
   if(_PortType==1)
    sprintf(Buffer,"type %s>%s",FileName,Param.Port);
   else
    sprintf(Buffer,"%s %s",Param.Port,FileName);
   system(Buffer);
  }
}
//打印收银条
void dysyt(int MaxLines)
{
  int i;
  FILE *f_dj;
  if(Param.Dysyt[0]=='0') return;     //禁止打印
  if(Param.SyjLx[0]=='4')
   f_dj=fopen("dj1.txt","w");
  else
   f_dj=fopen("syt.txt","w");
  if(!f_dj){MsgBoxEx("不能打开文件syt.txt!",1);return;}
  for(i=0;i<MaxLines;i++)
   fprintf(f_dj,__Preview[i]);

  if(Param.Tjfs[0]=='0')
   fprintf(f_dj, _pFeedLine);
  fclose(f_dj);

  if(Param.SyjLx[0]=='4')
   fst_dyzb("dj1.txt","syt.txt");
  dyfile("syt.txt","");
  return;
}
//打印未确认收银条
void dywqr(int MaxLines)
{
  int i;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -