我有一个服务器操作,它应该获取所选记录的数据,以向api发出post请求。 这是我的服务器操作
<record model="ir.actions.server" id="action_hr_payroll_execute_payroll">
<field name="name">Execute Payment</field>
<field name="model_id" ref="hr_payroll.model_hr_payslip"/>
<field name="binding_model_id" ref="hr_payroll.model_hr_payslip"/>
<field name="binding_view_types">list</field>
<field name="state">code</field>
<field name="code">
records.check_pay_execute()
</field>
</record>
这是正在调用的check\u pay\u execute函数
def check_pay_execute(self):
cheker = 0
for rec in self:
if rec.state != 'done':
raise Warning(_('You cannot process a draft payslip '
'for payment'))
if rec.pay_status != 'approved':
raise Warning(_('You cannot execute payslip not approved '
'for payment'))
else:
continue
return self.execute_payment()
这是正在调用的execute_payment函数
def execute_payment(self):
self.ensure_one
print("Execute Payment")
pay_acquirer = self.env['payment.acquirer']. \
search([('provider', '=', 'rave')], limit=1)
_logger.info('Flutter secret key: %s', pay_acquirer.rave_secret_key)
print("Checking details")
_logger.info("Getting name %s", self.employee_id.name)
_logger.info("Getting account number %s", self.employee_id.bank_account_id.acc_number)
_logger.info("Getting account code %s", self.employee_id.bank_account_id.bic)
emp_name = self.employee_id.name
acc_num = self.employee_id.bank_account_id.acc_number
acc_bank = self.employee_id.bank_account_id.bank_id.bic
_logger.info("Getting data %s", emp_name)
data = {
"account_bank": acc_bank,
"account_number": acc_num,
"amount": self.net_wage,
"seckey": pay_acquirer.rave_secret_key,
"narration": "New transfer",
"currency": self.currency_id.name,
# "reference": ,
"beneficiary_name": emp_name
}
## Make transfer to Employee bank details
api_url = "https://%s/v2/gpx/transfers/create" % \
(pay_acquirer._get_rave_api_url())
_logger.info('API URL: %s', api_url)
headers = {
'Content-Type': 'application/json',
# 'Authorization': 'Bearer %s' % (pay_acquirer.rave_secret_key)
}
_logger.info('Posting to API: \n%s', data)
r = requests.post(api_url, headers=headers, data=json.dumps(data))
tree = json.loads(r.text)
_logger.info("tree: \n%s", tree)
self.write({'pay_status': 'submitted'})
if tree['status'] == "error":
raise UserError(_(tree['message']))
print("Payment submitted")
return self._rave_validate_tree(tree)
当我执行“执行付款”操作时,会出现以下错误:
Checking details
> /home/akoh/isodir/odoo/odoo/tools/safe_eval.py(346)safe_eval()
-> raise ValueError('%s: "%s" while evaluating\n%r' % (ustr(type(e)), ustr(e), expr))
这表明错误在“检查详细信息”记录器之后开始,它似乎没有从self正确获取记录。我真的不知道该怎么做,也不知道该怎么做
代码中有一些奇怪的东西
execute_payment
时,您使用self进行操作,但方法execute_payment
的第一行是sure\u one,这没有意义李>else: continue
毫无意义。你已经到了你的循环的终点了李>及供参考
json
将自动编码您的dictMore complicated POST requests
r.json()
来获取响应数据李>JSON Response Content
相关问题 更多 >
编程相关推荐