clearcorp team mailing list archive
-
clearcorp team
-
Mailing list archive
-
Message #00886
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