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

📄 taxctrl.c

📁 本程序在S3C44B0 uClinux的嵌入式GUI
💻 C
📖 第 1 页 / 共 4 页
字号:
//PET Mac.陈 13590227055//TaxCtrl.c//适用于 : i-cop,ARM-7,飞龙3210 #include "pos.h" #include "sk.h" #include "error.h" #define ARM_DEVICE	//使用深圳蔡总ARM主板 #define FONT_WIDTH     6  //显示半角字宽 6 点  //本文件中 函数表 //得到 税控状态,在 状态行 显示 "税控 正常 纸卷" ...... //void  GetTaxStatusAndDisplay( int flg ); //税控初始化 //int   TaxInit( void );  #define  STATUS_LINE      8   //i-cop=6,ARM-7=8,飞龙3210=14 #define  SCR_LINE_WIDTH  24   //i-cop=16,ARM-7=24,飞龙3210=30  extern const char IniFileName[]; //={"/mnt/nand_disk1/PosDef.ini"}; extern const char GT_FileName[]; //={"/mnt/nand_disk1/gt_list.ini"}; //商品部类表文件 extern unsigned char User_Name[41];     //本税控器单位名称 extern unsigned char User_ID[17];       //本税控器纳税人编码 extern unsigned char User_Machine[17];  //本税控器机器编号 extern unsigned char prevent_forge_code[25];  //防伪税控码  struct TaxStatus TaxStatusData ;  //税控状态 数据结构 struct user_ware_info UserGoodsTypeList; struct  TaxInitData  TaxInitDataBuf;  struct  InvoiceData  InvoiceDataBuf;/*{           int TaxFlg;		 //=0->未进入税控,=1->已进入税控           int TaxReporting;	 //=0->正常使用中,=1->进入纳税申报,未确认完税           int PaperRollStatus;  //=0->未登记发票卷,=1->已登记发票卷,=2->应汇总          char CurCode[11];      //当前发票号          char IndexCode[13];    //税种税目索引号 010200000000 unsigned char EndDate[13];      //本次开票截止日期}; */ //在状态行显示 税控状态void  TaxStatusDisplay( void );//功能: 将长整型转为指定长度字符串 如果实际长度小于指定长度 则在字符串前面补零//输入: cc   长整型//      str  字符串//      len  指定的长度void LongToMasterStr(long cc,unsigned char *str,int len){ int i,j; unsigned char buf[50];  //处理50位以下的长整形 memset(buf,0x0,50); memset(str,0x30,len);  //先将字符串全部初始化为字符'0' if(cc<0)   cc = -cc; j = digit_num(cc); /* 计算cc的位数 */ for (i=0;i<j;i++) { buf[j-i-1] = cc%10+0x30;   cc=cc/10; } if(j>len)   memmove(str,buf,len); else   memmove((str+len-j),buf,j);}//  商品部类表文件//保存入 gt_list.ini  const char GT_FileName[]={"/mnt/nand_disk1/gt_list.ini"}; //商品部类表文件 			 //"003",				总行数 			 //"[GoodsList]=002",    			 //"type01=餐饮费", 			 //"rate01=01",int  save_gt_list_file( struct user_ware_info *UserGoodsTypeList ) //将 "商品部类表" 数据保存入 gt_list.ini{     int i,err,len;   unsigned char SpaceLine[INI_LINE_LENGTH+3];   FILE *fp;    struct user_ware_info ware_info_data;         err = OpenUserList(&ware_info_data); //sk.c 从税控单元读出税种税目表   if(err)  return err;   fp = fopen( GT_FileName,"w" );         //写总行数   memset(SpaceLine,0x20,INI_LINE_LENGTH);   LongToMasterStr( (ware_info_data.cnt*2+1),SpaceLine,3 );   SpaceLine[INI_LINE_LENGTH]=0x0d; SpaceLine[INI_LINE_LENGTH+1]=0x0a; SpaceLine[INI_LINE_LENGTH+2]=0;   fputs(SpaceLine,fp);      //写部类信息行数   memset(SpaceLine,0x20,INI_LINE_LENGTH);   memmove(SpaceLine,"[GoodsList]=",12);      LongToMasterStr( (ware_info_data.cnt*2),&SpaceLine[12],3 );   SpaceLine[INI_LINE_LENGTH]=0x0d; SpaceLine[INI_LINE_LENGTH+1]=0x0a; SpaceLine[INI_LINE_LENGTH+2]=0;   fputs(SpaceLine,fp);      for(i=0;i<ware_info_data.cnt;i++)   {  memset(SpaceLine,0x20,INI_LINE_LENGTH);      memmove(SpaceLine,"type01=",7);        LongToMasterStr( i,&SpaceLine[4],2 );            len = strlen(ware_info_data.data[i].pinming);      if(len>30)  len = 30;      memmove(&SpaceLine[7],ware_info_data.data[i].pinming,len);       SpaceLine[INI_LINE_LENGTH]=0x0d; SpaceLine[INI_LINE_LENGTH+1]=0x0a; SpaceLine[INI_LINE_LENGTH+2]=0;      fputs(SpaceLine,fp);            memset(SpaceLine,0x20,INI_LINE_LENGTH);      memmove(SpaceLine,"rate01=",7);        LongToMasterStr( i,&SpaceLine[4],2 );      memmove(&SpaceLine[7],ware_info_data.data[i].shuilv,2);       SpaceLine[INI_LINE_LENGTH]=0x0d; SpaceLine[INI_LINE_LENGTH+1]=0x0a; SpaceLine[INI_LINE_LENGTH+2]=0;      fputs(SpaceLine,fp);   }      fclose(fp);      return err; 	}int   DeptNameChange( void )		//变更企业名称{ int inf = 0; unsigned char errStr[50];  //提示 插入用户卡   LCD6963_ClearScreen();   //清屏幕   //提示 插入用户卡   //提示 "变更企业名称中,请稍候..."   LCD_DisplayOneLine( 0,0 ,"插入用户卡",'D',0,0 );   LCD_DisplayOneLine( 6,0 ,"请确认要变更企业名称:",'D',0,0 );   //等待用户按<CR>键   if( TC_WaitUserPressAnyKey( XK_Return )!= 0 ) //等待用户按 某一特定键         return -1; //用户不确认,返回   LCD_DisplayOneLine( 6,0 ,"变更企业名称中,请稍候....",'D',0,1 ); //将第6行内容覆盖    inf = TAX_CHANGE_UNIT_NAME();	//sk.c 从税控单元(用户卡)读出 新的企业名称->User_Name  if( inf==0 ) { //将 User_Name 保存 到            kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","UserName",(char*)User_Name );           //TaxInitDataBuf.UserName;		//纳税人单位名称 40 STR  }else{           ShowTaxMessage( inf , errStr );           LCD_DisplayOneLine( 0,0 ,errStr,'D',1,1 );            TC_PressAnyKey();      }    return inf;  }void  DisplayInvNoStr( void ){     char D_str[12];            memset( D_str,0x20,11 ); D_str[11]=0;      memmove( D_str,InvoiceDataBuf.CurCode,10 );      LCD_DisplayOneLine( 8, 0, D_str,'D',0,0 ); //反白显示      //sleep(10);}//从 ini 文件读出发票卷登记数据项void  InvoiceStructDisplay( void ){  //从 ini 文件读出发票卷登记数据项   kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","InvCode",InvoiceDataBuf.InvoiceCode );   kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","InvBeginNo",InvoiceDataBuf.BeginCode );   kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","InvEndNo",InvoiceDataBuf.EndCode );   kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","CurCode",InvoiceDataBuf.CurCode );   printf( "Cur:%s,End:%s\n",InvoiceDataBuf.CurCode,InvoiceDataBuf.EndCode );}//从 ini 文件读出 税控状态void  TaxStatusReadFromPosDefIni( void ){ //从 ini 文件读出 税控状态   //管理 数值 (得到 TaxFlag 值)   TaxStatusData.TaxFlg = kds_ReadDefVal( (char *)IniFileName,"[TaxStatus]","TaxFlag");   //(得到 TaxReportting 值)   TaxStatusData.TaxReporting = kds_ReadDefVal( (char *)IniFileName,"[TaxStatus]","TaxReportting");   //(得到 PaperRollStatus 值)   TaxStatusData.PaperRollStatus = kds_ReadDefVal( (char *)IniFileName,"[TaxStatus]","PaperRollStatus");   //TaxStatusData.PaperRollStatus = 0;  //sm add for debug only} extern struct SaleData nowSaleData_test; //李哲 本处需要 加入你的开票、销售程序int  Main_3_2_MenuPro( void ) //开销售发票{ int err = -1; unsigned char errStr[50]; unsigned long InvNum;                      if( TaxStatusData.PaperRollStatus == 1 ) {                LCD6963_ClearScreen();   //清屏幕                LCD_DisplayOneLine( 2,0 ,"税控开票操作中...",'D',1,1 );                 err = TAX_BALANCE( &nowSaleData_test );           }           if( err == 0 ) //发票号加 1           {   //读 当前发票号           	   kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","CurCode",errStr); errStr[10]=0;           	   InvNum = StrToLong( errStr );           	   InvNum ++;  //+1           	   UnsignedLongToAsc( errStr, InvNum, 10 );           	   //将变动后的发票号保存在 ini 文件中           	   kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","CurCode",(char*)errStr );	           kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","CurCode",InvoiceDataBuf.CurCode ); //更改当前发票号		       //马上判断有无发票		       if( my_memcomp( InvoiceDataBuf.CurCode,InvoiceDataBuf.EndCode,10 ) > 0 ) {			       TaxStatusData.PaperRollStatus = 2; //当前发票号 > 截止发票号 -> 无票,需汇总  	               kds_WriteDefVal( (char *)IniFileName,"[TaxStatus]","PaperRollStatus",TaxStatusData.PaperRollStatus );   		       }           } else {             LCD6963_ClearScreen();   //清屏幕             ShowTaxMessage( err, errStr );             LCD_DisplayOneLine( 2,0 ,errStr,'D',1,1 );              TC_PressAnyKey();               }           printf( "Cur:%s,End:%s\n",InvoiceDataBuf.CurCode,InvoiceDataBuf.EndCode );           TaxStatusDisplay(); //在 状态行 显示 "税控 正常 纸卷" ......              return err; } //得到 税控状态,在 状态行 显示 "税控 正常 纸卷" //                             "非税 报税 上纸" const char StatusChar[]={"税控非税正常报税有票无票汇总"};void  GetTaxStatusAndDisplay( int flg )  //flg=1->从税控器读,flg=0->从内存读 { char *pp; int cnt=0,inf=0;   pp = (char*)malloc( 240/8+1 );   memset( pp,0x20,240/8+1 );   if( flg == 1 )       inf = TaxPro_0( &TaxStatusData,flg );   if( inf == 0 ){       //是否进入税控       printf( "Tax Flag : %d\n",TaxStatusData.TaxFlg );       if( TaxStatusData.TaxFlg==1)         { memmove( pp+cnt,(char*)&StatusChar[0],4 ); //"税控"          cnt+=5;          //是否进入报税          printf( "Tax Reporting : %d\n",TaxStatusData.TaxReporting );          printf( "Tax PaperRoll Status : %d\n",TaxStatusData.PaperRollStatus );          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',0 );   #else   LCD_DisplayOneLine( STATUS_LINE,0 ,pp,'D','B',1 );   #endif   free( pp );	   //KB_WaitAnyKey(); }

⌨️ 快捷键说明

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