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

📄 deal_data.c

📁 税控收款机源码:拼音输入法,LCD,VFD驱动,IC卡驱动,税控国标
💻 C
📖 第 1 页 / 共 5 页
字号:
				break;
			case RETREAT_INVOICE:
				invoice_roll.retreat_num++;
				invoice_roll.retreat_money+=record.invoice_money;
               //send_str(4,&invoice_roll.retreat_money);
				day.retreat_num++;
				for(j=0;j<CATALOG_NUM;j++)
					day.retreat_money[j]+=class_money[j];
				break;
			case RESCISSORY_INVOICE:
				invoice_roll.resissory_num++;
				day.rescissory_num++;
				break;	
			}

		}
		//send_char(2);
		if(is_trade==YES)
		{
			
		
			if(trade_info->invoice_type==NORMAL_INVOICE)
			{
				receiver_report.total_money+=trade_info->total_money;
				day_report.money+=trade_info->total_money;
				month_report.money+=trade_info->total_money;
				money_add.add_money+=trade_info->total_money;
				if(trade_info->trader_no)
				{
					trade_report.total_money+=trade_info->total_money;
					trade_report.total_trade++;
				}
				//交易次数
				receiver_report.total_trade++; 
				day_report.trade++;
				month_report.trade++;
				//折扣总额
				receiver_report.total_discount_money+=trade_info->discount_money;
				day_report.discount_money+=trade_info->discount_money;
				month_report.discount_money+=trade_info->discount_money;
				//服务费总额
				receiver_report.total_service_money+=trade_info->service_money;
				day_report.service_money+=trade_info->service_money;
				month_report.service_money+=trade_info->service_money;
				//直接折扣总额
				receiver_report.total_decrease_money+=trade_info->decrease_money;
				day_report.decrease_money+=trade_info->decrease_money;
				month_report.decrease_money+=trade_info->decrease_money;
				//8种现金额(每次交易只有一种付款方式)
				receiver_report.total_cash[trade_info->pay_way]+=trade_info->total_money;
				day_report.cash[trade_info->pay_way]+=trade_info->total_money;
				month_report.cash[trade_info->pay_way]+=trade_info->total_money;
				//8种销售次数(每次交易只有一种付款方式)
				receiver_report.cash_num[trade_info->pay_way]++;
				day_report.cash_num[trade_info->pay_way]++;
				month_report.cash_num[trade_info->pay_way]++;

			}
			else if(trade_info->invoice_type==RETREAT_INVOICE)
			{
				receiver_report.retreat_money+=trade_info->total_money;
				day_report.retreat_money+=trade_info->total_money;
				month_report.retreat_money+=trade_info->total_money;
				money_add.retreat_money+=trade_info->total_money;
				//退货次数
				receiver_report.retreat_num++;  
				day_report.retreat_num++;
				month_report.retreat_num++;
				if(trade_info->trader_no)
				{
					trade_report.retreat_money+=trade_info->total_money;
					trade_report.retreat_num++;
				}
			}


			//发票卷暂存到EEPROM
			invoice_roll.lrc=lrcdata((uint)sizeof(invoice_roll)-1,1,&invoice_roll);
			//strncpy(buf,&invoice_roll,(uint)sizeof(invoice_roll));
            //invoice_roll.lrc=0;
			//for(j=0;j<(uint)sizeof(invoice_roll)-1;j++)invoice_roll.lrc^=buf[j];
			//send_str(4,&invoice_roll.retreat_money);
			if(write_eeprom(INVOICE_ROLL,(uint)sizeof(invoice_roll),&invoice_roll))
			   { //send_char(3);
			    invoice_roll.lrc=lrcdata((uint)sizeof(invoice_roll)-1,1,&invoice_roll);
			    if(write_eeprom(INVOICE_ROLL,(uint)sizeof(invoice_roll),&invoice_roll))
				return(WRITE_EEPROM_FAIL);
		       }
			/*if(low_pwr==1)
					     {
						 invoice_roll.lrc=lrcdata((uint)sizeof(invoice_roll)-1,1,&invoice_roll);
						 if(read_eeprom(INVOICE_ROLL,(uint)sizeof(invoice_roll),buf))
							return(READ_EEPROM_FAIL);
						 if(memcmp(&invoice_roll,buf,(uint)sizeof(invoice_roll))!=0)
						  {
						  
						  if(write_eeprom(INVOICE_ROLL,(uint)sizeof(invoice_roll),&invoice_roll))
			   			  return(WRITE_EEPROM_FAIL);
		      			 }
						}
						*/
			//日记录暂存更新到EEPROM 如果天变了就存到FLASH中去
			day.lrc=lrcdata((uint)sizeof(day)-1,1,&day);
			
			if(write_eeprom(DAY,(uint)sizeof(day),&day))
			   { //send_char(4);
			    day.lrc=lrcdata((uint)sizeof(day)-1,1,&day);
			    if(write_eeprom(DAY,(uint)sizeof(day),&day))
				return(WRITE_EEPROM_FAIL);
			   }
		/* if(low_pwr==1)
					   {
					     day.lrc=lrcdata((uint)sizeof(day)-1,1,&day);
						 if(read_eeprom(DAY,(uint)sizeof(day),buf))
							return(READ_EEPROM_FAIL);
						 if(memcmp(&day,buf,(uint)sizeof(day))!=0)
						  {
						  
						  if(write_eeprom(DAY,(uint)sizeof(day),&day))
			  			  return(WRITE_EEPROM_FAIL);
			   
		      			 }
						}
						*/
			if(trade_info->invoice_type!=RESCISSORY_INVOICE) //废票不更新这几种报表
			{
				//收款员报表更新到EEPROM
				receiver_report.lrc=lrcdata((uint)sizeof(receiver_report)-1,1,
					&receiver_report);
			  
				if(write_eeprom(RECEIVER_ADDR+(uint)((trade_info->receiver_no-1)*sizeof(receiver_report)),
						(uint)sizeof(receiver_report),&receiver_report))
						{ //send_char(5);
						 receiver_report.lrc=lrcdata((uint)sizeof(receiver_report)-1,1,
					                                 &receiver_report);
						 if(write_eeprom(RECEIVER_ADDR+(uint)((trade_info->receiver_no-1)*sizeof(receiver_report)),
						                 (uint)sizeof(receiver_report),&receiver_report))
					      return(WRITE_EEPROM_FAIL);
					    }
				/*if(low_pwr==1)
					   {
					     receiver_report.lrc=lrcdata((uint)sizeof(receiver_report)-1,1,&receiver_report);
						 if(read_eeprom(RECEIVER_ADDR+(uint)((trade_info->receiver_no-1)*sizeof(receiver_report)),
						               (uint)sizeof(receiver_report),buf))
							return(READ_EEPROM_FAIL);
						 if(memcmp(&receiver_report,buf,(uint)sizeof(receiver_report))!=0)
						  {
						  if(write_eeprom(RECEIVER_ADDR+(uint)((trade_info->receiver_no-1)*sizeof(receiver_report)),
						                 (uint)sizeof(receiver_report),&receiver_report))
									 return(WRITE_EEPROM_FAIL);
						   }
						}
						*/
				//日报表更新到EEPROM
				day_report.lrc=lrcdata((uint)sizeof(day_report)-1,1,&day_report);
				if(write_eeprom(DAY_ADDR,(uint)sizeof(day_report),&day_report))
					{//send_char(6);
					 day_report.lrc=lrcdata((uint)sizeof(day_report)-1,1,&day_report);
					 if(write_eeprom(DAY_ADDR,(uint)sizeof(day_report),&day_report))
					 return(WRITE_EEPROM_FAIL);
					}
				//send_str((uint)sizeof(day_report)-50,&day_report+50);
			   /*if(low_pwr==1)
					   {
					     day_report.lrc=lrcdata((uint)sizeof(day_report)-1,1,&day_report);
						 if(read_eeprom(DAY_ADDR,(uint)sizeof(day_report),buf))
							return(READ_EEPROM_FAIL);
							//send_str((uint)sizeof(day_report)-50,buf);
						 if(memcmp(&day_report,buf,(uint)sizeof(day_report))!=0)
						  {
						   
						   if(write_eeprom(DAY_ADDR,(uint)sizeof(day_report),&day_report))
						    return(WRITE_EEPROM_FAIL);
						  }
						}
						*/
				//月报表更新到EEPROM
				month_report.lrc=lrcdata((uint)sizeof(month_report)-1,1,&month_report);
			
				if(write_eeprom(MONTH_ADDR,(uint)sizeof(month_report),&month_report))
					{// send_char(7);
					 if(write_eeprom(MONTH_ADDR,(uint)sizeof(month_report),&month_report))
					 return(WRITE_EEPROM_FAIL);
					}
			/*	if(low_pwr==1)
					   {
					     month_report.lrc=lrcdata((uint)sizeof(month_report)-1,1,&month_report);
						 if(read_eeprom(MONTH_ADDR,(uint)sizeof(month_report),buf))
							return(READ_EEPROM_FAIL);
						 if(memcmp(&month_report,buf,(uint)sizeof(month_report))!=0)
						  {
						   
						  	if(write_eeprom(MONTH_ADDR,(uint)sizeof(month_report),&month_report))
							return(WRITE_EEPROM_FAIL);
				
						  }
						}
						*/
				#ifdef C8_VER
				//营业员报表更新到EEPROM
				if(trade_info->trader_no)
				{
					trade_report.trade_no=trade_info->trader_no;
					trade_report.lrc=lrcdata((uint)sizeof(trade_report)-1,1,&trade_report);
					if(write_eeprom(TRADE_ADDR+(trade_info->trader_no-1)*(uint)sizeof(trade_report),
							(uint)sizeof(trade_report),&trade_report))
						return(WRITE_EEPROM_FAIL);
				}
				#endif
				//累加金额更新到EEPROM
				money_add.crc=crcxdata((uint)sizeof(money_add)-2,&money_add);
				if(write_eeprom(MONEY_ADD,(uint)sizeof(money_add),&money_add))
					{ //send_char(8);
					if(write_eeprom(MONEY_ADD,(uint)sizeof(money_add),&money_add))
					return(WRITE_EEPROM_FAIL);
					}
				/*if(low_pwr==1)
					   {
					     money_add.crc=crcxdata((uint)sizeof(money_add)-2,&money_add);
						 if(read_eeprom(MONEY_ADD,(uint)sizeof(money_add),buf))
							return(READ_EEPROM_FAIL);
						 if(memcmp(&money_add,buf,(uint)sizeof(money_add))!=0)
						  {
						   	
						  	if(write_eeprom(MONEY_ADD,(uint)sizeof(money_add),&money_add))
							return(WRITE_EEPROM_FAIL);
						  }
						}
						*/
			}
			
		}//发票完
 
	//定金清0
	trade_info->pre_money=0;
	if(is_trade==YES && trade_info->table_no>0)
		if(write_sramb(MENU_START_ADDR+(ulong)((trade_info->table_no-1)*
			((uint)sizeof(menu)+4)),4,&trade_info->pre_money))
			{ //send_char(9);
					return(WRITE_SRAM_FAIL);
					}
			
	//将record的数据暂存入print_rec,在打印时送入打印函数的参数为print_rec的数据
	memcpy(&print_rec,&record,(uint)sizeof(record));
	
	//send_char(3);
	//如果选择的不是打印税目名称则需要修改print_rec的数据,改动内容为项目数,名称和金额
	if(read_eeprom(PRINT_ITEM_FLG,2,tmp))//&g_print_item_sel))
	  return(READ_EEPROM_FAIL);
	 g_print_item_sel=tmp[0];
	 //2005.8.9
	if(!g_print_item_sel)//打印打印税目名称
	{
	  print_rec.item_num=trade_info->menu_num;                        //打印打印税目名称
	  for(j=0;j<trade_info->menu_num;j++)
	  {
	    if(menu[j].no)      //如果是PLU输入
	    {
	      rlt=get_plu(&plu,menu[j].no-1);
	      if(rlt)        return(rlt);
		  p=get_tax_item_index(plu.tax_item);
		  memcpy(print_rec.item[j].item_name,g_tax_catalog[p].tax_chinese_name,20);
		  //memcpy(print_rec.item[j].item_name,g_tax_catalog[plu.tax_item-1].tax_chinese_name,20);	
	      //memcpy(print_rec.item[j].item_name,plu.name,20);	
	    }
	    else                  //部门输入
	    {
			rlt=get_branch(&branch,menu[j].branch-1);
			if(rlt) { return(rlt);	}
			//2005.8.9
			p=get_tax_item_index(branch.tax_item);
			memcpy(print_rec.item[j].item_name,g_tax_catalog[p].tax_chinese_name,20);
		  
			//memcpy(print_rec.item[j].item_name,g_tax_catalog[branch.tax_item-1].tax_chinese_name,20);	
			//memcpy(print_rec.item[j].item_name,branch.name,20);		
		}
		memcpy((uchar *)&print_rec.item[j].money,(uchar *)&menu[j].money,4);  //获得金额	
		}
	}
		//菜单清0
	set_value0(menu,(uint)sizeof(*menu));
	if(is_trade==YES && trade_info->table_no>0)
		if(write_sramb(MENU_START_ADDR+
					(ulong)((trade_info->table_no-1)*
					((uint)sizeof(*menu)+4)+4),(uint)sizeof(*menu),menu))
			return(WRITE_SRAM_FAIL);


	set_value0(&record,(uint)sizeof(record));
	invoice_roll_end=0;
	//send_char(4);
	if(is_trade==YES)
	{
		//检查发票是否用完,用完则保存到FLASH,并且打印该卷发票信息
		//从税控卡获得发票卷的信息
		rlt=get_invoice_roll_info(&invoice_roll_info);
		if(rlt==INVO_ROLL_END)
		{
		   read_eeprom(RECORD_ADDR1,(uint)sizeof(RecordAddr),&RecordAddr);
	        if(crcxdata((uint)sizeof(RecordAddr)-2,&RecordAddr)!=RecordAddr.crc)
	     
	         {
		      if(read_eeprom(RECORD_ADDR2,(uint)sizeof(RecordAddr),&RecordAddr))
	            return(READ_EEPROM_FAIL);
		 	  if(crcxdata((uint)sizeof(RecordAddr)-2,&RecordAddr)!=RecordAddr.crc)return(CRC_ERROR);
		     
			}
			invoice_roll.invoice_end_add=RecordAddr.record_addr;//当前的发票明细记录作为发票卷的结束地址
            invoice_roll.lrc=lrcdata((uint)sizeof(invoice_roll)-1,1,&invoice_roll);
			rlt=save_invoice_roll(&invoice_roll);
			if(rlt)
				return(rlt);
			//发票数据清0
			
            set_value0(buf,(uint)sizeof(invoice_roll));
			memcpy(&buf[37],(uchar*)&RecordAddr.record_addr,4);//当前的发票明细记录作为发票卷的起始地址
			buf[(uint)sizeof(invoice_roll)-1]=lrcdata((uint)sizeof(invoice_roll)-1,1,buf);
			if(write_eeprom(INVOICE_ROLL,(uint)sizeof(invoice_roll),buf))
 		    {
			 if(write_eeprom(INVOICE_ROLL,(uint)sizeof(invoice_roll),buf))
				return(WRITE_EEPROM_FAIL);
			 }
			invoice_roll_end=1;
			
		}
		else if(rlt) 
		    {
			return(rlt);
			}
	}
  //send_char(print_rec.invoice_type);
	if(trade_info->invoice_type!=RESCISSORY_INVOICE) //废票不打印
	{
			//打印
			strcpy(buf,"正在打印...");
			clear_lcd(3,1);
			lcd_disp(3,0,buf);
            //2005.9。14
            gb_temp=0;
			for(j=0;j<=print_rec.item_num;j++)
			{
				if(j==print_rec.item_num)
					end=1;
				else
					end=0;
				rlt=print_record_item(&print_rec,j,end,&invoice_roll_info,is_trade);
				
				//打印错误暂不返回
				if(rlt)
				   {
				   	print_error=rlt;
					}
			}
     strcpy(buf,"谢谢,交易成功!");
     clear_lcd(0,MAX_LCD_NUM);
	lcd_disp(3,0,buf);
	}
   else
    {
	 clear_lcd(0,MAX_LCD_NUM);
     strcpy(buf,"谢谢,废票成功!");
     lcd_disp(2,0,buf);	      
    }
	 
	//交易信息更新
	init_trade_info(trade_info);
	
	/*set_value0(&record,(uint)sizeof(record));
	invoice_roll_end=0;
	if(is_trade==YES)
	{
		//检查发票是否用完,用完则保存到FLASH,并且打印该卷发票信息
		//从税控卡获得发票卷的信息
		rlt=get_invoice_roll_info(&invoice_roll_info);
		if(rlt==INVO_ROLL_END)
		{
			rlt=save_invoice_roll(&invoice_roll);
			if(rlt)
				return(rlt);
			//发票数据清0
			set_value0(buf,(uint)sizeof(invoice_roll));
			if(write_eeprom(INVOICE_ROLL,(uint)sizeof(invoice_roll),buf)) 
				return(WRITE_EEPROM_FAIL);
			invoice_roll_end=1;
			
		}
		else if(rlt) 
			return(rlt);
	}
   	*/
	if(invoice_roll_end && is_trade==YES)
	{
		//打印该卷发票信息
		//send_str(4,&invoice_roll.retreat_money);
		rlt=print_invoice_roll(&invoice_roll);
		//打印错误暂不返回
		if(rlt)

⌨️ 快捷键说明

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