Note

The online documentation is produced by a web publishing technology created by us to read the documents origins in OpenOffice Writer (ODT) and Microsoft Word (docx) formats and produces native web and PDF versions. In this way we maintain Louder project documentation update and in sync on each of its formats.
Select a Language:
Componente Currency
Introducción
El objetivo de este componente es proporcionar facilidades al desarrollador para trabajar con cantidades numéricas relacionadas con dinero y monedas, su representación de acuerdo a la localización activa y la generación de montos en letras en diferentes idiomas. El componente soporta datos monetarios para más de 90 localizaciones.
Cantidades usando el formato adecuado
El componente Currency permite aplicar el formato correcto a cantidades de acuerdo a la localización activa ó la que se establezca. De esta forma es posible utilizar los separadores de decimales y miles adecuados para cada territorio, el nombre de la moneda y el simbolo de dinero adecuados.

Currency puede ser usado mediante métodos estáticos ó creando instancias de esta cuando se requiere utilizar múltiples localizaciones en un mismo proceso.

El separador de comas y agrupamiento puede cambiar de una localización a otra:
Ejemplo: Imprimir cantidades monetarias usando diferentes localizaciones
<?php

$currency = new Currency(new Locale('en_US'));
echo $currency->getMoney(10000); //10,000.00

$currency->setLocale(new Locale('es_CO'));
echo $currency->getMoney(10000); //10.000,00
Simbolo y nombre de la moneda utilizada
El componente Currency puede combinar la conversión al formato numérico correcto y el nombre de la moneda incluso cuando es diferente a la localización actual. El método getMoney también acepta un formato con tipos de identificadores para indicar datos adicionales de la salida monetaria:
Ejemplo: Imprimir una cantidad monetaria usando un formato personalizado
<?php

$currency = new Currency(new Locale('en_US'));
echo $currency->getMoney(10000, '%symbol%%name% %quantity% (%displayName%)');

$currency->setLocale(new Locale('es_CO'));
echo $currency->getMoney(10000, '%symbol%%name% %quantity% (%displayName%)');

Generando la salida:
$USD 10,000.00 (US Dollar)
$COP 10.000,00 (Peso de Colombia)

Los tipos de identificadores soportados son:
Tabla: Tipos de modificadores de formato soportados por Currency
Tipo Modificador
Descripción
%symbol%Simbolo predeterminado de la moneda utilizada.
%name%Codigo ISO 3166 de la moneda
%displayName%Nombre de la moneda en la localización activa.
%quantityUbicación de la cantidad a formatear.


Si se require se puede pasar un tercer parámetro a getMoney indicando la moneda en la que está la cantidad pero sin cambiar la localización:
Ejemplo: Indicar el tipo de moneda usado según la localización en Currency
$currency->setLocale(new Locale('es_CO'));
echo $currency->getMoney(100, '%symbol%%name% %quantity% (%displayName%)', 'USD');

El ejemplo anterior imprime:
USD 100.00 (dólar estadounidense)
Versiones escritas de cantidades
Una de las capacidades importantes de Currency es la posibilidad de generar versiones en texto de cantidades monetarias. El componente se apoya en LocaleMath para generar versiones escritas de cantidades superiores a billones:
//CUATROMIL QUINIENTOS BOLíVARES FUERTES VENEZOLANOS
$currency = new Currency(new Locale('es_VE'));
echo $currency->getMoneyAsText(4500);

//UN MILLON DOSCIENTOS CINCUENTAMIL PESOS COLOMBIANOS
$currency = new Currency(new Locale('es_CO'));
echo $currency->getMoneyAsText(1250000);

//UN MILLON DE PESOS COLOMBIANOS
$currency = new Currency(new Locale('es_CO'));
echo $currency->getMoneyAsText(1000000);

//CIEN PESOS COLOMBIANOS CON CINCUENTA CENTAVOS
$currency = new Currency(new Locale('es_CO'));
echo $currency->getMoneyAsText(100.50);

//UN PESO ARGENTINO
$currency = new Currency(new Locale('es_AR'));
echo $currency->getMoneyAsText(1);

//DOSCIENTOS CINCUENTA PESOS URUGUAYOS
$currency = new Currency(new Locale('es_UY'));
echo $currency->getMoneyAsText(250);
//OMITIR LA MONEDA
$currency = new Currency(new Locale('es_UY'));
echo $currency->getMoneyAsText(250, false);

El método getMoneyAsText recibe una cantidad y segundo parámetro opcional que indica si se debe agregar la moneda. Este método realiza una correcta pluralización del texto de acuerdo a la cantidad y agrega las cantidades en centavos si aplica.
API del Componente Currency
function void __construct(Locale $locale)
Constructor de Currency. Opcionalmente puede establecerse la localización que debe tener en cuenta el objeto.

function void setLocale(Locale $locale)
Permite establecer cambiar la localización del objeto Currency.

function string getMoney(double $quantity, string $format='', string $codeISO='')
Obtiene una cantidad monetaria formateada de acuerdo a la localización del objeto ó la de la aplicación. El parámetro $format permite indicar el formato del string resultante.

function string getMoneySymbol(string $codeISO='')
Obtiene el simbolo de moneda para la localización actual ó la indicada mediante el código ISO del país con $codeISO.

function string getMoneyDisplayName(string $codeISO='', string $type='')
Obtiene el nombre de la moneda para la localización actual ó la indicada mediante el código ISO del país con $codeISO.

function string getMoneyISOCode(string $codeISO='')
Obtiene el código ISO de una moneda de acuerdo al código ISO del país.

function array getCurrency(string $codeISO='', string $displayType='')
Obtiene un array con el simbolo y nombre de la moneda en localización actual del objeto.

static function string moneyToWords(numeric $valor, string $moneda, string $centavos)
Convierte un valor en monedas a su representación en palabras. Actualmente solo genera textos en español.