StaticCatalogs::catUsoCFDI()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 31
Code Lines 27

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 29
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 27
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 31
ccs 29
cts 29
cp 1
crap 1
rs 9.488
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 1
            '001' => 'ISR',
13 1
            '002' => 'IVA',
14 1
            '003' => 'IEPS',
15 1
        ];
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 2
            'G01' => 'Adquisición de mercancías',
35 2
            'G02' => 'Devoluciones, descuentos o bonificaciones',
36 2
            'G03' => 'Gastos en general',
37 2
            'I01' => 'Construcciones',
38 2
            'I02' => 'Mobiliario y equipo de oficina por inversiones',
39 2
            'I03' => 'Equipo de transporte',
40 2
            'I04' => 'Equipo de computo y accesorios',
41 2
            'I05' => 'Dados, troqueles, moldes, matrices y herramental',
42 2
            'I06' => 'Comunicaciones telefónicas',
43 2
            'I07' => 'Comunicaciones satelitales',
44 2
            'I08' => 'Otra maquinaria y equipo',
45 2
            'D01' => 'Honorarios médicos, dentales y gastos hospitalarios',
46 2
            'D02' => 'Gastos médicos por incapacidad o discapacidad',
47 2
            'D03' => 'Gastos funerales',
48 2
            'D04' => 'Donativos',
49 2
            'D05' => 'Intereses reales efectivamente pagados por créditos hipotecarios (casa habitación)',
50 2
            'D06' => 'Aportaciones voluntarias al SAR',
51 2
            'D07' => 'Primas por seguros de gastos médicos',
52 2
            'D08' => 'Gastos de transportación escolar obligatoria',
53 2
            'D09' => 'Depósitos en cuentas para el ahorro, primas que tengan como base planes de pensiones',
54 2
            'D10' => 'Pagos por servicios educativos (colegiaturas)',
55 2
            'P01' => 'Por definir',
56 2
            'S01' => 'Sin efectos fiscales',
57 2
            'CP0' => 'Pagos',
58 2
            'CN0' => 'Nómina',
59 2
        ];
60
61 2
        return $this->getValueOfCatalog($catalog, $value);
62
    }
63
64 2
    public function catRegimenFiscal(string $value): string
65
    {
66 2
        $catalog = [
67 2
            '601' => 'General de Ley Personas Morales',
68 2
            '603' => 'Personas Morales con Fines no Lucrativos',
69 2
            '605' => 'Sueldos y Salarios e Ingresos Asimilados a Salarios',
70 2
            '606' => 'Arrendamiento',
71 2
            '607' => 'Régimen de Enajenación o Adquisición de Bienes',
72 2
            '608' => 'Demás ingresos',
73 2
            '609' => 'Consolidación',
74 2
            '610' => 'Residentes en el Extranjero sin Establecimiento Permanente en México',
75 2
            '611' => 'Ingresos por Dividendos (socios y accionistas)',
76 2
            '612' => 'Personas Físicas con Actividades Empresariales y Profesionales',
77 2
            '614' => 'Ingresos por intereses',
78 2
            '615' => 'Régimen de los ingresos por obtención de premios',
79 2
            '616' => 'Sin obligaciones fiscales',
80 2
            '620' => 'Sociedades Cooperativas de Producción que optan por diferir sus ingresos',
81 2
            '621' => 'Incorporación Fiscal',
82 2
            '622' => 'Actividades Agrícolas, Ganaderas, Silvícolas y Pesqueras',
83 2
            '623' => 'Opcional para Grupos de Sociedades',
84 2
            '624' => 'Coordinados',
85 2
            '625' => 'Régimen de las Actividades Empresariales con ingresos a través de Plataformas Tecnológicas',
86 2
            '626' => 'Régimen Simplificado de Confianza',
87 2
            '628' => 'Hidrocarburos',
88 2
            '629' => 'De los Regímenes Fiscales Preferentes y de las Empresas Multinacionales',
89 2
            '630' => 'Enajenación de acciones en bolsa de valores',
90 2
        ];
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 1
            '01' => 'No aplica',
155 1
            '02' => 'Definitiva con clave A1',
156 1
            '03' => 'Temporal',
157 1
            '04' => 'Definitiva con clave distinta a A1 o cuando no existe enajenación en términos del CFF',
158 1
        ];
159
160 1
        return $this->getValueOfCatalog($catalog, $value);
161
    }
162
163 2
    public function catMetodoPago(string $value): string
164
    {
165 2
        $catalog = [
166 2
            'PUE' => 'Pago en una sola exhibición',
167 2
            'PPD' => 'Pago en parcialidades o diferido',
168 2
        ];
169
170 2
        return $this->getValueOfCatalog($catalog, $value);
171
    }
172
173 2
    public function catFormaPago(string $value): string
174
    {
175 2
        $catalog = [
176 2
            '01' => 'Efectivo',
177 2
            '02' => 'Cheque nominativo',
178 2
            '03' => 'Transferencia electrónica de fondos',
179 2
            '04' => 'Tarjeta de crédito',
180 2
            '05' => 'Monedero electrónico',
181 2
            '06' => 'Dinero electrónico',
182 2
            '08' => 'Vales de despensa',
183 2
            '12' => 'Dación en pago',
184 2
            '13' => 'Pago por subrogación',
185 2
            '14' => 'Pago por consignación',
186 2
            '15' => 'Condonación',
187 2
            '17' => 'Compensación',
188 2
            '23' => 'Novación',
189 2
            '24' => 'Confusión',
190 2
            '25' => 'Remisión de deuda',
191 2
            '26' => 'Prescripción o caducidad',
192 2
            '27' => 'A satisfacción del acreedor',
193 2
            '28' => 'Tarjeta de débito',
194 2
            '29' => 'Tarjeta de servicios',
195 2
            '30' => 'Aplicación de anticipos',
196 2
            '31' => 'Intermediario pagos',
197 2
            '99' => 'Por definir',
198 2
        ];
199
200 2
        return $this->getValueOfCatalog($catalog, $value);
201
    }
202
203 2
    public function catTipoComprobante(string $value): string
204
    {
205 2
        $catalog = [
206 2
            'I' => 'Ingreso',
207 2
            'E' => 'Egreso',
208 2
            'T' => 'Traslado',
209 2
            'N' => 'Nómina',
210 2
            'P' => 'Pago',
211 2
        ];
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