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