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

📄 trade_item.c

📁 税控收款机源码:拼音输入法,LCD,VFD驱动,IC卡驱动,税控国标
💻 C
📖 第 1 页 / 共 2 页
字号:
	          }
              else if(error) return error;
          //--------存储设置参数----------//
	         error=read_plu(num_tmp-1,&plu_t);
	         if(error) break;  
             sprintf(plu_t.name,buf);
	         error=write_plu(num_tmp-1,&plu_t);
	         if(error) break;
	         sprintf(disp_buf,"商品%lu的名称:%s\r",num_tmp,plu_t.name);
	         disp_buf[24]=0;
  	         //----------第4行提示设置结果---------------//
              clear_lcd(3,1);
              lcd_disp(3,0,disp_buf); 
              con_disp(3,0,strlen(disp_buf),disp_buf);
	  
              clear_lcd(0,3);
//            code_inputed=0;
	          code_inputed++;
               continue;
	     }
	  else if(code_inputed==2)
	     {
	      point=0;
          max_key_num=2;
          sprintf(disp_buf,"请输入对应的税目索引号\r[当前商品号:%lu]",num_tmp);  
	      }
        else if(code_inputed==3)
        {
          point=1;
          max_key_num=7;
          sprintf(disp_buf,"请输入商品%lu的单价\r",num_tmp);
         }
        else if(code_inputed==4)//所属部门
        {
          point=0;
          #ifdef C6_VER
            max_key_num=2;
          #else 
            max_key_num=3;
          #endif
         // clear_lcd(3,1);
          sprintf(disp_buf,"请输入商品%u所属部门号\r取值范围[1,%u]\r",
          					(uint)num_tmp,(uint)MAX_BRANCH_NUM);
        }
      else if(code_inputed==5)
	       {
	         if(!stock_seted)
               {
                if(!g_stocks_opened) //已关闭
                  {
                   clear_lcd(0,3);
                   strcpy(disp_buf,"库存管理已关闭\r按[确认]打开或[取消]退出");
                   lcd_disp(2,0,disp_buf);
                   error=wait_usal_key(1);//等待打开或退出操作
                   if(error!=OK) 
                     {
                      clear_lcd(1,2);
                      return error;
                      }
                    g_stocks_opened=1; 
                    error = write_eeprom(STOCK_ADDR,1,&g_stocks_opened);
                   if(error) 
                    {
                     error = WRITE_EEPROM_FAIL;
	                 break;
                    }    
                   clear_lcd(0,1);  
                   clear_lcd(2,2);  
                   if(g_stocks_opened) 
                     {
                       strcpy(disp_buf,"库存管理已打开");
                       lcd_disp(3,0,disp_buf);
                       tmp_inputed=0;//提示“输入库存量"
	                  }
                     stock_seted=1;      
  	              }
  	            else  //已打开
                   {
                    if(!displayed)
                      {
                        clear_lcd(0,1);
                        strcpy(disp_buf,"库存管理已打开");
                        lcd_disp(0,0,disp_buf);
                        clear_lcd(3,1);
                        strcpy(disp_buf,"请输入或按[确认]关闭");
                        lcd_disp(3,0,disp_buf);
                        displayed=1;
                      }
  	               }   
                 }
	            point=1;
                max_key_num=6;
               sprintf(disp_buf,"请输入商品%lu的库存量\r",num_tmp);
	         }	
      }
 else if(function==BRANCH_MANAGEMENT) 
     {
        if(code_inputed==1)
        {
          sprintf(disp_buf,"请输入部门%lu的名称\r按[确认]继续\r或按[取消]进入下一项设置",num_tmp);
       	  clear_lcd(1,1);
       	  lcd_disp(1,0,disp_buf);
       	  error=wait_usal_key(1);//等待打开或退出操作
          if(error!=OK) 
          {
            error=0;
            clear_lcd(0,4);
	        code_inputed++;
	        continue;
          }
	     /*cur_line=select_sigle_layer_menu(CHA_INPUT_SUB,cha_menu);
	     if(!cur_line)
	       {
	        clear_lcd(0,4);
	        code_inputed++;
	        continue;	
	       }
	      else if(cur_line==POWER_OFF) return POWER_OFF;
		  
      	  if(cur_line==1)
		  */
		   if(low_pwr) return POWER_OFF;//监测到断电了,则exit 
           //2005.8.5
			error =Get_HzString(10,buf);//Get_HzString(10,buf);
           /* else 
             {
              clear_lcd(0,1);
              error = input_code(buf,20);//区位码输入
              }
		  */
			if(error==CANCEL)
			{
				error=0;
				clear_lcd(0,4);
				code_inputed++;
				continue;
			}
			else if(error) return error;
          //--------存储设置参数----------//
			error = read_eeprom(BRANCH_ADDR+BRANCH_STRUCT_LEN*(num_tmp-1),BRANCH_STRUCT_LEN,&branch[num_tmp-1]);
			if(error) 
			{
				error = READ_EEPROM_FAIL;
				break;
			}
          memset(branch[num_tmp-1].name,0,(uint)sizeof(branch[num_tmp-1].name));
          memcpy(branch[num_tmp-1].name,buf,strlen(buf));
          branch[num_tmp-1].name[strlen(buf)]=0;
          branch[num_tmp-1].lrc=lrcdata(BRANCH_STRUCT_LEN-1,1,&branch[num_tmp-1]);
	      error = write_eeprom(BRANCH_ADDR+BRANCH_STRUCT_LEN*(num_tmp-1),BRANCH_STRUCT_LEN,&branch[num_tmp-1]);
	      if(error) 
          {
            error = WRITE_EEPROM_FAIL;
	        break;
          }
          sprintf(disp_buf,"部门%lu的名称:%s\r",num_tmp,branch[num_tmp-1].name);
	      disp_buf[24]=0;
  	  //----------第4行提示设置结果---------------//
          clear_lcd(3,1);
          lcd_disp(3,0,disp_buf); 
          con_disp(3,0,strlen(disp_buf),disp_buf);
	  
	      clear_lcd(0,3);
          code_inputed++;
          continue;
	     }
	  else if(code_inputed==2)
	    {
	     point=0;
         max_key_num=2;
         sprintf(disp_buf,"请输入对应的税目索引号\r[当前部门号:%lu]",num_tmp);	
        }
    }
	if(tmp_inputed!=code_inputed)
	{
	  clear_lcd(1,2);
	  lcd_disp(1,0,disp_buf);
	  tmp_inputed=code_inputed;
	}
    if(error) catch_error_display(error,0);//捕获错误	
    if(low_pwr) return POWER_OFF;//监测到断电了,则exit 
    openbacklight();
    key = get_key();
    if(!key) continue;
    //send_char(key);
    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;//清除数字输入缓冲区
			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' :
	case KEY00://双0
	case POINT://小数点
	//-------取得输入数字键-------//
		error=get_valid_digit(key,point,max_key_num,numkey_buf);
	if(error)//输入非法 
	{
		error=KEY_ERROR;
		break;
	}
	//------显示输入数-------//
		clear_lcd(2,1);
		lcd_disp(2,0,numkey_buf);
		break;
	case PLU:
	case BRANCH:
		if(key==BRANCH&&function!=BRANCH_MANAGEMENT)
        {//不是有关部门设置却按下[部门]键时,报错
			error=KEY_ERROR;
			break;
	    }
		if(key==PLU&&(function==BRANCH_MANAGEMENT))
		{////是有关部门设置却按下[PLU]键时,报错
			error=KEY_ERROR;
			break;
		}
		if(numkey_buf[0]==0||code_inputed)//未输入任何数字或第一步完成了 
        {
			error=KEY_ERROR;
			break;
		}
	    num=numstr_to_long(numkey_buf,point,2);//转换输入数为十进制
	    memset(numkey_buf,0,MAX_KEY_LEN);
	   if(!num)
	     {
          error=OVER_RANGE_ERROR;  
          break;  
         }

	   if(((key==PLU)&&(num>g_max_plu_no))||((key==BRANCH)&&(num>MAX_BRANCH_NUM)))             
         {
          error=OVER_RANGE_ERROR;  
          break;  
         }
        for(i=0;i<MAX_KEY_LEN;i++) numkey_buf[i]=0;//初始化数字输入缓冲区
	
        num_tmp=num;
	    code_inputed++;
         break;
      case TOTAL://SUBTOTAL://设置一个
        if(!code_inputed)//未输入任何数字或第一步未完成
        {
          error=KEY_ERROR;
	      break;
	     }
	    else if(numkey_buf[0]==0)
	    {
	      if(function==BRANCH_MANAGEMENT)
	       {
	        if(code_inputed<2) code_inputed++;
	        else code_inputed=0;	
	       }
	      else
	       {
	       if(code_inputed<5) code_inputed++;
	       else code_inputed=0;	
	      } 
	      break;
	   }
	
        num=numstr_to_long(numkey_buf,point,2);//转换输入数为十进制
        memset(numkey_buf,0,MAX_KEY_LEN);
        if(!num)//检查输入的合法性  	
        {
	    error=OVER_RANGE_ERROR;
	    break;
	    }
      if(function==BRANCH_MANAGEMENT)
      {
        if(code_inputed==2)//设置部门对应税目索引号(与plu的有关设置独立分开)
        {
          for(i=0;i<6;i++) 
          {
            if(num==g_tax_catalog[i].tax_item) break;
          }
          if(i==6) 
	      {
	      error=OVER_RANGE_ERROR;
	      break;
	      }   
	    error = read_eeprom(BRANCH_ADDR+BRANCH_STRUCT_LEN*(num_tmp-1),BRANCH_STRUCT_LEN,&branch[num_tmp-1]);
	    if(error) 
          {
            error = READ_EEPROM_FAIL;
	        break;
          }
          for(i=0;i<MAX_KEY_LEN;i++) numkey_buf[i]=0;//初始化数字输入缓冲区
	  branch[num_tmp-1].tax_item = (uchar)num;
	  branch[num_tmp-1].lrc=lrcdata(BRANCH_STRUCT_LEN-1,1,&branch[num_tmp-1]);
	  error=write_eeprom(BRANCH_ADDR+(num_tmp-1)*BRANCH_STRUCT_LEN,BRANCH_STRUCT_LEN,
	  			&branch[num_tmp-1]); 
    	  if(error) 
          {
            error = WRITE_EEPROM_FAIL;
	        break;
          }     
          sprintf(disp_buf,"%bu部门对应税目索引号:%lu\r",(uchar)num_tmp,num);
          //----------第4行提示设置结果---------------//
          clear_lcd(3,1);
          lcd_disp(3,0,disp_buf); 
          con_disp(3,0,strlen(disp_buf),disp_buf);
	  
	      clear_lcd(1,2);
          code_inputed=0;
          break;
        }
      }
      else
      {
        if(code_inputed==3)//PLU单价的设置,须先输入单价数
        {
          if(num>MAX_PRICE)//检查单价输入的合法性  	
          {
	       error=OVER_RANGE_ERROR;
	       break;
	      }	
	     }
	   else if(code_inputed==4)//PLU所属部门的设置
	    {
	     if(num>MAX_BRANCH_NUM)//检查部门输入的合法性  	
          {
	       error=OVER_RANGE_ERROR;
	       break;
	      }	
	    }
        else if(code_inputed==2)//部门对应税目索引号
        {
          for(i=0;i<6;i++) 
          {
            if(num==g_tax_catalog[i].tax_item) break;
          }
          if(i==6) 
	      {
	       error=OVER_RANGE_ERROR;
	       break;
	       }                                  
         }
        for(i=0;i<MAX_KEY_LEN;i++) numkey_buf[i]=0;//初始化数字输入缓冲区
        //--------存储设置参数----------//
	error=read_plu(num_tmp-1,&plu_t);
	if(error) break;
	if(code_inputed==3)//PLU单价的设置
	{
	  plu_t.price = num;
	  sprintf(disp_buf,"商品%lu的单价:%lu.%02lu\r",
                  num_tmp,plu_t.price/100,plu_t.price%100);
	}
	else if(code_inputed==4)//plu部门的设置
	{
	  plu_t.branch = num;
	  sprintf(disp_buf,"商品%lu所属部门号:%bu\r",num_tmp,plu_t.branch);
	}
	else if(code_inputed==5)//库存管理
	{
	  stock_seted=1;
	  plu_t.stocks=num;
	  sprintf(disp_buf,"商品%lu的库存量:%lu.%02lu\r",num_tmp,plu_t.stocks/100,plu_t.stocks%100);
	}
	else if(code_inputed==2)//部门对应税目索引号
        {
          plu_t.tax_item=num;
          sprintf(disp_buf,"商品%lu对应税目索引号:%lu\r",num_tmp,num);	
        }
	error=write_plu(num_tmp-1,&plu_t);
	if(error) break;
      }
	//----------第4行提示设置结果---------------//
        clear_lcd(3,1);
        lcd_disp(3,0,disp_buf); 
        con_disp(3,0,strlen(disp_buf),disp_buf);
	
	clear_lcd(1,2);
	if(code_inputed<5) code_inputed++;
	else code_inputed=0;	
      break;
 case ENTER://最后确定操作完毕成功退出
     
	if((function==PLU_MANAGEMENT)&&!stock_seted)//进行库存量设置之前
        {
          if(code_inputed==5)
          {
            if(g_stocks_opened) //已关闭
	          {
                g_stocks_opened=0;
                error = write_eeprom(STOCK_ADDR,1,&g_stocks_opened);
                if(error) 
                 {
                  error = WRITE_EEPROM_FAIL;
	               break;
                  }
                strcpy(disp_buf,"库存管理已关闭");
                clear_lcd(3,1);
                lcd_disp(3,0,disp_buf); 
               }
             }  
        }
        if(code_inputed||numkey_buf[0]!=0)//输入编号或任何数字 
        {
          error=KEY_ERROR;
	      break;
	     }
	
        return OK;
      break;
      default:
        error=KEY_ERROR;
      break;  
    }	
	}
}

⌨️ 快捷键说明

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