Divyesh Makwana(OpenERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-bug-800100-mdi into 
lp:openobject-addons.

Requested reviews:
  Raphael Collet (OpenERP) (rco-openerp)
Related bugs:
  Bug #800100 in OpenERP Addons: "Sale: Constraint Error-Order Reference must 
be unique per company"
  https://bugs.launchpad.net/openobject-addons/+bug/800100

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-800100-mdi/+merge/81671

Hello Sir,

I have fix the issue: https://bugs.launchpad.net/openobject-addons/+bug/800100 
"Sale: Constraint Error-Order Reference must be unique per company".

I changes the constraint for sale order and purchase order.


Thanks and Regards,

Divyesh Makwana(MDI)
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-800100-mdi/+merge/81671
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/trunk-bug-800100-mdi.
=== modified file 'account/account_invoice.py'
--- account/account_invoice.py	2011-10-19 08:14:03 +0000
+++ account/account_invoice.py	2011-11-09 06:49:26 +0000
@@ -286,6 +286,9 @@
         'internal_number': False,
         'user_id': lambda s, cr, u, c: u,
     }
+    _sql_constraints = [
+        ('number_uniq', 'unique(number,company_id)', 'Invoice Number must be unique per Company!'),
+    ]
 
     def fields_view_get(self, cr, uid, view_id=None, view_type=False, context=None, toolbar=False, submenu=False):
         journal_obj = self.pool.get('account.journal')

=== modified file 'mrp/mrp.py'
--- mrp/mrp.py	2011-11-08 20:33:03 +0000
+++ mrp/mrp.py	2011-11-09 06:49:26 +0000
@@ -271,7 +271,7 @@
         if context is None:
             context = {}
             context['lang'] = self.pool.get('res.users').browse(cr,uid,uid).context_lang
-            
+
         if product_id:
             prod = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
             v = {'name': prod.name, 'product_uom': prod.uom_id.id}
@@ -490,6 +490,9 @@
         'name': lambda x, y, z, c: x.pool.get('ir.sequence').get(y, z, 'mrp.production') or '/',
         'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'mrp.production', context=c),
     }
+    _sql_constraints = [
+        ('name_uniq', 'unique(name,company_id)', 'Order Reference must be unique per Company!'),
+    ]
     _order = 'priority desc, date_planned asc';
 
     def _check_qty(self, cr, uid, ids, context=None):

=== modified file 'purchase/purchase.py'
--- purchase/purchase.py	2011-11-01 06:06:29 +0000
+++ purchase/purchase.py	2011-11-09 06:49:26 +0000
@@ -228,7 +228,7 @@
         'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'purchase.order', context=c),
     }
     _sql_constraints = [
-        ('name_uniq', 'unique(name)', 'Order Reference must be unique !'),
+        ('name_uniq', 'unique(name,company_id)', 'Order Reference must be unique per Company!'),
     ]
     _name = "purchase.order"
     _description = "Purchase Order"

=== modified file 'sale/sale.py'
--- sale/sale.py	2011-11-08 15:21:42 +0000
+++ sale/sale.py	2011-11-09 06:49:26 +0000
@@ -110,7 +110,7 @@
         for item in cr.dictfetchall():
             if item['move_state'] == 'cancel':
                 continue
-        
+
             if item['picking_type'] == 'in':#this is a returned picking
                 tmp[item['sale_order_id']]['total'] -= item['nbr'] or 0.0 # Deducting the return picking qty
                 if item['procurement_state'] == 'done' or item['move_state'] == 'done':
@@ -125,7 +125,7 @@
                 res[order.id] = 100.0
             else:
                 res[order.id] = tmp[order.id]['total'] and (100.0 * tmp[order.id]['picked'] / tmp[order.id]['total']) or 0.0
-        return res        
+        return res
 
     def _invoiced_rate(self, cursor, user, ids, name, arg, context=None):
         res = {}
@@ -280,7 +280,7 @@
         'partner_shipping_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').address_get(cr, uid, [context['partner_id']], ['delivery'])['delivery'],
     }
     _sql_constraints = [
-        ('name_uniq', 'unique(name)', 'Order Reference must be unique !'),
+        ('name_uniq', 'unique(name,company_id)', 'Order Reference must be unique per Company!'),
     ]
     _order = 'name desc'
 
@@ -898,7 +898,7 @@
             return result[1]
         except Exception, ex:
             return False
-    
+
     _name = 'sale.order.line'
     _description = 'Sales Order Line'
     _columns = {
@@ -1266,7 +1266,7 @@
 class sale_config_picking_policy(osv.osv_memory):
     _name = 'sale.config.picking_policy'
     _inherit = 'res.config'
-    
+
     _columns = {
         'name': fields.char('Name', size=64),
         'sale_orders': fields.boolean('Based on Sales Orders',),
@@ -1307,7 +1307,7 @@
 
         if wizard.sale_orders:
             menu_id = data_obj.get_object(cr, uid, 'sale', 'menu_invoicing_sales_order_lines').id
-            menu_obj.write(cr, uid, menu_id, {'groups_id':[(4,group_id)]}) 
+            menu_obj.write(cr, uid, menu_id, {'groups_id':[(4,group_id)]})
 
         if wizard.deli_orders:
             menu_id = data_obj.get_object(cr, uid, 'sale', 'menu_action_picking_list_to_invoice').id
@@ -1345,7 +1345,7 @@
             product_obj = self.pool.get('product.product')
             product_obj.write(cr, uid, prod_id, {'uom_id':wizard.time_unit.id, 'uom_po_id': wizard.time_unit.id})
 
-        ir_values_obj.set(cr, uid, 'default', False, 'order_policy', ['sale.order'], wizard.order_policy)  
+        ir_values_obj.set(cr, uid, 'default', False, 'order_policy', ['sale.order'], wizard.order_policy)
         if wizard.task_work and wizard.time_unit:
             company_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.id
             self.pool.get('res.company').write(cr, uid, [company_id], {

=== modified file 'stock/stock.py'
--- stock/stock.py	2011-10-11 14:03:35 +0000
+++ stock/stock.py	2011-11-09 06:49:26 +0000
@@ -661,6 +661,9 @@
         'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
         'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.picking', context=c)
     }
+    _sql_constraints = [
+        ('name_uniq', 'unique(name,company_id)', 'Order Reference must be unique per Company!'),
+    ]
 
     def action_process(self, cr, uid, ids, context=None):
         if context is None: context = {}
@@ -1774,7 +1777,7 @@
 
     def onchange_date(self, cr, uid, ids, date, date_expected, context=None):
         """ On change of Scheduled Date gives a Move date.
-        @param date_expected: Scheduled Date 
+        @param date_expected: Scheduled Date
         @param date: Move Date
         @return: Move Date
         """
@@ -2237,7 +2240,7 @@
         return super(stock_move, self).unlink(
             cr, uid, ids, context=ctx)
 
-    # _create_lot function is not used anywhere 
+    # _create_lot function is not used anywhere
     def _create_lot(self, cr, uid, ids, product_id, prefix=False):
         """ Creates production lot
         @return: Production lot id
@@ -2283,7 +2286,7 @@
         self.action_done(cr, uid, res)
         return res
 
-    # action_split function is not used anywhere 
+    # action_split function is not used anywhere
     def action_split(self, cr, uid, ids, quantity, split_by_qty=1, prefix=False, with_lot=True, context=None):
         """ Split Stock Move lines into production lot which specified split by quantity.
         @param cr: the database cursor

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to