From 7ea99724a78fd1c53cf780551fca74e56f84e896 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Sat, 28 Nov 2009 10:25:22 +0100 Subject: [PATCH] [imp] multi-company + merge bzr revid: fp@tinyerp.com-20091128092522-g7fumj3p55kv6ygr --- addons/document/document.py | 2 + .../document/security/document_security.xml | 12 +++++ .../purchase/security/purchase_security.xml | 23 ++++++++++ addons/sale/sale.py | 1 + addons/sale/security/sale_security.xml | 12 +++++ addons/stock/security/stock_security.xml | 45 +++++++++++++++++++ addons/stock/stock.py | 16 +++++-- 7 files changed, 107 insertions(+), 4 deletions(-) diff --git a/addons/document/document.py b/addons/document/document.py index cd3d667f8bf..4acef4d3ab8 100644 --- a/addons/document/document.py +++ b/addons/document/document.py @@ -242,6 +242,7 @@ class document_directory(osv.osv): _description = 'Document directory' _columns = { 'name': fields.char('Name', size=64, required=True, select=1), + 'company_id': fields.many2one('res.company', 'Company'), 'write_date': fields.datetime('Date Modified', readonly=True), 'write_uid': fields.many2one('res.users', 'Last Modification User', readonly=True), 'create_date': fields.datetime('Date Created', readonly=True), @@ -269,6 +270,7 @@ class document_directory(osv.osv): 'user_id': lambda self,cr,uid,ctx: uid, 'domain': lambda self,cr,uid,ctx: '[]', 'type': lambda *args: 'directory', + 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'document.directory', c), 'ressource_id': lambda *a: 0 } _sql_constraints = [ diff --git a/addons/document/security/document_security.xml b/addons/document/security/document_security.xml index 52b4e6de990..cddf24cddea 100644 --- a/addons/document/security/document_security.xml +++ b/addons/document/security/document_security.xml @@ -10,5 +10,17 @@ + + + Document Directory multi-company + + + + + + + ['|','|',('company_id','=',False),('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id])] + + diff --git a/addons/purchase/security/purchase_security.xml b/addons/purchase/security/purchase_security.xml index 4cf0414b27d..84b9a87ff05 100644 --- a/addons/purchase/security/purchase_security.xml +++ b/addons/purchase/security/purchase_security.xml @@ -9,5 +9,28 @@ Purchase / User + + + Purchase Order multi-company + + + + + + + ['|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id])] + + + + Purchase Order Line multi-company + + + + + + + ['|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id])] + + diff --git a/addons/sale/sale.py b/addons/sale/sale.py index f8dd5899b68..dc20c6aed4f 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -257,6 +257,7 @@ class sale_order(osv.osv): 'company_id': fields.many2one('res.company','Company'), } _defaults = { + 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'sale.order', c), 'picking_policy': lambda *a: 'direct', 'date_order': lambda *a: time.strftime('%Y-%m-%d'), 'order_policy': lambda *a: 'manual', diff --git a/addons/sale/security/sale_security.xml b/addons/sale/security/sale_security.xml index 4faf2990fa9..cd95e9398bf 100644 --- a/addons/sale/security/sale_security.xml +++ b/addons/sale/security/sale_security.xml @@ -25,5 +25,17 @@ ['|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id])] + + Sale Order Line multi-company + + + + + + + ['|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id])] + + + diff --git a/addons/stock/security/stock_security.xml b/addons/stock/security/stock_security.xml index bdb7c4eed74..793e06c90cb 100644 --- a/addons/stock/security/stock_security.xml +++ b/addons/stock/security/stock_security.xml @@ -17,5 +17,50 @@ + + Warehouse multi-company + + + + + + + ['|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id])] + + + + + Location multi-company + + + + + + + ['|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id])] + + + + + Inventory Line multi-company + + + + + + + ['|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id])] + + + + Inventory multi-company + + + + + + + ['|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id])] + diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 3055ac49d0c..7b7f5c0f389 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -130,7 +130,8 @@ class stock_location(osv.osv): _columns = { 'name': fields.char('Location Name', size=64, required=True, translate=True), 'active': fields.boolean('Active'), - 'usage': fields.selection([('supplier', 'Supplier Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory'), ('procurement', 'Requisition'), ('production', 'Production')], 'Location Type', required=True), + 'company_id': fields.many2one('res.company','Company',required=True), + 'usage': fields.selection([('supplier', 'Supplier Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory'), ('procurement', 'Procurement'), ('production', 'Production')], 'Location Type', required=True), 'allocation_method': fields.selection([('fifo', 'FIFO'), ('lifo', 'LIFO'), ('nearest', 'Nearest')], 'Allocation Method', required=True), 'complete_name': fields.function(_complete_name, method=True, type='char', size=100, string="Location Name"), @@ -174,6 +175,7 @@ class stock_location(osv.osv): 'allocation_method': lambda *a: 'fifo', 'chained_location_type': lambda *a: 'none', 'chained_auto_packing': lambda *a: 'manual', + 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.location', c) 'posx': lambda *a: 0, 'posy': lambda *a: 0, 'posz': lambda *a: 0, @@ -1347,10 +1349,12 @@ class stock_inventory(osv.osv): 'inventory_line_id': fields.one2many('stock.inventory.line', 'inventory_id', 'Inventories', readonly=True, states={'draft': [('readonly', False)]}), 'move_ids': fields.many2many('stock.move', 'stock_inventory_move_rel', 'inventory_id', 'move_id', 'Created Moves'), 'state': fields.selection( (('draft', 'Draft'), ('done', 'Done'), ('cancel','Cancelled')), 'State', readonly=True), + 'company_id': fields.many2one('res.company','Company',required=True), } _defaults = { 'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'), 'state': lambda *a: 'draft', + 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.inventory', c) } # @@ -1417,7 +1421,8 @@ class stock_inventory_line(osv.osv): 'location_id': fields.many2one('stock.location', 'Location', required=True), 'product_id': fields.many2one('product.product', 'Product', required=True), 'product_uom': fields.many2one('product.uom', 'Product UOM', required=True), - 'product_qty': fields.float('Quantity') + 'product_qty': fields.float('Quantity'), + 'company_id': fields.related('inventory_id','company_id',type='many2one',object='res.company',string='Company') } def on_change_product_id(self, cr, uid, ids, location_id, product, uom=False): @@ -1442,12 +1447,15 @@ class stock_warehouse(osv.osv): _columns = { 'name': fields.char('Name', size=60, required=True), # 'partner_id': fields.many2one('res.partner', 'Owner'), + 'company_id': fields.many2one('res.company','Company',required=True), 'partner_address_id': fields.many2one('res.partner.address', 'Owner Address'), 'lot_input_id': fields.many2one('stock.location', 'Location Input', required=True), 'lot_stock_id': fields.many2one('stock.location', 'Location Stock', required=True), 'lot_output_id': fields.many2one('stock.location', 'Location Output', required=True), } - + _defaults = { + 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.inventory', c) + } stock_warehouse() @@ -1500,4 +1508,4 @@ class stock_picking_move_wizard(osv.osv_memory): stock_picking_move_wizard() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: