?? posprowin.c
字號:
#include "posProWin.h"
#include "posPublic.h"
#include "pub.h"
#include "posOracle.h"
int state(int flag)
{
char time[20];
if(flag==0)
{
memset(time,0,sizeof(time));
g_sale_state=0;
getSYSTime(time);
get_seq_trans_id();
strcpy(saleInfo->time,time);
}
return 0;
}
WINDOW * createProWin(int key)
{
int saleNo=g_trans_id;
char time[20]={0};
char rank[20]={0},systime[20];
char saleState[20]={0};
/*g_sale_state=0;*/
state(key);
WINDOW * winmain;
memset(systime,0,sizeof(systime));
/*getSYSTime(systime);*/
strcpy(time,saleInfo->time);
/*strcpy(saleInfo->time,time);*/
switch(g_staff_type)
{
case 0:
strcpy(rank,"管理員");
break;
case 1:
strcpy(rank,"普通職員");
break;
case 2:
strcpy(rank,"經理");
break;
}
switch(g_sale_state)
{
case 0:
strcpy(saleState,"正常");
break;
case 1:
strcpy(saleState,"非正常");
break;
}
/*get_seq_trans_id();*/
saleNo=g_trans_id;
if(has_colors())
{
start_color();
init_pair(1,COLOR_WHITE,COLOR_BLACK);
init_pair(2,COLOR_BLACK,COLOR_WHITE);
}
winmain=newwin(24,80,0,0);
box(winmain,0,0);
wbkgd(winmain,COLOR_PAIR(1));
mvwprintw(winmain,0,30,"歡迎進入XXX超市");
wrefresh(winmain);
DrawLine(winmain,2);
DrawLine(winmain,4);
DrawLine(winmain,19);
DrawLine(winmain,21);
//sprintf(topmsg,"收銀員:");
mvwprintw(winmain,1,2,"收銀員:%s 等級:%s 交易號:%04d 時間:%s",g_staff_name,rank,saleNo,time);
mvwprintw(winmain,3,1,"序號 條形碼 商品名稱 規格 單位 單價 數量 金額");
mvwprintw(winmain,20,2,"條形碼:");
mvwprintw(winmain,20,50,"銷售狀態:%s",saleState);
mvwprintw(winmain,22,1,"F2:新增明細 F3:刪除明細 F4:收銀 F5:掛單 F6:取單 F7:撤單 F8:退貨 F9:退出");
wrefresh(winmain);
return winmain;
}
WINDOW * createCheckWin()
{
WINDOW * wincheck;
wincheck=newwin(1,14,20,10);
wbkgd(wincheck,COLOR_PAIR(2));
wprintw(wincheck,"CN ");
wrefresh(wincheck);
return wincheck;
}
int proWinIput(WINDOW* wincheck,char * check)
{
int n=-10;
char tmp[18]={0};
memset(tmp,0,sizeof(tmp));
n=get_str(wincheck,check,3,6,0);
/*sprintf(tmp,"n=%d",n);
makelog("debug.log",tmp);*/
return n;
}
int printBarInfo(WINDOW * winmain,char * barCodeWithoutCN,int key)
{
int n=-10,i=0,no=1,beginrow=1,k=-100;/* 5行*/
/*static int probeginrow=0;*/
char buf[200],barcode[12];
float sale_price,money;
memset(buf,0,sizeof(buf));
memset(barcode,0,sizeof(barcode));
BARINFO barInfo;
NODE* node=NULL;
barcode[0]='C';
barcode[1]='N';
strcpy(&barcode[2],barCodeWithoutCN);
Trim(barcode);
/*makelog("debug.log",barcode);*/
char tmp[20]={0};
switch(key)
{
case 1: /*key_num*/
k=IsInList(barcode);
if(k>0)
{
if(k>=beginrow&&k<=beginrow+13)
{
g_line=k-beginrow+1;
g_listnum=k;
}
if(k<beginrow&&barInfoList.count>=14)
{
g_line=k;
g_listnum=k;
beginrow=k;
no=beginrow;
}
if(k<beginrow&&barInfoList.count<14)
{
clearWin(winmain ,5,18,1);
g_line=k;
g_listnum=k;
beginrow=k;
no=beginrow;
}
if(k>beginrow+13)
{
g_line=14;
g_listnum=k;
beginrow=beginrow+(k-beginrow-13);
no=beginrow;
}
}
else
{
n=getBarInfo(barcode);
if(0==n)
{
makelog("debug.log","yes");
if(barInfoList.count<=14)
{
g_line=barInfoList.count;
g_listnum=barInfoList.count;
}
/*g_line++;
g_listnum++;*/
else if(barInfoList.count>14)
{
g_line=14;
g_listnum=barInfoList.count;
beginrow=barInfoList.count-13;
no=beginrow;
}
}
else if(-1==n)
{
MessageBox("沒有這種商品 ex:000001",0);
}
}
break;
case 2: /*key_up*/
if(1==g_line&&g_listnum==1)
return 1;
else if(1==g_line&&g_listnum!=1)
{
g_listnum--;
beginrow=g_listnum;
no=beginrow;
}
else if(barInfoList.count>0)
{
sprintf(tmp,"g_listnum=%d",g_listnum);
makelog("debug.log",tmp);
sprintf(tmp,"g_line=%d",g_line);
makelog("debug.log",tmp);
beginrow=g_listnum-g_line+1;
no=beginrow;
g_listnum--;
g_line--;
}
break;
case 3: /*key_down*/
if(14==g_line&&g_listnum!=barInfoList.count)
{
g_listnum++;
beginrow=g_listnum-13;
no=beginrow;
}
else if(14==g_line||g_line==barInfoList.count)
return 2;
else if(g_listnum==barInfoList.count)
return 3;
else if(barInfoList.count>0)
{
beginrow=g_listnum-g_line+1;
no=beginrow;
g_listnum++;
g_line++;
}
break;
case 4: /*新增明細*/
beginrow=(g_listnum-g_line)+1;
no=beginrow;
break;
case 5: /*刪除明細*/
beginrow=(g_listnum-g_line)+1;
no=beginrow;
break;
case 6:
g_line=barInfoList.count;
g_listnum=barInfoList.count;
}
if(barInfoList.count>0)
{
/*probeginrow=beginrow;*/
/*if(barInfoList.count>14)
{
if(probeginrow!=beginrow)
clearWin(winmain ,5,18,1);
}*/
/*g_line=barInfoList.count;*/
/*int iend=(barInfoList.count<=14) ? barInfoList.count :beginrow+13;*/
int iend=(barInfoList.count-beginrow<13)? barInfoList.count :beginrow+13;
/* if(beginrow!=1&&5==key)
{
iend=barInfoList.count;
}*/
sprintf(tmp,"beginrow=%d",beginrow);
makelog("debug.log",tmp);
for (i=beginrow; i<=iend; i++)
{
node=barInfoList.get_node_by_index(&barInfoList,i);
if (node!=NULL)
{
/*makelog("debug.log","ok");*/
barInfo=(barinfo *)node->data;
/*g_listnum++;*/
}
/*sprintf(tmp,"i=%d,salenum=%d",i,barInfo->salenum);
makelog("debug.log",tmp);*/
sale_price=barInfo->sale_price*barInfo->discount;
money=sale_price*barInfo->salenum;
Trim(barInfo->bar_code);
Trim(barInfo->product_name);
Trim(barInfo->spec);
Trim(barInfo->unit);
/*makelog("debug.log",barInfo->bar_code);
makelog("debug.log",barInfo->product_name);
makelog("debug.log",barInfo->spec);
makelog("debug.log",barInfo->unit);*/
sprintf(buf," %-6d%-10s%-24s%-10s%-6s%-9.2f%-5d%-6.2f",no,barInfo->bar_code,barInfo->product_name,barInfo->spec,barInfo->unit,sale_price,barInfo->salenum,money);
if(i-beginrow+1==g_line)
{
wattron(winmain,A_REVERSE);
mvwprintw(winmain,5+i-beginrow,1,"%s",buf);
wattroff(winmain,A_REVERSE);
}
else
{
mvwprintw(winmain,5+i-beginrow,1,"%s",buf);
}
no++;
}
wrefresh(winmain);
}
if(5==key&&barInfoList.count-beginrow<=13)
{
clearWin(winmain ,barInfoList.count-beginrow+6,barInfoList.count-beginrow+6,1);
wrefresh(winmain);
}
if(0==barInfoList.count)
{
clearWin(winmain ,5,5,1);
wrefresh(winmain);
}
/*else if(-1==n)
MessageBox("沒有這中商品",0);*/
return 0;
}
int IsInList(char * barcode)
{
NODE * node;
BARINFO barInfo;
int i=0;
/*node=barInfoList.get_node_by_key(&barInfoList,barcode,(int(*)(void *,void *))condition_product);
if(node==barInfoList.head)
return 0;
else
return 1;*/
for(i=1;i<=barInfoList.count;i++)
{
node=barInfoList.get_node_by_index(&barInfoList,i);
if (node!=NULL)
{
barInfo=(barinfo *)node->data;
}
if(strcmp(barInfo->bar_code,barcode)==0)
{
barInfo->salenum++;
return i;
}
}
return -1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -