AbstractContribuyenteFactory   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Test Coverage

Coverage 98.21%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 55
c 1
b 0
f 0
dl 0
loc 77
ccs 55
cts 56
cp 0.9821
rs 10
wmc 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B normalizeData() 0 68 10
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\TradingParties\Abstract;
26
27
use Derafu\L10n\Cl\Rut\Rut;
28
29
/**
30
 * Clase abstracta para las implementaciones de fábricas de contribuyentes,
31
 * emisores y receptores de documentos tributarios.
32
 */
33
abstract class AbstractContribuyenteFactory
34
{
35
    /**
36
     * Normaliza los datos del contribuyente que podrían venir en diferentes
37
     * índices.
38
     *
39
     * @param array $data
40
     * @return array
41
     */
42 53
    protected function normalizeData(array $data): array
43
    {
44 53
        $normalized = [];
45
46 53
        $normalized['rut'] = (
47 53
            $data['rut']
48 53
            ?? $data['RUTEmisor']
49 53
            ?? $data['RUTRecep']
50 53
            ?? null
51
        ) ?: '66666666-6';
52
53 53
        if (is_int($normalized['rut'])) {
54 49
            $normalized['rut'] = Rut::addDv($normalized['rut']);
55
        }
56
57 53
        $normalized['razon_social'] = (
58 53
            $data['razon_social']
59 53
            ?? $data['RznSoc']
60 53
            ?? $data['RznSocEmisor']
61 53
            ?? $data['RznSocRecep']
62 53
            ?? null
63 49
        ) ?: null;
64
65 53
        $normalized['giro'] = (
66 53
            $data['giro']
67 53
            ?? $data['GiroEmis']
68 53
            ?? $data['GiroEmisor']
69 53
            ?? $data['GiroRecep']
70 53
            ?? null
71 53
        ) ?: null;
72
73 53
        $normalized['actividad_economica'] = (
74 53
            (int) (
75 53
                $data['actividad_economica']
76 53
                ?? $data['Acteco']
77 53
                ?? 0
78 53
            )
79 53
        ) ?: null;
80
81 53
        $normalized['telefono'] = (
82 53
            $data['telefono']
83 53
            ?? $data['Telefono']
84 53
            ?? $data['Contacto']
85 53
            ?? null
86 53
        ) ?: null;
87
88 53
        $normalized['email'] = (
89 53
            $data['email']
90 53
            ?? $data['CorreoEmisor']
91 53
            ?? $data['CorreoRecep']
92 53
            ?? null
93 53
        ) ?: null;
94
95 53
        $normalized['direccion'] = (
96 53
            $data['direccion']
97 53
            ?? $data['DirOrigen']
98 53
            ?? $data['DirRecep']
99 53
            ?? null
100 53
        ) ?: null;
101
102 53
        $normalized['comuna'] = (
103 53
            $data['comuna']
104 53
            ?? $data['CmnaOrigen']
105 53
            ?? $data['CmnaRecep']
106 53
            ?? null
107 53
        ) ?: null;
108
109 53
        return $normalized;
110
    }
111
}
112