[IMP] Put price computation (price calculation) to action_done and merge separate module in other modules

bzr revid: jco@openerp.com-20130513115942-flyx6wiuv79dtgln
This commit is contained in:
Josse Colpaert
2013-05-13 13:59:42 +02:00
parent aaf4f1c54c
commit 2397c71f43
13 changed files with 174 additions and 178 deletions
+2
View File
@@ -78,6 +78,8 @@ Dashboard / Reports for Purchase Management will include:
'test/ui/duplicate_order.yml',
'test/ui/delete_order.yml',
'test/average_price.yml',
'test/fifo_price.yml',
'test/lifo_price.yml'
],
'demo': [
'purchase_order_demo.yml',
+1
View File
@@ -25,5 +25,6 @@ import product
import report
import wizard
import res_config
import stock_fifo_lifo
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+65 -63
View File
@@ -1,63 +1,65 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_stock_incoterms_all,stock.incoterms all,model_stock_incoterms,,1,0,0,0
access_stock_incoterms_manager,stock.incoterms manager,model_stock_incoterms,stock.group_stock_manager,1,1,1,1
access_stock_warehouse_manager,stock.warehouse.manager,model_stock_warehouse,stock.group_stock_manager,1,1,1,1
access_stock_warehouse_user,stock.warehouse.user,model_stock_warehouse,base.group_user,1,0,0,0
access_stock_location__partner_manager,stock.location.partner.manager,model_stock_location,base.group_partner_manager,1,1,1,1
access_stock_location_manager,stock.location.manager,model_stock_location,stock.group_stock_manager,1,1,1,1
access_stock_location_user,stock.location.user,model_stock_location,base.group_user,1,0,0,0
access_stock_journal_user,stock.journal.user,model_stock_journal,base.group_user,1,0,0,0
access_stock_journal_manager,stock.journal.manager,model_stock_journal,stock.group_stock_manager,1,1,1,1
access_stock_tracking_user,stock.tracking user,model_stock_tracking,stock.group_stock_user,1,1,1,1
access_stock_tracking_manager,stock.tracking manager,model_stock_tracking,stock.group_stock_manager,1,0,0,0
access_stock_tracking_sales_user,stock.tracking sales.user,model_stock_tracking,base.group_sale_salesman,1,1,1,0
access_stock_picking_user,stock.picking user,model_stock_picking,stock.group_stock_user,1,1,1,1
access_stock_picking_in_user,stock.picking.in,model_stock_picking_in,stock.group_stock_user,1,1,1,1
access_stock_picking_out_user,stock.picking.out,model_stock_picking_out,stock.group_stock_user,1,1,1,1
access_stock_picking_manager,stock.picking manager,model_stock_picking,stock.group_stock_manager,1,1,0,0
access_stock_picking_in_manager,stock.picking.in manager,model_stock_picking_in,stock.group_stock_manager,1,0,0,0
access_stock_picking_out_manager,stock.picking.out manager,model_stock_picking_out,stock.group_stock_manager,1,0,0,0
access_stock_production_lot_manager,stock.production.lot manager,model_stock_production_lot,stock.group_stock_manager,1,0,0,0
access_stock_production_lot_user,stock.production.lot user,model_stock_production_lot,stock.group_stock_user,1,1,1,1
access_stock_production_lot_revision,stock.production.lot.revision,model_stock_production_lot_revision,stock.group_stock_user,1,1,1,1
access_stock_move_manager,stock.move manager,model_stock_move,stock.group_stock_manager,1,1,1,1
access_stock_move_user,stock.move user,model_stock_move,stock.group_stock_user,1,1,1,0
access_stock_inventory_user,stock.inventory user,model_stock_inventory,stock.group_stock_user,1,1,1,0
access_stock_inventory_manager,stock.inventory manager,model_stock_inventory,stock.group_stock_manager,1,1,1,1
access_stock_inventory_line_user,stock.inventory.line user,model_stock_inventory_line,stock.group_stock_user,1,1,1,0
access_stock_inventory_line_manager,stock.inventory.line manager,model_stock_inventory_line,stock.group_stock_manager,1,1,1,1
access_stock_report_prodlots,stock.report.prodlots,model_stock_report_prodlots,stock.group_stock_manager,1,0,0,0
access_stock_location_sale_manager,stock.location sale manager,model_stock_location,base.group_sale_manager,1,0,0,0
access_stock_location_stock_manager,stock.location stock manager,model_stock_location,stock.group_stock_manager,1,0,0,0
access_stock_lines_date_user,report.stock.lines.date user,model_report_stock_lines_date,stock.group_stock_user,1,0,0,0
access_stock_lines_date_manager,report.stock.lines.date manager,model_report_stock_lines_date,stock.group_stock_manager,1,1,1,1
access_stock_report_tracklots,stock.report.tracklots,model_stock_report_tracklots,stock.group_stock_user,1,1,1,1
access_report_stock_move_user,report.stock.move user,model_report_stock_move,stock.group_stock_user,1,0,0,0
access_report_stock_move_manager,report.stock.move manager,model_report_stock_move,stock.group_stock_manager,1,1,1,1
access_report_stock_inventory_user,report.stock.inventory user,model_report_stock_inventory,stock.group_stock_user,1,1,1,1
access_product_product_stock_user,product_product_stock_user,product.model_product_product,stock.group_stock_user,1,1,0,0
access_product_template_stock_user,product.template stock user,product.model_product_template,stock.group_stock_user,1,1,0,0
access_account_invoice_user,account.invoice stock user,account.model_account_invoice,stock.group_stock_user,1,1,1,0
access_account_invoice_line_user,account.invoice.line stock user,account.model_account_invoice_line,stock.group_stock_user,1,1,1,0
access_account_invoice_tax_user,account.invoice.tax stock user,account.model_account_invoice_tax,stock.group_stock_user,1,1,1,0
access_account_journal_user,account.journal stock user,account.model_account_journal,stock.group_stock_user,1,0,0,0
access_account_fiscalyear,account.fiscalyear stock user,account.model_account_fiscalyear,stock.group_stock_user,1,0,0,0
access_product_pricelist_item_sale_manager,product.pricelist.item salemanager,product.model_product_pricelist_item,base.group_sale_manager,1,1,1,1
access_product_uom_categ_stock_manager,product.uom.categ stock_manager,product.model_product_uom_categ,stock.group_stock_manager,1,1,1,1
access_product_uom_stock_manager,product.uom stock_manager,product.model_product_uom,stock.group_stock_manager,1,1,1,1
access_product_ul_stock_manager,product.ul stock_manager,product.model_product_ul,stock.group_stock_manager,1,1,1,1
access_product_category_stock_manager,product.category stock_manager,product.model_product_category,stock.group_stock_manager,1,1,1,1
access_product_template_stock_manager,product.template stock_manager,product.model_product_template,stock.group_stock_manager,1,1,1,1
access_product_product_stock_manager,product.product stock_manager,product.model_product_product,stock.group_stock_manager,1,1,1,1
access_product_packaging_stock_manager,product.packaging stock_manager,product.model_product_packaging,stock.group_stock_manager,1,1,1,1
access_product_supplierinfo_stock_manager,product.supplierinfo stock_manager,product.model_product_supplierinfo,stock.group_stock_manager,1,1,1,1
access_pricelist_partnerinfo_stock_manager,pricelist.partnerinfo stock_manager,product.model_pricelist_partnerinfo,stock.group_stock_manager,1,1,1,1
access_product_price_type_stock_manager,product.price.type stock_manager,product.model_product_price_type,stock.group_stock_manager,1,1,1,1
access_product_pricelist_type_stock_manager,product.pricelist.type stock_manager,product.model_product_pricelist_type,stock.group_stock_manager,1,1,1,1
access_product_pricelist_stock_manager,product.pricelist stock_manager,product.model_product_pricelist,stock.group_stock_manager,1,1,1,1
access_ir_property_group_stock_manager,ir_property group_stock_manager,base.model_ir_property,stock.group_stock_manager,1,1,1,1
access_product_group_res_partner_stock_manager,res_partner group_stock_manager,base.model_res_partner,stock.group_stock_manager,1,1,1,0
access_product_pricelist_version_stock_manager,product.pricelist.version stock_manager,product.model_product_pricelist_version,stock.group_stock_manager,1,1,1,1
access_product_pricelist_item_stock_manager,product.pricelist.item stock_manager,product.model_product_pricelist_item,stock.group_stock_manager,1,1,1,1
access_account_account_stock_manager,account.account stock manager,account.model_account_account,stock.group_stock_manager,1,0,0,0
access_board_stock_user,board.board user,board.model_board_board,stock.group_stock_user,1,1,0,0
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_stock_incoterms_all,stock.incoterms all,model_stock_incoterms,,1,0,0,0
access_stock_incoterms_manager,stock.incoterms manager,model_stock_incoterms,stock.group_stock_manager,1,1,1,1
access_stock_warehouse_manager,stock.warehouse.manager,model_stock_warehouse,stock.group_stock_manager,1,1,1,1
access_stock_warehouse_user,stock.warehouse.user,model_stock_warehouse,base.group_user,1,0,0,0
access_stock_location__partner_manager,stock.location.partner.manager,model_stock_location,base.group_partner_manager,1,1,1,1
access_stock_location_manager,stock.location.manager,model_stock_location,stock.group_stock_manager,1,1,1,1
access_stock_location_user,stock.location.user,model_stock_location,base.group_user,1,0,0,0
access_stock_journal_user,stock.journal.user,model_stock_journal,base.group_user,1,0,0,0
access_stock_journal_manager,stock.journal.manager,model_stock_journal,stock.group_stock_manager,1,1,1,1
access_stock_tracking_user,stock.tracking user,model_stock_tracking,stock.group_stock_user,1,1,1,1
access_stock_tracking_manager,stock.tracking manager,model_stock_tracking,stock.group_stock_manager,1,0,0,0
access_stock_tracking_sales_user,stock.tracking sales.user,model_stock_tracking,base.group_sale_salesman,1,1,1,0
access_stock_picking_user,stock.picking user,model_stock_picking,stock.group_stock_user,1,1,1,1
access_stock_picking_in_user,stock.picking.in,model_stock_picking_in,stock.group_stock_user,1,1,1,1
access_stock_picking_out_user,stock.picking.out,model_stock_picking_out,stock.group_stock_user,1,1,1,1
access_stock_picking_manager,stock.picking manager,model_stock_picking,stock.group_stock_manager,1,1,0,0
access_stock_picking_in_manager,stock.picking.in manager,model_stock_picking_in,stock.group_stock_manager,1,0,0,0
access_stock_picking_out_manager,stock.picking.out manager,model_stock_picking_out,stock.group_stock_manager,1,0,0,0
access_stock_production_lot_manager,stock.production.lot manager,model_stock_production_lot,stock.group_stock_manager,1,0,0,0
access_stock_production_lot_user,stock.production.lot user,model_stock_production_lot,stock.group_stock_user,1,1,1,1
access_stock_production_lot_revision,stock.production.lot.revision,model_stock_production_lot_revision,stock.group_stock_user,1,1,1,1
access_stock_move_manager,stock.move manager,model_stock_move,stock.group_stock_manager,1,1,1,1
access_stock_move_user,stock.move user,model_stock_move,stock.group_stock_user,1,1,1,0
access_stock_inventory_user,stock.inventory user,model_stock_inventory,stock.group_stock_user,1,1,1,0
access_stock_inventory_manager,stock.inventory manager,model_stock_inventory,stock.group_stock_manager,1,1,1,1
access_stock_inventory_line_user,stock.inventory.line user,model_stock_inventory_line,stock.group_stock_user,1,1,1,0
access_stock_inventory_line_manager,stock.inventory.line manager,model_stock_inventory_line,stock.group_stock_manager,1,1,1,1
access_stock_report_prodlots,stock.report.prodlots,model_stock_report_prodlots,stock.group_stock_manager,1,0,0,0
access_stock_location_sale_manager,stock.location sale manager,model_stock_location,base.group_sale_manager,1,0,0,0
access_stock_location_stock_manager,stock.location stock manager,model_stock_location,stock.group_stock_manager,1,0,0,0
access_stock_lines_date_user,report.stock.lines.date user,model_report_stock_lines_date,stock.group_stock_user,1,0,0,0
access_stock_lines_date_manager,report.stock.lines.date manager,model_report_stock_lines_date,stock.group_stock_manager,1,1,1,1
access_stock_report_tracklots,stock.report.tracklots,model_stock_report_tracklots,stock.group_stock_user,1,1,1,1
access_report_stock_move_user,report.stock.move user,model_report_stock_move,stock.group_stock_user,1,0,0,0
access_report_stock_move_manager,report.stock.move manager,model_report_stock_move,stock.group_stock_manager,1,1,1,1
access_report_stock_inventory_user,report.stock.inventory user,model_report_stock_inventory,stock.group_stock_user,1,1,1,1
access_product_product_stock_user,product_product_stock_user,product.model_product_product,stock.group_stock_user,1,1,0,0
access_product_template_stock_user,product.template stock user,product.model_product_template,stock.group_stock_user,1,1,0,0
access_account_invoice_user,account.invoice stock user,account.model_account_invoice,stock.group_stock_user,1,1,1,0
access_account_invoice_line_user,account.invoice.line stock user,account.model_account_invoice_line,stock.group_stock_user,1,1,1,0
access_account_invoice_tax_user,account.invoice.tax stock user,account.model_account_invoice_tax,stock.group_stock_user,1,1,1,0
access_account_journal_user,account.journal stock user,account.model_account_journal,stock.group_stock_user,1,0,0,0
access_account_fiscalyear,account.fiscalyear stock user,account.model_account_fiscalyear,stock.group_stock_user,1,0,0,0
access_product_pricelist_item_sale_manager,product.pricelist.item salemanager,product.model_product_pricelist_item,base.group_sale_manager,1,1,1,1
access_product_uom_categ_stock_manager,product.uom.categ stock_manager,product.model_product_uom_categ,stock.group_stock_manager,1,1,1,1
access_product_uom_stock_manager,product.uom stock_manager,product.model_product_uom,stock.group_stock_manager,1,1,1,1
access_product_ul_stock_manager,product.ul stock_manager,product.model_product_ul,stock.group_stock_manager,1,1,1,1
access_product_category_stock_manager,product.category stock_manager,product.model_product_category,stock.group_stock_manager,1,1,1,1
access_product_template_stock_manager,product.template stock_manager,product.model_product_template,stock.group_stock_manager,1,1,1,1
access_product_product_stock_manager,product.product stock_manager,product.model_product_product,stock.group_stock_manager,1,1,1,1
access_product_packaging_stock_manager,product.packaging stock_manager,product.model_product_packaging,stock.group_stock_manager,1,1,1,1
access_product_supplierinfo_stock_manager,product.supplierinfo stock_manager,product.model_product_supplierinfo,stock.group_stock_manager,1,1,1,1
access_pricelist_partnerinfo_stock_manager,pricelist.partnerinfo stock_manager,product.model_pricelist_partnerinfo,stock.group_stock_manager,1,1,1,1
access_product_price_type_stock_manager,product.price.type stock_manager,product.model_product_price_type,stock.group_stock_manager,1,1,1,1
access_product_pricelist_type_stock_manager,product.pricelist.type stock_manager,product.model_product_pricelist_type,stock.group_stock_manager,1,1,1,1
access_product_pricelist_stock_manager,product.pricelist stock_manager,product.model_product_pricelist,stock.group_stock_manager,1,1,1,1
access_ir_property_group_stock_manager,ir_property group_stock_manager,base.model_ir_property,stock.group_stock_manager,1,1,1,1
access_product_group_res_partner_stock_manager,res_partner group_stock_manager,base.model_res_partner,stock.group_stock_manager,1,1,1,0
access_product_pricelist_version_stock_manager,product.pricelist.version stock_manager,product.model_product_pricelist_version,stock.group_stock_manager,1,1,1,1
access_product_pricelist_item_stock_manager,product.pricelist.item stock_manager,product.model_product_pricelist_item,stock.group_stock_manager,1,1,1,1
access_account_account_stock_manager,account.account stock manager,account.model_account_account,stock.group_stock_manager,1,0,0,0
access_board_stock_user,board.board user,board.model_board_board,stock.group_stock_user,1,1,0,0
access_stock_move_matching_manager,stock.move.matching manager,model_stock_move_matching,stock.group_stock_manager,1,1,1,1
access_stock_move_matching_user,stock.move.matching user,model_stock_move_matching,stock.group_stock_user,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_stock_incoterms_all stock.incoterms all model_stock_incoterms 1 0 0 0
3 access_stock_incoterms_manager stock.incoterms manager model_stock_incoterms stock.group_stock_manager 1 1 1 1
4 access_stock_warehouse_manager stock.warehouse.manager model_stock_warehouse stock.group_stock_manager 1 1 1 1
5 access_stock_warehouse_user stock.warehouse.user model_stock_warehouse base.group_user 1 0 0 0
6 access_stock_location__partner_manager stock.location.partner.manager model_stock_location base.group_partner_manager 1 1 1 1
7 access_stock_location_manager stock.location.manager model_stock_location stock.group_stock_manager 1 1 1 1
8 access_stock_location_user stock.location.user model_stock_location base.group_user 1 0 0 0
9 access_stock_journal_user stock.journal.user model_stock_journal base.group_user 1 0 0 0
10 access_stock_journal_manager stock.journal.manager model_stock_journal stock.group_stock_manager 1 1 1 1
11 access_stock_tracking_user stock.tracking user model_stock_tracking stock.group_stock_user 1 1 1 1
12 access_stock_tracking_manager stock.tracking manager model_stock_tracking stock.group_stock_manager 1 0 0 0
13 access_stock_tracking_sales_user stock.tracking sales.user model_stock_tracking base.group_sale_salesman 1 1 1 0
14 access_stock_picking_user stock.picking user model_stock_picking stock.group_stock_user 1 1 1 1
15 access_stock_picking_in_user stock.picking.in model_stock_picking_in stock.group_stock_user 1 1 1 1
16 access_stock_picking_out_user stock.picking.out model_stock_picking_out stock.group_stock_user 1 1 1 1
17 access_stock_picking_manager stock.picking manager model_stock_picking stock.group_stock_manager 1 1 0 0
18 access_stock_picking_in_manager stock.picking.in manager model_stock_picking_in stock.group_stock_manager 1 0 0 0
19 access_stock_picking_out_manager stock.picking.out manager model_stock_picking_out stock.group_stock_manager 1 0 0 0
20 access_stock_production_lot_manager stock.production.lot manager model_stock_production_lot stock.group_stock_manager 1 0 0 0
21 access_stock_production_lot_user stock.production.lot user model_stock_production_lot stock.group_stock_user 1 1 1 1
22 access_stock_production_lot_revision stock.production.lot.revision model_stock_production_lot_revision stock.group_stock_user 1 1 1 1
23 access_stock_move_manager stock.move manager model_stock_move stock.group_stock_manager 1 1 1 1
24 access_stock_move_user stock.move user model_stock_move stock.group_stock_user 1 1 1 0
25 access_stock_inventory_user stock.inventory user model_stock_inventory stock.group_stock_user 1 1 1 0
26 access_stock_inventory_manager stock.inventory manager model_stock_inventory stock.group_stock_manager 1 1 1 1
27 access_stock_inventory_line_user stock.inventory.line user model_stock_inventory_line stock.group_stock_user 1 1 1 0
28 access_stock_inventory_line_manager stock.inventory.line manager model_stock_inventory_line stock.group_stock_manager 1 1 1 1
29 access_stock_report_prodlots stock.report.prodlots model_stock_report_prodlots stock.group_stock_manager 1 0 0 0
30 access_stock_location_sale_manager stock.location sale manager model_stock_location base.group_sale_manager 1 0 0 0
31 access_stock_location_stock_manager stock.location stock manager model_stock_location stock.group_stock_manager 1 0 0 0
32 access_stock_lines_date_user report.stock.lines.date user model_report_stock_lines_date stock.group_stock_user 1 0 0 0
33 access_stock_lines_date_manager report.stock.lines.date manager model_report_stock_lines_date stock.group_stock_manager 1 1 1 1
34 access_stock_report_tracklots stock.report.tracklots model_stock_report_tracklots stock.group_stock_user 1 1 1 1
35 access_report_stock_move_user report.stock.move user model_report_stock_move stock.group_stock_user 1 0 0 0
36 access_report_stock_move_manager report.stock.move manager model_report_stock_move stock.group_stock_manager 1 1 1 1
37 access_report_stock_inventory_user report.stock.inventory user model_report_stock_inventory stock.group_stock_user 1 1 1 1
38 access_product_product_stock_user product_product_stock_user product.model_product_product stock.group_stock_user 1 1 0 0
39 access_product_template_stock_user product.template stock user product.model_product_template stock.group_stock_user 1 1 0 0
40 access_account_invoice_user account.invoice stock user account.model_account_invoice stock.group_stock_user 1 1 1 0
41 access_account_invoice_line_user account.invoice.line stock user account.model_account_invoice_line stock.group_stock_user 1 1 1 0
42 access_account_invoice_tax_user account.invoice.tax stock user account.model_account_invoice_tax stock.group_stock_user 1 1 1 0
43 access_account_journal_user account.journal stock user account.model_account_journal stock.group_stock_user 1 0 0 0
44 access_account_fiscalyear account.fiscalyear stock user account.model_account_fiscalyear stock.group_stock_user 1 0 0 0
45 access_product_pricelist_item_sale_manager product.pricelist.item salemanager product.model_product_pricelist_item base.group_sale_manager 1 1 1 1
46 access_product_uom_categ_stock_manager product.uom.categ stock_manager product.model_product_uom_categ stock.group_stock_manager 1 1 1 1
47 access_product_uom_stock_manager product.uom stock_manager product.model_product_uom stock.group_stock_manager 1 1 1 1
48 access_product_ul_stock_manager product.ul stock_manager product.model_product_ul stock.group_stock_manager 1 1 1 1
49 access_product_category_stock_manager product.category stock_manager product.model_product_category stock.group_stock_manager 1 1 1 1
50 access_product_template_stock_manager product.template stock_manager product.model_product_template stock.group_stock_manager 1 1 1 1
51 access_product_product_stock_manager product.product stock_manager product.model_product_product stock.group_stock_manager 1 1 1 1
52 access_product_packaging_stock_manager product.packaging stock_manager product.model_product_packaging stock.group_stock_manager 1 1 1 1
53 access_product_supplierinfo_stock_manager product.supplierinfo stock_manager product.model_product_supplierinfo stock.group_stock_manager 1 1 1 1
54 access_pricelist_partnerinfo_stock_manager pricelist.partnerinfo stock_manager product.model_pricelist_partnerinfo stock.group_stock_manager 1 1 1 1
55 access_product_price_type_stock_manager product.price.type stock_manager product.model_product_price_type stock.group_stock_manager 1 1 1 1
56 access_product_pricelist_type_stock_manager product.pricelist.type stock_manager product.model_product_pricelist_type stock.group_stock_manager 1 1 1 1
57 access_product_pricelist_stock_manager product.pricelist stock_manager product.model_product_pricelist stock.group_stock_manager 1 1 1 1
58 access_ir_property_group_stock_manager ir_property group_stock_manager base.model_ir_property stock.group_stock_manager 1 1 1 1
59 access_product_group_res_partner_stock_manager res_partner group_stock_manager base.model_res_partner stock.group_stock_manager 1 1 1 0
60 access_product_pricelist_version_stock_manager product.pricelist.version stock_manager product.model_product_pricelist_version stock.group_stock_manager 1 1 1 1
61 access_product_pricelist_item_stock_manager product.pricelist.item stock_manager product.model_product_pricelist_item stock.group_stock_manager 1 1 1 1
62 access_account_account_stock_manager account.account stock manager account.model_account_account stock.group_stock_manager 1 0 0 0
63 access_board_stock_user board.board user board.model_board_board stock.group_stock_user 1 1 0 0
64 access_stock_move_matching_manager stock.move.matching manager model_stock_move_matching stock.group_stock_manager 1 1 1 1
65 access_stock_move_matching_user stock.move.matching user model_stock_move_matching stock.group_stock_user 1 1 1 0
+6
View File
@@ -80,5 +80,11 @@
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record model="ir.rule" id="stock_move_matching_comp_rule">
<field name="name">Stock move matching</field>
<field name="model_id" ref="model_stock_move_matching"/>
<field name="global" eval="True"/>
<field name="domain_force">[('1','=','1')]</field>
</record>
</data>
</openerp>
+87 -9
View File
@@ -1204,7 +1204,6 @@ class stock_picking(osv.osv):
# FIXME: needs refactoring, this code is partially duplicated in stock_move.do_partial()!
def do_partial(self, cr, uid, ids, partial_datas, context=None):
""" Makes partial picking and moves done.
@param partial_datas : Dictionary containing details of partial picking
@@ -1229,7 +1228,7 @@ class stock_picking(osv.osv):
move_product_qty, prodlot_ids, product_avail, partial_qty, product_uoms = {}, {}, {}, {}, {}
move_ids = [x.id for x in pick.move_lines]
move_obj.price_computation(cr, uid, move_ids, partial_datas, context=context)
#move_obj.price_computation(cr, uid, move_ids, partial_datas, context=context)
for move in pick.move_lines:
if move.state in ('done', 'cancel'):
@@ -1631,11 +1630,11 @@ class stock_move(osv.osv):
return True
#TODO: change demo data for this to be possible
def _check_company_location(self, cr, uid, ids, context=None):
# for record in self.browse(cr, uid, ids, context=context):
# if record.location_id.company_id and (record.company_id.id != record.location_id.company_id.id):
# raise osv.except_osv(_('Error'), _('The company of the source location %s and the company of the stock move should be the same') % record.location_id.name)
# if record.location_dest_id.company_id and (record.company_id.id != record.location_dest_id.company_id.id):
# raise osv.except_osv(_('Error'), _('The company of the destination location %s and the company of the stock move should be the same') % record.location_dest_id.name)
for record in self.browse(cr, uid, ids, context=context):
if record.location_id.company_id and (record.company_id.id != record.location_id.company_id.id):
raise osv.except_osv(_('Error'), _('The company of the source location %s and the company of the stock move should be the same') % record.location_id.name)
if record.location_dest_id.company_id and (record.company_id.id != record.location_dest_id.company_id.id):
raise osv.except_osv(_('Error'), _('The company of the destination location %s and the company of the stock move should be the same') % record.location_dest_id.name)
return True
_constraints = [
@@ -2361,6 +2360,8 @@ class stock_move(osv.osv):
self.action_confirm(cr, uid, todo, context=context)
todo = []
#Do price calculation on moves
self.price_calculation(cr, uid, ids, context=context)
for move in self.browse(cr, uid, ids, context=context):
if move.state in ['done','cancel']:
continue
@@ -2658,7 +2659,84 @@ class stock_move(osv.osv):
return res
def price_calculation(self, cr, uid, ids, context=None):
'''
This method puts the right price on the stock move
'''
product_obj = self.pool.get('product.product')
currency_obj = self.pool.get('res.currency')
matching_obj = self.pool.get('stock.move.matching')
uom_obj = self.pool.get('product.uom')
product_avail = {}
for move in self.browse(cr, uid, ids, context=context):
# Initialize variables
product_qty = move.product_qty
product_uom = move.product_uom.id
company_id = move.company_id.id
ctx = context.copy()
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
if company_id != user.company_id.id:
ctx['force_company'] = move.company_id.id
product = product_obj.browse(cr, uid, move.product_id.id, context=ctx)
cost_method = product.cost_method
product_uom_qty = uom_obj._compute_qty(cr, uid, product_uom, product_qty, product.uom_id.id)
# Check if out -> do stock move matchings and if fifo/lifo -> update price
if move.location_id.usage == 'internal' and move.location_dest_id.usage != 'internal':
fifo = (cost_method != 'lifo')
tuples = product_obj.get_stock_matchings_fifolifo(cr, uid, [product.id], product_qty, fifo,
product_uom, move.company_id.currency_id.id, context=ctx)
price_amount = 0.0
amount = 0.0
#Write stock matchings
for match in tuples:
matchvals = {'move_in_id': match[0], 'qty': match[1],
'move_out_id': move.id, 'price_unit_out': match[2]}
match_id = matching_obj.create(cr, uid, matchvals, context=context)
move_in = self.browse(cr, uid, match[0], context=context)
#Reduce remaining quantity
self.write(cr, uid, match[0], { 'qty_remaining': move_in.qty_remaining - match[3]}, context=context)
price_amount += match[1] * match[2]
amount += match[1]
#Write price on out move
if product.qty_available >= product_uom_qty and product.cost_method in ['fifo', 'lifo']:
self.write(cr, uid, move.id, {'price_unit': price_amount / amount}, context=context)
product_obj.write(cr, uid, product.id, {'standard_price': price_amount / product_uom_qty}, context=ctx)
else:
new_price = uom_obj._compute_price(cr, uid, product.uom_id.id, product.standard_price,
product_uom)
self.write(cr, uid, move.id, {'price_unit': new_price}, context=ctx)
if not product.id in product_avail:
product_avail[product.id] = product.qty_available
#Check if in => if price 0.0, take standard price / Update price when average price and price on move != standard price
if move.location_id.usage != 'internal' and move.location_dest_id.usage == 'internal':
if move.price_unit == 0.0:
new_price = uom_obj._compute_price(cr, uid, product.uom_id.id, product.standard_price, product_uom)
self.write(cr, uid, move.id, {'price_unit': new_price}, context=ctx)
elif product.cost_method == 'average':
if product_avail[product.id] >= 0.0:
amount_unit = product.standard_price
move_product_price = uom_obj._compute_price(cr, uid, product_uom, move.price_unit, product.uom_id.id)
new_std_price = ((amount_unit * product_avail[product.id])\
+ (move_product_price * product_uom_qty))/(product_avail[product.id] + product_uom_qty)
product_obj.write(cr, uid, [product.id], {'standard_price': new_std_price}, context=ctx)
product_avail[product.id] += product.qty_available
#This could be made optional
if move.location_id.usage == 'internal' and move.location_dest_id.usage != 'internal' and cost_method == 'average' and move.move_returned_from:
move_orig = move.move_returned_from
new_price = uom_obj._compute_price(cr, uid, move_orig.product_uom, move_orig.price_unit, product.uom_id.id)
if (product_avail[product.id]- product_uom_qty) >= 0.0:
amount_unit = product.standard_price
new_std_price = ((amount_unit * product_avail[product.id])\
- (new_price * product_uom_qty))/(product_avail[product.id] - product_uom_qty)
self.write(cr, uid, [move.id],{'price_unit': move_orig.price_unit,})
product_obj.write(cr, uid, [product.id], {'standard_price': new_std_price}, context=ctx)
product_avail[product.id] -= product_uom_qty
def price_computation(self, cr, uid, ids, partial_datas, context=None):
'''
@@ -2765,7 +2843,7 @@ class stock_move(osv.osv):
#Let us do the price calculation
move_ids = [x.id for x in self.browse(cr, uid, ids, context=context)]
self.price_computation(cr, uid, move_ids, partial_datas, context=context)
#self.price_computation(cr, uid, move_ids, partial_datas, context=context)
for move in self.browse(cr, uid, ids, context=context):
if move.state in ('done', 'cancel'):
@@ -23,20 +23,10 @@ from openerp import tools
from openerp.osv import osv, fields
#@TODO Should not this be product template?
#TODO: remove this module and put everything in existing core modules (purchase, stock, product...)
class product_product (osv.osv):
_name = "product.product"
_inherit = "product.product"
# _columns = {
# 'cost_method': fields.property('', type='selection', view_load=True, selection = [('standard','Standard Price'), ('average','Average Price'),
# ('fifo', 'FIFO price'), ('lifo', 'LIFO price')],
# help="""Standard Price: The cost price is manually updated at the end of a specific period (usually every year).
# Average Price: The cost price is recomputed at each incoming shipment.
# FIFO: When cost is calculated the FIFO way.
# LIFO: When cost is calculated the LIFO way. """,
# string="Costing Method"),
# }
def get_stock_matchings_fifolifo(self, cr, uid, ids, qty, fifo, product_uom_id = False, currency_id = False, context=None):
@@ -120,6 +110,8 @@ class stock_move(osv.osv):
return res
#Overwrites method for FIFO computation
def price_computation(self, cr, uid, ids, partial_datas, context=None):
super(stock_move, self).price_computation(cr, uid, ids, partial_datas, context=context)
@@ -198,8 +190,7 @@ class stock_move(osv.osv):
new_price = product_price
else:
if product_uom != uom_id:
new_price = uom_obj._compute_price(cr, uid, uom_id, new_price,
product_uom)
new_price = uom_obj._compute_price(cr, uid, uom_id, new_price, product_uom)
else:
new_price = product.standard_price
self.write(cr, uid, [move.id],
+10 -2
View File
@@ -209,8 +209,16 @@ class stock_partial_picking(osv.osv_memory):
'prodlot_id': wizard_line.prodlot_id.id,
}
if (picking_type == 'in') and (wizard_line.product_id.cost_method != 'standard'):
partial_data['move%s' % (wizard_line.move_id.id)].update(product_price=wizard_line.cost,
product_currency=wizard_line.currency.id)
#TODO Maybe better ways to get company or main currency
#TODO Should not this currency be calculated at the date of the purchase order? (not the case now?)
if wizard_line.location_id.company_id:
company = wizard_line.location_id.company_id
else:
company = wizard_line.location_dest_id.company_id
currency_obj = self.pool.get("res.currency")
new_price = currency_obj.compute(cr, uid, wizard_line.currency.id, company.currency_id.id,
wizard_line.cost, round=False)
partial_data['move%s' % (wizard_line.move_id.id)].update(product_price=wizard_line.cost,)
stock_picking.do_partial(cr, uid, [partial.picking_id.id], partial_data, context=context)
return {'type': 'ir.actions.act_window_close'}
-24
View File
@@ -1,24 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2013 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from stock_fifo_lifo import *
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-51
View File
@@ -1,51 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'FIFO/LIFO stock valuation',
'version': '0.1',
'author': 'OpenERP SA',
'summary': 'Valorize your stock FIFO/LIFO',
'description' : """
Manage FIFO/LIFO stock valuation
================================
This gives reports which value the stock in a FIFO/LIFO way. It adds a table to match the outs with the ins.
""",
'website': 'http://www.openerp.com',
'images': [],
'depends': ['purchase'],
'category': 'Warehouse Management',
'sequence': 16,
'demo': [
],
'data': ['security/ir.model.access.csv'
],
'test': ['test/fifolifo_price.yml',
'test/lifo_price.yml'
],
'installable': True,
'application': True,
'auto_install': False,
'css': [],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,3 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_stock_move_matching_manager,stock.move.matching manager,model_stock_move_matching,stock.group_stock_manager,1,1,1,1
access_stock_move_matching_user,stock.move.matching user,model_stock_move_matching,stock.group_stock_user,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_stock_move_matching_manager stock.move.matching manager model_stock_move_matching stock.group_stock_manager 1 1 1 1
3 access_stock_move_matching_user stock.move.matching user model_stock_move_matching stock.group_stock_user 1 1 1 0
@@ -1,14 +0,0 @@
<openerp>
<data noupdate="1">
<!-- multi -->
<record model="ir.rule" id="stock_matching_rule">
<field name="name">stock_move matching</field>
<field name="model_id" search="[('model','=','stock.move.matching')]" model="ir.model"/>
<field name="global" eval="True"/>
<field name="domain_force">[('1','=','1')]</field>
</record>
</data>
</openerp>