Overslaan naar inhoud
Odoo Menu
  • Aanmelden
  • Probeer het gratis
  • Apps
    Financiën
    • Boekhouding
    • Facturatie
    • Onkosten
    • Spreadsheet (BI)
    • Documenten
    • Ondertekenen
    Verkoop
    • CRM
    • Verkoop
    • Kassasysteem winkel
    • Kassasysteem Restaurant
    • Abonnementen
    • Verhuur
    Websites
    • Websitebouwer
    • E-commerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Bevoorradingsketen
    • Voorraad
    • Productie
    • PLM
    • Inkoop
    • Onderhoud
    • Kwaliteit
    Personeelsbeheer
    • Werknemers
    • Werving & Selectie
    • Verlof
    • Evaluaties
    • Aanbevelingen
    • Wagenpark
    Marketing
    • Social media Marketing
    • E-mailmarketing
    • SMS Marketing
    • Evenementen
    • Marketingautomatisering
    • Enquêtes
    Diensten
    • Project
    • Urenstaten
    • Buitendienst
    • Helpdesk
    • Planning
    • Afspraken
    Productiviteit
    • Chat
    • Goedkeuringen
    • IoT
    • VoIP
    • Kennis
    • WhatsApp
    Apps van derden Odoo Studio Odoo Cloud Platform
  • Bedrijfstakken
    Detailhandel
    • Boekhandel
    • kledingwinkel
    • Meubelzaak
    • Supermarkt
    • Bouwmarkt
    • Speelgoedwinkel
    Food & Hospitality
    • Bar en Pub
    • Restaurant
    • Fastfood
    • Gastenverblijf
    • Drankenhandelaar
    • Hotel
    Vastgoed
    • Makelaarskantoor
    • Architectenbureau
    • Bouw
    • Vastgoedbeheer
    • Tuinieren
    • Vereniging van eigenaren
    Consulting
    • Accountantskantoor
    • Odoo Partner
    • Marketingbureau
    • Advocatenkantoor
    • Talentenwerving
    • Audit & Certificering
    Productie
    • Textiel
    • Metaal
    • Meubels
    • Eten
    • Brewery
    • Relatiegeschenken
    Gezondheid & Fitness
    • Sportclub
    • Opticien
    • Fitnesscentrum
    • Wellness-medewerkers
    • Apotheek
    • Kapper
    Trades
    • Klusjesman
    • IT-hardware & support
    • Zonne-energiesystemen
    • Schoenmaker
    • Schoonmaakdiensten
    • HVAC-diensten
    Andere
    • Non-profitorganisatie
    • Milieuagentschap
    • Verhuur van Billboards
    • Fotograaf
    • Fietsleasing
    • Softwareverkoper
    Browse all Industries
  • Community
    Leren
    • Tutorials
    • Documentatie
    • Certificeringen
    • Training
    • Blog
    • Podcast
    Versterk het onderwijs
    • Onderwijs- programma
    • Scale Up! Business Game
    • Bezoek Odoo
    Download de Software
    • Downloaden
    • Vergelijk edities
    • Releases
    Werk samen
    • Github
    • Forum
    • Evenementen
    • Vertalingen
    • Word een Partner
    • Services for Partners
    • Registreer je accountantskantoor
    Diensten
    • Vind een partner
    • Vind een boekhouder
    • Een adviseur ontmoeten
    • Implementatiediensten
    • Klantreferenties
    • Ondersteuning
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Vraag een demo aan
  • Prijzen
  • Help

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

  • CRM
  • e-Commerce
  • Boekhouding
  • Voorraad
  • PoS
  • Project
  • MRP
All apps
Je moet geregistreerd zijn om te kunnen communiceren met de community.
Alle posts Personen Badges
Labels (Bekijk alle)
odoo accounting v14 pos v15
Over dit forum
Je moet geregistreerd zijn om te kunnen communiceren met de community.
Alle posts Personen Badges
Labels (Bekijk alle)
odoo accounting v14 pos v15
Over dit forum
Help

How to have a compute field's value in domain action of a smart-button

Inschrijven

Ontvang een bericht wanneer er activiteit is op deze post

Deze vraag is gerapporteerd
actionodoocomputed-fields
1 Beantwoorden
8521 Weergaven
Avatar
Simone

Hi

In my model i've a compute field that give the ID of the active contract of this user :

id_ultimo_contratto = fields.Integer(compute="_compute_last_contratto", store=True)

this is the function that i use  to calculate the id (and it's correct i've the right value) :

@api.multi
@api.depends()
def _compute_last_contratto(self):
id_utenza=self.id
contratto_attivo = ''
for AttivitaSvoltaEE in self.env['utilitypower.attivitasvolta_ee'].search([('id_utenza_ee','=',id_utenza)]):
id_attivita = AttivitaSvoltaEE.id
for Contratto in self.env['utilitypower.contratti_ee'].search([('attivitasvolte_ids','=',id_attivita)]):
if Contratto.stato==1:
#find it :
id_contratto_attivo = Contratto.id
id_ultima_attivita = id_attivita
contratto_attivo=Contratto.nome_contratto
for UtenzeEE in self:
UtenzeEE.last_contratto = contratto_attivo
UtenzeEE.id_ultimo_contratto = id_contratto_attivo
UtenzeEE.id_ultima_attivita = id_ultima_attivita

I use this id in a smart-button and i want to open the view of the contract with an action linked at the smart-button :

<button class="oe_stat_button" 
icon = "fa-file-text-o"
type = "action"
name="action_view_contrattoattivo_ee"
options="{}">
<span><field name="id_ultimo_contratto"/></span>
</button>

The problem is that i can't understand how to pass the id_ultimocontratto field_value in the domain/context of the action:

<act_window id="action_view_contrattoattivo_ee" 
name="Contratto Attivo"
res_model="utilitypower.contratti_ee"
view_type="tree,form"
view_mode="tree"
domain="[]"
/>

How have I do to insert the compute field in the domain? and how i can refer to the id (odoo) of the final model?

0
Avatar
Annuleer
Avatar
Raciel Perdomo Gómez
Beste antwoord

If you create the button with type="object" you could do a function responsible to open the action you need.

Something like this:


<button class="oe_stat_button" 
icon = "fa-file-text-o"
type = "object"
name="action_open_view_contrattoattivo_ee"
options="{}" context="{'id_ultimo_contratto': id_ultimo_contratto}">
<span><field name="id_ultimo_contratto"/></span>
</button>

Then

@api.multi

def action_open_view_contrattoattivo_ee(self):

action = self.env.ref('your_module_name.action_view_contrattoattivo_ee').read()[0]
action['domain'] = [('id', '=', self.env.context.get(''id_ultimo_contrato"))]

return action


1
Avatar
Annuleer
Simone
Auteur

Thanks for your reply, I tried, i think to undestand how it works and it works. I have only one question: everything works if the action is linked with the tree_view of the model, if I point directly to the form_view the form is opening in new-record mode (/web?debug=true#id=&action=1377&active_id=21059&model=utilitypower.contratti_ee&view_type=form&menu_id=1200) .. by debugging the function like this:

_logger.debug ('Simone INTO ACTION 1') # here i come

action = self.env.ref ("utility_power.view_tree_contratti_ee"). read () [0]

_logger.debug ('Simone VIEW ACTION 2:% s', action) # here i see the action

_logger.debug ('Simone ID_ULTIMO CONTRACT% s', self.env.context.get ("id_ultimo_contratto")) # here i see the right id

action ['domain'] = [('id', '=', self.env.context.get ("last_contract_id"))]

_logger.debug ('Simone DOMAIN:% s', action ['domain']) # Domain is right

return action

everything seems to be correct, am I doing something wrong?

Simone
Auteur

I past the wrong form name, this is correct:

def action_view_contrattoattivo_ee(self):

_logger.debug ('Simone INTO ACTION 1') # Ok I arrive

action = self.env.ref ("utility_power.view_form_contratti_ee"). read () [0]

_logger.debug ('Simone VIEW ACTION 2:% s', action) # here i see the action

_logger.debug ('Simone ID_ULTIMO CONTRACT% s', self.env.context.get ("id_ultimo_contratto")) # here i see the right id

action ['domain'] = [('id', '=', self.env.context.get ("last_contract_id"))]

_logger.debug ('Simone DOMAIN:% s', action ['domain']) # Domain is right

return action

and this is the action code:

<act_window id="action_view_contrattoattivo_ee"

name="Contratto Attivo"

res_model="utilitypower.contratti_ee"

view_mode="tree,form"

/>

Raciel Perdomo Gómez

Just add this:

action['view_type'] = 'form'

action['view_mode'] = 'form'

action['res_id'] = self.env.context.get ("last_contract_id") (use this way instead of the domain)

action['target'] = 'current'

Raciel Perdomo Gómez

Also check that the model has only one form view declared, if not, you should specify what form to show

Simone
Auteur

Thank you so much Raciel, everything works now.

Geniet je van het gesprek? Blijf niet alleen lezen, doe ook mee!

Maak vandaag nog een account aan om te profiteren van exclusieve functies en deel uit te maken van onze geweldige community!

Aanmelden
Gerelateerde posts Antwoorden Weergaven Activiteit
How can i call a specific module view when i log ? am using Odoo studio
action odoo
Avatar
0
dec. 22
2510
Why XML in odoo ? Opgelost
action xml odoo
Avatar
Avatar
Avatar
Avatar
3
sep. 25
2209
HOW CAN I GET CURRENT COMPANY ID IN CONTEXT OF ACTION USING JUST XML
action xml context odoo
Avatar
Avatar
1
jul. 24
2629
What is use of “group_by_no_leaf”? Opgelost
action view odoo odoo12
Avatar
Avatar
Avatar
Avatar
3
jun. 24
4902
Export Data
action export data odoo
Avatar
0
nov. 22
2540
Community
  • Tutorials
  • Documentatie
  • Forum
Open Source
  • Downloaden
  • Github
  • Runbot
  • Vertalingen
Diensten
  • Odoo.sh Hosting
  • Ondersteuning
  • Upgrade
  • Gepersonaliseerde ontwikkelingen
  • Onderwijs
  • Vind een boekhouder
  • Vind een partner
  • Word een Partner
Over ons
  • Ons bedrijf
  • Merkelementen
  • Neem contact met ons op
  • Vacatures
  • Evenementen
  • Podcast
  • Blog
  • Klanten
  • Juridisch • Privacy
  • Beveiliging
الْعَرَبيّة 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 is een suite van open source zakelijke apps die aan al je bedrijfsbehoeften voldoet: CRM, E-commerce, boekhouding, inventaris, kassasysteem, projectbeheer, enz.

Odoo's unieke waardepropositie is om tegelijkertijd zeer gebruiksvriendelijk en volledig geïntegreerd te zijn.

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