İçereği Atla
Odoo Menü
  • Portal
  • Ücretsiz deneyin
  • Uygulamalar
    Finans
    • Muhasebe
    • Faturalama
    • Masraf Yönetimi
    • Elektronik Çizelge (BI)
    • Belgeler
    • İmza
    Satış
    • Müşteri İlişkileri Yönetimi (CRM)
    • Satış
    • Satış Noktası Mağaza
    • Satış Noktası Restoran
    • Abonelikler
    • Kiralama
    Web Sitesi
    • Web Sitesi Oluşturucu
    • eTicaret
    • Blog
    • Forum
    • Canlı Sohbet
    • eÖğrenme
    Tedarik Zinciri
    • Envanter
    • Üretim
    • Ürün Yaşam Döngüsü Yönetimi
    • Satın Alma
    • Bakım
    • Kalite
    İnsan Kaynakları
    • Çalışanlar
    • İşe Alım
    • İzin
    • Değerlendirme
    • Referans
    • Filo Yönetimi
    Pazarlama
    • Sosyal Medyada Pazarlama
    • E-posta ile Pazarlama
    • SMS ile Pazarlama
    • Etkinlikler
    • Pazarlama Otomasyonu
    • Anket
    Hizmetler
    • Proje Yönetimi
    • Çalışma Çizelgeleri
    • Saha Hizmeti
    • Yardım Masası
    • Planlama
    • Randevular
    Verimlilik
    • Sohbet
    • Onay
    • Nesnelerin İnterneti
    • VoIP
    • Bilgi Bankası
    • WhatsApp
    Üçüncü taraf uygulamalar Odoo Stüdyo Odoo Bulut Platformu
  • Sektörler
    Perakende satış
    • Kitapçı
    • Giyim Mağazası
    • Mobilya Mağazası
    • Gıda Marketi
    • Hırdavat Dükkanı
    • Oyuncak Dükkanı
    Gıda ve Konaklama
    • Bar ve Pub
    • Restoran
    • Fast Food Restoranı
    • Konuk Evi
    • İçecek Distribütörü
    • Otel
    Gayrimenkul
    • Emlak Acentesi
    • Mimarlık Firması
    • İnşaat
    • Emlak Yönetimi
    • Bahçe Tasarımı
    • Mülk Sahipleri Derneği
    Uzmanlık
    • Muhasebe Firması
    • Odoo Partner
    • Pazarlama Ajansı
    • Hukuk Firması
    • Yetenek Kazanımı
    • Denetim ve Belgelendirme
    Üretim
    • Tekstil
    • Metal
    • Mobilyalar
    • Gıda
    • Bira fabrikası
    • Kurumsal Hediye
    Sağlık ve Spor
    • Spor Kulübü
    • Optik Mağazası
    • Fitness Merkezi
    • Sağlıklı Yaşam Merkezi
    • Eczane
    • Kuaför Salonu
    Ticaret
    • Tamirci
    • BT Donanım & Destek
    • Güneş Enerjisi Sistemleri
    • Ayakkabı İmalatçısı
    • Temizlik Hizmetleri
    • HVAC Hizmetleri
    Diğerleri
    • Kar Amacı Gütmeyen Kuruluş
    • Çevre Ajansı
    • Reklam Panosu Kiralama
    • Fotoğrafçılık
    • Bisiklet Kiralama
    • Yazılım Bayisi
    Tüm Sektörlere Göz Atın
  • Topluluk
    Öğrenim
    • Eğitim Araçları
    • Dokümantasyon
    • Sertifikasyonlar
    • Eğitim Etkinlikleri
    • Blog
    • Podcast
    Eğitim ve Gelişim
    • Eğitim Programı
    • Scale Up! İşletme Oyunu
    • Odoo'yu Ziyaret Edin
    Yazılım
    • İndirin
    • Sürümleri Kıyaslayın
    • Sürümler
    İş Birliği
    • Github
    • Forum
    • Etkinlikler
    • Çeviriler
    • Partner Olun
    • Partnerler için Hizmetler
    • Muhasebe Firmanızı Kaydettirin
    Hizmetler
    • Partner Bulun
    • Muhasebeci Bulun
    • Bir danışmanla görüşün
    • Kurulum Hizmetleri
    • Müşteri Referansları
    • Destek
    • Sürüm Yükseltme
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Demo randevusu alın
  • Fiyatlandırma
  • Yardım

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

  • Müşteri İlişkileri Yönetimi
  • e-Commerce
  • Muhasebe
  • Envanter
  • PoS
  • Proje Yönetimi
  • MRP
All apps
You need to be registered to interact with the community.
All Posts People Badges
Etiketler (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
Etiketler (View all)
odoo accounting v14 pos v15
About this forum
Yardım

How to autofill sale.order.line from linked purchase.order(.line)?

Abone Ol

Get notified when there's activity on this post

Bu soru işaretlendi
purchasesalesale.order.lineonchange
1 Cevapla
8542 Görünümler
Avatar
Christian Spitzl

Hi, I've created two modules.
The first one "Sale Quotation 2 Purchase Quotation" links a Sale Order with a Purchase Order and autofills the PO Lines with the values of the linked SO Lines.
So far, so good.
The second one "Purchase Order 2 Sale Order" gives me a lot of trouble. 
It should do nearly the same like the first one, only in the other direction. It should autofill the SO Lines with the values of the linked PO Lines.
The problem is the "product_id_change" method. It checks whether a customer is defined before you can chose a product.
How can I solve it and get it work?

Many thanks for an adivce.

 


FIRST:
Sale Quotation 2 Purchase Quotation

 

<code></p>

class purchase_order(osv.osv):

    _inherit = 'purchase.order'
    _name = 'purchase.order'
    
    STATE_SELECTION = [
        ('draft', 'Draft PO'),
        ('sent', 'RFQ Sent'),
        ('received', 'RFQ Received'),
        ('confirmed', 'Waiting Approval'),
        ('approved', 'Purchase Order'),
        ('except_picking', 'Shipping Exception'),
        ('except_invoice', 'Invoice Exception'),
        ('done', 'Done'),
        ('cancel', 'Cancelled')
    ]
    
    _columns = {
       'state': fields.selection(STATE_SELECTION, 'Status', readonly=True, select=True),
       'purchase_quotation_id': fields.many2one('sale.order', 'Sale Quotation', domain=[('state','in',('draft','sent'))]),
    }
    _defaults = {
        'state': 'draft',
        'purchase_quotation_id': lambda self, cr, uid, context: context.get('purchase_quotation_id', False),
    }

    def onchange_purchase_order(self, cr, uid, id, purchase_quotation_id, partner_id, pricelist_id):
        domain = []
        value = []
        if purchase_quotation_id:
            sale = self.pool.get('sale.order').browse(cr,uid,purchase_quotation_id)
            for line in sale.order_line:
                vals = self.pool.get('purchase.order.line').onchange_product_id(cr, uid, id, pricelist_id, line.product_id.id, line.product_uom_qty, line.product_uom.id, partner_id)
                vals['value'].update({
                    'product_id': line.product_id.id, 
                    'state':'draft', 
                    'move_ids':[], 
                    'invoiced':0,
                    'invoice_lines':[],
                })
            value.append(vals['value'])
            domain.append(vals['domain'])
        return {'value': {'order_line': value}, 'domain': {'order_line': domain}}    

 

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

    _columns = {
        'sale_quotation': fields.one2many('purchase.order', 'purchase_quotation_id', 'Purchase Quotation'),
    }
    
sale_order()

</code></p>

 

SECOND:

Purchase Quotation 2 Sale Quotation

<code><p>

class sale_order(osv.osv):

    _inherit = 'sale.order'
    _name = 'sale.order'
    
    STATE_SELECTION = [
        ('draft', 'Draft Quotation'),
        ('sent', 'Quotation Sent'),
        ('cancel', 'Cancelled'),
        ('waiting_date', 'Waiting Schedule'),
        ('progress', 'Sale Order'),
        ('manual', 'Sale to Invoice'),
        ('invoice_except', 'Invoice Exception'),
        ('done', 'Done'),
    ]
    
    _columns = {
       'state': fields.selection(STATE_SELECTION, 'Status', readonly=True, select=True),
       'sale_quotation_id': fields.many2one('purchase.order', 'Purchase Quotation', domain=[('state','in',('draft','sent'))]),
    }
    _defaults = {
        'state': 'draft',
        'sale_quotation_id': lambda self, cr, uid, context: context.get('sale_quotation_id', False),
    }

    def onchange_sale_order(self, cr, uid, id, sale_quotation_id, partner_id, pricelist_id):
        domain = []
        value = []
        if sale_quotation_id:
            purchase = self.pool.get('purchase.order').browse(cr,uid,sale_quotation_id)
            for line in purchase.order_line:
>>>??            vals = self.pool.get('sale.order.line').product_id_change(cr, uid, id, pricelist_id, line.product_id.id, line.product_qty, line.product_uom.id, partner_id)
                vals['value'].update({
                    'product_id': line.product_id.id, 
                    'state':'draft', 
                    'move_ids':[], 
                    'invoiced':0,
                    'invoice_lines':[],
                })
            value.append(vals['value'])
            domain.append(vals['domain'])
        return {'value': {'order_line': value}, 'domain': {'order_line': domain}}    

 

class purchase_order(osv.osv):
    _inherit = "purchase.order"
    _name = "purchase.order"

    _columns = {
        'purchase_quotation': fields.one2many('sale.order', 'sale_quotation_id', 'Sale Quotation'),
    }
    
purchase_order()

</code></p>

0
Avatar
Vazgeç
Avatar
Ludo - 21South
En İyi Yanıt

Do not be offended by my remarks, but I was wondering why you went through all this effort instead of using Odoo regular procurement system for the previous work (from sale to purchase)? Is it because you did not want to confirm the sale before creating the purchase?

Other than that, I think its much simpler that the sketched situation. Create a wizard that takes the current sale order (usually in context under "active id") and use it to read the order line for line (assuming you already know where the purchase order goes), sending the product_id and qty to the on_change method for purchase order line. If configured correctly. You should first create a purchase order, but since that can practically be empty, you should have no trouble creating an order line for the PO based on its id.

Alternatively, you can check the system of procurements (procurement.order in Odoo) and write a method on that. Procurements already have links to both sales as well as purchase orders. Writing a simple method that converts it to purchase orders should do the trick. Then all you have to do is make sure the SO generates a procurement at a point you see fit.

0
Avatar
Vazgeç
Enjoying the discussion? Don't just read, join in!

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

Üye Ol
İlgili Gönderiler Cevaplar Görünümler Aktivite
How to generate line numbers on quotes Çözüldü
sale sale.order.line
Avatar
Avatar
1
Oca 25
4402
How can enter freight charges and transporting Charges in sale order? Çözüldü
purchase sale
Avatar
Avatar
1
Ağu 24
6359
How to add freight charges to product cost in sale quoatation
sale sale.order.line
Avatar
Avatar
2
Ağu 24
6429
What's the use of Allotment Partner in sale order line? Çözüldü
sale sale.order.line
Avatar
Avatar
Avatar
Avatar
Avatar
6
Ara 22
9788
Sale order line description to purchase order line.
purchase sale sale.order.line purchase_order purchase.order
Avatar
Avatar
1
Eki 22
5161
Topluluk
  • Eğitim Araçları
  • Dokümantasyon
  • Forum
Açık Kaynak
  • İndirin
  • Github
  • Runbot
  • Çeviriler
Hizmetler
  • Odoo.sh Hosting
  • Destek
  • Sürüm Yükseltme
  • Özel Geliştirmeler
  • Eğitim
  • Muhasebeci Bulun
  • Partner Bulun
  • Partner Olun
Hakkında
  • Şirketimiz
  • Pazarlama Gereçleri
  • İletişim
  • Kariyer
  • Etkinlikler
  • Podcast
  • Blog
  • Müşteriler
  • Hukuki • Gizlilik
  • Güvenlik
الْعَرَبيّة 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, müşteri ilişkileri yönetimi, eTicaret, muhasebe, envanter, satış noktası, proje yönetimi gibi şirketinizin tüm ihtiyaçlarını karşılayan bir açık kaynak işletme uygulamaları paketidir.

Odoo’nun eşsiz değer önermesi, aynı anda hem kullanımının çok kolay olup hem de tamamen entegre olmasıdır.

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