xrpos.prg
来自「超市收银系统,所需系统dos6.22,ucdos,foxpro另外加上一些外设的」· PRG 代码 · 共 940 行 · 第 1/2 页
PRG
940 行
*设置系统环境
rele all
clear all
close all
set talk off
set date YMD
set safe off
set escape off
set resource off
set exact on
set sysm off
set excl on
set dele on
set cursor off
set cent on
clear macros
clear typeahead
set blink off
=sys(2009)
* 装入SDK
do LoadSDK
set proc to poslib
* 系统初始,变量定义及赋值
do initdata
*收款员身份校验,如为脱机,则需进行确认,密码为年月日数字之和
=disablepline()
* 设置无级缩放
=autosize(.t.)
=ShowBMPin(0,0,639,449,"_marble.BMP")
if empty(tjxy()) && tjxy() is function of offline recorgnize
set clock off
set color to
=sys(2009)
clear all
clear windows
close all
return
endif
if empty(srsky())
set clock off
close data
set color to
=sys(2009)
clear all
clear windows
close all
return
endif
* 外部设备初始化
do initdevice
if file([dat\spmx.cdx])
erase dat\spmx.cdx
endif
if not used([spmx])
use dat\spmx in 0
endif
sele spmx
index on spma tag spma
index on yytxm tag yytxm
* 数据库备份
do sjkbf
if not used([posfzk])
use dat\posfzk in 0
endif
select posfzk
if keystate=[0]
copy file temp.dbf to tradedat\tmpxb.dbf
endif
repl keystate with [0]
if not used([temp])
use temp in 0
endif
sele temp
zap
close data
do gxsjk
do mainwind
do cssj
do clsnum
do qtpd
num=0
disp1='WELCOME YOU'+space(9)
disp2=dtoc(date())
disp3='欢迎光临'+allt(scmc)
disp4=' '+left(disp2,4)+'年'+subs(disp2,6,2)+'月'+right(disp2,2)+'日'+ctow(date())
*do dipproce with disp1,disp2,disp3,disp4
do while .t.
do cssj
do clsnum
do case
case sfg=0.and.num=0
=tishil('请输入商品编码或条形码!')
case sfg=0.and.num=0
=tishil('请按销售键或总清或继续刷卡!')
case sfg=0
=tishil('请输入商品编码,数量,折扣信息!')
case sfg=1
=tishil('请输入折扣信息,选择结算方式,输入付款金额!')
endcase
set cursor on
do readk with x,y,No,chc
set cursor off
do case
* PLU键
case chc='51'.and.no#0
if gi_card_num>0 .and. val(gs_hjbz)>0
=xx([会员卡已扣款结算,先做完本笔交易!按任意键继续],1)
loop
endif
* 在PLU键按下时检测有否新增调价商品
if flag_net="OK" .and. num=0
do spit_pro
endif
aa(5)=[1]
num=num+1
do srplu
do hjxs
* 挂帐
case chc='52'
do gzgc
* 恢复
case chc='55'
do sjhf
* 软盘更新新增调价商品
case chc='58'
do spit_pro_a
* 销售流水到a盘
case chc='59'
do xslsnet_a
* 卷屏上
case chc='46'
do jp_up
* 卷屏下
case chc='47'
do jp_dn
* 键盘锁
case chc='48'
if num#0
=xx([请把这笔交易完成后再进行此项操作!],0)
loop
endif
do sjp_ls
* 前台商品查询
case chc='53'
do qtcx
* 前台会员卡查询
case chc='24'
do hykcx
* 更新商品表
case chc='54'
if num#0
=xx([请把这笔交易完成后再进行此项操作!],0)
loop
endif
do gxspmx_xs
* 联网
case chc='57'
if num = 0
do wlpd
if flag_net='OK'
=ShowHZ(501,433,[*网络*])
else
=ShowHZ(501,433,[*单机*])
endif
endif
* 快捷键
case chc>='60'.and.chc<='79'
do hot_key
* 数量键
case chc='09'.and. sfg=0
do srsl
do hjxs
* 减操作
case chc='23'
*.and.sfg=0
if gi_card_num>0 .and. val(gs_hjbz)>0
=xx([会员卡已扣款,不能进行减操作!按任意键继续],1)
loop
endif
* if prt_sheet = '1' .and. verify_pw()
* loop
* endif
if not used([posfzk])
use dat\posfzk in 0
endif
sele posfzk
if jcz=[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 num<1
=xx([不能进行减操作!用总清键擦除信息!],0)
loop
endif
if no=0
no=1
do jcz1
do hjxs
loop
endif
do jcz
do hjxs
* 折扣
case chc='08'
if not used([posfzk])
use dat\posfzk in 0
endif
sele posfzk
if zk=[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 srzk
do hjxs
* 变价
case chc='07'.and.sfg=0
if not used([posfzk])
use dat\posfzk in 0
endif
sele posfzk
if bj=[0].and.gs_skydj#[01]
do qxxy
if gs_qx=[n]
=xx([无变价权限!],0)
select posfzk
use
loop
endif
gs_qx=[n]
endif
select posfzk
use
do srbj
do hjxs
* 营业员
case chc=[02]
do sryyy
* 单清,清除当前输入
case chc='13'
do clsnum
* 开钱箱
case chc='27'
do drwproce
* 储值会员卡
case chc='44'.and.sfg=1
if thbz=-1
=xx([只能用现金退货!],0)
loop
endif
do hyk_hj
* 会员卡
case chc=[50].and.sfg=1
if thbz=-1
=xx([只能用现金退货!],0)
loop
endif
do hyk
do hjxs
* 团购1(现场)
case chc=[80].and.sfg=1
if thbz=-1
=xx([只能用现金退货!],0)
loop
endif
do qxxy
if gs_qx=[n]
=xx([无团购权限!],0)
loop
endif
gs_qx=[n]
dzbz =[1]
do tg_xs1
do hjxs
* 团购2(事后)
case chc=[81].and.sfg=1
if thbz=-1
=xx([只能用现金退货!],0)
loop
endif
do qxxy
if gs_qx=[n]
=xx([无团购权限!],0)
loop
endif
gs_qx=[n]
dzbz =[1]
do tg_xs2
do hjxs
* 贵宾打折卡
case chc='82'.and.sfg=1
if thbz=-1
=xx([只能用现金退货!],0)
loop
endif
dzbz =[1]
do gbk_xs
do hjxs
* 信用卡
case chc>='35'.and.chc<='43'.and.sfg=1
if thbz=-1
=xx([只能用现金退货!],0)
loop
endif
do srph
do hjxs
* 折让
case chc='18'.and.sfg=1
if not used([posfzk])
use dat\posfzk in 0
endif
sele posfzk
if zr=[0].and.gs_skydj#[01]
do qxxy
if gs_qx=[n]
=xx([无折让权限!],0)
select posfzk
use
loop
endif
gs_qx=[n]
endif
select posfzk
use
do srzr
do hjxs
* 合计
case chc='10'
if num=0
loop
endif
if not used([temp])
use temp in 0
endif
sele temp
do ccxx
go bott
if jyj=0
=xx([商品售价不能为零!],0)
use
loop
endif
do hjxs
do total
* 销售
case chc='11'
if sfg=0
=xx([先进行合计操作!],0)
loop
endif
if not used([temp])
use temp in 0
endif
sele temp
go bott
if jyj=0
=xx([商品售价不能为零!],0)
use
loop
endif
if gi_qtpdbz=1
do pdsale
loop
endif
if thbz=-1
=xx([此笔交易应为退货!],0)
loop
endif
if sfg=0.and.num>0
do hjxs
sfg=1
do total
endif
aa(5)=[1]
do gkfk
* 退货标志
case chc='16'.and.num=0.and.gi_qtpdbz=0
if thbz=1
thbz=-1
else
thbz=1
endif
do jyxz
* 退货
case chc='22'.and.gi_qtpdbz#1
if thbz=1
=xx([此笔交易应为销售!],0)
loop
endif
if not used([posfzk])
use dat\posfzk in 0
endif
sele posfzk
if th=[0].and.gs_skydj#[01]
do qxxy
if gs_qx='n'
select posfzk
use
=xx([无退货权限!],0)
loop
endif
gs_qx=[n]
endif
if sfg=0
do hjxs
sfg=1
do total
sfg=1
endif
aa(5)=[3]
select posfzk
use
do gkfk
* 退出
case chc='12'
if num>0
=xx([本次交易未完成,不能退出!],0)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?