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

业务背景

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上测试投产,其它版本请自行适配。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容