Z0200::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 5
Ratio 100 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 5
loc 5
rs 10
c 0
b 0
f 0
ccs 0
cts 5
cp 0
cc 1
nc 1
nop 1
crap 2
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 0600 do Bloco 0
11
 * REGISTRO 0200: TABELA DE IDENTIFICAÇÃO DO ITEM (PRODUTO E SERVIÇOS)
12
 * Este registro tem por objetivo informar mercadorias, serviços, produtos ou
13
 * quaisquer outros itens concernentes às transações fiscais e aos movimentos de
14
 * estoques em processos produtivos, bem como os insumos. Quando ocorrer alteração
15
 * somente na descrição do item, sem que haja descaracterização deste, ou seja,
16
 * criação de um novo item, a alteração deve constar no registro 0205.
17
 * Somente devem ser apresentados itens referenciados nos demais blocos, exceto
18
 * se for apresentado o fator de conversão no registro 0220 (a partir de julho de 2012).
19
 * A identificação do item (produto ou serviço) deverá receber o código próprio
20
 * do informante do arquivo em qualquer documento, lançamento efetuado ou arquivo
21
 * informado (significa que o código de produto deve ser o mesmo na emissão dos
22
 * documentos fiscais, na entrada das mercadorias ou em qualquer outra informação
23
 * prestada ao fisco), observando-se ainda que:
24
 * a) O código utilizado não pode ser duplicado ou atribuído a itens (produto
25
 * ou serviço) diferentes. Os produtos e serviços que sofrerem alterações em
26
 * suas características básicas deverão ser identificados com códigos diferentes.
27
 * Em caso de alteração de codificação, deverão ser informados o código e a
28
 * descrição anteriores e as datas de validade inicial e final no registro 0205;
29
 * b) Não é permitida a reutilização de código que tenha sido atribuído para
30
 * qualquer produto anteriormente.
31
 * c) O código de item/produto a ser informado no Inventário deverá ser aquele
32
 * utilizado no mês inventariado.
33
 * d) A discriminação do item deve indicar precisamente o mesmo, sendo vedadas
34
 * discriminações diferentes para o mesmo item ou discriminações genéricas
35
 * (a exemplo de "diversas entradas", "diversas saídas", "mercadorias para revenda", etc),
36
 * ressalvadas as operações abaixo, desde que não destinada à posterior circulação
37
 * ou apropriação na produção:
38
 * 1- de aquisição de "materiais para uso/consumo" que não gerem direitos a créditos;
39
 * 2- que discriminem por gênero a aquisição de bens para o "ativo fixo" (e sua baixa);
40
 * 3- que contenham os registros consolidados relativos aos contribuintes com
41
 * atividades econômicas de fornecimento de energia elétrica, de fornecimento de
42
 * água canalizada, de fornecimento de gás canalizado, e de prestação de serviço de
43
 * comunicação e telecomunicação que poderão, a critério do Fisco,
44
 * utilizar registros consolidados por classe de consumo para representar suas
45
 * saídas ou prestações.
46
 *
47
 * NOTA: usada a letra Z no nome da Classe pois os nomes não podem ser exclusivamente
48
 * numeréricos e também para não confundir os com elementos do bloco B
49
 */
50 View Code Duplication
class Z0200 extends Element implements ElementInterface
0 ignored issues
show
Duplication introduced by
This class 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...
51
{
52
    const REG = '0200';
53
    const LEVEL = 2;
54
    const PARENT = '';
55
    
56
    protected $parameters = [
57
        'COD_ITEM' => [
58
            'type'     => 'string',
59
            'regex'    => '^.{1,60}$',
60
            'required' => true,
61
            'info'     => 'Código do item',
62
            'format'   => ''
63
        ],
64
        'DESCR_ITEM' => [
65
            'type'     => 'string',
66
            'regex'    => '^.{3,255}$',
67
            'required' => true,
68
            'info'     => 'Descrição do item',
69
            'format'   => ''
70
        ],
71
        'COD_BARRA' => [
72
            'type'     => 'string',
73
            'regex'    => '^(SEM GTIN)|([0-9]{8,14}|\-)$',
74
            'required' => false,
75
            'info'     => 'Representação alfanumérico do código de barra do produto, se houver',
76
            'format'   => ''
77
        ],
78
        'COD_ANT_ITEM' => [
79
            'type'     => 'string',
80
            'regex'    => '^.{1,6}$',
81
            'required' => false,
82
            'info'     => 'Código anterior do item com relação à última informação anterior',
83
            'format'   => ''
84
        ],
85
        'UNID_INV' => [
86
            'type'     => 'string',
87
            'regex'    => '^.{1,6}$',
88
            'required' => true,
89
            'info'     => 'Unidade de medida utilizada na quantificação de estoques.',
90
            'format'   => ''
91
        ],
92
        'TIPO_ITEM' => [
93
            'type'     => 'string',
94
            'regex'    => '^[0-9]{2}$',
95
            'required' => true,
96
            'info'     => 'Tipo do item – Atividades Industriais, Comerciais e Serviços:'
97
            . '00 – Mercadoria para Revenda;'
98
            . '01 – Matéria-prima;'
99
            . '02 – Embalagem;'
100
            . '03 – Produto em Processo;'
101
            . '04 – Produto Acabado;'
102
            . '05 – Subproduto;'
103
            . '06 – Produto Intermediário;'
104
            . '07 – Material de Uso e Consumo;'
105
            . '08 – Ativo Imobilizado;'
106
            . '09 – Serviços;'
107
            . '10 – Outros insumos;'
108
            . '99 – Outras',
109
            'format'   => ''
110
        ],
111
        'COD_NCM' => [
112
            'type'     => 'string',
113
            'regex'    => '^([0-9]{8})|([0-9]{2})$',
114
            'required' => false,
115
            'info'     => 'Código da Nomenclatura Comum do Mercosul',
116
            'format'   => ''
117
        ],
118
        'EX_IPI' => [
119
            'type'     => 'string',
120
            'regex'    => '^[0-9]{1,3}$',
121
            'required' => false,
122
            'info'     => 'Código EX, conforme a TIPI',
123
            'format'   => ''
124
        ],
125
        'COD_GEN' => [
126
            'type'     => 'string',
127
            'regex'    => '^[0-9]{2}$',
128
            'required' => false,
129
            'info'     => 'Código do gênero do item, conforme a Tabela 4.2.1',
130
            'format'   => ''
131
        ],
132
        'COD_LST' => [
133
            'type'     => 'string',
134
            'regex'    => '^([0-9]{2}\.[0-9]{2})$',
135
            'required' => false,
136
            'info'     => 'Código do serviço conforme lista do Anexo I da '
137
            . 'Lei Complementar Federal nº 116/03.',
138
            'format'   => ''
139
        ],
140
        'ALIQ_ICMS' => [
141
            'type'     => 'numeric',
142
            'regex'    => '^(\d*\.)?\d+$',
143
            'required' => false,
144
            'info'     => 'Alíquota de ICMS aplicável ao item nas operações internas',
145
            'format'   => '6v2'
146
        ],
147
        'CEST' => [
148
            'type'     => 'string',
149
            'regex'    => '^[0-9]{7}$',
150
            'required' => false,
151
            'info'     => 'Código Especificador da Substituição Tributária',
152
            'format'   => ''
153
        ]
154
    ];
155
    
156
    /**
157
     * Constructor
158
     * @param stdClass $std
159
     */
160
    public function __construct(stdClass $std)
161
    {
162
        parent::__construct(self::REG);
163
        $this->std = $this->standarize($std);
164
    }
165
}
166