📄 datam.c
字号:
q=q/10; //转成分
if(Param.Sswr[0]=='2')
SPLists->SPList[1].ssje+=q; //加到第一笔上
k+=q; //实收变化
}
sprintf(value,"%.2f",k);
SPLists->ysje=atof(value);
//商品税额处理
if(Param.bz[0]=='1'||Param.bz[0]=='2') //允许税控
{
for(i=1;i<=SPLists->RecordCount;i++)
{
if(SPLists->SPList[i].spsl==g_sl[0])
tax[0]+=SPLists->SPList[i].ssje;
else if(SPLists->SPList[i].spsl==g_sl[1])
tax[1]+=SPLists->SPList[i].ssje;
else if(SPLists->SPList[i].spsl==g_sl[2])
tax[2]+=SPLists->SPList[i].ssje;
else if(SPLists->SPList[i].spsl==g_sl[3])
tax[3]+=SPLists->SPList[i].ssje;
}
SPLists->sehj=0;
for(i=0;i<4;i++)
{
SPLists->se[i]=tax[i];
SPLists->sehj+=tax[i]*(g_sl[i]-1);
}
}
sprintf(value,"Total %.2f",SPLists->spje);
ShowGuXian(value,2,0);
}
//删除一条商品记录
void DeleteRecord(void)
{
int i;
if(Param.Yxscjl[0]=='0') return;
if(!SPLists->RecordCount||SPLists->RecNo>SPLists->RecordCount) return;
for(i=SPLists->RecNo+1;i<=SPLists->RecordCount;i++) //记录移动
{
SPLists->SPList[i].RecNo--;
memcpy(&(SPLists->SPList[i-1]),&(SPLists->SPList[i]),sizeof(_SPStruct));
}
SPLists->RecordCount--; //记录数减一
CalculateSum();//计算合计
InBuffer(-1,0x9904,1,0); //刷新数据显示
}
//
int CheckSpSplb(void)
{
int i,j;
for(i=0;i<6;i++)
{
if(_SpSplb[i][0]=='\0') return 0;
j = 0;
while(_SpSplb[i][j]&&OrigSP.splb[j])
{
if(_SpSplb[i][j]!=OrigSP.splb[j])
break;
j++;
}
if(_SpSplb[i][j]=='\0') return 1;
}
return 0;
}
//总是增加在最后
int InsertRecord(void)
{
int oldNo;
char value[41];
if(SPLists->RecordCount>=100)
{
MsgBoxEx("每次交易最大商品数不能大于100.",1);
return 0;//失败
}
if(!SPLists->RecNo) SPLists->RecNo=1; //如果无记录时
oldNo=SPLists->RecNo; //保存原来的记录号
OrigSP.RecNo=oldNo;
//检查是否能够修改售价及打折
OrigSP.bz = CheckSpSplb();
if(Param.Yxscjl[0]=='0'||(SPLists->RecNo<=SPLists->RecordCount&&
(!MsgBoxEx("覆盖当前的商品吗?",0))))
{
SPLists->RecNo=SPLists->RecordCount+1; //加在最后一条记录
OrigSP.RecNo=SPLists->RecNo;
InBuffer(-1,0x9904,3,SPLists->RecNo); //刷新数据显示
}
memcpy(&(SPLists->SPList[SPLists->RecNo]),&OrigSP,sizeof(_SPStruct));
sprintf(value,"%s %.2f",
SPLists->SPList[SPLists->RecNo].spbm,
SPLists->SPList[SPLists->RecNo].je);
ShowGuXian(value,1,0);
if(SPLists->RecNo>SPLists->RecordCount) //当前位置无数据,增加记录
SPLists->RecordCount++; //记录数加1
CalculateSum();//计算合计
InBuffer(-1,0x9904,3,oldNo);
//如果不是最后时,记录移动到最后
if(SPLists->RecNo<SPLists->RecordCount+1)
{
SPLists->RecNo=SPLists->RecordCount+1;
InBuffer(-1,0x9904,3,SPLists->RecNo); //刷新数据显示
}
}
//商品处理
int ProcessSP(void)
{
int Result;
char value[41];
Result=sql_tm(&OrigSP,1);
switch(Result)
{
case 1:
case 2:
case 3:
case 4:break;
case 33: InsertRecord(); //新商品增加记录
Result=0;
break;
default:if(Result>100)
{
CalculateSum();//计算合计
InBuffer(-1,0x9904,3,Result-100);
sprintf(value,"%s %.2f",
SPLists->SPList[Result-100].spbm,
SPLists->SPList[Result-100].je);
ShowGuXian(value,1,0);
InBuffer(-1,0x9904,3,SPLists->RecNo);
Result=0; //已经存在的商品
}
break;
}
return Result;
}
//改变商品数量
void ChangeSPSL(int RecNo,char *sl,int Att)
{
double fsl;
char value[31];
if(RecNo>SPLists->RecordCount)
RecNo=SPLists->RecordCount;
fsl=atof(sl); //要改变的数量
if(!Att) //改变数量
{
/*fsl=(fsl>1000.0)?1000.0:fsl; //控制数量的范围
fsl=(fsl<-1000.0)?-1000.0:fsl; */
if(fsl!=SPLists->SPList[RecNo].sl)
{
SPLists->SPList[RecNo].sl=fsl; //设置数量
SPLists->SPList[RecNo].je=SPLists->SPList[RecNo].sj*fsl; //商品金额
SPLists->SPList[RecNo].ssje=SPLists->SPList[RecNo].sjsj*fsl;//应收金额
}
}
else //改变售价
{
if(SPLists->SPList[RecNo].bz)
{
MsgBoxEx("此商品不能够修改售价!",1);
return;
}
if(Param.Xgsjfs[0]=='0'||(Param.Xgsjfs[0]=='1'&&
(!strcmp(SPLists->SPList[RecNo].jyfs,"10"))))
{
if(SPLists->SPList[RecNo].yhl==0)
SPLists->SPList[RecNo].yhl = 1.0;
SPLists->SPList[RecNo].sj=fsl;
SPLists->SPList[RecNo].yhj=SPLists->SPList[RecNo].yhl*fsl;
if(SPLists->fklp.yhk.kh[0]!='\0') //已刷优惠卡
{
SPLists->SPList[RecNo].sjsj=SPLists->SPList[RecNo].yhj; //设置优惠价
SPLists->SPList[RecNo].ssje=SPLists->SPList[RecNo].yhj*SPLists->SPList[RecNo].sl;//实收金额
}
else
{
SPLists->SPList[RecNo].sjsj=SPLists->SPList[RecNo].sj;
SPLists->SPList[RecNo].ssje=SPLists->SPList[RecNo].sj*
SPLists->SPList[RecNo].sl;//实收金额
}
SPLists->SPList[RecNo].je=SPLists->SPList[RecNo].sj*SPLists->SPList[RecNo].sl;
}
else
if(fsl!=SPLists->SPList[RecNo].sjsj)
{
SPLists->SPList[RecNo].sjsj=fsl; //设置售价
SPLists->SPList[RecNo].ssje=SPLists->SPList[RecNo].sl*fsl;//应收金额
}
}
CalculateSum();//计算合计
sprintf(value,"%s %.2f",
SPLists->SPList[RecNo].spbm,
SPLists->SPList[RecNo].je);
ShowGuXian(value,1,0);
InBuffer(-1,WM_PAINTGRID,3,RecNo); //显示某行
if(Att)
{
SPLists->RecNo=SPLists->RecordCount+1; //记录移动到最后
InBuffer(-1,WM_PAINTGRID,3,SPLists->RecNo); //显示某行
}
}
//打折处理
void DaZhe(double zk,int Att) //Att 打折类型 0--单品,1--全部
{
int i;
if(zk>0)
{
zk=(zk>10)?10.0:zk;
zk=(zk<1)?1.0:zk;
zk=zk/10.0;
}
if(Att) //全部打折
{
if(zk<0)
{
zk=-zk; //变为正数
zk=zk/SPLists->spje; //计算折率
}
for(i=1;i<=SPLists->RecordCount;i++)
{
SPLists->SPList[i].zkl=zk;
SPLists->SPList[i].yhj=GetRound(SPLists->SPList[i].sj*zk);
SPLists->SPList[i].sjsj=SPLists->SPList[i].yhj;
SPLists->SPList[i].ssje=GetRound(SPLists->SPList[i].sjsj*
SPLists->SPList[i].sl);
SPLists->SPList[i].state=4; //设置打折商品标记
//InBuffer(-1,0x9904,3,i); //显示某行
}
CalculateSum();//计算合计
InBuffer(-1,0x9904,1,0); //显示某行
}
else
{
if(SPLists->SPList[SPLists->RecNo].bz)
{
MsgBoxEx("此商品不能够打折!",1);
return;
}
if(zk>0)
{
SPLists->SPList[SPLists->RecNo].zkl=zk;
SPLists->SPList[SPLists->RecNo].yhj=
GetRound(SPLists->SPList[SPLists->RecNo].sj*zk);//zh
SPLists->SPList[SPLists->RecNo].sjsj=
GetRound(SPLists->SPList[SPLists->RecNo].sj*zk);
SPLists->SPList[SPLists->RecNo].ssje=
GetRound(SPLists->SPList[SPLists->RecNo].sjsj*
SPLists->SPList[SPLists->RecNo].sl);
}
else
if(SPLists->SPList[SPLists->RecNo].sl>0)
SPLists->SPList[SPLists->RecNo].ssje=0-zk;
else
SPLists->SPList[SPLists->RecNo].ssje=zk;
SPLists->SPList[SPLists->RecNo].state=4; //设置打折商品标记
CalculateSum();//计算合计
InBuffer(-1,0x9904,3,SPLists->RecNo); //显示某行
}
}
//优惠处理
//void RemoveValidChar(
void YouHuiChuLi(char *skh)
{
int i;
char kh[11],mm[7],Mark;
Mark = SPLists->fklp.yhk.kh[0];
if(Mark=='\0')
{
uf_strmidEx(skh,skh);
uf_strmid(kh,skh,0,10); //卡号
uf_strmid(mm,skh,10,6); //密码
strcpy(SPLists->fklp.yhk.kh,kh);
strcpy(SPLists->fklp.yhk.mm,mm);
}
if(Mark!='\0'||sql_yhk(&(SPLists->fklp.yhk))) //是否有效优惠卡
{
strcpy(kh,SPLists->fklp.yhk.kh);
for(i=1;i<=SPLists->RecordCount;i++)
if(kh[0]==g_VIPsw[0]&&Param.Gbksy[0]!='0') //使用贵宾卡
{
if(SPLists->fklp.yhk.yhl==0)
SPLists->fklp.yhk.yhl=atof(g_VIPyhl);
SPLists->fklp.yhk.VIP=1;
if(Param.Gbksy[0]=='1'||SPLists->SPList[i].yhl>SPLists->fklp.yhk.yhl)
SPLists->SPList[i].yhl=SPLists->fklp.yhk.yhl;
SPLists->SPList[i].sjsj=SPLists->SPList[i].sj*
SPLists->SPList[i].yhl; //实际售价
SPLists->SPList[i].ssje=SPLists->SPList[i].sjsj*
SPLists->SPList[i].sl;
}
else
if(SPLists->SPList[i].state<3||SPLists->SPList[i].state>5) //优惠处理
{
SPLists->SPList[i].sjsj=SPLists->SPList[i].yhj; //实际售价等于优惠价
SPLists->SPList[i].ssje=SPLists->SPList[i].sjsj*
SPLists->SPList[i].sl;
}
//g_hyxf=1;//zh***
CalculateSum(); //计算合计
//显示顾显
InBuffer(-1,0x9904,1,0); //显示某行
};
}
//信用卡
int GetFreeXYK(void)
{
int k;
for(k=0;k<_MAXXYK;k++)
if(SPLists->fklp.xyk[k].km[0]=='\0')
return k;
return -1;
}
//提货卡管理
double TiHuoKa(char *skh,double fkce,int *xh)
{
int k,Mark=1;
double Result=0,ce;
char kh[11],mm[7];
if(!fkce) return 0;
uf_strmidEx(skh,skh); //去掉字符串开头的特殊字符
uf_strmid(kh,skh,0,10); //卡号
uf_strmid(mm,skh,10,6); //密码
k=sql_checkthk(kh); //检查提货卡是否已经存在
if(k!=-1) //提货卡未存在,k是第一个提货卡空结构的索引
{
strcpy(SPLists->fklp.thk[k].kh,kh);
strcpy(SPLists->fklp.thk[k].mm,mm);
if(!sql_thk(&(SPLists->fklp.thk[k]))) //查询提货卡
SPLists->fklp.thk[k].kh[0]='\0'; //提货卡查询失败
else
{
SPLists->fklp.thk[k].xh=k+1;
*xh=k;
if(fkce<0) //是退货
{
if(Param.Thk[1]=='1') //限制退货金额
{
ce=SPLists->fklp.thk[k].dqye-SPLists->fklp.thk[k].fkje;
if(ce>=0) Result=0;
else if(ce<fkce) //余额必须小于发卡金额
Result=fkce;
else Result=ce; //退货金额
}
else Result=fkce;
if(Result&&Param.Thk[2]=='1')
if(!InPutPassWord(g_cashcode))
Result=0;
}
else
{
ce=SPLists->fklp.thk[k].dqye;
if(ce>fkce) Result=fkce;
else Result=ce;
}
if(Result)
{
Result = uf_round(Result,2);
SPLists->fklp.thk[k].xzje=Result; //下帐金额
SPLists->fklp.thk[k].xye=SPLists->fklp.thk[k].dqye-Result;
if(Param.Thk[3]=='2'||(Param.Thk[3]=='1'&&Result<-0.01))
if(!ShowTiHuoKa(&(SPLists->fklp.thk[k])))
Result=0;
else
Result=SPLists->fklp.thk[k].xzje;
}
if(!Result)
SPLists->fklp.thk[k].kh[0]='\0';
}
}
return Result;
}
//提货卡查询
void QueryTHK(char *skh)
{
double Result=0;
char kh[11],mm[7];
THK tempthk;
uf_strmidEx(skh,skh);
uf_strmid(kh,skh,0,10); //卡号
uf_strmid(mm,skh,10,6); //密码
strcpy(tempthk.kh,kh);
strcpy(tempthk.mm,mm);
if(sql_thk(&tempthk)) //查询提货卡
ShowTiHuoKaEx(&tempthk);
sql_thkclose();
return;
}
//结帐
int JieZhang(char *Value)
{
double je;
if(!strcmp(Value,"")) return 1; //未付款
je=atof(Value);
if(je<SPLists->ysje) return 2; //付款不足
SPLists->fklp.xjje=je;
SPLists->fklp.ssje=je;
SPLists->fklp.zbje=je-SPLists->ysje;
InBuffer(-1,0x9907,0,0); //金额找零
return 0;
}
//挂起检查
int GuaQiCheck(void)
{
if(_SPListCount>=__WorkBuffer) return 2; //挂起数不能超过规定笔数
if(!SPLists->RecordCount) return 1; //当前无销售商品,不用挂起
return 0;
}
int GuaQi(char *GqName)
{
// FILE *stream;
int i;
FILE *fp;
char FileName[51];
for(i=0;i<__WorkBuffer;i++)
if(__GQList[i].lsh==0) //找一个空闲的挂起区
{
sprintf(FileName,"DATA\\GQ%d.DAT",i+1);
fp = fopen(FileName,"wb+");
if(fp==NULL) return -1;
// g_lsh++; //流水号加1
//保存到磁盘
fwrite((char *)SPLists,sizeof(_SPLists),1,fp);
fclose(fp);
//
if(Param.Gqjg[0]=='2')
if(!sql_insertgq(i+1,SPLists->RecordCount,SPLists->spje,SPLists->ysje))
return -1;
__GQList[i].lsh=i+1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -