Test Failed
Push — master ( 0741dd...48ec12 )
by Esteban De La Fuente
08:16 queued 02:11
created

Moneda::getSimbolo()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * LibreDTE: Biblioteca PHP (Núcleo).
7
 * Copyright (C) LibreDTE <https://www.libredte.cl>
8
 *
9
 * Este programa es software libre: usted puede redistribuirlo y/o modificarlo
10
 * bajo los términos de la Licencia Pública General Affero de GNU publicada por
11
 * la Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o
12
 * (a su elección) cualquier versión posterior de la misma.
13
 *
14
 * Este programa se distribuye con la esperanza de que sea útil, pero SIN
15
 * GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD
16
 * PARA UN PROPÓSITO DETERMINADO. Consulte los detalles de la Licencia Pública
17
 * General Affero de GNU para obtener una información más detallada.
18
 *
19
 * Debería haber recibido una copia de la Licencia Pública General Affero de
20
 * GNU junto a este programa.
21
 *
22
 * En caso contrario, consulte <http://www.gnu.org/licenses/agpl.html>.
23
 */
24
25
namespace libredte\lib\Core\Package\Billing\Component\Document\Entity;
26
27
/**
28
 * Monedas reconocidas en la aplicación.
29
 */
30
enum Moneda: string
31
{
32
    /**
33
     * Pesos chilenos.
34
     */
35
    case CLP = 'CLP';
36
37
    /**
38
     * Unidad de Fomento de Chile (UF).
39
     */
40
    case CLF = 'CLF';
41
42
    /**
43
     * Unidad Tributaria Mensual de Chile.
44
     */
45
    case UTM = 'UTM';
46
47
    /**
48
     * Unidad Tributaria Anual de Chile.
49
     */
50
    case UTA = 'UTA';
51
52
    /**
53
     * Dólar de Estados Unidos.
54
     */
55
    case USD = 'USD';
56
57
    /**
58
     * Euro.
59
     */
60
    case EUR = 'EUR';
61
62
    /**
63
     * I love Bitcoin <3
64
     */
65
    case BTC = 'BTC';
66
67
    /**
68
     * Peso argentino.
69
     */
70
    case ARS = 'ARS';
71
72
    /**
73
     * Libra esterlina.
74
     */
75
    case GBP = 'GBP';
76
77
    /**
78
     * Corona sueca.
79
     */
80
    case SEK = 'SEK';
81
82
    /**
83
     * Dólar de Hong Kong.
84
     */
85
    case HKD = 'HKD';
86
87
    /**
88
     * Rand sudafricano.
89
     */
90
    case ZAR = 'ZAR';
91
92
    /**
93
     * Peso colombiano.
94
     */
95
    case COP = 'COP';
96
97
    /**
98
     * Peso mexicano.
99
     */
100
    case MXN = 'MXN';
101
102
    /**
103
     * Bolívar venezolano.
104
     */
105
    case VES = 'VES';
106
107
    /**
108
     * Dólar de Singapur.
109
     */
110
    case SGD = 'SGD';
111
112
    /**
113
     * Rupia india.
114
     */
115
    case INR = 'INR';
116
117
    /**
118
     * Nuevo dólar taiwanés.
119
     */
120
    case TWD = 'TWD';
121
122
    /**
123
     * Dirham de Emiratos Árabes Unidos.
124
     */
125
    case AED = 'AED';
126
127
    /**
128
     * Won surcoreano.
129
     */
130
    case KRW = 'KRW';
131
132
    /**
133
     * Zloty polaco.
134
     */
135
    case PLN = 'PLN';
136
137
    /**
138
     * Corona checa.
139
     */
140
    case CZK = 'CZK';
141
142
    /**
143
     * Forint húngaro.
144
     */
145
    case HUF = 'HUF';
146
147
    /**
148
     * Baht tailandés.
149
     */
150
    case THB = 'THB';
151
152
    /**
153
     * Lira turca.
154
     */
155
    case TRY = 'TRY';
156
157
    /**
158
     * Ringgit malayo.
159
     */
160
    case MYR = 'MYR';
161
162
    /**
163
     * Rublo ruso.
164
     */
165
    case RUB = 'RUB';
166
167
    /**
168
     * Rupia indonesia.
169
     */
170
    case IDR = 'IDR';
171
172
    /**
173
     * Grivna ucraniana.
174
     */
175
    case UAH = 'UAH';
176
177
    /**
178
     * Shekel israelí.
179
     */
180
    case ILS = 'ILS';
181
182
    /**
183
     * Peso filipino.
184
     */
185
    case PHP = 'PHP';
186
187
    /**
188
     * Riyal saudí.
189
     */
190
    case SAR = 'SAR';
191
192
    /**
193
     * Rupia pakistaní.
194
     */
195
    case PKR = 'PKR';
196
197
    /**
198
     * Dong vietnamita.
199
     */
200
    case VND = 'VND';
201
202
    /**
203
     * Libra egipcia.
204
     */
205
    case EGP = 'EGP';
206
207
    /**
208
     * Leu rumano.
209
     */
210
    case RON = 'RON';
211
212
    /**
213
     * Corona islandesa.
214
     */
215
    case ISK = 'ISK';
216
217
    /**
218
     * Rial iraní.
219
     */
220
    case IRR = 'IRR';
221
222
    /**
223
     * Colón costarricense.
224
     */
225
    case CRC = 'CRC';
226
227
    /**
228
     * Balboa panameño.
229
     */
230
    case PAB = 'PAB';
231
232
    /**
233
     * Guaraní paraguayo.
234
     */
235
    case PYG = 'PYG';
236
237
    /**
238
     * Sol peruano.
239
     */
240
    case PEN = 'PEN';
241
242
    /**
243
     * Peso uruguayo.
244
     */
245
    case UYU = 'UYU';
246
247
    /**
248
     * Dólar australiano.
249
     */
250
    case AUD = 'AUD';
251
252
    /**
253
     * Boliviano.
254
     */
255
    case BOB = 'BOB';
256
257
    /**
258
     * Yuan chino.
259
     */
260
    case CNY = 'CNY';
261
262
    /**
263
     * Real brasileño.
264
     */
265
    case BRL = 'BRL';
266
267
    /**
268
     * Corona danesa.
269
     */
270
    case DKK = 'DKK';
271
272
    /**
273
     * Dólar canadiense.
274
     */
275
    case CAD = 'CAD';
276
277
    /**
278
     * Yen japonés.
279
     */
280
    case JPY = 'JPY';
281
282
    /**
283
     * Franco suizo.
284
     */
285
    case CHF = 'CHF';
286
287
    /**
288
     * Corona noruega.
289
     */
290
    case NOK = 'NOK';
291
292
    /**
293
     * Dólar neozelandés.
294
     */
295
    case NZD = 'NZD';
296
297
    /**
298
     * Monedas no especificadas.
299
     *
300
     * En estricto rigor ISO 4217 define XXX como "Sin divisa".
301
     */
302
    case XXX = 'XXX';
303
304
    /**
305
     * Cantidad de decimales que cada moneda puede tener.
306
     *
307
     * @var array
308
     */
309
    private const DECIMALES = [
310
        self::CLP->value => 0,
311
        self::CLF->value => 2,
312
        self::UTM->value => 0,
313
        self::UTA->value => 0,
314
        self::USD->value => 2,
315
        self::EUR->value => 2,
316
        self::BTC->value => 8,
317
        self::ARS->value => 2,
318
        self::GBP->value => 2,
319
        self::SEK->value => 2,
320
        self::HKD->value => 2,
321
        self::ZAR->value => 2,
322
        self::COP->value => 2,
323
        self::MXN->value => 2,
324
        self::VES->value => 2,
325
        self::SGD->value => 2,
326
        self::INR->value => 2,
327
        self::TWD->value => 2,
328
        self::AED->value => 2,
329
        self::KRW->value => 0,
330
        self::PLN->value => 2,
331
        self::CZK->value => 2,
332
        self::HUF->value => 2,
333
        self::THB->value => 2,
334
        self::TRY->value => 2,
335
        self::MYR->value => 2,
336
        self::RUB->value => 2,
337
        self::IDR->value => 2,
338
        self::UAH->value => 2,
339
        self::ILS->value => 2,
340
        self::PHP->value => 2,
341
        self::SAR->value => 2,
342
        self::PKR->value => 2,
343
        self::VND->value => 0,
344
        self::EGP->value => 2,
345
        self::RON->value => 2,
346
        self::ISK->value => 0,
347
        self::IRR->value => 2,
348
        self::CRC->value => 2,
349
        self::PAB->value => 2,
350
        self::PYG->value => 0,
351
        self::PEN->value => 2,
352
        self::UYU->value => 2,
353
        self::AUD->value => 2,
354
        self::BOB->value => 2,
355
        self::CNY->value => 2,
356
        self::BRL->value => 2,
357
        self::DKK->value => 2,
358
        self::CAD->value => 2,
359
        self::JPY->value => 0,
360
        self::CHF->value => 2,
361
        self::NOK->value => 2,
362
        self::NZD->value => 2,
363
        self::XXX->value => 2,
364
    ];
365
366
    /**
367
     * Símbolos de las monedas reconocidas.
368
     *
369
     * @var array
370
     */
371
    private const SIMBOLOS = [
372
        self::CLP->value => '$',
373
        self::CLF->value => 'UF',
374
        self::UTM->value => 'UTM',
375
        self::UTA->value => 'UTA',
376
        self::USD->value => '$',
377
        self::EUR->value => '€',
378
        self::BTC->value => '₿',
379
        self::ARS->value => '$',
380
        self::GBP->value => '£',
381
        self::SEK->value => 'kr',
382
        self::HKD->value => 'HK$',
383
        self::ZAR->value => 'R',
384
        self::COP->value => '$',
385
        self::MXN->value => '$',
386
        self::VES->value => 'Bs.',
387
        self::SGD->value => 'S$',
388
        self::INR->value => '₹',
389
        self::TWD->value => 'NT$',
390
        self::AED->value => 'د.إ',
391
        self::KRW->value => '₩',
392
        self::PLN->value => 'zł',
393
        self::CZK->value => 'Kč',
394
        self::HUF->value => 'Ft',
395
        self::THB->value => '฿',
396
        self::TRY->value => '₺',
397
        self::MYR->value => 'RM',
398
        self::RUB->value => '₽',
399
        self::IDR->value => 'Rp',
400
        self::UAH->value => '₴',
401
        self::ILS->value => '₪',
402
        self::PHP->value => '₱',
403
        self::SAR->value => '﷼',
404
        self::PKR->value => '₨',
405
        self::VND->value => '₫',
406
        self::EGP->value => '£',
407
        self::RON->value => 'lei',
408
        self::ISK->value => 'kr',
409
        self::IRR->value => '﷼',
410
        self::CRC->value => '₡',
411
        self::PAB->value => 'B/.',
412
        self::PYG->value => '₲',
413
        self::PEN->value => 'S/',
414
        self::UYU->value => '$U',
415
        self::AUD->value => 'A$',
416
        self::BOB->value => 'Bs.',
417
        self::CNY->value => '¥',
418
        self::BRL->value => 'R$',
419
        self::DKK->value => 'kr',
420
        self::CAD->value => 'C$',
421
        self::JPY->value => '¥',
422
        self::CHF->value => 'CHF',
423
        self::NOK->value => 'kr',
424
        self::NZD->value => 'NZ$',
425
        self::XXX->value => '',
426
    ];
427
428
    /**
429
     * Entrega la cantidad de decimales de la moneda.
430
     *
431
     * @return int
432
     */
433
    public function getDecimales(): int
434
    {
435
        return self::DECIMALES[$this->value];
0 ignored issues
show
Bug introduced by
The constant libredte\lib\Core\Packag...ntity\Moneda::DECIMALES was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
436
    }
437
438
    /**
439
     * Entrega el símbolo de la moneda.
440
     *
441
     * @return string
442
     */
443
    public function getSimbolo(): string
444
    {
445
        return self::SIMBOLOS[$this->value];
0 ignored issues
show
Bug introduced by
The constant libredte\lib\Core\Packag...Entity\Moneda::SIMBOLOS was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
446
    }
447
}
448