⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 taxctrl.c

📁 本程序在S3C44B0 uClinux的嵌入式GUI
💻 C
📖 第 1 页 / 共 4 页
字号:
//参数 struct  InvoiceRollData *Data//flg = 0 -> 只需 读出 发票卷统计内容; flg = 1 发票卷汇总//功能:函数要判断是否需要进行"发票卷汇总",需:进入"发票卷汇总";不需:向结构填入 发票卷统计数据//返回:int 成功=0; 不需进行"发票卷汇总"=1; 不成功=见错误表;//      InvoiceRollData.flg == 1 -> 需要 进行发票卷汇总   inf = TAX_REG_BILL_ROLL_COLLECT( &InvoiceRollDataBuf );   //inf = TaxPro_5( &InvoiceRollDataBuf );   //汇总成功:显示 发票卷汇总内容 InvoiceRollData.InvoiceCode,.BeginCode,.EndCode,   //					.InvoiceCnt,.ReturnCnt,.CancelCnt,.TotalVal,.RetVal,.   //					.BeginDate,.StopDate   //          TaxStatus.PaperRollStatus = 0; //=0->未登记发票卷,=1->已登记发票卷   switch(inf){     case 0: //汇总成功:显示 发票汇总数据 	     TaxPaperRollCollectDisplay( &InvoiceRollDataBuf );	     TaxStatusData.PaperRollStatus = 0; //=0->未登记发票卷,=1->已登记发票卷             kds_WriteDefVal( (char *)IniFileName,"[TaxStatus]","PaperRollStatus",TaxStatusData.PaperRollStatus );             break;	     case 1:    	     LCD_DisplayOneLine( 6,0 ,"不需发票卷汇总.",'D',0,1 ); //将第6行内容覆盖	     TC_PressAnyKey();  //等待 按任意键	     inf = 0;             break;     default:	     LCD6963_ClearScreen();   //清屏幕	     	     LCD_DisplayOneLine( 6,0 ,"发票卷汇总不成功.",'D',0,1 ); //将第6行内容覆盖	     ShowTaxMessage( inf, errStr );             LCD_DisplayOneLine( 0,0 ,errStr,'D',1,1 ); 	     TC_PressAnyKey();  //等待 按任意键             break;           }   TaxStatusDisplay(); //在状态行显示 税控状态    return inf;  }//******************************* 以下为 税控稽查 *****************************************/*struct  InvoiceListData {  unsigned char Flag;           //稽查类别  '明细','日累计','申报记录','修改时间'  ASC   unsigned char Level_Str[3];   //稽查人员级别 "00"-"FE", "FF"  ASC_STR   unsigned char BeginCode[11];  //起始号码    11 ASC STR             int  Cnt;           //连续数据条数   unsigned char DateStr[11];    //日期时间  YYYYY-MM-DD 如果稽查类别是'修改时间'则此处为'hh-mm'   unsigned char PassWord[9];    //稽查口令}; */ //六、稽查(发票明细/日累计/申报数据)/*//int KB_NumStrInput(int x1,int y1,int y2,char SorD,int Len,int PW_Flag,BYTE StrNum[],int CR_need);//+++++++++++++++++++++++++++++++++++++++++++++++++//处理过程参考://+++++++++++++++++++++++++++++++++++++++++++++++++//提示 "插入稽查卡",按任意键 进入稽查//进入稽查函数: int TAX_INTO_GL_BACK(struct InvoiceListData *checkData);int TaxPro_6_1( struct InvoiceListData *Data );//参数 struct  InvoiceListData *Data//功能:函数要从 稽查卡 读出稽查控制文件,向结构填入 稽查类别,稽查人员级别//返回:int 成功=0; 不成功=见错误表;//根据 稽查类别 进入不同的稽查方式 -> '明细','日累计','申报记录','修改时间'    switch (稽查类别) InvoiceListData.Flag	{	  case 明细:                  输入 日期 (年月日) 或 	             输入 发票号(要稽查发票的第一张发票号)InvoiceListData.BeginCode	             输入 要稽查的发票张数 InvoiceListData.Cnt	             break;	  case 日累计:	             输入 日期 (年月日) InvoiceListData.DateStr	             输入 要稽查的天数 InvoiceListData.Cnt	             break;	  case 申报记录:	  	     输入 日期 (年月)InvoiceListData.DateStr	             输入 要稽查的申报次数 InvoiceListData.Cnt	             break;	  case 修改时间:	  	     输入 时间,并 修改系统 时间	  	     break;           	}//'明细','日累计','申报记录'->进入 稽查实施读稽查卡级别 int ReadGLCardLevel(unsigned char *GL_level);0xFF 输入稽查口令//    如:稽查人员级别=="FF"  InvoiceListData.Level_Str//        输入稽查口令 8位 数字串//稽查实施函数: int TAX_BringIntoEffect_GL_BACK(struct InvoiceListData *checkData);int TaxPro_6_2( struct InvoiceListData *Data );//参数 struct  InvoiceListData *Data//功能:函数 实施稽查//返回:int 成功=0; 不成功=见错误表;返回 继续插卡再调用 稽查实施函数: int TaxPro_6_2( struct InvoiceListData *Data );*/  extern const char HexStr[]; //={"0123456789ABCDEF"};//InvoiceListData 结构名称不准确,暂时借用struct  InvoiceListData  CheckListDataBuf;int  TaxCheckPro( void ) { //struct  CheckListData  *Data;   char DateStr[11],CntStr[6]; unsigned char GL_level,errStr[50];   int key_in,inf;    LCD6963_ClearScreen();   //清屏幕   //提示 "插入稽查卡",按任意键 进入稽查   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 );   LCD_DisplayOneLine( 6,0 ,"<CR>开始稽查:",'D',1,0 );   //等待用户按<CR>键   if( TC_WaitUserPressAnyKey( XK_Return )!= 0 ) //等待用户按 某一特定键         return -1; //用户不确认,返回   //inf = TAX_INTO_GL_BACK( &CheckListDataBuf ); //sk.c 进入稽查   inf = TaxPro_6_1( &CheckListDataBuf ); //进入稽查,从稽查卡读出稽查人员级别,稽查类别   if( inf != 0 ){       LCD_DisplayOneLine( 6,0 ,"<CR>稽查失败:",'D',1,1 );	       TC_PressAnyKey();  //等待 按任意键       return -1;	   }      //显示 稽查类别,人员级别   LCD6963_ClearScreen();   //清屏幕   //类别 明细 级别 FF   LCD_DisplayOneLine( 0,0 ,"类别",'D',1,0 );   LCD_DisplayOneLine( 2,8*FONT_WIDTH ,"级别",'D',1,0 );         //0:'明细' 1:'日累计' 2:'申报记录' 3:'修改时间'   switch( CheckListDataBuf.Flag ){   	 case 0: LCD_DisplayOneLine( 0,4*FONT_WIDTH ,"明细",'D',0,0 ); break;   	 case 1: LCD_DisplayOneLine( 0,4*FONT_WIDTH ,"日累计",'D',0,0 ); break;   	 case 2: LCD_DisplayOneLine( 0,4*FONT_WIDTH ,"申报记录",'D',0,0 ); break;   	 case 3: LCD_DisplayOneLine( 0,4*FONT_WIDTH ,"授权修改时间",'D',0,0 ); break;   }   LCD_DisplayOneLine( 2,12*FONT_WIDTH ,CheckListDataBuf.Level_Str,'D',0,1 );      //0:'明细',1:'日累',2:'申报',3:'时间'  ASC   memset( CntStr, 0, 4 );   switch( CheckListDataBuf.Flag ){      case 0://明细稽查             LCD6963_ClearScreen();   //清屏幕             //发票号 0000000000             //连续稽查(张)000	     	 LCD_DisplayOneLine( 4,0 ,"起始日期",'D',1,0 );	     	 LCD_DisplayOneLine( 6,0 ,"连续稽查(张)",'D',1,0 );	         //输入起始日期	         if ( KB_NumStrInput( 4,8,10,'D',10,0,CheckListDataBuf.DateStr,1 ) != 8 ) { //输入起始日期	              //日期没有输入正确,输入发票号	              LCD_DisplayOneLine( 4,0 ,"发票号",'D',1,0 );	              if ( KB_NumStrInput( 0,6,10,'D',10,0,CheckListDataBuf.BeginCode,1 ) != 10 ) //输入发票号       		          return -1; //输入不正确,返回       		      else memset( CheckListDataBuf.DateStr,0,8 ); //令 起始编号项 无效       		 }else memset( CheckListDataBuf.BeginCode,0,10 );  //令 发票号项 无效       	     //输入连续稽查张数       	     if ( KB_NumStrInput( 6,12,12+3,'D',3,0,CntStr,1 ) != 3 ) //输入连续稽查张数             {	 printf("\n%s\n",CntStr);				 return -1; //输入不正确,返回              }             //CheckListDataBuf.Cnt = atoi( CntStr );             break;      case 1://日累稽查             LCD6963_ClearScreen();   //清屏幕             //起始日期 YYYYMMDD             //连续稽查(天数)00	     	 LCD_DisplayOneLine( 4,0 ,"起始日期",'D',1,0 );	     	 LCD_DisplayOneLine( 6,0 ,"连续稽查(天)",'D',1,0 );	     	 if ( KB_NumStrInput( 4,6,10,'D',10,0,CheckListDataBuf.DateStr,1 ) != 8 ) //输入起始日期       		     return -1; //输入不正确,返回       	     if ( KB_NumStrInput( 6,12,12+2,'D',2,0,CntStr,1 ) != 2 ) //输入连续稽查天数       		     return -1; //输入不正确,返回                  //CheckListDataBuf.Cnt = atoi( CntStr );             break;      case 2://申报稽查             LCD6963_ClearScreen();   //清屏幕             //起始年月 YYYYMM	     	 //连续稽查(次) 0	     	 LCD_DisplayOneLine( 4,0 ,"起始年月",'D',1,0 );	     	 LCD_DisplayOneLine( 6,0 ,"连续稽查(次数)",'D',1,0 );	     	 if ( KB_NumStrInput( 4,8,10,'D',6,0,CheckListDataBuf.DateStr,1 ) != 10 ) //输入起始年月       		     return -1; //输入不正确,返回       	     if ( KB_NumStrInput( 6,12,12+2,'D',1,0,CntStr,1 ) != 1 ) //输入连续稽查次数       		     return -1; //输入不正确,返回                  //CheckListDataBuf.Cnt = atoi( CntStr );       	     //yyyymmdd       	     CheckListDataBuf.DateStr[6]='0'; CheckListDataBuf.DateStr[7]='1';             break;             case 3://时间		     //只让用户输入 时分秒, 年月日 从系统读出		     ChangeSystemTime(); //实时时钟中的 时间参数             break;       	   }   CheckListDataBuf.Cnt = atoi( CntStr );   //将数字字符串转换为整型数   //需要 检查调整 参数吗?     do {   //处理 输入稽查人员口令   if( memcmp(CheckListDataBuf.Level_Str,"FF",2)==0 ){       //稽查员口令 //000000       LCD_DisplayOneLine( 4,0 ,"稽查员口令",'D',1,1 );       if ( KB_NumStrInput( 6,0,8,'D',8,0,CheckListDataBuf.PassWord,1 ) != 8 )            return -1; //输入不正确,返回       else { //税务管理卡口令验证       	 if( CheckListDataBuf.Flag==3 ) { //授权修改时间,要单独进行口令验证			//税务管理卡口令验证(先将税务管理卡口令保存在 EepromAdd_16 中)			WriteEeprom( EepromAdd_16,8,CheckListDataBuf.PassWord );  //向向EepromAdd_16写稽查口令			if( GLCardPasswordValidate() != 0 )			    return -1;		 }       }   }   if( CheckListDataBuf.Flag==3 ){ //授权 修改时间       //用户修改时间       break;  //退出循环   }   //稽查实施函数: int TAX_BringIntoEffect_GL_BACK( struct InvoiceListData *checkData );   inf = TaxPro_6_2( &CheckListDataBuf );   if( inf == 0 ) break;   if( inf == ChkNeedContinure ) // #define  ChkNeedContinure        0xa0  //核查 需要 再插卡   { //提示 核查需要再插卡   	   	   LCD_DisplayOneLine( 0,0 ,"需更换卡,再写核查数据...",'D',1,1 );        if( TC_WaitUserPressAnyKey( K_ESC )==0 )           break;       //再读卡上稽查级别       //inf = ReadGLCardLevel( &GL_level );       inf = TaxPro_6_3( &GL_level );       if( inf != 0 ){       	      ;       	      //提示出错,令再插卡,不退出核查       }else{ //		CheckListDataBuf.Level_Str[0] = HexStr[GL_level >> 4];	    	CheckListDataBuf.Level_Str[1] = HexStr[GL_level & 0x0f];              }   }else{ //提示出错,退出核查           ShowTaxMessage( inf , errStr );           LCD_DisplayOneLine( 0,0 ,errStr,'D',1,1 );            TC_PressAnyKey();                	   break;   }  }while( 1 );     if(inf == 0){ //成功	   LCD_DisplayOneLine( 6,0 ,"稽查完成.",'D','W',1 ); //将第6行内容覆盖   }else{ //失败	   LCD_DisplayOneLine( 6,0 ,"稽查不成功.",'D','W',1 ); //将第6行内容覆盖   }   //等待用户按键,直到按下指定的键   TC_WaitUserPressSpeKey( K_ESC );   TaxStatusDisplay(); //在状态行显示 税控状态       return inf; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -