#include "public.h"
#include "front.h"
#include "data.h"
#include "link.h"
#define PAGECOUNT 5
typedef struct _hand
{
LINKLIST * handshead;
char up_sale_number[19];
}MYHAND;
MYHAND hands[5];
int handtage=0;
char sale_number[19];
int nownumber=0;//打印区的链表节点中的商品数量
LS_GOODS mygoodnode;//要进链表的商品信息
LINKLIST *newp;//新结点标志
LINKLIST *oldp;//旧结点标志
LINKLIST *head=NULL;
LINKLIST *last=NULL;
LINKSALE *t_head=NULL;
LINKSALE *t_last=NULL;
/***********************************
前台界面边框
************************************/
void user_frame()
{
int i ;
clear_win();
fflush(stdout);
moveyx(2,4);
printf ("+");
fflush(stdout);
for(i=0;i<68;i++)
{
printf("-");
fflush(stdout);
}
moveyx(2,72);
printf ("+");
fflush(stdout);
for(i=0;i<20;i++)
{
moveyx(3+i,4);
printf("|");
fflush(stdout);
moveyx(3+i,72);
printf("|");
fflush(stdout);
}
for (i=0;i<13 ;i++ )
{
moveyx(7+i,56);
printf("|");
fflush(stdout);
}
moveyx(22,4);
printf ("+");
fflush(stdout);
for(i=0;i<68;i++)
{
printf("-");
fflush(stdout);
}
moveyx(22,72);
printf ("+");
fflush(stdout);
moveyx(4,5);
for(i=0;i<67;i++)
{
printf("-");
fflush(stdout);
}
moveyx(6,5);
for(i=0;i<67;i++)
{
printf("-");
fflush(stdout);
}
moveyx(8,5);
for(i=0;i<51;i++)
{
printf("-");
fflush(stdout);
}
moveyx(18,5);
for(i=0;i<51;i++)
{
printf("-");
fflush(stdout);
}
/*
moveyx(14,5);
for(i=0;i<50;i++)
{
printf("-");
fflush(stdout);
}*/
moveyx(20,5);
for(i=0;i<67;i++)
{
printf("-");
fflush(stdout);
}
}
/***********************************
前台界面文字
************************************/
void user_word()
{
char str[][10]={"销售单号:","日期:","导购员:","商品条码:","数量:","F6:结账","F7:删除","F8:撤单","F9:注销",
"条码","商品名称","单价","折扣","数量","金额","合计:"};
moveyx(3,6);
printf("%s",str[0]);
fflush(stdout);
moveyx(3,50);
printf("%s",str[1]);
fflush(stdout);
//moveyx(3,50);
//printf("%s",str[2]);
//fflush(stdout);
moveyx(5,6);
printf("%s",str[3]);
fflush(stdout);
moveyx(5,26);
printf("%s",str[4]);
fflush(stdout);
moveyx(5,40);
printf("%s",str[5]);
fflush(stdout);
moveyx(5,48);
printf("%s",str[6]);
fflush(stdout);
moveyx(5,56);
printf("%s",str[7]);
fflush(stdout);
moveyx(5,64);
printf("%s",str[8]);
fflush(stdout);
moveyx(7,6);
printf("%s",str[9]);
fflush(stdout);
moveyx(7,15);
printf("%s",str[10]);
fflush(stdout);
moveyx(7,36);
printf("%s",str[11]);
fflush(stdout);
moveyx(7,41);
printf("%s",str[12]);
fflush(stdout);
moveyx(7,46);
printf("%s",str[13]);
fflush(stdout);
moveyx(7,51);
printf("%s",str[14]);
fflush(stdout);
//moveyx(19,31);
//printf("%s",str[15]);
//fflush(stdout);
char str1[][10]={"F10:挂单","F11:取单","应付:","支付:","应找:"};
moveyx(21,15);
printf("%s",str1[0]);
fflush(stdout);
moveyx(21,31);
printf("%s",str1[1]);
fflush(stdout);
moveyx(9,58);
printf("%s",str1[2]);
fflush(stdout);
moveyx(11,58);
printf("%s",str1[3]);
fflush(stdout);
moveyx(13,58);
printf("%s",str1[4]);
fflush(stdout);
//getchar();//等待输入
//exit (0);//退系统!!
}
/*是否为功能键*/
int ynkey(int ch)
{
if(ch==UP||ch==DOWN||ch==LEFT||ch==RIGHT
||ch==HOME||ch==END||ch==PGUP||ch==PGDN
||ch==F6||ch==F7||ch==F8||ch==F9||ch==F10
||ch==F11||ch==F12||ch==TAB)
return ch;
else
return 0;
}
int find_code(char mycode[],int nownum)
{
int i;
for (i=0;i<18 ;i++ )
{
if ((strcmp(mycode,goods[i].code)==0))
{
if (nownum>goods[i].nrepcount)
{
my_show_msg(17,10,"库存不足!\n");
return -1;
}
else
{
mygoodnode=goods[i];
return 2;
}
}
}
if (i==18)
{
my_show_msg(17,10,"条码不存在!请重输!");
return -2;
}
return 0;
}
/***********************************
*函数功能:单号校验及打印
*输入参数:单号
*返回值:成功返回0,错误返回-1
************************************/
int my_listnum()
{
//char log[1024] = "";
char listnum[7];
int res,i,j,ch;
char ln[]={"LN"};
char buf[10];
char mynumber[5];
char log[1024] = "";
while(1)
{
CC:
my_clear_line(5,15,8);
ch=my_getstr(listnum,6,0);
res=ynkey(ch);
if (res!=0)
{
return res;
}
res=check_listnum(listnum,1);
if (res==-1||res==-2)
{
continue;
}
BB:
my_clear_line(5,31,6);
ch=my_getstr(mynumber,4,0);
res=ynkey(ch);
if (res!=0)
{
return res;
}
res=check_listnum(mynumber,2);
if (res==-1)
{
continue;
}
else
{
sprintf(buf,"LN%06d",atoi(listnum));
nownumber=atoi(mynumber);
if (res==-2)
{
nownumber=1;
my_clear_line(5,31,6);
printf(" 1");
fflush(stdout);
}
res=find_code(buf,nownumber);
if (res==2)
return 888;
else if(res==-1)//库存不足
goto BB;
else if(res==-2)//商品不存在
goto CC;
}
}
}
void free_all_node(LINKLIST *thead)
{
LINKLIST *p=thead,*t=NULL;
while(p)
{
t=p;
p=p->next;
free(t);
}
thead=NULL;
head=NULL;
}
/***********************************
*函数功能:单号非法校验
*输入参数:单号
*返回值:成功返回0,错误返回-1
************************************/
int check_listnum(char name[],int tage)
{
int i,len;
len=strlen(name);
if(len==0)
{
if(tage==1)
my_show_msg(17,10,"单号长度为6!");
return -2;
}
for(i=0;i<len;i++)
{
if(!isdigit(name[i]))
{
my_show_msg(17,10,"必须为数字!");
return -1;
}
}
return 0;
}
int find_link_node(char checkcode[],int number)
{
LINKLIST *p=head;
int findnoderow=0;
while (p!=NULL)
{
if (strcmp(p->info.code,checkcode)==0)
{
p->info.nrepcount+=number;
oldp=p;
return findnoderow;
}
else{
p=p->next;
findnoderow++;
}
}
return -2;
}
int get_time()
{
char salenumber[128];
long int date;
struct tm *newtime;
time_t timep;
time (&timep);
newtime=localtime(&timep);
strftime(salenumber,1024,"%Y%y%d%H",newtime);
date=atoi(salenumber);
return date;
}
void print_date(int y,int x)
{
char salenumber[128];
long int date;
struct tm *newtime;
time_t timep;
time (&timep);
newtime=localtime(&timep);
strftime(salenumber,128,"%Y-%y-%d",newtime);
my_clear_line(y,x,10);
printf("%s",salenumber);
fflush(stdout);
}
int check_money(char *buf)
{
int i,len;
len=strlen(buf);
if(len>=6)
{
my_show_msg(17,10,"金额过大,请联系管理员!");
return -1;
}
for(i=0;i<len;i++)
{
if(isdigit(buf[i])==0)
{
my_show_msg(17,10,"输入必须为数字!");
return -1;
}
}
return 0;
}
int get_charge(char *p,LINKLIST *thead)
{
int i,j,res,ch,res1;
float price=0,charge=0;
char buf[20];
char log[100][200]={0};
char *sql;
LINKLIST *q=thead;
char *errmsg=NULL;
for(i=0;q!=NULL;q=q->next,i++)
{
price+=q->info.nsaleprice*q->info.ndiscount*q->info.nrepcount;
sprintf(log[i],"insert into \"_sale\" values(\'%s\',\'000001\',\'%s\',%d,%f);",
p,q->info.code,q->info.nrepcount,q->info.nsaleprice);
}
my_clear_line(9,63,8);
printf("%6.1f",price);
fflush(stdout);
NN:
my_clear_line(11,63,8);
ch=my_getstr(buf,6,0);
res=ynkey(ch);
if (res!=0)
{
return res;
}
res1=check_money(buf);
if (res1==-1)
{
goto NN;
}
charge=atof(buf);
if (charge<price)
{
my_show_msg(17,10,"付款不足!");
getchar();
goto NN;
}
my_clear_line(13,63,8);
printf("%6.1f",charge-price);
fflush(stdout);
getchar();
for (j=0;j<i ;j++ )
{
sql=log[j];
sqlite3_exec(db,sql,0,0,&errmsg);
}
char *msal="commit;";
sqlite3_exec(db,msal,0,0,&errmsg);
my_clear_line(13,63,8);
my_clear_line(11,63,8);
my_clear_line(9,63,8);
free_all_node(head);
clear_myarea1();