Purchase discount, report is not overridden correctly (discount column is not added)

bzr revid: rde-eb2cbe0b9f3f95e00a713286f51ecb9a338935bb
This commit is contained in:
rde 2007-01-19 10:05:20 +00:00
parent 7f6d21432d
commit 5c795d67a1
4 changed files with 36 additions and 13 deletions

View File

@ -1 +1,2 @@
import purchase_discount
import report

View File

@ -37,9 +37,19 @@ import pooler
class purchase_order_line(osv.osv):
_name = "purchase.order.line"
_inherit = "purchase.order.line"
def _amount_line(self, cr, uid, ids, prop, unknow_none,unknow_dict):
res = {}
cur_obj=self.pool.get('res.currency')
for line in self.browse(cr, uid, ids):
cur = line.order_id.pricelist_id.currency_id
res[line.id] = cur_obj.round(cr, uid, cur, line.price_unit * line.product_qty * (1 - (line.discount or 0.0) /100.0))
return res
_columns = {
'discount': fields.float('Discount (%)', digits=(16,2)),
}
'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal'),
}
_defaults = {
'discount': lambda *a: 0.0,
}
@ -51,23 +61,34 @@ class purchase_order(osv.osv):
def _amount_untaxed(self, cr, uid, ids, field_name, arg, context):
id_set = ",".join(map(str, ids))
sql_req="SELECT s.id,COALESCE(SUM(l.price_unit*l.product_qty*(100-l.discount))/100.0,0)::decimal(16,2) AS amount FROM purchase_order s LEFT OUTER JOIN purchase_order_line l ON (s.id=l.order_id) WHERE s.id IN ("+id_set+") GROUP BY s.id"
sql_req="SELECT s.id,COALESCE(SUM(l.price_unit*l.product_qty*(100.0-l.discount))/100.0,0) AS amount FROM purchase_order s LEFT OUTER JOIN purchase_order_line l ON (s.id=l.order_id) WHERE s.id IN ("+id_set+") GROUP BY s.id"
cr.execute(sql_req)
res = dict(cr.fetchall())
print "_amount_untaxed : res = "+str(res)
cur_obj=self.pool.get('res.currency')
for id in res.keys():
order=self.browse(cr, uid, [id])[0]
cur=order.pricelist_id.currency_id
res[id]=cur_obj.round(cr, uid, cur, res[id])
return res
def _amount_tax(self, cr, uid, ids, field_name, arg, context):
print "_amount_tax(self, cr, uid, ids, field_name, arg, context):"
res = {}
cur_obj=self.pool.get('res.currency')
for order in self.browse(cr, uid, ids):
val = 0.0
cur=order.pricelist_id.currency_id
for line in order.order_line:
for tax in line.taxes_id:
for c in self.pool.get('account.tax').compute(cr, uid, [tax.id], line.price_unit * (1-(line.discount or 0.0)/100.0), line.product_qty, order.partner_address_id.id):
val+=c['amount']
res[order.id]=round(val,2)
print "_amount_tax : res = "+str(res)
for c in self.pool.get('account.tax').compute(cr, uid, line.taxes_id, line.price_unit * (1-(line.discount or 0.0)/100.0), line.product_qty, order.partner_address_id.id, line.product_id):
val+= cur_obj.round(cr, uid, cur, c['amount'])
res[order.id]=cur_obj.round(cr, uid, cur, val)
return res
_columns = {
'amount_untaxed': fields.function(_amount_untaxed, method=True, string='Untaxed Amount'),
'amount_tax': fields.function(_amount_tax, method=True, string='Taxes'),
}
purchase_order()

View File

@ -1,8 +1,8 @@
<?xml version="1.0"?>
<terp>
<data>
<report id="report_purchase_discount_order"
name="purchase.discount.order"
<report id="purchase.report_purchase_order"
name="purchase.order"
string="Print Order"
model="purchase.order"
rml="purchase_discount/report/order.rml"

View File

@ -33,6 +33,7 @@ import pooler
class order(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
print "foo"
super(order, self).__init__(cr, uid, name, context)
self.localcontext.update({
'time': time,
@ -84,4 +85,4 @@ class order(report_sxw.rml_parse):
product_obj=pooler.get_pool(self.cr.dbname).get('product.product')
return product_obj._product_code(self.cr, self.uid, [product_id], name=None, arg=None, context={'partner_id': partner_id})[product_id]
report_sxw.report_sxw('report.purchase.order','purchase.order','addons/purchase/report/order.rml',parser=order)
report_sxw.report_sxw('report.purchase.order','purchase.order','addons/purchase_discount/report/order.rml',parser=order)