Passed
Push — master ( 786c89...390fbf )
by Carlos C
02:27
created

StaticCatalogs   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 217
Duplicated Lines 0 %

Test Coverage

Coverage 64.85%

Importance

Changes 0
Metric Value
eloc 145
dl 0
loc 217
ccs 24
cts 37
cp 0.6485
rs 10
c 0
b 0
f 0
wmc 13

12 Methods

Rating   Name   Duplication   Size   Complexity  
A getValueOfCatalog() 0 7 2
A catImpuesto() 0 9 1
A catRegimenFiscal() 0 29 1
A catMeses() 0 24 1
A catObjetoImp() 0 9 1
A catExportacion() 0 10 1
A catTipoComprobante() 0 11 1
A catTipoRelacion() 0 15 1
A catFormaPago() 0 28 1
A catUsoCFDI() 0 31 1
A catPeriodicidad() 0 11 1
A catMetodoPago() 0 8 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpCfdi\CfdiToPdf\Catalogs;
6
7
final class StaticCatalogs implements CatalogsInterface
8
{
9 1
    public function catImpuesto(string $value): string
10
    {
11 1
        $catalog = [
12
            '001' => 'ISR',
13
            '002' => 'IVA',
14
            '003' => 'IEPS',
15
        ];
16
17 1
        return $this->getValueOfCatalog($catalog, $value);
18
    }
19
20
    public function catObjetoImp(string $value): string
21
    {
22
        $catalog = [
23
            '01' => 'No objeto de impuesto',
24
            '02' => 'Sí objeto de impuesto',
25
            '03' => 'Sí objeto del impuesto y no obligado al desglose',
26
        ];
27
28
        return $this->getValueOfCatalog($catalog, $value);
29
    }
30
31 2
    public function catUsoCFDI(string $value): string
32
    {
33 2
        $catalog = [
34
            'G01' => 'Adquisición de mercancías',
35
            'G02' => 'Devoluciones, descuentos o bonificaciones',
36
            'G03' => 'Gastos en general',
37
            'I01' => 'Construcciones',
38
            'I02' => 'Mobiliario y equipo de oficina por inversiones',
39
            'I03' => 'Equipo de transporte',
40
            'I04' => 'Equipo de computo y accesorios',
41
            'I05' => 'Dados, troqueles, moldes, matrices y herramental',
42
            'I06' => 'Comunicaciones telefónicas',
43
            'I07' => 'Comunicaciones satelitales',
44
            'I08' => 'Otra maquinaria y equipo',
45
            'D01' => 'Honorarios médicos, dentales y gastos hospitalarios',
46
            'D02' => 'Gastos médicos por incapacidad o discapacidad',
47
            'D03' => 'Gastos funerales',
48
            'D04' => 'Donativos',
49
            'D05' => 'Intereses reales efectivamente pagados por créditos hipotecarios (casa habitación)',
50
            'D06' => 'Aportaciones voluntarias al SAR',
51
            'D07' => 'Primas por seguros de gastos médicos',
52
            'D08' => 'Gastos de transportación escolar obligatoria',
53
            'D09' => 'Depósitos en cuentas para el ahorro, primas que tengan como base planes de pensiones',
54
            'D10' => 'Pagos por servicios educativos (colegiaturas)',
55
            'P01' => 'Por definir',
56
            'S01' => 'Sin efectos fiscales',
57
            'CP0' => 'Pagos',
58
            'CN0' => 'Nómina',
59
        ];
60
61 2
        return $this->getValueOfCatalog($catalog, $value);
62
    }
63
64 2
    public function catRegimenFiscal(string $value): string
65
    {
66 2
        $catalog = [
67
            '601' => 'General de Ley Personas Morales',
68
            '603' => 'Personas Morales con Fines no Lucrativos',
69
            '605' => 'Sueldos y Salarios e Ingresos Asimilados a Salarios',
70
            '606' => 'Arrendamiento',
71
            '607' => 'Régimen de Enajenación o Adquisición de Bienes',
72
            '608' => 'Demás ingresos',
73
            '609' => 'Consolidación',
74
            '610' => 'Residentes en el Extranjero sin Establecimiento Permanente en México',
75
            '611' => 'Ingresos por Dividendos (socios y accionistas)',
76
            '612' => 'Personas Físicas con Actividades Empresariales y Profesionales',
77
            '614' => 'Ingresos por intereses',
78
            '615' => 'Régimen de los ingresos por obtención de premios',
79
            '616' => 'Sin obligaciones fiscales',
80
            '620' => 'Sociedades Cooperativas de Producción que optan por diferir sus ingresos',
81
            '621' => 'Incorporación Fiscal',
82
            '622' => 'Actividades Agrícolas, Ganaderas, Silvícolas y Pesqueras',
83
            '623' => 'Opcional para Grupos de Sociedades',
84
            '624' => 'Coordinados',
85
            '625' => 'Régimen de las Actividades Empresariales con ingresos a través de Plataformas Tecnológicas',
86
            '626' => 'Régimen Simplificado de Confianza',
87
            '628' => 'Hidrocarburos',
88
            '629' => 'De los Regímenes Fiscales Preferentes y de las Empresas Multinacionales',
89
            '630' => 'Enajenación de acciones en bolsa de valores',
90
        ];
91
92 2
        return $this->getValueOfCatalog($catalog, $value);
93
    }
94
95
    public function catTipoRelacion(string $value): string
96
    {
97
        $catalog = [
98
            '01' => 'Nota de crédito de los documentos relacionados',
99
            '02' => 'Nota de débito de los documentos relacionados',
100
            '03' => 'Devolución de mercancía sobre facturas o traslados previos',
101
            '04' => 'Sustitución de los CFDI previos',
102
            '05' => 'Traslados de mercancías facturados previamente',
103
            '06' => 'Factura generada por los traslados previos',
104
            '07' => 'CFDI por aplicación de anticipo',
105
            '08' => 'Factura generada por pagos en parcialidades',
106
            '09' => 'Factura generada por pagos diferidos',
107
        ];
108
109
        return $this->getValueOfCatalog($catalog, $value);
110
    }
111
112
    public function catMeses(string $value): string
113
    {
114
        $catalog = [
115
            '01' => 'Enero',
116
            '02' => 'Febrero',
117
            '03' => 'Marzo',
118
            '04' => 'Abril',
119
            '05' => 'Mayo',
120
            '06' => 'Junio',
121
            '07' => 'Julio',
122
            '08' => 'Agosto',
123
            '09' => 'Septiembre',
124
            '10' => 'Octubre',
125
            '11' => 'Noviembre',
126
            '12' => 'Diciembre',
127
            '13' => 'Enero-Febrero',
128
            '14' => 'Marzo-Abril',
129
            '15' => 'Mayo-Junio',
130
            '16' => 'Julio-Agosto',
131
            '17' => 'Septiembre-Octubre',
132
            '18' => 'Noviembre-Diciembre',
133
        ];
134
135
        return $this->getValueOfCatalog($catalog, $value);
136
    }
137
138
    public function catPeriodicidad(string $value): string
139
    {
140
        $catalog = [
141
            '01' => 'Diario',
142
            '02' => 'Semanal',
143
            '03' => 'Quincenal',
144
            '04' => 'Mensual',
145
            '05' => 'Bimestral',
146
        ];
147
148
        return $this->getValueOfCatalog($catalog, $value);
149
    }
150
151 1
    public function catExportacion(string $value): string
152
    {
153 1
        $catalog = [
154
            '01' => 'No aplica',
155
            '02' => 'Definitiva con clave A1',
156
            '03' => 'Temporal',
157
            '04' => 'Definitiva con clave distinta a A1 o cuando no existe enajenación en términos del CFF',
158
        ];
159
160 1
        return $this->getValueOfCatalog($catalog, $value);
161
    }
162
163 2
    public function catMetodoPago(string $value): string
164
    {
165 2
        $catalog = [
166
            'PUE' => 'Pago en una sola exhibición',
167
            'PPD' => 'Pago en parcialidades o diferido',
168
        ];
169
170 2
        return $this->getValueOfCatalog($catalog, $value);
171
    }
172
173 2
    public function catFormaPago(string $value): string
174
    {
175 2
        $catalog = [
176
            '01' => 'Efectivo',
177
            '02' => 'Cheque nominativo',
178
            '03' => 'Transferencia electrónica de fondos',
179
            '04' => 'Tarjeta de crédito',
180
            '05' => 'Monedero electrónico',
181
            '06' => 'Dinero electrónico',
182
            '08' => 'Vales de despensa',
183
            '12' => 'Dación en pago',
184
            '13' => 'Pago por subrogación',
185
            '14' => 'Pago por consignación',
186
            '15' => 'Condonación',
187
            '17' => 'Compensación',
188
            '23' => 'Novación',
189
            '24' => 'Confusión',
190
            '25' => 'Remisión de deuda',
191
            '26' => 'Prescripción o caducidad',
192
            '27' => 'A satisfacción del acreedor',
193
            '28' => 'Tarjeta de débito',
194
            '29' => 'Tarjeta de servicios',
195
            '30' => 'Aplicación de anticipos',
196
            '31' => 'Intermediario pagos',
197
            '99' => 'Por definir',
198
        ];
199
200 2
        return $this->getValueOfCatalog($catalog, $value);
201
    }
202
203 2
    public function catTipoComprobante(string $value): string
204
    {
205 2
        $catalog = [
206
            'I' => 'Ingreso',
207
            'E' => 'Egreso',
208
            'T' => 'Traslado',
209
            'N' => 'Nómina',
210
            'P' => 'Pago',
211
        ];
212
213 2
        return $this->getValueOfCatalog($catalog, $value);
214
    }
215
216
    /** @param string[] $catalog */
217 2
    private function getValueOfCatalog(array $catalog, string $value): string
218
    {
219 2
        if (isset($catalog[$value])) {
220 2
            return $value . ' - ' . $catalog[$value];
221
        }
222
223
        return $value;
224
    }
225
}
226