Help

2

RPC.Query Search Does Not Return Values

Avatar
Michael Douglas

Can anyone help me? I'm doing a query using RPC, but I can't extract the data, follow the code:

nfce_return_invoice: function(name){
return rpc.query({
model: 'pos.order',
method: 'search_invoice',
args: [{'name': name}]
},{timeout: 30000}).then(function (invoice) {
return invoice;
});
},
nfce_variaveis: function (obj) {
var self = this;
const invoice = self.pos.nfce_return_invoice(obj.order.name);
console.log(invoice);
},

what's coming out of console.log is this:
{state: ƒ, always: ƒ, then: ƒ, promise: ƒ, pipe: ƒ,…}

Avatar
Discard
3 Answers
4
Avatar
Hilar Andikkadavath
Best Answer

This is the correct format for using rpc.


var rpc = require('web.rpc')

rpc.query(

     model: //your model,

     method: //your method,

      args: [{

          'arg1': value1,

      }]

 }).then(function (result) { 

            // your code 

  });


on model.py

@api.model
def your_method(self):
     ...

With your example, Try to change this function

nfce_return_invoice: function(name){
rpc.query({
model: 'pos.order',
method: 'search_invoice',
args: [{'name': name}]
},{timeout: 30000}).then(function (invoice) {
return invoice;
});
},


Reference: https://www.odoo.com/forum/help-1/question/how-do-i-properly-pass-args-using-rpc-in-odoo-11-141324#answer-141345


3 Comments
Avatar
Discard
Avatar
Michael Douglas
-

The data is coming in then, but they do not return without being a promise, I need them to use in the coupon printing on the pdv

Avatar
Hilar Andikkadavath
-
Okay, instead of returning them, call the related function with data as argument. 

On Tue, 15 Oct 2019, 3:52 pm Michael Douglas, <contatomichael@outlook.com.br> wrote:

The data is coming in then, but they do not return without being a promise, I need them to use in the coupon printing on the pdv

Enviado por Odoo S.A. using Odoo.

Avatar
Michael Douglas
-

I didn't quite understand what I meant, take a look to see where I'm going wrong https://pastebin.com/Ubh3CacN

5

I am not expert in JS but I think following code would work:

self.pos.nfce_return_invoice(obj.order.name).then(function (invoice) {
console.log(invoice);
});


1 Comment
Avatar
Discard
Avatar
Michael Douglas
-

Inside "THEN" everything works perfectly, the problem is that I need to return the data to another function without promise got it?

1
Avatar
shalin wilson
Best Answer

check with your method 'search_invoice' and check if it gets the correct data.and also 

check 'invoice' you get in js
you can find the error

3 Comments
Avatar
Discard
Avatar
Michael Douglas
-

There is no error, the problem is that it returns a promise and not the data

Avatar
shalin wilson
-

did you get the data as a response from Search_invoice function?

Avatar
Michael Douglas
-

Yes, the data has been returned, but I can't get the information out of the "promise" and return the data to the function I need, see my code: https://pastebin.com/Ubh3CacN