Odoo中文网|Odoo实施培训

 找回密码
 立即注册
搜索
热搜: Odoo OpenERP 实施
查看: 6042|回复: 0

OPENERP采购的两种不同情况

[复制链接]

8

主题

8

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2015-9-8 19:38:35 | 显示全部楼层 |阅读模式
                       

原材料采购有两种情况,一种是先收货,并按实际收货数量付款;一种是先付款,对方再发货。对于国内的供应商,通常都采用前者处理,但有些进口原材料,对方会要求先付款,或者预付部分款额,对方才会发货。两种情况在OpenERP中的处理方法有所不同。

一、先收货再付款

一般来说,仓库入库数量及财务付款金额都应该以采购单上的数量及金额为准。但实际中,由于下面一些常见原因,仓库入库数量及付款金额不同于采购单的现象经常发生:a)质检不过关,实际入库数量少于采购数量;b) 质量等级偏低,折价接收;c) 供应商赠品,实际入库数量多于采购数量。

为了处理采购数量及价格不同于入库数量及价格的问题,OpenERP中推荐如下处理:

1)采购下单时候,不要基于采购单生成内部发票(Invoice),而应该选择基于入库数量开Invoice。系统默认是下单自动生成Invoice。

2)原材料仓库应设置单独的Input Location,系统默认是Input Location等同于StockLocation。采购入库时候,先入库到Input Location,Input Location通过LocationChain关联到Stock Location,这样,原材料进入Input Location的同时,系统会自动产生到StockLocation的库间调拨单。

3)质检后,再将库间调拨单上的数量实际入库。

3.1)如果入库数量低于采购单上的数量,和采购部商量之后,有两种可能的处理:

a) 要求供应商补足数量

这种情况,处理调拨单时候,录入实际入库数量,系统会自动将调拨单分拆成两张,一张是已入库数量,另一张是不足数量,等待供应商补充货物之后再次入库。并基于InputLocation的接收单开具发票。

b)按不足量收货入库

这种情况,要先修改调拨单上的数量为实际数量,再做入库处理。入库完毕后,对InputLocation上的接收单做退货处理,退掉不足量部分(不作退货处理,则InputLocation上记录的库存数量不正确)。并基于InputLocation上的接收单开具发票,此时,由于接收单上的数量多于实际入库数量,系统生成的发票数量不正确,应手动修改发票上的数量。

3.2)如果入库数量多于采购单上的数量,和采购部商量之后,也有三种可能的处理:

a) 按采购单数量接收

这种情况,处理调拨单时候,录入实际入库数量,并基于Input Location的接收单开具发票。

b)作为供应商赠品接收

这种情况,需要在调拨单上增加一个明细行,其源库位是“采购损益”,目标库位和原来的明细行一样,数量是赠品数量,之后再做入库处理。这样,系统会自动生成赠品的会计凭证:

借:原材料

贷:营业费用

入库完毕后,基于Input Location上的接收单开具发票。

c)增加货款后接收

这种情况,要求采购部再开一张采购订单,仓库先按前一张订单数量接收,并开具发票,再按后一张订单接收多出部分,并开具发票。

4)系统自动生成的会计凭证

4.1)仓库处理调拨单时候,系统生成会计凭证如下:

借:原材料

贷:在途物资

如果有赠品,系统另生成凭证如下

借:原材料

贷:营业费用

4.2)财务确认采购发票时候,系统生成会计凭证如下:

借:在途物资

应交税费 - 增值税(进项税)

贷:应付账款

5)原材料相关会计科目的设置

5.1)原材料的Product上的Inventory Valuation为Real Time(automated),这样入库、出库的时候,系统才会自动生成相应的会计科目。

5.2)原材料的产品分类(Product Category)上,应设置如下:

Stock Input Account:在途物资

Stock Valuation Account:原材料

Expense Account:在途物资

6)仓库相关设置

6.1) 系统自动生成入库、出库会计凭证的原理是:a)从非Internal的Location移动到Internal的Location,系统自动生成凭证;b)不同公司的Location间移动时候,不管是不是Internal的Location,总是生成凭证;c)生成凭证时候,借目标Location的Stock Valuation Account (Incoming),贷源Location的Stock Valuation Account(Outgoing),如果Location上没有设置,则取Product上的Stock Input Account、StockValuation Account和Stock Output Account

6.2)增加一个Input Location,其类型为Inventory,作为系统默认仓库的InputLocation,并通过Location Chain关联到默认仓库的Stock Location。InputLocation上设置会计科目:

Stock Valuation Account (Incoming):在途物资

Stock Valuation Account (Outgoing):在途物资

6.3)增加一个“采购损溢”Location,其类型为Inventory,作为供应商赠品入库的源库位,“采购损溢”库位上设置会计科目:

Stock Valuation Account (Incoming):营业费用

Stock Valuation Account (Outgoing):营业费用

二、先付款对方再发货

这种情况,采购下单时候,需要基于采购订单开具发票,而不是收货入库时候根据收货数量开具发票。

1)采购下单时候,系统自动生成采购发票,财务确认发票时候,系统自动生成如下会计凭证:

借:在途物资

应交税费 - 增值税(进项税)

贷:应付账款

2)仓库到货后,和前面的情况一样,先入质检库(Input Location),再将库间调拨单上的数量实际入库。

2.1)如果入库数量低于采购单上的数量,和采购部商量之后,有两种可能的处理:

a) 要求供应商补足数量

这种情况,处理调拨单时候,录入实际入库数量,系统会自动将调拨单分拆成两张,一张是已入库数量,另一张是不足数量,等待供应商补充货物之后再次入库。因为系统在采购下单时候已经开机发票,因而此时不需要再开发票。

b)按不足量收货入库

这种情况,要先修改调拨单上的数量为实际数量,再做入库处理。入库完毕后,对InputLocation上的接收单做退货处理,退掉不足量部分(不作退货处理,则InputLocation上记录的库存数量不正确)。注意,此时的退货动作,需要选择开具退货发票(Invoicing上选择“To berefunded/Invoiced”),因为款项已付,需要供应商退款。

2.2)如果入库数量多于采购单上的数量,和采购部商量之后,也有三种可能的处理:

a) 按采购单数量接收

这种情况,处理调拨单时候,录入实际入库数量。

b)作为供应商赠品接收

这种情况,需要在调拨单上增加一个明细行,其源库位是“采购损益”,目标库位和原来的明细行一样,数量是赠品数量,之后再做入库处理。这样,系统会自动生成赠品的会计凭证:

借:原材料

贷:营业费用

入库完毕后,基于Input Location上的接收单开具发票。

c)增加货款后接收

这种情况,要求采购部再开一张采购订单,并开具发票。仓库先按前一张订单数量接收,再按后一张订单接收多出部分。

3)经上述处理,系统自动生成的会计凭证如下:

3.1)财务确认采购发票时候,系统生成会计凭证如下:

借:在途物资

应交税费 - 增值税(进项税)

贷:应付账款

3.2)仓库处理调拨单时候,系统生成会计凭证如下:

借:原材料

贷:在途物资

如果有赠品,系统另生成凭证如下

借:原材料

贷:营业费用

如果有退货,系统自动生成退货发票,财务确认退货发票时候,系统生成凭证如下:

借:应付账款

贷:在途物资

应交税费 - 增值税(进项税)

4)预付款的处理

如果供应商不要求全额付款,预付部分款项即可。这个可以通过设置采购单上的Payment Term实现。

采购(purchasing):是指企业在一定的条件下从供应市场获取产品或服务作为企业资源,以保证企业生产及经营活动正常开展的一项企业经营活动。根据各行业采购工作的通性和个性,可将采购管理工作分为四类:

生产性采购,就是采购这个物品是直接为了公司生产运营所需。而生产性采购又分为两类,  第1类是原材料性采购(MRP性物料采购)。所采购的此类物料是本企业所生产的产品的组成部分或中间体产品。第2类是零配件的采购(MRO性采购,就是维修,维护、修理、运作),这些零配件是为了保障机器能正常生产运作所需要的维修、更换配件。

商贸性采购,像沃尔玛这样的零售商,它们的采购不属于生产性采购,属于商贸性采购。商贸性采购和生产性采购最大的区别是,批发商、零售商在采购物品时,采购什么商品并不十分重要,重要的是采购的东西必须保证能赚钱。笔笔都得赚钱,不赚钱就没有必要采购进货。西瓜不赚钱,可以采购苹果。但是对于生产性采购来讲就不行,这个产品我们公司只能用这个原材料。我做饼干的,只能买面粉,不能说面粉太贵就不买了,不买就停产了。所以生产性并不保证每次采购都赚钱,而且采购的盈利性也不能直接反应出来的。

一般日常用品性采购,像办公用品采购,还有行政采购等。其特点是采购品类繁杂,但采购金额小。其所采购的物品主要是保障公司的正常行政办公所用。

项目性采购,有时候,我们的采购工作属于项目性采购,比如说买一台设备,盖一个车间等。项目性采购的主要特点是一次性。很少有重复性的采购。这就意味着每次采购的流程都得重新开始,以往的经验和关系很少能用到。

一般的ERP软件,都只支持生产性采购中的MRP性物料采购,专业采购软件,可能支持所有类型的采购业务。OpenERP的采购,主要也是MRP性物料采购。不过,可能存在其它模块支持别的采购管理,如办公用品的请领、采购。本书的采购,如不特别说明,指的是MRP性物料采购。

采购的日常工作有,接收采购计划、询价/议价、决定、下PO(采购单)、审核、跟催、收货、付款、退货。相关的单据有:请购单、采购计划、采购单、询价单,进货单等。简单的说,采购部门接收其它各部门的采购要求,定期汇总采购物品,作成采购计划。根据采购计划,分别和相应的供应商询价、议价。向选定的供应商下单(通常是传真,供应商签字后再回传回来)。而后跟踪供应商及时发货,货到后验货、入库。货有问题的话,要求供应商换货、退货。

采购的财务处理,供应商的发票送至财务部门。采购部门向财务部门申请付款,或者出具供应商签字确认过的采购单复印件至财务部门,代替付款申请。仓库收货后将入库单亦送至财务部门。财务部门凭此三单(采购部门的付款申请、供应商发票、仓库的入库单),核对三单一致后,记录会计帐务,制定付款计划,按计划付款。

当采用OpenERP后,典型的采购流程大致是这样的。采购员在系统中新建一张采购单,输入要采购的物品的规格型号、价格等,而后和供应商Email或电话沟通,进一步敲定价格等。采购员提交采购单,经理审批。审批后,采购员打印采购单,传真给供应商,供应商签字确认,回传。采购员点击采购单上的“供应商通过”按钮,表示供应商已确认。此时,系统自动生成2张单子,一是供应商凭证(Invoice),送至财务部门,财务部门据此审核供应商发票并安排付款计划。当财务收到供应商发票,确认供应商凭证后,系统会自动生成此采购业务对应的记账凭证。二是收货单(IncomingPacking List),送至仓管部门,仓管部门据此验货、收货。

1)采购数量有小数点时候的采购入库时候系统报错问题

采购入库时候,如果入库数量有小数点,实际入库数量明明和待入库数量一样多,系统却报错,不让入库。

原因是,带小数点的待入库数量和实际入库数量,表面上看是一样多,但计算机内部浮点数表示方法的原因,可能会差异0.00000001。OpenERP系统误判为待入库数量和实际入库数量不一致,不让入库。修改方法是,待入库数量和实际入库数量是否一致的判断,不可严格判断,而应该允许一定的“误差”。修改代码是:文件addons\stock\wizard\stock_partial_picking.py,方法do_partial中,两个判断语句不正确,修改如下:

if qty_in_line_uom <> wizard_line.quantity: => ifabs(qty_in_line_uom - wizard_line.quantity) >=line_uom.rounding:

if qty_in_initial_uom <> without_rounding_qty: => ifabs(qty_in_initial_uom - without_rounding_qty) >=line_uom.rounding:

2)当采购单位不同于采购产品的默认单位时候,系统生成的入库会计凭证金额错误问题

原因在于,当采购入库系统自动生成入库会计凭证时候,系统计算入库金额时候有错误。本来应该用入库数量 * 入库单位对应的单价。

但系统却用入库单位对应的单价 * 转换成产品默认单位后的数量。修改方法为:文件 addons\stock\stock.py 的方法_get_reference_accounting_values_for_valuation 中:

reference_amount = qty * move.price_unit => reference_amount =move.product_qty * move.price_unit

3)以含税价(增值税)采购时候,系统生成的入库会计凭证的金额中未扣除税额

原因在于,以含税价(增值税)采购时候,采购订单上显示的是含税单价,单采购入库时候,入库金额应以不含税价计算。但系统在采购订单确认时候,传递给采购入库的单价却未扣除税,导致问题。修改办法是:文件addons\purchase\purchase.py的方法_prepare_order_line_move中:

'price_unit': order_line.price_unit => 'price_unit':self.pool.get('account.tax').compute_all(cr, uid,order_line.taxes_id, order_line.price_unit, 1,order.partner_address_id.id, order_line.product_id.id,order.partner_id)'total'

4)以非本位币采购时候,采购入库时候,系统生成的入库会计凭证,及加权移动平均成本法计算库存成本价格时候,系统未按本位币金额算

原因在于,采购订单确认时候,传递给采购入库的单价是非本位币单价,但入库时候,系统以加权移动平均成本法计算库存成本价格,以及自动生成采购入库会计凭证时候,却将该单价当作本位币价格进行计算。修改方法是,文件addons\stock\wizard\stock_partial_picking.py,方法_partial_move_for中,应设置入库金额币种为对应采购订单上的Pricelist的币种:

partial_move.update(update_cost=True,**self._product_cost_for_average_update(cr, uid, move)) =>

unit_price = move.price_unit

move_currency = (move.purchase_line_id andmove.purchase_line_id.order_id.pricelist_id.currency_id.id) \

or move.picking_id.company_id.currency_id.id \

or False

partial_move.update({'update_cost':True,'cost':unit_price,'currency':move_currency,} )




                                                                       

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|技术支持|开发手册|Odoo中文网-远鼎旗下odoo培训网站 ( 苏ICP备15039516号 )

GMT+8, 2024-3-28 23:54 , Processed in 0.014966 second(s), 13 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表