Hi, I have a product for real esate like flats/villa,
I want to calculate the price as per the area of particular flat/villa if the price is fixed per square feet.
I want to map the price with squre feet.
for example, You have 5000.00 rupees per squre feet and the area for a particular house is 1000 squre feet then price should automatically be calculated to 500000.00.
I have actually done the calculation. I have inherited the sale quotation form and listed out the fields like
- Type of Flat.
- Number of flats purchased.
- Per squre feet price.
- Area of flat.
- Purchase amount.
So, how to calculate the price of a flat from given sq.feet and rate?
Here is my code
----------------------------uom_cal.py---------------------------------
from openerp.osv import fields, osv
from openerp.osv import orm
import openerp.addons.decimal_precision as dp
class sale_order(osv.Model):
_inherit="sale.order"
_columns={
'flat_type':fields.char('Type of Flat', size=64),
'flat_purchased': fields.float('Number of Flats Purchased', size=10),
'flat_per_sq_ft_price': fields.float('Per Square Feet Price', size=20),
'flat_area': fields.float('Area of Flat', size=20),
'flat_amount':fields.function('_flat_price', digits_compute=dp.get_precision('Account'), string='PurchaseAmount',
store={
'sales_order': (lambda self, cr, uid, ids, c={}: ids, ['flat_per_sq_ft_price', 'flat_area'], 10),
},)
}
class sale_type(osv.Model):
_name="sale.type"
_columns={
'type_of_flat':fields.many2one('sale.order','Type of Flat')
}
def _flat_price(self, cr, uid, ids, field, arg, context=None):
context = context or {}
res = {}
#print("Result for sale order_final Amount")
for sale_order in self.browse(cr, uid, ids, context=context):
# print("For Loop")
res[sale_order.id] = (sale_order.flat_per_sq_price or 0.0) * (sale_order.flat_area or 0.0)
#print("Result for sale order_final Price")
print(res[sale_order.id])
return res
-------------------------uom_cal_view.py-------------------------
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="sale_view_order_form" model="ir.ui.view">
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<field name="client_order_ref" position="after">
<field name="flat_type"/>
<field name="flat_purchased"/>
<field name="flat_per_sq_ft_price"/>
<field name="flat_area"/>
<field name="flat_amount"/>
</field>
</field>
</record>
</data>
</openerp>