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

📄 taxapi.c

📁 本程序在S3C44B0 uClinux的嵌入式GUI
💻 C
📖 第 1 页 / 共 2 页
字号:
  LongToStr(int_now_bill_number,tmp_data);  i = strlen(tmp_data);  stByteMove(tmp_buf,"0000000000",10);  stByteMove(&tmp_buf[10-i],tmp_data,i);  stByteMove(statusData->CurCode,tmp_buf,10);  //将当前发票号放入结构  //Show_boot_strap_init(statusData);  //debug  err = JudgeNowBillNumber( &statusData->PaperRollStatus,tmp_buf );  return err;}//得到 税控状态,向全局结构赋值int TaxPro_0_ForWelcom( struct TaxStatus *statusData,int times,int ReadFromUnit ) {  unsigned char tmp_data[50];  unsigned char tmp_buf[100],StrBuf[21];  unsigned char now_bill_number[5];  unsigned long int_now_bill_number;  int err,i; if( times > 0 && statusData->TaxFlg == 0 ) //未进税控,不用再取其他税控状态     return 0; switch( times ) {  case 0:  //得到税控标志  err = GetTaxFlag(tmp_data);  if(err) return err;  statusData->TaxFlg = tmp_data[0];  //保存 到 ini 文件  kds_WriteDefVal( (char *)IniFileName,"[TaxStatus]","TaxFlag",statusData->TaxFlg );  if(tmp_data[0]!=1)    return 0x10;  //未税控初始化状态    break;  case 1:  //得到开票截止日期,金额限额 等  if( ReadFromUnit ){  memset(tmp_buf,0x0,100);  err = ReadFlash(22,FlashSKCardFile2Info_1,tmp_buf);  if(err)  return err;  memset(tmp_data,0x0,20);   for(i=0;i<4;i++) BCDtoChar(&tmp_data[i*2],tmp_buf[i]); //转换 开票截至日期  stByteMove(statusData->EndDate,tmp_data,4);  statusData->EndDate[4]='-';  stByteMove(&statusData->EndDate[5],&tmp_data[4],2);  statusData->EndDate[7]='-';  stByteMove(&statusData->EndDate[8],&tmp_data[6],2);    //保存入 ini 文件  kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","InvalidDate",(char*)statusData->EndDate );  //将 data_buf (小模式)数据转换成 带小数点的字符串 StrAddDecimalMark  ConvHexToStrAddDeclmalMark( StrBuf,&tmp_buf[4] ); //单张发票开票金额限额  	(长度:4)  memmove( TaxInitDataBuf.OneInvoiceValLimit,StrBuf,strlen( StrBuf ) );  kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","OneInvoiceValLimit",(char*)TaxInitDataBuf.OneInvoiceValLimit );    //发票累计金额限额	(长度:4)  ConvHexToStrAddDeclmalMark( StrBuf,&tmp_buf[8] ); //单张发票开票金额限额  	(长度:4)  memmove( TaxInitDataBuf.TotalLimit,StrBuf,strlen( StrBuf ) );  kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","TotalLimit",(char*)TaxInitDataBuf.TotalLimit );    //退票累计金额限额	(长度:4)  ConvHexToStrAddDeclmalMark( StrBuf,&tmp_buf[12] ); //单张发票开票金额限额  	(长度:4)  memmove( TaxInitDataBuf.ReturnTotalLimit,StrBuf,strlen( StrBuf ) );  kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","ReturnTotalLimit",(char*)TaxInitDataBuf.ReturnTotalLimit );  for( i=0; i<6; i++ ) WordToAsc(  &statusData->IndexCode[i*2],(unsigned int)tmp_buf[16+i],2 ); //税种税目索引号 (长度:6)  //保存入 ini 文件   kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","TaxTypeIndex",(char*)statusData->IndexCode );  err = ReadFlash(22,FlashSKCardFile4Info_2,tmp_buf);  if(err)  return err;  //得到 发票代码,发票起始号,发票截止号  for( i=0; i<10; i++) { BCDtoChar( &InvoiceDataBuf.InvoiceCode[i*2],tmp_buf[i]);}  //发票代码  kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","InvCode",(char*)InvoiceDataBuf.InvoiceCode );		  //hex_data (小模式)数据转换成 固定长度的数字字符串   Conv_minHexToMasterStr( InvoiceDataBuf.BeginCode ,&tmp_buf[10] );  kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","InvBeginNo",(char*)InvoiceDataBuf.BeginCode );		    Conv_minHexToMasterStr( InvoiceDataBuf.EndCode ,&tmp_buf[14] );  kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","InvEndNo",(char*)InvoiceDataBuf.EndCode );		  }  break;  case 2:  if( ReadFromUnit ){    err = ReadFlash( 8,FlashSKCardFile1Info_7,tmp_buf ); //读 税控卡应用启用日期,应用有效日期  if(err) return err;  memset(tmp_data,0x0,20);   for(i=0;i<4;i++) BCDtoChar(&tmp_data[i*2],tmp_buf[i]); //转换 应用启用日期  stByteMove( TaxInitDataBuf.BeginDate,tmp_data,4);  TaxInitDataBuf.BeginDate[4]='-';  stByteMove(&TaxInitDataBuf.BeginDate[5],&tmp_data[4],2);  TaxInitDataBuf.BeginDate[7]='-';  stByteMove(&TaxInitDataBuf.BeginDate[8],&tmp_data[6],2);    //保存入 ini 文件  kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","BeginDate",(char*)TaxInitDataBuf.BeginDate );  memset(tmp_data,0x0,20);   for(i=0;i<4;i++) BCDtoChar(&tmp_data[i*2],tmp_buf[4+i]); //转换 应用有效日期  stByteMove(TaxInitDataBuf.ValidDate,tmp_data,4);  TaxInitDataBuf.ValidDate[4]='-';  stByteMove(&TaxInitDataBuf.ValidDate[5],&tmp_data[4],2);  TaxInitDataBuf.ValidDate[7]='-';  stByteMove(&TaxInitDataBuf.ValidDate[8],&tmp_data[6],2);    //保存入 ini 文件  kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","ValidDate",(char*)TaxInitDataBuf.ValidDate );  }  break;    case 3:  //初始化时得到单位名称 机器号 税号  if( ReadFromUnit ){    memset(tmp_buf,0x0,50);  err = ReadFlash(8,FlashSKCardFile1Info_4,tmp_buf); //读机器编号  if(err) return err;  memset(tmp_data,0x0,20);  for(i=0;i<8;i++)    BCDtoChar(&tmp_data[i*2],tmp_buf[i]);  stByteMove(User_Machine,tmp_data,16);  //保存入 ini 文件  kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","BoxCode",(char*)User_Machine );  }  break;  case 4:  if( ReadFromUnit ){      memset(tmp_buf,0x0,50);  err = ReadFlash(8,FlashSKCardFile1Info_5,tmp_buf); //读纳税人编码  if(err) return err;  memset(tmp_data,0x0,20);  for(i=0;i<8;i++)    BCDtoChar(&tmp_data[i*2],tmp_buf[i]);  stByteMove(User_ID,tmp_data,16);  //保存入 ini 文件  kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","UserCode",(char*)User_ID );  }  break;  case 5:  if( ReadFromUnit ){        memset(tmp_buf,0x0,50);  //err = ReadFlash(40,FlashSKCardFile1Info_12,tmp_buf); //读纳税人单位名称  err = ReadFlash(40,FlashYHCardFile1Info_9,tmp_buf); //读纳税人单位名称  if(err) return err;  stByteMove(User_Name,tmp_buf,40);  //保存入 ini 文件  kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","UserName",(char*)User_Name );  }  break;  case 6:  //得到当前发票号  if( ReadFromUnit ){        memset(tmp_buf,0x0,50);  memset(tmp_data,0x0,50);  err = ReadEeprom(EepromAdd_6,4,tmp_data);  //EepromAdd_6//当前发票号(每次交易结束后更新)(长度:4字节Hex数)  if(err) return err;  Conv_minHexToMasterStr( tmp_buf,tmp_data );  stByteMove(statusData->CurCode,tmp_buf,10);  //将当前发票号放入结构  //保存入 ini 文件  kds_WriteDefTxt( (char *)IniFileName,"[TaxStatus]","CurCode",(char*)statusData->CurCode );  }  break;  case 7:  //判断 税控发票是否用完  //Show_boot_strap_init(statusData);  //debug  err = JudgeNowBillNumber( &statusData->PaperRollStatus,tmp_buf );    if( statusData->PaperRollStatus == 0 ) {     //statusData->PaperRollStatus = 2; //如果 税控器中返回 "无票",ini 文件中记录 "应汇总": ->"应汇总"     //读 当前发票号     //kds_ReadDefTxt( (char *)IniFileName,"[TaxStatus]","CurCode",statusData->CurCode );     //马上判断有无发票     if( my_memcomp( statusData->CurCode,InvoiceDataBuf.EndCode,10 ) > 0 ) {	statusData->PaperRollStatus = 2; //当前发票号 > 截止发票号 -> 无票,需汇总     }  }  kds_WriteDefVal( (char *)IniFileName,"[TaxStatus]","PaperRollStatus",statusData->PaperRollStatus );  break;  } //end switch  return err;}/*int TaxPro_0( struct TaxStatus *Data ){  //现在为假函数,用于调试   Data->TaxFlg = 0;//是否进入税控机状态   Data->TaxReporting = 0;//是否进入报税状态   Data->PaperRollStatus = 0;//发票卷状态   memmove(Data->CurCode,"0000000001",10);//当前发票号   memmove(Data->IndexCode,"010200000000",12);//税种税目索引号   memmove(Data->EndDate,"2004-12-31",10);//本次开票截止日期   return 0;}*/ //税控初始化int TaxPro_1( struct TaxInitData *Data ){  //现在为假函数,用于调试   memset( Data->BoxCode,0,17 );   memmove( Data->BoxCode,"1234567890123456",16 );   memset( Data->UserCode,0,17 );   memmove( Data->UserCode,"0987654321654321",16 );   memset( Data->UserName,0,41 );   memmove( Data->UserName,(char*)DeptNameStr,sizeof(DeptNameStr) );   memset( Data->BeginDate,0,11 );   memmove( Data->BeginDate,"2004-03-01",10 );   memset( Data->ValidDate,0,11 );   memmove( Data->ValidDate,"2008-03-01",10 );   memset( Data->InvalidDate,0,11 );   memmove( Data->InvalidDate,"2003-04-01",10 );   memset( Data->OneInvoiceValLimit,0,13 );   memmove( Data->OneInvoiceValLimit,"   100000.00",12 );   memset( Data->TotalLimit,0,13 );   memmove( Data->TotalLimit," 10000000.00",12 );   memset( Data->ReturnTotalLimit,0,13 );   memmove( Data->ReturnTotalLimit," 10000000.00",12 );   memset( Data->TaxTypeIndex,0,13 );   memmove( Data->TaxTypeIndex,"010203040506",12 );   return 0;} //发票分发函数:int  TaxPro_2( struct InvoiceData *Data ) {   memset( Data->InvoiceCode,0,11 );   memmove( Data->InvoiceCode,"10000000010000000001",20 );//发票代码   memset( Data->BeginCode,0,11 );   memmove( Data->BeginCode,"0000000001",10 );//起始号   memset( Data->EndCode,0,11 );   memmove( Data->EndCode,"0000000100",10 );//截止号   memset( Data->CurCode,0,11 );   memmove( Data->CurCode,"0000000001",10 );//当前发票号   return 0; } //三、纳税申报 /*   char BeginDate[11];		//申报起算日期   YYYY-MM-DD 10 ASC STR   char CountDate[11];		//申报截至日期   YYYY-MM-DD 10 ASC STR   char InvoiceCnt[8];		//正常发票份数 "0000000" (不足前面补空格)   char ReturnCnt[8];		//退票份数 "0000000" (不足前面补空格)   char CancelCnt[8];		//废票份数 "0000000" (不足前面补空格)   char TaxTypeIndex[13];	//税种税目索引号  "010203040506"   char SubTotal[6][13];        //正常发票分类累计金额 000,000,000·00 (不足前面补空格)   char SubRetVal[6][13];       //退票分类累计金额 000,000,000·00 (不足前面补空格)   char TotalVal[13];           //正常发票累计金额 000,000,000·00 (不足前面补空格)   char RetVal[13];             //退票累计金额 000,000,000·00 (不足前面补空格)*/   int  TaxPro_3( struct TaxReportData *Data ) {   memset( Data->BeginDate,0,11 );   memmove( Data->BeginDate,"2004-03-01",10 );//申报起算日期   memset( Data->CountDate,0,11 );   memmove( Data->CountDate,"2004-03-25",10 );//申报截至日期   memset( Data->InvoiceCnt,0,11 );   memmove( Data->InvoiceCnt,"0001234",7 );//正常发票份数   memset( Data->ReturnCnt,0,11 );   memmove( Data->ReturnCnt,"0000002",7 );//退票份数   memset( Data->CancelCnt,0,11 );   memmove( Data->CancelCnt,"0000000",7 );//废票份数   // 忽略了 TaxTypeIndex, SubTotal,SubRetVal   memset( Data->TotalVal,0,11 );   memmove( Data->TotalVal,"000123400.00",12 );//正常发票累计金额   memset( Data->RetVal,0,11 );   memmove( Data->RetVal,"000001234.00",12 );//退票累计金额      return 0; } /*struct  CtrlData                //申报完成(完税回插)数据结构{     char InvalidDate[11];	//开票截止日期 YYYY-MM-DD   char OneInvoiceValLimit[13];	//单张开票限额 000,000,000·00 (不足前面补空格)   char TotalLimit[13];		//开票累计金额限额    char ReturnTotalLimit[13];	//退票累计金额限额    char TaxTypeIndex[13];	//税种税目索引号  "010203040506"};*/ //监控数据回读int TaxPro_4( struct CtrlData *Data ) {   memset( Data->InvalidDate,0,11 );   memmove( Data->InvalidDate,"2004-05-01",10 );//开票截止日期   memset( Data->OneInvoiceValLimit,0,13 );   memmove( Data->OneInvoiceValLimit,"000100000.00",12 );//单张开票限额   memset( Data->TotalLimit,0,13 );   memmove( Data->TotalLimit,"010000000.00",12 );//开票累计金额限额    memset( Data->ReturnTotalLimit,0,13 );   memmove( Data->ReturnTotalLimit,"001000000.00",12 );//退票累计金额限额   memset( Data->TaxTypeIndex,0,13 );   memmove( Data->TaxTypeIndex,"010203040506",12 );//税种税目索引号   return 0; }/*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 ) {   memset( Data->InvoiceCode,0,21 );   memmove( Data->InvoiceCode,"10000000010000000001",20 );//发票代码   memset( Data->BeginCode,0,11 );   memmove( Data->BeginCode,"0000000001",10 );//起始号码   memset( Data->EndCode,0,11 );   memmove( Data->EndCode,"0000000100",10 );//截止号码   memset( Data->InvoiceCnt,0,4 );   memmove( Data->InvoiceCnt,"099",3 );//正票份数   memset( Data->ReturnCnt,0,4 );   memmove( Data->ReturnCnt,"001",3 );//退票份数   memset( Data->CancelCnt,0,4 );   memmove( Data->CancelCnt,"000",3 );//废票份数   memset( Data->TotalVal,0,13 );   memmove( Data->TotalVal,"000012341.00",12 );//正票总金额   memset( Data->RetVal,0,13 );   memmove( Data->RetVal,"000000100.00",12 );//废票总金额   memset( Data->BeginDate,0,11 );   memmove( Data->BeginDate,"2004-03-08",10 );//开票起始时间   memset( Data->StopDate,0,11 );   memmove( Data->StopDate,"2004-03-10",10 );//开票截止时间   return 0; } extern struct  InvoiceListData CheckListDataBuf;/*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 TaxPro_6_1( struct InvoiceListData *Data ) {   //Data->flg = 0;//稽查类别      memset( Data->Flag,0,9 );   //memmove( Data->Flag,"明细",4 );//稽查类别   Data->Flag = 0;   //data_buf[8] 稽查方式 -> 0:'明细' 1:'日累计' 2:'申报记录' 3:'修改时间'   memset( Data->Level_Str,0,3 );   memmove( Data->Level_Str,"FF",2 );//稽查人员级别      return 0; }int TaxPro_6_2( void ) {   return 0; } int TaxPro_6_3( int *GL_level ){	*GL_level = 0x01;   //管理卡核查级别}

⌨️ 快捷键说明

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