xrpos.prg

来自「超市收银系统,所需系统dos6.22,ucdos,foxpro另外加上一些外设的」· PRG 代码 · 共 940 行 · 第 1/2 页

PRG
940
字号
			  loop
		   endif  
		a=goodbye()
		if a=3
			exit
		endif
		loop
	
	* 固定折扣
	case chc='30'                                 
		if not used([posfzk])
			use dat\posfzk in 0
		endif
		sele posfzk
		no=val(fixdisc)
		use
		if no<=0 .or. no>99
			no=0
			=xx([无固定折扣权限!],0)
			loop
		else
			do srzk
			do hjxs
		endif
	
	* 总清
	case chc='45'                                
      if gi_card_num>0 .and. val(gs_hjbz)>0
			=xx([会员卡已扣款,不能总清!按任意键继续],1)
         loop
      endif   
		if not used([posfzk])
			use dat\posfzk in 0
		endif
		sele posfzk
		if zq=[0].and.gs_skydj#'01'
			do qxxy
			if gs_qx='n'
				select posfzk
				use
				=xx([无总清权限!],0)
				loop
			endif
			gs_qx='n'
		endif
		select posfzk
		use
*		if prt_sheet = '1' .and.verify_pw()
*			loop
*		endif
		if not used([temp])
			use temp in 0
		endif
		flag_jmk = 0
		hjzkbz   = 0
		m.end    = 1
		dzbz     = [0]
		if num#0
			do czrz
			strr=[     此小票作废!]
			do prtproce with strr
			do creat_end
		endif
		sele temp
		zap
		do clswin
		@ 8,15 say space(50)
		jczbz=1
		disp1='WELCOME YOU'
		disp2=dtoc(date())
		disp3='欢迎光临'
		disp4='      '+left(disp2,4)+'年'+subs(disp2,6,2)+'月'+right(disp2,2)+'日'
		do dipproce with disp1,disp2,disp3,disp4
		close database
	* 报表
	case chc='28'      
		if num#0
			=xx([请把这笔交易完成后再进行此项操作!],0)
			loop
		endif
		if not used([posfzk])
			use dat\posfzk in 0
		endif
		sele posfzk
		if bbdy=[0].and.gs_skydj#[01]
			do qxxy
			if gs_qx=[n]
				select posfzk
				use
				=xx([无报表打印权限!],0)
				loop
			endif
			gs_qx=[n]
		endif
		select posfzk
		use
		do bbdy
	endcase
enddo

*=======================================
*  UCDOS5 SDK For Foxpro
*
*=======================================
procedure loadsdk
priv FoxVer
FoxVer=vers()
do case
case "2.5" $ FoxVer
	if "(X)" $ FoxVer
		set libr to FP25X.plb addi
	else
		set libr to FP25.plb addi
	endi
case "2.6" $ FoxVer
	if "(X)" $ FoxVer
		set libr to FP26X.plb addi
	else
		set libr to FP26.plb addi
	endi
othe
	? "SDK不支持您所使用的FoxPro版本!"
	? "SDK不支持您所使用的FoxPro版本!"
	wait
	retu
endc

publ _COPY,_AND,_OR,_XOR,  _NORMAL,_SHADOW,_PARARENT,_OUTLINE,_BACK,_SLOPE,;
_SCROLL,  _LEFTUP,_LEFTDOWN,_RIGHTUP,_RIGHTDOWN,;
_LINE,_BAR,_PIE,_BAR3D,_PIE3D

_COPY      =0
_AND       =1
_OR        =2
_XOR       =3

_NORMAL    =0
_SHADOW    =1
_PARARENT  =2
_OUTLINE   =4
_BACK      =8
_SLOPE     =16
_SCROLL    =32

_LEFTUP    =1
_LEFTDOWN  =2
_RIGHTUP   =3
_RIGHTDOWN =4

_LINE      =1
_BAR       =2
_PIE       =3
_BAR3D     =18
_PIE3D     =19

return 

*==================================
* 初始化数据
*
*==================================

procedure initdata

public dimension aa(23)
* aa( 1)序    号; aa( 2)商品名称; aa( 3)      规格; aa(4)   原价; aa( 5)特征码;
* aa( 6)商品编码; aa( 7)条形  码; aa( 8)商品分类码; aa(9) 交易价; aa(10)  数量;
* aa(11)实收金额; aa(12)日    期; aa(13)      时间; aa(14)营业员; aa(15)收款员;
* aa(16)小票  号; aa(17)结算标志; aa(18)  顾客类型; aa(19)  机号; aa(20)    部;
* aa(21)      班; aa(22)      组; aa(23)

public dimension jy(2,4)
public dimension hyk(50,5)   &&含金会员卡数据
public gi_card_num           &&含金卡刷卡总数
public gi_card_je            &&含金卡刷卡总金额
public HJ         && 合计
public HJYH       && 合计优惠
public FK         && 付款
public m.end      && 交易结果标志
public no         &&
public xh
public nost       &&键入数据(字符串)
public chc        &&功能码
public main_cur   &&主币
public x
public y
public num        && 交易序号
public sfg        && 单品输入完成标志(按'合计'键),1:已完成商品输入
public thbz       && 退货标志
public bl         && 部类(对应键盘上的30种部类)
public yy_n       && 营业员编码
public sk_n       && 收款员编码
public yy_m       && 营业员名
public sk_m       && 收款员名
public skjh       && 收款机号
public m.jh       &&
public tzbz       && 特征码标志(按'销售','批发','退货'键)
public fss        && 付款次数
public oldtime
public curtime
public flag_net   && 联网/脱机:OK/False
public scmc       && 汉字商场名称
public scdh       && 商场电话
public flag_jmk   &&
public scrollfg   && 滚屏标志,上滚一行为-1,下滚一杭为1
public kahao      && 会员卡号
public lastnost
public jczbz      && 减操作标志(用于逐条打印)
public hjzkbz     && 含金折扣标志(用于逐条打印)
public gi_qtpdbz  && 前台盘点标志
public gs_qx      && 权限
public shul       && 小票的数量部分
public strr       && 小票的商品信息部分
public ls_strr    && 小票的商品信息部分
public gs_skydj   && 收款员等级
public gs_pass    && Password
public gs_dipbz   && 客显显示单双排标志
public gi_cutbz   && 打印机是否切纸标志
public pospath    && 服务器中本POP机数据存储路径
public prt_mode   && 是否打印小票标志
public gs_syrm    && XXXXXXXX.
* 第一位: 0表示逐行,1表示成批
* 第二位: 0表示格式0,1表示格式1等
* 		格式0: 两行打印,内容编码,原价,名称,交易价,数量,小计
* 		格式1: 一行打印,内容编码,名称,数量,小计
* 第三位: 0表示金额到角,1表示金额到分
* 第四位: 0表示系统采用变价条码,即9开头条码,1为否
public pmod_sel   && 批打印
public fmt_sel    && 打印格式选择
public je_jiao    && 金额精确到角或分标志 1金额到分/0金额到角
public gs_bjtmbz  && 变价条码,即9开头条码,1为否
public prt_sheet  && 减操作和总清是否需要密码,1:需要密码
public dzbz       && 打折标志
public gs_yetai   && 业态,分超市和零售,在posfzk的lw字段中表述,0为超1为零

public gs_jmkh    && 加密卡号
public gs_kh      && 卡号
public gs_ckrxm   && 持卡人姓名
public gdc_kye    && 卡余额
public gs_khjmbz  && 卡号加密标志
public gs_fbbh    && 辅币编号
public gs_fbmc    && 辅币名称
public gs_skbz    && 刷卡标志
public gs_hjbz    && 含金标志
public gs_hyj     && 是否按会员价销售标志
public gdc_fkje   && 付款金额

gdc_fkje=0.00
gs_ckrxm=[]
gs_kye  =0
scrollfg=0
if not used([posfzk])
	use dat\posfzk in 0
endif
gi_card_num = 0
gi_card_je  = 0.00
gi_cutbz    = [0]
gs_pass     = space(1)
gs_skydj    = [00]
gi_qtpdbz   = 0
gi_dzk      = 0
num         = 0
gs_qx       = [n]
gi_=0
hjzkbz=0
jczbz=1
aa=0.00
lastnost=''
flag_jmk=0
x=8
y=12
ksw=[ ]
hj=0.00
hjyh=0.00
fk=0.00
sfg=0
m.end=1
yy_n=space(4)
sk_n=space(4)
yy_m=space(8)
sk_m=space(8)
thbz=1
bl=[ ]
yj=0.00
tzbz=[1]
fss=1
flag_net='OK'
dzbz = '0'
select posfzk
skjh=jihao
m.jh=right(allt(skjh),2)
gs_syrm=syrm
pmod_sel=substr(gs_syrm,1,1)  && '0'逐行打印,1完成交易后一次打印
fmt_sel=substr(gs_syrm,2,1)   && 打印格式,'0'两行详打,'1'一行简打
je_jiao=val(substr(gs_syrm,3,1))+1
gs_bjtmbz=substr(gs_syrm,4,1)   && 
gs_yetai=allt(lw)
pospath='f:\pos'+m.jh
prt_mode = prtmode
prt_sheet = prtsheet
if len(trim(prt_mode)) = 0
	prt_mode = '0'
endif
if len(trim(prt_sheet)) = 0
	prt_sheet = '0'
endif
scmc=alltrim(scmg)
scdh=allt(dhhm)
close database
return

*======================================
* 初始化设备
*
*======================================
procedure initdevice

if not used([dip_conf])
	use dat\dip_conf in 0
endif
if not used([prn_conf])
	use dat\prn_conf in 0
endif

select dip_conf
loca for status=[1]
if found()
	gs_dipbz=row_num
	if len(allt(file_nam))>0
		app_name=allt(file_nam)
		load &app_name
	endif
	if dip_type=[ste_c]
     	set libr to cvfd addi
		* 邮通客显
		do vfdinit       
	endif
	if dip_type=[ste]
	    set libr to display addi
    endif
else
	* 没有配置顾客显示屏
	gs_dipbz='0'         
endif

select prn_conf
loca for status=[1]
if found()
	gi_cutbz=cut_status
endif
if found().and.len(allt(file_nam))>0
	app_nam=allt(file_nam)
	load &app_nam
	if allt(prn_type)=[sureone]
		call ibmprt with [Z1]
	endif
endif
close database
return

*============================================
*
*
*============================================
procedure vfdinit
private st,st1

st  = dtoc(date())
st  = left(st,4)+'年'+subs(st,6,2)+'月'+right(st,2)+'日'
st1 = ctow(date())
=initcomm()
=show(padc("欢迎光临",30,' '),0,0)
=show(padr(allt(st)+space(9)+allt(st1),30,' '),1,0)
return

*===================================================
* 返回星期
*
*===================================================
procedure ctow
parameter day

private w,ww,day
w=cdow(day)
do case
	case w=='Sunday'
		ww='日'
	case w=='Monday'
		ww='一'
	case w=='Tuesday'
		ww='二'
	case w=='Wednesday'
		ww='三'
	case w=='Thursday'
		ww='四'
	case w=='Friday'
		ww='五'
	case w=='Saturday'
		ww='六'
	otherwise
		ww=''
endcase
return '星期'+allt(ww)

*============================================
* 减操作、总清等需要密码验证
*
*
*============================================
function verify_pw
private lb_r

* 建立窗口
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))
lb_r = .f.
if not used([yuangzd])
	use dat\yuangzd in 0
endif
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 .and. gzbh='01'
	if found()
		if allt(leixin)==[收].and.allt(kouling)==allt(skymm)
			=ShowIco(C2X(3)+5,R2Y(5)+10,'FACE03.ICO')
			@ 6,9 say [    管理员登录成功!] color 8/7
			do delay1
			=relewind('sky')
			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
	if i=3
		=relewind('sky')
		lb_r = .t.
		exit
	endif
endfor
close database
return lb_r

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?