Skip to content

Commit

Permalink
add toString(), change strtoupper to mb_strtoupper
Browse files Browse the repository at this point in the history
  • Loading branch information
lecano committed Aug 29, 2020
1 parent bbcf742 commit d62d545
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 13 deletions.
42 changes: 33 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ require 'vendor/autoload.php';
use Luecano\NumeroALetras\NumeroALetras;
```

### Convertir un número a letras
### Convertir un número a letras o palabras

```php
$formatter = new NumeroALetras;
Expand Down Expand Up @@ -55,6 +55,23 @@ Parámetros:

- string `$cents` (opcional) Establece el nombre o código para la parte decimal, valor por defecto es string vacío.

### Convertir un número a letras en formato libre

```php
$formatter = new NumeroALetras;
echo $formatter->toString($number, $decimals, $whole_str, $decimal_str);
```

Parámetros:

- integer|float `$number` (requerido) El número a convertir.

- integer `$decimals` (opcional) Establece el número de puntos decimales, valor por defecto es 2.

- string `$whole_str` (opcional) Establece el texto para la parte entera, valor por defecto es string vacío.

- string `$decimal_str` (opcional) Establece el texto para la parte decimal, valor por defecto es string vacío.

### Convertir un número a letras en formato de facturación electrónica SUNAT

```php
Expand Down Expand Up @@ -97,6 +114,14 @@ echo $formatter->toWords(1100);
//MIL CIEN
```

```php
$formatter = new NumeroALetras;
$formatter->apocope = true;
echo $formatter->toWords(101) . ' AÑOS';

//CIENTO UN AÑOS
```

```php
echo (new NumeroALetras)->toMoney(2500.90, 2, 'DÓLARES', 'CENTAVOS');

Expand All @@ -112,25 +137,24 @@ echo $formatter->toMoney(10.10, 2, 'SOLES', 'CENTIMOS');

```php
$formatter = new NumeroALetras;
echo $formatter->toInvoice(1700.50, 2, 'soles');
$formatter->conector = 'Y';
echo $formatter->toMoney(11.10, 2, 'pesos', 'centavos');

//MIL SETECIENTOS CON 50/100 SOLES
//ONCE PESOS Y DIEZ CENTAVOS
```

```php
$formatter = new NumeroALetras;
$formatter->apocope = true;
echo $formatter->toWords(101) . ' AÑOS';
echo $formatter->toInvoice(1700.50, 2, 'soles');

//CIENTO UN AÑOS
//MIL SETECIENTOS CON 50/100 SOLES
```

```php
$formatter = new NumeroALetras;
$formatter->conector = 'Y';
echo $formatter->toMoney(11.10, 2, 'pesos', 'centavos');
echo $formatter->toString(5.2, 1, 'años', 'meses');

//ONCE PESOS Y DIEZ CENTAVOS
//CINCO AÑOS CON DOS MESES
```

### Documentación v1.4
Expand Down
22 changes: 18 additions & 4 deletions src/NumeroALetras.php
Original file line number Diff line number Diff line change
Expand Up @@ -115,19 +115,33 @@ public function toMoney($number, $decimals = 2, $currency = '', $cents = '')

$splitNumber = explode('.', $number);

$splitNumber[0] = $this->wholeNumber($splitNumber[0]) . ' ' . strtoupper($currency);
$splitNumber[0] = $this->wholeNumber($splitNumber[0]) . ' ' . mb_strtoupper($currency, 'UTF-8');

if (!empty($splitNumber[1])) {
$splitNumber[1] = $this->convertNumber($splitNumber[1]);
}

if (!empty($splitNumber[1])) {
$splitNumber[1] .= ' ' . strtoupper($cents);
$splitNumber[1] .= ' ' . mb_strtoupper($cents, 'UTF-8');
}

return $this->glue($splitNumber);
}

/**
* Formatea y convierte un número a letras en formato libre
*
* @param integer|float $number
* @param integer $decimals
* @param string $whole_str
* @param string $decimal_str
* @return string
*/
public function toString($number, $decimals = 2, $whole_str = '', $decimal_str = '')
{
return $this->toMoney($number, $decimals, $whole_str, $decimal_str);
}

/**
* Formatea y convierte un número a letras en formato facturación electrónica
*
Expand All @@ -152,7 +166,7 @@ public function toInvoice($number, $decimals = 2, $currency = '')
$splitNumber[1] = '00/100 ';
}

return $this->glue($splitNumber) . strtoupper($currency);
return $this->glue($splitNumber) . mb_strtoupper($currency, 'UTF-8');
}

/**
Expand Down Expand Up @@ -192,7 +206,7 @@ private function wholeNumber($number)
*/
private function glue($splitNumber)
{
return implode(' ' . strtoupper($this->conector) . ' ', array_filter($splitNumber));
return implode(' ' . mb_strtoupper($this->conector, 'UTF-8') . ' ', array_filter($splitNumber));
}

/**
Expand Down
6 changes: 6 additions & 0 deletions tests/NumeroALetrasTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,10 @@ public function testConector()
$formatter->conector = 'Y';
$this->assertEquals('DIEZ PESOS Y DIEZ CENTAVOS', $formatter->toMoney(10.10, 2, 'pesos', 'centavos'));
}

public function testToString()
{
$formatter = new NumeroALetras;
$this->assertEquals('CINCO AÑOS CON DOS MESES', $formatter->toString(5.2, 1, 'años', 'meses'));
}
}

0 comments on commit d62d545

Please sign in to comment.