📄 report2.c
字号:
uchar i=0,Number[5],HomeFlag=0,ReadCode[30];
ulong ReVal=0;
while(1)
{
//按HEX格式输入
Number[0]=10;
ReVal=HexlongDialog(" 按发票号查询","请输入打印的发票号","[退出] [确认]",Number,0);
if(Number[0] == K_TC) return;//退出
if(Number[0] == K_HJ)
{
HomeFlag=OpenInvDatdemand(0,&ReVal,ReadCode);//日期存放在ary的低四位即ary[6]ayr[7]ary[8]ary[9]
if(HomeFlag==1)
{
HomeFlag=0;
// InvDisAndPrint(2,ReadCode,0,Number);
InvDisAndPrint(2,ReadCode,2," ");
}
else
ReHint("发票不存在!","请重新输入...");
}
}
}
/*--------------------------------------------------------------------------
发票打印数据查询
--------------------------------------------------------------------------*/
void InvoPrintDatdemand()
{
uchar Hov=1,LnNo=0,InitVal[4];
gyt2 *cp;
I2cRead(InvoPrintNum,2,InitVal);//判断有没有销售数据
cp = InitVal;
if(cp->dat == 0)
{
ReHint("数据不存在!","请重试!");
return;
}
while(1)
{
ReMenu8();
Itarr(InitVal);//初始化退出键值
LnNo=Windows(Hov,0,InitVal);
if(*InitVal == K_TC)return;
switch(LnNo)
{
case 1://按开票日期查询
InvoDatdemand();
break;
case 2://按发票号查询
PrintInvoNo();
break;
case 3://按时间段查询
InputTimeSegment(2);
// InvPrintSelect(19," ",0,0);
break;
case 4:
InputTimeSegment(5);
break;
default:break;
}
Hov=LnNo;
}
}
/*---------------------------------------------------------------------------
已销售发票信息查询
----------------------------------------------------------------------------*/
void OldInfodemand()
{
uchar Hov=1,LnNo=0,InitVal[4];
while(1)
{
ReMenu6();
Itarr(InitVal);
LnNo=Windows(Hov,0,InitVal);
if(*InitVal == K_TC)return;
switch(LnNo)
{
case 1://单卷发票使用汇总查询
Dandemand();
break;
case 2://发票打印数据查询
InvoPrintDatdemand();
break;
case 3://日交易数据查询
DayBuydata();
break;
default:break;
}
Hov=LnNo;
}
}
/*---------------------------------------------------------------------------
已录入发票查询
flag = 1:显示
flag = 0:打印
---------------------------------------------------------------------------*/
void FenInvoInput2(uchar flag)
{
uchar i=0,InitVal[4];
uint addr=0;
gyt4 *xp;
addr=InvoiceCode;
I2cRead(addr,18,TxdBuf);
InitVal[0]=K_TC;
InitVal[1]=0;
WindowsSet(6);
strcpy(&WinHint[0][1],"发票代码:");
BcdToStr(10,TxdBuf,&WinHint[1][1],0);
strcpy(&WinHint[2][1],"当前发票号:");
// if(yongjibing==0)
// {
// for(i=0;i<8;i++)
// {
// RxdBuf[i+10]=0;
// //RxdBuf[i+14]=0;//用此是为了当在没有录入发票时而查询时显示为0
// }
// }
xp = &TxdBuf[10];
NumToStr(xp->dat,&WinHint[3][1],2);
strcpy(&WinHint[4][1],"发票终止号:");
xp = &TxdBuf[14];
NumToStr(xp->dat,&WinHint[5][1],2);
if(flag == 1)
{
Windows(1,0,InitVal);
if(*InitVal == K_TC)return;// 返回
}
else if(flag == 0)//打印
{
PrintLine("已录入发票查询");
for(i=0;i<6;i++)
PrintStr(WinHint[i]);
PrintLine("");
PrintStr("电子存根");
}
}
/*---------------------------------------------------------------------------
已分发发票与已录入发票查询
---------------------------------------------------------------------------*/
void FenInvoInputInvo()
{
uchar Hov=1,LnNo=0,InitVal[4];
while(1)
{
ReMenu11();
Itarr(InitVal);
LnNo=Windows(Hov,0,InitVal);
if(*InitVal==K_TC)return;// 返回
switch(LnNo)
{
case 1:
InvDisAndPrint(7," ",0," ");
break;
case 2:
InvDisAndPrint(8," ",0," ");
break;
default:break;
}
Hov=LnNo;
}
}
/*----------------------------------------------------------------------------
监控数据查询
flag = 0:打印
flag = 1:显示
----------------------------------------------------------------------------*/
void WatchManageData(uchar flag)
{
uchar i=0,InitVal[4],PrintBuf[50],time[10];
uint address=0;
gyt4 *Ips;
address=InvoiceEndData;
I2cRead(address,23,TxdBuf);//读取监控数据
InitVal[0]=K_TC;
InitVal[1]=K_HJ;
InitVal[2]=0;
WindowsSet(10);
strcpy(&WinHint[0][1],"开票截止日期:");
BcdToStr(4,TxdBuf,&WinHint[0][14],0);
strcpy(&WinHint[1][1],"单张发票开票金额限额:");
Ips = &TxdBuf[4];
NumToStr(Ips->dat,&WinHint[2][1],5);
strcpy(&WinHint[3][1],"发票累计金额限额:");
Ips = &TxdBuf[8];
NumToStr(Ips->dat,&WinHint[4][1],5);
strcpy(&WinHint[5][1],"退票累计金额限额:");
Ips = &TxdBuf[12];
NumToStr(Ips->dat,&WinHint[6][1],5);
strcpy(&WinHint[7][1],"税种税目索引号:");//将税目税种索引号显示在一行上
for(i=0;i<6;i++)
{
NumToStr(TxdBuf[16+i],&WinHint[8][1+2*i],0);
if(i<5)
if(WinHint[8][2+2*i]==0)WinHint[8][2+2*i]=' ';//如果税种种目的第二位为0则将其补上空格,保证以后的税种税目信息能够显示出来
//if(WinHint[9][3+2*i]==0)WinHint[9][3+2*i]=' ';
}
strcpy(&WinHint[9][1],"明细申报标志:");
NumToStr(TxdBuf[22],&WinHint[10][14],2);
if(flag == 1)
{
Windows(1,0,InitVal);
if(*InitVal == K_TC || *InitVal==K_HJ)return;//返回
}
else if(flag == 0)// 打印
{
PrintLine("监控管理查询");
BcdToStr(4,&TxdBuf[0],&time[0],0);
PrintTime("开票截止日期:",&time[0],&PrintBuf[0]);
PrintStr(&PrintBuf[0]);
strcpy(&PrintBuf[0],&WinHint[1][1]);
strcpy(&PrintBuf[21],&WinHint[2][1]);
PrintStr(PrintBuf);
strcpy(&PrintBuf[0],&WinHint[3][1]);
strcpy(&PrintBuf[17],&WinHint[4][1]);
PrintStr(PrintBuf);
strcpy(&PrintBuf[0],&WinHint[5][1]);
strcpy(&PrintBuf[17],&WinHint[6][1]);
PrintStr(PrintBuf);
strcpy(&PrintBuf[0],&WinHint[7][1]);
strcpy(&PrintBuf[15],&WinHint[8][1]);
PrintStr(PrintBuf);
PrintStr(&WinHint[9][1]);
PrintLine("");
PrintStr("电子存根");
}
}
/*---------------------------------------------------------------------------
申报数据查询菜单
---------------------------------------------------------------------------*/
void Report1(uchar *str)
{
uchar i=0;
gyt4 *dip;
gyt2 *Npm;
WindowsSet(12);
strcpy(&WinHint[0][1],"申报起始日期:");
BcdToStr(4,str,&WinHint[0][14],0);
strcpy(&WinHint[1][1],"申报截止日期:");
BcdToStr(4,&str[4],&WinHint[1][14],0);
strcpy(&WinHint[2][1],"正常发票份数:");
dip = &str[8];
if(dip->dat == 0)
strcpy(&WinHint[2][14],"0");
else
NumToStr(dip->dat,&WinHint[2][14],0);
strcpy(&WinHint[3][1],"退票份数:");
Npm = &str[12];
if(Npm->dat == 0)
strcpy(&WinHint[3][10],"0");
else
NumToStr(Npm->dat,&WinHint[3][10],0);
strcpy(&WinHint[4][1],"废票份数:");
Npm = &str[14];
if(Npm->dat == 0)
strcpy(&WinHint[4][10],"0");
else
NumToStr(Npm->dat,&WinHint[4][10],0);
strcpy(&WinHint[5][1],"正常发票总金额:");
dip = &str[70];
if(dip->dat == 0)
strcpy(&WinHint[6][11],"0.00");
else
NumToStr(dip->dat,&WinHint[6][1],5);
strcpy(&WinHint[7][1],"退票总金额:");
dip = &str[74];
if(dip ->dat == 0)
strcpy(&WinHint[8][1],"0.00");
else
NumToStr(dip->dat,&WinHint[8][1],5);
strcpy(&WinHint[9][1],"状态字:");
if(str[78] == 0)
strcpy(&WinHint[9][8],"0");
else
NumToStr(str[78],&WinHint[9][8],0);
strcpy(&WinHint[10][1],"MAC1:");
dip = &str[79];
if(dip->dat == 0)
strcpy(&WinHint[10][6],"0");
else
NumToStr(dip->dat,&WinHint[10][6],0);
strcpy(&WinHint[11][1],"[小计]续显[确认]续查");
}
void Report2(uchar *str)
{
uchar i=0,j=0,psd[30];
gyt4 *dip;
WindowsSet(7);
strcpy(&WinHint[0][1],"税号 正常金额 退票金额");
for(j=0;j<6;j++)
{
for(i=0;i<30;i++)psd[i]=0;
NumToStr(str[16+j],psd,0); //税率
dip = &str[22+j*4];
if(dip->dat == 0) //正常金额
strcpy(&psd[4],"0.00");
else
NumToStr(dip->dat,&psd[4],5);
dip = &str[46+j*4];
if(dip->dat == 0) //退票金额
strcpy(&psd[15],"0.00");
else
NumToStr(dip->dat,&psd[15],5);
for(i=0;i<23;i++)
if(psd[i]==0)psd[i]=' ';
psd[23]=0;
strcpy(&WinHint[j+1][1],psd);
}
}
/*---------------------------------------------------------------------------
根据起始日期查询(申报数据)
v = 1:按起始日期查询
v = 2:按终止日期查询
---------------------------------------------------------------------------*/
uchar BeginDay(uchar v,uchar *str)
{
uchar i=0,flag=0,fg=0,time[5];
ulong n=0;
while(1)
{
for(i=0;i<5;i++)
time[i] = 0;
if(v == 1)
flag=Dialog(" 根据起始时间查询","请输入起始时间","[退出][确认],",8,time);
if(v == 2)
flag=Dialog(" 根据终止时间查询","请输入终止时间","[退出][确认],",8,time);
if(flag==K_HJ)//是确认键则进行
{
fg=Verdict(time);//查询时间的合法性
while(fg)
{
fg = 0;
if(v == 1)//开始时间查询
flag = TimeSectData(5,time,&n,str);
if(v == 2)//结束时间查询
flag = TimeSectData(6,time,&n,str);
if(flag)
return 1;//找到
else
return 0;//不存在
}
if(!fg)//输入时间不合法
{
ReHint("时间格式错误!","请重新输入...");
// break;
}
}
else
return flag;//返回按键值
}
}
/*----------------------------------------------------------------------------
申报数据查询
----------------------------------------------------------------------------*/
void ReportDataSB()
{
uchar InitVal[4],Ln=0,fg=0,i=1,BCDkey[83],flag=0;
uchar *inp;
for(i=0,inp=BCDkey;i<83;i++)
*inp++ = 0;
I2cRead(DeclareNum,1,&i);
#if useinfo
if(i == 0)
{
ReHint("数据不存在!","请重试!");
return;
}
#endif
while(1)
{
ReMenu12();
Itarr(InitVal);
Ln=Windows(i,0,InitVal);
if(*InitVal==K_TC)
return;//是退出键则返回上一层菜单
if((Ln == 1 || Ln==2) && *InitVal==K_HJ)
{
flag=BeginDay(Ln,BCDkey);//按起始日期查询
// if(flag == K_TC)//是退出键.直接返回
// break;
if(flag == 0)//没有找到
ReHint("日期不存在!","请重新输入...");
if(flag == 1)//存在
InvDisAndPrint(5,BCDkey,0," ");
}
else if(Ln == 3)
InputTimeSegment(4); //按时间段查询申报数据内容
else ;
i = Ln;
}
}
/*----------------------------------------------------------------------------
申报数据查询
flag = 0 : 不显示提示语
flag = 1 : 显示提示语
flag = 2 : 不打印报表头
flag = 3 : 打印报表头
----------------------------------------------------------------------------*/
uchar ReportData(uchar flag,uchar *str)
{
uchar InitVal[4],fg=0,i=0,time[10],PrintBuf[50];
ulong delay = 0xffff;
Report1(str);
if(flag == 1 || flag == 0)
{
if(flag == 1)
{
flag = 0;
DisHint("指定时间段内","<<申报备份数据>>查询.","按[确认]开始查找...");
}
while(1)
{
InitVal[0] = K_TC;//退出则直接退出
InitVal[1] = K_HJ;//确认键继续查找
InitVal[2] = K_XJ;//小计则为继续显示
InitVal[3] = 0;
Windows(1,0,InitVal);
if(*InitVal == K_HJ || *InitVal == K_TC)
return *InitVal;//退出
else //如果是确认键则继续显示
{
fg = ~fg;
if(fg)
Report2(str);//显示第二屏
else
Report1(str);//显示第一屏
}
}
}
else if(flag == 2 || flag == 3)//flag == 3 要打印报表头 flag == 2不打印报表头
{
if(flag == 3)
PrintLine("指定时间段内的申报数据查询");
PrintLine("申报数据查询");
Report1(str);
BcdToStr(4,str,time,0);
PrintTime("申报起始日期:",time,PrintBuf);
PrintStr(PrintBuf);
BcdToStr(4,&str[4],time,0);
PrintTime("申报截止日期:",time,PrintBuf);
for(i=2;i<11;i++)
PrintStr(&WinHint[i][1]);
Report2(str);
for(i=0;i<7;i++)
PrintStr(&WinHint[i][1]);
PrintLine("");
PrintStr("电子存根");
while(--delay);
return 1;
}
}
/*----------------------------------------------------------------------------
营业员销售查询
----------------------------------------------------------------------------*/
void SaleRes()
{
uchar Number=0,xzReport=0,Hov=1,LnNo=0,InitVal[3];
I2cRead(SalerNum,1,&Number);
if(Number == 0)
{
ReHint("没有设置营业员!","请重试!");
return;
}
while(1)
{
ReMenu13();
InitVal[0]=K_HJ;
InitVal[1]=K_TC;
InitVal[2]=0;
LnNo=Windows(Hov,0,InitVal);
if(*InitVal == K_TC) return;
if(LnNo == 1) // X报表(查之后不清空)
xzReport = 'X';
else if(LnNo == 2)//Z报表(查之后清空)
xzReport = 'Z';
else if(LnNo == 3)//全部营业员的X报表
xzReport = 'Y';//'Y' = 'X' + 1 表明是全部营业员的 X 报表
else if(LnNo == 4)//全部营业员的Z报表
xzReport = '[';//'[' = 'Z' + 1 表明是全部营业员的 Z 报表
else ;
ManageSlaedemand(xzReport);
Hov = LnNo;//返回后默认选择进入行
}
}
/*----------------------------------------------------------------------------
报表打印选择
----------------------------------------------------------------------------*/
void Report()
{
uchar Hov=1,LnNo=0,InitVal[4];//[退出]键与[合计]键退出
LcdClear(192);
while(1)
{
ReMenu1();
Itarr(InitVal);
LnNo=Windows(Hov,0,InitVal);//默认行为第一行,菜单模式
if(*InitVal==K_TC)return;
switch(LnNo)
{
case 1:
UseInfodemand();//查询用户信息
break;
case 2:
OldInfodemand();//已销售发票信息查询
break;
case 3:
FenInvoInputInvo();//已分发与已录入数据查询
break;
case 4:
InvDisAndPrint(4," ",0," ");//监控管理数据
break;
case 5:
ReportDataSB();//申报备份数据查询
break;
case 6:
SaleRes();//营业员销售查询
break;
case 7:
// ExportDat();//安全信息
break;
default:break;
}
Hov=LnNo;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -