Skip to Content
Odoo Menú
  • Registra entrada
  • Prova-ho gratis
  • Aplicacions
    Finances
    • Comptabilitat
    • Facturació
    • Despeses
    • Full de càlcul (IA)
    • Documents
    • Signatura
    Vendes
    • CRM
    • Vendes
    • Punt de venda per a botigues
    • Punt de venda per a restaurants
    • Subscripcions
    • Lloguer
    Imatges de llocs web
    • Creació de llocs web
    • Comerç electrònic
    • Blog
    • Fòrum
    • Xat en directe
    • Aprenentatge en línia
    Cadena de subministrament
    • Inventari
    • Fabricació
    • PLM
    • Compres
    • Manteniment
    • Qualitat
    Recursos humans
    • Empleats
    • Reclutament
    • Absències
    • Avaluacions
    • Recomanacions
    • Flota
    Màrqueting
    • Màrqueting Social
    • Màrqueting per correu electrònic
    • Màrqueting per SMS
    • Esdeveniments
    • Automatització del màrqueting
    • Enquestes
    Serveis
    • Projectes
    • Fulls d'hores
    • Servei de camp
    • Suport
    • Planificació
    • Cites
    Productivitat
    • Converses
    • Validacions
    • IoT
    • VoIP
    • Coneixements
    • WhatsApp
    Aplicacions de tercers Odoo Studio Plataforma d'Odoo al núvol
  • Sectors
    Comerç al detall
    • Llibreria
    • Botiga de roba
    • Botiga de mobles
    • Botiga d'ultramarins
    • Ferreteria
    • Botiga de joguines
    Food & Hospitality
    • Bar i pub
    • Restaurant
    • Menjar ràpid
    • Guest House
    • Distribuïdor de begudes
    • Hotel
    Immobiliari
    • Agència immobiliària
    • Estudi d'arquitectura
    • Construcció
    • Gestió immobiliària
    • Jardineria
    • Associació de propietaris de béns immobles
    Consultoria
    • Empresa comptable
    • Partner d'Odoo
    • Agència de màrqueting
    • Bufet d'advocats
    • Captació de talent
    • Auditoria i certificació
    Fabricació
    • Textile
    • Metal
    • Mobles
    • Menjar
    • Brewery
    • Regals corporatius
    Salut i fitness
    • Club d'esport
    • Òptica
    • Centre de fitness
    • Especialistes en benestar
    • Farmàcia
    • Perruqueria
    Trades
    • Servei de manteniment
    • Hardware i suport informàtic
    • Sistemes d'energia solar
    • Shoe Maker
    • Serveis de neteja
    • Instal·lacions HVAC
    Altres
    • Nonprofit Organization
    • Agència del medi ambient
    • Lloguer de panells publicitaris
    • Fotografia
    • Lloguer de bicicletes
    • Distribuïdors de programari
    Browse all Industries
  • Comunitat
    Aprèn
    • Tutorials
    • Documentació
    • Certificacions
    • Formació
    • Blog
    • Pòdcast
    Potenciar l'educació
    • Programa educatiu
    • Scale-Up! El joc empresarial
    • Visita Odoo
    Obtindre el programari
    • Descarregar
    • Comparar edicions
    • Novetats de les versions
    Col·laborar
    • GitHub
    • Fòrum
    • Esdeveniments
    • Traduccions
    • Converteix-te en partner
    • Services for Partners
    • Registra la teva empresa comptable
    Obtindre els serveis
    • Troba un partner
    • Troba un comptable
    • Contacta amb un expert
    • Serveis d'implementació
    • Referències del client
    • Suport
    • Actualitzacions
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Programar una demo
  • Preus
  • Ajuda

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

  • CRM
  • e-Commerce
  • Comptabilitat
  • Inventari
  • PoS
  • Projectes
  • MRP
All apps
You need to be registered to interact with the community.
All Posts People Badges
Etiquetes (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
Etiquetes (View all)
odoo accounting v14 pos v15
About this forum
Ajuda

Open ERP v7 - How do I execute a wizard via XML RPC?

Subscriure's

Get notified when there's activity on this post

This question has been flagged
xmlrpc7.0wizards
2 Respostes
14458 Vistes
Avatar
Sam Davey

I'm integrating a PHP application with OpenErp and I am able to easily hook up via XMLRPC. Given the GTK client used to operate via XMLRPC (pre v7) its no surprise that i can achieve nearly anything through XMLRPC.

I've got the simple operations sorted; create, search, read etc. I can run any particular method using the execute call and i can trigger workflows using exec_workflow.

The missing part of the jigsaw is wizards. I can see that wizards changed in OpenERP 7.0 from wizards into TransientModels. I can also find info about how the 'wizard' operation in XMLRPC has been deprecated in OpenERP version 7 and I once saw that it is now part of the relevant objects orm although I can't find that article now.

But I can't find any examples or information about how to execute a wizard in OpenERP version 7 via XMLRPC.

The actual wizard I want to run is linked to the button 'Return Products' which is on a Delivery Order once it has been delivered.

How can I mimic the web client User Interface process of pressing the 'Return Products' button and filling in the corresponding form that pops up?

Does anyone have any examples to achieve this? Any programming language will do, I'll port it into PHP myself once I know how it works.

1
Avatar
Descartar
Avatar
Sam Davey
Autor Best Answer

I'm not surprised no one has answered this. There is no magic 'run wizard' XMLRPC call. It's a series of calls.

As per the documentation "Everything done in the GTK or web client in OpenERP is through XML/RPC webservices. Start openERP GTK client using ./openerp-client.py -l debug_rpc (or debug_rpc_answer) then do what you want in the GTK client and watch your client logs, you will find out the webservice signatures."

I was thrown by this as I can't use the client with version 7. But of course the web client essentially does exactly the sae thing as the GTK client so I just needed to turn on debugging on the server and watch the logs for the webservice signatures.

So to do this you just add "log_level = debug_rpc_answer" to your server config file (openerp-server.conf in my instance)

Once I'd done that I could see what was going on and replicated it in PHP.

I'm not going to go into detail here. If you need to do the same then you just need to get to 'debug_rpc_answer' and start analysing the webservice signatures.

But for completeness the process looks like this

  • Fill in the context for the call
  • Call default_get to get the data for the wizard
  • Alter the data as needed then call create, this creates an object in memory and returns an identifier for it
  • In my case I then call 'create_returns' which converts the in memory object into the corresponing incoming shipment record

Heres how it looks although I've stripped out some bits

// First build the context of the request, i.e. in my case the Delivery Order I am creating a return for
$activeId = 7;

$args = array(
    array(
        'product_return_moves', 
        'invoice_state'
    ),
);

$context = array(
    "context" => array(
        'active_id'=> $activeId,
        'active_ids'=> array($activeId),
        'active_model'=> 'stock.picking.out',
        contact_display'=> 'partner_address',
        'default_type'=> 'out',
        'lang'=> 'en_GB',
        'search_disable_custom_filters'=> True,
        'tz'=> 'Europe/London',
        'uid'=> 1,
    ),  
);

// Call 'default_get' which returns all the data that gets filled in the UI when you click 'Return Products'

$results = $client->call('execute_kw', array($dbName, $user, $pwd, 'stock.return.picking', 'default_get', $args, $context));

$previousMoves = $results['product_return_moves'];

// Do stuff with previousMoves to build the actual productReturnMoves needed
... omitted for brevity ...

$args = array(
        array(
            'invoice_state' => 'none',
            'product_return_moves' => $productReturnMoves,
        ),
    );

$results = $client->call('execute_kw', array($dbName, $user, $pwd, 'stock.return.picking', 'create', $args, $context));

// An identifier for this 'in memory' (TransientModel) object is returned
$wizardId = $results;

// Call the method that converts the 'in memory' (TransientModel) object into corresponding object
$args = array(
        array($wizardId),
        $context["context"],
    );

$blank = array();

$results = $client->call('execute_kw', array($dbName, $user, $pwd, 'stock.return.picking', 'create_returns', $args, $blank));

Easy... Or not... depending on how impressed or frustrated you are feeling about OpenERP today :-)

4
Avatar
Descartar
Timothy Solomon

Thanks for sharing your answer :) Wizards are just temporary models to work on other models - so best to look at what the wizard does (eg create a incoming shipping order when you click on "return products"). I usually figure out what the code does and then try and reproduce it with RPC, but checking the rpc log is a good idea!

Avatar
florent.uagolf@gmail.com
Best Answer

Hi !

Thanks both of you !

So I created a multiple action automated task :
- 1st : send email with quotation
- 2st : change field 'state' to 'sent' but this cannot be done directly with the update so I need to do something like this in python :
request.env['sale.order'].sudo().write({'state':'sent'})

Is that right ?

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

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

Registrar-se
Related Posts Respostes Vistes Activitat
OpenERP 7.0 WebService : search_read()
php xmlrpc 7.0 webservice
Avatar
Avatar
2
de juny 15
7379
xmlrpc Error when attempting to connect to my local instance Solved
xmlrpc
Avatar
Avatar
Avatar
3
de jul. 25
4573
Cannot marshal None unless allow_none is enabled
xmlrpc
Avatar
1
d’oct. 24
3228
How to run a method from external api as the superuser
xmlrpc
Avatar
Avatar
1
d’abr. 24
3294
<methodName>execute</methodName>
xmlrpc
Avatar
0
de set. 23
2596
Community
  • Tutorials
  • Documentació
  • Fòrum
Codi obert
  • Descarregar
  • GitHub
  • Runbot
  • Traduccions
Serveis
  • Allotjament a Odoo.sh
  • Suport
  • Actualització
  • Desenvolupaments personalitzats
  • Educació
  • Troba un comptable
  • Troba un partner
  • Converteix-te en partner
Sobre nosaltres
  • La nostra empresa
  • Actius de marca
  • Contacta amb nosaltres
  • Llocs de treball
  • Esdeveniments
  • Pòdcast
  • Blog
  • Clients
  • Informació legal • Privacitat
  • Seguretat
الْعَرَبيّة 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 és un conjunt d'aplicacions empresarials de codi obert que cobreix totes les necessitats de la teva empresa: CRM, comerç electrònic, comptabilitat, inventari, punt de venda, gestió de projectes, etc.

La proposta única de valor d'Odoo és ser molt fàcil d'utilitzar i estar totalment integrat, ambdues alhora.

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