进销存的数据组织问题 (100分)

  • 主题发起人 主题发起人 lssgj
  • 开始时间 开始时间
L

lssgj

Unregistered / Unconfirmed
GUEST, unregistred user!
在进销存系统中,我使用如下的表结构,如何实现商品明细帐的查询?
1.商品表
商品ID 商品名称 规格型号
1 CPU 芯片 P4 2G

2.入库表
入库批号ID 日期 入库单号 入库数量 商品ID 入库单价
1 2002.1.1 R0001 50 1 1300
2 2002.1.1 R0002 30 1 1200

3.出库表(以"入库批号ID"与入库表进行关联)
出库ID 入库批号ID 日期 出库单号 出库数量 商品ID 销售单价
1 1 2002.1.1 S0001 10 1 1500
2 2 2002.1.2 S0002 10 1 1500

我要由以上表查询生成商品出库入库明细帐,该怎么实现如下所示的查询或视图?

商品ID 日期 出入类型 单据号 入库数量 出库数量 结存数量
1 2002.1.1 入 R0001 50 50
1 2002.1.1 入 R0002 30 80
1 2002.1.1 出 S0001 10 70
1 2002.1.2 出 S0002 10 60

进一步我要查询如下的销售明细表,又该怎么办?

日期 商品ID 单据号 入库单价 销售单价 单位毛利 入库批号ID 出库ID
2002.1.1 1 S0001 1300 1500 200 1 1
2002.1.2 1 S0001 1200 1500 300 2 2

(注:我是为了将出库记录与入库记录之间以入库批号ID进行关联,以便保存后便计算出
毛利来,所以将入库记录和出库记录分为两个表保存)
 
在数据结构中已回答
 
(注:我是为了将出库记录与入库记录之间以入库批号ID进行关联,以便保存后便计算出
毛利来,所以将入库记录和出库记录分为两个表保存)

如果出库的那个单包含了两个入库单中的商品怎么办?
比如,第一次入库100,出库了80后第二次又是100,这次一下出了40!
 
首先要指出的是入库ID和出库ID进行关联这有问题!如一次出库如果包括了两个入库商品,你不就不行了马?
入库和出库是两个基本上并行的行为,我建议你建立一张库存表,销售明细只和库存表有关。
你能知道现在卖出去的产品是属于哪个入库单的产品吗?
 
我的考虑是基于以下背景:公司有多个门市,每个门市有可能从不同商家调同
一货物销售给客户,但进货成本有一定差异。为确定采购和销售的关系,我在
录入销售出库单时,选择商品的画面将当前所选商品的采购明细及结余数列出,
我勾选所相应批次的采购,同时输入出库数量,保存时计算该采购单的结余数
(下次点选时,结余数为零的商品就不再列出),当然,对同一销售单可能要
勾选多张采购单。还应在录入采购单时做上批次标志,以区分不同门市的采购。
这在金算盘软件中称为“分批法”的成本核算方式,只不过其数据结构不同。
 
“我勾选所相应批次的采购,同时输入出库数量”——等一下,这里有一个问题,如果入库直接跟销售挂钩,那么还要库存管理做什么?
那么也就是说你在销售的时候可以任一点选某一采购批次了?这难道不会出现问题?
对于销售门市来说,应该是由你们总公司向各门市提供相同批发价格的产品,难道说采购部门同时也是销售部门吗?
应该指出的是,金算盘的想法是根据销售单的需求来决定采购单,这样可以直接对采购部门进行评价。如果你把方向农反了,是根据采购单来确定销售单那可就错了。
 
公司有以下具体情况:
1.我公司以批发品牌电脑为主,同时在多个电脑城开设多个门市做零售。门市销售的
电脑当然由总公司供货。但零售电脑的同时,也销售其他相关产品,为不影响效率,各
门市只能就近采购其他产品。由于采购渠道不同,当然同一商品会有价格差异。
2.各门市独立核算,但我们又要在同一套帐进行处理(便于查询与统计),我们设想
是在各门市设电脑与总公司联网,且各门市专人录入业务单据,以便随时查询业务情况及
库存情况。若单纯采用先进先出法,有可能A门市采购成本会成为B门市的销售成本。
3.为了使业务一旦发生,就可查询其毛利,故采用销售单记录与采购单记录相关联的
方式。用友、金算盘等软件采取集中进行成本计算,既耗时又不能及时反映盈利情况(
我一直认为这种做法只是手工处理方式的移植,没有利用计算机处理的优越性,没有达
到计算机处理及时反映最新信息的目的),你知道吗,用友计算一次成本要半天甚至一
天的时间!!!
lanhe:看来你是比较专业的了,希多多交流。

 
单品批次进销存原码(个人版权)
SQLServer、Delphi5
 
这个其实就是成本核算的问题,这不应该是用户来操作的,而需要程序里完成,
如果采用移动加权平均就很简单了,不用多说,
如果是用先进先出或先进后出就麻烦一点,建立成本队列,
而实际上如果采用这两种成本核算时,业务规则就是不允许一次出多个不同指批次的商品的
 
spymaster源码可以参考一下吗?不全也可以,
不然发一个开发文档吧,闭门造车实在太难了
我的E-Mail cztwf@sohu.com 先谢了
 
呵呵,我想指出的是,对于一个管理信息系统而言,集中式成本计算方法在实现起来是最简单,也比较现实。但是应该认识到,不是每天都要进行成本核算的。一个月结算一次也可以了,那么耗费一天来计算成本有什么不可以呢?
“使业务一旦发生,就可查询其毛利”,我想说的是这存在一定的不可能性。因为相当于你马上就要找一个匹配的采购单与销售单核对然后计算成本,入帐。
注意这里只是一种理想化的情况,如果直接将销售单记录与采购单记录相关联,那么可能出现同样这种情况:
(采购:1800,销售1900)
(采购:1700,销售1500)
采购价低的反而不盈利。而且你打算用什么方式把销售单与采购单关联?靠录入人员的人工选择吗?应该说这增加了系统的复杂性和不稳定性。
我还是觉得你反正都是把每个门市部采购、销售情况都要销售到总公司帐目中,你也可以把每个门市单独做个MIS,每个门市独立核算后,把帐目情况反馈给总公司。
我还是觉得采购-库存-销售,这样无论对于哪个方面来说都是可以接受的。而且可以降低系统的复杂性。

 
QQ:3560869,有空可以交流。
 
进销存模型我支持lssgj的看法,如果是财务上那么计算一天数据是没有关系。但业务上的
要求是不一样的,业务上更倾向于销售。传统的进销存总把存看得很重,我认为是不必要的,
实际上进和销才是重要的。
lanhe的看法也是对的,业务流程的简化可以大大加强程序的可靠性。
如何设计就要看如何权衡了.

 
存是在进和销之间的过渡,是用来调节进和销由于在时间、地点、需求上的差异产生的。
JIT生产使得库存为0变成了现实,但是要知道,那是一种很严格的拉氏看板生产方法,它的采购是完全来自于销售需求。
或许你可以直接把进和销关联,但是你不能不考虑由于库存造成的成本和折旧。
 
有这么多人来关注这一问题,太高兴了。这几天我也一直在思考这个问题。只要我们
有即时计算成本的需求,我们就应设法实现,而不应觉得太难或认为不现实。其实我
想要是“分货位进行先进先出”就能解决不同部门采购销售的同一种商品成本计算错
位的现象,在程序中实现即时计算成本就是可能的,不会增加操作者的工作负担的。
目前我用的金算盘软件,由于不分货位先进先出,会出现A门市的采购成本结转到B门
市的销售成本中,还有就是销售退货时不能按现有采购成本入库,也会对其他部门的
销售成本带来影响。其实速达3000就实现了即时成本计算(用的是移动平均法,不太
合我的心意),我们用电脑就是要高效、即时,业务员、公司老总都希望随时查看销
售业绩,如果每次想查销售业绩都花几个小时甚至一天的时间来计算,还有啥意义?
传统的好些成本计算方法(如计划价法、毛利率法甚至后进先出法)实际上考虑了简
化人工计算成本的工作量的需要,我们不应将其照搬或移值到电脑上进行处理,是吗?
现在倡导的“零”库存,也应支持将销售记录与采购记录相对应的看法吧?也许我的
讨论只是偏重商业企业,未考虑工业企业的具体情况。
 
呵呵,实时计算能减少计算量?好像不对吧.
 
lanhe:我所谓的“实时计算成本”,实际上就是在进销记录之间建立关联,用SQL查询时自
然就有成本和毛利了。不然我考虑建立关联有何用处?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部