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

📄 proscenium.c

📁 本人做的一个基于LINUX平台的小程序
💻 C
📖 第 1 页 / 共 3 页
字号:
	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 + -