我制作了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 "C:\odoo-12.0\odoo\addons\base\controllers\rpc.py", line 63, in xmlrpc_2
response = self._xmlrpc(service)
File "C:\odoo-12.0\odoo\addons\base\controllers\rpc.py", line 43, in _xmlrpc
result = dispatch_rpc(service, method, params)
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
in <em class="placeholder">Zend\XmlRpc\Client->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->getReport('crm_ong.report_recufiscal', 0, 'qweb-pdf') (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");
}
答案 0 :(得分:1)
report 服务已从11.0版开始从Odoo中删除。
相关提交: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
模型仍然可用),然后尝试像在{{3 }}(这不是相对于Odoo的“客户端”代码,但您知道了)。