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

📄 query.c

📁 税控收款机源码:拼音输入法,LCD,VFD驱动,IC卡驱动,税控国标
💻 C
📖 第 1 页 / 共 5 页
字号:
  uchar qj[]={"清机"};
  struct receiver_report_struct xdata re_report[MAX_RECEIVER_NUM];


  error=read_eeprom(RECEIVER_NO,2,buf);//read_eeprom(RECEIVER_NO,1,&receiver_number);
  if(error) return READ_EEPROM_FAIL;
 receiver_number=buf[0];
  if(!receiver_number) return POWER_FAIL_1;
  error = read_eeprom(RECEIVER_ADDR+(uint)(receiver_number-1)*
	    RECEIVER_STRUCT_LEN,RECEIVER_STRUCT_LEN,&re_report[receiver_number-1]);
  if(error) return READ_EEPROM_FAIL;
	//HYS620
	error = GotoHomePosition();
	if(error)
	return PRINT_FAIL;
	//END HYS620
  
  i=(PRINTAL_NUM-16)/2;
  add_blank(i,buf);
  sprintf(&buf[i],"收款员%02bu查询报表",receiver_number);	
  if(function==RECEIVER_REPORT_DEL)  
  memcpy(&buf[i+8],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);
  
  for(i=0;i<5;i++) buf1[i] = re_report[receiver_number-1].time[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);
  strcpy(buf,"总交易:");
      sprintf(buf1,"%6lu",re_report[receiver_number-1].total_trade);
      print_format((PRINTAL_NUM-7)/2,&buf[7],buf1);//print_format(PRINTAL_NUM-17,&buf[7],buf1);
      pri_format(re_report[receiver_number-1].total_money,7,&buf[(PRINTAL_NUM-7)/2+7]);//&buf[PRINTAL_NUM-10]);
	  error=print_str(buf);
      if(error) return(error);
	 
  strcpy(buf,"退货:  ");
      sprintf(buf1,"%6lu",re_report[receiver_number-1].retreat_num);
      print_format((PRINTAL_NUM-7)/2,&buf[7],buf1);//print_format(PRINTAL_NUM-17,&buf[7],buf1);
      pri_format(re_report[receiver_number-1].retreat_money,7,&buf[(PRINTAL_NUM-7)/2+7]);//&buf[PRINTAL_NUM-10]);
	  
      error=print_str(buf);
      if(error) return(error);
      for(i=0;i<8;i++)
	 {
	 if(!re_report[receiver_number-1].cash_num[i]) continue;
	 sprintf(buf,"%6s:",money_name[i]);
       buf[6]=':';
	 sprintf(buf1,"%4lu",re_report[receiver_number-1].cash_num[i]);
	 print_format(PRINTAL_NUM-17,&buf[7],buf1);
	 pri_format(re_report[receiver_number-1].total_cash[i],7,&buf[(PRINTAL_NUM-7)/2+7]);//&buf[PRINTAL_NUM-10]);
	 error=print_str(buf);
     if(error) return(error);
	 }
      

      
	 if(re_report[receiver_number-1].not_sell_earning)
	    {
	    
	       sprintf(buf,"人民币非交易收入:  ");
	       add_blank(PRINTAL_NUM-28,&buf[19]);
	      
	    pri_format(re_report[receiver_number-1].not_sell_earning,6,
	    			&buf[19]);//&buf[PRINTAL_NUM-9]);
	    error=print_str(buf);
        if(error) return(error);
	    }
	 if(re_report[receiver_number-1].not_sell_defray)
	    {
	    
	       sprintf(buf,"人民币非交易支出:  ");
	       add_blank(PRINTAL_NUM-28,&buf[19]);
	      
	    pri_format(re_report[receiver_number-1].not_sell_defray,6,
	    			&buf[19]);//&buf[PRINTAL_NUM-9]);
	     error=print_str(buf);
         if(error) return(error);
	    }
	 
      
      strcpy(buf,"折扣总额:");
      add_blank(PRINTAL_NUM-19,&buf[9]);
      pri_format(re_report[receiver_number-1].total_discount_money,7,&buf[PRINTAL_NUM-15]);//&buf[PRINTAL_NUM-10]);
      error=print_str(buf);
      if(error) return(error);

      strcpy(buf,"加成总额:");
      add_blank(PRINTAL_NUM-19,&buf[9]);
      pri_format(re_report[receiver_number-1].total_service_money,7,&buf[PRINTAL_NUM-15]);//&buf[PRINTAL_NUM-10]);
      error=print_str(buf);
      if(error) return(error);
      strcpy(buf,"直接折扣总额:");
      add_blank(PRINTAL_NUM-23,&buf[13]);
      pri_format(re_report[receiver_number-1].total_decrease_money,7,&buf[PRINTAL_NUM-15]);//&buf[PRINTAL_NUM-10]);
      error=print_str(buf);
      if(error) return(error);
      strcpy(buf,"非交易开钱箱次数:");
      add_blank(PRINTAL_NUM-21,&buf[16]);
      sprintf(&buf[PRINTAL_NUM-6],"%6lu",re_report[receiver_number-1].open_cashbox_num);
      error=print_str(buf);
      if(error) return(error);
      
	    t_cash = re_report[receiver_number-1].total_cash[0] +
	       re_report[receiver_number-1].not_sell_earning -
	       re_report[receiver_number-1].not_sell_defray -
	       re_report[receiver_number-1].retreat_money;
	      
	if(t_cash) 
	{
	     sprintf(buf,"现金(%6s)",money_name[0]);
	     add_blank(PRINTAL_NUM-24,&buf[14]);
	     pri_format(t_cash,6,&buf[PRINTAL_NUM-10]);
  	     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);
	   }
      if(function==RECEIVER_REPORT_DEL)
	 {
	 set_value0(&re_report[receiver_number-1],RECEIVER_STRUCT_LEN);
	 read_rtc(buf);
	 memcpy(re_report[receiver_number-1].time,buf,
		 (uint)sizeof(re_report[receiver_number-1].time));  //将本次清机时间记录
	
          re_report[receiver_number-1].lrc=lrcdata((uint)sizeof(re_report[receiver_number-1])-1,1,
					&re_report[receiver_number-1]);
 
	 error = write_eeprom(RECEIVER_ADDR+(uint)(receiver_number-1)*
	  RECEIVER_STRUCT_LEN,RECEIVER_STRUCT_LEN,&re_report[receiver_number-1]);
	 if(error) return WRITE_EEPROM_FAIL;
	  }
  return OK;
}
#endif
#ifdef C8_VER
#ifdef QY_TRADE_RPT
/*==================================================================
函数功能:打印营业员查询或清机报表
入口参数:funtion--功能号
出口参数:
返回值:   ==OK,成功
	   !=0k,失败
全局变量:
编制人:     日期:2003-06-30
==================================================================*/
uchar print_trade_rpt(uchar function)
{
  uchar error;
  uchar i;
  uchar xdata buf[60],buf1[15];
  uchar qj[]={"清机"};
  uchar xdata report_date[7];
  struct trade_report_struct xdata tr_report[MAX_TRADE_NUM+1];

  //----检查清除权限---//
  if(function==TRADE_REPORT_DEL&&check_user_card())
    return USERCARD_MAC_ERROR;
    for(i=0;i<MAX_TRADE_NUM;i++)
	{
	    error = read_eeprom(TRADE_ADDR+
	       (uint)i*TRADE_STRUCT_LEN,TRADE_STRUCT_LEN,&tr_report[i]);
	    if(error) return READ_EEPROM_FAIL;
	}
	//HYS620
	error = GotoHomePosition();
	if(error)
	return PRINT_FAIL;
	//END HYS620
	
  i=(PRINTAL_NUM-12)/2;
  add_blank(i,buf);
  sprintf(&buf[i],"营业员查询报表\0");	
  if(function==TRADE_REPORT_DEL)  
  memcpy(&buf[i+6],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((uint)10+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);
  for(i=0;i<MAX_TRADE_NUM;i++)
  {
	 if(!tr_report[i].trade_no) continue;
	 sprintf(buf,"营业员%3bu",tr_report[i].trade_no);		
	 sprintf(buf1,"   %6lu     ",tr_report[i].total_trade);
	 strcat(buf,buf1);
	 pri_format(tr_report[i].total_money,7,&buf[strlen(buf)]);
	 error=print_str(buf);
     if(error) return(error);
	 if(!tr_report[i].retreat_num) continue;
		sprintf(buf,"退款 :%5lu次     退款总额 :",tr_report[i].retreat_num);		//28 bytes
		pri_format(tr_report[i].retreat_money,7,&buf[28]); 
		error=print_str(buf);
        if(error) return(error);
	 }
    if(g_printer_sel!=1)
	{
	#ifdef C6_VER
  	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);
	}	
      if(function==TRADE_REPORT_DEL) 
	 {
	 for(i=0;i<MAX_TRADE_NUM;i++)
	    {
	    //tr_report[i].trade_no = 0;
		 set_value0(&tr_report[i],TRADE_STRUCT_LEN);
	     error = write_eeprom(TRADE_ADDR+
	       (uint)i*TRADE_STRUCT_LEN,TRADE_STRUCT_LEN,&tr_report[i]);
	    if(error) return WRITE_EEPROM_FAIL;
	    }

	 read_rtc(report_date);
	 
	 error = write_eeprom((uint)10+REPORT_DATE,5,report_date);
	 if(error) return WRITE_EEPROM_FAIL;
	
	 }
  return OK;
}
#endif
#endif
//==================================================================================
/*uchar set_super_password(void)
{
 uchar disp_buf[MAX_LCD_COL*MAX_LCD_NUM+1];//显示缓冲,长度为lcd一页
  uchar key;//键值
  uchar numkey_buf[PASSWORD_LEN+1];//输入的数字键字符串缓冲区
  uchar keynum,max_key_num;//已经输入的键数,最大允许输入键数
  uchar error;//错误类别
  //ulong num;//输入数
  uchar step;//操作步骤
  uchar password_tmp[PASSWORD_LEN+1];//密码暂存
  uchar i,point;
  uchar no_card;
  uchar rec_no;
  
  //----------初始化----------------//
  error=0;
  for(i=0;i<MAX_KEY_LEN;i++) numkey_buf[i]=0;//初始化数字输入缓冲区
  keynum=0;
  point=0;
  max_key_num=6;
  clear_lcd(0,4);
  //----------提示当前功能--------------//
   strcpy(disp_buf,"请输入新的超级密码\r不超过6位再按[确认]键\r");
   lcd_disp(0,0,disp_buf);
  //get_menu_name_sp(MAX_LAYER_MENU,SET_RECEIVER_PASSWORD,disp_buf);
  //lcd_disp(0,0,disp_buf);
  //----------提示下一步操作---------------//
  //sprintf(disp_buf,"请输入营业员号+[确认]\r取值范围[1,%d]\r",(uint)MAX_RECEIVER_NUM);
  //lcd_disp(1,0,disp_buf);
  step=1;
  no_card=0;
  //----------等待按键---------------//
  while(1)
  {
    if(error) catch_error_display(error,0);//捕获错误
	openbacklight();
    if(low_pwr) return POWER_OFF;//监测到断电了,则exit 
    key = get_key();
    if(!key) continue;
    //beep(50);
    if(error&&key!=CLEAR&&key!=VOID) continue;//出错后,须即时更正或取消操作
    switch(key)    
    {
      case VOID://取消操作
        clear_lcd(1,2);
        return CANCEL;
      break;
      case CLEAR://即时更正
        if(error)//报错时
        {
          clear_lcd(3,1);//清除错误显示
          error=0;//清除错误标志
        }
        if(numkey_buf[0]!=0)//若有数输入 
        {
          numkey_buf[0]=0;//清除数字输入缓冲区
          keynum=0;
          clear_lcd(2,1);//清除数字显示
        }        
      break;
      //-------取得输入数字键-------//
      case '0' :
      case '1' :
      case '2' :
      case '3' :
      case '4' :
      case '5' :
      case '6' :
      case '7' :
      case '8' :
      case '9' :
      

      if(keynum==max_key_num)
      	  {
      	    error=KEY_ERROR;
      	    break;
	      }	
      	  numkey_buf[keynum]=key;
      	  keynum++;
      	  numkey_buf[keynum]=0;
          //------隐含显示输入数-------//
	    clear_lcd(3,1);
	    disp_buf[keynum-1]='*';
	    disp_buf[keynum]='\0';
	    lcd_disp(3,0,disp_buf);

      break;  	
      case ENTER:
        if(numkey_buf[0]==0)//未输入任何数字 
        {
          error=KEY_ERROR;
	      break;
	    }
	  if(check_user_card())no_card=1;
	/*if(step==0)//输入收款员号
	{
          num=numstr_to_long(numkey_buf,point);//转换输入数为十进制
          if(!num||num>MAX_RECEIVER_NUM)//检查其合法性 
	  {
	    error=OVER_RANGE_ERROR;
	    break;
	  }
	  for(i=0;i<MAX_KEY_LEN;i++) numkey_buf[i]=0;//初始化数字输入缓冲区
          rec_no=(uchar)num;
	  keynum=0;
	  //----------提示下一步---------------//
	  if(check_user_card())//若未插入用户卡,则需输入旧密码
	  {
	    sprintf(disp_buf,"请输入营业员%bu的旧密码\r再按[确认]键\r",rec_no);
	    no_card=1;
	  }
	  else
	  {
	    sprintf(disp_buf,"请输入营业员%bu的新密码\r再按[确认]键\r",rec_no);
	  }
	}
	else 
	if(step==1)
	{
	  /*if(no_card)//若未插入用户卡,则需检查旧密码
	  {
	    error=read_eeprom(LOGON_PASSWORD+(rec_no-1)*PASSWORD_LEN,PASSWORD_LEN,password_tmp);
      	    if(error)
      	    {
      	      error = READ_EEPROM_FAIL;
      	      break;
      	    }
	    if(memcmp(password_tmp,numkey_buf,PASSWORD_LEN))
	    {
	      error=RECEIVER_PASSWOR_ERROR;
	      break;
	    }
	    for(i=0;i<MAX_KEY_LEN;i++) numkey_buf[i]=0;//初始化数字输入缓冲区
	    keynum=0;
	    sprintf(disp_buf,"请输入营业员%bu的新密码\r再按[确认]键\r",rec_no);
	    //---接下来操作步骤和有卡操作一样----//
	    step--;
	    no_card=0;
	  }
	  else
	  {
	    memcpy(password_tmp,numkey_buf,PASSWORD_LEN);
	    for(i=0;i<MAX_KEY_LEN;i++) numkey_buf[i]=0;//初始化数字输入缓冲区
	    keynum=0;
	    //----------提示下一步---------------//
	    sprintf(disp_buf,"请再次输入新的超级密码\r不超过6位再按[确认]键确定\r",rec_no);
		 
	  }
	}
	else
	{
	  if(memcmp(password_tmp,numkey_buf,PASSWORD_LEN))
	  {
	    error=RECEIVER_PASSWOR_ERROR;
	    break;
	  }
	  error=write_eeprom(SUPERPASSWORD,PASSWORD_LEN,password_tmp);
      	  if(error)
      	  {
      	    error = WRITE_EEPROM_FAIL;
      	    break;
      	  }
	}
	max_key_num=PASSWORD_LEN;
	step++;
    clear_lcd(0,2);

⌨️ 快捷键说明

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