📄 trade_item.c
字号:
}
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 + -