Skip to Content
Odoo Menu
  • Prisijungti
  • Išbandykite nemokamai
  • Programėlės
    Finansai
    • Apskaita
    • Pateikimas apmokėjimui
    • Sąnaudos
    • Skaičiuoklė (BI)
    • Dokumentai
    • Pasirašymas
    Pardavimai
    • CRM
    • Pardavimai
    • Kasų sistema - Parduotuvė
    • Kasų sistema - Restoranas
    • Prenumeratos
    • Nuoma
    Svetainės
    • Svetainių kūrėjimo įrankis
    • El. Prekyba
    • Internetinis Tinklaraštis
    • Forumas
    • Tiesioginis pokalbis
    • eMokymasis
    Tiekimo grandinė
    • Atsarga
    • Gamyba
    • PLM
    • Įsigijimai
    • Priežiūra
    • Kokybė
    Žmogaus ištekliai
    • Darbuotojai
    • Įdarbinimas
    • Atostogos
    • Įvertinimai
    • Rekomendacijos
    • Transporto priemonės
    Rinkodara
    • Socialinė rinkodara
    • Rinkodara el. paštu
    • SMS rinkodara
    • Renginiai
    • Rinkodaros automatizavimas
    • Apklausos
    Paslaugos
    • Projektas
    • Darbo laiko žiniaraščiai
    • Priežiūros tarnyba
    • Pagalbos tarnyba
    • Planavimas
    • Rezervacijos
    Produktyvumas
    • Diskucija
    • Patvirtinimai
    • IoT
    • VoIP
    • Žinių biblioteka
    • WhatsApp
    Trečiųjų šalių programos Odoo Studija Odoo debesijos platforma
  • Pramonės šakos
    Mažmeninė prekyba
    • Knygynas
    • Drabužių parduotuvė
    • Baldų parduotuvė
    • Maisto prekių parduotuvė
    • Techninės įrangos parduotuvė
    • Žaislų parduotuvė
    Food & Hospitality
    • Barai ir pub'ai
    • Restoranas
    • Greitasis maistas
    • Guest House
    • Gėrimų platintojas
    • Hotel
    Nekilnojamasis turtas
    • Real Estate Agency
    • Architektūros įmonė
    • Konstrukcija
    • Estate Managament
    • Sodininkauti
    • Turto savininkų asociacija
    Konsultavimas
    • Accounting Firm
    • Odoo Partneris
    • Marketing Agency
    • Teisinė firma
    • Talentų paieška
    • Auditai & sertifikavimas
    Gamyba
    • Textile
    • Metal
    • Furnitures
    • Maistas
    • Brewery
    • Įmonių dovanos
    Sveikata & Fitnesas
    • Sporto klubas
    • Akinių parduotuvė
    • Fitneso Centras
    • Sveikatos praktikai
    • Vaistinė
    • Kirpėjas
    Trades
    • Handyman
    • IT įranga ir palaikymas
    • Saulės energijos sistemos
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Kiti
    • Nonprofit Organization
    • Aplinkos agentūra
    • Reklaminių stendų nuoma
    • Fotografavimas
    • Dviračių nuoma
    • Programinės įrangos perpardavėjas
    Browse all Industries
  • Bendrija
    Mokykitės
    • Mokomosios medžiagos
    • Dokumentacija
    • Sertifikatai
    • Mokymai
    • Internetinis Tinklaraštis
    • Tinklalaidės
    Skatinkite švietinimą
    • Švietimo programa
    • Scale Up! Verslo žaidimas
    • Aplankykite Odoo
    Gaukite programinę įrangą
    • Atsisiųsti
    • Palyginkite versijas
    • Leidimai
    Bendradarbiauti
    • Github
    • Forumas
    • Renginiai
    • Vertimai
    • Tapkite partneriu
    • Services for Partners
    • Registruokite jūsų apskaitos įmonę
    Gaukite paslaugas
    • Susiraskite partnerį
    • Susirask buhalterį
    • Susitikti su konsultantu
    • Diegimo paslaugos
    • Klientų rekomendavimas
    • Palaikymas
    • Atnaujinimai
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Gaukite demo
  • Kainodara
  • Pagalba

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

  • CRM
  • e-Commerce
  • Apskaita
  • Atsarga
  • PoS
  • Projektas
  • MRP
All apps
You need to be registered to interact with the community.
All Posts People Badges
Žymos (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
Žymos (View all)
odoo accounting v14 pos v15
About this forum
Pagalba

Client order ref on delivery orders

Prenumeruoti

Get notified when there's activity on this post

This question has been flagged
sale.ordervaluestock.picking
3 Replies
9358 Rodiniai
Portretas
Roberto Barreiro

I'm working under odoo v8, and i'm trying to pass the client_order_ref from sale orders to delivery orders. I could create a new field on delivery orders, called client_order_ref, but I can't pass the value of this field from sale order to delivery order, my custom field is always empty.

Code of my module:

from openerp.osv import fields, osv

class stock_picking(osv.osv):
        _inherit = "stock.picking"
        _columns = {
                'client_order_ref': fields.char('Reference/Description', copy=True),
        }

class sale_order(osv.osv):
        _inherit = "sale.order"

        def _prepare_order_line_procurement(self, cr, uid, order, line, group_id=False, context=None):
                date_planned = self._get_date_planned(cr, uid, order, line, order.date_order, context=context)
                return {
                        'client_order_ref': order.client_order_ref,  # I tried with 'blabla' instead order.client_order_ref and field is still empty
                        'name': line.name,
                        'origin': order.name,
                        'date_planned': date_planned,
                        'product_id': line.product_id.id,
                        'product_qty': line.product_uom_qty,
                        'product_uom': line.product_uom.id,
                        'product_uos_qty': (line.product_uos and line.product_uos_qty) or line.product_uom_qty,
                        'product_uos': (line.product_uos and line.product_uos.id) or line.product_uom.id,
                        'company_id': order.company_id.id,
                        'group_id': group_id,
                        'invoice_state': (order.order_policy == 'picking') and '2binvoiced' or 'none',
                        'sale_line_id': line.id
                }

The code of my view

<openerp>
<data>
        <record id="client_order_ref_stock_view_picking_form" model="ir.ui.view">
                <field name="name">client.order.ref.stock.view.picking.form</field>
                <field name="model">stock.picking</field>
                <field name="type">form</field>
                <field name="inherit_id" ref="stock.view_picking_form"/>
                <field name="arch" type="xml">
                        <field name="origin" position="before">
                                <field name="client_order_ref"/>
                        </field>
                </field>
        </record>
</data>
</openerp>

1
Portretas
Atmesti
Roberto Barreiro
Autorius

I tried this with the same result, the custom flied still is empty: def _prepare_order_line_procurement(self, cr, uid, order, line, group_id=False, context=None): vals = super(sale_order, self)._prepare_order_line_procurement(cr, uid, order, line, group_i$ vals.update({'client_order_ref': 'blabla'}) return vals

Portretas
Roberto Barreiro
Autorius Best Answer

Thanks to Emipro Technologies, he puts me on the path and I could make it works with this code:

class stock_move(osv.osv):
    _inherit = "stock.move"

    def _picking_assign(self, cr, uid, move_ids, procurement_group, location_from, location_to, context=None):

        # Call super function
        res = super(stock_move, self)._picking_assign(cr, uid, move_ids, procurement_group, location_from, location_to, context=context)

        # Get move id
        move = self.browse(cr, uid, move_ids, context=context)[0]

        # Get the values from the move
        order_obj = self.pool.get("sale.order")
        order_id = order_obj.search(cr, uid, [('name','=', move.origin)], context=context)
        vals = order_obj.read(cr, uid, order_id, ['client_order_ref'])

        # Get client reference from move values
        for value in vals:
            if value.has_key('client_order_ref'):
                order_ref = value['client_order_ref']
        # If exists client reference update stock picking client_order_ref field
        if order_ref:
            stock_pick_obj = self.pool.get("stock.picking")
            stock_pick_id = stock_pick_obj.search(cr, uid, [('origin', '=', move.origin)], context=context)
            stock_pick_obj.write(cr, uid, stock_pick_id, {'client_order_ref': order_ref}, context=context)
        return

 

3
Portretas
Atmesti
Portretas
Emipro Technologies Pvt. Ltd.
Best Answer

@Roberto

you have added the field in the 'stock.picking' model and you are writing/extending your code for creating a procurement line.
You should override _picking_assign method of stock.move model and try to fit in your code in it.

In this method new picking is getting created try look into that

Hope this helps

1
Portretas
Atmesti
Roberto Barreiro
Autorius

Thanks for your answer, i think i'm near, but I can't take the last step. I have this code: class stock_move(osv.osv): _inherit = "stock.move" def _picking_assign(self, cr, uid, move_ids, procurement_group, location_from, location_to, context=None): move = self.browse(cr, uid, move_ids, context=context)[0] order_obj = self.pool.get("sale.order") order_id = order_obj.search(cr, uid, [('name','=', move.origin)]) client_reference = order_obj.read(cr, uid, order_id, 'client_order_ref', context=None) res = super(stock_move, self)._picking_assign(cr, uid, move_ids, procurement_group, location_from, location_$ res.update({'client_order_ref': client_reference}) return res But i fails on this line "res.update({'client_order_ref': client_reference})". The error is this: ValueError: "'bool' object has no attribute 'update'" while evaluating u'action_ship_create()'

Roberto Barreiro
Autorius

Sorry, i don't know how to post my code on a comment.

Emipro Technologies Pvt. Ltd.

@Roberto This method returns a "boolean" value so you can't use "update()" method on it. You will have to copy full method from that core module and paste it in your module and then you have to fit in your code. That means you will be totally overriding that method. Let me know if that works or not.

Roberto Barreiro
Autorius

Thanks dude! Finally i could do it.

Roberto Barreiro
Autorius

But I didn't like the solution of copy-paste-modify. It takes me a few days, but I could use super for mantain original code, and make my own code to update the record created by _picking_assign

Portretas
Santi
Best Answer

I have tried Roberto's code and it works for passing one field, but I would like to pass multiple custom fields instead of only one. How can I acheive this with the minimal code possible?

EDIT 16/03/2015 23:19:


I got it working yesterday with this code, through trial and error...but I'm sure I'm missing something, and I'm afraid I might get some error sooner or later...so if there's any suggestions, they'd be highly appreciated:

The 4 fields I want to pass are:

'x_work_order_id',

'x_installation_id',

'x_tc_type_id',

'client_order_ref'


class stock_move(osv.osv):
    _inherit = "stock.move"
    def _picking_assign(self, cr, uid, move_ids, procurement_group, location_from, location_to, context=None):
        # Call super function
        res = super(stock_move, self)._picking_assign(cr, uid, move_ids, procurement_group, location_from, location_to, context=context)
# Get move id move = self.browse(cr, uid, move_ids, context=context)[0]
# Get the values from the move order_obj = self.pool.get("sale.order") order_id = order_obj.search(cr, uid, [('name','=', move.origin)], context=context) vals = order_obj.read(cr, uid, order_id, [ 'x_work_order_id', 'x_installation_id', 'x_tc_type_id',         'client_order_ref' ])
# Get client reference from move values for value in vals: x_work_order_id = value['x_work_order_id'] x_installation_id = value['x_installation_id'] x_tc_type_id = value['x_tc_type_id'] x_client_order_ref = value['client_order_ref']
# If exists client reference update stock picking x_work_order_id field if x_work_order_id: stock_pick_obj = self.pool.get("stock.picking") stock_pick_id = stock_pick_obj.search(cr, uid, [('origin', '=', move.origin)], context=context) stock_pick_obj.write(cr, uid, stock_pick_id, { 'x_work_order_id': x_work_order_id, 'x_installation_id': x_installation_id, 'x_tc_type_id': x_tc_type_id, 'x_client_order_ref': x_client_order_ref }, context=context) return stock_move ()

0
Portretas
Atmesti
Roberto Barreiro
Autorius

Try this before the stock_pick_obj.write function, and change it with the parameters of this example: vals = {'your_field_1' : your_value_1, 'your_field_2' : your_value_2, 'your_flied_3' : your_value_3} stock_pick_obj.write(cr, uid, stock_pick_id, vals, context=context)

Santi

I tried your suggestion, but it didn't work, I'm sure some extra code is necessary...

Santi

I tried your suggestion, but it didn't work, I'm sure some extra code is necessary...

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

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

Registracija
Related Posts Replies Rodiniai Veikla
Where are Stock Picking created from Sale Order?
sale.order stock.picking
Portretas
Portretas
1
bal. 25
2574
Confirm sale order without creating delivery in Odoo16
sale.order stock.picking
Portretas
0
geg. 23
3830
How can I find the 'create' method for stock.picking ?
sale.order 8.0 stock.picking
Portretas
Portretas
1
saus. 25
8026
How do I pass a custom field value from sale.order to stock.picking in Odoo 11? Solved
sale.order stock.picking odoo11community
Portretas
Portretas
3
kov. 25
10241
How to copy field value from sales.order.line to stock.move when order confirm [Odoo 10]
sale.order.line sale.order stock.move stock.picking
Portretas
0
rugs. 17
5146
Bendrija
  • Mokomosios medžiagos
  • Dokumentacija
  • Forumas
Atvirasis kodas
  • Atsisiųsti
  • Github
  • Runbot
  • Vertimai
Paslaugos
  • Odoo.sh talpinimas
  • Palaikymas
  • Atnaujinti
  • Pritaikytas programavimo kūrimas
  • Švietimas
  • Susirask buhalterį
  • Susiraskite partnerį
  • Tapkite partneriu
Apie mus
  • Mūsų įmonė
  • Prekės ženklo turtas
  • Susisiekite su mumis
  • Darbo pasiūlymai
  • Renginiai
  • Tinklalaidės
  • Internetinis Tinklaraštis
  • Klientai
  • Teisinis • Privatumas
  • Saugumas
الْعَرَبيّة 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 yra atvirojo kodo verslo programų rinkinys, kuris apima visas įmonės poreikius: CRM, El. Prekybą, Apskaitą, Atsargų, Kasų sistemą, Projektų valdymą ir kt.

Unikali Odoo vertės pasiūla – būti tuo pačiu metu labai lengvai naudojama ir visiškai integruota sistema.

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