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

📄 declare.c

📁 税控收款机源码:拼音输入法,LCD,VFD驱动,IC卡驱动,税控国标
💻 C
📖 第 1 页 / 共 5 页
字号:
        menu_num=strlen(menu_L2_DR);
		break;
		
		case MAX_LAYER_MENU:
        display_menu_page(switch_mode,layer,menu_Lmax_DR[last_line-1],cur_line);
        menu_num=strlen(menu_Lmax_DR[last_line-1]);
		break;
		
		default://若到达功能级,则转到功能设置
		break;
	}
    //===============2.2 功能设置=========================//
    if(layer==FUNCTION_LAYER)//若到达功能级 
	{
		//-----------2.2.1 执行相应功能------------//
		//----------提示当前功能--------------//
		clear_lcd(0,4);
		get_menu_name_dr(MAX_LAYER_MENU,function_no,buf);
		lcd_disp(0,0,buf);
		switch(function_no)
		{
        //-------------卡申报统计-----------//

		case DECLARE_DUTY_CARD: 
		result=save_day_data();
		if(result) 
		{
            break;
		}
		//-------检查用户卡合法性--------//
		result=check_user_card();
		if(result)
		{
            break;
		}
		result=check_usrcard_dec();
		if(result) 
		{
            break;
		}
		  
		//-----判断是否已汇总---//
		result=is_collected();
		if(result)
		{
			//2005.11.29
			strcpy(buf,"请用重复申报数据功能");
			lcd_disp(1,0,buf);
			//已汇总,则写入原已汇总数据
			/*result=SelFile_id(SAM_CARD,0xEF04);//从税控卡中读申报备份 
			if(result)     break;
			result=ReadRec(SAM_CARD,1,1,83,&buf[8]);
			if(result)     break;
			*/
			/*
			strcpy(buf,"正在写入上次的申报数据"); //校验用户卡的PIN码
	        lcd_disp(1,0,buf);
			memcpy(buf,g_user_info.register_no,8);
			result=get_declare_addr_struct(&declare_addr);
            if(result)     break;
            //result = read_flash(declare_addr.delare_addr-DECLARE_LEN+83,DECLARE_LEN-83,&buf[91]);  
			result = read_flash(declare_addr.delare_addr-DECLARE_LEN,DECLARE_LEN,&buf[8]);  
            if(result)     break;
            
			buf[219]=lrcdata(219,1,buf);
			//2005.7.27
			memcpy(start_date,&buf[9],3);
			memcpy(end_date,&buf[13],3);
			// Declare_Day_List(start_date,end_date);break;
			for(i=0;i<3;i++)
            {	
				result = data_collect(buf); 
				if(result) continue; 
				else break;
			}*/
			//2005.7.28
			//break;
		}

		//----------取得起止日期------------//
		//result=input_date_range(&start_date,&end_date);
		//if(result==POWER_OFF) return result;//断电,返回 
		//if(result!=OK) break;
          
		//------申报汇总的起始日期是上一次申报(已做完税处理)的结束日期加1-----//
          
		//if(read_eeprom(END_DATE_ADDR,3,start_date)) 
		//return(READ_EEPROM_FAIL);
          
		//sprintf(buf,"20%02bd年%02bd月%02bd日----\0",start_date[0],start_date[1],start_date[2]);
		//lcd_disp();
		else
		{
			result=get_declare_date(start_date,end_date);
			//send_str(3,start_date);send_str(3,end_date);return 0;
            if(result==POWER_OFF) return result;//断电,返回 
            if(result!=OK) break;
            read_rtc(buf);
            if(memcmp(start_date,end_date,3)>0)                       //截至日期不能小于起始日期
			{
				result=OVER_RANGE_ERROR;
				break;
			}
            if((memcmp(buf,end_date,3)<0)||(memcmp(buf,end_date,3)==0))//不可报当天的税
			{
				result=OVER_RANGE_ERROR;
				break;
			}
			//2005.8.14
			strcpy(buf,"正在报申报数据...");
            lcd_disp(1,0,buf);
			clear_lcd(2,2);
		    //------------申报统计---------------//
	        result=card_declare_duty(start_date,end_date);//报税
	        if(result==0) 
            {
             result=OK;
			//-----------本机最后一次申报的截至日期写入temp_end_date(完税处理后写入temp_end)---------// 
			if(write_eeprom(END_DATE_TMP_ADDR,3,end_date)) 
				return(READ_EEPROM_FAIL); 
            }
		}
		if((result)&&(result!=OK))break; 
		//send_char(result);  
		//2005.12.27
		result = declare_invoice_roll(start_date,end_date);
		if(result)
			return result;
		result = Declare_Day_List(start_date,end_date);

		if(result)
			return result;
		//result=0;
		break;
		
		
		
  //-------------卡申报统计-----------//

	case DECLARE_DUTY_BYMONTH: 
		result=save_day_data();
		if(result) 
		{
            break;
		}
		//-------检查用户卡合法性--------//
		result=check_user_card();
		if(result) 
		{
            break;
		}
		result=check_usrcard_dec();
		if(result) 
		{
            break;
		}
		//-----判断是否已汇总---//
		result=is_collected();
		if(result)
		{ 
			//已汇总,则写入原已汇总数据
			/*result=SelFile_id(SAM_CARD,0xEF04);//从税控卡中读申报备份 
			if(result)     break;
			result=ReadRec(SAM_CARD,1,1,83,&buf[8]);
			if(result)     break;
			*/
			//2005.11.29
			strcpy(buf,"请用重复申报数据功能");
			lcd_disp(1,0,buf);
		/*	strcpy(buf,"正在写入上次的申报数据"); //校验用户卡的PIN码
	        lcd_disp(1,0,buf);
			memcpy(buf,g_user_info.register_no,8);
			result=get_declare_addr_struct(&declare_addr);
            if(result)     break;
            //result = read_flash(declare_addr.delare_addr-DECLARE_LEN+83,DECLARE_LEN-83,&buf[91]);  
			result = read_flash(declare_addr.delare_addr-DECLARE_LEN,DECLARE_LEN,&buf[8]);  
            if(result)     break;
            
			buf[219]=lrcdata(219,1,buf);
			//2005.7.27
			memcpy(start_date,&buf[9],3);
			memcpy(end_date,&buf[13],3);
            //send_str(220,buf);break;
			for(i=0;i<3;i++)
            {
				result = data_collect(buf); 
				if(result) continue; 
				else break;
			}
			//2005.7.28
			// break;
			*/
		}
		else
		{
			if(read_eeprom(END_DATE_ADDR,3,temp_buf)) 
				return(READ_EEPROM_FAIL);
			calc_date(temp_buf,1,start_date);
			read_rtc(buf);
			if((buf[1]>start_date[1])||((start_date[1]==0x12)&&(buf[1]!=0x12)))
			{
			//------------申报统计---------------//
				memcpy(end_date,start_date,2);
				end_date[2]=0x31;
				if((end_date[1]==4)||(end_date[1]==6)||(end_date[1]==9)||(end_date[1]==0x11))end_date[2]=0x30;
				else if(end_date[1]==2)
				{
					i=(buf[0]>>4)*10+buf[0]&0x0f;
					if(!(i%4))end_date[2]=0x29;
					else      end_date[2]=0x28;
				}
				//send_str(3,start_date);send_str(3,end_date);
               
				//2005.8.14
				strcpy(buf,"正在报申报数据...");
				lcd_disp(1,0,buf);
				clear_lcd(2,2);
				// send_str(3,start_date);send_str(3,end_date);return 0;
				result=card_declare_duty(start_date,end_date);//报税
				if(result==0) 
                {
                result=OK;
				//-----------本机最后一次申报的截至日期写入temp_end_date(完税处理后写入temp_end)---------// 
				if(write_eeprom(END_DATE_TMP_ADDR,3,end_date)) 
					return(READ_EEPROM_FAIL);
               } 
			}
			else result=RANGE_ERROR_BYMONTH;
		}
		if((result)&&(result!=OK))break; 
		  //2005.7.27
		result = Declare_Day_List(start_date,end_date);
		if(result)
			return result;
		// result=0;
		break;	
	 //-------------重复申报数据-----------//
      //2005.11.29
      case DECLARE_DUTY_AGAIN: 
        result=save_day_data();
		if(result)
		{
			break;
		}
		//-------检查用户卡合法性--------//
		result=check_user_card();
		if(result) 
		{
            break;
		}
		//判断用户卡是否已报税
		result=check_usrcard_dec();
		if(result) 
		{
            break;
		}
		//-----判断是否已汇总---//
		result=is_collected();
		if(result)
		{
			//已汇总,则写入原已汇总数据
			/*result=SelFile_id(SAM_CARD,0xEF04);//从税控卡中读申报备份 
			if(result)     break;
			result=ReadRec(SAM_CARD,1,1,83,&buf[8]);
			if(result)     break;
			*/
			strcpy(buf,"正在写入上次的申报数据"); //校验用户卡的PIN码
	        lcd_disp(1,0,buf);
			memcpy(buf,g_user_info.register_no,8);
			result=get_declare_addr_struct(&declare_addr);
            if(result)     break;
            //result = read_flash(declare_addr.delare_addr-DECLARE_LEN+83,DECLARE_LEN-83,&buf[91]);  
			result = read_flash(declare_addr.delare_addr-DECLARE_LEN,DECLARE_LEN,&buf[8]);  
            if(result)     break;
            
			buf[219]=lrcdata(219,1,buf);
			//2005.7.27
			memcpy(start_date,&buf[9],3);
			memcpy(end_date,&buf[13],3);
            //send_str(220,buf);break;
			for(i=0;i<3;i++)
            {
				result = data_collect(buf); 
				if(result) continue;
				else break;
			}
			//2005.12.27
			result = declare_invoice_roll(start_date,end_date);
			if(result)
				return result;

			result = Declare_Day_List(start_date,end_date);
			if(result)
				return result;
			//2005.7.28
			// break;
		}
		else
		{
			strcpy(buf,"不能重复申报数据");
			lcd_disp(1,0,buf);
			/*	if(read_eeprom(END_DATE_ADDR,3,temp_buf)) 
				return(READ_EEPROM_FAIL);
			calc_date(temp_buf,1,start_date);
			read_rtc(buf);
			if((buf[1]>start_date[1])||((start_date[1]==0x12)&&(buf[1]!=0x12)))
			{
			//------------申报统计---------------//
			memcpy(end_date,start_date,2);
			end_date[2]=0x31;
			if((end_date[1]==4)||(end_date[1]==6)||(end_date[1]==9)||(end_date[1]==0x11))end_date[2]=0x30;
			else if(end_date[1]==2)
			{ 
				i=(buf[0]>>4)*10+buf[0]&0x0f;
				if(!(i%4))end_date[2]=0x29;
				else      end_date[2]=0x28;
			}
			//2005.8.14
			strcpy(buf,"正在报申报数据...");
			lcd_disp(1,0,buf);
			clear_lcd(2,2);
			// send_str(3,start_date);send_str(3,end_date);return 0;
			result=card_declare_duty(start_date,end_date);//报税
			if(result==0) result=OK;
			//-----------本机最后一次申报的截至日期写入temp_end_date(完税处理后写入temp_end)---------// 
			if(write_eeprom(END_DATE_TMP_ADDR,3,end_date))
				return(READ_EEPROM_FAIL); 
			}
				else result=RANGE_ERROR_BYMONTH;
			  */
           
		}
		if((result)&&(result!=OK))break; 
		//2005.7.27
		
		// result=0;
		break;			
		
		
		
		
		
		
#ifdef DECLARE_INVOICE//
      //-------------卡申报明细-----------//
       case DECLARE_LIST_CARD:
          //-------检查用户卡合法性--------//
      	  result=check_user_card();
		  if(result) break;
          //----------取得起止日期------------//
          result=input_date_range(&start_date,&end_date);
          if(result==POWER_OFF) return result;//断电,返回 
          if(result!=OK) break;
          read_rtc(buf);
          if((memcmp(buf,end_date,3)<0)||(memcmp(buf,end_date,3)==0))//不可报当天的税
          {
            result=OVER_RANGE_ERROR;
            break;	
          }
          
          //------------申报明细---------------//
        result=card_declare_list(start_date,end_date);
	    break;
#endif


        case DECLARE_INVOICE_ROLL_CARD:
  
		//-------检查用户卡合法性--------//
		//result=check_user_card_get_fileid(temp_buf,0);//检查用户卡及反回发票使用信息文件标示符
		//send_str(2,temp_buf);//0xef11
		//temp_len=temp_buf[0];
		//temp_len<<=8;
		//temp_len|=temp_buf[1];
		//if(result) break;
		  

		//----------取得起止日期------------//
		result=input_date_range(start_date,end_date);
		if(result==POWER_OFF) return result;//断电,返回 
		if(result!=OK) break;
		read_rtc(buf);
		if((memcmp(buf,&end_date,3)<0)||(memcmp(start_date,end_date,3)>0) )
		{
            result=OVER_RANGE_ERROR;
            break;
		}
          
		result = declare_invoice_roll(start_date,end_date);
		if(result)
			return result;
		//-------------用户卡报日记录-----------//
       /* case DECLARE_DAY_RECORD:
          result=check_user_card_get_fileid(temp_buf,1);//检查用户卡及反回日记录文件标示符
		  temp_len=temp_buf[0];
          temp_len<<=8;
		  temp_len|=temp_buf[1];
		  if(result) break;
 		  
          //----------取得起止日期------------//
          result=input_date_range(&start_date,&end_date);
          if(result==POWER_OFF) return result;//断电,返回 
          if(result!=OK) break;
          read_rtc(buf);
          if((memcmp(buf,end_date,3)<0)||(memcmp(buf,end_date,3)==0))//不可报当天的税
          {
            result=OVER_RANGE_ERROR;

⌨️ 快捷键说明

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