📄 trade.c
字号:
strcpy(buf,"发票的打印项数已满请结算");
lcd_disp(3,0,buf);
if(trade_info.menu_num>PAGE_ITEM_NUM)
{
menu[trade_info.menu_num].quantity=0;
menu[trade_info.menu_num].money=0;
menu[trade_info.menu_num].branch=0;
trade_info.menu_num=PAGE_ITEM_NUM;
continue;
}
}
}
if(trade_info.menu_num>PAGE_ITEM_NUM)trade_info.menu_num=PAGE_ITEM_NUM;//不能超过最大的打印项数
num=0;
set_value0(numkey,(uint)sizeof(numkey));
//if(trade_info.menu_num==1)total_moneybuf=0;
//total_moneybuf+=menu[trade_info.menu_num-1].money;//原价
//2005.11.26
if(is_fushu==0xaa)
{
trade_info.total_money=0;
for(i=0;i<trade_info.menu_num;i++)
{
trade_info.total_money+=menu[i].money;
}
}
else
trade_info.total_money+=menu[trade_info.menu_num-1].money;
trade_info.subtotal_money=0;
//显示
rlt=disp_trade(ALL_AREA,&menu,"营业中...",MONEY_AREA,&trade_info);
if(rlt)
{
error=rlt;
continue;
}
#ifdef GS
if(trade_info.menu_num%PAGE_ITEM_NUM==0) //该张发票已满
{
if(is_trade==YES)
{
//检查发票是否已用完
if(invoice_roll_info.invoice_curr_no+
trade_info.menu_num/PAGE_ITEM_NUM==invoice_roll_info.invoice_end_no)
{
//显示
rlt=disp_trade(ALL_AREA,&menu,"票完请先结算",TOTAL_AREA,&trade_info);
if(rlt)
{
error=rlt;
continue;
}
trade_info.trade_status=WAITPAY; //等待结算
continue;
}
}
}
else
{
#ifdef GS //国税(边输边打印)
if(customer_name[0]==0) //没有顾客名称
{
trade_info.trade_status=WAITPYINPUT //等待拼音输入
continue;
}
else
{
//打印当前项
rlt=print_invoice_GS(&menu,&record,&class_money,&trade_info,is_trade);
if(rlt)
{
error=rlt;
continue;
}
}
#endif
}
#endif
trade_info.trade_status=TRADEING; //营业中
continue;
/*case SUBTOTAL: //小计键/出帐键(C8)/废票(C6)
if(trade_info.trade_status==TRADEING)
{
if( trade_info.menu_num==0 ||
menu[trade_info.menu_num-1].money==0 ||
numkey[0]!=0)
{
error=KEY_ERROR;
continue;
}
trade_info.subtotal_money=0;
if(trade_info.subtotal_menunum==0) //第一次小计
i=0;
else
i=trade_info.subtotal_menuno+trade_info.subtotal_menunum;
trade_info.subtotal_menuno=i;
trade_info.subtotal_menunum=0;
for(;i<trade_info.menu_num;i++)
{
trade_info.subtotal_money+=menu[i].money;
trade_info.subtotal_menunum++; //本次小计菜单数
}
//显示
sprintf(buf,"小计%lu.%02u",trade_info.subtotal_money/100,
(uint)(trade_info.subtotal_money%100));
rlt=disp_trade(ALL_AREA,&menu,buf,INPUT_AREA,&trade_info);
if(rlt)
{
error=rlt;
continue;
}
}
else
#ifdef C8_VER
if(trade_info.trade_status==READYTRADE)//出帐键
{
if(numkey[0]==0 || num==0)
{
error=KEY_ERROR;
continue;
}
strcpy(buf,"出帐...");
clear_lcd(3,1);
lcd_disp(3,0,buf);
if(is_trade==YES)
{
//收款员报表更新到EEPROM
if(read_eeprom(RECEIVER_ADDR+(trade_info.receiver_no-1)*(uint)sizeof(receiver_report),
(uint)sizeof(receiver_report),&receiver_report))
return(READ_EEPROM_FAIL);
if(lrcdata((uint)sizeof(receiver_report)-1,0,&receiver_report))
return(LRC_ERROR);
receiver_report.not_sell_defray+=num;
receiver_report.lrc=lrcdata((uint)sizeof(receiver_report)-1,1,
&receiver_report);
if(write_eeprom(RECEIVER_ADDR+
(trade_info.receiver_no-1)*(uint)sizeof(receiver_report),
(uint)sizeof(receiver_report),&receiver_report))
{
error=WRITE_EEPROM_FAIL;
continue;
}
//日报表
if(read_eeprom(DAY_ADDR,(uint)sizeof(day_report),&day_report))
return(READ_EEPROM_FAIL);
if(day_report.lrc!=lrcdata((uint)sizeof(day_report)-1,1,&day_report))
//if(lrcdata((uint)sizeof(day_report)-1,0,&day_report))
return(LRC_ERROR);
//月报表
if(read_eeprom(MONTH_ADDR,(uint)sizeof(month_report),&month_report))
return(READ_EEPROM_FAIL);
if(lrcdata((uint)sizeof(month_report)-1,0,&month_report))
return(LRC_ERROR);
//日报表更新到EEPROM
day_report.not_sell_defray+=num;
day_report.lrc=lrcdata((uint)sizeof(day_report)-1,1,&day_report);
if(write_eeprom(DAY_ADDR,(uint)sizeof(day_report),&day_report))
{
error=WRITE_EEPROM_FAIL;
continue;
}
//月报表更新到EEPROM
month_report.not_sell_defray+=num;
month_report.lrc=lrcdata((uint)sizeof(month_report)-1,1,&month_report);
if(write_eeprom(MONTH_ADDR,(uint)sizeof(month_report),&month_report))
{
error=WRITE_EEPROM_FAIL;
continue;
}
}
num=0;
set_value0(numkey,sizeof(numkey));
trade_info.trade_status=WAITTRADE;first=1;
}
#endif
/*
#else//废票(C6)
if(trade_info.trade_status==READYTRADE)
{
//num为废票的截止号,该票号做废票处理,添加笔交易记录
tmp=invoice_roll_info.invoice_curr_no;
if(num==0 || num<tmp ||
num>invoice_roll_info.invoice_end_no)
{
//无效票号
error=INVO_NO_ERROR;
continue;
}
sprintf(buf,"%lu",num);
if(strlen(buf)>MAX_INVOICE_LENGTH)
{
//无效票号
error=INVO_NO_ERROR;
continue;
}
//废连续票号
for(i=0;i+tmp<=num;i++)
{
trade_info.menu_num=0;
trade_info.invoice_type=RESCISSORY_INVOICE;
trade_info.total_money=0;
trade_info.trade_end=1; //本次交易结束
trade_info.invoice_no=i+tmp;
#ifdef DS
rlt=save_data_DS(&menu,&trade_info,is_trade);
#endif
if(rlt)
{
error=rlt;
continue;
}
}
num=0;
set_value0(numkey,(uint)sizeof(numkey));
trade_info.trade_status=WAITTRADE;first=1;
if(is_trade==YES)
{
//从税控卡获得发票卷的信息
rlt=get_invoice_roll_info(&invoice_roll_info);
if(rlt)
return(rlt);
}
}
#endif
else
{
error=KEY_ERROR;
continue;
}*/
/*if(trade_info.trade_status!=WAITPYINPUT ||
py[0]=0)
{
error=KEY_ERROR;
continue;
}
//根据拼音查汉字
trade_info.trade_status=WAITHZSELECT;*/
//continue;
case TOTAL: //合计键
if(trade_info.trade_status!=TRADEING ||
trade_info.menu_num==0 ||
menu[trade_info.menu_num-1].money==0 ||
numkey[0]!=0)
{
error=KEY_ERROR;
continue;
}
//显示
rlt=disp_trade(ALL_AREA,&menu,"等待结算...",MONEY_AREA,&trade_info);//disp_trade(ALL_AREA,&menu,"等待结算...",TOTAL_AREA,&trade_info);
if(rlt)
{
error=rlt;
continue;
}
trade_info.trade_status=WAITPAY;
//total_moneybuf=trade_info.total_money;
continue;
/******************************************************************/
case PLU: //PLU键/计算器键
#ifdef CALCULATION//计算器功能
if(trade_info.trade_status==WAITTRADE)//计算器键
{
calculate();
first=1;
continue;
}
#endif
if(num==0 || (num>g_max_plu_no&&(!input_plu_barcode)))//num作为PLU号
{
error=KEY_ERROR;
continue;
}
if((input_plu_barcode)&&(!in_plubarcode_hand))
{
i=strlen(numkey);
strncpy(buf,numkey,i);
buf[i]=0;
num=0;
set_value0(numkey,(uint)sizeof(numkey));
in_plubarcode_hand=1;
key_tmp=0;
trade_info.trade_status=WAITTRADE;
continue;
}
else {in_plubarcode_hand=0;}
//num作为PLU号
//send_str(30,testbuf);
plu_no=num;
num=0;
set_value0(numkey,(uint)sizeof(numkey));
goto plu_branch_comm;
case BIT:
if(trade_info.trade_status==WAITPAY ||
trade_info.trade_status==HZSELECTED)//辅币键
{
if(numkey[0]!=0 && num==0 || num>4 ||
trade_info.pay_way>0)
{
error=KEY_ERROR;
continue;
}
if(num==0) //没输入辅币代号(1-4)
num=1;
trade_info.pay_way=num;
trade_info.bit_money_no=num;
sprintf(buf,"辅币%u",(uint)num);
rlt=disp_trade(INPUT_AREA,menu,buf,INPUT_AREA,&trade_info);
if(rlt)
{
error=rlt;
continue;
}
num=0;
set_value0(numkey,sizeof(numkey));
continue;
}
else
{
error=KEY_ERROR;
continue;
}
break;
case BRANCH: //部门/辅币键
//send_char(trade_info.trade_status);
/*if(trade_info.trade_status==WAITPAY ||
trade_info.trade_status==HZSELECTED)//辅币键
{
if(numkey[0]!=0 && num==0 || num>4 ||
trade_info.pay_way>0)
{
error=KEY_ERROR;
continue;
}
if(num==0) //没输入辅币代号(1-4)
num=1;
trade_info.pay_way=num;
trade_info.bit_money_no=num;
sprintf(buf,"辅币%u",(uint)num);
rlt=disp_trade(INPUT_AREA,menu,buf,INPUT_AREA,&trade_info);
if(rlt)
{
error=rlt;
continue;
}
num=0;
set_value0(numkey,sizeof(numkey));
continue;
}
*/
//部门键
if(numkey[0]==0 || num==0 || num >MAX_BRANCH_NUM)
{
//send_char(0xaa);
error=KEY_ERROR;
continue;
}
branch_no=num;
num=0;
set_value0(numkey,(uint)sizeof(numkey));
goto plu_branch_comm;
case BRANCH1:
if(g_branch_plu_switch==1) //PLU
{
plu_no=1;
}
else
{
branch_no=1;
}
goto plu_branch_comm;
case BRANCH2:
//send_char(0xaa);
if(g_branch_plu_switch==1) //PLU
{
plu_no=2;
}
else
{
branch_no=2;
}
goto plu_branch_comm;
case BRANCH3:
if(g_branch_plu_switch==1) //PLU
{
plu_no=3;
}
else
{
branch_no=3;
}
goto plu_branch_comm;
case BRANCH4:
if(g_branch_plu_switch==1) //PLU
{
plu_no=4;
}
else
{
branch_no=4;
}
goto plu_branch_comm;
case BRANCH5:
if(g_branch_plu_switch==1) //PLU
{
plu_no=5;
}
else
{
branch_no=5;
}
goto plu_branch_comm;
case BRANCH6:
if(g_branch_plu_switch==1) //PLU
{
plu_no=6;
}
else
{
branch_no=6;
}
goto plu_branch_comm;
case BRANCH7:
if(g_branch_plu_switch==1) //PLU
{
plu_no=7;
}
else
{
branch_no=7;
}
goto plu_branch_comm;
case BRANCH8:
if(g_branch_plu_switch==1) //PLU
{
plu_no=8;
}
else
{
branch_no=8;
}
goto plu_branch_comm;
case BRANCH9:
if(g_branch_plu_switch==1) //PLU
{
plu_no=9;
}
else
{
branch_no=9;
}
goto plu_branch_comm;
case NS: //开钱箱键
OpenMomneyBox();
continue;
#ifdef C8_VER
case BRANCH10:
if(g_branch_plu_switch==1) //PLU
{
plu_no=10;
}
else
{
branch_no=10;
}
goto plu_branch_comm;
case BRANCH11:
if(g_branch_plu_switch==1) //PLU
{
plu_no=11;
}
else
{
branch_no=11;
}
goto plu_branch_comm;
case BRANCH12:
if(g_branch_plu_switch==1) //PLU
{
plu_no=12;
}
else
{
branch_no=12;
}
goto plu_branch_comm;
#endif
plu_branch_comm: //PLU、部门的公共处理代码
if(!(trade_info.trade_status==WAITTRADE||
trade_info.trade_status==READYTRADE ||
trade_info.trade_status==TRADEING))
{
error=KEY_ERROR;
continue;
}
//if(branch_no!=1)dis_area=1;
if(trade_info.menu_num==0 || menu[trade_info.menu_num-1].money)
//上一个商品已经有金额或是第一笔,若为PLU且该商品没有PLU号则开始一个新的商品,若为部门该更改部门
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -