Test Failed
Push — master ( 52345e...14a46a )
by Esteban De La Fuente
04:31
created

AbstractNormalizerStrategy::round()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 8
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 3
nc 4
nop 3
dl 0
loc 8
ccs 4
cts 4
cp 1
crap 3
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\Abstract;
26
27
use Derafu\Lib\Core\Foundation\Abstract\AbstractStrategy;
28
use libredte\lib\Core\Package\Billing\Component\Document\Contract\DocumentBagInterface;
29
use libredte\lib\Core\Package\Billing\Component\Document\Contract\NormalizerStrategyInterface;
30
use libredte\lib\Core\Package\Billing\Component\Document\Worker\Normalizer\Job\NormalizeDataPostDocumentNormalizationJob;
31
use libredte\lib\Core\Package\Billing\Component\Document\Worker\Normalizer\Job\NormalizeDataPreDocumentNormalizationJob;
32
33
/**
34
 * Clase abstracta (base) para las estrategias de normalización de
35
 * documentos tributarios.
36
 */
37
abstract class AbstractNormalizerStrategy extends AbstractStrategy implements NormalizerStrategyInterface
38
{
39
    protected NormalizeDataPreDocumentNormalizationJob $normalizeDataPreDocumentNormalizationJob;
40
41
    protected NormalizeDataPostDocumentNormalizationJob $normalizeDataPostDocumentNormalizationJob;
42
43
    /**
44
     * {@inheritdoc}
45
     */
46 58
    public function normalize(DocumentBagInterface $bag): array
47
    {
48
        // Asignar inicialmente como datos normalizados los datos parseados.
49
        // Esto se hace porque son la base de los datos para normalizar y se van
50
        // normalizando en la misma variable de la bolsa durante todo el
51
        // proceso.
52 58
        $bag->setNormalizedData($bag->getParsedData());
53
54
        // Aplicar normalización inicial del DTE.
55 58
        $this->normalizeDataPreDocumentNormalizationJob->execute($bag);
56
57
        // Aplicar normalización del tipo de DTE.
58 58
        $this->normalizeDocument($bag);
59
60
        // Aplicar normalización final del DTE.
61 58
        $this->normalizeDataPostDocumentNormalizationJob->execute($bag);
62
63
        // Entregar los datos normalizados.
64 58
        return $bag->getNormalizedData();
0 ignored issues
show
Bug Best Practice introduced by
The expression return $bag->getNormalizedData() could return the type null which is incompatible with the type-hinted return array. Consider adding an additional type-check to rule them out.
Loading history...
65
    }
66
67
    /**
68
     * Normalización personalizada de cada estrategia.
69
     *
70
     * @param DocumentBagInterface $bag
71
     * @return void
72
     */
73
    abstract protected function normalizeDocument(DocumentBagInterface $bag): void;
74
}
75