📄 functionlib.c
字号:
{
if (plink->count==0)
{
MessageBox("没有已购买的商品","按任意键返回",NOBTN);
}
else
{
AddDelDetail(plink,current,ADDMODE);
PrintLinkInfo(plink,pNewWin,beginsub,current);
}
}
break;
case KEY_F(3):
{
if (plink->count==0)
{
MessageBox("没有已购买的商品","按任意键返回",NOBTN);
}
else
{
AddDelDetail(plink,current,DELMODE);
if(plink->count==0)
{
current=0;
beginsub=0;
werase(pNewWin);
wrefresh(pNewWin);
}
else
{
werase(pNewWin);
wrefresh(pNewWin);
if(current==1)
{
current=current+1;
}
current=current-1;
if(current>15)
{
beginsub=current-14;
}
PrintLinkInfo(plink,pNewWin,beginsub,current);
}
}
}
break;
case KEY_F(4):
{
int res=-1;
KindMoney kindmoney;
if (plink->count==0)
{
MessageBox("无商品被购买不能收银","按任意键返回",NOBTN);
}
else
{
res=IncomeWin(plink,&kindmoney);
}
if(1==res)
{
SaleTableInfo saleinfo;
memset(&saleinfo,0,sizeof(SaleTableInfo));
// 销售ID
char saleid[19];memset(saleid,0,19);
strncpy(saleid,TimeStr,14);
strncpy(&saleid[14],tranid,4);
strcpy(saleinfo.sale_id,saleid);
// 交易号
strncpy(saleinfo.trans_id,tranid,4);
saleinfo.trans_id[5]='\0';
//员工ID
strncpy(saleinfo.staff_id,staff.staff_id,6);
saleinfo.staff_id[7]='\0';
//日期
//memset(saleinfo.sale_date,0,16);
// 实际付款 原价
// 应付款 打折后
// 金额
// 找钱
strncpy(saleinfo.sale_date,TimeStr,8);
saleinfo.sale_date[9]='\0';
saleinfo.give_sum=kindmoney.give_sum;
saleinfo.real_sum=kindmoney.real_sum;
saleinfo.money=kindmoney.money;
saleinfo.change=kindmoney.change;
saleinfo.sale_state=0;
int kk=InsertSaleTable(&saleinfo);
// 要写入销售详细表的数据
DUNODE * p=plink->head->next;
while (p!=plink->head)
{
SaleDetailInfo saledetailinfo;
// 销售明细表
memset(&saledetailinfo,0,sizeof(SaleDetailInfo));
strncpy(saledetailinfo.detail_id,TimeStr,14);
char identifynum[5];
GetTradeID(identifynum);
MoveRightSpace(identifynum);
strncpy(&saledetailinfo.detail_id[14],identifynum,4);
strcpy(saledetailinfo.sale_id,saleinfo.sale_id); // 销售单号 - 外键
saledetailinfo.sale_state=1; // 状态
saledetailinfo.count= (((SellGoods *)(p->data))->product_count); // 数量
saledetailinfo.sale_price=(((SellGoods *)(p->data))->sale_price); // 销价
strcpy(saledetailinfo.bar_code,(((SellGoods *)(p->data))->bar_code)); // 条形码
DepletionCount(saledetailinfo.bar_code,saledetailinfo.count);
int kk=InsertSaleDetailTable(saledetailinfo);
p=p->next;
}
link_del(plink);
wclear(pNewWin);
wrefresh(pNewWin);
// 收银结束更新交易号
GetTradeID(tranid);
MoveRightSpace(tranid);
mvprintw(1,34,"交易号:****");
mvprintw(1,41,"%s",tranid);
refresh();
// PrintLinkInfo(&link,pNewWin,beginsub,current);
}
}
break;
case KEY_F(5):
{
if (plink->count==0)
{
MessageBox("无已购商品不能挂单","任意键返回",NOBTN);
}
else if(listarr[2]!=NULL)
{
MessageBox("挂单数已满,挂单失败","按任意键返回",NOBTN);
}else
{
int res=MessageBox("提示","是否挂单",YESNO);
if ((BUTTONID+1)==res)
{
char saleidstr[19];
memset(saleidstr,0,19);
strcpy(saleidstr,TimeStr);
GetTradeID(tranid);
strncpy(&saleidstr[14],tranid,4);
List_Up(&plink,saleidstr); // 挂单函数
wclear(pNewWin);
wrefresh(pNewWin);
}
}
}
break;
case KEY_F(6):
{
// 取单
if (plink->count!=0)
{
MessageBox("当前商品未结算无法取单","按任意键返回",NOBTN);
}
else if(listarr[0]==NULL)
{
MessageBox("没有挂单不能取单","按任意键返回",NOBTN);
}
else
{
List_Down(&plink);
beginsub=1;
current=1;
PrintLinkInfo(plink,pNewWin,beginsub,current);
}
}
break;
case KEY_F(7):
{
// 撤单
if (listarr[0]==NULL)
{
MessageBox("没有挂单不能撤单","按任意键返回",NOBTN);
}
else
{
List_Del();
}
}
break;
case KEY_F(8):
{
// 退货
if (plink->count!=0)
{
MessageBox("当前清单未结算不能退货","按任意键返回",NOBTN);
}
else
{
ReturnGoods();
}
}
break;
case KEY_F(9):
{
// 退出
if (plink->count!=0 && listarr[0]!=NULL)
{
if(plink->count!=0)
MessageBox("当前清单未结算不能退出","按任意键返回",NOBTN);
else
MessageBox("挂单中有清单不能退出","按任意键返回",NOBTN);
}
else
{
int res=MessageBox("提示","是否要退出收银",YESNO);
if (res==BUTTONID+1)
{
flag=1;
}
else
{
}
}
}
break;
}
if(1==flag)
{
break;
}
}
while (1);
FreeTextBox(pBarCodeText);
}
/**********************************************************
Function:打印商品信息函数
Param:DUNODE * 数据结点指针 WINDOW * 显示屏指针 int i ,int num控制序号相关变量
return :无
***********************************************************/
void PrintProcutInfo(DUNODE * pnode ,WINDOW * pwin,int i ,int num)
{
int number=0;
char tempstr[120];
MoveRightSpace(((Goods *)(pnode->data))->bar_code);
MoveRightSpace(((Goods *)(pnode->data))->product_name);
MoveRightSpace(((Goods *)(pnode->data))->unit);
MoveRightSpace(((Goods *)(pnode->data))->spec);
//MoveRightSpace();
sprintf(tempstr,"%-5d%-10s%-17s%-5s%-10s%-10.2f%-7.2f%-6d%-6.2f",num,
((Goods *)(pnode->data))->bar_code,
((Goods *)(pnode->data))->product_name,
((Goods *)(pnode->data))->unit,
((Goods *)(pnode->data))->spec,
(((Goods *)(pnode->data))->sale_price),
(((Goods *)(pnode->data))->purchase_price),
((Goods *)(pnode->data))->count,
((Goods *)(pnode->data))->discount
);
mvwprintw(pwin,i,1,"%s",tempstr);
wrefresh(pwin);
}
/**********************************************************
Function:打印已购商品信息
Param:无
return :无
***********************************************************/
void PrintSellInfo(DUNODE * pnode,WINDOW * pwin,int i,int num)
{
int number=0;
char tempstr[80];
sprintf(tempstr,"%-5d%-10s%-26s%-6s%-7s%-10.2f%-6d%-6.2f",num,
((SellGoods *)(pnode->data))->bar_code,
((SellGoods *)(pnode->data))->product_name,
((SellGoods *)(pnode->data))->spec,
((SellGoods *)(pnode->data))->unit,
(((SellGoods *)(pnode->data))->sale_price),
((SellGoods *)(pnode->data))->product_count,
((SellGoods *)(pnode->data))->sum_money
);
mvwprintw(pwin,i,1,"%s",tempstr);
wrefresh(pwin);
}
/**********************************************************
Function:打印单条记录函数
Param:C_CLASS LINKLIST * 链表指针 WINDOW * 显示屏窗口指针 beginsub起始 currsub当前选中
void(*p)() 打印具体某一类型的函数指针
return :无
***********************************************************/
void PrintOneView(C_CLASS LINKLIST * link,WINDOW * pwin ,int beginsub ,
int currsub,void (*printRed)(DUNODE * pnode, WINDOW * pwin,int k,int num))
{
int i;
DUNODE * p=NULL;
p=link_get_node_by_index(link,beginsub);
for(i=beginsub;i<beginsub+15;i++)
{
if(currsub>link->count || i>(link->count) || p==link->head)
{
break;
}
if(i==currsub)
{wattron(pwin,A_REVERSE);}
printRed(p,pwin,i-beginsub,i);
if(i==currsub)
{wattroff(pwin,A_REVERSE);}
p=p->next;
}
}
/********************************************
打印链表函数
***********************************************/
void PrintLinkInfo(C_CLASS LINKLIST * link,WINDOW * pwin,int begin,int currsub)
{
PrintOneView(link,pwin,begin,currsub,PrintSellInfo);
}
/************************************************************
Function:消息提示框
Param: ptitle 提示标题 pcontent 提示内容 mode 是否有按妞模式
return : 返回 按下按妞的ID号
*************************************************************/
int MessageBox(char * ptitle,char * pcontent,enum MSGMODE mode)
{
scr_dump("SaveScr.scr");
MyWindow * pMsgWindow=NULL;
pMsgWindow=MakeMyWindow(pMsgWindow);
pMsgWindow->m_color=WHITE_BLUE;
pMsgWindow->m_sizex=32;
if(mode!=NOBTN)
{
pMsgWindow->m_sizey=12;
}else
{
pMsgWindow->m_sizey=6;
}
pMsgWindow->m_px=25;
pMsgWindow->m_py=7;
ChangeMyWindow(&pMsgWindow);
int sizex=pMsgWindow->m_sizex;
int sizey=pMsgWindow->m_sizey;
pMsgWindow->DrawHline(pMsgWindow,2,1);
pMsgWindow->DrawWords(pMsgWindow,1,(sizex-strlen(ptitle))/2,ptitle);
pMsgWindow->DrawWords(pMsgWindow,3,(sizex-strlen(pcontent))/2,pcontent);
if(YESNO==mode)
{
pMsgWindow->DrawHline(pMsgWindow,sizey-6,1);
// 是按扭
Button * pButton1=NULL;
pButton1=MakeButton(pButton1);
strcpy(pButton1->m_name,"是");
pButton1->m_kind=YESBUTTON;
pButton1->m_buttonid=BUTTONID+1;
pButton1->m_sizey=3;
pButton1->m_color_foot=WHITE_BLUE;
pButton1->ChangeButton(&pButton1);
// 取消按妞
Button * pButton2=NULL;
pButton2=MakeButton(pButton2);
strcpy(pButton2->m_name,"否");
pButton2->m_buttonid=BUTTONID+2;
pButton2->m_kind=NOBUTTON;
pButton2->m_color_foot=WHITE_BLUE;
pButton2->m_sizey=3;
pButton2->ChangeButton(&pButton2);
pMsgWindow->AddActiveElement(pMsgWindow,pButton1,ISBUTTON,sizey-5,4);
pMsgWindow->AddActiveElement(pMsgWindow,pButton2,ISBUTTON,sizey-5,sizex-10);
}
else if(CANCEL==mode)
{
pMsgWindow->DrawHline(pMsgWindow,sizey-6,1);
Button * pButton3=NULL;
pButton3=MakeButton(pButton3);
strcpy(pButton3->m_name,"返回");
pButton3->m_buttonid=BUTTONID+3;
pButton3->m_sizey=3;
pButton3->m_color_foot=WHITE_BLUE;
//pButton3->m_isbox=FALSE;
pButton3->ChangeButton(&pButton3);
pMsgWindow->AddActiveElement(pMsgWindow,pButton3,ISBUTTON,sizey-5,(sizex-pButton3->m_sizex)/2);
}else
{
}
int keyres=0;
pMsgWindow->ShowMyWindow(pMsgWindow);
keyres=pMsgWindow->RunMyWindow(pMsgWindow);
DelMyWindow(pMsgWindow);
// keyres 为被按下按钮的ID号
scr_restore("SaveScr.scr");
return keyres;
}
/************************************************************
Function:结帐窗口
Param: 无
return : 无
*************************************************************/
int IncomeWin(C_CLASS LINKLIST* link,KindMoney * kindmoney)
{
scr_dump("SaveScr2.scr");
MyWindow * pIncomeWin=NULL;
pIncomeWin=MakeMyWindow(pIncomeWin);
pIncomeWin->m_color=WHITE_BLUE;
pIncomeWin->m_sizex=30;
pIncomeWin->m_sizey=12;
pIncomeWin->m_px=25;
pIncomeWin->m_py=7;
ChangeMyWindow(&pIncomeWin);
int sizex=pIncomeWin->m_sizex;
int sizey=pIncomeWin->m_sizey;
float statmoney=0;
float costmoney=0;
DUNODE * pnode=link->head->next;
float temp1=0;
float temp2=0;
while (pnode!=link->head)
{
statmoney+=( ((SellGoods *)(pnode->data))->sum_money); // Statmoney 打折后的钱
temp1=(((SellGoods *)(pnode->data))->sale_price)/(((SellGoods *)(pnode->data))->discount);
temp2=((SellGoods *)(pnode->data))->product_count;
costmoney+=(temp1*temp2);
pnode=pnode->next;
}
char temp[10];
memset(temp,0,10);
sprintf(temp,"%.2f",statmoney);
pIncomeWin->DrawWords(pIncomeWin,1,2,"应收:");
pIncomeWin->DrawWords(pIncomeWin,1,8,temp);
pIncomeWin->DrawHline(pIncomeWin,2,1);
pIncomeWin->DrawWords(pIncomeWin,3,2,"实收:");
pIncomeWin->DrawHline(pIncomeWin,4,1);
pIncomeWin->DrawWords(pIncomeWin,5,2,"找零:");
pIncomeWin->DrawHline(pIncomeWin,6,1);
// 数量文本
TextBox * pRealText=NULL;
pRealText=MakeTextBox(pRealText);
pRealText->m_strmaxlen=6;
pRealText->m_spc.s_px=33;
pRealText->m_spc.s_py=10;
pRealText->m_isInteger=TRUE;
pRealText->m_isPasswd=FALSE;
pRealText->m_isFn2_9=FALSE;
ChangeTextBox(&pRealText);
// 是按扭
Button * pButton1=NULL;
pButton1=MakeButton(pButton1);
strcpy(pButton1->m_name,"收银");
pButton1->m_kind=YESBUTTON;
pButton1->m_buttonid=BUTTONID+1;
pButton1->m_sizey=3;
pButton1->m_color_foot=WHITE_BLUE;
pButton1->ChangeButton(&pButton1);
// 取消按妞
Button * pButton2=NULL;
pButton2=MakeButton(pButton2);
strcpy(pButton2->m_name,"返回");
pButton2->m_buttonid=BUTTONID+2;
pButton2->m_kind=NOBUTTON;
pButton2->m_color_foot=WHITE_BLUE;
pButton2->m_sizey=3;
pButton2->ChangeButton(&pButton2);
pIncomeWin->AddActiveElement(pIncomeWin,pButton1,ISBUTTON,sizey-5,4);
pIncomeWin->AddActiveElement(pIncomeWin,pButton2,ISBUTTON,sizey-5,sizex-10);
pIncomeWin->ShowMyWindow(pIncomeWin);
float earn=0.0;
do
{
pRealText->InputString(pRealText);
if(strlen(pRealText->m_str)==0)
{
earn=0.0;
}
else
{
char temp[10];
memset(temp,0,10);
strcpy(temp,pRealText->m_str);
int k=0;
int flag=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -