NameError: Method not available report

NameError: Method not available report

我制作了 web 服务来通信两个应用程序 odoo12 和 drupal。当我尝试从 drupal 检索 odoo12 中的报告时,我收到此错误消息:

-Drupal:

Le site Web a rencontré une erreur inattendue. Veuillez essayer de nouveau plus tard.</br></br><em class="placeholder">Zend\XmlRpc\Client\Exception\FaultException</em>: Traceback (most recent call last):
  File &quot;C:\odoo-12.0\odoo\addons\base\controllers\rpc.py&quot;, line 63, in xmlrpc_2
    response = self._xmlrpc(service)
  File &quot;C:\odoo-12.0\odoo\addons\base\controllers\rpc.py&quot;, line 43, in _xmlrpc
result = dispatch_rpc(service, method, params)
  File &quot;C:/odoo-12.0\odoo\http.py&quot;, line 121, in dispatch_rpc
    result = dispatch(method, params)
  File &quot;C:/odoo-12.0\odoo\service\model.py&quot;, line 34, in dispatch
    raise NameError(&quot;Method not available %s&quot; % method)
NameError: Method not available report
 in <em class="placeholder">Zend\XmlRpc\Client-&gt;call()</em> (line <em class="placeholder">325</em> of <em class="placeholder">vendor\zendframework\zend-xmlrpc\src\Client.php</em>). <pre class="backtrace">Jsg\Odoo\Odoo-&gt;getReport(&#039;crm_ong.report_recufiscal&#039;, 0, &#039;qweb-pdf&#039;) (Line: 124)

-Odoo:

Traceback (most recent call last):
  File "C:/odoo-12.0\odoo\http.py", line 121, in dispatch_rpc
    result = dispatch(method, params)
  File "C:/odoo-12.0\odoo\service\model.py", line 34, in dispatch
    raise NameError("Method not available %s" % method)
NameError: Method not available report

-代码 drupal

public function submitForm(array &$form, FormStateInterface $form_state) {
        global $id_don;
        global $client;

        $id_don = (int) $form_state->getValues()['id_don'];


        $model = "crm.alima.don";
        $ids = [$id_don];

        $report_data=$client->getReport('crm_solthis.report_recufiscal', $id_don, 'qweb-pdf');


        header('Content-Type: application/pdf');
        echo $report_data;die();
        header('Content-Type: text/css');
        header("Content-Disposition: attachment; filename=RecuFiscal.pdf");

      }

报告 服务已从 Odoo 11.0 版本中删除。
相关提交:c23ef9a, 3425752.

我刚刚检查了 Drupal 使用的 Odoo 客户端,代码似乎没有考虑这些更改:

# from function getReport()
$client = $this->getClient('report');
$reportId = $client->call('report', $params);

要解决您的问题,请不要使用 getReport,我想仍然可以通过调整客户端的方法为您的模型获取一些数据并打印某种报告。

我建议切换到 object 端点以获得通用 XmlRpcClient,您可以在其上调用 render()

例如,您可以首先使用 search() 获取 reportId(不再有报告服务,但 ir.actions.report 模型仍然可用),然后尝试 read/render 它喜欢在 this example 中(这不是 'client' 相对于 Odoo 的代码,但你明白了)。