From 3b32def079de3b4419987768e0673c0172fda442 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Mon, 28 Mar 2016 16:03:16 +0200 Subject: [PATCH] Creating and fixing ISO4217 currencies --- Localization/ISO4217DecimalEnum.php | 212 ++++++++++++++++++++++++++++ Localization/ISO4217NumEnum.php | 212 ++++++++++++++++++++++++++++ Localization/Money.php | 4 +- 3 files changed, 426 insertions(+), 2 deletions(-) diff --git a/Localization/ISO4217DecimalEnum.php b/Localization/ISO4217DecimalEnum.php index e69de29bb..923a16456 100644 --- a/Localization/ISO4217DecimalEnum.php +++ b/Localization/ISO4217DecimalEnum.php @@ -0,0 +1,212 @@ + + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace phpOMS\Localization; + +use phpOMS\Datatypes\Enum; + +/** + * Country codes ISO list. + * + * @category Framework + * @package phpOMS\DataStorage\Database + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class ISO4217DecimalEnum extends Enum +{ + const C_AED = 2; + const C_AFN = 2; + const C_ALL = 2; + const C_AMD = 2; + const C_ANG = 2; + const C_AOA = 2; + const C_ARS = 2; + const C_AUD = 2; + const C_AWG = 2; + const C_AZN = 2; + const C_BAM = 2; + const C_BBD = 2; + const C_BDT = 2; + const C_BGN = 2; + const C_BHD = 3; + const C_BIF = 0; + const C_BMD = 2; + const C_BND = 2; + const C_BOB = 2; + const C_BOV = 2; + const C_BRL = 2; + const C_BSD = 2; + const C_BTN = 2; + const C_BWP = 2; + const C_BYR = 0; + const C_BZD = 2; + const C_CAD = 2; + const C_CDF = 2; + const C_CHE = 2; + const C_CHF = 2; + const C_CHW = 2; + const C_CLF = 4; + const C_CLP = 0; + const C_CNY = 2; + const C_COP = 2; + const C_COU = 2; + const C_CRC = 2; + const C_CUC = 2; + const C_CUP = 2; + const C_CVE = 0; + const C_CZK = 2; + const C_DJF = 0; + const C_DKK = 2; + const C_DOP = 2; + const C_DZD = 2; + const C_EGP = 2; + const C_ERN = 2; + const C_ETB = 2; + const C_EUR = 2; + const C_FJD = 2; + const C_FKP = 2; + const C_GBP = 2; + const C_GEL = 2; + const C_GHS = 2; + const C_GIP = 2; + const C_GMD = 2; + const C_GNF = 0; + const C_GTQ = 2; + const C_GYD = 2; + const C_HKD = 2; + const C_HNL = 2; + const C_HRK = 2; + const C_HTG = 2; + const C_HUF = 2; + const C_IDR = 2; + const C_ILS = 2; + const C_INR = 2; + const C_IQD = 3; + const C_IRR = 2; + const C_ISK = 0; + const C_JMD = 2; + const C_JOD = 3; + const C_JPY = 0; + const C_KES = 2; + const C_KGS = 2; + const C_KHR = 2; + const C_KMF = 0; + const C_KPW = 2; + const C_KRW = 0; + const C_KWD = 3; + const C_KYD = 2; + const C_KZT = 2; + const C_LAK = 2; + const C_LBP = 2; + const C_LKR = 2; + const C_LRD = 2; + const C_LSL = 2; + const C_LYD = 3; + const C_MAD = 2; + const C_MDL = 2; + const C_MGA = 1; + const C_MKD = 2; + const C_MMK = 2; + const C_MNT = 2; + const C_MOP = 2; + const C_MRO = 1; + const C_MUR = 2; + const C_MVR = 2; + const C_MWK = 2; + const C_MXN = 2; + const C_MXV = 2; + const C_MYR = 2; + const C_MZN = 2; + const C_NAD = 2; + const C_NGN = 2; + const C_NIO = 2; + const C_NOK = 2; + const C_NPR = 2; + const C_NZD = 2; + const C_OMR = 3; + const C_PAB = 2; + const C_PEN = 2; + const C_PGK = 2; + const C_PHP = 2; + const C_PKR = 2; + const C_PLN = 2; + const C_PYG = 0; + const C_QAR = 2; + const C_RON = 2; + const C_RSD = 2; + const C_RUB = 2; + const C_RWF = 0; + const C_SAR = 2; + const C_SBD = 2; + const C_SCR = 2; + const C_SDG = 2; + const C_SEK = 2; + const C_SGD = 2; + const C_SHP = 2; + const C_SLL = 2; + const C_SOS = 2; + const C_SRD = 2; + const C_SSP = 2; + const C_STD = 2; + const C_SYP = 2; + const C_SZL = 2; + const C_THB = 2; + const C_TJS = 2; + const C_TMT = 2; + const C_TND = 3; + const C_TOP = 2; + const C_TRY = 2; + const C_TTD = 2; + const C_TWD = 2; + const C_TZS = 2; + const C_UAH = 2; + const C_UGX = 0; + const C_USD = 2; + const C_USN = 2; + const C_USS = 2; + const C_UYI = 0; + const C_UYU = 2; + const C_UZS = 2; + const C_VEF = 2; + const C_VND = 0; + const C_VUV = 0; + const C_WST = 2; + const C_XAF = 0; + const C_XAG = -1; + const C_XAU = -1; + const C_XBA = -1; + const C_XBB = -1; + const C_XBC = -1; + const C_XBD = -1; + const C_XCD = 2; + const C_XDR = -1; + const C_XFU = -1; + const C_XOF = 0; + const C_XPD = -1; + const C_XPF = 0; + const C_XPT = -1; + const C_XSU = -1; + const C_XTS = -1; + const C_XUA = -1; + const C_XXX = -1; + const C_YER = 2; + const C_ZAR = 2; + const C_ZMW = 2; +} \ No newline at end of file diff --git a/Localization/ISO4217NumEnum.php b/Localization/ISO4217NumEnum.php index e69de29bb..6a09d0902 100644 --- a/Localization/ISO4217NumEnum.php +++ b/Localization/ISO4217NumEnum.php @@ -0,0 +1,212 @@ + + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace phpOMS\Localization; + +use phpOMS\Datatypes\Enum; + +/** + * Country codes ISO list. + * + * @category Framework + * @package phpOMS\DataStorage\Database + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class ISO4217DecimalEnum extends Enum +{ + const C_AED = '784'; + const C_AFN = '971'; + const C_ALL = '008'; + const C_AMD = '051'; + const C_ANG = '532'; + const C_AOA = '973'; + const C_ARS = '032'; + const C_AUD = '036'; + const C_AWG = '533'; + const C_AZN = '944'; + const C_BAM = '977'; + const C_BBD = '052'; + const C_BDT = '050'; + const C_BGN = '975'; + const C_BHD = '048'; + const C_BIF = '108'; + const C_BMD = '060'; + const C_BND = '096'; + const C_BOB = '068'; + const C_BOV = '984'; + const C_BRL = '986'; + const C_BSD = '044'; + const C_BTN = '064'; + const C_BWP = '072'; + const C_BYR = '974'; + const C_BZD = '084'; + const C_CAD = '124'; + const C_CDF = '976'; + const C_CHE = '947'; + const C_CHF = '756'; + const C_CHW = '948'; + const C_CLF = '990'; + const C_CLP = '152'; + const C_CNY = '156'; + const C_COP = '170'; + const C_COU = '970'; + const C_CRC = '188'; + const C_CUC = '931'; + const C_CUP = '192'; + const C_CVE = '132'; + const C_CZK = '203'; + const C_DJF = '262'; + const C_DKK = '208'; + const C_DOP = '214'; + const C_DZD = '012'; + const C_EGP = '818'; + const C_ERN = '232'; + const C_ETB = '230'; + const C_EUR = '978'; + const C_FJD = '242'; + const C_FKP = '238'; + const C_GBP = '826'; + const C_GEL = '981'; + const C_GHS = '936'; + const C_GIP = '292'; + const C_GMD = '270'; + const C_GNF = '324'; + const C_GTQ = '320'; + const C_GYD = '328'; + const C_HKD = '344'; + const C_HNL = '340'; + const C_HRK = '191'; + const C_HTG = '332'; + const C_HUF = '348'; + const C_IDR = '360'; + const C_ILS = '376'; + const C_INR = '356'; + const C_IQD = '368'; + const C_IRR = '364'; + const C_ISK = '352'; + const C_JMD = '388'; + const C_JOD = '400'; + const C_JPY = '392'; + const C_KES = '404'; + const C_KGS = '417'; + const C_KHR = '116'; + const C_KMF = '174'; + const C_KPW = '408'; + const C_KRW = '410'; + const C_KWD = '414'; + const C_KYD = '136'; + const C_KZT = '398'; + const C_LAK = '418'; + const C_LBP = '422'; + const C_LKR = '144'; + const C_LRD = '430'; + const C_LSL = '426'; + const C_LYD = '434'; + const C_MAD = '504'; + const C_MDL = '498'; + const C_MGA = '969'; + const C_MKD = '807'; + const C_MMK = '104'; + const C_MNT = '496'; + const C_MOP = '446'; + const C_MRO = '478'; + const C_MUR = '480'; + const C_MVR = '462'; + const C_MWK = '454'; + const C_MXN = '484'; + const C_MXV = '979'; + const C_MYR = '458'; + const C_MZN = '943'; + const C_NAD = '516'; + const C_NGN = '566'; + const C_NIO = '558'; + const C_NOK = '578'; + const C_NPR = '524'; + const C_NZD = '554'; + const C_OMR = '512'; + const C_PAB = '590'; + const C_PEN = '604'; + const C_PGK = '598'; + const C_PHP = '608'; + const C_PKR = '586'; + const C_PLN = '985'; + const C_PYG = '600'; + const C_QAR = '634'; + const C_RON = '946'; + const C_RSD = '941'; + const C_RUB = '643'; + const C_RWF = '646'; + const C_SAR = '682'; + const C_SBD = '090'; + const C_SCR = '690'; + const C_SDG = '938'; + const C_SEK = '752'; + const C_SGD = '702'; + const C_SHP = '654'; + const C_SLL = '694'; + const C_SOS = '706'; + const C_SRD = '968'; + const C_SSP = '728'; + const C_STD = '678'; + const C_SYP = '760'; + const C_SZL = '748'; + const C_THB = '764'; + const C_TJS = '972'; + const C_TMT = '934'; + const C_TND = '788'; + const C_TOP = '776'; + const C_TRY = '949'; + const C_TTD = '780'; + const C_TWD = '901'; + const C_TZS = '834'; + const C_UAH = '980'; + const C_UGX = '800'; + const C_USD = '840'; + const C_USN = '997'; + const C_USS = '998'; + const C_UYI = '940'; + const C_UYU = '858'; + const C_UZS = '860'; + const C_VEF = '937'; + const C_VND = '704'; + const C_VUV = '548'; + const C_WST = '882'; + const C_XAF = '950'; + const C_XAG = '961'; + const C_XAU = '959'; + const C_XBA = '955'; + const C_XBB = '956'; + const C_XBC = '957'; + const C_XBD = '958'; + const C_XCD = '951'; + const C_XDR = '960'; + const C_XFU = 'Nil'; + const C_XOF = '952'; + const C_XPD = '964'; + const C_XPF = '953'; + const C_XPT = '962'; + const C_XSU = '994'; + const C_XTS = '963'; + const C_XUA = '965'; + const C_XXX = '999'; + const C_YER = '886'; + const C_ZAR = '710'; + const C_ZMW = '967'; +} \ No newline at end of file diff --git a/Localization/Money.php b/Localization/Money.php index b7ff478b3..0fcd7389e 100644 --- a/Localization/Money.php +++ b/Localization/Money.php @@ -50,8 +50,8 @@ class Money implements Serialize { public function getAmount(int $decimals = 2) : string { - if($decimals > ISO4270::{$this->currency}) { - $decimals = ISO4270::{$this->currency}; + if($decimals > ($dec = ISO4217DecimalEnum::${'C_' . strtoupper($this->currency)})) { + $decimals = $dec ; } $value = (string) round($value, - self::MAX_DECIMALS + $this->decimals);