📄 possale.c
字号:
#include "posSale.h"
#include <stdlib.h>
#include "pub.h"
#include "posOracle.h"
int checkout()
{
WINDOW * winmain,*winmoney,*winmoneypay,*winmoneyreturn,*winsure,*wincancle;
float money=0.0f,moneyreturn,moneypay;
char str[10],buf[40]={0};
int i=0,num=3,flag=0,ch,barNum;
BARINFO barInfo;
NODE * node;
memset(str,0,sizeof(str));
for(i=1;i<=barInfoList.count;i++)
{
node=barInfoList.get_node_by_index(&barInfoList,i);
if (node!=NULL)
{
barInfo=(barinfo *)node->data;
}
money+=barInfo->salenum*barInfo->sale_price*barInfo->discount;
barNum=GetProductNum(barInfo->bar_code);
if(barInfo->salenum>barNum)
{
char tmp[100]={0};
sprintf(tmp,"商品%s数量超过了库存还剩库存为%d",barInfo->product_name,barNum);
MessageBox(tmp,0);
return 1;
}
}
saleInfo->money=money;
scr_dump("scr_save.scr2");
winmain=newwin(10,40,8,20);
box(winmain,0,0);
if(has_colors())
{
init_pair(9,COLOR_BLACK,COLOR_MAGENTA);
init_pair(10,COLOR_BLACK,COLOR_WHITE);
}
wbkgd(winmain,COLOR_PAIR(9));
mvwprintw(winmain,0,18,"收银");
mvwprintw(winmain,3,5,"实收款:");
/*mvwprintw(winmain,5,5,"找零:");*/
wrefresh(winmain);
winmoney=newwin(1,30,9,25);
wbkgd(winmoney,COLOR_PAIR(10));
mvwprintw(winmoney,0,2,"应付款:%4.2f",money);
wrefresh(winmoney);
winsure=newwin(1,6,15,25);
wbkgd(winsure,COLOR_PAIR(10));
mvwprintw(winsure,0,1,"确定");
wrefresh(winsure);
wincancle=newwin(1,6,15,48);
wbkgd(wincancle,COLOR_PAIR(10));
mvwprintw(wincancle,0,1,"取消");
wrefresh(wincancle);
/*winmoneyreturn=newwin(1,15,13,36);
wbkgd(winmoneyreturn,COLOR_PAIR(10));
wrefresh(winmoneyreturn);*/
winmoneypay=newwin(1,15,11,36);
wbkgd(winmoneypay,COLOR_PAIR(10));
wrefresh(winmoneypay);
while(1)
{
ch=getch();
if(ch==KEY_DOWN||ch==KEY_UP||ch==KEY_LEFT||ch==KEY_RIGHT)
{
/*makelog("debug.log","left up down right");*/
flag=buttonCtl(winsure,wincancle,num,ch,flag);
freshSaleWin(flag,winmoneypay,winsure, wincancle);
}
else if(ch==10||ch==KEY_ENTER)
{
/*makelog("debug.log","enter");*/
if(0==flag)
{
flag=++flag%num;
freshSaleWin(flag,winmoneypay,winsure, wincancle);
}
else if(flag==1)
{
moneypay=atof(str);
if(moneypay>0&&moneypay>money)
{
if(IsRightMoney(str)==0)
{
moneypay=atof(str);
saleInfo->moneypay=moneypay;
moneyreturn=moneypay-money;
saleInfo->moneyreturn=moneyreturn;
sprintf(buf,"应找金额为:%.2f",moneyreturn);
MessageBox(buf,0);
flag=10;
break;
}
else
{
MessageBox("金额输入不正确",0);
wrefresh(winsure);
}
}
else
{
MessageBox("实收款必须大于应付款",0);
wrefresh(winsure);
}
}
else if(flag==num-1)
{
flag=20;
break;
}
}
else if(KEY_BACKSPACE==ch)
{
/*makelog("debug.log","backspace ");*/
if(flag==0)
{
int len=strlen(str);
if(len>0)
{
str[len-1]='\0';
wprintw(winmoneypay,"\b \b");
freshSaleWin(flag,winmoneypay,winsure, wincancle);
}
}
}
else if(isdigit(ch)||ch=='.')
{
if(flag==0)
{
int len=strlen(str);
if(len<6)
{
str[len]=ch;
wprintw(winmoneypay,"%c",ch);
freshSaleWin(flag,winmoneypay,winsure, wincancle);
}
}
}
}
if(10==flag)
{
int h;
h=checkOut();
barInfoList.del(&barInfoList);
if(h==0)
MessageBox("收银成功",0);
}
wclear(winmain);
wrefresh(winmain);
delwin(winmoney);
delwin(winsure);
delwin(winmoneypay);
delwin(wincancle);
delwin(winmain);
scr_restore("scr_save.scr2");
refresh();
if(20==flag)
return 1;
return 0;
}
int freshSaleWin(int flag,WINDOW * winnewnum,WINDOW * winsure,WINDOW * wincancle)
{
switch(flag)
{
case 0:
touchwin(winnewnum);
wrefresh(winnewnum);
break;
case 1:
wattron(winsure,A_REVERSE);
mvwprintw(winsure,0,0," 确定 ");
wattroff(winsure,A_REVERSE);
wrefresh(winsure);
break;
case 2:
touchwin(wincancle);
wattron(wincancle,A_REVERSE);
mvwprintw(wincancle,0,0," 退出 ");
wattroff(wincancle,A_REVERSE);
wrefresh(wincancle);
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -