Skip to Content
Odoo Meniu
  • Autentificare
  • Try it free
  • Aplicații
    Finanțe
    • Contabilitate
    • Facturare
    • Cheltuieli
    • Spreadsheet (BI)
    • Documente
    • Semn
    Vânzări
    • CRM
    • Vânzări
    • POS Shop
    • POS Restaurant
    • Abonamente
    • Închiriere
    Site-uri web
    • Constructor de site-uri
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Lanț Aprovizionare
    • Inventar
    • Producție
    • PLM
    • Achiziție
    • Maintenance
    • Calitate
    Resurse Umane
    • Angajați
    • Recrutare
    • Time Off
    • Evaluări
    • Referințe
    • Flotă
    Marketing
    • Social Marketing
    • Marketing prin email
    • SMS Marketing
    • Evenimente
    • Automatizare marketing
    • Sondaje
    Servicii
    • Proiect
    • Foi de pontaj
    • Servicii de teren
    • Centru de asistență
    • Planificare
    • Programări
    Productivitate
    • Discuss
    • Aprobări
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Aplicații Terțe Odoo Studio Platforma Odoo Cloud
  • Industrii
    Retail
    • Book Store
    • Magazin de îmbrăcăminte
    • Magazin de Mobilă
    • Magazin alimentar
    • Magazin de materiale de construcții
    • Magazin de jucării
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Distribuitor de băuturi
    • Hotel
    Proprietate imobiliara
    • Real Estate Agency
    • Firmă de Arhitectură
    • Construcție
    • Estate Managament
    • Grădinărit
    • Asociația Proprietarilor de Proprietăți
    Consultanta
    • Firma de Contabilitate
    • Partener Odoo
    • Agenție de marketing
    • Law firm
    • Atragere de talente
    • Audit & Certification
    Producție
    • Textil
    • Metal
    • Mobilier
    • Mâncare
    • Brewery
    • Cadouri corporate
    Health & Fitness
    • Club Sportiv
    • Magazin de ochelari
    • Centru de Fitness
    • Wellness Practitioners
    • Farmacie
    • Salon de coafură
    Trades
    • Handyman
    • IT Hardware and Support
    • Asigurare socială de stat
    • Cizmar
    • Servicii de curățenie
    • HVAC Services
    Altele
    • Organizație nonprofit
    • Agenție de Mediu
    • Închiriere panouri publicitare
    • Fotografie
    • Închiriere biciclete
    • Asigurare socială
    Browse all Industries
  • Comunitate
    Învăță
    • Tutorials
    • Documentație
    • Certificări
    • Instruire
    • Blog
    • Podcast
    Empower Education
    • Program Educațional
    • Scale Up! Business Game
    • Visit Odoo
    Obține Software-ul
    • Descărcare
    • Compară Edițiile
    • Lansări
    Colaborați
    • Github
    • Forum
    • Evenimente
    • Translations
    • Devino Partener
    • Services for Partners
    • Înregistrează-ți Firma de Contabilitate
    Obține Servicii
    • Găsește un Partener
    • Găsiți un contabil
    • Meet an advisor
    • Servicii de Implementare
    • Referințe ale clienților
    • Suport
    • Actualizări
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Obține un demo
  • Prețuri
  • Ajutor

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Contabilitate
  • Inventar
  • PoS
  • Proiect
  • MRP
All apps
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
All Posts Oameni Insigne
Etichete (View all)
odoo accounting v14 pos v15
Despre acest forum
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
All Posts Oameni Insigne
Etichete (View all)
odoo accounting v14 pos v15
Despre acest forum
Suport

Purchase module, unit price reset on change of qty or uom. What needs to be changed in on_change function ?

Abonare

Primiți o notificare când există activitate la acestă postare

Această întrebare a fost marcată
purchasefunctionv8price
1 Răspunde
10602 Vizualizări
Imagine profil
Christian Parent

When creating a purchase order, if you happen to change the price first then quantity or unit of measure after, the price will reset back to what it was before you changeg it (default price or 0.0). It have something to do with the onchange_product_id function but, cannot figure out what exactly creates this.

here is the code of the function (with non relevent code removed) :

def onchange_product_id(self, cr, uid, ids, pricelist_id, product_id, qty, uom_id,
        partner_id, date_order=False, fiscal_position_id=False, date_planned=False,
        name=False, price_unit=False, context=None):

    if context is None:
        context = {}

    res = {'value': {'price_unit': price_unit or 0.0, 'name': name or '', 'product_uom' : uom_id or False}}
    if not product_id:
        return res

    product_product = self.pool.get('product.product')
    product_uom = self.pool.get('product.uom')
    product_pricelist = self.pool.get('product.pricelist')

 ....

    if pricelist_id:
        price = product_pricelist.price_get(cr, uid, [pricelist_id],
                product.id, qty or 1.0, partner_id or False, {'uom': uom_id, 'date': date_order})[pricelist_id]
    else:
        price = product.standard_price

....

    res['value'].update({'price_unit': price, 'taxes_id': taxes_ids})

    return res

product_id_change = onchange_product_id
product_uom_change = onchange_product_uom

What cause that behavior and how to modify it to keep the price entered by the user at any time ? (This has been like that since at least V.6)

0
Imagine profil
Abandonează
Imagine profil
Qutechs, Ahmed M.Elmubarak
Cel mai bun răspuns

Hello,

the price changed by this code:

# - determine price_unit and taxes_id
    if pricelist_id:
        price = product_pricelist.price_get(cr, uid, [pricelist_id],
                product.id, qty or 1.0, partner_id or False, {'uom': uom_id, 'date': date_order})[pricelist_id]
    else:
        price = product.standard_price

it'll check the price list for the product or set it to the standard one. So if you need the price entered by the user never changed you have to overwrite this function to don't use the price variable in the line "before the return res":

res['value'].update({'price_unit': price, 'taxes_id': taxes_ids})

Update

you can add

if price_unit:
         price = price_unit

after the if - else condition ...

note: this is simple solution, in case the user doesn't change the price and then he changed the uom, there will be no automatic converting to the price ! so you'll need more work here.

I hope this could helps..

Regards...

0
Imagine profil
Abandonează
Christian Parent
Autor

I did had tried that change, it did not worked.

It had something to do with the declaration price_unit=False in the signature. I have moved price_unit before the date_order=False, in the signature so it did not need to be initiated, did the changes in form view too. It works. Not for the the onchange_product_uom function which calls the onchange_product_id function in its return. Did the same changes in same order (in signature) but, getting a string instead of int error.... Looking at it now !

Qutechs, Ahmed M.Elmubarak

there is no something to to with price_unit=False it just a default value, you've to don't interrupt the order of the signature. I have tried my change before I post this answer and it worked! I hope if you can return the function as it is original one with that change and try it...

Christian Parent
Autor

When using:

res['value'].update({'price_unit': price_unit, 'taxes_id': taxes_ids})

If I change the quantity afterwards or the unit of measure, the price returns to 0.00$.

I have changed everything back to original, I had already tried your solution before and it was behaving that way. I will also retry the price = price_unit and see but as I remember, it was also setting it back to 0.00$

Qutechs, Ahmed M.Elmubarak

I've updated the answer, if you still get the 0.00 , please check the order of the params in the xml view you can check the price_unit value by printing it to server and then try to change the qty.

Qutechs, Ahmed M.Elmubarak

hey man, I didn't notice that you're tagging V8, this may not work with you cause I checked it with V7 I'm so sorry for that...

Christian Parent
Autor

No prob, I have a production server which runs 6.0.x, will try your solution on it. For 8, I have set everything back to normal, re-moved price_unit in the signature of only onchange_product_id fonction so it does not need to be initiated to false, and made the appropriated changes in the xml also and it works as intended for both, onchange_product_id and onchange_product_uom. Looks like the signature sets it to 0 (false) no mather what the call pass as argument.

Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Înscrie-te
Related Posts Răspunsuri Vizualizări Activitate
Purchase module, unit price reset on change of qty or uom. What needs to be changed in on_change function ?
purchase function v8 price
Imagine profil
0
mar. 15
4703
Purchase module, unit price reset on change of qty or uom. What needs to be changed in on_change function ?
purchase function v8 price
Imagine profil
0
mar. 15
4712
Adding custom field in Sale order line to show values into Purchase order line
purchase sales function
Imagine profil
Imagine profil
Imagine profil
Imagine profil
3
aug. 25
2484
Why does the purchase order allow products where Can be Purchased is false?
purchase v8 product
Imagine profil
Imagine profil
1
nov. 24
4774
Price not updated when new value is written from purchase order
purchase price purchase_order
Imagine profil
Imagine profil
1
sept. 23
7285
Comunitate
  • Tutorials
  • Documentație
  • Forum
Open Source
  • Descărcare
  • Github
  • Runbot
  • Translations
Servicii
  • Hosting Odoo.sh
  • Suport
  • Actualizare
  • Custom Developments
  • Educație
  • Găsiți un contabil
  • Găsește un Partener
  • Devino Partener
Despre Noi
  • Compania noastră
  • Active de marcă
  • Contactați-ne
  • Locuri de muncă
  • Evenimente
  • Podcast
  • Blog
  • Clienți
  • Aspecte juridice • Confidențialitate
  • Securitate
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo este o suită de aplicații de afaceri open source care acoperă toate nevoile companiei dvs.: CRM, comerț electronic, contabilitate, inventar, punct de vânzare, management de proiect etc.

Propunerea de valoare unică a Odoo este să fie în același timp foarte ușor de utilizat și complet integrat.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now