DumpOrigins::run()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 76
Code Lines 64

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 11
Bugs 2 Features 0
Metric Value
cc 1
eloc 64
c 11
b 2
f 0
nc 1
nop 0
dl 0
loc 76
ccs 0
cts 73
cp 0
crap 2
rs 8.7853

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpCfdi\SatCatalogosPopulate\Commands;
6
7
use PhpCfdi\SatCatalogosPopulate\Origins\ConstantOrigin;
8
use PhpCfdi\SatCatalogosPopulate\Origins\Origins;
9
use PhpCfdi\SatCatalogosPopulate\Origins\OriginsIO;
10
use PhpCfdi\SatCatalogosPopulate\Origins\ScrapingOrigin;
11
use Psr\Log\LoggerInterface;
12
13
final class DumpOrigins implements CommandInterface
14
{
15
    public function run(): int
16
    {
17
        $common = 'http://omawww.sat.gob.mx/tramitesyservicios/Paginas/documentos';
18
        $origins = new Origins([
19
            new ScrapingOrigin(
20
                'CFDI 3.3',
21
                'http://omawww.sat.gob.mx/tramitesyservicios/Paginas/anexo_20.htm',
22
                'catCFDI.xls',
23
                'Catálogos CFDI Versión 3.3*',
24
            ),
25
            new ScrapingOrigin(
26
                'CFDI 4.0',
27
                'http://omawww.sat.gob.mx/tramitesyservicios/Paginas/anexo_20.htm',
28
                'cfdi_40.xls',
29
                'Catálogos CFDI Versión 4.0*',
30
            ),
31
            new ScrapingOrigin(
32
                'RET 2.0',
33
                'http://omawww.sat.gob.mx/tramitesyservicios/Paginas/CFDI_retenciones.htm',
34
                'ret_20.xls',
35
                'Catálogos',
36
            ),
37
            new ConstantOrigin('Nóminas', "{$common}/catNomina.xls"),
38
            new ConstantOrigin('Nóminas - Estados', "{$common}/C_Estado.xls", null, 'nominas_estados.xls'),
39
            new ConstantOrigin('CCE 2.0 - Claves de pedimento', "{$common}/c_ClavePedimento20.xls"),
40
            new ConstantOrigin('CCE 2.0 - Colonias', "{$common}/c_Colonia20.xls"),
41
            new ConstantOrigin('CCE 2.0 - Entidades o estados', "{$common}/C_Estado20.xls"),
42
            new ScrapingOrigin(
43
                'CCE 2.0 - Fracciones arancelarias 2022-12-12',
44
                'http://omawww.sat.gob.mx/tramitesyservicios/Paginas/catalogos_emision_cfdi_complemento_ce.htm',
45
                'c_FraccionArancelaria_cce20_20221212.xls',
46
                linkText: '*Catálogo vigente a partir del 12 de diciembre de 2022*',
47
                linkPosition: 0,
48
            ),
49
            new ConstantOrigin('CCE 2.0 - Incoterms', "{$common}/c_INCOTERM20.xls"),
50
            new ConstantOrigin('CCE 2.0 - Localidades', "{$common}/c_Localidad20.xls"),
51
            new ConstantOrigin('CCE 2.0 - Motivo traslado', "{$common}/c_MotivoTraslado20.xls"),
52
            new ConstantOrigin('CCE 2.0 - Municipios', "{$common}/c_Municipio20.xls"),
53
            new ConstantOrigin('CCE 2.0 - Tipos de operaciones', "{$common}/c_TipoOperacion20.xls"),
54
            new ConstantOrigin('CCE 2.0 - Unidades de medida', "{$common}/c_UnidadAduana20.xls"),
55
            new ConstantOrigin('CCE 1.1 - Claves de pedimento', "{$common}/c_ClavePedimento.xls"),
56
            new ConstantOrigin('CCE 1.1 - Colonias', "{$common}/c_Colonia.xls"),
57
            new ConstantOrigin('CCE 1.1 - Entidades o estados', "{$common}/C_Estado.xls"),
58
            new ConstantOrigin(
59
                'CCE 1.1 - Fracciones arancelarias 2020',
60
                "{$common}/c_FraccionArancelaria.xls",
61
                destinationFilename: 'c_FraccionArancelaria_20170101.xls'
62
            ),
63
            new ScrapingOrigin(
64
                'CCE 1.1 - Fracciones arancelarias 20201228',
65
                'http://omawww.sat.gob.mx/tramitesyservicios/Paginas/catalogos_emision_cfdi_complemento_ce.htm',
66
                'c_FraccionArancelaria_20201228.xls',
67
                '*Catálogo vigente del 28 de diciembre de 2020 al 11 de diciembre de 2022*'
68
            ),
69
            new ScrapingOrigin(
70
                'CCE 1.1 - Fracciones arancelarias 20221212',
71
                'http://omawww.sat.gob.mx/tramitesyservicios/Paginas/catalogos_emision_cfdi_complemento_ce.htm',
72
                'c_FraccionArancelaria_20221212.xls',
73
                linkText: '*Catálogo vigente a partir del 12 de diciembre de 2022*',
74
                linkPosition: 1,
75
            ),
76
            new ConstantOrigin('CCE 1.1 - Incoterms', "{$common}/c_INCOTERM.xls"),
77
            new ConstantOrigin('CCE 1.1 - Localidades', "{$common}/c_Localidad.xls"),
78
            new ConstantOrigin('CCE 1.1 - Motivo traslado', "{$common}/c_MotivoTraslado.xls"),
79
            new ConstantOrigin('CCE 1.1 - Municipios', "{$common}/c_Municipio.xls"),
80
            new ConstantOrigin('CCE 1.1 - Tipos de operaciones', "{$common}/c_TipoOperacion.xls"),
81
            new ConstantOrigin('CCE 1.1 - Unidades de medida', "{$common}/c_UnidadAduana.xls"),
82
            new ConstantOrigin('REP', "{$common}/catPagos.xls"),
83
            new ConstantOrigin('CCP 2.0 - Carta Porte 2.0', "{$common}/CatalogosCartaPorte20.xls"),
84
            new ConstantOrigin('CCP 3.0 - Carta Porte 3.0', "{$common}/CatalogosCartaPorte30.xls"),
85
            new ConstantOrigin('CCP 3.1 - Carta Porte 3.1', "{$common}/CatalogosCartaPorte31.xls"),
86
        ]);
87
88
        echo (new OriginsIO())->originsToString($origins) . PHP_EOL;
89
90
        return 0;
91
    }
92
93
    public static function createFromArguments(array $arguments): self
94
    {
95
        return new self();
96
    }
97
98
    public static function help(string $commandName): string
99
    {
100
        return "Syntax: $commandName";
101
    }
102
103
    public function setLogger(LoggerInterface $logger): void
104
    {
105
        //
106
    }
107
}
108