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

📄 datam.c

📁 dos下pos机程序 连接sybase数据库 使用Microsoft c7 编译
💻 C
📖 第 1 页 / 共 4 页
字号:
     __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 num_upper(double je,char *upper_je)
{
	long mod,i=0;
	long je_i;
	char je_s[31],tmp[31]="      ";
	je*=100.00;
	sprintf(je_s,"%.0f",je);
	je_i=atol(je_s);
	do
	{
		mod=je_i%10;
		je_i=floor(je_i/10);
		if(mod||(mod==0&&(i==2||i==6)))
			uf_strfcat(upper_je,NumUnit[i]);
		else if(mod==0&&i==0)
			uf_strfcat(upper_je,"整");
		 ;
		uf_strmid(tmp,upper_je,0,2);
		if(mod==0&&(!strcmp(tmp,"整")||!strcmp(tmp,"元")||!strcmp(tmp,"万")))
			;
		else
			uf_strfcat(upper_je,NumUpper[mod]);
		i++;
	}	while(je_i>0);
}
//税控打印
void dyfile_tax(double a_se[],double a_ysje,double a_yhje)
{
	char cmd[121]="unitexe 1_Balance_#@A";
	char value[121];
	double se[4];
	int i;
	for(i=0;i<4;i++)
	{
	 se[i]=fabs(a_se[i])*100;
	 if(se[i]!=0.00)
	 {
		sprintf(value,"%c%.0f",'a'+i,se[i]);
		strcat(cmd,value);
	 }
	}
	sprintf(value,"@y%.2f",a_yhje);
	strcat(cmd,value);
	if(a_ysje<0)
		strcat(cmd,"@E2");
	strcpy(value,"");
	num_upper(fabs(a_ysje),value);
	uf_strfcat(value,"@e");
	strcat(cmd,value);
	sprintf(value,"@g%s@l%d@b%s@s%.2f@k个人消费",Syy_Name,g_lsh,g_bc,SPLists->sehj);
	strcat(cmd,value);
	if(Param.bz[1]=='1')
		printf("%s\n",cmd);
	if(Param.bz[0]=='2')
		TaxLogStart(cmd);
	system(cmd);
	if(Param.bz[0]=='2')
		TaxLogEnd();
}

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");
	if(Param.bz[0]=='1'||Param.bz[0]=='2')
	 dyfile_tax(SPLists->se,SPLists->ysje,SPLists->spje-SPLists->ysje); //税控打印
	else
		dyfile("syt.txt","");
	return;
}
//打印未确认收银条
void dywqr(int MaxLines)
{
	int i;
	FILE *f_dj;
	if(Param.Dysyt[0]=='0') return;

  f_dj=fopen("wqr.txt","w");
  if(!f_dj){MsgBoxEx("不能打开文件wqr.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("wqr.txt","dj3.txt");
   dyfile("dj3.txt","");
  }
  else dyfile("wqr.txt","");
  return;
}
//
//打印信用卡对帐单
void dyxyk(void)                       //zh****
{
  int k=2,i=0;
  FILE *xyk_dj;
  if(SPLists->fklp.xykje==0) return;

  if((xyk_dj=fopen("xyk.txt","w"))==NULL)
  { MsgBoxEx("不能打开文件xyk.txt!",1);return; }
  k=2;
  rdxykfh();
  while(k)
  {
   for(i=0;i<_MAXXYK;i++)
    if(SPLists->fklp.xyk[i].kh[0]!='\0'&&
       SPLists->fklp.xyk[i].km[0]!='\0')
     {
      fprintf(xyk_dj,"\n%s 银行卡销售凭证\n",g_scmc);
      if(k==2)
       fprintf(xyk_dj,"            (顾客联)\n");
      else
       fprintf(xyk_dj,"            (银行对帐联)\n");
      if (SPLists->fklp.xykje<0)
       fprintf(xyk_dj,"交易类型:冲正  时间:%s\n",g_now);
      else
       fprintf(xyk_dj,"交易类型:消费  时间:%s\n",g_now);
      fprintf(xyk_dj,"---------------------------------------\n");
      fprintf(xyk_dj,"银行卡卡名:     %s\n",xyk_fhxx.CardName);
      fprintf(xyk_dj,"银行卡卡号:     %s\n",xyk_fhxx.CardNo);
      fprintf(xyk_dj,"  发卡银行:     %s\n",xyk_fhxx.BankName);
      fprintf(xyk_dj,"本次交易额:     %s\n",xyk_fhxx.Amount);
      fprintf(xyk_dj,"银行流水号:     %s\n",xyk_fhxx.PosSer);
      fprintf(xyk_dj,"    授权号:     %s\n",xyk_fhxx.AuthNo);
      fprintf(xyk_dj,"系统参考号:     %s\n",xyk_fhxx.HostSer);
      fprintf(xyk_dj,"收银机:%s  收银员:%s  班次:%s\n",Param.SyjNo,Syy_No,g_bc);
      fprintf(xyk_dj,"---------------------------------------\n");
      fprintf(xyk_dj,"持卡人签名:\n");
      fprintf(xyk_dj,"身份证号码:\n");
      fprintf(xyk_dj,"收银员:\n");
      fprintf(xyk_dj,"欢迎使用银行卡!请妥善保存此凭证\n");
     }
   fprintf(xyk_dj,"\n\n\n");
   k--;
   if(k) fprintf(xyk_dj,"Pause");  //暂停标记
  }
  fclose(xyk_dj);

  if(Param.SyjLx[0]=='4')
  {
   fst_dyzb("xyk.txt","dj2.txt");
   dyfile("dj2.txt","");
  }
  else
   dyfile("xyk.txt","");
}
//打印提货卡对帐单
void dythk(void)
{
  int k=2,i=0;
  FILE *thk_dj;
  if(SPLists->fklp.thkje==0||Param.Dysyt[1]=='0') return;

  if((thk_dj=fopen("thk.txt","w"))==NULL)
  { MsgBoxEx("不能打开文件thk.txt!",1);return; }

  if(Param.PFeed[7]=='0') k = 1;

  while(k)
  {
   fprintf(thk_dj,"\n%s提货卡销售凭证\n",g_scmc);
   if(Param.PFeed[7]!='0')
   {
    if(k==2) fprintf(thk_dj,"           (顾客联)\n");
    else fprintf(thk_dj,"            (收银联)\n");
   }
   fprintf(thk_dj,"流水号:%-4d   时间:%s\n",SPLists->lsh,g_now);
   fprintf(thk_dj,"-------------------------------------\n");
   fprintf(thk_dj,"卡号      原 余 额 本次消费  现 余 额\n");
   for(i=0;i<_MAXTHK;i++)
    if(SPLists->fklp.thk[i].kh[0]!='\0')
     fprintf(thk_dj,"%10s%8.2f%8.2f%8.2f\n",SPLists->fklp.thk[i].kh,
	     SPLists->fklp.thk[i].dqye,SPLists->fklp.thk[i].xzje,
	     SPLists->fklp.thk[i].xye);
   fprintf(thk_dj,"-------------------------------------\n");
   fprintf(thk_dj,"收银机:%s   收银员:%s   班次:%s\n",
		    Param.SyjNo,Syy_No,g_bc);
   fprintf(thk_dj,"谢谢光临!请妥善保存此凭证\n");
   fprintf(thk_dj,"\x1b\x64%c\n",8);
   fprintf(thk_dj, _pFeedLine);
   k--;
   if(k) fprintf(thk_dj,"Pause");
   //    MsgBoxEx("按回车键继续打印提货卡收银联.",1);
  }

  fclose(thk_dj);
  if(Param.SyjLx[0]=='4')
  {
   fst_dyzb("thk.txt","dj2.txt");
   dyfile("dj2.txt","");
  }
  else
   dyfile("thk.txt","");
}
//------------------------------------------------------------------
//清除付款
void ResetFK(_FKStruct *fklp)
{
  int i;
  fklp->xjje=0;
  fklp->thkje=0;
  fklp->xykje=0;
  fklp->qtje=0;
  fklp->zpje=0;
  fklp->ssje=0;
  fklp->zbje=0;
  //清空信用卡数据
  for(i=0;i<_MAXXYK;i++)
  {
   fklp->xyk[i].km[0]='\0';
   fklp->xyk[i].yh[0]='\0';
   fklp->xyk[i].mc[0]='\0';
   fklp->xyk[i].je=0;
  }
  //清空提货卡数据
  for(i=0;i<_MAXTHK;i++)
  {
   fklp->thk[i].kh[0]='\0';
   fklp->thk[i].mm[0]='\0';
   fklp->thk[i].cklx[0]='\0';
   fklp->thk[i].fkje=0;
   fklp->thk[i].dqye=0;
   fklp->thk[i].xzje=0;
  }
}
//
void ResetYHK(_FKStruct *fklp)
{
  //清空优惠卡数据
  fklp->yhk.kh[0]='\0';
  fklp->yhk.mm[0]='\0';
  fklp->yhk.xm[0]='\0';
  fklp->yhk.yhl=0;
  fklp->yhk.ljss=0;
  fklp->yhk.ljys=0;
  fklp->yhk.VIP=0;  //lijing
}
//复位数据
void Reset(_SPLists *lp)
{
  //全部成功提交,清空数据
	int i;
	lp->RecNo=0;
	lp->RecordCount=0;
	lp->state=0;
	lp->spje=0;
	lp->ysje=0;
	lp->lsh=g_lsh;
	lp->sl=0;
	lp->SPList[1].sswr = 0;
	ResetYHK(&(lp->fklp));
	ResetFK(&(lp->fklp));
	lp->sehj=0;
	for(i=0;i<4;i++)
	 lp->se[i]=0;
}
void ResetAll(void)
{
	int i;
  Reset(&__SPLists[0]);
  for(i=0;i<__WorkBuffer;i++)
   __GQList[i].lsh=0;
}
//
void FormatPreview(_SPStruct *_SP,int *_Index,int Fixed)
{
  int i,j,Index;
  char value[9][35],c,_Blank[31];

  Index = *_Index;
  strcpy(value[0],_SP->spbm);      //商品编码
  strcat(value[0]," ");
  strcpy(value[1],_SP->sptm);        //商品条码
  strcat(value[1]," ");
  if(Fixed&&Param.Dyspbm[9]=='1')
   strcpy(value[2],_SP->spbm);
  else
   value[2][0]='\0';
  strcat(value[2],_SP->spmc);
  __process(value[2]);              //处理商品名称
  strcpy(value[3],_SP->jldw);       //单位
  GetDec(value[4],_SP->sl,_xsdws,1);  //处理数量小数

  GetJE(value[5],_SP->sj,Param.Dyspbm[5],  "",5);
  GetJE(value[6],_SP->sjsj,Param.Dyspbm[6],"",6);

⌨️ 快捷键说明

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