📄 struct.h
字号:
/*-------------------------------------------------------------
说明:结构定义及其长度 日期:2004年3月 作者:
---------------------------------------------------------------*/
#ifndef __STRUCT_H__
#define __STRUCT_H__
#include "constant.h"
//明细记录87+item_num*33
struct record_struct
{
uchar date[4]; //开票日期
uchar invoice_type; //发票类型
ulong invoice_no; //发票号码,流水号(暂定为HEX)
ulong invoice_money; //发票合计金额
uchar anti_forge_code[8]; //税控码
ulong valid_inv_no; //原票号码,流水号(暂定为HEX)
uchar invoice_code[10]; //发票代码
uchar disburse_unit[40]; //付款单位,不足后面补0
uchar receiver_no[10]; //收款员号码
uchar item_num; //一张发票的经营项目数
struct item_struct
{
uchar item_name[20]; //项目名称
ulong num; //商业,项目数量
ulong price; //单价
ulong money; //项目金额
uchar tax_item;
}item[PAGE_ITEM_NUM];//项目
uchar lrc; //记录+所有经营项目的累加和
};
/*
struct record_struct
{
uchar item_num; //一张发票的经营项目数
uchar date[3]; //开票日期
uchar invoice_type; //发票类型
ulong invoice_no; //发票号码,流水号(暂定为HEX)
ulong invoice_money; //发票合计金额
uchar anti_forge_code[8]; //税控码
ulong valid_inv_no; //原票号码,流水号(暂定为HEX)
uchar reservation[2]; //保留
uchar disburse_choice; //付款方式
uchar receiver_no; //收款员号码
uchar disburse_unit[40]; //付款单位,不足后面补0
struct item_struct
{
uint no; //项目编号(高位为1时为PLU编号,为0时为部门编号)
uchar item_name[20]; //项目名称
//#ifdef TRADE
ulong num; //商业,项目数量
//#endif
ulong money; //项目金额
}item[PAGE_ITEM_NUM];//项目
uchar lrc; //记录+所有经营项目的累加和
};
*/
//二、单卷发票
//每卷发票的统计数据结构
struct invoice_roll_struct
{
uchar invoice_code[10]; //发票代码
ulong invoice_start_no; //发票起始号
ulong invoice_end_no; //发票终止号
uchar normal_num; //正常发票使用数
uchar retreat_num; //退票总数
uchar resissory_num; //废票总数
ulong trade_money; //开票总金额(包含退票金额)
ulong retreat_money; //退票总金额
uchar issue_start_date[4]; //开票起始日期
uchar issue_end_date[4]; //开票截止日期
ulong invoice_start_add; //发票在flash中的起始地址
ulong invoice_end_add; //发票在flash中的结束地址
uchar lrc; //累加和校验
};
//发票卷数据结构共46个BYTE,
//日汇总数据结构
struct day_struct
{
uchar date[3]; //日期
uint invoice_num; //发票使用总数
uint retreat_num; //退票总数
uint rescissory_num; //废票总数
uchar tax_item_code[6]; //税目编码
ulong sale_money[6]; //开票金额(包含退票金额 分)
ulong retreat_money[6]; //退票金额
uchar lrc; //累加和校验
};
//共64byte
//日记录存于黑匣子(FLASH)中,永不擦除。税控机占用FLASH的硬件资源29扇区(64k)、30扇区(64k)、31扇区(32k);(税控器和票据机从28-31扇区???)。顺序存放。可采用顺序或者二分法查找,视最终的反应速度定。
//固定6个税目的情况下:length=64byte,记录数=2560,可保证7年。
//五、申报数据
//申报数据存于黑匣子(FLASH)中,永不擦除。税控机占用FLASH的硬件资源34扇区(16k);
//申报数据:每期长度=211BYTES, 可存期数=16*1024/211=77, 可保证6年零5个月。
//EEPROM中需要保存的重要结构
//1、电子票根的当前笔地址结构
struct record_addr_struct
{
ulong record_addr; //电子票根当前地址
uchar record_sector; //记录当前扇区
uchar start_sector; //电子票根的起始扇区
uint crc; //电子票根的CRC
};
//共7字节
//2、单卷发票的当前卷地址结构
struct invoice_roll_addr_struct
{
ulong invoice_roll_addr; //发票卷当前地址
uint invoice_roll_sector; //记录当前扇区
uint crc; //CRC校验
};
//共8字节
//3、日记录的当前日地址结构
struct day_addr_struct
{
ulong day_addr; //日记录当前地址
uint day_sector; //日记录当前扇区
//uint day_num; //累加的天数
uint crc; //CRC校验
};
//4、申报数据的当前期地址结构
struct delare_addr_struct
{
ulong delare_addr; //申报数据当前地址
uint delare_num; //累加的期数
uint crc; //CRC校验
};
//共8字节
//5、部门结构
struct branch_struct
{
ulong quantity; //部门销售量
ulong money; //部门总收款额
ulong retreat_num; //部门退款项数
ulong retreat_money; //部门退款额
uchar name[20];//[11]; //部门名称
uchar tax_item; //税目编码
uchar lrc; //累加和校验
};
//共38个字节
//6、PLU结构51BYTE
struct plu_struct
{
uchar name[20]; //PLU名称
ulong price; //PLU单价
uchar unitname; //单位名称(克..等)
uchar bar_code[6]; //条形码
ulong quantity; //销售量
ulong money; //销售额
ulong retreat_num; //plu退款数量
ulong retreat_money; //plu退款额
ulong stocks; //库存量
uchar branch; //PLU所属部门
uchar tax_item; //税目编码
uint crc; //累加和校验
};
//共57个字节
//7、收款员报表结构
struct receiver_report_struct
{
ulong total_money; //总收款额
ulong total_trade; //总交易次数
ulong total_discount_money; //折扣总额
ulong total_service_money; //服务费总额
ulong total_decrease_money; //直接折扣总额
ulong open_cashbox_num; //非销售开钱箱次数
uchar time[6]; //上班时间
uchar receiver_no; //收款员号
ulong total_cash[8]; //现金额
ulong cash_num[8]; //现金销售项数
ulong not_sell_earning ; //非销售收入
ulong not_sell_defray ; //非销售支出
ulong retreat_money; //总退款额
ulong retreat_num; //总退货次数
uchar lrc; //累加和
};
//共112字节
//8、日报表结构
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -