币种定义和应用

在贸易、留学等行业,多币种是一个最常见的财务元素,涉及到产品报价,都需要考虑多币种支持。

SmartERP系统涉及到的多币种环节包括:

  1. 菜单“财务核算” -> “币种定义”,机构需要用到的币种打钩,在汇率处输入对应100本币所能兑换的金额。比如如果本币是人民币,美元对人民币的汇率是6.7,那么美元的汇率处应该填写 100 / 6.7 = 14.9254,如果对转化精度要求不高,可以填写 15。然后在下端选择“默认币种”,请不要随意选择和变更,系统大量的业务数据和财务核算都会使用到默认币种。
  2. 上面的操作是定义一个机构支持的币种,数据存储于表 e_organization_currency (oc) 中,通过外键字段 currency_id 链接系统币种定义表 e_system_currency (smcy),字段 name 保存币种名称如 CNY(人民币), USD(美元),symbol保存币种符号如 ¥(人民币),$(美元)。如果更新了汇率,汇率历史信息存储于表 e_organization_currency_history (ochy) 中。并不是所有的系统币种都出现在币种定义中,通过菜单“系统管理” -> "系统设置" -> "查询表格",别名处输入 smcy,选择表格,点击右侧的“参数表翻译”,对要支持的币种补充文本提交即可。
  3. 对于机构、客户、供应商和用户,在添加地点的时候可以设置国家(e_address_country,adc),这个表有一个 currency_id 字段,外链 e_system_currency,从而可以从地址信息判断默认币种。
  4. 费用报销的表,包括公司费用表(e_organization_cost),客户费用表(e_customer_cost),供应商费用表(e_supplier_cost)需要设置机构币种。
  5. 账户表,包括公司账户表(e_organization_account),客户供应商账户表(e_customer_account),用户账户表(e_user_account)需要设置系统币种。
  6. 产品(e_product)价格定义,根据机构币种定义,可以定义多个币种价格(e_product_price)。在读取产品价格信息时,传递字段 ppe.sale_price(销售价),ppe.cost_price (成本价),ppe.discount_price(折扣价),ppe.distributor_price(代理价、渠道价),自动读取机构默认币种价格,同时传递参数 @currency_id 系统币种编号(如美元是 840),可以读取指定币种价格。如果传递 @supplier_currency = 1,则会读取产品默认供应商(e_product_supplier, primary_supplier = 1)所在国家币种,如果没有定义,读取机构默认币种对应金额。比如传递字段“p.id, p.name, ppe.sale_price, smcy.name, smcy.symbol”,可以读取产品编号、名称、销售价格,币种名称和符号。
  7. 订单(e_order)和采购(e_po)需要设置机构币种,会同时保存进财务币种数据 (e_accounting_entry_line)。

在数据呈现页面,通过调用以下方法可以进行币种金额转化:
<%=ESite.GetExchangeAmount("USD", 1000, "GBP") %>, <%=ESite.GetExchangeAmount(840, 1000, 826) %>,1000美元转化为英镑,一个方法用系统币种名称,一个方法用系统币种编号,转化汇率为币种定义中的值。如果不传递目标币种(第三个参数),则会转化为机构默认比重,比如人民币。