📄 poslib.prg
字号:
******************************************************
&& 版本号: VER5.0
&& 逐条打印,电子秤条形码,店内条形码,顾客屏,error.txt处理库,营业员报表,收款员柜组报表,
&& 逐条打印标准版 V2.3
&& 覆盖xslsnet.txt前先用fopen()函数访问
&& 操作日志 czrz
&& 前台盘点 qtpd
&& 储值会员卡 hyk_hj
&& 打折会员卡 hyj_xs
&& 前台查询 qtcx
******************************************************
procedure creat1
private strr,shul,mdph,k,st,zj,i,tt,fh,fs1,fs2,fs,jyj1,sl1
if not used([temp])
use temp in 0
endif
if not used([posfzk])
use dat\posfzk in 0
endif
fs = [ ]
fs1= [ ]
fs2= [ ]
sele temp
go bott
if len(allt(tzm))=3
fs1=jy(1,1)
fs2=jy(2,1)
else
fs1=jsbz
fs2=fs1
endif
do case
case allt(fs1)=[0].and.allt(fs2)=[0]
case val(fs1)=val(fs2)
fs='('+allt(fs1)+')'
case val(fs1)#val(fs2)
fs='('+allt(fs1)+'&'+allt(fs2)+')'
endcase
sele temp
sum round(jyj*sl,je_jiao) to zj
sum round(yj*sl ,je_jiao) to yj_zj
sum sl to li_hjsl
sum ssje to ss_zj
strr=substr([原价合计]+space(22),1,22)+str(li_hjsl,8,2)+str(thbz*yj_zj,8,2)
do prtproce with strr
if yj_zj-ss_zj > 0
strr=substr([优惠]+space(28),1,28)+str(thbz*(yj_zj-ss_zj),8,2)
do prtproce with strr
endif
if FK-HJ+HJYH <>0
cd_str3=str(thbz*FK,10,2)
cd_str4=str(FK-HJ+HJYH,10,2)
strr='付款 '+cd_str3+space(6)+' 找零 '+cd_str4
do prtproce with strr
endif
If jy(1,2) <> 0
strr=Left(jy(1,4)+space(10),10)+space(17)+str(jy(1,2),10,2)
do prtproce with strr
EndIf
If jy(2,2) <> 0
strr=Left(jy(2,4)+space(10),10)+space(17)+str(jy(2,2),10,2)
do prtproce with strr
EndIf
if gi_qtpdbz=0
sele temp
go bott
* 打印红字
if thbz=-1
do prtproce with chr(27)+chr(114)+chr(1)
strr=space(16)+'退货交易'
do prtproce with strr
endif
***********************储值卡支付明细
if gi_card_num > 0
ldc_kje=0.00
for i=1 to gi_card_num
strr=hyk(i,5)
ldc_kje=ldc_kje+hyk(i,2)
do prtproce with strr
endfor
**************************
ldc_xjje=ss_zj-ldc_kje
if ldc_xjje>0
strr='现金结算'+space(3)+str(ldc_xjje,10,2)
do prtproce with strr
endif
endif
endif
sele temp
strr=space(2)+jysj+space(19)+'No.'+padl(allt(sksjph),5,[0])
do prtproce with strr
* 打印红字尾
if thbz=-1
do prtproce with chr(27)+chr(114)+chr(0)+chr(10)
endif
select temp
if gi_qtpdbz=1.and. allt(tzm)='p'
strr=space(6)+'此单据为盘点单!'
do prtproce with strr
endif
select posfzk
do creat_end
select posfzk
use
return
*=====================================================
* 输入收款员编号及密码
*
*=====================================================
procedure srsky
do ygk_pro
P_Color='B/W,W+/B,W/W,W+/B,W/B,W+/B,GR/W,W/B,N/W,W+/W'
=DefiWind('sky',8,20,17,60,"colo &P_Color titl '收款员登录'")
=ActiWind('sky')
=dnrect(C2X(2),R2Y(1)-5,C2X(36),R2Y(8)+2)
=uprect(C2X(2)+1,R2Y(1)-4,C2X(36)-1,R2Y(8)+1)
=ShowIco(C2X(34)-5,R2Y(7)-3,'NOTE.ICO')
@ 2,7 say [收款员编号:] color 8/7
@ 4,7 say [收款员密码:] color 8/7
=dnrect(C2X(20)-2,R2Y(2)-2,C2X(24)+2,R2Y(3))
=dnrect(C2X(20)-2,R2Y(4)-2,C2X(28)+2,R2Y(5))
select 0
use dat\yuangzd
for i=1 to 3
set cursor on
set colo to w+/b,b/w
skybh=[]
skymm=space(8)
count=0
gs_pass=space(8)
@ 2,20 get skybh size 1,4 pict '9999'
read
set cursor off
gs_pass=space(8)
@4,20 get gs_pass when passw(8,4,20)
read cycle
skymm=allt(gs_pass)
sele yuangzd
locate for gonghao==skybh
if found()
if allt(leixin)==[收].and.allt(kouling)==allt(skymm)
SKYM=allt(xingmin)
sk_n=skybh
sk_m=skym
gs_skydj=gzbh
exit
endif
endif
=ShowIco(C2X(3)+5,R2Y(5)+10,'FACE04.ICO')
if i=3
@ 6,9 say [收款员密码错,退出!] color 8/7
else
@ 6,9 say [收款员密码错,请重新输入!] color 8/7
endif
@ 4,20 say space(8) color 8/7
do delay1
do delay1
set color to 7/7
@ 6,9 clear to 6,33
* 状态栏标题显示
=SetFillStyle(1,7)
=DrawBar(C2X(3),R2Y(5),C2X(7)+5,R2Y(7)+5)
if i=3
select yuangzd
use
=relewind([sky])
return [ ]
endif
endfor
=ShowIco(C2X(3)+5,R2Y(5)+10,'FACE03.ICO')
@ 6,9 say [ 收款员登录成功!] color 8/7
do delay1
=relewind('sky')
select yuangzd
use
do creat_end
return 1
*===================================================
* 建立主窗口
*
*===================================================
procedure mainwind
if not used("posfzk")
use dat\posfzk in 0
endif
=SetFillStyle(1,7) && 状态栏标题显示
=DrawBar(1,4,639,449)
=setcolor(15) && 亮白色
=drawline(0,3,639,3) && 状态栏框线
=drawline(0,3,0,449) && 状态栏框线
=dnrect(5,8,635,32)
=SetFillStyle(1,1) && 状态栏标题显示
=DrawBar(6,9,634,31)
=SetFillStyle(1,7) && 状态栏标题显示
=uprect(8,12,25,27)
=DrawBar(9,13,24,26)
=setcolor(15) && 亮白色
=drawline(11,19,22,19) && 状态栏框线
=setcolor(1) && 亮白色
=drawline(12,20,23,20) && 状态栏框线
=sethzcolor(15)
=sethzbkcolor(1)
=sethzfont(3)
=sethzsize(16,16,5)
sele posfzk
mc=allt(scmg)+"前台销售子系统"
=ShowHZ(200,12,mc) && 以新的设置显示文字
=sethzsize(16,16,0)
=showhz(565,12,"[V4.6版]")
rq=dtoc(date())
=showhz(30,12,left(rq,4)+'年'+subs(rq,6,2)+'月'+right(rq,2)+'日')
=sethzcolor(15)
=sethzbkcolor(3)
=sethzfont(2)
=sethzsize(16,16,0)
=sethzstyle(_normal)
=uprect(3,37,27,60) && 建立栏目标题1
=SetFillStyle(1,3) && 状态栏标题显示
=DrawBar(4,38,26,59)
=ShowHZ(12,42,"#") && 以新的设置显示文字
=uprect(28,37,83,60) && 建立栏目标题2
=DrawBar(29,38,82,59)
=ShowHZ(40,41,"编码") && 以新的设置显示文字
=uprect(84,37,190,60) && 建立栏目标题3
=DrawBar(85,38,189,59)
=ShowHZ(105,41,"条 形 码") && 以新的设置显示文字
=uprect(191,37,303,60) && 建立栏目标题4
=DrawBar(192,38,302,59)
=ShowHZ(220,41,"名 称") && 以新的设置显示文字
=uprect(304,37,371,60) && 建立栏目标题5
=DrawBar(305,38,370,59)
=ShowHZ(318,41,"规 格") && 以新的设置显示文字
=uprect(372,37,459,60) && 建立栏目标题6
=DrawBar(373,38,458,59)
=ShowHZ(400,41,"单 价") && 以新的设置显示文字
=uprect(460,37,546,60) && 建立栏目标题7
=DrawBar(461,38,545,59)
=ShowHZ(483,41,"数 量") && 以新的设置显示文字
=uprect(547,37,635,60) && 建立栏目标题8
=DrawBar(548,38,634,59)
=ShowHZ(570,41,"小 计") && 以新的设置显示文字
=dnrect(4,64,635,425) && 建立栏目显示区域
=setcolor(0) && 黑色
*****建立信息栏(三个)
=uprect(5,315,190,425) && 信息栏1
=SetFillStyle(1,3) && 状态栏标题显示
=DrawBar(6,316,189,424)
=sethzcolor(15)
=sethzbkcolor(3)
=ShowHZ(C2X(1),R2Y(18),'数据') && @ 16,1 say [ 数据] COLOR 8/10
=ShowHZ(C2X(1),R2Y(20),'收款员') && @ 18,1 say [收款员] COLOR 8/10
=ShowHZ(C2X(1),R2Y(22),'营业员') && @ 20,1 say [营业员] COLOR 8/10
=ShowIco(145,360,'COMPUTER.ICO')
=ShowHZ(C2X(18),R2Y(22),right(allt(skjh),2)+'号')
=dnrect(C2X(6)-2,R2Y(18)-2,C2X(21)+2,R2Y(19)) &&=Get(16,8,'sj','size 1,13')
=dnrect(C2X(8)-2,R2Y(20)-2,C2X(16),R2Y(21)) &&=Get(18,8,'sky','size 1,8')
=dnrect(C2X(8)-2,R2Y(22)-2,C2X(16),R2Y(23)) &&=Get(20,8,'yyy','size 1,8')
=uprect(191,315,355,425) && 信息栏2
=SetFillStyle(1,3) && 状态栏标题显示
=DrawBar(192,316,354,424)
=sethzcolor(15)
=sethzbkcolor(3)
=ShowHZ(C2X(25),R2Y(18),[合计:]) && @ 16,25 say [合计:] COLOR 8/10
=ShowHZ(C2X(25),R2Y(20),[收款:]) && @ 18,25 say [收款:] COLOR 8/10
=ShowHZ(C2X(25),R2Y(22),[找零:]) && @ 20,25 say [找零:] COLOR 8/10
=dnrect(C2X(31)-2,R2Y(18)-2,C2X(41),R2Y(19)) &&=Get(16,31,'hj','size 1,10')
=dnrect(C2X(31)-2,R2Y(20)-2,C2X(41),R2Y(21)) &&=Get(18,31,'fk','size 1,10')
=dnrect(C2X(31)-2,R2Y(22)-2,C2X(41),R2Y(23)) &&=Get(20,31,'zl','size 1,5')
=uprect(356,315,633,425) && 信息栏3
=SetFillStyle(1,3) && 状态栏标题显示
=DrawBar(357,316,632,424)
=sethzcolor(15)
=sethzbkcolor(3)
=ShowHZ(C2X(46),R2Y(18),[结算方式]) && @ 16,46 say [结算方式]
=ShowHZ(C2X(46),R2Y(20),[交易性质]) && @ 18,46 say [ 卡号] COLOR 8/10
=ShowHZ(C2X(46),R2Y(22),[合计数量]) && @ 20,46 say [ 状态] COLOR 8/10
=ShowHZ(C2X(66),R2Y(22),[流水号])
=DNRECT(C2X(60)-2,R2Y(18)-2,C2X(68),R2Y(19))
=DNRECT(C2X(55)-2,R2Y(20)-2,C2X(75),R2Y(21))
=DNRECT(C2X(55)-2,R2Y(22)-2,C2X(65),R2Y(23))
=DNRECT(C2X(73)-2,R2Y(22)-2,C2X(78),R2Y(23))
*=ShowIco(363,387,'KEY.ICO')
@ 18, 6 say space(15) color 8/7
@ 20, 8 say space(8) color 8/7
@ 22, 8 say space(8) color 8/7
@ 18,31 say space(10) color 8/7
@ 20,31 say space(10) color 8/7
@ 22,31 say space(10) color 8/7
@ 22,55 say space(10) color 8/7
@ 22,73 say str(piaohao,5) color 8/7
@ 18,60 say '●现金 ' color 8/7
@ 20,55 say ' ● 销售 ○退货 ' color 8/7
* 建立提示栏
=setcolor(7) && 白色
=drawline(2,449,549,449) && 状态栏低线
=setcolor(15) && 亮白色
=drawline(1,431,1,449) && 状态栏框线
=drawline(1,431,549,431) && 状态栏框线
=drawline(68,431,68,449) && 状态栏框线
=setcolor(0) && 黑色
=drawline(67,431,67,449) && 状态栏隔离线
=drawline(550,431,550,449) && 状态栏隔离线
=SetFillStyle(1,6) && 状态栏标题显示
=DrawBar(2,432,66,448)
=sethzcolor(15)
=sethzbkcolor(3)
=ShowHZ(3,433," 提示栏 ")
=plineputs('开发商: 杭州西软电子技术开发有限公司 地址: 杭州文三路121号 电话: (0571)8822279 ',0,15,3)
=setcolor(15) && 设置时钟边框线颜色
=rect(551,431,639,449) && 画时钟边框线
set clock to 24,69 && 显示时钟
=SetFillStyle(1,1) && 设置提示栏底色(紫红)
=DrawBar(69,432,500,448)
=sethzcolor(15)
=sethzbkcolor(1)
do wlpd
if flag_net=[OK]
=ShowHZ(501,433,'*网络*')
else
=ShowHZ(501,433,'*单机*')
endif
@ 20,8 say padr(allt(sk_m),8,[ ]) color 8/7
if used([posfbk])
select posfzk
use
endif
return
*=====================================================
* 判断网络通否
*
*=====================================================
procedure wlpd
=file('f:\hpos\posnet.txt')
=file('f:\hpos\posnet.txt')
=file('f:\hpos\posnet.txt')
* 判断网络通否
if file('f:\hpos\posnet.txt')
flag_net='OK'
else
flag_net='FALSE'
endif
*=======================================
* 在提示栏内显示信息
*
*=======================================
procedure tishil
para st
=SetFillStyle(1,1) && 设置提示栏底色(紫红)
=DrawBar(69,432,500,448)
=sethzcolor(15)
=sethzbkcolor(1)
=ShowHZ(75,433,st)
return
*=======================================
*在主窗口中显示信息1(单品管理)
*=======================================
procedure disp1
parameter st
private st
select spmx
aa(2)=substr(allt(spmc),1,14)
aa(3)=substr(allt(spguige),1,10)
aa(6)=spma
aa(7)=yytxm
if aa(7)='00000000' .or. aa(7)='0000000000000' .or. aa(7)='000000000000'
aa(7)=space(13)
endif
aa(8)=[ ]
aa(9)=aa(4)
aa(1)=right([00]+allt(str(st)),2)
aa(20)=bum
aa(21)=ban
aa(22)=zu
if ST<=13
@ st+3,1 say allt(aa(1)) color 8/7
@ st+3,4 say allt(aa(6)) color 8/7
@ st+3,11 say allt(aa(7)) color 8/7
@ st+3,24 say aa(2) color 8/7
@ st+3,38 say aa(3) color 8/7
@ st+3,48 say str(aa(4),10,2) color 8/7
if right(str(aa(10),10,3),4)='.000'
@ st+3,58 say str(int(aa(10)),10) color 8/7
else
@ st+3,58 say str(aa(10),10,3) color 8/7
endif
@ st+3,69 say str(aa(11),10,2) color 8/7
else
if sfg=0
scroll 4,1,16,79,1
endif
@ 16,1 say allt(aa(1)) color 8/7
@ 16,4 say allt(aa(6)) color 8/7
@ 16,11 say allt(aa(7)) color 8/7
@ 16,24 say allt(aa(2)) color 8/7
@ 16,38 say aa(3) color 8/7
@ 16,48 say str(aa(4),10,2) color 8/7
if right(str(aa(10),10,3),4)='.000'
@ 16,58 say str(int(aa(10)),10) color 8/7
else
@ 16,58 say str(aa(10),10,3) color 8/7
endif
@ 16,69 say str(aa(11),10,2) color 8/7
sfg=0
endif
return
*=======================================
*在主窗口中显示信息2(生鲜管理)
*=======================================
procedure disp2
parameter st
private st,k
aa(2)=substr(allt(spmc),1,20)
aa(4)=lingshoj
aa(6)=spma
aa(7)=yytxm
if aa(7)='00000000' .or. aa(7)='0000000000000' .or. aa(7)='000000000000'
aa(7)=space(13)
endif
aa(8)=[ ]
aa(9)=aa(4)
aa(11)=val(str(aa(9)*aa(10),10,1))
aa(1)=right([00]+allt(str(st)),2)
aa(22)=space(2)
aa(18)=space(2)
if ST<=13
@ st+3,1 say allt(aa(1)) color 8/7
@ st+3,4 say allt(aa(6)) color 8/7
@ st+3,11 say allt(aa(7)) color 8/7
@ st+3,24 say aa(2) color 8/7
@ st+3,38 say aa(3) color 8/7
@ st+3,48 say str(aa(4),10,2) color 8/7
if right(str(aa(10),10,3),4)='.000'
@ st+3,58 say str(int(aa(10)),10) color 8/7
else
@ st+3,58 say str(aa(10),10,3) color 8/7
endif
@ st+3,69 say str(aa(11),10,2) color 8/7
else
if sfg=0
scroll 4,1,16,79,1
endif
@ 16,1 say allt(aa(1)) color 8/7
@ 16,4 say allt(aa(6)) color 8/7
@ 16,11 say allt(aa(7)) color 8/7
@ 16,24 say allt(aa(2)) color 8/7
@ 16,38 say aa(3) color 8/7
@ 16,48 say str(aa(4),10,2) color 8/7
if right(str(aa(10),10,3),4)='.000'
@ 16,58 say str(int(aa(10)),10) color 8/7
else
@ 16,58 say str(aa(10),10,3) color 8/7
endif
@ 16,69 say str(aa(11),10,2) color 8/7
sfg=0
endif
return
*=================================================
*初始化数据
*=================================================
procedure cssj
private st,k
chc = []
no = 0
nost= []
if m.end=1
if gi_qtpdbz=1
@ 18,60 say '●盘点 ' color 8/7
else
@ 18,60 say '●现金 ' color 8/7
endif
@ 20,55 say ' ● 销售 ○退货 ' color 8/7
endif
if thbz=1
@ 20,55 say ' ● 销售 ○退货 ' color 8/7
else
@ 20,55 say ' ○ 销售 ●退货 ' color 8/7
endif
if (m.end=1.or.num=0)
aa(1)=space(2)
aa(2)=space(14)
aa(3)=space(8)
aa(4)=0.00
aa(5)=[1]
aa(6)=space(6)
aa(7)=space(13)
aa(8)=space(4)
aa(9)=0.00
aa(10)=0.00
aa(11)=0.00
aa(12)=left(dtoc(date()),4)+substr(dtoc(date()),6,2)+right(dtoc(date()),2)
aa(13)=space(8)
aa(14)=yy_n
aa(15)=sk_n
aa(16)=space(5)
aa(17)=[00]
aa(18)=space(2)
aa(19)=skjh
aa(20)=[ ]
aa(21)=[ ]
aa(22)=[ ]
aa(23)=[03]
for k=1 to 2
jy(k,1)=[00]
jy(k,2)=0.00
jy(k,3)=0.00
jy(k,4)=[现金]
endfor
for k=1 to 50
hyk(k,1)=space(10)
hyk(k,2)=0.00
hyk(k,3)=[00]
hyk(k,4)=0.00
hyk(k,5)=space(30)
endfor
gi_card_num= 0
gi_card_je = 0
gdc_fkje = 0.00
fss = 1
HJ = 0.00
fk = 0.00
hjyh = 0.00
m.end= 1
sfg =0
tzbz =[1]
endif
return
*=================================================
*输入折让
*=================================================
procedure srzr
if sfg=0
=xx([请合计后再进行折让!],0)
return
endif
if no>=hj
=xx([数据超出范围!],0)
return
endif
tzbz=[2]
hjyh=round(no,2)+hjyh
if not used("temp")
use temp in 0
endif
sele temp
go top
zkl=round((hj-hjyh)/hj,6)
do while !eof()
repl jyj with round(jyj*zkl,6)
repl ssje with round(jyj*sl,6)
skip
enddo
sum ssje to dsp_total
cd_str1=space(20)
cd_str3=space(30)
cd_str2='TOTAL '+str(dsp_total,10,2)
cd_str4='总计 '+str(dsp_total,10,2)
do dipproce with cd_str1,cd_str2,cd_str3,cd_str4
hjzkbz=1
close database
return
*=================================================
* 顾客付款:输入付款金额
*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -