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

📄 query.c

📁 税控收款机源码:拼音输入法,LCD,VFD驱动,IC卡驱动,税控国标
💻 C
📖 第 1 页 / 共 5 页
字号:
        {
          error=KEY_ERROR;
	  break;
	}
	
	num=numstr_to_long(numkey_buf,point,2);//转换输入数为十进制
	
	if(!num||num>g_max_plu_no||num<(*plu_start))//检查其合法性 
	{
	  error=OVER_RANGE_ERROR;
	  break;
	}
	for(i=0;i<MAX_KEY_LEN;i++) numkey_buf[i]=0;//初始化数字输入缓冲区
        
	step++;
	//----------提示设置结果---------------//
	if(step==1) 
	{
	  *plu_start=num;
	  sprintf(disp_buf,"请输入PLU的终止号\r起始号:%d\r",*plu_start);
	} 
	else 
	{
	  *plu_end=num;
	  sprintf(disp_buf,"PLU范围:%u--%u\r",*plu_start,*plu_end);
	}
      	clear_lcd(1,2);
        lcd_disp(1,0,disp_buf); 
        con_disp(1,0,strlen(disp_buf),disp_buf);
	if(step==1) break;
        else return OK;
      break;
      default:
        error=KEY_ERROR;
      break;  
    }	
  }
}	
#endif
#ifdef QY_BRANCH_RPT
/*==================================================================
函数功能:打印部门查询或清机报表
入口参数:function_no--功能号
出口参数:
返回值:   ==OK,成功
	   !=0k,失败
全局变量:g_manufacturer_info
编制人:     日期:2003-06-30
==================================================================*/	
uchar print_branch_rpt(uchar function)
{
  uchar error;
  uchar i,k,len;
  uchar buf[60],buf1[15];
  uchar report_date[7];
  uchar qj[]={"清机"};
  //uchar  t_negative;   //1:t_cash为负数  0:t_cash为正数
 // uchar  total_negative;   //1:total_cash为负数  0:total_cash为正数
  //uchar  no_space;          //用于计算负号的打印位置
  //uchar branch_num;
  long t_cash,total_cash;
  //struct branch_struct branch[MAX_BRANCH_NUM+1];
  struct branch_struct branch;
  //----检查清除权限---//
  if(function==BRANCH_REPORT_DEL&&check_user_card())
    return USERCARD_MAC_ERROR;
  /* for(i=0;i<MAX_BRANCH_NUM;i++)
  {
    error =read_eeprom(BRANCH_ADDR+i*(uint)sizeof(branch),(uint)sizeof(branch),&branch); 

	send_char(branch.lrc);
    
  } 
  */
  /*error = read_eeprom(BRANCH_ADDR,(uint)(BRANCH_STRUCT_LEN*MAX_BRANCH_NUM),(uchar *)&branch);
    if(error) return READ_EEPROM_FAIL;
  for(i=0;i<MAX_BRANCH_NUM;i++)
  {
    error=lrcdata(BRANCH_STRUCT_LEN-1,0,(uchar *)&branch[i]);
    if(error){if(i==0) return LRC_ERROR;else break;}
  }
  branch_num=i;//实际部门数
  send_char(i);
  */
  
	//HYS620
	error = GotoHomePosition();
	if(error)
	return PRINT_FAIL;
	//END HYS620
  
  len=(PRINTAL_NUM-12)/2;
  add_blank(len,buf);
  strcat(buf,"部门查询报表");	
  if(function==BRANCH_REPORT_DEL)  
  memcpy(&buf[len+4],qj,4);
  error=print_str(buf);
  if(error) return(error);
  strcpy(buf,"机器号:");
  HexToStr(g_manufacturer_info.machinery_no,&buf[5],8);
  error=print_str(buf);
  if(error) return(error);
  
  error = read_eeprom(REPORT_DATE,5,report_date);
  if(error) return READ_EEPROM_FAIL;
  for(i=0;i<5;i++) buf1[i] = report_date[i];//起始时间
  read_rtc(buf);
  for(i=0;i<5;i++) buf1[i+6] = buf[i];//当前时间
  sprintf(buf,"20%02bx年%02bx月%02bx日至20%02bx年%02bx月%02bx日"
	 ,buf1[0],buf1[1],buf1[2],buf1[6],buf1[7],buf1[8]);
  error=print_str(buf);
  if(error) return(error);
  total_cash=0;
  //total_negative=0;
  for(i=0;i<MAX_BRANCH_NUM;i++)
  {
   error =read_eeprom(BRANCH_ADDR+i*(uint)sizeof(branch),(uint)sizeof(branch),&branch);
   if(error) return READ_EEPROM_FAIL;
  
   error=lrcdata(BRANCH_STRUCT_LEN-1,0,(uchar *)&branch);
   if(error) return LRC_ERROR;
    k=1;
    if(branch.money&&branch.quantity)
    {
       
      //sprintf(buf,"%-20s",branch.name);
      strcpy(buf,branch.name);
	  
      if(strlen(buf)>10)      //如果名字的长度大于10,则将名字单独打印一行
        {
         error=print_str(buf);
         if(error) return(error);
         memset(buf,0,60);
         memset(buf,' ',10);
         }
	
      pri_format(branch.quantity,5,buf1);
	  print_format(PRINTAL_NUM-19,&buf[strlen(buf)],buf1);
      pri_format(branch.money,6,&buf[PRINTAL_NUM-15]);//&buf[PRINTAL_NUM-9]);
      /*Alan 03-10-20
       //针对负数情况的处理  
	  if(!total_negative)  total_cash+=branch[i].money;
	  else if(total_negative>branch[i].money)  total_cash-=branch[i].money;
	  else
	     {
	       total_cash=branch[i].money-total_cash;
	       total_negative=0;	 	
	     }
	     */
     total_cash+=branch.money;
     error=print_str(buf);
	 
     if(error) return(error);
      k=0;
   
    }
    if(branch.retreat_money&&branch.retreat_num)
    {
      if(k) sprintf(buf,"%-10s",branch.name);		    	
      else strcpy(buf,"          ");
      pri_format3(branch.retreat_num,5,buf1);
      print_format(PRINTAL_NUM-19,&buf[strlen(buf)],buf1);
      pri_format3(branch.retreat_money,5,&buf[PRINTAL_NUM-15]);//&buf[PRINTAL_NUM-9]);
      
      /*Alan 03-10-20
      //willy 2003-8-27 17:09 在计算合计和总计时需要考虑负数的情况
      			if (total_negative)  total_cash-=branch[i].retreat_money;
			else if(total_cash>=branch[i].retreat_money) total_cash-=branch[i].retreat_money;
			else  
			   { 
			    total_cash=branch[i].retreat_money-total_cash;
			    total_negative=1;			   
			   }
      *///Alan 03-10-20
     
		total_cash-=branch.retreat_money;
  
		error=print_str(buf);
		if(error) return(error);
      
		//2005.11.7
		t_cash=branch.money-branch.retreat_money;
		sprintf(buf,"合计金额:");
		add_blank(PRINTAL_NUM-19,&buf[9]);
		pri_format(t_cash,7,&buf[PRINTAL_NUM-15]);//&buf[PRINTAL_NUM-10]);
		/*Alan 03-10-20
		if(t_negative) 
		{
			for(no_space=PRINTAL_NUM-10;no_space<PRINTAL_NUM;no_space++)
			if(buf[no_space]!=' ')  break; 
			buf[no_space-1]='-';   //如果为负数则需要添加负号
		}
		*/
		error=print_str(buf);
		if(error) return(error);  
	}
	}
  
	sprintf(buf,"总计金额:");
	add_blank(PRINTAL_NUM-19,&buf[9]);
	pri_format(total_cash,7,&buf[PRINTAL_NUM-15]);//&buf[PRINTAL_NUM-10]);
	/*Alan 03-10-20
	if(total_negative)
	{
		for(no_space=PRINTAL_NUM-10;no_space<PRINTAL_NUM;no_space++)
		if(buf[no_space]!=' ')  break;       
		buf[no_space-1]='-';   //如果为负数则需要添加负号
	}  
	*/
	error=print_str(buf);
  if(error) return(error);
 if(g_printer_sel!=1)
	   {
 #ifdef C6_VER
  error=fpaper(8);
  Fast_feed_paper_hang(140);
  if(error) return LINE_FEED_FAIL;
 #else
  feed_on_line(8);
 #endif
   }
   else
      {
	  Wei_printer_feed_paper(8);
      }
  if(function==BRANCH_REPORT_DEL)
  {
    clear_lcd(2,1);
    sprintf(buf,"清除中,请稍候...");
    lcd_disp(2,0,buf);
    for(i=0;i<MAX_BRANCH_NUM;i++)
    {
	  error =read_eeprom(BRANCH_ADDR+i*(uint)sizeof(branch),(uint)sizeof(branch),&branch);
      if(error) return READ_EEPROM_FAIL;
      branch.money = 0;
      branch.quantity = 0;
      branch.retreat_num = 0;           
      branch.retreat_money = 0;      
      branch.lrc=lrcdata(BRANCH_STRUCT_LEN-1,1,&branch); 
  	  error = write_eeprom(BRANCH_ADDR+(uint)i*BRANCH_STRUCT_LEN,BRANCH_STRUCT_LEN,&branch);
      if(error) return WRITE_EEPROM_FAIL;
    }
    
    //error = write_eeprom(BRANCH_ADDR,(uint)(BRANCH_STRUCT_LEN*MAX_BRANCH_NUM),(uchar *)&branch);
    //if(error) return WRITE_EEPROM_FAIL;
    read_rtc(report_date);
    error = write_eeprom(REPORT_DATE,5,report_date);
    if(error) return WRITE_EEPROM_FAIL;
  }
  clear_lcd(2,1);  //清除成功后去掉残余字样
  
  return OK;
}
#endif
//==================================================================
#ifdef QY_PLU_RPT
/*==================================================================
函数功能:打印plu查询报表
入口参数:plu_start--起始号;plu_end--终止号
出口参数:
返回值:   ==OK,成功
	   !=0k,失败
全局变量:
编制人:     日期:2003-06-30
==================================================================*/	
uchar print_plu_rpt(uint plu_start,uint plu_end)
{
  uchar error,i,len;
  uchar xdata buf[60],buf1[30];
  struct plu_struct plu_t;
  uint j;

	//HYS620
	error = GotoHomePosition();
	if(error)
	return PRINT_FAIL;
	//END HYS620
	
  len=(PRINTAL_NUM-12)/2;
  add_blank(len,buf);
  strcat(buf,"商品查询报表");	
  error=print_str(buf);
  if(error) return(error);
  strcpy(buf,"机器号:");
  HexToStr(g_manufacturer_info.machinery_no,&buf[5],8);
  error=print_str(buf);
  if(error) return(error);
  
  read_rtc(buf);
  for(i=0;i<5;i++) buf1[i] = buf[i];//当前时间
  sprintf(buf,"20%02bx年%02bx月%02bx日  %02bx时%02bx分",buf1[0],
	               buf1[1],buf1[2],buf1[3],buf1[4]);
  error=print_str(buf);
  if(error) return(error);
  
  
  
  
  strcpy(buf,"商 品 号    商品名称\0");    
  error=print_str(buf);
  if(error) return(error);
  
  if(g_stocks_opened) strcpy(buf," 部 门 号   库存量     单价\0");
  else                strcpy(buf," 部 门 号              单价\0");
  error=print_str(buf);
  if(error) return(error);
  
  strcpy(buf," 条 形 码             \0");
  error=print_str(buf);
  if(error) return(error);
  
  
  
  for(j=plu_start-1;j<plu_end;j++)
		 {	
		   error=read_plu(j,&plu_t);
		   if(error) return error;
		    memset(buf,0,60);
		    memcpy(buf1,plu_t.name,(uint)sizeof(plu_t.name)); //memcpy(buf1,plu_t.name,24);
		    buf1[24]=0;
		    sprintf(buf,"%04u",j+1);
		    memset(&buf+4,' ',8);
		    strcat(buf,buf1);
		    error=print_str(buf);
            if(error) return(error);
		    
		    
		    sprintf(buf,"%2u",(uint)plu_t.branch);
		    for(i=strlen(buf);i<PRINTAL_NUM;i++)  buf[i]=' ';
		    if(g_stocks_opened) 
		      {  
		       memset(buf1,0,30);
		       pri_format(plu_t.stocks,7,buf1);
		       strcpy(&buf+8,buf1);			
		      } 
         	   pri_format(plu_t.price,6,&buf[18]);
		       error=print_str(buf);
			   if(error) return(error);				
		          
		 
		 
		 
		 
		 
		 
			/*if(g_stocks_opened)
			{			
		         buf1[24] = 0;
		 	 sprintf(buf,"%04u",j+1);
		 	 print_format(PRINTAL_NUM-4,&buf[4],buf1);
		 	 pri_format(plu_t.stocks,7,&buf[PRINTAL_NUM-10]);
			}
			else
			{
			    buf1[24] = 0;
		 	   sprintf(buf,"%04u",j+1);
		 	   print_format(PRINTAL_NUM-4,&buf[4],buf1);
			}
		       #ifdef C6_VER
      			error=prt(buf);
     		       #else
      			error=(uchar)str_print(buf);
     		       #endif
      			if(error) return PRINT_FAIL;
		       sprintf(buf,"%2u",(uint)plu_t.branch);
			   add_blank(PRINTAL_NUM-12,&buf[2]);
         	 	   pri_format(plu_t.price,6,&buf[PRINTAL_NUM-10]);
		       #ifdef C6_VER
      			error=prt(buf);
     		       #else
      			error=(uchar)str_print(buf);
     		       #endif
      			if(error) return PRINT_FAIL;*/
			   sprintf(buf,"%02bx%02bx%02bx%02bx%02bx%02bx",plu_t.bar_code[0],
			   plu_t.bar_code[1],plu_t.bar_code[2],plu_t.bar_code[3],plu_t.bar_code[4],plu_t.bar_code[5]);
//			sprintf(buf,"%s",plu_t.bar_code);			   
		       error=print_str(buf);
			   if(error) return(error);
		 }
 if(g_printer_sel!=1)
 {
 #ifdef C6_VER
  error=Fast_feed_paper_hang(160);//fpaper(8);
  error=Fast_feed_paper_hang(140);//fpaper(8);
  if(error) return LINE_FEED_FAIL;
 #else
  feed_on_line(8);
 #endif
 }
 else
 {
  Wei_printer_feed_paper(8);
 }
  return OK;
}
/*==================================================================
函数功能:打印plu销售查询或清机报表
入口参数:funtion--功能号;plu_start--起始号;plu_end--终止号
出口参数:
返回值:   ==OK,成功
	   !=0k,失败
全局变量:
编制人:     日期:2003-06-30
==================================================================*/	
uchar print_plu_trade_rpt(uchar funtion,uint plu_start,uint plu_end)
{
  uchar error,i,k,len;
  uchar xdata report_date[7];
  uchar xdata buf[60],buf1[15];
  uchar qj[]={"清机"};
  //uchar  t_negative;   //1:t_cash为负数  0:t_cash为正数
 // uchar  total_negative;   //1:total_cash为负数  0:total_cash为正数
  //uchar  no_space;          //用于计算负号的打印位置
  long t_cash,total_cash;
  struct plu_struct plu_t;
  uint j;

  //----检查清除权限---//
  if(funtion==PLU_SELL_REPORT_DEL&&check_user_card())
    return USERCARD_MAC_ERROR;
    
	//HYS620
	error = GotoHomePosition();
	if(error)
	return PRINT_FAIL;
	//END HYS620

⌨️ 快捷键说明

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