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 + -
显示快捷键?