|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace NFePHP\EFD\Elements\ICMSIPI; |
|
4
|
|
|
|
|
5
|
|
|
use NFePHP\EFD\Common\Element; |
|
6
|
|
|
use NFePHP\EFD\Common\ElementInterface; |
|
7
|
|
|
use \stdClass; |
|
8
|
|
|
|
|
9
|
|
|
/** |
|
10
|
|
|
* Elemento 0205 do Bloco 0 |
|
11
|
|
|
* REGISTRO 0205: ALTERAÇÃO DO ITEM |
|
12
|
|
|
* Este registro tem por objetivo informar alterações ocorridas na descrição do |
|
13
|
|
|
* produto ou quando ocorrer alteração na codificação do produto, desde que não |
|
14
|
|
|
* o descaracterize ou haja modificação que o identifique como sendo novo produto. |
|
15
|
|
|
* Caso não tenha ocorrido movimentação no período da alteração do item, deverá |
|
16
|
|
|
* ser informada no primeiro período em que houver movimentação do item ou no inventário. |
|
17
|
|
|
* Validação do Registro: Não podem ser informados dois ou mais registros |
|
18
|
|
|
* com sobreposição de períodos para o mesmo campo alterado (02 ou 05). |
|
19
|
|
|
* |
|
20
|
|
|
* NOTA: usada a letra Z no nome da Classe pois os nomes não podem ser exclusivamente |
|
21
|
|
|
* numeréricos e também para não confundir os com elementos do bloco B |
|
22
|
|
|
*/ |
|
23
|
|
View Code Duplication |
class Z0205 extends Element implements ElementInterface |
|
|
|
|
|
|
24
|
|
|
{ |
|
25
|
|
|
const REG = '0205'; |
|
26
|
|
|
const LEVEL = 3; |
|
27
|
|
|
const PARENT = '0200'; |
|
28
|
|
|
|
|
29
|
|
|
protected $parameters = [ |
|
30
|
|
|
'DESCR_ANT_ITEM' => [ |
|
31
|
|
|
'type' => 'string', |
|
32
|
|
|
'regex' => '^.{3,255}$', |
|
33
|
|
|
'required' => false, |
|
34
|
|
|
'info' => 'Descrição anterior do item', |
|
35
|
|
|
'format' => '' |
|
36
|
|
|
], |
|
37
|
|
|
'DT_INI' => [ |
|
38
|
|
|
'type' => 'string', |
|
39
|
|
|
'regex' => '^(0[1-9]|[1-2][0-9]|31(?!(?:0[2469]|11))|30(?!02))(0[1-9]|1[0-2])([12]\d{3})$', |
|
40
|
|
|
'required' => true, |
|
41
|
|
|
'info' => 'Data inicial de utilização da descrição do item', |
|
42
|
|
|
'format' => '' |
|
43
|
|
|
], |
|
44
|
|
|
'DT_FIM' => [ |
|
45
|
|
|
'type' => 'string', |
|
46
|
|
|
'regex' => '^(0[1-9]|[1-2][0-9]|31(?!(?:0[2469]|11))|30(?!02))(0[1-9]|1[0-2])([12]\d{3})$', |
|
47
|
|
|
'required' => true, |
|
48
|
|
|
'info' => 'Data final de utilização da descrição do item', |
|
49
|
|
|
'format' => '' |
|
50
|
|
|
], |
|
51
|
|
|
'COD_ANT_ITEM' => [ |
|
52
|
|
|
'type' => 'string', |
|
53
|
|
|
'regex' => '^.{1,60}$', |
|
54
|
|
|
'required' => false, |
|
55
|
|
|
'info' => 'Código anterior do item com relação à última informação apresentada.', |
|
56
|
|
|
'format' => '' |
|
57
|
|
|
] |
|
58
|
|
|
]; |
|
59
|
|
|
|
|
60
|
|
|
/** |
|
61
|
|
|
* Constructor |
|
62
|
|
|
* @param stdClass $std |
|
63
|
|
|
*/ |
|
64
|
|
|
public function __construct(stdClass $std) |
|
65
|
|
|
{ |
|
66
|
|
|
parent::__construct(self::REG); |
|
67
|
|
|
$this->std = $this->standarize($std); |
|
68
|
|
|
} |
|
69
|
|
|
} |
|
70
|
|
|
|
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.