📄 posadddetail.c
字号:
#include "posAddDetail.h"
#include "pub.h"
#include "posProwin.h"
#include "posOracle.h"
int addDetail()
{
return 0;
}
int addMsgBox(WINDOW * winm,WINDOW *wincheck,int key)
{
BARINFO barInfo;
NODE * node;
char str[10],tmp[30];
int num=3,ch,flag=0,number=-100,n=-100,barNum;
memset(str,0,sizeof(str));
keypad(stdscr,TRUE);
node=barInfoList.get_node_by_index(&barInfoList,g_listnum);
if (node!=NULL)
{
barInfo=(barinfo *)node->data;
}
WINDOW * winmain,*winbarname,*winnum,*winbarcode,*winnewnum,*winsure,*wincancle,*winnownum;
scr_dump("scr_save.scr1");
winmain=newwin(10,40,8,20);
box(winmain,0,0);
if(has_colors())
{
init_pair(7,COLOR_BLACK,COLOR_MAGENTA);
init_pair(8,COLOR_BLACK,COLOR_WHITE);
}
wbkgd(winmain,COLOR_PAIR(7));
if(1==key)
{
mvwprintw(winmain,0,16,"新增明细");
}
if(2==key)
{
mvwprintw(winmain,0,16,"删除明细");
}
/*wattron(winmain,COLOR_PAIR(8));
mvwprintw(winmain,13,25,"输入新增后的数量 : ");
wattroff(winmain,COLOR_PAIR(8));*/
wrefresh(winmain);
winbarname=newwin(1,30,9,25);
wbkgd(winbarname,COLOR_PAIR(8));
mvwprintw(winbarname,0,(30-strlen(barInfo->product_name)-9)/2,"商品名称:%s",barInfo->product_name);
wrefresh(winbarname);
winnum=newwin(1,30,11,25);
wbkgd(winnum,COLOR_PAIR(8));
mvwprintw(winnum,0,1,"现有数量: %d 条形码:%s",barInfo->salenum,barInfo->bar_code);
wrefresh(winnum);
winsure=newwin(1,6,15,25);
wbkgd(winsure,COLOR_PAIR(8));
mvwprintw(winsure,0,1,"确定");
wrefresh(winsure);
wincancle=newwin(1,6,15,48);
wbkgd(wincancle,COLOR_PAIR(8));
mvwprintw(wincancle,0,1,"取消");
wrefresh(wincancle);
winnownum=newwin(1,18,13,25);
wbkgd(winnownum,COLOR_PAIR(8));
if(2==key)
{
mvwprintw(winnownum,0,1,"输入删减后的数量 :");
wrefresh(winnownum);
}
if(1==key)
{
mvwprintw(winnownum,0,1,"输入新增后的数量 :");
wrefresh(winnownum);
}
winnewnum=newwin(1,10,13,44);
wbkgd(winnewnum,COLOR_PAIR(8));
/*mvwprintw(winnewnum,0,1,"输入新增后的数量 : "); */
wrefresh(winnewnum);
while(1)
{
ch=getch();
freshWin(flag,winnewnum,winsure, wincancle);
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);
freshWin(flag,winnewnum,winsure, wincancle);
}
else if(ch==10||ch==KEY_ENTER)
{
/*makelog("debug.log","enter");*/
if(flag!=num-2&&flag!=num-1)
{
flag=++flag%num;
freshWin(flag,winnewnum,winsure, wincancle);
}
else if(flag==num-2)
{
number=atoi(str);
barNum=GetProductNum(barInfo->bar_code);
if(1==key)
{
if(number>barNum)
{
MessageBox("输入的数量超过了库存",0);
}
else
{
if(number>0&&number>barInfo->salenum)
{
flag=10;
break;
}
else
{
MessageBox("输入的数字必须大于现有数量",0);
wrefresh(winsure);
}
}
}
if(2==key)
{
if(number>=0&&number<barInfo->salenum)
{
n=MessageBox2("是否真的要删除数量");
if(0==n)
{
flag=10;
break;
}
}
else
{
MessageBox("输入的数字必须小于现有数量\n 输入0则删除这条记录",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(winnewnum,"\b \b");
freshWin(flag,winnewnum,winsure, wincancle);
}
}
}
else if(isdigit(ch))
{
if(flag==0)
{
int len=strlen(str);
if(len<3)
{
str[len]=ch;
wprintw(winnewnum,"%c",ch);
freshWin(flag,winnewnum,winsure, wincancle);
}
}
}
}
wclear(winmain);
wrefresh(winmain);
delwin(winmain);
delwin(winbarname);
delwin(winbarcode);
delwin(winnum);
delwin(winnewnum);
scr_restore("scr_save.scr1");
refresh();
if(flag==10)
{
if(1==key)
{
char c[20];
barInfo->salenum=number;
printBarInfo(winm,c,4);
}
if(2==key)
{
char c[20];
barInfo->salenum=number;
if(0==number)
{
barInfoList.del_node_by_index(&barInfoList,g_listnum);
if(g_listnum==barInfoList.count+1)
{
g_listnum--;
g_line--;
}
}
printBarInfo(winm,c,5);
}
/*wrefresh(winm);
wrefresh(wincheck);*/
/*char buf[200];
float money;
int no;
barInfo->salenum=number;
money=barInfo->sale_price*barInfo->salenum*barInfo->discount;
no=g_line+(g_listnum-g_line);
memset(buf,0,sizeof(buf));
sprintf(buf," %-6d%-10s%-24s%-10s%-6s%-9.2f%-5d%-6.2f",no,barInfo->bar_code,barInfo->product_name,barInfo->spec,barInfo->unit,barInfo->sale_price*barInfo->discount,number,money);
wattron(winm,A_REVERSE);
mvwprintw(winm,g_line+4,1,buf);
wattroff(winm,A_REVERSE);
wrefresh(winm);
wrefresh(wincheck); */
}
return 0;
}
int freshWin(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 + -