📄 deal_data.c
字号:
{
//if(trade_info->invoice_type==RESCISSORY_INVOICE)
// record.invoice_no=trade_info->invoice_no;
//else
//2005.7.26
for(j=0;j<10;j++)record.invoice_code[j]=invoice_roll_info.invoice_code[j];
record.invoice_no=invoice_roll_info.invoice_curr_no;
if(trade_info->invoice_type==RETREAT_INVOICE) //退票的原票号码
record.valid_inv_no=trade_info->invoice_no;
}
else
record.invoice_no=0;
//2005.7.26
//record.disburse_choice=trade_info->pay_way;
//record.receiver_no=trade_info->receiver_no;
if(read_eeprom(RECEIVER_CHINESE_NAME+(trade_info->receiver_no-1)*10,10,buf))return(READ_EEPROM_FAIL);
if(!strlen(buf))
{
record.receiver_no[0]=(trade_info->receiver_no/10)|0x30;
record.receiver_no[1]=(trade_info->receiver_no%10)|0x30;
for(i=2;i<10;i++) record.receiver_no[i]=0x20;
}
else memcpy(record.receiver_no,buf,10);
//20058.14
//send_str(10,record.receiver_no);
//strcpy(record.disburse_unit,trade_info->customer_name);
// p=strlen(record.disburse_unit);
for(i=0;i<40;i++)
{
record.disburse_unit[i]=trade_info->customer_name[i];
if(record.disburse_unit[i]==0)record.disburse_unit[i]=0x20;
}//补空格
if(trade_info->invoice_type==RESCISSORY_INVOICE) //废票
{
record.item_num=0;
record.invoice_money=0;
}
else //正常票或退票
{
for(j=0;j<trade_info->menu_num;j++)
{
menu_no=j;
record.invoice_money+=menu[menu_no].money;
if(menu[menu_no].no==0) //没有输入PLU号
{
if(menu[menu_no].branch==0)
branch_no=DEFAULT_BRANCH;
else
branch_no=menu[menu_no].branch;
rlt=get_branch(&branch,branch_no-1);
if(rlt)
return(rlt);
//2005.7.26
item_index=get_tax_item_index(branch.tax_item);
//send_str(1,&item_index);
//record.item[item_index].no=branch_no;
if(is_trade==YES)
class_money[item_index]+=menu[menu_no].money;
//2005.8.11
record.item[j].money=menu[menu_no].money; //分别写入单价,数量,
record.item[j].num=menu[menu_no].quantity;
//2005.10.14
//record.item[j].price=menu[menu_no].price;
record.item[j].price=menu_price[menu_no];
//record.item[j].price=((menu[menu_no].money*100)/menu[menu_no].quantity);
//if(((((menu[menu_no].money*100)%menu[menu_no].quantity)*100)/menu[menu_no].quantity)>=50)record.item[j].price++;//4舍5入
record.item[j].tax_item=g_tax_catalog[item_index].tax_item;
//record.item[item_index].money+=menu[menu_no].money;
//#ifdef TRADE
//record.item[item_index].num+=menu[menu_no].quantity;
//#endif
//取经营项目名称而不是商品名称
if(is_trade==NO && g_tax_pin_pass==0)
{
sprintf(record.item[item_index].item_name,"税目%bu",branch.tax_item);
p=strlen(record.item[item_index].item_name);
for(i=p;i<20;i++)record.item[item_index].item_name[i]=0x20;//补空格
}
else
//2005.8.14
{
memcpy(record.item[j].item_name,branch.name,20);
p=strlen(record.item[j].item_name);
for(i=p;i<20;i++)record.item[j].item_name[i]=0x20;//补空格
//memcpy(record.item[item_index].item_name, //同一种税目只保留最后一商品名称
//g_tax_catalog[item_index].tax_chinese_name,20);
}
if(is_trade==YES)
{
//存盘
//部门报表更新
if(record.invoice_type==NORMAL_INVOICE)//正常票
{
branch.money+=menu[menu_no].money;
branch.quantity+=menu[menu_no].quantity;
}
else if(record.invoice_type==RETREAT_INVOICE)//退票
{
branch.retreat_money+=menu[menu_no].money;
branch.retreat_num+=menu[menu_no].quantity;
}
branch.lrc=lrcdata((uint)sizeof(branch)-1,1,&branch);
//存盘
if(write_eeprom(BRANCH_ADDR+(branch_no-1)*(uint)sizeof(branch),
(uint)sizeof(branch),&branch))
{
branch.lrc=lrcdata((uint)sizeof(branch)-1,1,&branch);
if(write_eeprom(BRANCH_ADDR+(branch_no-1)*(uint)sizeof(branch),
(uint)sizeof(branch),&branch))
return(WRITE_EEPROM_FAIL);
}
//2005.7.26
/*if(low_pwr==1)
{
branch.lrc=lrcdata((uint)sizeof(branch)-1,1,&branch);
if(read_eeprom(BRANCH_ADDR+(branch_no-1)*(uint)sizeof(branch),
(uint)sizeof(branch),buf))
return(READ_EEPROM_FAIL);
if(memcmp(&branch,buf,(uint)sizeof(branch))!=0)
{
if(write_eeprom(BRANCH_ADDR+(branch_no-1)*(uint)sizeof(branch),
(uint)sizeof(branch),&branch))
return(WRITE_EEPROM_FAIL);
}
}
*/
}
}
else //PLU
{
plu_no=menu[menu_no].no;
rlt=get_plu(&plu,plu_no-1);
if(rlt)
return(rlt);
item_index=get_tax_item_index(plu.tax_item);
//2005.8.11
//record.item[item_index].no=plu_no | 0x8000; //最高位置1表示为PLU编号
if(is_trade==YES)
class_money[item_index]+=menu[menu_no].money;
record.item[j].money=menu[menu_no].money;
//2005.10.14
//record.item[j].price=menu[menu_no].price;
record.item[j].price=menu_price[menu_no];
//record.item[j].price=((menu[menu_no].money*100)/menu[menu_no].quantity);
//if(((((menu[menu_no].money*100)%menu[menu_no].quantity)*100)/menu[menu_no].quantity)>=50)record.item[j].price++;//4舍5入
record.item[j].tax_item=g_tax_catalog[item_index].tax_item;
//record.item[item_index].money+=menu[menu_no].money;
// #ifdef TRADE
// record.item[item_index].num+=menu[menu_no].quantity;
// #endif
record.item[j].num=menu[menu_no].quantity;
//取经营项目名称而不是商品名称
//2005.8.14
if(is_trade==NO && g_tax_pin_pass==0)
{
sprintf(record.item[item_index].item_name,"税目%bu",branch.tax_item);
p=strlen(record.item[item_index].item_name);
for(i=p;i<20;i++)record.item[item_index].item_name[i]=0x20;
}
else
//2005.7.26
{
//2005.12.29
//if(trade_info->invoice_type==RETREAT_INVOICE) //退票的原票号码
// memcpy(record.item[j].item_name,trade_info->name[j],20);
// else
memcpy(record.item[j].item_name,plu.name,20);
p=strlen(record.item[j].item_name);
for(i=p;i<20;i++)record.item[j].item_name[i]=0x20;
}
//memcpy(record.item[item_index].item_name,
// g_tax_catalog[item_index].tax_chinese_name,20);
if(is_trade==YES)
{
//PLU更新
if(record.invoice_type==NORMAL_INVOICE)
{
plu.money+=menu[menu_no].money;
plu.quantity+=menu[menu_no].quantity;
if(plu.stocks>=menu[menu_no].quantity && g_stocks_opened)
plu.stocks-=menu[menu_no].quantity;
}
else if(record.invoice_type==RETREAT_INVOICE)
{
plu.retreat_money+=menu[menu_no].money;
plu.retreat_num+=menu[menu_no].quantity;
if(g_stocks_opened)
plu.stocks+=menu[menu_no].quantity;
}
plu.crc=crcxdata((uint)sizeof(plu)-2,&plu);
//plu.lrc=lrcdata((uint)sizeof(plu)-1,1,&plu);
if(write_sramb(PLU_START_ADDR+((ulong)plu_no-1)*(uint)sizeof(plu),
(uint)sizeof(plu),&plu))
return(WRITE_SRAM_FAIL);
//处理PLU对应的部门报表
if(is_trade==YES)
{
branch_no=plu.branch;
rlt=get_branch(&branch,branch_no-1);
if(rlt) return(rlt);
//部门报表更新
if(record.invoice_type==NORMAL_INVOICE)
{
branch.money+=menu[menu_no].money;
branch.quantity+=menu[menu_no].quantity;
}
else if(record.invoice_type==RETREAT_INVOICE)
{
branch.retreat_money+=menu[menu_no].money;
branch.retreat_num+=menu[menu_no].quantity;
}
branch.lrc=lrcdata((uint)sizeof(branch)-1,1,&branch);
//存盘
if(write_eeprom(BRANCH_ADDR+(branch_no-1)*(uint)sizeof(branch),
(uint)sizeof(branch),&branch))
{
branch.lrc=lrcdata((uint)sizeof(branch)-1,1,&branch);
if(write_eeprom(BRANCH_ADDR+(branch_no-1)*(uint)sizeof(branch),
(uint)sizeof(branch),&branch))
return(WRITE_EEPROM_FAIL);
}
/*if(low_pwr==1)
{
branch.lrc=lrcdata((uint)sizeof(branch)-1,1,&branch);
if(read_eeprom(BRANCH_ADDR+(branch_no-1)*(uint)sizeof(branch),
(uint)sizeof(branch),buf))
return(READ_EEPROM_FAIL);
if(memcmp(&branch,buf,(uint)sizeof(branch))!=0)
{
if(write_eeprom(BRANCH_ADDR+(branch_no-1)*(uint)sizeof(branch),
(uint)sizeof(branch),&branch))
return(WRITE_EEPROM_FAIL);
}
}
*/
}
}
}
}
/* if(local_retreat)//本机退票//2005.12.29
{
local_retreat = 0;
for(j=0;j<trade_info->menu_num;j++)
{
memcpy(record.item[j].item_name,trade_info->name[j],20);
//send_str(20,trade_info->name[j]);
}
}
*/
//考虑移动
//2005.7.26
record.item_num=trade_info->menu_num;
/* record.item_num=0;
for(j=0;j<CATALOG_NUM;j++)
{
if(record.item[j].money>0)
{
if(j!=record.item_num)
memcpy(&record.item[record.item_num],&record.item[j],
(uint)sizeof(record.item[j]));
record.item_num++;
}
}
*/
}
if(is_trade==YES)
{
//计算防伪码
rlt=calc_fwm(&record,&class_money);
//send_char(rlt);
if(rlt)
{
p=rlt;
// if((rlt==CALC_FWM_FAIL))//从卡中找回本票(low_pwr==1)&&
//{
rlt=SelFile_id(SAM_CARD,0xEF03);
if(rlt) return(rlt);
rlt=ReadRec(SAM_CARD,FIXED_FILE,1,76,buf);
if(rlt) return(rlt);
//send_str(4,&buf[64]);
if(record.invoice_no==ToLong(&buf[64],4))
for(j=0;j<8;j++){record.anti_forge_code[j]=buf[68+j];}
else {return p;}
// }
// else return(rlt);
}
//修改是否已录入了一卷新发票的标志
tmp[0]=0;
if(read_eeprom(NEW_INVO_ROLL,2,&tmp[0]))
return(READ_EEPROM_FAIL);
//send_char(tmp[0]);
if(tmp[0]==1)
{
tmp[0]=0;
if(write_eeprom(NEW_INVO_ROLL,1,tmp))
return(WRITE_EEPROM_FAIL);
tmp[0]=0;
if(read_eeprom(NEW_INVO_ROLL,2,&tmp))
return(READ_EEPROM_FAIL);
if(tmp[0]==1)
{
tmp[0]=0;
if(write_eeprom(NEW_INVO_ROLL,1,tmp))
return(WRITE_EEPROM_FAIL);
}
}
//return(WRITE_EEPROM_FAIL);
//send_str((uint)sizeof(record),&record);
rlt=save_record_data(&record);//保存明细//掉电丢明细
if(rlt)
{
//send_char(1);
//send_char(rlt);
return(rlt);
}
//send_char(1);
//send_char(record.item_num);
/*testtiaoshu=0;
while(1)//测试明细压力时用
{
//保存笔记录
rlt=save_record_data(&record);//保存明细
if(rlt)
{
return(rlt);
}
delayms(10000);
if(get_key()==VOID)break;
}
*/
}
else
memcpy(record.anti_forge_code,"00000000",8);
//2005.7.26
if(read_rtc(tmp))return(READ_CLOCK_FAIL);
if(is_trade==YES)
{
//读EEPROM中的发票卷暂存信息
rlt=is_invoice_roll_over(&invoice_roll);
if(rlt && rlt!=INVO_ROLL_END)
{
return(rlt);
}
if(invoice_roll.issue_start_date[3]==0) //第一次开票
{
//2005.7.26
memcpy(&invoice_roll.issue_start_date[1],tmp,3);
//memcpy(&invoice_roll.issue_start_date[1],record.date,3);
invoice_roll.issue_start_date[0]=0x20;
memcpy(invoice_roll.invoice_code,invoice_roll_info.invoice_code,
(uint)sizeof(invoice_roll.invoice_code));
invoice_roll.invoice_start_no=invoice_roll_info.invoice_start_no;
invoice_roll.invoice_end_no=invoice_roll_info.invoice_end_no;
}
if(day.date[2]==0) //该日第一次开票
{
//2005.7.26
memcpy(day.date,tmp,3);
//memcpy(day.date,record.date,3);
for(j=0;j<CATALOG_NUM;j++)
day.tax_item_code[j]=g_tax_catalog[j].tax_item;
}
//发票卷开票截止日期
//2005.7.26
memcpy(&invoice_roll.issue_end_date[1],tmp,3);
//memcpy(&invoice_roll.issue_end_date[1],record.date,3);
invoice_roll.issue_end_date[0]=0x20;
switch(record.invoice_type)
{
case NORMAL_INVOICE:
invoice_roll.normal_num++;
invoice_roll.trade_money+=record.invoice_money;
day.invoice_num++;
for(j=0;j<CATALOG_NUM;j++)
day.sale_money[j]+=class_money[j];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -