Creating and fixing ISO4217 currencies

This commit is contained in:
Dennis Eichhorn 2016-03-28 16:03:16 +02:00
parent fd14e8c2ea
commit 3b32def079
3 changed files with 426 additions and 2 deletions

View File

@ -0,0 +1,212 @@
<?php
/**
* Orange Management
*
* PHP Version 7.0
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @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 <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @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;
}

View File

@ -0,0 +1,212 @@
<?php
/**
* Orange Management
*
* PHP Version 7.0
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @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 <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @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';
}

View File

@ -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);