美文网首页
基于短信猫的Odoo银行对账单同步方案

基于短信猫的Odoo银行对账单同步方案

作者: ShangHai_Fei | 来源:发表于2023-12-20 10:43 被阅读0次

业务背景

Odoo的银行对账一般采购银行标准的对账单格式csv,xls,ofx,qif等格式进行导入,再与收付款单进行匹配;
在国内银行下载对账单需要经过繁琐操作(装驱动,插Ukey,不同银行还会冲突)登录网银下载对账单再导入;
针对这个场景进行自动化改造大的企业一般是采用银企直联的方式,不过针对中小企业使用此方案周期长成本高,需要不少的开发,可能还需要额外部署本地前置机(对采购云端部署odoo来说架构比较麻烦);

方案介绍

这里提供一个比较轻量的方案来解决这个问题:使用短信猫来代收银行的到账短信,拿到短信之后进行发信人与内容解析银行进行一些自动化的操作(自动创建对账单,付款单等)。

短信猫

短信猫本质上可以看成是一个只能收发短信的手机,可以用程序去控制它的收发动作。
推荐型号:http://www.jdsms.com/JDSMS/node_330/node_332/MG35-FT
这个我们用了十多年了,一直比较稳定。

短信猫附带一个web管理后台

  • 基于java,可win/linux部署
  • MSSQL,MySQL,PostgreSQL等主流数据库都可使用。
  • 提供API来收发短信

功能实现

有两种方式

  1. 使用它的web API来进行收发短信操作,具体参考它的文档开发即可。
  2. 将短信猫的数据库与odoo数据库部署在同一主机上,使用数据库层面交互。
  • 发短信:在odoo中往其数据库发信表插数据
  • 收短信:在短信数据库的收信表,创建触发器,往odoo中插入数据

第一种方式开发简单,第二种方式更稳定(遇到odoo server挂了仍不影响短信收发)

触发器代码,Odoo中需安装queue_job模块

DROP FUNCTION trigger_sms_in_fun;
CREATE OR REPLACE FUNCTION public.trigger_sms_in_fun()
 RETURNS trigger
 LANGUAGE plpgsql
AS $function$

-- 声明变量
DECLARE sql TEXT := 'ss';
DECLARE uuid TEXT;

BEGIN
    -- 添加dblink扩展
    CREATE EXTENSION IF NOT EXISTS dblink;
    -- 添加uuid-ossp扩展(用于生成uuid)
    CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
    -- 将收到的短信插入队列
    uuid := (SELECT uuid_generate_v4());
    sql := 'INSERT INTO queue_job (uuid, user_id, company_id, job_function_id, channel, name,model_name, method_name, channel_method_name, record_ids, args, kwargs, state, func_string, date_created) 
        VALUES (
            ''' || uuid || ''',
            1,
            1,
            387,
            ''root'', 
            ''sms.sms.deal_receive_sms'', 
            ''sms.sms'', 
            ''deal_receive_sms'', 
            ''<sms.sms>.deal_receive_sms'', 
            ''[]'', 
            ''["' || NEW.originator || '","' || NEW.message_date || '","' || NEW.text || '"]'', 
            ''{}'', 
            ''pending'', 
            ''sms.sms().deal_receive_sms(''''' || NEW.originator || ''''', ''''' || NEW.message_date || ''''', ''''' || NEW.text || ''''', ' || NEW.id || ')'',
            NOW() - interval ''8 hours''
        )';
    -- 输出日志,用于调试
--     RAISE NOTICE 'SQL: %', sql;
    -- 创建远程数据库连接
    PERFORM (SELECT dblink_connect('odoo_db', 'host=127.0.0.1 user=dbuser password=dbpwd dbname=dbname'));
    -- 执行SQL
    PERFORM (SELECT dblink_exec('odoo_db', sql));
    -- 关闭远程数据库
    PERFORM (SELECT dblink_disconnect('odoo_db'));
    RETURN NEW;
END;
$function$


CREATE TRIGGER trigger_sms_receive_notify_odoo AFTER INSERT ON
smsserver_in FOR EACH ROW EXECUTE PROCEDURE trigger_sms_in_fun()

注:以上代码仅在odoo12上测试投产,其它版本请自行适配。

相关文章

  • Odoo词典

    odoo|accounting|翻译 财务 bank statement 银行对账单

  • 账单分期

    收到一条银行短信,是提醒我这个月的信用卡账单金额,以及提示我可以办理账单分期。 这次只有短信,之前我可是也收到很多...

  • 你有使用信用卡吗?

    预防逾期招数 1、别忽视账单 持卡人要避免罚息,尽量开通信用卡短信提醒和账单功能,银行一般都会通过短信的方式提醒客...

  • 信用卡分期费率到底是多少?

    银行的信用卡账单短信肯定都收到过,就像这样: 招行分12期的费率是每月0.66%,账单2641.67元,计算一下每...

  • “欺骗”

    什么是欺骗?前几天,当收到短信提示,广州银行信用卡账单快逾期时,感到非常不解,查询账单后才知道被收取了年费288,...

  • 信用卡账单简析

    【信用卡账单调研】 本次信用卡账单调研范围为招商银行、广发银行、中信银行、交通银行,所有账单均为邮箱账单。 上表为...

  • 信用卡知识(2)——信用卡的几个常识

    账单日 银行每个月的特定日期,都会通过短信、邮件等,发送上一个月你的消费账单给你。你可以理解为『上月总结』,收到账...

  • python:短信发送和接收库 python-gsmmodem

    前言 Python实现的短信发送/接收库,支持多种型号的短信猫。主要功能有: 发送短信、检测信号强度 基于回调的来...

  • 没钱不是我的错

    昨天花呗的账单还款日,因为记性不好所以绑定的银行卡自动还款,收到银行短信时还是惊了一下,啊!双十一居然败了这么多吗...

  • MoneyWiz 正版序列号官网团购 附用户群和安装指导

    软件简介管理自己的银行账户,负债,以及账单;利用跨设备的同步功能,强大的图标功能,以及无缝的导出功能,让 Mone...

网友评论

      本文标题:基于短信猫的Odoo银行对账单同步方案

      本文链接:https://www.haomeiwen.com/subject/fkvtndtx.html