Completed
Push — master ( 9654f6...5e67fa )
by Roberto
14:40
created

src/Factory/MovProprietario.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
namespace NFePHP\eFinanc\Factory;
3
4
/**
5
 * Classe construtora do evento de Movimento Proprietario
6
 *
7
 * @category  NFePHP
8
 * @package   NFePHP\eFinanc\Factory\MovProprietario
9
 * @copyright Copyright (c) 2016
10
 * @license   http://www.gnu.org/licenses/lesser.html LGPL v3
11
 * @author    Roberto L. Machado <linux.rlm at gmail dot com>
12
 * @link      http://github.com/nfephp-org/sped-efinanceira for the canonical source repository
13
 */
14
15
use NFePHP\eFinanc\Factory\MovDeclarado;
16
17
class MovProprietario extends MovDeclarado
18
{
19
    /**
20
     * Conjunto de proprietários
21
     * Array de objetos Dom
22
     *
23
     * @var array
24
     */
25
    protected $aProp;
26
    /**
27
     * Conjunto de NIF dos proprietários
28
     * Array de objetos Dom
29
     *
30
     * @var array
31
     */
32
    protected $aProprietarioNIF = array();
33
    /**
34
     * Conjunto de Peises de residencia do proprietario
35
     * Array de objetos Dom
36
     *
37
     * @var array
38
     */
39
    protected $aProprietarioPaisResid = array();
40
    /**
41
     * Conjunto de Peises de Nacionalidade do proprietario
42
     * Array de objetos Dom
43
     *
44
     * @var array
45
     */
46
    protected $aProprietarioPaisNac = array();
47
    /**
48
     * Conjunto de Peises de reportavies do proprietario
49
     * Array de objetos Dom
50
     *
51
     * @var array
52
     */
53
    protected $aProprietarioReportavel = array();
54
    
55
    /**
56
     * Faz a premontagem dos dados dos proprietários
57
     *
58
     * @return none
59
     */
60 6
    protected function premonta()
61
    {
62 6
        parent::premonta();
63 6
        if (empty($this->aProp)) {
64
            return;
65
        }
66
        //listar os numeros dos proprietários registrados
67 6
        $aPr = array_keys($this->aProp);
68 6
        foreach ($aPr as $num) {
69
            //verificar se existem NIF dos proprietarios
70 6
            if (array_key_exists($num, $this->aProprietarioNIF)) {
71 6
                foreach ($this->aProprietarioNIF[$num] as $nif) {
72
                    //adicionar os NIF do proprietário
73 6
                    $this->dom->appChildBefore($this->aProp[$num], $nif, 'Nome');
74 4
                }
75 4
            }
76
            //verificar se existem dados de residencia
77 6
            if (array_key_exists($num, $this->aProprietarioPaisResid)) {
78 6
                foreach ($this->aProprietarioPaisResid[$num] as $pais) {
79 6
                    $this->dom->appChild($this->aProp[$num], $pais);
80 4
                }
81 4
            }
82
            //verificar se existem dados de nacionalidade
83 6
            if (array_key_exists($num, $this->aProprietarioPaisNac)) {
84 6
                foreach ($this->aProprietarioPaisNac[$num] as $pais) {
85 6
                    $this->dom->appChild($this->aProp[$num], $pais);
86 4
                }
87 4
            }
88
            //verificar se existem dados de reportaveis
89 6
            if (array_key_exists($num, $this->aProprietarioReportavel)) {
90 6
                foreach ($this->aProprietarioReportavel[$num] as $pais) {
91 6
                    $this->dom->appChild($this->aProp[$num], $pais);
92 4
                }
93 4
            }
94 4
        }
95 6
        foreach ($this->aProp as $proprietario) {
96 6
            $this->dom->appChild($this->evt, $proprietario);
97 4
        }
98 6
    }
99
100
    /**
101
     * Cria as tags NIF do proprietario
102
     * podem existir ZERO ou mais
103
     *
104
     * @param  string $nIProprietario identificação do proprietário
105
     * @param  string $numeroNIF
106
     * @param  string $paisEmissao
107
     * @return Dom tag NIF
108
     */
109 6
    public function proprietarioNIF($nIProprietario, $numeroNIF, $paisEmissao)
110
    {
111 6
        $nif = $this->zNIF($numeroNIF, $paisEmissao);
112 6
        $this->aProprietarioNIF[$nIProprietario][] = $nif;
113 6
        return $nif;
114
    }
115
 
116
    /**
117
     * Crias as tags PaisResid do declarado
118
     * podem existir ZERO ou mais
119
     *
120
     * @param  string $nIProprietario identificação do proprietário
121
     * @param  string $pais
122
     * @return Dom tag PaisResid
123
     */
124 6
    public function proprietarioPaisResid($nIProprietario, $pais)
125
    {
126 6
        $tpais = $this->zPais($pais, 'PaisResid');
127 6
        $this->aProprietarioPaisResid[$nIProprietario][] = $tpais;
128 6
        return $tpais;
129
    }
130
    
131
    /**
132
     * Crias as tags PaisNacionalidade do declarado
133
     * podem existir ZERO ou mais
134
     *
135
     * @param  string $nIProprietario identificação do proprietário
136
     * @param  string $pais
137
     * @return Dom tag PaisResid
138
     */
139 6
    public function proprietarioPaisNac($nIProprietario, $pais)
140
    {
141 6
        $tpais = $this->zPais($pais, 'PaisNacionalidade');
142 6
        $this->aProprietarioPaisNac[$nIProprietario][] = $tpais;
143 6
        return $tpais;
144
    }
145
   
146
    /**
147
     * Cria o conjunto de paises reportaveis para o proprietario
148
     *
149
     * @param  string $nIProprietario identificação do proprietário
150
     * @param  string $pais
151
     * @return Dom tag Reportavel
152
     */
153 6
    public function proprietarioReportavel($nIProprietario, $pais)
154
    {
155 6
        $tpais = $this->zPais($pais, 'Reportavel');
156 6
        $this->aProprietarioReportavel[$nIProprietario][] = $tpais;
157 6
        return $tpais;
158
    }
159
    
160
    /**
161
     * Cria o conjunto de tag de proprietarios
162
     *
163
     * @param  string $tpNI
164
     * @param  string $nIProprietario
165
     * @param  string $nome
166
     * @param  string $dataNasc
167
     * @param  string $endereco
168
     * @param  string $pais
169
     * @return Dom tag proprietario
170
     */
171 6
    public function proprietario(
172
        $tpNI,
173
        $nIProprietario,
174
        $nome,
175
        $dataNasc,
176
        $endereco,
177
        $pais
178
    ) {
179 6
        $identificador = 'tag Proprietarios ';
180 6
        $proprietario = $this->dom->createElement("Proprietarios");
181 6
        $this->dom->addChild(
182 4
            $proprietario,
183 6
            "tpNI",
184 4
            $tpNI,
185 6
            true,
186 2
            $identificador . "tipo de NI "
187 4
        );
188 6
        $this->dom->addChild(
189 4
            $proprietario,
190 6
            "NIProprietario",
191 4
            $nIProprietario,
192 6
            true,
193 2
            $identificador . "NI do proprietário"
194 4
        );
195 6
        $this->dom->addChild(
196 4
            $proprietario,
197 6
            "Nome",
198 4
            $nome,
199 6
            true,
200 2
            $identificador . "Nome do Proprietário"
201 4
        );
202 6
        $this->dom->addChild(
203 4
            $proprietario,
204 6
            "EnderecoLivre",
205 4
            $endereco,
206 6
            false,
207 2
            $identificador . "Endereco Livre do Proprietario"
208 4
        );
209 6
        $gpais = $this->dom->createElement("PaisEndereco");
210 6
        $this->dom->addChild(
211 4
            $gpais,
212 6
            "Pais",
213 4
            $pais,
214 6
            true,
215 2
            $identificador . "Pais Endereco do Declarado"
216 4
        );
217 6
        $this->dom->appChild($proprietario, $gpais);
218 6
        $this->dom->addChild(
219 4
            $proprietario,
0 ignored issues
show
$proprietario of type object<DOMNode> is not a sub-type of object<DOMElement>. It seems like you assume a child class of the class DOMNode to be always present.

This check looks for parameters that are defined as one type in their type hint or doc comment but seem to be used as a narrower type, i.e an implementation of an interface or a subclass.

Consider changing the type of the parameter or doing an instanceof check before assuming your parameter is of the expected type.

Loading history...
220 6
            "DataNasc",
221 4
            $dataNasc,
222 6
            false,
223 2
            $identificador . "Nome do Proprietário"
224 4
        );
225 6
        $this->aProp[$nIProprietario] = $proprietario;
226 6
        return $proprietario;
227
    }
228
}
229