K220   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 54
Duplicated Lines 100 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 1
lcom 0
cbo 1
dl 54
loc 54
ccs 0
cts 5
cp 0
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A __construct() 5 5 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

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
 * REGISTRO K220: OUTRAS MOVIMENTAÇÕES INTERNAS ENTRE MERCADORIAS
11
 * Este registro tem o objetivo de informar a movimentação interna entre
12
 * mercadorias de tipos:
13
 * 00 – Mercadoria para revenda;
14
 * 01 – Matéria-Prima;
15
 * 02 – Embalagem;
16
 * 03 – Produtos em Processo;
17
 * 04 – Produto Acabado;
18
 * 05 – Subproduto
19
 * e 10 – Outros Insumos – campo TIPO_ITEM do Registro 0200; que não se
20
 * enquadre nas movimentações internas já informadas nos demais tipos de
21
 * registros.
22
 * Exemplos:
23
 * 1) Reclassificação de um produto em outro código em função do cliente
24
 * a que se destina: o contribuinte aponta a quantidade produzida de
25
 * determinado produto, por exemplo, código 1.
26
 * Este produto, quando destinado a determinado cliente recebe uma outra
27
 * codificação, código 2. Neste caso há a necessidade de controle do
28
 * estoque por cliente.
29
 * Assim  o  contribuinte deverá fazer um registro K220 dando saída no estoque
30
 * do  produto 1 e entrada no estoque do produto 2.
31
 * 2) Reclassificação de um produto em função do controle de qualidade:
32
 * quando o produto não conforme não permanecerá com o mesmo código,por exemplo:
33
 * venda como produto com defeito ou subproduto;
34
 * consumo em outra fase de produção.
35
 * Caso o produto não conforme tiver como destino o reprocessamento, onde o
36
 * produto reprocessado permanecerá com o mesmo código do produto a ser
37
 * reprocessado, deverá ser escriturado no Registro K260.
38
 * A quantidade movimentada deve ser expressa, obrigatoriamente, na unidade
39
 * de medida do item de origem e do item de destino constante no campo 06 do
40
 * registro 0200(UNID_INV).
41
 * Validação do Registro: A chave deste registro são os campos DT_MOV,
42
 * COD_ITEM_ORI e COD_ITEM_DEST
43
 */
44 View Code Duplication
class K220 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...
45
{
46
    const REG = 'K220';
47
    const LEVEL = 3;
48
    const PARENT = 'K215|K210|K200|K100';
49
50
    protected $parameters = [
51
        'DT_MOV' => [
52
            'type'     => 'string',
53
            'regex'    => '^(0[1-9]|[1-2][0-9]|31(?!(?:0[2469]|11))|30(?!02))(0[1-9]|1[0-2])([12]\d{3})$',
54
            'required' => true,
55
            'info'     => 'Data da movimentação interna',
56
            'format'   => ''
57
        ],
58
        'COD_ITEM_ORI' => [
59
            'type'     => 'string',
60
            'regex'    => '^.{1,60}$',
61
            'required' => true,
62
            'info'     => 'Código do item de origem (campo 02 do Registro 0200)',
63
            'format'   => ''
64
        ],
65
        'COD_ITEM_DEST' => [
66
            'type'     => 'string',
67
            'regex'    => '^.{1,60}$',
68
            'required' => true,
69
            'info'     => 'Código do item de destino (campo 02 do Registro 0200)',
70
            'format'   => ''
71
        ],
72
        'QTD_ORI' => [
73
            'type'     => 'numeric',
74
            'regex'    => '^\d+(\.\d*)?|\.\d+$',
75
            'required' => true,
76
            'info'     => 'Quantidade movimentada do item de origem',
77
            'format'   => '15v6'
78
        ],
79
        'QTD_DEST' => [
80
            'type'     => 'numeric',
81
            'regex'    => '^\d+(\.\d*)?|\.\d+$',
82
            'required' => true,
83
            'info'     => 'Quantidade movimentada do item de destino',
84
            'format'   => '15v6'
85
        ],
86
    ];
87
    
88
    /**
89
     * Constructor
90
     * @param \stdClass $std
91
     */
92
    public function __construct(\stdClass $std)
93
    {
94
        parent::__construct(self::REG);
95
        $this->std = $this->standarize($std);
96
    }
97
}
98