1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| import json import logging from odoo.http import Controller, route, request
logger = logging.getLogger(__name__) import sys
reload(sys) sys.setdefaultencoding('utf-8')
class OaInterfaceController(Controller): """ OA向外部提供的接口 包括修改付款单的单据状态 """ @route('/oa/interface/payment/update/state', type='json', auth='none', methods=['get', 'post'], csrf=False) def oa_interface_payment_update_state(self): """ 本接口用于外部系统调用时根据传递的单据编号修改付款单的状态 数据传递格式:json json_data = { "source_number": "单据编号", "payment_state": "单据状态", } 返回数据格式: {"code": 返回编号, "message": "消息"} :return: """ logging.info(u"-----检测到外部系统正在请求修改付款单状态-----") json_str = request.jsonrequest if not json_str: return json.dumps({"state": '1001', "message": u"未接收到任何JSON数据"}, ensure_ascii=False) try: source_number = json_str['source_number'] payment_state = json_str['state'] paied_money = json_str['paied_money'] except KeyError: return json.dumps(({"state": '1002', "message": u"没有正确传递参数"}), ensure_ascii=False) payment = request.env['oa.interface.bank'].sudo().search([('source_number', '=', source_number)], limit=1) if not payment: return json.dumps({"state": '1003', "message": u"没有找到编号{}的付款单".format(source_number)}, ensure_ascii=False) if "payment_state" in json_str: payment.write({'state': '02'}) payment.write({"paied_money": paied_money}) for line in range(len(payment_state)): payment.payment_line_ids[line].write({'state': payment_state[line]}) return json.dumps({"code": '0000', "message": u"执行成功!"})
|