应用软件中如何实现多币种自动换算

简介: 应用软件中如何实现多币种自动换算

由于国际业务或多币种业务的实际需要,在业务系统中能够处理多个币种并进行自动换算,是十分必要的。

一、设计汇率表

用于存储用户换算的外汇牌价。

mlwbpj字段列表:
id        int4         32 键号            textedit          
hbdh      varchar      50 贷币代号          textedit          
hbmc      varchar      20 货币名称          textedit          
jzhl      numeric      18 记账汇率(每100外币)  textedit        n4
sfsh      bool          0 是否审核          checkedit         
shry      varchar      20 审核人员          textedit          
rq        date          0 日期            dateedit  yyyy-MM-dd

二、换算函数

编写两个外币转换函数。使外币与本币可以相互换算。

1、外币换算成本币金额

CREATE OR REPLACE FUNCTION public.x9_bbje(
  ywrq date,
  wbmc character varying,
  wbsl numeric)
    RETURNS numeric
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
AS $BODY$
   -- Description:  本币金额
DECLARE
   bbje decimal(16,4);
   pjrq DATE;
BEGIN
  bbje:=0;
  IF $2 = '人民币(RMB)' OR $2 = '' THEN
    BEGIN
       bbje:=$3;
    END;
  ELSE
    BEGIN
      IF $3 IS NULL THEN $3 = 0;END IF;
      SELECT max(rq) INTO pjrq FROM mlwbpj WHERE rq <= $1;
      SELECT (jzhl * $3) / 100 INTO bbje FROM mlwbpj WHERE rq = pjrq AND hbmc = $2 ;
    END;
  END IF ;
  RETURN bbje;
END;
$BODY$;

2、本币换算为外币金额

CREATE OR REPLACE FUNCTION public.x9_wbje(
  wbmc character varying,
  bbsl numeric)
    RETURNS numeric
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
AS $BODY$
   -- complete date:2022-09-18-- Description: 外币金额 
DECLARE
    ssmsg text;ssdet text;sstname text;sshint text;ssctt text; --错误处理
  wbje decimal(16,4);
  pjrq DATE;
BEGIN
  wbje:=0;
  IF $1 = '人民币(RMB)' OR $1 = '' THEN
     wbje:=0;
  ELSE
    IF $2 IS NULL THEN 
         wbje = 0;
      END IF ;
    SELECT max(rq) INTO pjrq FROM mlwbpj WHERE hbmc = $1;
    SELECT ($2 * 100 / jzhl) INTO wbje FROM mlwbpj WHERE hbmc = $1 AND rq = pjrq;
  END IF ;
  RETURN wbje;
   EXCEPTION WHEN others THEN
      GET stacked DIAGNOSTICS ssmsg = MESSAGE_TEXT,ssdet = pg_exception_detail,
         sstname = TABLE_NAME, sshint = pg_exception_hint, ssctt = pg_exception_context;
      CALL x9_jlproc(ssmsg, ssdet, sstname, sshint, ssctt);
      RETURN 0;
END;
$BODY$;

三、自动换算

在数据保存后,在后台自动计算并保存不同币种各自的金额。在设计数据表时,都设计有本币和外币字段。

四、总结

这些设计了以后,在数据查询时,就可按需要查询本币和外币了。

如果需要,在数据输入时,也可以调用后台函数,立即计算出换算后的结果,前提是实时更外币牌价表。

相关文章
|
6月前
|
编解码 监控 网络协议
GB/T28181规范和JT1078交通部标差异
Android平台GB28181接入SDK(SmartGBD),可实现不具备国标音视频能力的 Android终端,通过平台注册接入到现有的GB/T28181—2016服务,可用于如执法记录仪、智能安全帽、智能监控、智慧零售、智慧教育、远程办公、明厨亮灶、智慧交通、智慧工地、雪亮工程、平安乡村、生产运输、车载终端等场景,可能是业内为数不多功能齐全性能优异的商业级水准GB28181接入SDK
141 0
|
8月前
|
前端开发 开发工具 数据库
支付系统资料-青戈版沙箱支付,订单编号样式设计,还有七天无理由退款,常与会员系统相搭配,内网穿透客户看到页面,前端展示,直播过程所有都能访问的写法
支付系统资料-青戈版沙箱支付,订单编号样式设计,还有七天无理由退款,常与会员系统相搭配,内网穿透客户看到页面,前端展示,直播过程所有都能访问的写法
支付系统资料-青戈版沙箱支付,订单编号样式设计,还有七天无理由退款,常与会员系统相搭配,内网穿透客户看到页面,前端展示,直播过程所有都能访问的写法
|
9月前
|
数据可视化 安全 区块链
区块链钱包浏览器开发功能,价格和时间周期
开发区块链钱包浏览器涉及账户管理、交易查询、区块浏览、智能合约查询及数据可视化等功能。价格因开发难度、需求、团队专业度及第三方服务费用而异,通常在数万至数百万元。开发周期约数月到半年,包括需求分析、设计、开发、测试和上线等阶段。
区块链钱包浏览器开发功能,价格和时间周期
|
vr&ar 开发工具 图形学
Unity引擎更新收费模式:从收入分成转向游戏安装量,将会有哪些影响呢
Unity引擎更新收费模式:从收入分成转向游戏安装量,将会有哪些影响呢
|
存储 弹性计算 负载均衡
阿里云新增新老用户多场景组合购,多种业务场景可选,灵活选择解决方案
很多购买阿里云产品的用户在购买云服务器产品的同时往往还需要搭配购买其他云产品,例如备案管家服务、对象存储服务、负载均衡CLB、无影云桌面等,为此,阿里云新增了组合购套餐,最低仅需1532.04元起。
阿里云新增新老用户多场景组合购,多种业务场景可选,灵活选择解决方案
[解决]:【TeamViewer作为个人用途免费,但仅可使用在有限数量的设备上。您已经到达可使用设备的上线】
[解决]:【TeamViewer作为个人用途免费,但仅可使用在有限数量的设备上。您已经到达可使用设备的上线】
781 0
|
人工智能 自然语言处理 NoSQL
数据类型-案例:按次结算的服务控制| 学习笔记
快速学习数据类型-案例:按次结算的服务控制
数据类型-案例:按次结算的服务控制| 学习笔记
云支付小程序如何恢复退回蜻蜓标准版本
云支付小程序如何恢复退回蜻蜓标准版本
云支付小程序如何恢复退回蜻蜓标准版本
是省还是亏?手工升级iPhone内存存在“后遗症”!
除了不能享受保修,这种操作本身也存在风险。
726 0