📄 proscenium.c
字号:
new_product = create_default_color_window(9,32,11,20,1);
if(ch == KEY_F(2))
mvwprintw(new_product,0,13,"新增明细");
if(ch == KEY_F(3))
mvwprintw(new_product,0,13,"删除明细");
mvwprintw(new_product,2,2,"商品条形码:");
mvwprintw(new_product,4,8,"数量:");
wrefresh(new_product);
delwin(new_product);
num = create_no_border_color_window(1,12,13,34,4);
mvwprintw(num,0,0,((for_sale *)(p->node_data))->bar_code);
wrefresh(num);
amount = create_no_border_color_window(1,12,15,34,4);
wrefresh(amount);
keypad(amount,true);
while(ch1 = wgetch(amount))
{
if(ch1 == 10)
break;
get_info(amount,str,ch1,2,8);
}
nums = atoi(str);
if(ch == KEY_F(2))
{
delwin(num);
delwin(amount);
nums = (((for_sale *)(p->node_data))->count) + nums;
if(nums > ((for_sale *)(p->node_data))->storage)
{
message("数量太大!",8,30);
scr_restore("temp1.scr");
return 0;
}
else
{
((for_sale *)(p->node_data))->count = nums;
((for_sale *)(p->node_data))->sum = ((for_sale *)(p->node_data))->sale_price * ((for_sale *)(p->node_data))->discount * ((for_sale *)(p->node_data))->count;
scr_restore("temp1.scr");
return 2;
}
}
else if(ch == KEY_F(3))
{
if(nums > ((for_sale *)(p->node_data))->count)
message("数量太大!",8,30);
else
{
if (style == 1)
{
NODE *q;
i = is_new(backlist,((for_sale *)(p->node_data))->bar_code);
if(i == 0)
{
for_sale *temp1;
temp1 = (for_sale *)malloc(sizeof(for_sale));
memset(temp1,0,sizeof(temp1));
copy_list_node(linklist,temp1,temp);
insert_rear_link(backlist,temp1);
q = get_node_by_index(backlist,backlist->count);
((for_sale *)(q->node_data))->count = ((-1)*nums);
}
else
{
q = get_node_by_index(backlist,i);
((for_sale *)(q->node_data))->count = ((-1)*nums) + ((for_sale *)(q->node_data))->count;
}
((for_sale *)(q->node_data))->sum = ((for_sale *)(q->node_data))->sale_price * ((for_sale *)(q->node_data))->discount * ((for_sale *)(q->node_data))->count;
}
nums = (((for_sale *)(p->node_data))->count) - nums;
if(nums == 0)
{
free_at(linklist,temp);
delwin(num);
delwin(amount);
scr_restore("temp1.scr");
return 1;
}
else
{
((for_sale *)(p->node_data))->count = nums;
((for_sale *)(p->node_data))->sum = ((for_sale *)(p->node_data))->sale_price * ((for_sale *)(p->node_data))->discount * ((for_sale *)(p->node_data))->count;
delwin(num);
delwin(amount);
scr_restore("temp1.scr");
return 1;
}
}
}
}
int copy_list_node(LINKLIST *linklist,for_sale *temp,int i)
{
NODE *p;
p = get_node_by_index(linklist,i);
strcpy(temp->bar_code,((for_sale *)(p->node_data))->bar_code);
strcpy(temp->name,((for_sale *)(p->node_data))->name);
strcpy(temp->unit,((for_sale *)(p->node_data))->unit);
strcpy(temp->spec,((for_sale *)(p->node_data))->spec);
temp->sale_price = ((for_sale *)(p->node_data))->sale_price;
temp->count = ((for_sale *)(p->node_data))->count;
temp->sum = ((for_sale *)(p->node_data))->sum;
temp->discount = ((for_sale *)(p->node_data))->discount;
temp->storage = ((for_sale *)(p->node_data))->storage;
}
void print_all(WINDOW *win,LINKLIST *linklist,int *cur,int *offset)
{
int temp = *cur,offtmp = *offset;
werase(win);
wrefresh(win);
while(temp <= linklist->count && offtmp <= 15)
{
print_info(win,linklist,temp,offtmp,0);
temp++;
offtmp++;
}
temp--;
offtmp--;
*cur = temp;
*offset = offtmp;
print_info(win,linklist,temp,offtmp,1);
}
int sale_optionf4(LINKLIST *linklist,LINKLIST *backlist,sale_record *temp)
{
scr_dump("temp1.scr");
int ch = 0,result = 0;
float money = 0;
float back_money = 0;
char str[10] = {0};
WINDOW *check = NULL;
WINDOW *vir = NULL,*real = NULL,*change = NULL;
check = create_default_color_window(12,35,8,20,1);
if(temp->sale_state == 1)
mvwprintw(check,0,15,"退货");
else
mvwprintw(check,0,15,"收银");
mvwprintw(check,2,5,"应收:");
mvwprintw(check,4,5,"实收:");
mvwprintw(check,6,5,"找零:");
wrefresh(check);
delwin(check);
vir = create_no_border_color_window(1,15,10,30,4);
real = create_no_border_color_window(1,15,12,30,4);
change = create_no_border_color_window(1,15,14,30,4);
wrefresh(real);
wrefresh(vir);
wrefresh(change);
if(temp->sale_state == 1)
{
back_money = get_vir_money(backlist);
mvwprintw(vir,0,0,"%.2f",back_money);
wrefresh(vir);
mvwprintw(real,0,0,"%.2f",0.00);
wrefresh(real);
mvwprintw(change,0,0,"%.2f",back_money*(-1));
wrefresh(change);
}
else
{
temp->sale_money = get_vir_money(linklist);
mvwprintw(vir,0,0,"%.2f",temp->sale_money);
wrefresh(vir);
}
wrefresh(vir);
yes_or_no(16,28,0,10);
if(temp->sale_state != 1)
{
wmove(real,0,0);
keypad(real,true);
while(ch = wgetch(real))
{
if(ch == 10)
{
if(str[strlen(str)-1] == '.')
{
message("输入错误!例:14.50",10,30);
}
else
{
money = atof(str);
if(money < temp->sale_money)
{
message("钱不够!",10,30);
}
else
{
temp->real_sum = money;
temp->change = money - temp->sale_money;
mvwprintw(change,0,0,"%.2f",temp->change);
wrefresh(change);
break;
}
}
memset(str,0,sizeof(str));
mvwprintw(real,0,0," ");
wmove(real,0,0);
}
get_info(real,str,ch,4,9);
}
}
result = yes_or_no(16,28,1,10);
if(result == 1)
{
temp->give_sum = temp->real_sum;
if(temp->sale_state == 1)
{
update_sale_count(backlist,1);//更新库存数
temp->change = temp->change - back_money;
temp->sale_money = temp->sale_money + back_money;
rtrim(temp->sale_id);
result = update_sale(temp->sale_money,temp->change,temp->sale_state,temp->sale_id);
insert_all_detail(backlist,temp);// 保存到明细表
//update 销售表
}
else
{
update_sale_count(linklist,1);//更新库存数
insert_sale(temp);//保存到销售表
insert_all_detail(linklist,temp);// 保存到明细表
}
}
else
{
if(temp->sale_state != 1)
{
temp->real_sum = 0;
temp->change = 0;
temp->sale_money = 0;
}
}
delwin(vir);
delwin(real);
delwin(change);
scr_restore("temp1.scr");
if(result == 1)
{
return 4;
}
return 0;
}
int sale_optionf5(LINKLIST *linklist,LINKLIST *sale_temp,sale_record *temp)
{
int result = 0;
scr_dump("temp1.scr");
if (sale_temp->count == 5)
{
message("挂单数目不可超过5!",10,25);
return 0;
}
WINDOW *check = NULL;
check = create_default_color_window(8,35,8,20,1);
mvwprintw(check,0,13,"是否挂单");
wrefresh(check);
delwin(check);
if(result = yes_or_no(10,28,1,10))
{
char *str;
str = (char *)malloc(20*sizeof(char));
memset(str,0,20*sizeof(char));
strcpy(str,temp->sale_id);
temp->sale_state = -1;//挂单标志
update_sale_count(linklist,1);//更新库存数
insert_sale(temp);//保存到销售表
insert_all_detail(linklist,temp);// 保存到明细表
insert_sale_temp(temp->sale_id,temp->staff_id);
insert_rear_link(sale_temp,str);
scr_restore("temp1.scr");
return 4;
}
else
scr_restore("temp1.scr");
return 0;
}
int sale_optionf6(LINKLIST *linklist,LINKLIST *sale_temp,sale_record *temp)
{
scr_dump("temp1.scr");
int result = 0;
char str[19] = {0};
if(linklist->count > 0||sale_temp->count == 0)
return 0;
if(result = list_for_f6_f7(sale_temp,str,0))
{
get_detail_bar_code(linklist,str);
update_sale_count(linklist,0);
del_sale_temp(str);
memset(temp,0,sizeof(sale_record));
strcpy(temp->sale_id,str);
memcpy(temp->date,str,14);
memcpy(temp->trans_id,str+14,4);
scr_restore("temp1.scr");
return 6;
}
scr_restore("temp1.scr");
return 0;
}
int sale_optionf7(LINKLIST *linklist,LINKLIST *sale_temp,sale_record *temp)
{
if(sale_temp->count == 0 &&linklist->count == 0)
return 0;
scr_dump("temp1.scr");
int result = 0;
if(linklist->count > 0)
{
WINDOW *check = NULL;
check = create_default_color_window(8,35,8,20,1);
mvwprintw(check,0,10,"是否撤销此单");
wrefresh(check);
delwin(check);
if(result = yes_or_no(10,28,1,10))
{
if(temp->sale_state == -1)//判断此单是否是挂了再取出的
{
update_sale_count(linklist,0);
del_sale_temp(temp->sale_id);
}
scr_restore("temp1.scr");
return 5;
}
}
else
{
char str[19] = {0};
if(result = list_for_f6_f7(sale_temp,str,1))
{
//加个取单的操作
get_detail_bar_code(linklist,str);
update_sale_count(linklist,0);
del_sale_temp(str);
scr_restore("temp1.scr");
return 5;
}
}
scr_restore("temp1.scr");
return 0;
}
int sale_optionf8(LINKLIST *linklist,LINKLIST *backlist,sale_record *temp)
{
int result = 0;
char sale_id[21] = {0};
char user[7] = {0};
if(result = back_login(user))
{
if(result = back_get_id(linklist,sale_id))
{
memset(temp,0,sizeof(sale_record));
get_sale(temp,sale_id);
if(temp->sale_state == 1)
{
message("此单已经做过退货处理!",8,20);
memset(temp,0,sizeof(sale_record));
return 4;
}
get_detail_bar_code(linklist,sale_id);
temp->sale_state = 1;
back_manager(user,linklist,backlist,temp);
return 4;
}
}
return 0;
}
int back_manager(char *user,LINKLIST *linklist,LINKLIST *backlist,sale_record *temp)
{
back_body(user,temp);
WINDOW *info = NULL;
int result = 0;
int ch = 0,flag = 0,i = 0,change = 0,offset = 0,limit = 15;
int *cur = &flag,*offtmp = &offset;
info = newwin(15,78,7,1);
wbkgd(info,COLOR_PAIR(2));
print_all(info,linklist,cur,offtmp);
wrefresh(info);
keypad(info,true);
while(1)
{
ch = wgetch(info);
if(ch == KEY_DOWN||ch == KEY_UP)
{
if (linklist->count == 0)
{
continue;
}
change = *cur;
print_info(info,linklist,flag,offset,0);
KEY_UP_DOWN(linklist->count,ch,cur);
change = *cur - change;
if(display_control(cur,offtmp,change,limit))
{
print_all(info,linklist,cur,offtmp);
if(ch == KEY_UP)
{
print_info(info,linklist,flag,offset,0);
*cur = (*cur)-limit+1;
*offtmp = 1;
print_info(info,linklist,flag,offset,1);
}
}
else
print_info(info,linklist,flag,offset,1);
}
else if (ch == KEY_F(3)&& linklist->count > 0)
{
result = option_f2f3(linklist,backlist,cur,ch,1);
if(result == 1)
{
if(linklist->count == 0)
{
*cur = 0;
*offtmp = 0;
}
else
{
*cur = (*cur)-(*offtmp)+1;
*offtmp = 1;
}
print_all(info,linklist,cur,offtmp);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -