📄 prog_plu.c
字号:
if(prg_step == PLU_START_STEP)
Text_Lcd.FirstLine = MAX_PLU_STEP;
}
step++;
Text_Lcd.CurrLine = prg_step;
// 2:disp play the Name
if((mode == 0xff)||(mode == PLU_DESC_STEP))
{
memset(Text_Lcd.text[step]+LCD_POSI_NOR2, 0x20, MAX_TEXT-LCD_POSI_NOR2);
memcpy(Text_Lcd.text[step]+LCD_POSI_NOR2, plu[prg_idx].desc, MAX_DESC_LEN_EX);
}
step++;
// 3:display the price1
if((mode == 0xff)||(mode == PLU_PRICE_STEP))
{
memset(Text_Lcd.text[step]+LCD_POSI_NOR2, 0x20, MAX_TEXT-LCD_POSI_NOR2);
LnumToTextBuff(Text_Lcd.text[step]+LCD_POSI_NOR2, plu[prg_idx].price, sysflag->sysdots);
}
step++;
// 4:diaplay the pric2
if((mode == 0xff)||(mode == PLU_PRICE_STEP2))
{
memset(Text_Lcd.text[step]+LCD_POSI_NOR2, 0x20, MAX_TEXT-LCD_POSI_NOR2);
LnumToTextBuff(Text_Lcd.text[step]+LCD_POSI_NOR2, plu[prg_idx].price2, sysflag->sysdots);
}
step++;
// 5:displar the pric3
if((mode == 0xff)||(mode == PLU_PRICE_STEP3))
{
memset(Text_Lcd.text[step]+LCD_POSI_NOR2, 0x20, MAX_TEXT-LCD_POSI_NOR2);
LnumToTextBuff(Text_Lcd.text[step]+LCD_POSI_NOR2, plu[prg_idx].price3, sysflag->sysdots);
}
step++;
// 6:Display the link department.
if((mode == 0xff)||(mode == PLU_PLINK_STEP))
{
memset(Text_Lcd.text[step]+LCD_POSI_NOR2, 0x20, MAX_TEXT-LCD_POSI_NOR2);
plink = plu[prg_idx].plink;
DectoAsc(Text_Lcd.text[step]+LCD_POSI_NOR2, plink);
Text_Lcd.text[step][LCD_POSI_NOR2+2] = '-';
memcpy(Text_Lcd.text[step]+LCD_POSI_NOR2+3, dept[plink-1].desc, MAX_DESC_LEN_EX);
}
step++;
#ifdef PLU_GROUP_FUNC
// 7: display the plu group
if((mode == 0xff)||(mode == PLU_GROUP_STEP))
{
memset(Text_Lcd.text[step]+LCD_POSI_NOR2, 0x20, MAX_TEXT-LCD_POSI_NOR2);
DectoAsc(Text_Lcd.text[step]+LCD_POSI_NOR2, plu[prg_idx].group);
}
step++;
#endif
#ifdef REST_PLU_FUNC
// 8:display the plu attribute: Norrmal / Gift / descriptive
if((mode == 0xff)||(mode == PLU_KIND_STEP))
{
memset(Text_Lcd.text[step]+LCD_POSI_NOR2, 0x20, MAX_TEXT-LCD_POSI_NOR2);
xtr_strcpy(Text_Lcd.text[step]+LCD_POSI_NOR2, Str_Plu_TYPE[plu[prg_idx].attr.mode]);
}
step++;
//9: display the Actice / Not Active
if((mode == 0xff)||(mode == PLU_STATE_STEP))
{
memset(Text_Lcd.text[step]+LCD_POSI_NOR2, 0x20, MAX_TEXT-LCD_POSI_NOR2);
if(plu[prg_idx].attr.inht == 1)
xtr_strcpy(Text_Lcd.text[step]+LCD_POSI_NOR2, Str_Plu_Atv_Yes);
else
xtr_strcpy(Text_Lcd.text[step]+LCD_POSI_NOR2, Str_Plu_Atv_No);
}
step++;
#endif
#ifdef STOCK
if(sysflag->PLU_Stock_Flag)
{
// 10;display the stock qty.
if((mode == 0xff)||(mode == PLU_STOCK_STEP))
{
memset(Text_Lcd.text[step]+LCD_POSI_NOR3, 0x20, MAX_TEXT-LCD_POSI_NOR3);
Qty_Adjust(plu[prg_idx].inventory);
LnumToTextBuff(Text_Lcd.text[step]+LCD_POSI_NOR3, adj_num, adj_dots);
}
step++;
//11:display the saftly qty
if((mode == 0xff)||(mode == PLU_SAFT_STOCK))
{
memset(Text_Lcd.text[step]+LCD_POSI_NOR3, 0x20, MAX_TEXT-LCD_POSI_NOR3);
Qty_Adjust(plu[prg_idx].saft_Stock);
LnumToTextBuff(Text_Lcd.text[step]+LCD_POSI_NOR3, adj_num, adj_dots);
}
step++;
}
#endif
if(mode == 0xff)
Lcd_Reflush_List(0);
else
Lcd_Reflush_List(1);
// 在下面的一个框显示所需要的内容
if(prg_step > PLU_SCAN_STEP)
{
Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Modify_Step[0]);
Lcd_Disp_Str_Btn(BUF_ID_TL_INPUT, Str_Plu_Prgram[prg_step+1]);
}
Last_Prg_Idx = prg_idx;
Last_Prg_Step = prg_step;
}
/*****************************************************************/
/*-----------------------------------------------------------------*
* Update the PLU attribute.
*-----------------------------------------------------------------*/
byte Pasc2bin(word prg_idx, byte prg_step)
{
#ifdef SCANNER /* Support the scanner function */
byte tmp_bar[BAR_BUFF_LEN];
int old_posi; /* The PLUs old bar code */
int new_posi; /* The PLUs new bar code */
#endif /* End SCANNER */
byte i;
#ifdef REST_PLU_FUNC
byte j;
byte m,n;
#endif
#ifdef STOCK
long tmp_stock = 0;
#endif
const char *Str_ptr[3];
byte len;
byte Rslt;
switch(prg_step)
{
case PLU_DESC_STEP: /* Program the PLUs description */
Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Modify_Step[1]);
if(Get_Desc(plu[prg_idx].desc,MAX_DESC_LEN_EX,NO) != OK)
return NG;
last_modi_flag = 1;
modi_flag = 1;
return OK;
case PLU_PRICE_STEP:
case PLU_PRICE_STEP2:
case PLU_PRICE_STEP3: /* Program the PLUs price */
Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Modify_Step[2]);
if(Get_Num_Input()!= OK)
return NG;
if( lnum > MAX_PLU_PRICE ) /* The max price length is 6 */
{
errorType(ERR_DIGIT_ILLEGAL);
return NG;
}
if(prg_step == PLU_PRICE_STEP)
plu[prg_idx].price = lnum;
else if(prg_step == PLU_PRICE_STEP2)
plu[prg_idx].price2 = lnum;
else //if(prg_step == PLU_PRICE_STEP3)
plu[prg_idx].price3 = lnum;
last_modi_flag = 1;
modi_flag = 1;
return OK;
break;
case PLU_PLINK_STEP:
#ifdef VER_RSNT /* Support the restaurant function */
if(Rsnt_ChkSale() == NOTOK)
{
errorType(ERR_SALE_NO_END);
return (NG);
}
#endif /* End VER_RSNT */
Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Modify_Step[2]);
if(Get_Num_Input() != OK)
return NG;
if((lnum > Max_Dept_No) || (lnum == 0))
{errorType(ERR_DIGIT_ILLEGAL);return NG;}
plu[prg_idx].plink = lnum;
last_modi_flag = 1;
modi_flag = 1;
return OK;
#ifdef STOCK /* Support the stock function */
case PLU_STOCK_STEP: /* Program the PLUs inventory */
case PLU_SAFT_STOCK:
if(sysflag->PLU_Stock_Flag == 0)
return OK;
Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Modify_Step[2]);
Prog_en_dec_input_flag = 1;
if(Get_Num_Input() != OK)
{
Prog_en_dec_input_flag = 0;
return NG;
}
Prog_en_dec_input_flag = 0;
if(dec_flag == 0)
{
if(lnum > (MAX_STOCK_CNT/1000))
{errorType(ERR_DIGIT_OVER);return NG; }
lnum *= 1000;
}
else
{
if(lnum > (MAX_STOCK_CNT/getLong(3-dec_cnt)))
{errorType(ERR_DIGIT_OVER);return NG; }
lnum *= getLong(3-dec_cnt);
}
if(lnum > MAX_STOCK_CNT)
{errorType(ERR_DIGIT_OVER);return NG; }
if(prg_step == PLU_SAFT_STOCK)
{
plu[prg_idx].saft_Stock = lnum;
last_modi_flag = 1;
modi_flag = 1;
return OK;
}
//PLU_Stock_Step
tmp_stock = lnum;//保存准备输入的库存数据
if(Get_Btn_Choice_Input((char**)Str_Plu_Stock_Update_Sel, 0x22, 3) != OK)
return NG;
if(lnum == 0)//over write
plu[prg_idx].inventory = tmp_stock;
else if(lnum == 1)
{
if(tmp_stock + plu[prg_idx].inventory > MAX_STOCK_CNT)
{errorType(ERR_DIGIT_OVER);return NG;}
plu[prg_idx].inventory += tmp_stock;
}
else if(lnum == 2)
{
if(tmp_stock - plu[prg_idx].inventory > MAX_STOCK_CNT)
{errorType(ERR_DIGIT_OVER);return NG;}
plu[prg_idx].inventory -= tmp_stock;
}
last_modi_flag = 1;
modi_flag = 1;
return OK;
#endif
#ifdef REST_PLU_FUNC
case PLU_STATE_STEP:
Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Modify_Step[3]);
Str_ptr[0] = Str_Plu_Atv_Yes;
Str_ptr[1] = Str_Plu_Atv_No;
if(Get_Btn_Choice_Input_Ex(Str_ptr, 0x22, 2, &Rslt) != OK)
return NG;
plu[prg_idx].attr.inht = (Rslt)? 0 : 1;
last_modi_flag = 1;
modi_flag = 1;
return OK;
case PLU_KIND_STEP:
//if(In_Buff[0]!= plu[prg_idx].attr.mode )
{
if((plu[prg_idx].quantity != 0) || (plu[prg_idx].amount != 0)
#ifdef PLU_PTD_RPT
|| (plu[prg_idx].PTD_quantity != 0) || (plu[prg_idx].PTD_amount != 0)
#endif
)
{
errorType(ERR_RPT_NOT_EMPTY);
return(NG);
}
}
Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Modify_Step[3]);
Str_ptr[0] = Str_Plu_TYPE[0];
Str_ptr[1] = Str_Plu_TYPE[1];
if(Get_Btn_Choice_Input(Str_ptr, 0x11, 2) == OK)
{
if(!numcnt)
return OK;
if(lnum >1)
return NG;
plu[prg_idx].attr.mode = lnum;
last_modi_flag = 1;
modi_flag = 1;
if((plu[prg_idx].attr.mode==PLU_DESC)||(plu[prg_idx].attr.mode==PLU_GIFT))/*turn to desc or gift attr*/
{
for(j=0;j<MAX_PLUTAB_NO;j++) /*del main plu*/
{
if(plu_relation_tab[j].mainplu==prg_idx+1)
{
Del_Main_Slave_PLU(j);
}
}
for(i=0;i<MAX_DPLU_NO;i++) /*del dplu*/
{
if(Dplu_Pluno[i]==prg_idx+1)
{
Dplu_Pluno[i]=0;
}
}
for(m=0;m<MAX_MENU_KEY_CNTR;m++)/*del menu plu*/
{
for(n=0;n<MAX_MEAL_ITEM;n++)
{
if(Menu_Table[m].menu_plu[n]==prg_idx+1)
{
Menu_Curr_Delete(m,n);
}
}
}
}
if(plu[prg_idx].attr.mode==PLU_NORMAL)/*turn to normal*/
{
for(j=0;j<MAX_PLUTAB_NO;j++)
{
if(plu_relation_tab[j].slaveplu==prg_idx+1)
{
Del_Main_Slave_PLU(j);
}
}
}
return OK;
}
return (NG);
#endif
#ifdef PLU_GROUP_FUNC
case PLU_GROUP_STEP:
Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Modify_Step[2]);
if(Get_Num_Input() != OK)
return NG;
if(!numcnt)
return OK;
if(lnum < 1 || lnum > PLU_GROUP_NUM)
{
errorType(ERR_DIGIT_ILLEGAL);
continue;
}
plu[prg_idx].group = lnum;
last_modi_flag = 1;
modi_flag = 1;
return OK;
#endif
case PLU_NEXT_ITEM:
return OK;
}
return (OK);
}
word Srch_Idle_PLU(void)
{
word i, j = 0xffff;
for(i = 0; i < MAX_PLU_USED_TBL_CNT; i++)
{
if(PLU_Used_Tbl[i] != 0xff)
{
for(j =0; j< 8; j++)
{
if(((PLU_Used_Tbl[i]>>j)&0x01) == 0)
{j += i*8; break;}
}
break;
}
}
return j;
}
/*----------------------------------------------------------------------------*
* 注意Idx 必须是有效的, 此处没有作保护判断。
* return: 1 --- This PLU has been in use.
* 0 --- This PLU is Idle PLU
*----------------------------------------------------------------------------*/
BOOL Chk_Idle_PLU(word Idx)
{
word i;
byte j;
i = Idx/8;
j = (byte)Idx&0x07;
return ((PLU_Used_Tbl[i]>>j)&0x01);
}
void Set_PLU_Used(word Idx)
{
word i;
byte j;
i = Idx/8;
j = (byte)Idx&0x07;
PLU_Used_Tbl[i] |= (1<<j);
}
void Set_PLU_Idle(word Idx)
{
word i;
byte j;
i = Idx/8;
j = (byte)Idx&0x07;
PLU_Used_Tbl[i] &= ~(1<<j);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -