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

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

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

一、设计汇率表

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

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$;

三、自动换算

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

四、总结

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

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

相关文章
|
1月前
|
前端开发 开发工具 数据库
支付系统资料-青戈版沙箱支付,订单编号样式设计,还有七天无理由退款,常与会员系统相搭配,内网穿透客户看到页面,前端展示,直播过程所有都能访问的写法
支付系统资料-青戈版沙箱支付,订单编号样式设计,还有七天无理由退款,常与会员系统相搭配,内网穿透客户看到页面,前端展示,直播过程所有都能访问的写法
支付系统资料-青戈版沙箱支付,订单编号样式设计,还有七天无理由退款,常与会员系统相搭配,内网穿透客户看到页面,前端展示,直播过程所有都能访问的写法
|
1月前
|
搜索推荐
分享5款小巧,不占资源,功能实用的软件
在日常使用电脑时,我们需要各种软件来完成任务。以下是5款小巧不占资源,但功能实用的软件推荐。
12 0
|
2月前
|
数据可视化 安全 区块链
区块链钱包浏览器开发功能,价格和时间周期
开发区块链钱包浏览器涉及账户管理、交易查询、区块浏览、智能合约查询及数据可视化等功能。价格因开发难度、需求、团队专业度及第三方服务费用而异,通常在数万至数百万元。开发周期约数月到半年,包括需求分析、设计、开发、测试和上线等阶段。
区块链钱包浏览器开发功能,价格和时间周期
|
11月前
|
vr&ar 开发工具 图形学
Unity引擎更新收费模式:从收入分成转向游戏安装量,将会有哪些影响呢
Unity引擎更新收费模式:从收入分成转向游戏安装量,将会有哪些影响呢
币安现货网格交易策略搭建执行代码实例分析
币安现货网格交易策略搭建执行代码实例分析
|
12月前
|
存储 安全 分布式数据库
Swap薄饼交易所系统开发(模式详情 )|DAPP开发
区块链技术的分布式数据库结构也保证了合约的数据的安全性和隐私保护
|
机器学习/深度学习 算法 数据挖掘
日内交易套利系统程式开发编写规则解析
日内交易套利系统程式开发编写规则解析
|
数据采集 监控 算法
现货实盘合约量化交易所系统对接开发部署源码示例
# 定义交易信号函数 def trade_signal(data, signal_type='macd'): if signal_type == 'macd': signal = macd > 0
|
存储 安全 区块链
哈希竞猜游戏系统开发(规则策略)丨dapp链上合约游戏系统开发(方案逻辑)/源码程序
区块哈希函数是一种将区块的数据转换为固定长度哈希值的函数。该函数是单向的,这意味着很难从哈希值反向计算区块的数据。哈希值用于验证区块的完整性和防篡改。
|
监控 Java API
(币安、欧易)交易所合约网格交易策略程式开发搭建部署源码规则解析
(币安、欧易)交易所合约网格交易策略程式开发搭建部署源码规则解析