📄 sale1.c
字号:
for(i = 0; i < MAX_TAX_NUM; i++)
{
TaxFlag[i] = (((pflag>>i)&0x01)^shift_flag[i]);
ltmp += caltax(TaxFlag[i],i,trans.amount);
}
// Tax1Flag=(pflag&0x01)^shift1_flag;
// Tax2Flag=((pflag>>1)&0x01)^shift2_flag;
// Tax3Flag=((pflag>>2)&0x01)^shift3_flag;
// ltmp=caltax(Tax1Flag,0,trans.amount)+caltax(Tax2Flag,1,trans.amount)+caltax(Tax3Flag,2,trans.amount);
}
else
{
ltmp = 0;
for(i = 0; i < MAX_TAX_NUM; i++)
{
TaxFlag[i] = 0;
}
}
if(!sysflag->tax_shift_mode)
Clr_Tax_Flag();
}
else
ltmp = 0;
/*** maxcheck **/
if(maxcheck(ch,DEPT)==NOTOK)
return;
if(Mul_flag) /* May not to display the department number */
{
Item_Mode = MULT;
Clr_Dsp_Data();
Lcm_Disp_Desc( dept[ch].desc, NO ,LCM_LINE_2 ,ALIGN_LEFT, FALSE);
Qty_Adjust(tmp_count);
// len=LongAndDot2Str(adj_num,adj_dots, qty ,1,0,0,0);
// VFDDisplay(qty+MAX_LENGTH_15-len, NOTCLEARD, LEFT);
RightDisp((RM_flag?-1:1)*trans.amount, sysflag->sysdots); /* The VOID operation can not execute this sentences */
}
else
{
Item_Mode = SNGL;
repcnt =1; /* Store the counter */
Clr_Dsp_Data();
//Insert_Num((ch+1)/10,0);
//Insert_Num((ch+1)%10,1);
Lcm_Disp_Desc( dept[ch].desc, NO ,LCM_LINE_2 ,ALIGN_LEFT, FALSE);
//disp_Num_Str(repcnt, 0);
Insert_Num( repcnt/10 ,0);
Insert_Num( repcnt%10 ,1);
RightDisp((RM_flag?-1:1)*trans.amount, sysflag->sysdots);
/* The OVID operation can not execute this sentences */
}
}
else /** programmed price processing **/
{
if(Mul_flag)
{
if(tmp_count > MAXQUNTY)
{errorType(ERR_XTIME_QTY);return;}
if(get_dept_price(ch)==NOTOK) /* Get the programmed price */
return;
if(lnum >= getLong(dept[ch].Hdlo))
{errorType(ERR_HALO);return;}
tmp = Sale_Mul(lnum, sysflag->sysdots, tmp_count, 3, sysflag->xCount_round, sysflag->sysdots);
if((tmp>sysflag->HaloNum) || (tmp == MIN_SIGNED_LONG) || (tmp < 0))
{errorType(ERR_HALO);return;}
trans.price = lnum;
trans.count = tmp_count;
trans.amount = tmp;
/* this palce will be added Tax Shift Flag processing */
pflag=dept[ch].pflag;
if(sysflag->Tax_System)
{
if(!Tax_Emp_Flag)
{
ltmp = 0;
for(i = 0; i < MAX_TAX_NUM; i++)
{
TaxFlag[i] = (((pflag>>i)&0x01)^shift_flag[i]);
ltmp += caltax(TaxFlag[i],i,trans.amount);
}
// Tax1Flag=(pflag&0x01)^shift1_flag;
// Tax2Flag=((pflag>>1)&0x01)^shift2_flag;
// Tax3Flag=((pflag>>2)&0x01)^shift3_flag;
// ltmp=caltax(Tax1Flag,0,trans.amount)+caltax(Tax2Flag,1,trans.amount)+caltax(Tax3Flag,2,trans.amount);
}
else
{
ltmp = 0;
for(i = 0; i < MAX_TAX_NUM; i++)
{
TaxFlag[i] = 0;
}
// Tax1Flag = Tax2Flag = Tax3Flag = 0;
// ltmp = 0;
}
if(!sysflag->tax_shift_mode)
Clr_Tax_Flag();
}
else
ltmp = 0;
if(maxcheck(ch,DEPT)==NOTOK)
return;
Item_Mode = MULT;
Clr_Dsp_Data();
Lcm_Disp_Desc( dept[ch].desc ,NO ,LCM_LINE_2 ,ALIGN_LEFT, FALSE);
Lcm_Disp_Desc( dept[ch].desc ,NO ,LCM_LINE_2 ,ALIGN_LEFT, FALSE);
Qty_Adjust(tmp_count);
// len=LongAndDot2Str(adj_num,adj_dots, qty ,1,0,0,0);
// VFDDisplay(qty+MAX_LENGTH_15-len, NOTCLEARD, LEFT);
RightDisp((RM_flag?-1:1)*trans.amount, sysflag->sysdots);
}
else /* press dept key only */
{ /* ________________|----->>> For the indirect department press duplucate */
if((lastincmd!=InCmd) || (DeptShiftFlag != 0) || (DPLUShiftFlag != 0) || (RM_flag==1) || (TnsBf_Len == 0)
||((transbuff[TnsBf_Len-1].ID&0x1F) == TS_RM_DEPT)
|| ((transbuff[TnsBf_Len-1].ID&0x1F) == TS_VD_DEPT)) /* Not press the key repeat */
{
if(Void_flag == 0)
{
if(get_dept_price(ch)==NOTOK)
return;
}
else
{
if(Void_Mode == 0) /* Used the VOID input price */
lnum = tmp_price;
else
{
Void_Mode = 0;
if(get_dept_price(ch)==NOTOK)
return;
}
}
if((lnum >= getLong(dept[ch].Hdlo)) || (lnum > sysflag->HaloNum))
{errorType(ERR_HALO);return;}
trans.price = lnum;
trans.count = 1*1000;
trans.amount = lnum;
pflag=dept[ch].pflag;
if(sysflag->Tax_System)
{
if(!Tax_Emp_Flag)
{
ltmp = 0;
for(i = 0; i < MAX_TAX_NUM; i++)
{
TaxFlag[i] = (((pflag>>i)&0x01)^shift_flag[i]);
ltmp += caltax(TaxFlag[i],i,trans.amount);
}
// Tax1Flag=(pflag&0x01)^shift1_flag;
// Tax2Flag=((pflag>>1)&0x01)^shift2_flag;
// Tax3Flag=((pflag>>2)&0x01)^shift3_flag;
// ltmp=caltax(Tax1Flag,0,trans.amount)+caltax(Tax2Flag,1,trans.amount)+caltax(Tax3Flag,2,trans.amount);
}
else
{
ltmp = 0;
for(i = 0; i < MAX_TAX_NUM; i++)
{
TaxFlag[i] = 0;
}
// Tax1Flag = Tax2Flag = Tax3Flag = 0;
// ltmp = 0;
}
if(!sysflag->tax_shift_mode)
Clr_Tax_Flag();
}
else
ltmp = 0;
if(maxcheck(ch,DEPT)==NOTOK)
return;
Item_Mode = SNGL;
repcnt=1;
Clr_Dsp_Data();
//Insert_Num((ch+1)/10,0);
//Insert_Num((ch+1)%10,1);
Lcm_Disp_Desc( dept[ch].desc, NO ,LCM_LINE_2 ,ALIGN_LEFT, FALSE);
Insert_Num( repcnt/10 ,0);
Insert_Num( repcnt%10 ,1);
RightDisp(((Void_flag||RM_flag)?-1:1)*trans.amount,sysflag->sysdots);
}
else /* repeat key pressed */
{
if((Item_Mode == SNGL) && ((transbuff[TnsBf_Len - 1].ID&0x1F) == TS_DEPT))
{
ch = transbuff[TnsBf_Len - 1].nth;
#ifdef AUTO_PER /* Support the department auto percent function */
if(Auto_Per_Flag == 1)
trans.amount = bak_trans_amount;
else
#endif /* End AUTO_PER */
trans.amount = transbuff[TnsBf_Len - 1].price; /* The amount is equal to the price */
trans.count = 1*1000;
trans.price = trans.amount;
if(sysflag->Tax_System)
{
ltmp = 0;
for(i =0; i < MAX_TAX_NUM; i++)
ltmp += caltax(TaxFlag[i],i,trans.amount);
}
else
ltmp = 0;
if(maxcheck(ch,DEPT)==NOTOK)
return;
repcnt++;
//if(repcnt==10) /*repcnt number add to 100 ok?*/
if(repcnt ==100)
repcnt=0;
Clr_Dsp_Data();
//Insert_Num((ch+1)/10,0);
//Insert_Num((ch+1)%10,1);
Lcm_Disp_Desc( dept[ch].desc, NO ,LCM_LINE_2 ,ALIGN_LEFT, FALSE);
//Insert_Num(repcnt,2);
Insert_Num( repcnt/10 ,0);
Insert_Num( repcnt%10 ,1);
RightDisp(trans.amount, sysflag->sysdots);
}
else
{
ch = transbuff[TnsBf_Len - 1].nth;
if(get_dept_price(ch)==NOTOK)
return;
trans.price = lnum;
trans.count = 1*1000;
trans.amount = lnum;
pflag=dept[ch].pflag;
if(sysflag->Tax_System)
{
if(!Tax_Emp_Flag)
{
ltmp = 0;
for(i = 0; i < MAX_TAX_NUM; i++)
{
TaxFlag[i] = (((pflag>>i)&0x01)^shift_flag[i]);
ltmp += caltax(TaxFlag[i],i,trans.amount);
}
// Tax1Flag=(pflag&0x01)^shift1_flag;
// Tax2Flag=((pflag>>1)&0x01)^shift2_flag;
// Tax3Flag=((pflag>>2)&0x01)^shift3_flag;
// ltmp=caltax(Tax1Flag,0,trans.amount)+caltax(Tax2Flag,1,trans.amount)+caltax(Tax3Flag,2,trans.amount);
}
else
{
ltmp = 0;
for(i = 0; i < MAX_TAX_NUM; i++)
{
TaxFlag[i] = 0;
}
// Tax1Flag = Tax2Flag = Tax3Flag = 0;
// ltmp = 0;
}
if(!sysflag->tax_shift_mode)
Clr_Tax_Flag();
}
else
ltmp = 0;
if(maxcheck(ch,DEPT)==NOTOK)
return;
Item_Mode = SNGL;
repcnt=1;
Clr_Dsp_Data();
//Insert_Num((ch+1)/10,0);
//Insert_Num((ch+1)%10,1);
Lcm_Disp_Desc( dept[ch].desc, NO ,LCM_LINE_2 ,ALIGN_LEFT, FALSE);
Insert_Num( repcnt/10 ,0);
Insert_Num( repcnt%10 ,1);
RightDisp(trans.amount, sysflag->sysdots);
}
}
}
}
/** print and display processing **/
trans.nth=ch;
Sale_Prn(transbuff[TnsBf_Len-1]);
Update_Tmpvars(transbuff[TnsBf_Len-1], POSITIVE); /* Update the structure variable tmpvars */
/*-----------------------------------------------------------------------*/
Void_flag=0;
RM_flag = 0;
Mul_flag = 0;
#ifdef AUTO_PER /* Support the department auto percent function */
if((dept[ch].per_rate != 0) && (sysflag->Auto_Per_Use_Flag == 1) && (transbuff[TnsBf_Len-1].ID == TS_DEPT))
/* The percent rate is not zero, do the auto percent function */
{
Do_Auto_Per(DEPT, ch);
}
#endif /* End AUTO_PER */
if(!NewTrans)
{
NewTrans=1;
pflag=dept[ch].pflag;
if(pflag&0x10) /* single item, Do the CASH */
{ /** do cash **/
InCmd=KD_CASH;
numcnt=0;
Do_Cash();
}
else
{
if(CurrMode != TRAINING)
continue_sale_flag=0xAA;
}
}
}
/*************************************************************/
void Do_PLUcr() /* The open PLU price get */
{
if(numcnt) /* Open PLU price input */
{
if(Void_flag == 1)
{errorType(ERR_KEY_SEQ);return;}
if((lnum >= getLong(PRICENUM)) || (lnum > sysflag->HaloNum))
{errorType(ERR_HALO);return;}
if(lnum == 0)
{errorType(ERR_ZERO_TRANS);return;}
pluenflag=1;
tmp_price=lnum;
//Insert_Char('A',0);
Lcm_Disp_Str(Input_Price,LCM_LINE_2 , ALIGN_LEFT, FALSE);
RightDisp(lnum,sysflag->sysdots);
}
else /* Used in the VOID operation */
{
if(Void_flag == 1)
{
if(tmp_price > sysflag->HaloNum)
{errorType(ERR_HALO);return;}
if(tmp_price == 0)
{errorType(ERR_ZERO_TRANS);Void_Mode = 0;return;}
pluenflag = 1;
//Insert_Char('A',0);
Lcm_Disp_Str( PLU_Void ,LCM_LINE_2 ,ALIGN_LEFT, FALSE);
}
else
{
errorType(ERR_DIGIT_ILLEGAL);
return;
}
}
}
/*****************************************************************/
byte get_plu_price(word ch)
{
if(pluenflag)
{
lnum=tmp_price;
pluenflag=0;
}
else
{
lnum=plu[ch].price;
if(lnum==0) return(NOTOK);
}
return (OK);
}
/*****************************************************************/
/*------------------------------------------------------------------------------------*
* Not need judge the error case, for the function 'maxcheck' has judged it.
*------------------------------------------------------------------------------------*/
byte PLUcheck(word ch)
{
byte plink; /* The PLU linked departments number */
byte i;
if(Chk_Buff_Full() == NG)
return (NOTOK);
plink = plu[ch].plink; /* Get the PLU linked departments number */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -