Passed
Push — master ( aef189...493482 )
by João
02:22
created

calcularPIS()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 15
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 10
nc 3
nop 1
dl 0
loc 15
ccs 7
cts 7
cp 1
crap 3
rs 9.9332
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)
26
{
27 34
    $adValorem = ['01'];
28
    $notImplemented = [
29 34
        '02', '03', '04', '05', '06', '07', '08', '09', '49', '50', '51', '52', '53',
30
        '54', '55', '56', '60', '61', '62', '63', '64', '65', '66', '67', '70', '71',
31
        '72', '73', '74', '75', '98', '99'
32
    ];
33
34 34
    if (in_array($PIS->CST, $adValorem, true)) {
35 1
        return adValoremPIS($PIS);
36 33
    } elseif (in_array($PIS->CST, $notImplemented, true)) {
37 32
        throw new NotImplementedCSTException($PIS->CST);
38
    }
39 1
    throw new InvalidCSTException($PIS->CST);
40
}
41
42
/**
43
 * @param PIS $PIS
44
 * @return PIS
45
 */
46
function adValoremPIS(PIS $PIS)
47
{
48 1
    $pPIS = 0.65;
49 1
    $calculado = new PIS();
50 1
    $calculado->CST = $PIS->CST;
51 1
    $calculado->vBC = $PIS->vBC;
52 1
    $calculado->pPIS = $pPIS;
53 1
    $calculado->vPIS = $PIS->vBC * ($pPIS / 100);
54 1
    return $calculado;
55
}
56