Completed
Push — master ( 91ed1a...d45ba9 )
by Roberto
03:58
created

Response::zReadConsultaMDF()   B

Complexity

Conditions 4
Paths 3

Size

Total Lines 38
Code Lines 30

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 38
ccs 0
cts 32
cp 0
rs 8.5806
cc 4
eloc 30
nc 3
nop 1
crap 20
1
<?php
2
3
namespace NFePHP\MDFe\Auxiliar;
4
5
/**
6
 * Classe auxiliar com funções de DOM extendidas
7
 *
8
 * @category  NFePHP
9
 * @package   NFePHP\MDFe\Auxiliar\Response
10
 * @copyright Copyright (c) 2008-2015
11
 * @license   http://www.gnu.org/licenses/lesser.html LGPL v3
12
 * @author    Roberto L. Machado <linux.rlm at gmail dot com>
13
 * @link      http://github.com/nfephp-org/nfephp for the canonical source repository
14
 */
15
16
use NFePHP\Common\Dom\Dom;
17
18
class Response
19
{
20
    /**
21
     * readReturnSefaz
22
     * Trata o retorno da SEFAZ devolvendo o resultado em um array
23
     *
24
     * @param  string $method
25
     * @param  string $xmlResp
26
     * @param  mixed  $parametro
0 ignored issues
show
Bug introduced by
There is no parameter named $parametro. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
27
     * @return array
28
     */
29
    public static function readReturnSefaz($method, $xmlResp)
30
    {
31
        $dom = new Dom('1.0', 'utf-8');
32
        $dom->loadXMLString($xmlResp);
33
        //para cada $method tem um formato de retorno especifico
34
        switch ($method) {
35
            case 'MDFeRecepcao':
36
                return self::zReadRecepcaoLote($dom);
0 ignored issues
show
Documentation introduced by
$dom is of type object<NFePHP\Common\Dom\Dom>, but the function expects a object<NFePHP\MDFe\Auxiliar\DOMDocument>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
37
                break;
0 ignored issues
show
Unused Code introduced by
break is not strictly necessary here and could be removed.

The break statement is not necessary if it is preceded for example by a return statement:

switch ($x) {
    case 1:
        return 'foo';
        break; // This break is not necessary and can be left off.
}

If you would like to keep this construct to be consistent with other case statements, you can safely mark this issue as a false-positive.

Loading history...
38
            case 'MDFeRetRecepcao':
39
                return self::zReadRetRecepcao($dom);
0 ignored issues
show
Documentation introduced by
$dom is of type object<NFePHP\Common\Dom\Dom>, but the function expects a object<NFePHP\MDFe\Auxiliar\DOMDocument>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
40
                break;
0 ignored issues
show
Unused Code introduced by
break is not strictly necessary here and could be removed.

The break statement is not necessary if it is preceded for example by a return statement:

switch ($x) {
    case 1:
        return 'foo';
        break; // This break is not necessary and can be left off.
}

If you would like to keep this construct to be consistent with other case statements, you can safely mark this issue as a false-positive.

Loading history...
41
            case 'MDFeConsultaSituacao':
42
                return self::zReadConsultaMDF($dom);
0 ignored issues
show
Documentation introduced by
$dom is of type object<NFePHP\Common\Dom\Dom>, but the function expects a object<NFePHP\MDFe\Auxiliar\DOMDocument>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
43
                break;
0 ignored issues
show
Unused Code introduced by
break is not strictly necessary here and could be removed.

The break statement is not necessary if it is preceded for example by a return statement:

switch ($x) {
    case 1:
        return 'foo';
        break; // This break is not necessary and can be left off.
}

If you would like to keep this construct to be consistent with other case statements, you can safely mark this issue as a false-positive.

Loading history...
44
            case 'MDFeStatusServico':
45
                return self::zReadStatusServico($dom);
0 ignored issues
show
Documentation introduced by
$dom is of type object<NFePHP\Common\Dom\Dom>, but the function expects a object<NFePHP\MDFe\Auxiliar\DOMDocument>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
46
                break;
0 ignored issues
show
Unused Code introduced by
break is not strictly necessary here and could be removed.

The break statement is not necessary if it is preceded for example by a return statement:

switch ($x) {
    case 1:
        return 'foo';
        break; // This break is not necessary and can be left off.
}

If you would like to keep this construct to be consistent with other case statements, you can safely mark this issue as a false-positive.

Loading history...
47
            case 'MDFeRecepcaoEvento':
48
                return self::zReadRecepcaoEvento($dom);
0 ignored issues
show
Documentation introduced by
$dom is of type object<NFePHP\Common\Dom\Dom>, but the function expects a object<NFePHP\MDFe\Auxiliar\DOMDocument>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
49
                break;
0 ignored issues
show
Unused Code introduced by
break is not strictly necessary here and could be removed.

The break statement is not necessary if it is preceded for example by a return statement:

switch ($x) {
    case 1:
        return 'foo';
        break; // This break is not necessary and can be left off.
}

If you would like to keep this construct to be consistent with other case statements, you can safely mark this issue as a false-positive.

Loading history...
50
            case 'MDFeConsNaoEnc':
51
                return self::zReadConsNaoEnc($dom);
0 ignored issues
show
Documentation introduced by
$dom is of type object<NFePHP\Common\Dom\Dom>, but the function expects a object<NFePHP\MDFe\Auxiliar\DOMDocument>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
52
                break;
0 ignored issues
show
Unused Code introduced by
break is not strictly necessary here and could be removed.

The break statement is not necessary if it is preceded for example by a return statement:

switch ($x) {
    case 1:
        return 'foo';
        break; // This break is not necessary and can be left off.
}

If you would like to keep this construct to be consistent with other case statements, you can safely mark this issue as a false-positive.

Loading history...
53
        }
54
        return array();
55
    }
56
    
57
    /**
58
     * zReadRecepcaoLote
59
     *
60
     * @param  DOMDocument $dom
61
     * @return boolean
62
     */
63 View Code Duplication
    protected static function zReadRecepcaoLote($dom)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
64
    {
65
        //retorno da funçao
66
        $aResposta = array(
67
            'bStat' => false,
68
            'versao' => '',
69
            'tpAmb' => '',
70
            'cUF' => '',
71
            'cStat' => '',
72
            'verAplic' => '',
73
            'xMotivo' => '',
74
            'dhRecbto' => '',
75
            'tMed' => '',
76
            'nRec' => ''
77
        );
78
        $tag = $dom->getNode('retEnviMDFe');
79
        if (empty($tag)) {
80
            return $aResposta;
81
        }
82
        $infRec = $dom->getNode('infRec');
83
        $aResposta = array(
84
            'bStat' => true,
85
            'versao' => $tag->getAttribute('versao'),
86
            'tpAmb' => $dom->getValue($tag, 'tpAmb'),
87
            'cUF' => $dom->getValue($tag, 'cUF'),
88
            'cStat' => $dom->getValue($tag, 'cStat'),
89
            'verAplic' => $dom->getValue($tag, 'verAplic'),
90
            'xMotivo' => $dom->getValue($tag, 'xMotivo'),
91
            'dhRecbto' => $dom->getValue($infRec, 'dhRecbto'),
92
            'tMed' => $dom->getValue($infRec, 'tMed'),
93
            'nRec' => $dom->getValue($infRec, 'nRec')
94
        );
95
        return $aResposta;
96
    }
97
    
98
    /**
99
     * zReadRetRecepcao
100
     *
101
     * @param  DOMDocument $dom
102
     * @return array
103
     */
104 View Code Duplication
    protected static function zReadRetRecepcao($dom)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
105
    {
106
        //retorno da funçao
107
        $aResposta = array(
108
            'bStat'=>false,
109
            'versao' => '',
110
            'tpAmb' => '',
111
            'verAplic' => '',
112
            'cStat' => '',
113
            'xMotivo' => '',
114
            'cUF' => '',
115
            'nRec' => '',
116
            'aProt' => array()
117
        );
118
        $tag = $dom->getNode('retConsReciMDFe');
119
        if (empty($tag)) {
120
            return $aResposta;
121
        }
122
        $aResposta = array(
123
            'bStat'=>true,
124
            'versao' => $tag->getAttribute('versao'),
125
            'tpAmb' => $dom->getValue($tag, 'tpAmb'),
126
            'verAplic' => $dom->getValue($tag, 'verAplic'),
127
            'cStat' => $dom->getValue($tag, 'cStat'),
128
            'xMotivo' => $dom->getValue($tag, 'xMotivo'),
129
            'nRec' => $dom->getValue($tag, 'nRec'),
130
            'cUF' => $dom->getValue($tag, 'tpAmb'),
131
            'aProt' => self::zGetProt($dom, $tag)
132
        );
133
        return $aResposta;
134
    }
135
    
136
    /**
137
     * zReadConsultaMDF
138
     *
139
     * @param  DOMDocument $dom
140
     * @return string
141
     */
142
    protected static function zReadConsultaMDF($dom)
143
    {
144
        //retorno da funçao
145
        $aResposta = array(
146
            'bStat' => false,
147
            'versao' => '',
148
            'tpAmb' => '',
149
            'verAplic' => '',
150
            'cStat' => '',
151
            'xMotivo' => '',
152
            'cUF' => '',
153
            'aProt' => array(),
154
            'aEvent' => array()
155
        );
156
        $tag = $dom->getNode('retConsSitMDFe');
157
        if (! isset($tag)) {
158
            return $aResposta;
159
        }
160
        $aEvent = array();
161
        $procEventoMDFe = $tag->getElementsByTagName('procEventoMDFe');
162
        if (isset($procEventoMDFe)) {
163
            foreach ($procEventoMDFe as $evento) {
164
                $aEvent[] = self::zGetEvent($dom, $evento);
165
            }
166
        }
167
        $aResposta = array(
168
            'bStat' => true,
169
            'versao' => $tag->getAttribute('versao'),
170
            'tpAmb' => $dom->getValue($tag, 'tpAmb'),
171
            'verAplic' => $dom->getValue($tag, 'verAplic'),
172
            'cStat' => $dom->getValue($tag, 'cStat'),
173
            'xMotivo' => $dom->getValue($tag, 'xMotivo'),
174
            'cUF' => $dom->getValue($tag, 'cUF'),
175
            'aProt' => self::zGetProt($dom, $tag),
176
            'aEvent' => $aEvent
177
        );
178
        return $aResposta;
179
    }
180
    
181
    /**
182
     * zReadStatusServico
183
     *
184
     * @param  DOMDocument $dom
185
     * @return string|boolean
186
     */
187 View Code Duplication
    protected static function zReadStatusServico($dom)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
188
    {
189
        //retorno da funçao
190
        $aResposta = array(
191
            'bStat' => false,
192
            'versao' => '',
193
            'cStat' => '',
194
            'verAplic' => '',
195
            'xMotivo' => '',
196
            'dhRecbto' => '',
197
            'tMed' => '',
198
            'cUF' => '',
199
            'dhRetorno' => '',
200
            'xObs' => ''
201
        );
202
        $tag = $dom->getNode('retConsStatServMDFe');
203
        if (empty($tag)) {
204
            return $aResposta;
205
        }
206
        $aResposta = array(
207
            'bStat' => true,
208
            'versao' => $tag->getAttribute('versao'),
209
            'cStat' => $dom->getValue($tag, 'cStat'),
210
            'verAplic' => $dom->getValue($tag, 'verAplic'),
211
            'xMotivo' => $dom->getValue($tag, 'xMotivo'),
212
            'dhRecbto' => $dom->getValue($tag, 'dhRecbto'),
213
            'tMed' => $dom->getValue($tag, 'tMed'),
214
            'cUF' => $dom->getValue($tag, 'cUF'),
215
            'dhRetorno' => $dom->getValue($tag, 'dhRetorno'),
216
            'xObs' => $dom->getValue($tag, 'xObs')
217
        );
218
        return $aResposta;
219
    }
220
    
221
    /**
222
     * zReadRecepcaoEvento
223
     *
224
     * @param  DOMDocument $dom
225
     * @return string
226
     */
227 View Code Duplication
    protected static function zReadRecepcaoEvento($dom)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
228
    {
229
        //retorno da funçao
230
        $aResposta = array(
231
            'bStat' => false,
232
            'versao' => '',
233
            'verAplic' => '',
234
            'tpAmb' => '',
235
            'id' => '',
236
            'cOrgao' => '',
237
            'cStat' => '',
238
            'xMotivo' => '',
239
            'aEvent' => array()
240
        );
241
        $tag = $dom->getNode('retEvento');
242
        if (! isset($tag)) {
243
            return $aResposta;
244
        }
245
        $aResposta = array(
246
            'bStat' => true,
247
            'versao' => $tag->getAttribute('versao'),
248
            'id' => $dom->getValue($tag, 'id'),
249
            'tpAmb' => $dom->getValue($tag, 'tpAmb'),
250
            'verAplic' => $dom->getValue($tag, 'verAplic'),
251
            'cOrgao' => $dom->getValue($tag, 'cOrgao'),
252
            'cStat' => $dom->getValue($tag, 'cStat'),
253
            'xMotivo' => $dom->getValue($tag, 'xMotivo'),
254
            'aEvent' => self::zGetEvent($dom, $tag)
255
        );
256
        return $aResposta;
257
    }
258
    
259
    /**
260
     * zReadConsNaoEnc
261
     *
262
     * @param  DOMDocument $dom
263
     * @return boolean
264
     */
265
    protected static function zReadConsNaoEnc($dom)
266
    {
267
        //retorno da funçao
268
        $aResposta = array(
269
            'bStat' => false,
270
            'versao' => '',
271
            'verAplic' => '',
272
            'tpAmb' => '',
273
            'cStat' => '',
274
            'xMotivo' => '',
275
            'cUF' => '',
276
            'MDFe' => array()
277
        );
278
        $tag = $dom->getNode('retConsMDFeNaoEnc');
279
        if (empty($tag)) {
280
            return $aResposta;
281
        }
282
        $lista = $tag->getElementsByTagName('infMDFe');
283
        $aMDFe = array();
284
        if (isset($lista)) {
285
            foreach ($lista as $infMDFe) {
286
                $aMDFe[] = array(
287
                    'chMDFe' => $dom->getValue($infMDFe, 'chMDFe'),
288
                    'nProt' => $dom->getValue($infMDFe, 'chMDFe')
289
                );
290
            }
291
        }
292
        $aResposta = array(
293
            'bStat' => true,
294
            'versao' => $tag->getAttribute('versao'),
295
            'verAplic' => $dom->getValue($tag, 'verAplic'),
296
            'tpAmb' => $dom->getValue($tag, 'tpAmb'),
297
            'cStat' => $dom->getValue($tag, 'cStat'),
298
            'xMotivo' => $dom->getValue($tag, 'xMotivo'),
299
            'cUF' => $dom->getValue($tag, 'cUF'),
300
            'MDFe' => $aMDFe
301
        );
302
        return $aResposta;
303
    }
304
305
    /**
306
     * zGetProt
307
     *
308
     * @param  DOMDocument $dom
309
     * @param  DOMDocument $tag
310
     * @return array
311
     */
312
    private static function zGetProt($dom, $tag)
313
    {
314
        $aProt = array();
315
        $protMDFe = $tag->getElementsByTagName('protMDFe')->item(0);
316
        $infProt = $dom->getNode('infProt');
317
        if (empty($infProt)) {
318
            return $aProt;
319
        }
320
        $aProt = array(
321
            'versao' => $protMDFe->getAttribute('versao'),
322
            'tpAmb' => $dom->getValue($infProt, 'tpAmb'),
323
            'verAplic' => $dom->getValue($infProt, 'verAplic'),
324
            'chMDFe' => $dom->getValue($infProt, 'chMDFe'),
325
            'dhRecbto' => $dom->getValue($infProt, 'dhRecbto'),
326
            'nProt' => $dom->getValue($infProt, 'nProt'),
327
            'digVal' => $dom->getValue($infProt, 'digVal'),
328
            'cStat' => $dom->getValue($infProt, 'cStat'),
329
            'xMotivo' => $dom->getValue($infProt, 'xMotivo')
330
        );
331
        return $aProt;
332
    }
333
    
334
    /**
335
     * zGetEvent
336
     *
337
     * @param  DOMDocument $dom
338
     * @param  DOMDocument $tag
339
     * @return array
340
     */
341
    private static function zGetEvent($dom, $tag)
342
    {
343
        $aEvent = array();
344
        $infEvento = $tag->getElementsByTagName('infEvento')->item(0);
345
        if (! empty($infEvento)) {
346
            $aEvent = array(
347
                'chMDFe' => $dom->getValue($infEvento, 'chMDFe'),
348
                'tpEvento' => $dom->getValue($infEvento, 'tpEvento'),
349
                'xEvento' => $dom->getValue($infEvento, 'xEvento'),
350
                'nSeqEvento' => $dom->getValue($infEvento, 'nSeqEvento'),
351
                'dhRegEvento' => $dom->getValue($infEvento, 'dhRegEvento'),
352
                'nProt' => $dom->getValue($infEvento, 'nProt')
353
            );
354
        }
355
        return $aEvent;
356
    }
357
}
358