Passed
Push — master ( 76f52e...93f64e )
by João
02:26
created

isentoPIS()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 1
dl 0
loc 8
ccs 6
cts 6
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Gbbs\NfeCalculos;
6
7
use Gbbs\NfeCalculos\Exception\InvalidCSTException;
8
use Gbbs\NfeCalculos\Exception\NotImplementedCSTException;
9
10
class PIS
11
{
12
    public $CST;
13
    public $vBC;
14
    public $pPIS;
15
    public $vPIS;
16
    public $qBCProd;
17
    public $vAliqProd;
18
}
19
20
/**
21
 * @param PIS $PIS
22
 * @return PIS
23
 * @throws NotImplementedCSTException|InvalidCSTException
24
 */
25
function calcularPIS(PIS $PIS): PIS
26
{
27
    $adValorem = [
28 4
        '01', '02', '49', '50', '51', '52', '53', '54', '55', '56', '60', '61', '62',
29
        '63', '64', '65', '66', '67', '70', '71', '72', '73', '74', '75', '98'
30
    ];
31 4
    $isento = ['99'];
32 4
    $notImplemented = ['03', '04', '05', '06', '07', '08', '09'];
33
34 4
    if (in_array($PIS->CST, $adValorem, true)) {
35 1
        return adValoremPIS($PIS);
36
    }
37 3
    if (in_array($PIS->CST, $isento, true)) {
38 1
        return isentoPIS($PIS);
39
    }
40 2
    if (in_array($PIS->CST, $notImplemented, true)) {
41 1
        throw new NotImplementedCSTException($PIS->CST);
42
    }
43 1
    throw new InvalidCSTException($PIS->CST);
44
}
45
46
/**
47
 * @param PIS $PIS
48
 * @return PIS
49
 */
50
function adValoremPIS(PIS $PIS): PIS
51
{
52 1
    $pPIS = 0.65;
53 1
    $calculado = new PIS();
54 1
    $calculado->CST = $PIS->CST;
55 1
    $calculado->vBC = $PIS->vBC;
56 1
    $calculado->pPIS = $pPIS;
57 1
    $calculado->vPIS = $PIS->vBC * ($pPIS / 100);
58 1
    return $calculado;
59
}
60
61
/**
62
 * @param PIS $PIS
63
 * @return PIS
64
 */
65
function isentoPIS($PIS): PIS
66
{
67 1
    $calculado = new PIS();
68 1
    $calculado->CST = $PIS->CST;
69 1
    $calculado->vBC = 0.0;
70 1
    $calculado->pPIS = 0.0;
71 1
    $calculado->vPIS = 0.0;
72 1
    return $calculado;
73
}
74