📄 query.c
字号:
uchar qj[]={"清机"};
struct receiver_report_struct xdata re_report[MAX_RECEIVER_NUM];
error=read_eeprom(RECEIVER_NO,2,buf);//read_eeprom(RECEIVER_NO,1,&receiver_number);
if(error) return READ_EEPROM_FAIL;
receiver_number=buf[0];
if(!receiver_number) return POWER_FAIL_1;
error = read_eeprom(RECEIVER_ADDR+(uint)(receiver_number-1)*
RECEIVER_STRUCT_LEN,RECEIVER_STRUCT_LEN,&re_report[receiver_number-1]);
if(error) return READ_EEPROM_FAIL;
//HYS620
error = GotoHomePosition();
if(error)
return PRINT_FAIL;
//END HYS620
i=(PRINTAL_NUM-16)/2;
add_blank(i,buf);
sprintf(&buf[i],"收款员%02bu查询报表",receiver_number);
if(function==RECEIVER_REPORT_DEL)
memcpy(&buf[i+8],qj,4);
error=print_str(buf);
if(error) return(error);
strcpy(buf,"机器号:");
HexToStr(g_manufacturer_info.machinery_no,&buf[5],8);
error=print_str(buf);
if(error) return(error);
for(i=0;i<5;i++) buf1[i] = re_report[receiver_number-1].time[i];//起始时间
read_rtc(buf);
for(i=0;i<5;i++) buf1[i+6] = buf[i];//当前时间
sprintf(buf,"20%02bx年%02bx月%02bx日至20%02bx年%02bx月%02bx日"
,buf1[0],buf1[1],buf1[2],buf1[6],buf1[7],buf1[8]);
error=print_str(buf);
if(error) return(error);
strcpy(buf,"总交易:");
sprintf(buf1,"%6lu",re_report[receiver_number-1].total_trade);
print_format((PRINTAL_NUM-7)/2,&buf[7],buf1);//print_format(PRINTAL_NUM-17,&buf[7],buf1);
pri_format(re_report[receiver_number-1].total_money,7,&buf[(PRINTAL_NUM-7)/2+7]);//&buf[PRINTAL_NUM-10]);
error=print_str(buf);
if(error) return(error);
strcpy(buf,"退货: ");
sprintf(buf1,"%6lu",re_report[receiver_number-1].retreat_num);
print_format((PRINTAL_NUM-7)/2,&buf[7],buf1);//print_format(PRINTAL_NUM-17,&buf[7],buf1);
pri_format(re_report[receiver_number-1].retreat_money,7,&buf[(PRINTAL_NUM-7)/2+7]);//&buf[PRINTAL_NUM-10]);
error=print_str(buf);
if(error) return(error);
for(i=0;i<8;i++)
{
if(!re_report[receiver_number-1].cash_num[i]) continue;
sprintf(buf,"%6s:",money_name[i]);
buf[6]=':';
sprintf(buf1,"%4lu",re_report[receiver_number-1].cash_num[i]);
print_format(PRINTAL_NUM-17,&buf[7],buf1);
pri_format(re_report[receiver_number-1].total_cash[i],7,&buf[(PRINTAL_NUM-7)/2+7]);//&buf[PRINTAL_NUM-10]);
error=print_str(buf);
if(error) return(error);
}
if(re_report[receiver_number-1].not_sell_earning)
{
sprintf(buf,"人民币非交易收入: ");
add_blank(PRINTAL_NUM-28,&buf[19]);
pri_format(re_report[receiver_number-1].not_sell_earning,6,
&buf[19]);//&buf[PRINTAL_NUM-9]);
error=print_str(buf);
if(error) return(error);
}
if(re_report[receiver_number-1].not_sell_defray)
{
sprintf(buf,"人民币非交易支出: ");
add_blank(PRINTAL_NUM-28,&buf[19]);
pri_format(re_report[receiver_number-1].not_sell_defray,6,
&buf[19]);//&buf[PRINTAL_NUM-9]);
error=print_str(buf);
if(error) return(error);
}
strcpy(buf,"折扣总额:");
add_blank(PRINTAL_NUM-19,&buf[9]);
pri_format(re_report[receiver_number-1].total_discount_money,7,&buf[PRINTAL_NUM-15]);//&buf[PRINTAL_NUM-10]);
error=print_str(buf);
if(error) return(error);
strcpy(buf,"加成总额:");
add_blank(PRINTAL_NUM-19,&buf[9]);
pri_format(re_report[receiver_number-1].total_service_money,7,&buf[PRINTAL_NUM-15]);//&buf[PRINTAL_NUM-10]);
error=print_str(buf);
if(error) return(error);
strcpy(buf,"直接折扣总额:");
add_blank(PRINTAL_NUM-23,&buf[13]);
pri_format(re_report[receiver_number-1].total_decrease_money,7,&buf[PRINTAL_NUM-15]);//&buf[PRINTAL_NUM-10]);
error=print_str(buf);
if(error) return(error);
strcpy(buf,"非交易开钱箱次数:");
add_blank(PRINTAL_NUM-21,&buf[16]);
sprintf(&buf[PRINTAL_NUM-6],"%6lu",re_report[receiver_number-1].open_cashbox_num);
error=print_str(buf);
if(error) return(error);
t_cash = re_report[receiver_number-1].total_cash[0] +
re_report[receiver_number-1].not_sell_earning -
re_report[receiver_number-1].not_sell_defray -
re_report[receiver_number-1].retreat_money;
if(t_cash)
{
sprintf(buf,"现金(%6s)",money_name[0]);
add_blank(PRINTAL_NUM-24,&buf[14]);
pri_format(t_cash,6,&buf[PRINTAL_NUM-10]);
error=print_str(buf);
if(error) return(error);
}
if(g_printer_sel!=1)
{
#ifdef C6_VER
error=Fast_feed_paper_hang(160);//fpaper(8);
error=Fast_feed_paper_hang(140);//fpaper(8);
if(error) return LINE_FEED_FAIL;
#else
feed_on_line(8);
#endif
}
else
{
Wei_printer_feed_paper(8);
}
if(function==RECEIVER_REPORT_DEL)
{
set_value0(&re_report[receiver_number-1],RECEIVER_STRUCT_LEN);
read_rtc(buf);
memcpy(re_report[receiver_number-1].time,buf,
(uint)sizeof(re_report[receiver_number-1].time)); //将本次清机时间记录
re_report[receiver_number-1].lrc=lrcdata((uint)sizeof(re_report[receiver_number-1])-1,1,
&re_report[receiver_number-1]);
error = write_eeprom(RECEIVER_ADDR+(uint)(receiver_number-1)*
RECEIVER_STRUCT_LEN,RECEIVER_STRUCT_LEN,&re_report[receiver_number-1]);
if(error) return WRITE_EEPROM_FAIL;
}
return OK;
}
#endif
#ifdef C8_VER
#ifdef QY_TRADE_RPT
/*==================================================================
函数功能:打印营业员查询或清机报表
入口参数:funtion--功能号
出口参数:
返回值: ==OK,成功
!=0k,失败
全局变量:
编制人: 日期:2003-06-30
==================================================================*/
uchar print_trade_rpt(uchar function)
{
uchar error;
uchar i;
uchar xdata buf[60],buf1[15];
uchar qj[]={"清机"};
uchar xdata report_date[7];
struct trade_report_struct xdata tr_report[MAX_TRADE_NUM+1];
//----检查清除权限---//
if(function==TRADE_REPORT_DEL&&check_user_card())
return USERCARD_MAC_ERROR;
for(i=0;i<MAX_TRADE_NUM;i++)
{
error = read_eeprom(TRADE_ADDR+
(uint)i*TRADE_STRUCT_LEN,TRADE_STRUCT_LEN,&tr_report[i]);
if(error) return READ_EEPROM_FAIL;
}
//HYS620
error = GotoHomePosition();
if(error)
return PRINT_FAIL;
//END HYS620
i=(PRINTAL_NUM-12)/2;
add_blank(i,buf);
sprintf(&buf[i],"营业员查询报表\0");
if(function==TRADE_REPORT_DEL)
memcpy(&buf[i+6],qj,4);
error=print_str(buf);
if(error) return(error);
strcpy(buf,"机器号:");
HexToStr(g_manufacturer_info.machinery_no,&buf[5],8);
error=print_str(buf);
if(error) return(error);
error = read_eeprom((uint)10+REPORT_DATE,5,report_date);
if(error) return READ_EEPROM_FAIL;
for(i=0;i<5;i++) buf1[i] = report_date[i];//起始时间
read_rtc(buf);
for(i=0;i<5;i++) buf1[i+6] = buf[i];//当前时间
sprintf(buf,"20%02bx年%02bx月%02bx日至20%02bx年%02bx月%02bx日"
,buf1[0],buf1[1],buf1[2],buf1[6],buf1[7],buf1[8]);
error=print_str(buf);
if(error) return(error);
for(i=0;i<MAX_TRADE_NUM;i++)
{
if(!tr_report[i].trade_no) continue;
sprintf(buf,"营业员%3bu",tr_report[i].trade_no);
sprintf(buf1," %6lu ",tr_report[i].total_trade);
strcat(buf,buf1);
pri_format(tr_report[i].total_money,7,&buf[strlen(buf)]);
error=print_str(buf);
if(error) return(error);
if(!tr_report[i].retreat_num) continue;
sprintf(buf,"退款 :%5lu次 退款总额 :",tr_report[i].retreat_num); //28 bytes
pri_format(tr_report[i].retreat_money,7,&buf[28]);
error=print_str(buf);
if(error) return(error);
}
if(g_printer_sel!=1)
{
#ifdef C6_VER
error=Fast_feed_paper_hang(140);//fpaper(8);
if(error) return LINE_FEED_FAIL;
#else
feed_on_line(8);
#endif
}
else
{
Wei_printer_feed_paper(8);
}
if(function==TRADE_REPORT_DEL)
{
for(i=0;i<MAX_TRADE_NUM;i++)
{
//tr_report[i].trade_no = 0;
set_value0(&tr_report[i],TRADE_STRUCT_LEN);
error = write_eeprom(TRADE_ADDR+
(uint)i*TRADE_STRUCT_LEN,TRADE_STRUCT_LEN,&tr_report[i]);
if(error) return WRITE_EEPROM_FAIL;
}
read_rtc(report_date);
error = write_eeprom((uint)10+REPORT_DATE,5,report_date);
if(error) return WRITE_EEPROM_FAIL;
}
return OK;
}
#endif
#endif
//==================================================================================
/*uchar set_super_password(void)
{
uchar disp_buf[MAX_LCD_COL*MAX_LCD_NUM+1];//显示缓冲,长度为lcd一页
uchar key;//键值
uchar numkey_buf[PASSWORD_LEN+1];//输入的数字键字符串缓冲区
uchar keynum,max_key_num;//已经输入的键数,最大允许输入键数
uchar error;//错误类别
//ulong num;//输入数
uchar step;//操作步骤
uchar password_tmp[PASSWORD_LEN+1];//密码暂存
uchar i,point;
uchar no_card;
uchar rec_no;
//----------初始化----------------//
error=0;
for(i=0;i<MAX_KEY_LEN;i++) numkey_buf[i]=0;//初始化数字输入缓冲区
keynum=0;
point=0;
max_key_num=6;
clear_lcd(0,4);
//----------提示当前功能--------------//
strcpy(disp_buf,"请输入新的超级密码\r不超过6位再按[确认]键\r");
lcd_disp(0,0,disp_buf);
//get_menu_name_sp(MAX_LAYER_MENU,SET_RECEIVER_PASSWORD,disp_buf);
//lcd_disp(0,0,disp_buf);
//----------提示下一步操作---------------//
//sprintf(disp_buf,"请输入营业员号+[确认]\r取值范围[1,%d]\r",(uint)MAX_RECEIVER_NUM);
//lcd_disp(1,0,disp_buf);
step=1;
no_card=0;
//----------等待按键---------------//
while(1)
{
if(error) catch_error_display(error,0);//捕获错误
openbacklight();
if(low_pwr) return POWER_OFF;//监测到断电了,则exit
key = get_key();
if(!key) continue;
//beep(50);
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;//清除数字输入缓冲区
keynum=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' :
if(keynum==max_key_num)
{
error=KEY_ERROR;
break;
}
numkey_buf[keynum]=key;
keynum++;
numkey_buf[keynum]=0;
//------隐含显示输入数-------//
clear_lcd(3,1);
disp_buf[keynum-1]='*';
disp_buf[keynum]='\0';
lcd_disp(3,0,disp_buf);
break;
case ENTER:
if(numkey_buf[0]==0)//未输入任何数字
{
error=KEY_ERROR;
break;
}
if(check_user_card())no_card=1;
/*if(step==0)//输入收款员号
{
num=numstr_to_long(numkey_buf,point);//转换输入数为十进制
if(!num||num>MAX_RECEIVER_NUM)//检查其合法性
{
error=OVER_RANGE_ERROR;
break;
}
for(i=0;i<MAX_KEY_LEN;i++) numkey_buf[i]=0;//初始化数字输入缓冲区
rec_no=(uchar)num;
keynum=0;
//----------提示下一步---------------//
if(check_user_card())//若未插入用户卡,则需输入旧密码
{
sprintf(disp_buf,"请输入营业员%bu的旧密码\r再按[确认]键\r",rec_no);
no_card=1;
}
else
{
sprintf(disp_buf,"请输入营业员%bu的新密码\r再按[确认]键\r",rec_no);
}
}
else
if(step==1)
{
/*if(no_card)//若未插入用户卡,则需检查旧密码
{
error=read_eeprom(LOGON_PASSWORD+(rec_no-1)*PASSWORD_LEN,PASSWORD_LEN,password_tmp);
if(error)
{
error = READ_EEPROM_FAIL;
break;
}
if(memcmp(password_tmp,numkey_buf,PASSWORD_LEN))
{
error=RECEIVER_PASSWOR_ERROR;
break;
}
for(i=0;i<MAX_KEY_LEN;i++) numkey_buf[i]=0;//初始化数字输入缓冲区
keynum=0;
sprintf(disp_buf,"请输入营业员%bu的新密码\r再按[确认]键\r",rec_no);
//---接下来操作步骤和有卡操作一样----//
step--;
no_card=0;
}
else
{
memcpy(password_tmp,numkey_buf,PASSWORD_LEN);
for(i=0;i<MAX_KEY_LEN;i++) numkey_buf[i]=0;//初始化数字输入缓冲区
keynum=0;
//----------提示下一步---------------//
sprintf(disp_buf,"请再次输入新的超级密码\r不超过6位再按[确认]键确定\r",rec_no);
}
}
else
{
if(memcmp(password_tmp,numkey_buf,PASSWORD_LEN))
{
error=RECEIVER_PASSWOR_ERROR;
break;
}
error=write_eeprom(SUPERPASSWORD,PASSWORD_LEN,password_tmp);
if(error)
{
error = WRITE_EEPROM_FAIL;
break;
}
}
max_key_num=PASSWORD_LEN;
step++;
clear_lcd(0,2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -