Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
2 Răspunsuri
3898 Vizualizări

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.

Imagine profil
Abandonează
Cel mai bun răspuns

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),
Imagine profil
Abandonează

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

Cel mai bun răspuns
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>

Imagine profil
Abandonează