⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 poslib.prg

📁 超市收银系统,所需系统dos6.22,ucdos,foxpro另外加上一些外设的驱动程序.
💻 PRG
📖 第 1 页 / 共 5 页
字号:
******************************************************
&& 版本号: 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 + -