📄 sellfunction.c
字号:
while(buf != NULL)
{
if(!Save_Sell_Detail(System_Time,SELL_NO,buf->bar_code,buf->mer_amount,buf->sell_price,SELL_DETAIL_NO))
{
save_sell_detail_state = 0;
}
sell_detail_no = atoi(SELL_DETAIL_NO);
sell_detail_no++;
sprintf(SELL_DETAIL_NO,"%04d",sell_detail_no);
buf = buf->next;
}
if(1 == save_sell_detail_state)
{
ShowMessage(" 保存销售明细成功");
touchwin(sell_main_win);
wrefresh(sell_main_win);
}
else
{
ShowMessage(" 保存销售明细失败...... ");
touchwin(sell_main_win);
wrefresh(sell_main_win);
}
//把销售出去的商品所对应的商品库存去掉
//修改数据库中的库存
buf = head->next;
while(buf != NULL)
{
if(!Alter_Mer_Stock(buf->bar_code,buf->mer_amount))
{
alter_state = 0;
}
buf = buf->next;
}
if(0 == alter_state)
{
ShowMessage(" 更新商品库存失败......");
touchwin(sell_main_win);
wrefresh(sell_main_win);
}
else
{
ShowMessage(" 更新商品库存成功");
touchwin(sell_main_win);
wrefresh(sell_main_win);
}
//删除链表
FreeList(head);
head=p1=p2;
p1->next = NULL;
delwin(get_money_win);
wclear(sellinfo_win);
touchwin(sell_main_win);
wrefresh(sell_main_win);
business_no = atoi(BUSINESS_NO);
business_no++;
sprintf(BUSINESS_NO,"%04d",business_no);
SELL_STATE = 0 ;//销售状态置为0,说明都已经结账了
Cashier();
}
/*============撤单==========*/
void CancelOrder()
{
//判断有没有数据,如果没有的话,不可以撤单
if(head->next == NULL)
{
ShowMessage(" 没有数据,不允许撤单");
touchwin(sell_main_win);
wrefresh(sell_main_win);
return;
}
struct Sell* buf;
char ch;
WINDOW *cancel_order_win = newwin(8,30,8,25);
wbkgd(cancel_order_win,COLOR_PAIR(2));
box(cancel_order_win,0,0);
mvwprintw(cancel_order_win,0,12,"撤单");
mvwprintw(cancel_order_win,2,8,"确认要撤单吗?");
wrefresh(cancel_order_win);
WINDOW *ok_win = subwin(cancel_order_win,3,10,12,27);
wbkgd(ok_win,COLOR_PAIR(3));
box(ok_win,0,0);
mvwprintw(ok_win,1,1," 确定 ");
touchwin(cancel_order_win);
wrefresh(cancel_order_win);
wrefresh(ok_win);
WINDOW *cancel_win = subwin(cancel_order_win,3,10,12,43);
wbkgd(cancel_win,COLOR_PAIR(3));
box(cancel_win,0,0);
mvwprintw(cancel_win,1,1," 取消 ");
touchwin(cancel_order_win);
wrefresh(cancel_order_win);
wrefresh(cancel_win);
do
{
wattron(ok_win,A_REVERSE);
mvwprintw(ok_win,1,1," 确定 ");
ch = mvwgetch(ok_win,1,8);
wattroff(ok_win,A_REVERSE);
wrefresh(ok_win);
//当用户输入回车
if(ch == '\n')
{
//删除链表
delwin(cancel_order_win);
FreeList(head);
head=p1=p2;
p1->next = NULL;
wclear(sellinfo_win);
Cashier();
}
else
{
mvwprintw(ok_win,1,1," 确定 ");
wrefresh(ok_win);
wattron(cancel_win,A_REVERSE);
mvwprintw(cancel_win,1,1," 取消 ");
ch = mvwgetch(cancel_win,1,8);
wattroff(cancel_win,A_REVERSE);
wrefresh(cancel_win);
if(ch == '\n')
{
//用户不要撤单,返回销售界面
break;
}
else
{
mvwprintw(cancel_win,1,1," 取消 ");
wrefresh(cancel_win);
continue;
}
}
}while(1);
delwin(cancel_order_win);
touchwin(sellinfo_win);
wrefresh(sellinfo_win);
}
/*===================挂单=========================*/
void Hang_List()
{
//判断有没有数据,如果没有的话,不可以挂单
if(head->next == NULL)
{
ShowMessage(" 没有数据,不允许挂单");
touchwin(sell_main_win);
wrefresh(sell_main_win);
return;
}
if(1 == Hang_List_State)
{
ShowMessage(" 对不起,只允许挂一单");
touchwin(sell_main_win);
wrefresh(sell_main_win);
return;
}
struct Sell *buf,*tem;
char ch;
WINDOW *hang_list_win = newwin(8,30,8,25);
wbkgd(hang_list_win,COLOR_PAIR(2));
box(hang_list_win,0,0);
mvwprintw(hang_list_win,0,12,"挂单");
mvwprintw(hang_list_win,2,8,"确认要挂单吗?");
wrefresh(hang_list_win);
WINDOW *ok_win = subwin(hang_list_win,3,10,12,27);
wbkgd(ok_win,COLOR_PAIR(3));
box(ok_win,0,0);
mvwprintw(ok_win,1,1," 确定 ");
touchwin(hang_list_win);
wrefresh(hang_list_win);
wrefresh(ok_win);
WINDOW *cancel_win = subwin(hang_list_win,3,10,12,43);
wbkgd(cancel_win,COLOR_PAIR(3));
box(cancel_win,0,0);
mvwprintw(cancel_win,1,1," 取消 ");
touchwin(hang_list_win);
wrefresh(hang_list_win);
wrefresh(cancel_win);
do
{
wattron(ok_win,A_REVERSE);
mvwprintw(ok_win,1,1," 确定 ");
ch = mvwgetch(ok_win,1,8);
wattroff(ok_win,A_REVERSE);
wrefresh(ok_win);
//当用户输入回车
if(ch == '\n')
{
//初始化要保存挂单信息的链表
hang_list = head;
ShowMessage(" 挂单成功");
delwin(hang_list_win);
wclear(sellinfo_win);
touchwin(sell_main_win);
wrefresh(sell_main_win);
touchwin(sellinfo_win);
wrefresh(sellinfo_win);
//Hang_List_State; 挂单状态,1为有挂单,0为没有挂单
Hang_List_State = 1;
Cashier();
}
else
{
mvwprintw(ok_win,1,1," 确定 ");
wrefresh(ok_win);
wattron(cancel_win,A_REVERSE);
mvwprintw(cancel_win,1,1," 取消 ");
ch = mvwgetch(cancel_win,1,8);
wattroff(cancel_win,A_REVERSE);
wrefresh(cancel_win);
if(ch == '\n')
{
//用户不要撤单,返回销售界面
break;
}
else
{
mvwprintw(cancel_win,1,1," 取消 ");
wrefresh(cancel_win);
continue;
}
}
}while(1);
delwin(hang_list_win);
touchwin(sellinfo_win);
wrefresh(sellinfo_win);
}
/*====================取单========================*/
void Take_List()
{
if(head->next != NULL)
{
ShowMessage(" 有销售单没有结账,不允许取单");
touchwin(sell_main_win);
wrefresh(sell_main_win);
return;
}
//判断是否有挂单
if(Hang_List_State != 1)
{
ShowMessage(" 对不起,您没有挂单,不允许取单");
touchwin(sell_main_win);
wrefresh(sell_main_win);
return;
}
struct Sell* buf;
char ch;
int i;
i=1;
WINDOW *take_list_win = newwin(8,30,8,25);
wbkgd(take_list_win,COLOR_PAIR(2));
box(take_list_win,0,0);
mvwprintw(take_list_win,0,12,"取单");
mvwprintw(take_list_win,2,8,"确认要取单吗?");
wrefresh(take_list_win);
WINDOW *ok_win = subwin(take_list_win,3,10,12,27);
wbkgd(ok_win,COLOR_PAIR(3));
box(ok_win,0,0);
mvwprintw(ok_win,1,1," 确定 ");
touchwin(take_list_win);
wrefresh(take_list_win);
wrefresh(ok_win);
WINDOW *cancel_win = subwin(take_list_win,3,10,12,43);
wbkgd(cancel_win,COLOR_PAIR(3));
box(cancel_win,0,0);
mvwprintw(cancel_win,1,1," 取消 ");
touchwin(take_list_win);
wrefresh(take_list_win);
wrefresh(cancel_win);
do
{
wattron(ok_win,A_REVERSE);
mvwprintw(ok_win,1,1," 确定 ");
ch = mvwgetch(ok_win,1,8);
wattroff(ok_win,A_REVERSE);
wrefresh(ok_win);
//当用户输入回车
if(ch == '\n')
{
//进行取单操作
//遍历保存挂单链表,并打印
wclear(sellinfo_win);
touchwin(sell_main_win);
wrefresh(sellinfo_win);
head = hang_list;
PrintSellInfo();
//Hang_List_State; 挂单状态,1为有挂单,0为没有挂单
Hang_List_State = 0;
delwin(take_list_win);
return;
}
else
{
mvwprintw(ok_win,1,1," 确定 ");
wrefresh(ok_win);
wattron(cancel_win,A_REVERSE);
mvwprintw(cancel_win,1,1," 取消 ");
ch = mvwgetch(cancel_win,1,8);
wattroff(cancel_win,A_REVERSE);
wrefresh(cancel_win);
if(ch == '\n')
{
//用户不要撤单,返回销售界面
break;
}
else
{
mvwprintw(cancel_win,1,1," 取消 ");
wrefresh(cancel_win);
continue;
}
}
}while(1);
delwin(take_list_win);
touchwin(sellinfo_win);
wrefresh(sellinfo_win);
}
/*=====================退货=======================*/
void Good_Return()
{
if(head->next != NULL)
{
ShowMessage(" 有销售单没有结账,不允许退货");
touchwin(sell_main_win);
wrefresh(sell_main_win);
return;
}
char sell_no[20];
char bar_code[20];
char mer_amount[20];
int amount;
int buf;
char SELL_DETAIL_NO[20];
char ch;
int i,temp,sell_detail_no;
temp = 0;
WINDOW *good_return_win = newwin(8,35,8,22);
WINDOW *sell_no_win = subwin(good_return_win,1,20,10,33);
WINDOW *bar_code_win = subwin(good_return_win,1,20,12,33);
WINDOW *mer_amount_win = subwin(good_return_win,1,20,14,33);
wbkgd(good_return_win,COLOR_PAIR(2));
wbkgd(sell_no_win,COLOR_PAIR(10));
wbkgd(bar_code_win,COLOR_PAIR(10));
wbkgd(mer_amount_win,COLOR_PAIR(10));
box(good_return_win,0,0);
mvwprintw(good_return_win,0,17,"退货");
mvwprintw(good_return_win,2,2,"销售单号:");
mvwprintw(good_return_win,4,4,"条形码:");
mvwprintw(good_return_win,6,6,"数量:");
wrefresh(good_return_win);
//要求输入销售单号
do
{
memset(sell_no,0,sizeof(sell_no));
mvwgetnstr(sell_no_win,0,0,sell_no,20);
for(i=0;i<strlen(sell_no);i++)
{
if(isdigit(sell_no[i]))
{
continue;
}
temp = 1;
ShowMessage(" 销售单号只允许输入数字");
touchwin(sell_main_win);
wrefresh(sell_main_win);
touchwin(good_return_win);
wrefresh(good_return_win);
wclrtoeol(sell_no_win);
break;
}
if(1 == temp)
{
temp = 0;
continue;
}
if(strlen(sell_no) != 18)
{
ShowMessage(" 销售单号必须位18位数字");
touchwin(sell_main_win);
wrefresh(sell_main_win);
touchwin(good_return_win);
wrefresh(good_return_win);
wclrtoeol(sell_no_win);
continue;
}
//判断销售单号是否存在
if(!Is_Sell_No_Exist(sell_no))
{
ShowMessage(" 您输入的销售单号不存在");
touchwin(sell_main_win);
wrefresh(sell_main_win);
touchwin(good_return_win);
wrefresh(good_return_win);
wclrtoeol(sell_no_win);
continue;
}
break;
}while(1);
//输入商品条形码
do
{
memset(bar_code,0,sizeof(bar_code));
mvwgetnstr(bar_code_win,0,0,bar_code,20);
//判断输入的条形码在但前销售单号中存在不存在
if(!Is_Mer_In_Sell_List(sell_no,bar_code,&buf))
{
ShowMessage(" 您输入条形码不存在销售单中");
touchwin(sell_main_win);
wrefresh(sell_main_win);
touchwin(good_return_win);
wrefresh(good_return_win);
wclrtoeol(bar_code_win);
continue;
}
break;
}while(1);
//输入数量
do
{
memset(mer_amount,0,sizeof(mer_amount));
mvwgetnstr(mer_amount_win,0,0,mer_amount,20);
for(i=0;i<strlen(mer_amount);i++)
{
if(isdigit(mer_amount[i]))
{
continue;
}
temp = 1;
ShowMessage(" 销售单号只允许输入数字");
touchwin(sell_main_win);
wrefresh(sell_main_win);
touchwin(good_return_win);
wrefresh(good_return_win);
wclrtoeol(mer_amount_win);
break;
}
if(1 == temp)
{
temp = 0;
continue;
}
amount = atoi(mer_amount);
if(amount > buf)
{
ShowMessage(" 你输入的商品数量太大了");
touchwin(sell_main_win);
wrefresh(sell_main_win);
touchwin(good_return_win);
wrefresh(good_return_win);
wclrtoeol(mer_amount_win);
continue;
}
break;
}while(1);
/*数据输入并验证过了后,对2张表修改,商品表中的库存已经
明细表中的销售数量,销售明细表中生成一个数量位负数的单
*/
//退货商品的后面4个识别位已9001开始
strncpy(SELL_DETAIL_NO,"9001",strlen("9001"));
sell_detail_no = atoi(SELL_DETAIL_NO);
sprintf(SELL_DETAIL_NO,"%04d",sell_detail_no);
//通过这个语句查询商品价格
if(SearchBarCode(bar_code,MER_NAME,MER_UNIT,MER_SPEC,&MER_PRICE,&MER_STOCK))
{
;
}
//Alter_Mer_Stock--修改库存,Save_Sell_Detail
if(Alter_Mer_Stock(bar_code,-amount) && Save_Sell_Detail(System_Time,sell_no,bar_code,-amount,MER_PRICE,SELL_DETAIL_NO))
{
ShowMessage(" 退货成功");
touchwin(good_return_win);
wrefresh(good_return_win);
}
else
{
ShowMessage(" 退货失败");
touchwin(good_return_win);
wrefresh(good_return_win);
}
//销售号的后4位+1
sell_detail_no = atoi(SELL_DETAIL_NO);
sell_detail_no++;
sprintf(SELL_DETAIL_NO,"%04d",sell_detail_no);
delwin(good_return_win);
touchwin(sell_main_win);
wrefresh(sell_main_win);
touchwin(sellinfo_win);
wrefresh(sellinfo_win);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -