Skip to Content
Odoo Menu
  • Zaloguj się
  • Wypróbuj za darmo
  • Aplikacje
    Finanse
    • Księgowość
    • Fakturowanie
    • Wydatki
    • Arkusz kalkulacyjny (BI)
    • Dokumenty
    • Podpisy
    Sprzedaż
    • CRM
    • Sprzedaż
    • PoS Sklep
    • PoS Restauracja
    • Subskrypcje
    • Wypożyczalnia
    Strony Internetowe
    • Kreator Stron Internetowych
    • eCommerce
    • Blog
    • Forum
    • Czat na Żywo
    • eLearning
    Łańcuch dostaw
    • Magazyn
    • Produkcja
    • PLM
    • Zakupy
    • Konserwacja
    • Jakość
    Zasoby Ludzkie
    • Pracownicy
    • Rekrutacja
    • Urlopy
    • Ocena pracy
    • Polecenia Pracownicze
    • Flota
    Marketing
    • Marketing Społecznościowy
    • E-mail Marketing
    • SMS Marketing
    • Wydarzenia
    • Automatyzacja Marketingu
    • Ankiety
    Usługi
    • Projekt
    • Ewidencja czasu pracy
    • Usługi Terenowe
    • Helpdesk
    • Planowanie
    • Spotkania
    Produktywność
    • Dyskusje
    • Zatwierdzenia
    • IoT
    • VoIP
    • Baza wiedzy
    • WhatsApp
    Aplikacje trzecich stron Studio Odoo Odoo Cloud Platform
  • Branże
    Sprzedaż detaliczna
    • Księgarnia
    • Sklep odzieżowy
    • Sklep meblowy
    • Sklep spożywczy
    • Sklep z narzędziami
    • Sklep z zabawkami
    Żywienie i hotelarstwo
    • Bar i Pub
    • Restauracja
    • Fast Food
    • Pensjonat
    • Dystrybutor napojów
    • Hotel
    Agencja nieruchomości
    • Agencja nieruchomości
    • Biuro architektoniczne
    • Budowa
    • Zarządzanie nieruchomościami
    • Ogrodnictwo
    • Stowarzyszenie właścicieli nieruchomości
    Doradztwo
    • Biuro księgowe
    • Partner Odoo
    • Agencja marketingowa
    • Kancelaria prawna
    • Agencja rekrutacyjna
    • Audyt i certyfikacja
    Produkcja
    • Tekstylia
    • Metal
    • Meble
    • Jedzenie
    • Browar
    • Prezenty firmowe
    Zdrowie & Fitness
    • Klub sportowy
    • Salon optyczny
    • Centrum fitness
    • Praktycy Wellness
    • Apteka
    • Salon fryzjerski
    Transakcje
    • Złota rączka
    • Wsparcie Sprzętu IT
    • Systemy energii słonecznej
    • Szewc
    • Firma sprzątająca
    • Usługi HVAC
    Inne
    • Organizacja non-profit
    • Agencja Środowiskowa
    • Wynajem billboardów
    • Fotografia
    • Leasing rowerów
    • Sprzedawca oprogramowania
    Przeglądaj wszystkie branże
  • Community
    Ucz się
    • Samouczki
    • Dokumentacja
    • Certyfikacje
    • Szkolenie
    • Blog
    • Podcast
    Pomóż w nauce innym
    • Program Edukacyjny
    • Scale Up! Gra biznesowa
    • Odwiedź Odoo
    Skorzystaj z oprogramowania
    • Pobierz
    • Porównaj edycje
    • Wydania
    Współpracuj
    • Github
    • Forum
    • Wydarzenia
    • Tłumaczenia
    • Zostań partnerem
    • Usługi dla partnerów
    • Zarejestruj swoją firmę rachunkową
    Skorzystaj z usług
    • Znajdź partnera
    • Znajdź księgowego
    • Spotkaj się z doradcą
    • Usługi wdrożenia
    • Opinie klientów
    • Wsparcie
    • Aktualizacje
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Zaplanuj demo
  • Cennik
  • Pomoc

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

  • CRM
  • e-Commerce
  • Księgowość
  • Zapasy
  • PoS
  • Projekt
  • MRP
All apps
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
Wszystkie posty Osoby Odznaki
Tagi (Zobacz wszystko)
odoo accounting v14 pos v15
O tym forum
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
Wszystkie posty Osoby Odznaki
Tagi (Zobacz wszystko)
odoo accounting v14 pos v15
O tym forum
Pomoc

Programmatically create a sale order line

Zaprenumeruj

Otrzymaj powiadomienie o aktywności w tym poście

To pytanie dostało ostrzeżenie
modulesalesale.order.lineprogramaticallyv9
1 Odpowiedz
35007 Widoki
Awatar
Peter Nietz

In our custom Odoo module we need to programmatically create new sales order lines. The purpose is to assist our sales teams to create sales orders for follow-up purchases (the customer has already purchased a software license, we want to offer him an extension/prolongation/...). We have created a wizard for this purpose, which fills in the sales order lines (automatically using various information from other models).

Our code looks roughly as follows:

@api.multi
def add_to_offer(self):
for wizard in self:
new_lines = []
for what in wizard.entries:
new_lines.append((0, 0, {
'name' : what.product_id.name,
'product_id' : what.product_id.id,
'product_uom' : what.product_id.uom_id.id,
'product_uom_qty' : 1
}))
wizard.sale_order_id.write({ 'order_line' : new_lines })

In principle this works at large. We don't get any error messages from Odoo (although we had to explicitly include the fields "name" and "product_uom" in order to work around errors on missing fields.

But... apparently there are still some bits missing. Compared to regular order lines our programmatically created ones are missing the unit price, taxes and subtotal price (potentially even more fields). We could try to calculate and set that stuff explicitly (just as we did with "name" and "product_uom") but that would require us to duplicate lots of code including tax and pricelist stuff. Surely not a good idea...

What is the correct way to programmatically create order lines?


Update: Based on Ahmed's tip we are now invoking the methods listed below on all freshly created order line. This seems to work fine. Many thanks for pointing out this direction, Ahmed.

product_id_change()
product_uom_change()
_compute_invoice_status()
_compute_amount()
_get_to_invoice_qty()
_get_price_reduce()
4
Awatar
Odrzuć
Awatar
Qutechs, Ahmed M.Elmubarak
Najlepsza odpowiedź

Hello,

You can call the on_change methods in the order.line model to get the line update with calculations ...

let's try:

    @api.multi
def add_to_offer(self):
line_env = self.env['sale.order.line']
for wizard in self:
for what in wizard.entries:
new_line = line_env.create({
                            'product_id': what.product_id.id,
                            'name': what.product_id.name,
                            'order_id': what.sale_order_id.id,
                            'product_uom' : what.product_id.uom_id.id})
new_line.product_id_change() #Calling an onchange method to update the record


Then you'll get the Sale order update by the new values ..

Hope this could helps

5
Awatar
Odrzuć
Răzvan Anastasescu

In my case (v14.0) everything was fine by just adding the product as a new sale order line except the discount calculation.

So the only thing which worked to trigger that was:

`new_line._onchange_discount()`

Thx for the hint!

Podoba Ci się ta dyskusja? Dołącz do niej!

Stwórz konto dzisiaj, aby cieszyć się ekskluzywnymi funkcjami i wchodzić w interakcje z naszą wspaniałą społecznością!

Zarejestruj się
Powiązane posty Odpowiedzi Widoki Czynność
Add "Add Products" to my custom module like in sale quotation Rozwiązane
module sale custom sale.order.line quotation
Awatar
Awatar
2
lip 17
6841
How to generate line numbers on quotes Rozwiązane
sale sale.order.line
Awatar
Awatar
1
sty 25
4574
How to add freight charges to product cost in sale quoatation
sale sale.order.line
Awatar
Awatar
2
sie 24
6506
What's the use of Allotment Partner in sale order line? Rozwiązane
sale sale.order.line
Awatar
Awatar
Awatar
Awatar
Awatar
6
gru 22
9921
Odoo 19 - how does rounding work on Sales Order Lines? The Total isn't the sum of the order line totals Rozwiązane
sale sale.order.line sale.order
Awatar
Awatar
1
lis 25
616
Społeczność
  • Samouczki
  • Dokumentacja
  • Forum
Open Source
  • Pobierz
  • Github
  • Runbot
  • Tłumaczenia
Usługi
  • Hosting Odoo.sh
  • Wsparcie
  • Aktualizacja
  • Indywidualne rozwiązania
  • Edukacja
  • Znajdź księgowego
  • Znajdź partnera
  • Zostań partnerem
O nas
  • Nasza firma
  • Zasoby marki
  • Skontaktuj się z nami
  • Oferty pracy
  • Wydarzenia
  • Podcast
  • Blog
  • Klienci
  • Informacje prawne • Prywatność
  • Bezpieczeństwo Odoo
الْعَرَبيّة 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 to pakiet aplikacji biznesowych typu open source, które zaspokoją wszystkie potrzeby Twojej firmy: CRM, eCommerce, księgowość, inwentaryzacja, punkt sprzedaży, zarządzanie projektami itp.

Unikalną wartością Odoo jest to, że jest jednocześnie bardzo łatwe w użyciu i w pełni zintegrowane.

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