ReglasTasaCuota   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 33
c 1
b 0
f 0
dl 0
loc 51
ccs 41
cts 41
cp 1
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A checkHeaders() 0 29 3
A dataTable() 0 17 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpCfdi\SatCatalogosPopulate\Importers\Cfdi40\Injectors;
6
7
use PhpCfdi\SatCatalogosPopulate\AbstractCsvInjector;
8
use PhpCfdi\SatCatalogosPopulate\Database\BoolDataField;
9
use PhpCfdi\SatCatalogosPopulate\Database\DataFields;
10
use PhpCfdi\SatCatalogosPopulate\Database\DataTable;
11
use PhpCfdi\SatCatalogosPopulate\Database\DateDataField;
12
use PhpCfdi\SatCatalogosPopulate\Database\NumberFormatDataField;
13
use PhpCfdi\SatCatalogosPopulate\Database\TextDataField;
14
use PhpCfdi\SatCatalogosPopulate\InjectorInterface;
15
use PhpCfdi\SatCatalogosPopulate\Utils\CsvFile;
16
use RuntimeException;
17
18
use function PhpCfdi\SatCatalogosPopulate\Utils\array_rtrim;
19
20
class ReglasTasaCuota extends AbstractCsvInjector implements InjectorInterface
21
{
22 3
    public function checkHeaders(CsvFile $csv): void
23
    {
24 3
        $csv->move(3);
25 3
        $expectedLines = [
26 3
            [
27 3
                'Rango o Fijo',
28 3
                'c_TasaOCuota',
29 3
                '',
30 3
                'Impuesto',
31 3
                'Factor',
32 3
                'Traslado',
33 3
                'Retención',
34 3
                'Fecha inicio de vigencia',
35 3
                'Fecha fin de vigencia',
36 3
            ],
37 3
            [
38 3
                '',
39 3
                'Valor mínimo',
40 3
                'Valor máximo',
41 3
            ],
42 3
        ];
43
44 3
        foreach ($expectedLines as $expected) {
45 3
            $headers = array_rtrim($csv->readLine());
46
47 3
            if ($expected !== $headers) {
48 1
                throw new RuntimeException("The headers did not match on file {$this->sourceFile()}");
49
            }
50 2
            $csv->next();
51
        }
52
    }
53
54 14
    public function dataTable(): DataTable
55
    {
56 14
        return new DataTable(
57 14
            'cfdi_40_reglas_tasa_cuota',
58 14
            new DataFields([
59 14
                new TextDataField('tipo'),
60 14
                new NumberFormatDataField('minimo', 6),
61 14
                new NumberFormatDataField('valor', 6),
62 14
                new TextDataField('impuesto'),
63 14
                new TextDataField('factor'),
64 14
                new BoolDataField('traslado', ['Sí']),
65 14
                new BoolDataField('retencion', ['Sí']),
66 14
                new DateDataField('vigencia_desde'),
67 14
                new DateDataField('vigencia_hasta'),
68 14
            ]),
69 14
            [],
70 14
            true
71 14
        );
72
    }
73
}
74