Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
2 Trả lời
3882 Lượt xem

I have three fields in customer invoice form "Current reading(cr)" ,"Previous reading(pr)" ,"Free copies(fc)" , The three columns have values . Default value of Unit price is 0.15 Paise

cr=3000, pr=1000 , fc= 1000 unitprice="0.15"

((cr - pr)-(fc))*unit price of my product. = ((3000-1000)-(1000) * 0.15

I want to display 150 in my unit price field in customer invoice.

How can be make this.

Thanks in advance.

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

create the unit_price field as functional field and define the function as calculation you want than you get the value as you want

def _get_total(self, cr, uid, ids, field_names, args, context=None):
    res = {}
    for line in self.browse(cr, uid, ids, context=context):
        res[line.id] = (((line.cr-line.pr)-(linefc)*line.unit_price))
    return res

my field is

   'cr':fields.float("CR")
   'pr':field.float("PR")
   'fc':fields.float("FC")

'unit_price':fields.function(_get_total, string='Unit Price', type="float", readonly=True, store=True),
Ảnh đại diện
Huỷ bỏ

please see the error .

TypeError: _get_total() takes at least 8 arguments (7 given) What does it actually means..

this error appears while press the "save" button in the invoice..

upload your full cude here

Hello Athul thanks for your valuable time . i solved this , Below i paste my code.

I use the onchange function to display the result..

Hi, Atul i need an another help.On generating a report, Can you help me.

what kind of help ? which type of report

thanks atul for your answer

Thanks Atul for your answer

Câu trả lời hay nhất
class rent_rent(osv.osv):

_inherit = 'account.invoice'

_columns = {
    'prev_reading': fields.float('Previous reading',size=64,),
    'cur_reading': fields.float('Current reading',size=64,),
    'fre_cop': fields.float('Free copies', size=64,),
    'price': fields.float('Price',size=64,),
    'total': fields.float('Total',size=64),
    }
def onchange_calculer(self, cr, uid, ids, prev_reading, cur_reading, fre_cop, price):

    return {'value':{'total':((cur_reading-prev_reading)-fre_cop)*price}}

rent_rent()

in my xml file.

<?xml version="1.0" encoding="UTF-8"?>

<openerp> <data>

<record model="ir.ui.view" id="fleet_vehicle_form" &gt;="" <field="" name="name">account.invoice.form.inherit</field> <field name="model">account.invoice</field> <field name="inherit_id" ref="account.invoice_form"/> <field name="arch" type="xml">

    <!--  <form string="Vehicle" version="7.0">-->
                 <field name="date_invoice" position="after">
                 <field name="prev_reading"/>
                 <field name="cur_reading"/>
                 <field name="fre_cop"/>
                 <field name="price" on_change="onchange_calculer(prev_reading,cur_reading,fre_cop,price)"/>
                 <field name="total"/>
                 </field>
     <!--</form>-->
   </field>
</record>

<record model="ir.actions.act_window" id="account_invoice"> <field name="name">Account</field> <field name="res_model">account.invoice</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> </record>

</data> </openerp>

Ảnh đại diện
Huỷ bỏ