← Back to team overview

clearcorp team mailing list archive

lp:~rr.clearcorp/openerp-ccorp-addons/6.1-sale_order_global_discount into lp:openerp-ccorp-addons/6.1

 

Ronald Rubi has proposed merging lp:~rr.clearcorp/openerp-ccorp-addons/6.1-sale_order_global_discount into lp:openerp-ccorp-addons/6.1.

Requested reviews:
  CLEARCORP drivers (clearcorp-drivers)

For more details, see:
https://code.launchpad.net/~rr.clearcorp/openerp-ccorp-addons/6.1-sale_order_global_discount/+merge/192967

[FIX] Workaround functional fields in sale_order
-- 
https://code.launchpad.net/~rr.clearcorp/openerp-ccorp-addons/6.1-sale_order_global_discount/+merge/192967
Your team CLEARCORP development team is subscribed to branch lp:openerp-ccorp-addons/6.1.
=== modified file 'sale_order_global_discount/sale_order_global_discount.py'
--- sale_order_global_discount/sale_order_global_discount.py	2013-07-19 15:23:09 +0000
+++ sale_order_global_discount/sale_order_global_discount.py	2013-10-28 22:37:03 +0000
@@ -62,28 +62,40 @@
             self.write(cr, uid, [line.id], {'id': line.id}, context=context)
         return True
     
-class SaleOrder(osv.osv):
-    _inherit = 'sale.order'
-    _description = 'Sales Order'
+class sale_order(osv.osv):
+    _inherit = "sale.order"
+    _description = "Sales Order"
     
     def _amount_line_tax_no_discount(self, cr, uid, line, context=None):
         val = 0.0
         for c in self.pool.get('account.tax').compute_all(cr, uid, line.tax_id, line.price_unit, line.product_uom_qty, line.order_id.partner_invoice_id.id, line.product_id, line.order_id.partner_id)['taxes']:
             val += c.get('amount', 0.0)
         return val
-    
-    def _amount_all_ccorp(self, cr, uid, ids, field_name, arg, context=None):
+        
+    def _amount_all(self, cr, uid, ids, field_name, arg, context=None):
+        ###Workaround, functional fields###
+        ###See sale.order###
         cur_obj = self.pool.get('res.currency')
         res = {}
         for order in self.browse(cr, uid, ids, context=context):
             res[order.id] = {
+                'amount_untaxed': 0.0,
+                'amount_tax': 0.0,
+                'amount_total': 0.0,
                 'order_discount': 0.0,
                 'amount_discounted': 0.0,
                 'amount_untaxed_not_discounted': 0.0,
             }
+            val = val1 = 0.0
+            cur = order.pricelist_id.currency_id
             for line in order.order_line:
+                val1 += line.price_subtotal
+                val += self._amount_line_tax(cr, uid, line, context=context)
                 res[order.id]['amount_untaxed_not_discounted'] += line.price_subtotal_not_discounted
                 res[order.id]['amount_discounted'] += line.price_subtotal_not_discounted - line.price_subtotal
+            res[order.id]['amount_tax'] = cur_obj.round(cr, uid, cur, val)
+            res[order.id]['amount_untaxed'] = cur_obj.round(cr, uid, cur, val1)
+            res[order.id]['amount_total'] = res[order.id]['amount_untaxed'] + res[order.id]['amount_tax']                
             if res[order.id]['amount_untaxed_not_discounted'] == 0:
                 res[order.id]['order_discount'] = 0
             else:
@@ -94,19 +106,37 @@
         return self.pool.get('sale.order')._get_order(cr, uid, ids, context)
         
     _columns = {
-        'order_discount': fields.function(_amount_all_ccorp, digits_compute= dp.get_precision('Sale Price'), string='Untaxed Amount',
-            store = {
-                'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
-                'sale.order.line': (_get_order_ccorp, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
-            },
-            multi='sums'),
-        'amount_discounted': fields.function(_amount_all_ccorp, digits_compute= dp.get_precision('Sale Price'), string='Discount',
-            store = {
-                'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
-                'sale.order.line': (_get_order_ccorp, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
-            },
-            multi='sums'),
-        'amount_untaxed_not_discounted': fields.function(_amount_all_ccorp, digits_compute= dp.get_precision('Sale Price'), string='Subtotal',
+        'amount_untaxed': fields.function(_amount_all, digits_compute= dp.get_precision('Sale Price'), string='Untaxed Amount',
+            store = {
+                'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
+                'sale.order.line': (_get_order_ccorp, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
+            },
+            multi='sums', help="The amount without tax."),
+        'amount_tax': fields.function(_amount_all, digits_compute= dp.get_precision('Sale Price'), string='Taxes',
+            store = {
+                'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
+                'sale.order.line': (_get_order_ccorp, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
+            },
+            multi='sums', help="The tax amount."),
+        'amount_total': fields.function(_amount_all, digits_compute= dp.get_precision('Sale Price'), string='Total',
+            store = {
+                'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
+                'sale.order.line': (_get_order_ccorp, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
+            },
+            multi='sums', help="The total amount."),
+        'order_discount': fields.function(_amount_all, digits_compute= dp.get_precision('Sale Price'), required=True, string='Untaxed Amount',
+            store = {
+                'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
+                'sale.order.line': (_get_order_ccorp, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
+            },
+            multi='sums'),
+        'amount_discounted': fields.function(_amount_all, digits_compute= dp.get_precision('Sale Price'), required=True, string='Discount',
+            store = {
+                'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
+                'sale.order.line': (_get_order_ccorp, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
+            },
+            multi='sums'),
+        'amount_untaxed_not_discounted': fields.function(_amount_all, digits_compute= dp.get_precision('Sale Price'), required=True, string='Subtotal',
             store = {
                 'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
                 'sale.order.line': (_get_order_ccorp, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
@@ -123,11 +153,11 @@
         for sale in self.browse(cr, uid, ids, context=context):
             context.update({'second_time': True})
             self.write(cr, uid, [sale.id], {}, context=context)
-        super(SaleOrder, self).button_dummy(cr, uid, ids, context=context)
+        super(sale_order, self).button_dummy(cr, uid, ids, context=context)
         return True
     
     def create(self, cr, uid, vals, context=None):
-        sale_id = super(SaleOrder, self).create(cr, uid, vals, context=context)
+        sale_id = super(sale_order, self).create(cr, uid, vals, context=context)
         self.button_dummy(cr, uid, [sale_id], context=context)
         return sale_id
     
@@ -136,4 +166,4 @@
              self.button_dummy(cr, uid, ids, context=context)
         else:
             del context['second_time']
-        return super(SaleOrder, self).write(cr, uid, ids, vals, context=context)
+        return super(sale_order, self).write(cr, uid, ids, vals, context=context)


Follow ups