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

[11] Add button in invoice to origin sale order

Zaprenumeruj

Otrzymaj powiadomienie o aktywności w tym poście

To pytanie dostało ostrzeżenie
odoo11
3804 Widoki
Awatar
Christian Schubert

Hey there,

I'm currently working on a small tweak for the invoices from the account module.

I want to have a button in the button box of the invoice (next to the timesheet button) which points to the sale order from which the invoice was created. So basically like it's added in the sale_timesheet module, which adds a button to the sale order in the single timesheets.

Refs:

  • sale_timesheet\views\project_task_views.xml Lines 19-35

  • sale_timesheet\models\project.py Lines 102-111

What I've done until now:

  • Created a custom module

  • Created an xml which inherits from the account invoice form and added the button via xpath

  • Created an python file which inherits from AccountInvoice to add a action_view_so function

The button shows just fine in the view, shows the origin SO with the correct number (used a statinfo widget) but the function is missing the right reference. After some tries, I decided to create an account in the forums and ask directly instead of reading up old threads which doesn't solve my issue so far.

After clicking on the action this is the error message, which refers to my added function:

"res_id": self.origin.order_id.id,
AttributeError: 'str' object has no attribute 'order_id'

This is my record in the xml:

<record id="account_invoice_view_sale_order_button" model="ir.ui.view">
    <field name="name">account.invoice.form.inherit.sobutton</field>
    <field name="model">account.invoice</field>
    <field name="inherit_id" ref="account.invoice_form"/>
    <field name="arch" type="xml">
        <xpath expr="//div[@name='button_box'][last()]" position="inside">
            <button type="object" name="action_view_so" class="oe_stat_button" icon="fa-dollar">
                <field name="origin" widget="statinfo" string="Sales Order"/>
            </button>
        </xpath>
    </field>
</record>

This is the class extension in the python file:

class AccountInvoice(models.Model):
    _inherit = "account.invoice"
    @api.multi
    def action_view_so(self):
        self.ensure_one()
        return {
            "type": "ir.actions.act_window",
            "res_model": "sale.order",
            "views": [[False, "form"]],
            "res_id": self.origin.order_id.id,
            "context": {"create": False, "show_sale": True},
        }

So the res_id is not the correct one, but I can't figure out which one would be the correct reference path. I would really appreciate help from your side to point me to the right direction. Many thanks in advance.


EDIT:

Just after a little more research and trial&error, I've solved it for me.

If someone has the same issue or want to achieve the same functionality, the solution was to convert the string value of the sale order, which is located in the origin field of the invoice, to the correct sale order id.

So the action_view_so function from above has to be like this:

@api.multi
def action_view_so(self):
    self.ensure_one()
    sale_line_ids = self.invoice_line_ids.mapped('sale_line_ids')

    if sale_line_ids:
        sale_order = sale_line_ids[0].order_id

    return {
        "type": "ir.actions.act_window",
        "res_model": "sale.order",
        "views": [[False, "form"]],
        "res_id": sale_order.id,
        "context": {"create": False, "show_sale": True},
    }

Also the thread wasn't yet approved, but just to contribute to the knowledge base I wanted to share the solution.​



 
1
Awatar
Odrzuć
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ść
create backorder odoo after validate purchase shipment ? Rozwiązane
odoo11
Awatar
Awatar
1
paź 25
12176
I can't create any sub-task
odoo11
Awatar
Awatar
Awatar
2
lip 24
3774
odoo 11 display calendar widget in website layout
odoo11
Awatar
Awatar
1
cze 24
6092
Get field's value from another model
odoo11
Awatar
Awatar
1
paź 23
98
413 Request Entity Too Large Rozwiązane
odoo11
Awatar
Awatar
1
sie 23
2194
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