OpenERP备忘录
-
问题一:
如果在 top-level BOM with type Sets/Phantom,则在SO上,确认SO时候,系统会自动创建包含该产品的子部件的Delivery Order。问题是,DO处理完毕,SO的Deliveried不会Check,即使SO支付完毕,SO却永远不会变为Done的状态。问题详细如下:
I'm using the version 6.0.3 of OpenERP.
When I'm confirming a sale order for a product that is top-level Phantom BOM, a delivery order is generated with the detailed BOM omponents but also a procurement order for the Phantom BOM.
The problem is, even when I confirmed the delivery order and entered the generated invoice paiement, the sale order is never marked as terminated, because there is the procurement order for the Phantom BOM that is blocked in Confirmed state.
I tried to manually run the Procurement planners but it didn't generate any production order.
The procurement order also blocks the planner for the minimum stock rules, as it doesn't generate purchase order anymore to fill the stock...
Here is my BOM configuration:
- Product1 - BOM Type : Sets/Phantom
- Product2 - BOM Type : Normal - Quantity : 1
- Product3 - BOM Type : Normal - Quantity : 2
As I've set the top-level BOM with type Sets/Phantom, I thought the sale order will only generate a delivery order and invoice, without procurement order or production order.
This is how I need OpenERP to work, if possible.
解决办法:
不要用 Sets/Phantom 的办法处理“散件打包”的产品,而是改用Extra Module "nan_product_pack"。该模块功能如下:
Allows configuring products as a collection of other products. If such a product is added in a sale order, all the products of the pack will be added automatically (when storing the order) as children of the pack product.
The module has been made compatible with nan_external_prices and containts code to specifically handle when the module is available but they're still independent and there are no dependencies between them.
解决办法二:
经查,这是OpenERP的一个Bug。对于Sets/Phantom 类型的产品(下文称A产品)的SO单,当SO确认时候,
1)系统自动创建一张A产品的出货单(Delivery Order, stock.picking),库存移动单(stock.move), 补货单(procurement.order)。相关代码参见:Sale模块的 sale.py 的 action_ship_create
2)系统自动确认出货单(DO),此时,系统自动将DO上的A产品用BoM表里的产品替换掉(因为是Sets/Phantom 类型的BoM),并生成新的补获单(BoM中的每个产品一个补货单)。相关代码参见:mrp模块的 stock.py 的 _action_explode
3)系统自动关闭原来的补货单(A产品)。问题是这里有个Bug,A产品的补货单关闭不了。修改方法是,在mrp模块的 stock.py 的 _action_explode 中增加一行(Line 101):wf_service.trg_validate(uid, 'procurement.order', m, 'button_confirm', cr) -
- 进销存进阶文章:
OpenERP中采购销售的财务处理:http://shine-it.net/index.php/topic,2594.msg8667.html#msg8667
OpenERP中销售订单的预收款及多次开票的处理: [检测到链接无效,已移除] br />OpenERP的价格表(Pricelist)机制:http://shine-it.net/index.php/topic,2446.msg8196.html#msg8196
OpenERP财务管理若干概念讲解:http://shine-it.net/index.php/topic,2431.msg8090.html#msg8090
OpenERP分析会计(Analytic Account)应用案例: [检测到链接无效,已移除] br />OpenERP系统销售业务的财务处理总结:http://shine-it.net/index.php/topic,4557.0.html
OpenERP销售业务若干实务案例的操作方法 [检测到链接无效,已移除]
OpenERP多币种处理:http://shine-it.net/index.php/topic,2760.0.html
OpenERP的小数精度问题 : [检测到链接无效,已移除]
案例解说OpenERP中复杂产品单位的设置问题 : [检测到链接无效,已移除] br />案例解说OpenERP中委外加工的实现方法:http://shine-it.net/index.php/topic,4482.0.html
OpenERP中多规格产品的处理方式 [检测到链接无效,已移除] br />OpenERP库存管理的若干概念讲解(新增库存价值):http://shine-it.net/index.php/topic,2425.msg8079.html#msg8079
OpenERP的实时库存价值:http://shine-it.net/index.php/topic,2586.msg8628.html#msg8628
深入解说OpenERP的各种提前期和时间 : [检测到链接无效,已移除] br />生产型企业原材料采购及入库的处理: [检测到链接无效,已移除] br />OpenERP中生产领料、投料、损耗、退料、成品入库的操作方法: [检测到链接无效,已移除]
3)其他
OpenERP生产基本概念:http://shine-it.net/index.php/topic,2746.msg9256.html#msg9256
理解OpenERP的BoM表的Properties:http://shine-it.net/index.php/topic,2574.msg8554.html#msg8554
OpenERP的生产成本解说:http://shine-it.net/index.php/topic,2576.msg8578.html#msg8578
OpenERP的市场及客户关系管理若干概念讲解:http://shine-it.net/index.php/topic,2427.msg8073.html#msg8073
OpenERP 7.0合同管理的概念: [检测到链接无效,已移除]
OpenERP的权限设置:http://shine-it.net/index.php/topic,2503.msg8282.html#msg8282
深入理解OpenERP的工作流(Workflow):http://shine-it.net/index.php/topic,2494.msg8283.html#msg8283
OpenERP报表开发机制: [检测到链接无效,已移除] br />OpenERP V6.1中采购及库存管理相关的几个Bug修正: [检测到链接无效,已移除]
企业信息化为什么要优先选用ERP平台软件: [检测到链接无效,已移除] br />企业信息化与OpenERP: [检测到链接无效,已移除] br />Openerp压力测试:OpenERP Web Client 无缓存1000并发测试OpenERP Server 性能 :http://shine-it.net/index.php/topic,2557.0.html
OpenERP多核CPU支持:http://shine-it.net/index.php/topic,5745.msg14182.html#msg14182
OpenERP 7.0 Web模块开发:http://shine-it.net/index.php/topic,5747.0.html
- 进销存进阶文章:
-
many2many
(0,0,{values}) 根据values里面的信息新建一个记录。
(1,ID,{values})更新id=ID的记录(写入values里面的数据)
(2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)
(3,ID) 切断主从数据的链接关系但是不删除这个数据
(4,ID) 为id=ID的数据添加主从链接关系。
(5) 删除所有的从数据的链接关系就是向所有的从数据调用(3,ID)
(6,0,[IDs]) 用IDs里面的记录替换原来的记录(就是先执行(5)再执行循环IDs执行(4,ID))
例子[(6, 0, [8, 5, 6, 4])] 设置 many2many to ids [8, 5, 6, 4]
one2many
(0, 0,{ values })根据values里面的信息新建一个记录。
(1,ID,{values}) 更新id=ID的记录(对id=ID的执行write 写入values里面的数据)
(2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)
例子:
[(0,0,{'field_name':field_value_record1,...}),(0,0,{'field_name':field_value_record})]
many2one的字段比较简单,直接填入已经存在的数据的id或者填入False删除原来的记录。 -
View的字段定义中的default_get 及 Parent 备注
如stock_view.xml的stock.picking 的Form中有如下定义:
<field colspan="4" name="move_lines" nolabel="1" widget="one2many_list" default_get="{'move_line':move_lines}">
其含义是在context中设置变量{'move_line':move_lines},该变量可以在stock.move的字段缺省值函数中使用。即stock.move的字段缺省值函数中,如果context中有变量move_line表示该stock.move是从stock.picking中创建。如果没有变量move_line,则它可能是别的途径创建。
视图定义中可以用parent 引用父视图中的字段值。 -
OpenERP V6.1 报销事务处理详解:http://shine-it.net/index.php/topic,2790.0.html -
- openerp-server-6.0.3\bin\report\render\rml2pdf\trml2pdf.py
修改点有:
a) 支持RML的Directive:<pageDrawing> 及 <pageInfo>
b) 支持RML的Image Directive 的属性'preserveAspectRatio - Boolean'
Preserve Aspect Ratio: A flag determining whether the image's aspect ration should be conserved under any circumstances.
c) 修正Bug:下述RML上显示产品照片时候,所有行总是显示第一行的照片
<td>
<image width="60" height="90" preserveAspectRatio="True" >[[ line.product_id and line.product_id.product_image or removeParentNode('image') ]]</image>
</td>
2) OpenERP 6.0.3\Server\addons\mrp\mrp.py
修改点: 避免BoM表的MRP运算陷入死循环
3) OpenERP 6.0\Server\addons\procurement\schedulers.py
Bug修正:当符合条件state='confirmed' and procure_method='make_to_order' 的procurement_order 超过500时候,系统的最小库存规则运算失效。
4) OpenERP 6.0.3\Server\addons\mrp\stock.py
修改点:
对于Sets/Phantom 类型的产品(下文称A产品)的SO单,当SO确认时候,
1)系统自动创建一张A产品的出货单(Delivery Order, stock.picking),库存移动单(stock.move), 补货单(procurement.order)。相关代码参见:Sale模块的 sale.py 的 action_ship_create
2)系统自动确认出货单(DO),此时,系统自动将DO上的A产品用BoM表里的产品替换掉(因为是Sets/Phantom 类型的BoM),并生成新的补获单(BoM中的每个产品一个补货单)。相关代码参见:mrp模块的 stock.py 的 _action_explode
3)系统自动关闭原来的补货单(A产品)。问题是这里有个Bug,A产品的补货单关闭不了。修改方法是,在mrp模块的 stock.py 的 _action_explode 中增加一行:wf_service.trg_validate(uid, 'procurement.order', m, 'button_confirm', cr)
1) openerp-6.1\openerp\addons\account\report\account_financial_report.py
Bug修正:财务报表的余额符号(sign)设置无效。
2) openerp-6.1\openerp\addons\base\res\ir_property.py
Bug修正:多公司数据导入时候,例如下述res.partner 的property字段数据对应的系统property parameter,其公司总是当前用户的公司。现改为总是取Property值(如 应收账款)对应的公司。
"id","name","property_account_payable/name","property_account_receivable/name","category_id/id","company_id/name"
"res_partner_test001","测试","220200 应付账款 Shop1","112200 应收账款 Shop1","base.res_partner_category_0","Shop 1"
DIFF文件参看附件。
- openerp-server-6.0.3\bin\report\render\rml2pdf\trml2pdf.py
-
[quote author=lky link=topic=2639.msg9800#msg9800 date=1335448521]
外协加工过程中,要向B供应商提供物料,如何处理呢?
[/quote]
为供应商设置特定的’供应商库位‘
在工艺路线的生产库位中选择‘供应商库位’, 这样就可以实现委外物料向供应商提供,加工完成产品返回本地生产库位。
如果要手工确认这些物料外派单,还要安装‘no auto picking' 模块,并在相关物料上勾选‘no autopicking' -
OpenERP会计帐套年末结转的处理
0)结转前确认科目类型及结转方法(Deferral Method)是否完全正确
None:不结转,通常是损益类科目
Balance:余额结转,通常是资产、负债、权益类科目
Detail:完全结转,即会计凭证原样搬至下一期
Unreconciled:结转未核销凭证,通常是应收、应付类科目
1)结转前务必备份数据库,用备份的数据库恢复若干个测试数据库,在测试数据库上先结转,
根据测试结果修正科目的结转类型,直到确认科目结转正确无误,再开始实际结转。
2)创建新财务年度及会计期间
3)创建Opening/Closing Journal
Journal类型必须是:Opening/Closing Situation
默认借贷科目通常类似于:111300 Reserve and Profit & Loss Account(generic chart of accounts).
必须勾选Centralised counterpart 。
4)凭证结转:Accounting ‣ Periodical Processing ‣ End of Period ‣ Generate Opening Entries.
可以多次结转,系统会自动覆盖前一次的结转凭证 -
非常有用,谢谢!
-
新增备忘录:
1)OpenERP中实际库存移动时间的控制: [检测到链接无效,已移除] br />2)画面编辑/创建/删除/复制功能控制: [检测到链接无效,已移除] br />3)OpenERP MRP运算中的小数精度问题详解: http://shine-it.net/index.php/topic,16186.0.html