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

📄 taxctrl.c

📁 本程序在S3C44B0 uClinux的嵌入式GUI
💻 C
📖 第 1 页 / 共 4 页
字号:
 //在状态行显示 税控状态void  TaxStatusDisplay( void ) { char *pp; int cnt=0;   pp = (char*)malloc( 240/8+1 );   memset( pp,0x20,240/8+1 );   //if( TaxPro_0() == 0 ){       //是否进入税控       if( TaxStatusData.TaxFlg==1)         { memmove( pp+cnt,(char*)&StatusChar[0],4 ); //"税控"          cnt+=5;          //是否进入报税          if( TaxStatusData.TaxReporting==0) memmove( pp+cnt,(char*)&StatusChar[8],4 ); //"正常"          else memmove( pp+cnt,(char*)&StatusChar[8+4],4 ); //"报税"          cnt+=5;          //是否该分发发票          switch( TaxStatusData.PaperRollStatus )          {            case 0: memmove( pp+cnt,(char*)&StatusChar[20],4 ); //"无票"                 break;	            case 1: memmove( pp+cnt,(char*)&StatusChar[16],4 ); //"有票"                 break;            case 2: memmove( pp+cnt,(char*)&StatusChar[24],4 ); //"汇总"                 break;                  } //end switch	} else           memmove( pp+cnt,(char*)&StatusChar[4],4 ); //"非税"   //} //end if      //在状态行显示 "税控 正常 纸卷","非税 报税 上纸"   #ifdef ARM_DEVICE   LCD_DisplayOneLine( STATUS_LINE,0," ",'D','B',1 );   LCD_DisplayOneLine( STATUS_LINE,17*FONT_WIDTH ,pp,'D','B',1 );   #else   LCD_DisplayOneLine( STATUS_LINE,0 ,pp,'D','B',1 );   #endif   free( pp );	 } //========================================================================== //一、税控初始化 / 查看初始化数据 //struct  TaxInitData TaxInitDataBuf; /*{     BYTE BoxCode[17];		//税控器编号     16 ASC STR   BYTE UserCode[17];		//纳税人编码     16 ASC STR   BYTE UserName[41];		//纳税人单位名称 40 STR   BYTE BeginDate[11];		//应用起用日期   YYYY-MM-DD 10 ASC STR   BYTE ValidDate[11];		//应用有效日期   YYYY-MM-DD 10 ASC STR   BYTE InvalidDate[11];	//开票截止日期 YYYY-MM-DD   BYTE OneInvoiceValLimit[13];	//单张开票限额 000,000,000·00 (不足前面补空格)   BYTE TotalLimit[13];		//开票累计金额限额    BYTE ReturnTotalLimit[13];	//退票累计金额限额    BYTE TaxTypeIndex[13];	//税种税目索引号  "010203040506" };*/ //插入税控、用户卡  0   请先插入税控卡和用户卡 //确认当前日期正确  2   确认当前日期正确: //   YYYY-MM-DD     4    //任意键税控初始化  6   任意键开始税控初始化 //初始化中请稍候..  6 //                       clear screen // 税控初始化成功   8  / 2  // 税控初始化失败   8  / 2 //  按任意键返回    10 / 4void  Main_0_4_MenuPro( void ) //税控参数 TaxCtrl.c{    //填入 税控参数    kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","BoxCode",(char*)TaxInitDataBuf.BoxCode );    kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","UserCode",(char*)TaxInitDataBuf.UserCode );    kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","UserName",(char*)TaxInitDataBuf.UserName );    kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","BeginDate",(char*)TaxInitDataBuf.BeginDate );    kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","ValidDate",(char*)TaxInitDataBuf.ValidDate );    kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","InvalidDate",(char*)TaxInitDataBuf.InvalidDate );    kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","OneInvoiceValLimit",(char*)TaxInitDataBuf.OneInvoiceValLimit );    kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","TotalLimit",(char*)TaxInitDataBuf.TotalLimit );    kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","ReturnTotalLimit",(char*)TaxInitDataBuf.ReturnTotalLimit );    kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","TaxTypeIndex",(char*)TaxInitDataBuf.TaxTypeIndex );    //显示 税控参数    TaxInitDisplay( &TaxInitDataBuf );        //显示 初始化结果    	} //税控初始化int   AppTaxInit( void ) { //struct  TaxInitData  *TaxInitDataBuf;   char DateStr[11]; unsigned char errStr[48];   int key_in,inf;   LCD6963_ClearScreen();   //清屏幕   //提示 插入税控卡、用户卡   //显示 当前系统 日期,提示 用户确认日期正确,按 Enter 进入 税控初始化,   //提示 "税控初始化中,请稍候..."   #ifdef V_DRAGON_VER   LCD_DisplayOneLine( 0,0 ,"请先插入税控卡和用户卡",'D','W',1 );   LCD_DisplayOneLine( 2,0 ,"确认当前日期正确:",'D','W',1 );   //得到系统日期字符串 YYYY-MM-DD   TC_GetSysDateStr( DateStr );   LCD_DisplayOneLine( 4,3*FONT_WIDTH ,DateStr,'D','W',1 );   LCD_DisplayOneLine( 6,0 ,"<CR>->开始税控初始化:",'D','W',1 );   #else   LCD_DisplayOneLine( 0,0 ,"插入税控、用户卡",'D',0,0 );   LCD_DisplayOneLine( 2,0 ,"确认当前日期正确:",'D',0,0 );   //得到系统日期字符串 YYYY-MM-DD   TC_GetSysDateStr( DateStr );  //要修改程序   LCD_DisplayOneLine( 4,3*FONT_WIDTH ,DateStr,'D','B',0 );   LCD_DisplayOneLine( 6,0 ,"<CR>->税控初始化:",'D',0,0 );   #endif   //等待用户按<CR>键   if( TC_WaitUserPressAnyKey( XK_Return )!= 0 ) //等待用户按 某一特定键         return -1; //用户不确认,返回   #ifdef V_DRAGON_VER   LCD_DisplayOneLine( 6,0 ,"初始化中请稍候....",'D','W',1 ); //将第6行内容覆盖   #else   LCD_DisplayOneLine( 6,0 ,"初始化中请稍候....",'D',0,1 ); //将第6行内容覆盖   #endif           //TaxStatusData.TaxFlg = 0; //sm add for debug only   if( TaxStatusData.TaxFlg == 1 ) inf = TaxDeviceInited; //0x1e  //税控器已初始化不能再次初始化    //税控初始化函数: int TaxPro_1( struct  TaxInitData *Data );   // 参数 struct  TaxInitData *Data // struct  TaxInitData TaxInitDataBuf   //功能:系统未进行过 税控初始化时,进入"税控初始化",已初始化完成后,只向结构填入数据返回   //返回:int 成功=0; 已经税控完成,不需初始化=1; 不成功=见错误表;    else         inf = TaxInit( &TaxInitDataBuf ,1 ); //inf = TaxPro_1( &TaxInitDataBuf );   if( inf == 0 ) { //税控初始化函数 ()	//初始化成功:TaxStatusData.TaxFlg = 1;    	//   .TaxReporting = 0;	   //=0->正常使用中,=1->进入纳税申报,未确认完税   	//   .PaperRollStatus = 0; //=0->未登记发票卷,=1->已登记发票卷   	//并写盘保存   	TaxStatusData.TaxFlg = 1;    	TaxStatusData.TaxReporting = 0;    //=0->正常使用中,=1->进入纳税申报,未确认完税    TaxStatusData.PaperRollStatus = 0; //=0->未登记发票卷,=1->已登记发票卷   	//初始化数据记入 PosDef.ini 		kds_WriteDefVal( (char *)IniFileName,"[TaxStatus]","TaxFlag",TaxStatusData.TaxFlg );	kds_WriteDefVal( (char *)IniFileName,"[TaxStatus]","TaxReportting",TaxStatusData.TaxReporting );	kds_WriteDefVal( (char *)IniFileName,"[TaxStatus]","PaperRollStatus",TaxStatusData.PaperRollStatus );		//保存 入 PosDef.ini 文件    kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","BoxCode",(char*)TaxInitDataBuf.BoxCode );    kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","UserCode",(char*)TaxInitDataBuf.UserCode );    kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","UserName",(char*)TaxInitDataBuf.UserName );    kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","BeginDate",(char*)TaxInitDataBuf.BeginDate );    kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","ValidDate",(char*)TaxInitDataBuf.ValidDate );    kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","InvalidDate",(char*)TaxInitDataBuf.InvalidDate );    kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","OneInvoiceValLimit",(char*)TaxInitDataBuf.OneInvoiceValLimit );    kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","TotalLimit",(char*)TaxInitDataBuf.TotalLimit );    kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","ReturnTotalLimit",(char*)TaxInitDataBuf.ReturnTotalLimit );    kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","TaxTypeIndex",(char*)TaxInitDataBuf.TaxTypeIndex );	    //"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           }  		TaxInitDisplay( &TaxInitDataBuf );        //显示 初始化结果	inf = 0;   } else if( inf == 1 ) {        TaxInitDisplay();        //显示 初始化结果        inf = 0;   } else { 	//                     / clear screen 	// 税控初始化成功   8  / 2  	// 税控初始化失败   8  / 2 	//  按任意键返回    10 / 4   	     ShowTaxMessage( inf, errStr );     #ifdef V_DRAGON_VER //在本屏显示     LCD_DisplayOneLine( 6,0 ,"税控初始化失败",'D','W',1 );     LCD_DisplayOneLine(10,0 ,"按任意键返回..",'D','W',1 );     #else     LCD6963_ClearScreen();   //清屏幕后,再显示	     LCD_DisplayOneLine( 0,0 ,errStr,'D',1,1 );          LCD_DisplayOneLine( 2,0 ,"税控初始化失败",'D',0,1 );     LCD_DisplayOneLine( 4,0 ,"按任意键返回..",'D',0,1 );     #endif     TC_PressAnyKey();  //等待 按任意键   } //end if( TaxPro_1( Data ) == 0 )   TaxStatusDisplay(); //在状态行显示 税控状态   return inf; }//二、发票分发 / 查看发票登记内容//+++++++++++++++++++++++++++++++++++++++++++++++++//处理过程参考://+++++++++++++++++++++++++++++++++++++++++++++++++//提示 插入用户卡//发票分发函数:    int TaxPro_2( struct InvoiceData *Data );//参数 struct  InvoiceData *Data//flg = 0 -> 只需 读出 发票登记内容; flg = 1 发票分发//功能:函数要判断是否需要进行发票分发,需:进入发票分发;flg=0 or 不需:只向结构填入数据返回//返回:int 成功=0; 已经分发完成,不需分发=1; 不成功=见错误表; //      InvoiceDataBuf.flg == 1 -> 需要进行 发票分发//可先用 InvoiceDataBuf.flg = 0,从 函数中返回结构数据 ,返回时 flg == 0->不需 发票分发,flg == 1->要分发//分发成功:显示 发票登记内容 InvoiceData.InvoiceCode,.BeginCode,.EndCode//          TaxStatus.PaperRollStatus = 1; //=0->未登记发票卷,=1->已登记发票卷//  struct  InvoiceData  InvoiceDataBuf;  //分发发票flg = 1/得到当前发票卷登记数据flg = 0int  GetInvoiceRoll( int flg )  {  //struct  InvoiceData InvoiceDataBuf;     int inf; unsigned char errStr[48];   LCD6963_ClearScreen();   //清屏幕   if( TaxStatusData.PaperRollStatus != 0 ) //不需发票分发   {          if( TaxStatusData.PaperRollStatus == 2 ) LCD_DisplayOneLine( 0,0 ,"应先进行发票卷汇总.",'D',0,1 ); //将第6行内容覆盖       else LCD_DisplayOneLine( 0,0 ,"不需发票卷分发.",'D',0,1 ); //将第6行内容覆盖       TC_PressAnyKey();  //等待 按任意键       GetInvoiceRollDisplay( &InvoiceDataBuf ); // InvoiceDataBuf ); //分发成功:显示 发票登记内容 .InvoiceCode,.BeginCode,.EndCode       TaxStatusDisplay(); //在状态行显示 税控状态       return 0;   }        if( flg == 1 ){ //要判断发票是否应该分发	 	GetTaxStatusAndDisplay( 0 ); //得到 税控状态,在 状态行 显示 "税控 正常 纸卷" ......	 	//TaxStatusData.PaperRollStatus=0->未登记发票卷,=1->已登记发票卷,=2->应发票汇总	 	if( TaxStatusData.PaperRollStatus != 0 ) {	 	  switch( TaxStatusData.PaperRollStatus ) { 	    	case 1: LCD_DisplayOneLine( 2,0 ,"已登记过发票卷.",'D',0,0 ); 	            break; 	    	case 2: LCD_DisplayOneLine( 2,0 ,"应先完成发票汇总",'D',0,0 ); 	            break;        	 	  	  } 	  	TC_PressAnyKey();  //等待 按任意键  	  	return -1;  //已经登记/应汇总 	 	} //end if( TaxStatusData.PaperRollStatus != 0 )     } //end if( flg == 1 )     //提示 插入用户卡     if( flg == 1 ) {        LCD_DisplayOneLine( 0,0 ,"请先插入用户卡",'D',0,1 );        LCD_DisplayOneLine( 2,0 ,"<CR>开始分发发票",'D',0,1 );        //等待用户按<CR>键        if( TC_WaitUserPressAnyKey( XK_Return )!= 0 ) //等待用户按 某一特定键            return -2;        else	    LCD_DisplayOneLine( 2,0 ,"分发发票中,请稍候",'D',0,1 );     }else        InvoiceDataBuf.flg = 0;          //发票分发函数:    int TaxPro_2( struct InvoiceData *InvoiceDataBuf );     //inf = INIT_GET_BILL_INFO( &InvoiceDataBuf );          inf = TAX_REG_BILL_NO( &InvoiceDataBuf );     //inf = TaxPro_2( &InvoiceDataBuf );     if( inf == 0 || inf == 1 ) {	//保存 入 PosDef.ini 文件    kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","InvCode",(char*)InvoiceDataBuf.InvoiceCode );			kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","InvBeginNo",(char*)InvoiceDataBuf.BeginCode );			kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","InvEndNo",(char*)InvoiceDataBuf.EndCode );			kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","CurCode",(char*)InvoiceDataBuf.CurCode );		        GetInvoiceRollDisplay( &InvoiceDataBuf ); // InvoiceDataBuf ); //分发成功:显示 发票登记内容 .InvoiceCode,.BeginCode,.EndCode        TaxStatusData.PaperRollStatus = 1; //=0->未登记发票卷,=1->已登记发票卷	kds_WriteDefVal( (char *)IniFileName,"[TaxStatus]","PaperRollStatus",TaxStatusData.PaperRollStatus );	          }else{        //显示 分发发票失败

⌨️ 快捷键说明

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