📄 进销存.zrg
字号:
***数据库:共五个数据库
***定单库: order.dbf ; 客户库:customer.dbf ;
***职工库:employe.dbf; 商品A库: product1.dbf ; 流水库 :seller.dbf
DEFINE DATABASE A
定单ID :N,5
客户A_ID :C,4
雇员A_ID :C,3
日期 :C,10
商品ID :C,13
批发数量 :N,5
批发金额 :N,10,2
批发毛利 :N,10,2
采购数量 :N,5
采购金额 :N,10,2
ENDDEF
DEFINE DATABASE B
客户B_ID :C,4
客户姓名 :C,8
职务 :C,26
地址B :C,20
电话B :N,12
ENDDEF
DEFINE DATABASE C
雇员C_ID :C,3
雇员姓名 :C,8
身份证号 :C,18
电话C :N,12
零售总额 :N,12,2
ENDDEF
**与条码库配合
DEFINE DATABASE D
商品A_ID :C,13
商品名称A :C,13
零售单价A :N,10,2
零售总量A :N,5
毛利润A :N,10,2
现库存量A :N,5
库存总额A :N,11,2
备注A :C,20
ENDDEF
DEFINE DATABASE E
流水号 :N,10
零售日期 :C,8
收款员ID :C,3
商品条码 :C,13
零售数量 :N,4
小计 :N,10,2
ENDDEF
DEFINE VAR
AnyKey :C,1
AnyKey1 :C,2
主菜单 :C,16[3]
伴随数组 :C,64[3]
演示菜单 :C,16[6]
演示数组 :C,64[6]
管理菜单 :C,16[2]
管理数组 :C,64[2]
码型菜单 :C,16[6]
码型数组 :C,64[6]
通讯菜单 :C,16[2]
通讯数组 :C,64[2]
库名菜单 :C,16[5]
库名数组 :C,64[5]
统计菜单 :C,16[4]
统计数组 :C,64[4]
添库菜单 :C,16[2]
添库数组 :C,64[2]
进货菜单 :C,16[2]
进货数组 :C,64[2]
校对菜单 :C,16[2]
校对数组 :C,64[2]
nMenuChoice : N,1,0
nCMenuChoice : N,1,0
cKey :C,1
ZGBH :C,3
XSL :N,5
JQH :C,8
XSZE :N,10,2
PFZE :N,10,2
KCZE :N,11,2
BZH :C,20
C1 :C,200
i :N,3
n :N,2
DBH :N,5
DHHM :N,12
CGSL :N,5
CGJE :N,10,2
PFSL :N,5
PFJE :N,10,2
ZHDJ :N,10,2
PJJ :N,9,2
MLR :N,10,2
PFJ :N,9,2
SPMC :C,13
SPID :C,13
PWD :C,4
LSH :N,5
SKYH :C,3
KHID :C,4
DDID :N,5
XKCL :C,5
sSysVar :C,12
sSysVar1 :C,12
sSysVar2 :C,12
sSysVar3 :C,12
sSysVar4 :C,12
nReturn :N,1,0
BarCode :C,13
BarBuf :C,13
BarCodeL :C,13
CURR_REC :N,4
TYPE :C,10
XH :N,5
High :N,5
Mid :N,5
Low :N,5
RecN :N,5
BufN :N,3
cInput1 :C,13
TEMP :N,10,2
TEMP1 :N,5
TEMP2 :N,10,2
TEMP3 :C,13
TEMP4 :N,11,2
TEMP5 :N,5
TEMP6 :N,5
TEMP7 :N,10,2
TEMP8 :N,5
TEMP9 :N,10,2
TEMP10 :N,10,2
TEMP11 :N,5
TEMP12 :N,11,2
TEMP13 :N,11,2
TEMP14 :N,5
编号A :C,13
编号B :C,13
商品编号 :C,13
条码标志 :C,3
条码类型 :N,3
ENDDEF
PROCEDURE 条码演示
DO WHILE .T.
CLEAR
* SET INTENSITY ON
@ 0,0 SAY "-- 商品进销存微机 --"
* SET INTENSITY OFF
演示菜单[1]="1-商品零售"
演示菜单[2]="2-商品管理"
演示菜单[3]="3-条码查询"
演示菜单[4]="4-条码统计"
演示菜单[5]="5-添加记录"
演示菜单[6]="6-显示条码"
演示数组[1]="扫描条码后,只输入销售数量即可完成操作;库存随之减少,并累计毛利..."
演示数组[2]="批发和采购订单的录入,库存随之变化;可累计批发毛利..."
演示数组[3]="通过扫描商品条码,可完成各库相应的数据查询..."
演示数组[4]="通过扫描商品条码,可完成销售和批发等统计工作..."
演示数组[5]="这里只能在客户库和雇员库尾追加新记录..."
演示数组[6]="只显示一下条码,无其他操作..."
@2,5 MENU 演示菜单,6,6
@2,2 MENU 演示数组,6
@9,0 SAY "注:按帮助键,有简介!"
READ MENU TO nCMenuChoice
DO CASE
CASE nCMenuChoice=1
Do 商品销售
CASE nCMenuChoice=2
Do 商品管理
CASE nCMenuChoice=3
Do 条码查询
CASE nCMenuChoice=4
Do 条码统计
CASE nCMenuChoice=5
Do 添加记录
CASE nCMenuChoice=6
Do 显示条码
OTHERWISE
EXIT
ENDCASE
ENDDO
RETURN
ENDPRO
PROCEDURE 商品销售
IF 条码标志="COM"
CLEAR
@ 2,2 SAY "现在是红外通讯口"
@ 3,2 SAY "请返回...."
WAIT""
RETURN
ENDIF
* BarCode="800001" 缺省
DO WHILE .T.
CLEAR
@ 0,1 SAY "-- 零 售 状 态 --"
@ 2,2 SAY "请扫描商品条码..."
@ 4,3 GET BarCode
READ
n=lastkey()
if n=24
return
endif
DO CASE
CASE LEN(BarCode)<>0
IF LEN(BarCode)<=13
DO 零售一库
ELSE
LOOP
ENDIF
CASE LEN(BarCode)>=13
CLEAR
@ 3,0 SAY "错误: 无此功能键!"
SOUND 15,1
WAIT ""
ENDCASE
ENDDO
RETURN
ENDPRO
PROCEDURE 显示条码
CLEAR
@0,0 say " 显示读入的条码... "
DO WHILE .T.
C1=""
@row(),0 GET C1
read
if LEN(C1)<>0
sound 21, 1
do case
case row()=1
clear 1
case row()=2
clear 2
case row()=3
clear 3
case row()=4
clear 4
case row()=5
clear 5
case row()=6
clear 6
case row()=7
clear 7
case row()=8
clear 8
case row()=9
clear 9
endcase
? left(C1,1)+right(C1,len(C1)-1)
if row()=0
@ 1,0
clear 1
endif
endif
n=lastkey()
if n=24
return
endif
ENDDO
RETURN
ENDPRO
PROCEDURE 商品管理
CLEAR
DO WHILE .T.
CLEAR
* SET INTENSITY ON
@ 0,1 SAY "-- 超市商品管理 --"
* SET INTENSITY OFF
管理菜单[1]="1-批发业务"
管理菜单[2]="2-采购业务"
管理数组[1]="5位订单编号自动添加,即可开始输入批发订单,并校对订单"
管理数组[2]="5位订单编号自动添加,即可开始输入采购订单,老货和新货应分开录入和校对"
@2,5 MENU 管理菜单,2,2
@2,5 MENU 管理数组,2
@5,0 SAY "注:先按上下键选择,再按确认键执行功能!!"
READ MENU TO nCMenuChoice
DO CASE
CASE nCMenuChoice=1
Do 批发销售
CASE nCMenuChoice=2
DO 进货业务
OTHERWISE
EXIT
ENDCASE
ENDDO
RETURN
ENDPRO
PROCEDURE 校对进货
CLEAR
DO WHILE .T.
CLEAR
SET INTENSITY ON
@ 0,1 SAY "-- 校对商品录入 --"
SET INTENSITY OFF
校对菜单[1]="1-原有商品校对"
校对菜单[2]="2-校对新进商品"
校对数组[1]="校对原库存商品的采购"
校对数组[2]="这里是对第一次进货录入的校对"
@2,2 MENU 校对菜单,2,2
@2,2 MENU 校对数组,2
@6,0 SAY "注:请按上下键进行选择,再按确认键执行!!"
READ MENU TO nCMenuChoice
DO CASE
CASE nCMenuChoice=1
Do 校对原进货
CASE nCMenuChoice=2
DO 校对新进货
OTHERWISE
EXIT
ENDCASE
ENDDO
RETURN
ENDPRO
PROCEDURE 批发销售
Clear
XSL=0
MLR=0.00
PFJ=0.00
PJJ=0.00
XKCL=""
TEMP3=""
SELECT A
@0,2 Say "-- 批 发 销 售 --"
@2,0 Say "当前记录号:"+Str(Recno(),5)
@3,0 Say "新记录序号:"+Str(Reccount()+1,5)
@5,0 say "订单已定位到:"
@5,col()+1 say Reccount()+1
@7,0 Say "注:按确认键输入订单内容;其它键可返回!"
Wait "" To cKey
If Asc(cKey)<>13
Return
Endif
Clear 2
XH=Reccount()
GO XH
DDID=定单ID+1
Append Blank
@2,0 Say "订单ID:"
@2,col()+1 say DDID
@3,0 Say "客户A_ID:" Get 客户A_ID
@4,0 Say "雇员A_ID:" Get 雇员A_ID
@5,0 Say "商品ID:" Get SPID
@6,0 Say "批发数量:" Get XSL
@7,0 Say "批发价格:" Get PFJ
Read
if len(SPID)=0
clear
@ 2,2 say "输入无效,重输!!!"
wait""
return
endif
PFZE=XSL*PFJ
ZGBH=雇员A_ID
replace 定单ID with DDID, 客户A_ID with 客户A_ID ,雇员A_ID with 雇员A_ID
replace 日期 with DATE(), 商品ID with SPID
replace 批发数量 with XSL, 批发金额 with PFZE
SELECT D
GO TOP
locate for VAL(商品A_ID)=VAL(SPID) .and. (.not.eof( ))
SOUND 21,4
IF eof() .or. 现库存量A<XSL
clear
@ 1,2 say "商品库更新出错!..."
@ 2,2 say "条码有误?!..."
@ 3,2 say "库存量不足?!..."
wait ""
SELECT A
GO BOTTOM
replace 批发数量 with 0, 批发金额 with 0.00
RETURN
ELSE
CURR_REC=recno()
GO CURR_REC
PJJ=round(库存总额A/现库存量A,1)
KCZE=PJJ*XSL
MLR=(PFJ-PJJ)*XSL
XKCL=STR(现库存量A,5)
nReturn=WRITESYSVAR(53,XKCL)
TEMP3=STR(库存总额A,11)
n=WRITESYSVAR(54,TEMP3)
replace 现库存量A with val(XKCL)-XSL
replace 库存总额A with val(TEMP3)-KCZE
ENDIF
SELECT A
GO BOTTOM
replace 批发毛利 with MLR
DO 校对批发
RETURN
ENDPRO
PROCEDURE 校对批发
SELECT a
XH=Reccount()
TEMP1=0
TEMP4=0.00
IF XH<>Reccount()
clear
@2,2 say "记录序号有误!..."
@3,2 say "返回重输!!!"
WAIT""
RETURN
ELSE
GO XH
DDID=定单ID
ENDIF
SELECT D
GO TOP
locate for VAL(商品A_ID)=VAL(SPID) .and. (.not.eof( ))
IF eof()
clear
SOUND 21,4
@ 1,3 say "商品库定位出错!..."
@ 2,3 say "或条码有误!..."
wait ""
RETURN
ELSE
CURR_REC=recno()
GO CURR_REC
SPMC=商品名称A
ENDIF
CLEAR
@0,1 Say "-- 校对批发订单 --"
@1,0 Say "订单ID:"
@1,col() SAY DDID
@2,0 Say "客户ID:"
@2,col() SAY 客户A_ID
@3,0 Say "采购员:"
@3,col()SAY 雇员C_ID
@4,0 Say "商品ID:"
@4,col() SAY 商品ID
@5,0 Say "批发数量:"
@5,col()+1 say XSL
@6,0 Say "批发价格:"
@6,col()+1 say PFJ
@7,0 say "批发金额:"
@7,COL()+1 say XSL*PFJ
@8,0 say "本单毛利:"
@8,col() say MLR
@9,0 say "回车确认,有误按退出!"
Wait "" To cKey
IF Asc(cKey)=13
RETURN
ELSE
SELECT A
XH=Reccount()
GO XH
DDID=定单ID
ENDIF
Clear
@0,1 Say "-- 重写批发订单 --"
@2,0 Say "订单ID:"
@2,col()+1 say DDID
@3,0 Say "客户ID:" Get 客户A_ID
@4,0 Say "雇员ID:" Get 雇员A_ID
@5,0 Say "商品ID:" Get 商品ID
@6,0 Say "批发数量:" Get XSL
@7,0 Say "批发价格:" Get PFJ
Read
PFZE=XSL*PFJ
replace 定单ID with DDID, 客户A_ID with 客户A_ID ,雇员A_ID with 雇员A_ID
replace 日期 with DATE(), 商品ID with 商品ID
replace 批发数量 with XSL, 批发金额 with PFZE
SELECT D
GO TOP
locate for VAL(商品ID)=VAL(商品A_ID) .and. (.not.eof( ))
SOUND 21,4
IF eof()
clear
@ 1,3 say "商品库更新出错!..."
@ 2,3 say "条码有误!..."
wait ""
SELECT A
XH=Reccount()
GO XH
replace 批发数量 with 0, 批发金额 with 0.00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -