Odoo Help

Welcome!

This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

2

I want to display the price in SALE.ORDER that came from serial number. How will i do that? anyone please help

By
Alcaline
on 10/16/14, 5:33 AM 1,073 views

 

 

 

I add a field for price in WAREHOUSE -> TRACEABILITY -> SERIAL NUMBER and i want this price to be display in SALE ORDER LINE. Once the user select the SERIAL NUMBER it will display the specific price that came from the WAREHOUSE. There is no errors occur but i does not display the price. how will  i going to fix this onchange function..

Here's is my code:

 

def price_get_multi(self, cr, uid, pricelist_ids, products_by_qty_by_partner, serial=None, context=None):
       """multi products 'price_get'.
          @param pricelist_ids:
          @param products_by_qty:
          @param partner:
          @param context: {
            'date': Date of the pricelist (%Y-%m-%d),}
          @return: a dict of dict with product_id as key and a dict 'price by pricelist' as value
       """

       def _create_parent_category_list(id, lst):
           if not id:
               return []
           parent = product_category_tree.get(id)
           if parent:
               lst.append(parent)
               return _create_parent_category_list(parent, lst)
           else:
               return lst
       # _create_parent_category_list

       if context is None:
           context = {}

       date = time.strftime('%Y-%m-%d')
       if 'date' in context:
           date = context['date']

       currency_obj = self.pool.get('res.currency')
       product_obj = self.pool.get('product.product')
       product_category_obj = self.pool.get('product.category')
       product_uom_obj = self.pool.get('product.uom')
       supplierinfo_obj = self.pool.get('product.supplierinfo')
       price_type_obj = self.pool.get('product.price.type')
       

       # product.pricelist.version:
       if not pricelist_ids:
           pricelist_ids = self.pool.get('product.pricelist').search(cr, uid, [], context=context)

       pricelist_version_ids = self.pool.get('product.pricelist.version').search(cr, uid, [
                                                       ('pricelist_id', 'in', pricelist_ids),
                                                       '|',
                                                       ('date_start', '=', False),
                                                       ('date_start', '<=', date),
                                                       '|',
                                                       ('date_end', '=', False),
                                                       ('date_end', '>=', date),
                                                   ])
       if len(pricelist_ids) != len(pricelist_version_ids):
           raise osv.except_osv(_('Warning!'), _("At least one pricelist has no active version !\nPlease create or activate one."))

       # product.product:
       product_ids = [i[0] for i in products_by_qty_by_partner]
       #products = dict([(item['id'], item) for item in product_obj.read(cr, uid, product_ids, ['categ_id', 'product_tmpl_id', 'uos_id', 'uom_id'])])
       products = product_obj.browse(cr, uid, product_ids, context=context)
       products_dict = dict([(item.id, item) for item in products])

       # product.category:
       product_category_ids = product_category_obj.search(cr, uid, [])

0

Ludo - Neobis

--Ludo - Neobis--
2387
| 2 2 5
Hoogvliet, Netherlands
--Ludo - Neobis--

Developer

Ludo - Neobis
On 10/17/14, 6:03 AM

There are 2 paths to take. If you want only the price to show then perhaps the quickest way is a readonly related field. If you want calculations then your suggestion of the on_change is probably best indeed.

What return do you send when the on_change function is called? Do you get to the on_change function (for example, when you put in a print statement, does it show on the commandline)? 

Furthermore, do note that the product also has the on_change method attached. That method also checks for prices, but based on pricelist and currency and so forth. I think you will be better of intercepting/overriding the onchange_product_id for sale order and let it recalculate based on the serial number.

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

1 follower(s)

Stats

Asked: 10/16/14, 5:33 AM
Seen: 1073 times
Last updated: 3/16/15, 8:10 AM