Перейти к содержимому
Odoo Меню
  • Войти
  • Попробовать бесплатно
  • Модули
    Финансы
    • Бухгалтерия
    • Выставление счетов
    • Расходы
    • Таблицы
    • Документооборот
    • Подпись
    Продажи
    • CRM
    • Продажи
    • POS Магазин
    • POS Ресторан
    • Подписки
    • Аренда
    Вебсайты
    • Конструктор вебсайтов
    • eCommerce
    • Блог
    • Форум
    • Онлайн-чат
    • Электронное обучение
    Логистика
    • Склад
    • Производство
    • PLM
    • Закупки
    • Обслуживание
    • Качество
    Отдел кадров
    • Сотрудники
    • Подбор персонала
    • Отпуска
    • Оценка персонала
    • Реферальная программа
    • Автопарк
    Маркетинг
    • SMM
    • E-mail рассылки
    • СМС рассылки
    • Мероприятия
    • Автоматизация маркетинга
    • Опросы
    Услуги
    • Проекты
    • Табели
    • Выездной сервис
    • Поддержка
    • Планирование
    • Встречи
    Продуктивность
    • Обсуждения
    • Согласование
    • IoT
    • VoIP-телефония
    • Knowledge
    • WhatsApp
    Сторонние приложения Модуль Студия Odoo Платформа Odoo Cloud
  • Индустрии
    Розничная торговля
    • Книжный магазин
    • Магазин одежды
    • Мебельный магазин
    • Продуктовый магазин
    • Строительный магазин
    • Магазин игрушек
    Гостинично-ресторанный бизнес
    • Бар и паб
    • Ресторан
    • Фастфуд
    • Гостевой дом
    • Дистрибьютор напитков
    • Отель
    Недвижимость
    • Агентство недвижимости
    • Архитектурное бюро
    • Строительство
    • Управление недвижимостью
    • Ландшафтный дизайн
    • Товарищество собственников жилья
    Консалтинг
    • Бухгалтерская фирма
    • Партнер Odoo
    • Маркетинговое агентство
    • Юридическая фирма
    • Подбор персонала
    • Аудиторское бюро
    Производство
    • Текстиль
    • Металл
    • Мебель
    • Продукты питания
    • Пивоварня
    • Корпоративные сувениры
    Здоровье и фитнес
    • Спортивный комплекс
    • Магазин оптики
    • Фитнес-клуб
    • Велнес-центр
    • Аптека
    • Салон красоты
    Услуги
    • Специалист по бытовым услугам
    • Продажа и обслуживание IT-оборудования
    • Солнечные энергосистемы
    • Производство обуви
    • Клининг
    • Системы ОВКВ
    Прочее
    • Некоммерческая организация
    • Консалтинг в сфере устойчивого развития
    • Аренда рекламных щитов
    • Бизнес по фотосъемке
    • Прокат велосипедов
    • Реселлер программного обеспечения
    Все индустрии
  • Community
    Обучение
    • Видео уроки
    • Документация
    • Сертификация
    • Тренинг
    • Блог
    • Подкаст
    Образование и развитие
    • Образовательная программа
    • Деловая игра Scale Up!
    • Экскурсия в офис Odoo
    ПО
    • Скачать
    • Сравнить версии
    • Релизы
    Сотрудничество
    • Github
    • Форум
    • Мероприятия
    • Перевод
    • Стать партнером
    • Услуги для партнеров
    • Зарегистрировать бухгалтерскую фирму
    Услуги
    • Найти партнера
    • Найти бухгалтера
    • Встреча с экспертом
    • Услуги по внедрению
    • Отзывы клиентов
    • Поддержка
    • Обновления
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Заказать демонстрацию
  • Цены
  • Поддержка

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

  • CRM
  • e-Commerce
  • Бухгалтерия
  • Склад
  • PoS
  • Проекты
  • MRP
All apps
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Все посты Люди Значки
Теги (Смотреть все)
odoo accounting v14 pos v15
Об этом форуме
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Все посты Люди Значки
Теги (Смотреть все)
odoo accounting v14 pos v15
Об этом форуме
Помощь

Client order ref on delivery orders

Подписаться

Получайте уведомления о появлении активности в этом посте

Этот вопрос был отмечен
sale.ordervaluestock.picking
3 Ответы
9363 Представления
Аватар
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
Аватар
Отменить
Roberto Barreiro
Автор

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

Аватар
Roberto Barreiro
Автор Лучший ответ

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
Аватар
Отменить
Аватар
Emipro Technologies Pvt. Ltd.
Лучший ответ

@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
Аватар
Отменить
Roberto Barreiro
Автор

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
Автор

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
Автор

Thanks dude! Finally i could do it.

Roberto Barreiro
Автор

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

Аватар
Santi
Лучший ответ

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
Аватар
Отменить
Roberto Barreiro
Автор

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...

Не оставайтесь в стороне – присоединяйтесь к обсуждению!

Создайте аккаунт сегодня, чтобы получить доступ к эксклюзивным функциям и стать частью нашего замечательного сообщества!

Регистрация
Похожие посты Ответы Просмотры Активность
Where are Stock Picking created from Sale Order?
sale.order stock.picking
Аватар
Аватар
1
апр. 25
2581
Confirm sale order without creating delivery in Odoo16
sale.order stock.picking
Аватар
0
мая 23
3837
How can I find the 'create' method for stock.picking ?
sale.order 8.0 stock.picking
Аватар
Аватар
1
янв. 25
8030
How do I pass a custom field value from sale.order to stock.picking in Odoo 11? Решено
sale.order stock.picking odoo11community
Аватар
Аватар
3
мар. 25
10245
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
Аватар
0
сент. 17
5147
Сообщество
  • Видео уроки
  • Документация
  • Форум
Открытый исходный код
  • Скачать
  • Github
  • Runbot
  • Перевод
Услуги
  • Хостинг Odoo.sh
  • Поддержка
  • Обновление
  • Индивидуальные решения по доработке
  • Образование
  • Найти бухгалтера
  • Найти партнера
  • Стать партнером
О нас
  • Наша компания
  • Активы бренда
  • Cвяжитесь с нами
  • Вакансии
  • Мероприятия
  • Подкаст
  • Блог
  • Клиенты
  • Правовые документы • Конфиденциальность
  • Безопасность
الْعَرَبيّة 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 – это набор бизнес-модулей с открытым исходным кодом, который закроет все потребности вашей компании: CRM, E-commerce, Бухгалтерия, Склад, POS, управление проектами и др.

Odoo сочетает в себе простоту использования и полную интеграцию всех бизнес-процессов в одной системе.

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