📄 taxctrl.c
字号:
ShowTaxMessage( inf, errStr ); LCD6963_ClearScreen(); //清屏幕后,再显示 LCD_DisplayOneLine( 0,0 ,errStr,'D',1,1 ); LCD_DisplayOneLine( 2,0 ,"分发发票失败.",'D',0,1 ); TC_PressAnyKey(); //等待用户按任意键 } TaxStatusDisplay(); //在状态行显示 税控状态 return inf; }//三、纳税申报 struct TaxReportData TaxReportDataBuf;/*{ BYTE BeginDate[11]; //申报起算日期 YYYY-MM-DD 10 ASC STR BYTE CountDate[11]; //申报截至日期 YYYY-MM-DD 10 ASC STR BYTE InvoiceCnt[8]; //正常发票份数 "0000000" (不足前面补空格) BYTE ReturnCnt[8]; //退票份数 "0000000" (不足前面补空格) BYTE CancelCnt[8]; //废票份数 "0000000" (不足前面补空格) BYTE TaxTypeIndex[13]; //税种税目索引号 "010203040506" BYTE SubTotal[6][13]; //正常发票分类累计金额 000,000,000·00 (不足前面补空格) BYTE SubRetVal[6][13]; //退票分类累计金额 000,000,000·00 (不足前面补空格) BYTE TotalVal[13]; //正常发票累计金额 000,000,000·00 (不足前面补空格) BYTE RetVal[13]; //退票累计金额 000,000,000·00 (不足前面补空格)};*///+++++++++++++++++++++++++++++++++++++++++++++++++//处理过程参考://+++++++++++++++++++++++++++++++++++++++++++++++++//提示 "今日是"//YYYY-MM-DD//提示 插入用户卡//按<CR>键//纳税申报函数: int TaxPro_3( struct TaxReportData *Data );//参数 struct TaxReportData *Data//功能:函数要判断是否需要进行发票分发,需:进入发票分发;不需:只向结构填入数据返回//返回:int 成功=0; 不到申报时间=1; 不成功=见错误表;//申报成功:显示 申报数据 TaxReportData.BeginDate,.CountDate,.InvoiceCnt,.ReturnCnt// .CancelCnt,.TaxTypeIndex,.TotalVal,.RetVal// TaxStatus.TaxReporting = 1; //=1->进入纳税申报,未确认完税 //三、纳税申报int TaxReport( void ) { //struct TaxReportData *TaxReportDataBuf; char DateStr[11]; int key_in,inf; LCD6963_ClearScreen(); //清屏幕 //提示 插入用户卡 //显示 当前系统 日期,提示 用户确认日期正确,按 Enter 进入 税控初始化, //提示 "税控初始化中,请稍候..." LCD_DisplayOneLine( 0,0 ,"插入用户卡",'D',1,0 ); LCD_DisplayOneLine( 2,0 ,"今日:",'D',1,0 ); //得到系统日期字符串 YYYY-MM-DD TC_GetSysDateStr( DateStr ); LCD_DisplayOneLine( 2,5*FONT_WIDTH ,DateStr,'D',0,0 ); LCD_DisplayOneLine( 6,0 ,"<CR>开始纳税申报:",'D',1,0 ); //等待用户按<CR>键 if( TC_WaitUserPressAnyKey( XK_Return )!= 0 ) //等待用户按 某一特定键 return -1; //用户不确认,返回 #ifdef V_DRAGON_VER LCD_DisplayOneLine( 6,0 ,"纳税申报中..",'D',0,1 ); //将第6行内容覆盖 #else LCD_DisplayOneLine( 6,0 ,"纳税申报中..",'D',0,1 ); //将第6行内容覆盖 #endif //纳税申报函数: int TaxPro_3( struct TaxReportData *TaxReportDataBuf ); //参数 struct TaxReportData *TaxReportDataBuf //功能:函数要判断是否需要进行纳税申报,需:进入纳税申报; //返回:int 成功=0; 不到申报时间=1; 不成功=见错误表; inf = TAX_DECLARE( &TaxReportDataBuf ); //inf = TaxPro_3( &TaxReportDataBuf ); switch(inf){ case 0: //申报成功:显示 申报数据 TaxReportData.BeginDate,.CountDate,.InvoiceCnt,.ReturnCnt // .CancelCnt,.TaxTypeIndex,.TotalVal,.RetVal TaxReportDisplay( &TaxReportDataBuf ); TaxStatusData.TaxReporting = 1; //=1->进入纳税申报,未确认完税 kds_WriteDefVal( (char *)IniFileName,"[TaxStatus]","TaxReportting",TaxStatusData.TaxReporting ); break; case 1: LCD_DisplayOneLine( 6,0 ,"未到申报日期.",'D',0,1 ); //将第6行内容覆盖 inf = 0; TC_PressAnyKey(); //等待 按任意键 break; default: LCD_DisplayOneLine( 6,0 ,"申报不成功.",'D',0,1 ); //将第6行内容覆盖 TC_PressAnyKey(); //等待 按任意键 break; } TaxStatusDisplay(); //在状态行显示 税控状态 return inf; } //四、申报完成(完税回插) / 查看监控数据/*struct CtrlData { BYTE InvalidDate[11]; //开票截止日期 YYYY-MM-DD BYTE OneInvoiceValLimit[13]; //单张开票限额 000,000,000·00 (不足前面补空格) BYTE TotalLimit[13]; //开票累计金额限额 BYTE ReturnTotalLimit[13]; //退票累计金额限额 BYTE TaxTypeIndex[13]; //税种税目索引号 "010203040506"};*///+++++++++++++++++++++++++++++++++++++++++++++++++//处理过程参考://+++++++++++++++++++++++++++++++++++++++++++++++++//提示 插入用户卡//回读监控数据函数: int TaxPro_4( struct CtrlData *Data );//参数 struct CtrlData *Data//功能:函数要判断是否需要进行"完税回插",需:进入"完税回插"//返回:int 成功=0; 不需进行"完税回插"=1; 不成功=见错误表;// TaxStatus.TaxReporting = 0; //=0->正常使用中//显示 新的监控数据 内容 struct CtrlData CtrlDataBuf; //四、申报完成(完税回插) / 查看监控数据 //flg = 1->完税回插, = 0->查看监控数据int GetCtrlData( int flg ) { //struct CtrlData *CtrlDataBuf; char DateStr[11]; unsigned char errStr[50]; int key_in,inf; LCD6963_ClearScreen(); //清屏幕 if( TaxStatusData.TaxReporting != 1 ){ LCD_DisplayOneLine( 0,0 ,"未报税,不需回读监控数据",'D',0,1 ); //将第6行内容覆盖 TC_PressAnyKey(); //等待 按任意键 TaxStatusDisplay(); //在状态行显示 税控状态 return 0; } //提示 插入用户卡 //显示 当前系统 日期,提示 用户确认日期正确,按 Enter 进入 税控初始化, //提示 "税控初始化中,请稍候..." if( flg == 1 ) LCD_DisplayOneLine( 0,0 ,"插入用户卡",'D',1,0 ); LCD_DisplayOneLine( 2,0 ,"今日:",'D',1,0 ); //得到系统日期字符串 YYYY-MM-DD TC_GetSysDateStr( DateStr ); LCD_DisplayOneLine( 4,3*FONT_WIDTH ,DateStr,'D',0,0 ); if( flg == 1 ) LCD_DisplayOneLine( 6,0 ,"<CR>卡完税回插:",'D',1,0 ); else LCD_DisplayOneLine( 6,0 ,"<CR>查看监控数据:",'D',0,0 ); //等待用户按<CR>键 if( TC_WaitUserPressAnyKey( XK_Return )!= 0 ) //等待用户按 某一特定键 return -1; //用户不确认,返回 LCD_DisplayOneLine( 6,0 ,"监控数据回读中..",'D',0,1 ); //将第6行内容覆盖 //回读监控数据函数: int TaxPro_4( struct CtrlData *Data ); //参数 struct CtrlData *Data //功能:函数要判断是否需要进行"完税回插",需:进入"完税回插" //返回:int 成功=0; 不需进行"完税回插"=1; 不成功=见错误表; inf = TAX_READ_VIGIL_FILE( &CtrlDataBuf ); //inf = TaxPro_4( &CtrlDataBuf ); // TaxStatus.TaxReporting = 0; //=0->正常使用中 //显示 新的监控数据 内容 switch(inf){ case 0: //回读成功:显示 监控数据 TaxStatusData.TaxReporting = 0; //=1->进入纳税申报,未确认完税,=0->正常使用中 kds_WriteDefVal( (char *)IniFileName,"[TaxStatus]","TaxReportting",TaxStatusData.TaxReporting ); //将 数据保存在 PosDef.ini 中 kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","InvalidDate",(char*)CtrlDataBuf.InvalidDate ); kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","OneInvoiceValLimit",(char*)CtrlDataBuf.OneInvoiceValLimit ); kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","TotalLimit",(char*)CtrlDataBuf.TotalLimit ); kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","ReturnTotalLimit",(char*)CtrlDataBuf.ReturnTotalLimit ); kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","TaxTypeIndex",(char*)CtrlDataBuf.TaxTypeIndex ); //读出新的纳税单位名称 ReadFlash(40,FlashYHCardFile1Info_9,TaxInitDataBuf.UserName); //读纳税人单位名称 kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","UserName",(char*)TaxInitDataBuf.UserName ); //"UserEditListFlg=1", //是否允许用户修改编辑 部类表 0->不允许,1->允许(default) if( kds_ReadDefVal( (char *)IniFileName,"[TaxStatus]","UserEditListFlg") == 1 ) { //struct user_ware_info UserGoodsTypeList; //功能: 读出I Open 部类数据列表 返回: =0:操作成功 !=0:见错误对照表 OpenUserList( &UserGoodsTypeList ); //保存入 gt_list.ini const char GT_FileName[]={"/mnt/nand_disk1/gt_list.ini"}; //商品部类表文件 save_gt_list_file( &UserGoodsTypeList ); //将 "商品部类表" 数据保存入 gt_list.ini } TaxReportedDisplay( &CtrlDataBuf ); break; case 1: LCD_DisplayOneLine( 6,0 ,"不需完税回插.",'D',0,1 ); //将第6行内容覆盖 TC_PressAnyKey(); //等待 按任意键 inf = 0; break; default: ShowTaxMessage( inf , errStr ); LCD_DisplayOneLine( 0,0 ,errStr,'D',1,1 ); LCD_DisplayOneLine( 6,0 ,"完税回插不成功.",'D',0,1 ); //将第6行内容覆盖 TC_PressAnyKey(); //等待 按任意键 break; } TaxStatusDisplay(); //在状态行显示 税控状态 return inf; }//五、发票卷汇总 / 查看发票卷汇总/*struct InvoiceRollData { int flg; // BYTE InvoiceCode[21]; //发票代码 20 ASC STR BYTE BeginCode[11]; //起始号码 10 ASC STR BYTE EndCode[11]; //截止号码 10 ASC STR BYTE InvoiceCnt[4]; //正票份数 "000" BYTE ReturnCnt[4]; //退票份数 "000" BYTE CancelCnt[4]; //废票份数 "000" BYTE TotalVal[13]; //正票总金额 000,000,000·00 (不足前面补空格) BYTE RetVal[13]; //废票总金额 000,000,000·00 (不足前面补空格) BYTE BeginDate[11]; //开票起始时间 YYYY-MM-DD 10 ASC STR BYTE StopDate[11]; //开票截止时间 YYYY-MM-DD 10 ASC STR};*/ //+++++++++++++++++++++++++++++++++++++++++++++++++//处理过程参考://+++++++++++++++++++++++++++++++++++++++++++++++++//提示 插入 用户卡//发票卷汇总函数: int TaxPro_5( struct InvoiceRollData *Data );//参数 struct InvoiceRollData *Data//flg = 0 -> 只需 读出 发票卷统计内容; flg = 1 发票卷汇总//功能:函数要判断是否需要进行"发票卷汇总",需:进入"发票卷汇总";不需:向结构填入 发票卷统计数据//返回:int 成功=0; 不需进行"发票卷汇总"=1; 不成功=见错误表;// InvoiceRollData.flg == 1 -> 需要 进行发票卷汇总//可先用 InvoiceData.flg = 0,从 函数中返回结构数据 ,返回时 flg == 0->不需 发票汇总,flg == 1->要汇总//汇总成功:显示 发票卷汇总内容 InvoiceRollData.InvoiceCode,.BeginCode,.EndCode,// .InvoiceCnt,.ReturnCnt,.CancelCnt,.TotalVal,.RetVal,.// .BeginDate,.StopDate// TaxStatus.PaperRollStatus = 0; //=0->未登记发票卷,=1->已登记发票卷 struct InvoiceRollData InvoiceRollDataBuf; //flg = 0 -> 只需 读出 发票卷统计内容; flg = 1 发票卷汇总int TaxPaperRollCollect( int flg ) { //struct InvoiceRollData *Data; char DateStr[11],errStr[50]; int key_in,inf; LCD6963_ClearScreen(); //清屏幕 if( TaxStatusData.PaperRollStatus != 2 ) //不需发票汇总 { LCD_DisplayOneLine( 6,30 ,"不需发票卷汇总.",'D',0,1 ); //将第6行内容覆盖 TC_PressAnyKey(); //等待 按任意键 TaxStatusDisplay(); //在状态行显示 税控状态 return 0; } //提示 插入用户卡 //显示 当前系统 日期,提示 用户确认日期正确,按 Enter 进入 税控初始化, //提示 "税控初始化中,请稍候..." if( flg == 1 ) LCD_DisplayOneLine( 0,0 ,"插入用户卡",'D',1,0 ); LCD_DisplayOneLine( 2,0 ,"今日:",'D',1,0 ); //得到系统日期字符串 YYYY-MM-DD TC_GetSysDateStr( DateStr ); LCD_DisplayOneLine( 4,3*FONT_WIDTH ,DateStr,'D',0,0 ); if( flg == 1 ) LCD_DisplayOneLine( 6,0 ,"<CR>发票卷汇总:",'D',1,0 ); else LCD_DisplayOneLine( 6,0 ,"<CR>查看汇总数据:",'D',1,0 ); //等待用户按<CR>键 if( TC_WaitUserPressAnyKey( XK_Return )!= 0 ) //等待用户按 某一特定键 return -1; //用户不确认,返回 LCD_DisplayOneLine( 6,0 ,"汇总数据整理中..",'D',0,1 ); //将第6行内容覆盖//发票卷汇总函数: int TaxPro_5( struct InvoiceRollData *Data );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -