⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 posadddetail.c

📁 一个不错的POS系统
💻 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 + -