📄 roll_frame.c
字号:
#include "roll_frame.h"
#include "control_db.h"
#include "cash_manage.h"
/*#include "message.h"*/
#include <malloc.h>
#include <math.h>
#include <time.h>
void clear_roll(ROLL *r);
extern int (*fp1)(NODE *node,char * key);
NODE *get_node_by_suffix(LINK *l,int suffix)
{
int i=1;
NODE *temp=l->rearptr->prior;
while(temp != NULL)
{
if(i == suffix)
{
return temp;
}
else
{
temp=temp->prior;
i++;
}
}
return NULL;
}
void print_node_frame(ROLL *r,int suffix,int color)
{
NODE *temp=NULL;
temp=get_node_by_suffix(r->link,suffix);
r->f->color=color;
mvwprintw(r->f->win,0,0,"%-7d%-12s%-28s%-6s%-6s%-8.2f%-6d%-8.2f",((UNS*)(temp->data))->num,
((UNS*)(temp->data))->bar_code,((UNS*)(temp->data))->commodity_name,((UNS*)(temp->data))->spec,
((UNS*)(temp->data))->unti,((UNS*)(temp->data))->sell_price,((UNS*)(temp->data))->total_count,
((UNS*)(temp->data))->total_pay);
r->f->draw(r->f);
}
/*挂单*/
FRAME * hang_and_change_link(ROLL *r,LINK *link,char *date,char *number)
{
if(link->count == 5)
{
messagebox(stdscr,7,19,44,12,PAUSE,"挂单的个数已有5个,不能再挂了");
return ;
}
HMSG h={NULL,"\0","\0"};
clear_roll(r);
h.link=r->link;
strcpy(h.date,date);
strcpy(h.number,number);
link->insert_front(link,&h,sizeof(HMSG));
memset(date,0,strlen(date));
memset(number,0,strlen(number));
FRAME *f=creat_frame(21,60,1,10,2);
f->draw(f);
mvwprintw(f->win,0,0,"挂单个数:%d",link->count);
wrefresh(f->win);
r->link=new_link();
return f;
}
/*取单*/
void print_one_page(ROLL *r)
{
int i=0,cur_x=5,cur_y=1;
r->current_place=1;
r->current_suffix=1;
mvwin(r->f->win,cur_x,cur_y);
print_node_frame(r,r->current_suffix,1);
if(r->link->count<r->height_and_length[0])
{
for(i=0;i<r->link->count-1;i++)
{
mvwin(r->f->win,cur_x+1+i,cur_y);
print_node_frame(r,r->current_suffix+i+1,2);
}
}
else
{
for(i=0;i<r->height_and_length[0]-2;i++)
{
mvwin(r->f->win,cur_x+1+i,cur_y);
print_node_frame(r,r->current_suffix+i+1,2);
}
}
}
void get_list_and_change_link(ROLL *r,LINK *link,FRAME *f,int index,char *date,char *number)
{
NODE *temp=link->get_node_by_index(link,index);
strcpy(date,((HMSG *)(temp->data))->date);
strcpy(number,((HMSG *)(temp->data))->number);
r->link=((HMSG *)(temp->data))->link;
link->del_node_by_index(link,index);
if(link->count)
{
mvwprintw(f->win,0,0,"挂单个数:%d",link->count);
wrefresh(f->win);
}
else
{
werase(f->win);
wrefresh(f->win);
f->free(&f);
}
mvprintw(1,45,"%s",number);
mvprintw(1,58,"时间:%s",date);
refresh();
print_one_page(r);
}
int GetInputString(ROLL *r)
{
int sign=0;
sign=r->i->input_char(r->i,1,1,1);
return sign;
}
void insert_to_roll(ROLL *r,GMSG *msg)
{
NODE *temp=subm_bar(r->link,msg->bar_code,msg->num);
int maxSize=r->link->len(r->link);
int cur_x=5,cur_y=1,i=0,node_index=0;
if(temp == NULL)
{
if(maxSize > 1)
{
if(maxSize<r->height_and_length[0])
{
print_node_frame(r,r->current_suffix,2);
r->current_suffix=maxSize;
r->current_place=maxSize;
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
}
else
{
r->current_suffix=maxSize;
r->current_place=r->height_and_length[0] - 1;
for (i=0;i<r->height_and_length[0]-1;i++)
{
mvwin(r->f->win,cur_x+i,cur_y);
print_node_frame(r,r->current_suffix - r->height_and_length[0] + 2 + i,2);
}
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
}
}
else
{
if(maxSize == 1)
{
r->current_suffix=1;
r->current_place=1;
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
}
}
}
else
{
node_index=(r->link)->get_index_by_key(r->link,((UNS *)(temp->data))->bar_code,(int (*)(void *,void *))fp1);
if(abs(r->current_suffix + r->height_and_length[0] - 1 -r->current_place-node_index )<r->height_and_length[0]-1)
{
if(r->current_suffix + r->height_and_length[0] - 1 -r->current_place-node_index>=0)
{
print_node_frame(r,r->current_suffix,2);
r->current_place+=(node_index-r->current_suffix);
r->current_suffix=node_index;
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
}
else
{
r->current_suffix=node_index;
r->current_place=r->height_and_length[0]-1;
for (i=0;i<r->height_and_length[0]-2;i++)
{
mvwin(r->f->win,cur_x+i,cur_y);
print_node_frame(r,r->current_suffix-r->current_place+1+i,2);
}
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
}
}
else
{
if(node_index - r->current_suffix >0)
{
r->current_suffix=node_index;
r->current_place=r->height_and_length[0]-1;
for (i=0;i<r->height_and_length[0]-2;i++)
{
mvwin(r->f->win,cur_x+i,cur_y);
print_node_frame(r,r->current_suffix-r->current_place+1+i,2);
}
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
}
else
{
r->current_suffix=node_index;
r->current_place=1;
for (i=0;i<r->height_and_length[0]-2;i++)
{
mvwin(r->f->win,cur_x+r->current_place+i,cur_y);
print_node_frame(r,r->current_suffix+i+1,2);
}
mvwin(r->f->win,cur_x,cur_y);
print_node_frame(r,r->current_suffix,1);
r->i->del_str(r->i);
}
}
}
}
void del_from_roll(ROLL *r,GMSG *msg)
{
NODE *temp=NULL;
int sign=0;
temp=r->link->get_node_by_index( r->link,r->current_suffix);
int leave_print_row=0,leave_node=0,i=0,cur_x=5,cur_y=1;
leave_print_row=r->height_and_length[0] - r->current_place;
leave_node=r->link->count - r->current_suffix;
/*将数据库中对应的此项数据的总数相应的扣去*/
updata_goods_from_link(r->link,msg->bar_code,msg->num);
if((((UNS *)(temp->data))->total_count) - (msg->num)>0)
{
((UNS *)(temp->data))->total_count-=msg->num;
print_node_frame(r,r->current_suffix,1);
}
else
{
if(r->link->count >= r->height_and_length[0])
{
if(leave_print_row <= leave_node)
{
r->link->del_node_by_index(r->link,r->current_suffix);
r->current_suffix--;
print_node_frame(r,r->current_suffix,1);
for(i=1;i<leave_print_row;i++)
{
mvwin(r->f->win,cur_x+r->current_place+i,cur_y);
print_node_frame(r,r->current_suffix+i,2);
}
}
else
{
r->link->del_node_by_index(r->link,r->current_suffix);
r->current_suffix--;
print_node_frame(r,r->current_suffix,1);
for(i=1;i<r->height_and_length[0] - leave_print_row;i++)
{
mvwin(r->f->win,cur_x+r->current_place-i-1,cur_y);
print_node_frame(r,r->current_suffix-i,2);
}
}
}
else
{
if (r->link->count == 1)
{
r->f->color=2;
r->f->draw(r->f);
r->f->clearout(r->f);
wrefresh(r->f->win);
r->current_suffix=0;
r->current_place=0;
sign=r->link->del_node_by_index(r->link,1);
}
else
{
if(r->current_place == r->link->count)
{
sign=r->link->del_node_by_index(r->link,r->current_suffix);
r->f->color=2;
r->f->draw(r->f);
r->f->clearout(r->f);
wrefresh(r->f->win);
r->current_place--;
r->current_suffix--;
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
}
else
{
sign=r->link->del_node_by_index(r->link,r->current_suffix);
print_node_frame(r,r->current_suffix,1);
for(i=1;i<leave_node;i++)
{
mvwin(r->f->win,cur_x+r->current_place+i-1,cur_y);
print_node_frame(r,r->current_suffix+i,2);
}
mvwin(r->f->win,cur_x+r->current_place+i-1,cur_y);
r->f->color=2;
r->f->draw(r->f);
r->f->clearout(r->f);
wrefresh(r->f->win);
}
}
}
}
}
void clear_roll(ROLL *r)
{
int i=0,cur_x=5,cur_y=1;
r->current_suffix=0;
r->current_place=0;
for(i=0;i<r->height_and_length[0]-1;i++)
{
mvwin(r->f->win,cur_x+r->current_place+i,cur_y);
r->f->color=2;
r->f->draw(r->f);
r->f->clearout(r->f);
}
}
void del_link(ROLL *r,SELL_LIST *list)
{
SELL_GOODS_LIST s;
memset(&s,0,sizeof(SELL_GOODS_LIST));
SELL_GOODS_LIST *sgl=&s;
int i=0;
NODE *temp=NULL;
clear_roll(r);
insert_sell_list(list);
sgl->sell_ID=list->sell_ID;
for (i=0;i<r->link->count ;i++ )
{
temp=r->link->get_node_by_index(r->link,i+1);
sgl->sell_list_id=get_sell_list_id();
strcpy(sgl->bar_code,((UNS *)(temp->data))->bar_code);
sgl->total_count=((UNS *)(temp->data))->total_count;
sgl->sell_price=((UNS *)(temp->data))->sell_price;
insert_sell_goods_list(sgl);
}
r->link->del_all_data(r->link);
}
void create_business_number_and_date(char *date,char *number)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -