Passed
Push — master ( 00db01...326d16 )
by João
01:48
created

ICMS::getVBCFCPST()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 2
cts 2
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 Exception;
8
use Gbbs\NfeCalculos\Exception\InvalidCSTException;
9
use Gbbs\NfeCalculos\Exception\NotImplementedCSTException;
10
11
class ICMS
12
{
13
    private $orig;  //  Origem da mercadoria
14
    private $CST;  // Tributação do ICMS
15
    private $modBC;  // Modalidade de determinação da BC do ICMS
16
    private $pRedBC;  // Percentual da Redução de BC
17
    private $vBC;  // Valor da BC do ICMS
18
    private $pICMS;  // Alíquota do imposto
19
    private $vICMS;  // Valor do ICMS
20
    private $modBCST;  // Modalidade de determinação da BC do ICMS ST
21
    private $pMVAST;  // Percentual da margem de valor Adicionado do ICMS ST
22
    private $pRedBCST;  // Percentual da Redução de BC do ICMS ST
23
    private $vBCST;  // Valor da BC do ICMS ST
24
    private $pICMSST;  // Alíquota do imposto do ICMS ST
25
    private $vICMSST;  // Valor do ICMS ST
26
    private $UFST;  // UF para qual é devido o ICMS ST
27
    private $pBCop;  // Percentual da BC operação própria
28
    private $vBCSTRet;  // Valor da BC do ICMS Retido Anteriormente
29
    private $vICMSSTRet;  // Valor do ICMS Retido Anteriormente
30
    private $motDesICMS;  // Motivo da desoneração do ICMS
31
    private $vBCSTDest;  // Valor da BC do ICMS ST da UF destino
32
    private $vICMSSTDest;  // Valor do ICMS ST da UF destino
33
    private $pCredSN;  // Alíquota aplicável de cálculo do crédito (Simples Nacional)
34
    private $vCredICMSSN;  // Valor crédito do ICMS que pode ser aproveitado nos termos do art. 23 da LC 123 (SIMPLES NACIONAL)
35
    private $vICMSDeson;  // Valor do ICMS da desoneração
36
    private $vICMSOp;  // Valor do ICMS da Operação
37
    private $pDif;  // percentual do diferimento
38
    private $vICMSDif;  // Valor do ICMS Diferido
39
    private $vBCFCP;  // Valor da Base de Cálculo do FCP
40
    private $pFCP;  // Percentual do FCP
41
    private $vFCP;  // Valor do FCP
42
    private $vBCFCPST;  // Valor da Base de Cálculo do FCP retido por Substituição Tributária
43
    private $pFCPST;  // Percentual do FCP retido por Substituição Tributária.
44
    private $vFCPST;  // Valor do FCP retido por Substituição Tributária
45
    private $vBCFCPSTRet;  // Valor da BC do FCP retido anteriormente por Substituição Tributária
46
    private $pFCPSTRet;  // Alíquota do FCP retido anteriormente por Substituição Tributária
47
    private $vFCPSTRet;  // Valor do FCP retido anteriormente por Substituição Tributária
48
    private $pST;  // Alíquota suportada pelo Consumidor Final
49
50
    /**
51
     * @param self $ICMS
52
     * @param string $ufOrigem
53
     * @param string $ufDestino
54
     * @param float $reducao
55
     * @throws NotImplementedCSTException|InvalidCSTException|Exception
56
     */
57 26
    public static function calcular(self $ICMS, string $ufOrigem, string $ufDestino, float $reducao = null): void
58
    {
59 26
        if ($reducao === null) {
60 26
            $ICMS->setPICMS($ufOrigem, $ufDestino);
61 26
            $ICMS->setPICMSST($ufOrigem, $ufDestino);
62
        } else {
63
            $ICMS->setReducao($reducao);
64
        }
65
66 26
        if ($ICMS->getCST() === '00') {
67 2
            self::calcCST00($ICMS);
68 24
        } elseif ($ICMS->getCST() === '10') {
69 3
            self::calcCST10($ICMS);
70 21
        } elseif ($ICMS->getCST() === '20') {
71 1
            throw new NotImplementedCSTException($ICMS->getCST());
72
//            self::calcCST20($ICMS);
73 20
        } elseif ($ICMS->getCST() === '30') {
74 1
            throw new NotImplementedCSTException($ICMS->getCST());
75
//            self::calcCST30($ICMS, $pICMSST);
76 19
        } elseif ($ICMS->getCST() === '40') {
77 1
            throw new NotImplementedCSTException($ICMS->getCST());
78
//            self::calcCST40($ICMS);
79 18
        } elseif ($ICMS->getCST() === '41') {
80 1
            throw new NotImplementedCSTException($ICMS->getCST());
81
//            self::calcCST41($ICMS);
82 17
        } elseif ($ICMS->getCST() === '50') {
83 1
            throw new NotImplementedCSTException($ICMS->getCST());
84
//            self::calcCST50($ICMS);
85 16
        } elseif ($ICMS->getCST() === '51') {
86 1
            throw new NotImplementedCSTException($ICMS->getCST());
87
//            self::calcCST51($ICMS);
88 15
        } elseif ($ICMS->getCST() === '60') {
89 1
            throw new NotImplementedCSTException($ICMS->getCST());
90
//            self::calcCST60($ICMS);
91 14
        } elseif ($ICMS->getCST() === '70') {
92 1
            throw new NotImplementedCSTException($ICMS->getCST());
93
//            self::calcCST70($ICMS, $pICMSST);
94 13
        } elseif ($ICMS->getCST() === '90') {
95 1
            throw new NotImplementedCSTException($ICMS->getCST());
96
//            self::calcCST90c($ICMS);
97 12
        } elseif ($ICMS->getCST() === '101') {
98 1
            throw new NotImplementedCSTException($ICMS->getCST());
99
//            self::calcCSOSN101($ICMS);
100 11
        } elseif ($ICMS->getCST() === '102') {
101 1
            throw new NotImplementedCSTException($ICMS->getCST());
102
//            self::calcCSOSN102($ICMS);
103 10
        } elseif ($ICMS->getCST() === '103') {
104 1
            throw new NotImplementedCSTException($ICMS->getCST());
105
//             FIXME Do nothing?
106 9
        } elseif ($ICMS->getCST() === '200') {
107 1
            throw new NotImplementedCSTException($ICMS->getCST());
108
//            self::calcCST200($ICMS);
109 8
        } elseif ($ICMS->getCST() === '201') {
110 1
            throw new NotImplementedCSTException($ICMS->getCST());
111
//            self::calcCSOSN201($ICMS, $pICMSST);
112 7
        } elseif ($ICMS->getCST() === '202') {
113 1
            throw new NotImplementedCSTException($ICMS->getCST());
114
//            self::calcCSOSN202($ICMS, $pICMSST);
115 6
        } elseif ($ICMS->getCST() === '203') {
116 1
            throw new NotImplementedCSTException($ICMS->getCST());
117
//            self::calcCSOSN203($ICMS, $pICMSST);
118 5
        } elseif ($ICMS->getCST() === '300') {
119 1
            throw new NotImplementedCSTException($ICMS->getCST());
120
//             FIXME Do nothing?
121 4
        } elseif ($ICMS->getCST() === '400') {
122 1
            throw new NotImplementedCSTException($ICMS->getCST());
123
//             FIXME Do nothing?
124 3
        } elseif ($ICMS->getCST() === '500') {
125 1
            throw new NotImplementedCSTException($ICMS->getCST());
126
//            self::calcCSOSN500($ICMS);
127 2
        } elseif ($ICMS->getCST() === '900') {
128 1
            throw new NotImplementedCSTException($ICMS->getCST());
129
//            self::calcCSOSN900($ICMS, $pICMSST);
130
        } else {
131 1
            throw new InvalidCSTException($ICMS->getCST());
132
        }
133 3
    }
134
135
//    /*
136
//     * @Calcula o Valor crédito do ICMS que pode ser aproveitado
137
//     */
138
//    private static function calcvCredICMSSN($ICMS)
139
//    {
140
//        return ($ICMS->vBC * $ICMS->pCredSN) / 100;
141
//    }
142
143
    /**
144
     * Calcula o Valor do ICMS
145
     * @param $ICMS
146
     * @return float
147
     */
148 3
    private static function calcvICMS(self $ICMS): float
149
    {
150 3
        return $ICMS->getVBC() * ($ICMS->getPICMS() / 100);
151
    }
152
153
    /**
154
     * Calcula o Valor do ICMSST
155
     * @param $ICMS
156
     * @return float
157
     */
158 2
    private static function calcvICMSST(self $ICMS): float
159
    {
160 2
        if ($ICMS->getPMVAST() === 0.0) {
0 ignored issues
show
introduced by
The condition $ICMS->getPMVAST() === 0.0 is always false.
Loading history...
161 1
            return 0.0;
162
        }
163
164 1
        $ICMS->setVICMS(self::calcvICMS($ICMS));
165 1
        $ICMS->setVBCST($ICMS->getVBCST() * (1 + ($ICMS->getPMVAST() / 100))); // VERIFICAR AQUI OQUE ESTÃO ACONTECENDO
166 1
        return ((($ICMS->getVBCST() - ($ICMS->getVBCST() * ($ICMS->getPRedBCST() / 100)))) * ($ICMS->getPICMSST() / 100)) - $ICMS->getVICMS();
167
    }
168
169
//    private static function calcvICMSDesonIsento($ICMS)
170
//    {
171
//        $icms_normal = ($ICMS->vBC * ($ICMS->pICMS / 100));
172
//        $ICMS->vICMSDeson = $icms_normal;
173
//        return $ICMS->vICMSDeson;
174
//    }
175
//
176
//    private static function calcvICMSDeson($ICMS)
177
//    {
178
//        $icms_normal = ($ICMS->vBC * ($ICMS->pICMS / 100));
179
//        $icms_reduzido = ($ICMS->vBC - ($ICMS->vBC * ($ICMS->pRedBC / 100))) * ($ICMS->pICMS / 100);
180
//        $ICMS->vICMSDeson = $icms_normal - $icms_reduzido;
181
//        return $ICMS->vICMSDeson;
182
//    }
183
//
184
//    /**
185
//     * Calcula a redução na base de culculo do ICMS
186
//     * @param $ICMS
187
//     * @return float
188
//     */
189
//    private static function calcRedBC(self $ICMS): float
190
//    {
191
//        return $ICMS->getVBC() - ($ICMS->getVBC() * ($ICMS->getPRedBC() / 100));
192
//    }
193
194
    /**
195
     * Calcula a redução na base de culculo do ICMSST
196
     * @param $ICMS
197
     * @return float
198
     */
199 2
    private static function calcRedBCST(self $ICMS): float
200
    {
201 2
        return $ICMS->getVBCST() - ($ICMS->getVBCST() * ($ICMS->getPRedBCST() / 100));
202
    }
203
204
//    /* /// SIMPLES NACIONAL /// */
205
//    private static function calcCSOSN101($ICMS)
206
//    {
207
//        $ICMS->vCredICMSSN = self::calcvCredICMSSN($ICMS);
208
//    }
209
//
210
//    private static function calcCSOSN102($ICMS)
211
//    {
212
//        $ICMS->vBC = null;
213
//        $ICMS->vICMS = null;
214
//        $ICMS->vBCST = null;
215
//        $ICMS->vBCSTRet = null;
216
//        $ICMS->vICMSSTRet = null;
217
//    }
218
219
    /**
220
     * @param $ICMS
221
     * @throws Exception
222
     */
223 2
    private static function calcCST00(self $ICMS): void
224
    {
225 2
        if ($ICMS->getModBC() === 0) {
226 1
            $ICMS->setVICMS(self::calcvICMS($ICMS));
227
        } else {
228 1
            throw new Exception('modBC '.$ICMS->getModBC(). ' not implemented');
229
        }
230 1
    }
231
232
    /**
233
     * @param $ICMS
234
     * @throws Exception
235
     */
236 3
    private static function calcCST10(self $ICMS): void
237
    {
238 3
        if ($ICMS->getModBCST() === 4) {
239 2
            $ICMS->setVBCST(self::calcRedBCST($ICMS));
240 2
            $ICMS->setVICMS(self::calcvICMS($ICMS));
241 2
            $ICMS->setVICMSST(self::calcvICMSST($ICMS));
242
        } else {
243 1
            throw new Exception('modBCST '.$ICMS->getModBCST(). ' not implemented');
244
        }
245 2
    }
246
247
//    private static function calcCSOSN201($ICMS, $pICMSST)
248
//    {
249
//        $ICMS->pICMSST = $pICMSST;
250
//        $ICMS->vCredICMSSN = self::calcvCredICMSSN($ICMS);
251
//        $ICMS->vICMSST = (self::calcvICMSST($ICMS));
252
//    }
253
//
254
//    private static function calcCSOSN202($ICMS, $pICMSST)
255
//    {
256
//        $ICMS->pICMSST = $pICMSST;
257
//        $ICMS->vICMSST = (self::calcvICMSST($ICMS));
258
//    }
259
//
260
//    private static function calcCSOSN203($ICMS, $pICMSST)
261
//    {
262
//        $ICMS->pICMSST = $pICMSST;
263
//        $ICMS->vICMSST = (self::calcvICMSST($ICMS));
264
//    }
265
//
266
//    private static function calcCSOSN500($ICMS)
267
//    {
268
//        $ICMS->vBC = null;
269
//        $ICMS->vICMS = null;
270
//        $ICMS->vBCST = null;
271
//        $ICMS->vICMSST = null;
272
//    }
273
//
274
//    private static function calcCSOSN900($ICMS, $pICMSST)
275
//    {
276
//        $ICMS->pICMSST = $pICMSST;
277
//        $ICMS->vCredICMSSN = self::calcvCredICMSSN($ICMS);
278
//        $ICMS->vICMS = (self::calcvICMS($ICMS));
279
//        $ICMS->vICMSST = (self::calcvICMSST($ICMS));
280
//    }
281
//
282
//    // --- FUNCOES CALCULOS POR CST DO REGIME NORMAL ---
283
//
284
//    private static function calcCST200($ICMS)
285
//    {
286
//        $ICMS->vICMS = (self::calcvICMS($ICMS));
287
//        $ICMS->vICMSST = 0;
288
//        $ICMS->vBCST = 0;
289
//        $ICMS->pMVAST = 0;
290
//        $ICMS->pICMSST = 0;
291
//    }
292
//
293
//    private static function calcCST20($ICMS)
294
//    {
295
//        $ICMS->vICMSDeson = self::calcvICMSDeson($ICMS);
296
//        $ICMS->vBC = self::calcRedBC($ICMS);
297
//        $ICMS->vICMS = (self::calcvICMS($ICMS));
298
//
299
//        $ICMS->vICMSST = 0;
300
//        $ICMS->vBCST = 0;
301
//        $ICMS->pMVAST = 0;
302
//        $ICMS->pICMSST = 0;
303
//    }
304
//
305
//    private static function calcCST30($ICMS, $pICMSST)
306
//    {
307
//        $ICMS->vBCST = self::calcRedBCST($ICMS);
308
//        $ICMS->pICMSST = $pICMSST;
309
//        $ICMS->vICMSST = (self::calcvICMSST($ICMS));
310
//    }
311
//
312
//    private static function calcCST40($ICMS)
313
//    {
314
//        $ICMS->vICMSDeson = self::calcvICMSDesonIsento($ICMS);
315
//        if ($ICMS->SUFRAMA === 1) {
316
//            $ICMS->Desconto = $ICMS->vBC * ($ICMS->pICMS / 100);
317
//        } else {
318
//            $ICMS->Desconto = 0;
319
//        }
320
//
321
//        $ICMS->vBC = 0;
322
//        $ICMS->vICMS = 0;
323
//        $ICMS->pICMS = 0;
324
//
325
//        $ICMS->vICMSST = 0;
326
//        $ICMS->vBCST = 0;
327
//        $ICMS->pMVAST = 0;
328
//        $ICMS->pICMSST = 0;
329
//    }
330
//
331
//    private static function calcCST41($ICMS)
332
//    {
333
//        $ICMS->vICMSDeson = self::calcvICMSDesonIsento($ICMS);
334
//        $ICMS->vBC = 0;
335
//        $ICMS->vICMS = 0;
336
//        $ICMS->pICMS = 0;
337
//
338
//        $ICMS->vICMSST = 0;
339
//        $ICMS->vBCST = 0;
340
//        $ICMS->pMVAST = 0;
341
//        $ICMS->pICMSST = 0;
342
//    }
343
//
344
//    private static function calcCST50($ICMS)
345
//    {
346
//        $ICMS->vBC = 0;
347
//        $ICMS->vICMS = 0;
348
//        $ICMS->pICMS = 0;
349
//
350
//        $ICMS->vICMSST = 0;
351
//        $ICMS->vBCST = 0;
352
//        $ICMS->pMVAST = 0;
353
//        $ICMS->pICMSST = 0;
354
//    }
355
//
356
//    private static function calcCST51($ICMS)
357
//    {
358
//        $ICMS->vBC = self::calcRedBC($ICMS);
359
//        $ICMS->vICMS = (self::calcvICMS($ICMS));
360
//
361
//        $ICMS->vICMSST = 0;
362
//        $ICMS->vBCST = 0;
363
//        $ICMS->pMVAST = 0;
364
//        $ICMS->pICMSST = 0;
365
//    }
366
//
367
//    private static function calcCST60($ICMS)
368
//    {
369
//        $ICMS->vBC = 0;
370
//        $ICMS->vICMS = 0;
371
//        $ICMS->pICMS = 0;
372
//        $ICMS->vICMSST = 0;
373
//        $ICMS->vBCST = 0;
374
//        $ICMS->pMVAST = 0;
375
//        $ICMS->pICMSST = 0;
376
//    }
377
//
378
//    private static function calcCST70($ICMS, $pICMSST)
379
//    {
380
//        $ICMS->vBCST = self::calcRedBCST($ICMS);
381
//        $ICMS->vBC = self::calcRedBC($ICMS);
382
//        $ICMS->pICMSST = $pICMSST;
383
//        $ICMS->vICMS = (self::calcvICMS($ICMS));
384
//        $ICMS->vICMSST = (self::calcvICMSST($ICMS));
385
//    }
386
//
387
//    private static function calcCST90c($ICMS)
388
//    {
389
//        if ($ICMS->CSTNotaRef === '10') {
390
//            $ICMS->vICMS = (self::calcvICMS($ICMS));
391
//            $ICMS->vICMSST = self::calcvICMSST($ICMS);
392
//        } else {
393
//            $ICMS->vICMS = (self::calcvICMS($ICMS));
394
//        }
395
//        $ICMS->vICMSDeson = self::calcvICMSDesonIsento($ICMS);
396
//    }
397
398
    /**
399
     * @param float $reducao
400
     */
401
    public function setReducao(float $reducao): void
402
    {
403
        $this->pICMS = $reducao;
404
        $this->pICMSST = $reducao;
405
    }
406
407
    /**
408
     * @return string
409
     */
410 4
    public function getOrig(): string
411
    {
412 4
        return $this->orig;
413
    }
414
415
    /**
416
     * @param string $orig
417
     * 0 - Nacional, exceto as indicadas nos códigos 3, 4, 5 e 8;
418
     * 1 - Estrangeira - Importação direta, exceto a indicada no código 6;
419
     * 2 - Estrangeira - Adquirida no mercado interno, exceto a indicada no código 7;
420
     * 3 - Nacional, mercadoria ou bem com Conteúdo de Importação superior a 40% e inferior ou igual a 70%;
421
     * 4 - Nacional, cuja produção tenha sido feita em conformidade com os processos produtivos básicos de que tratam as legislações citadas nos Ajustes;
422
     * 5 - Nacional, mercadoria ou bem com Conteúdo de Importação inferior ou igual a 40%;
423
     * 6 - Estrangeira - Importação direta, sem similar nacional, constante em lista da CAMEX e gás natural;
424
     * 7 - Estrangeira - Adquirida no mercado interno, sem similar nacional, constante em lista da CAMEX e gás natural.
425
     * 8 - Nacional, mercadoria ou bem com Conteúdo de Importação superior a 70%;
426
     */
427 6
    public function setOrig(string $orig): void
428
    {
429 6
        $this->orig = $orig;
430 6
    }
431
432
    /**
433
     * @return string
434
     */
435 27
    public function getCST(): string
436
    {
437 27
        return $this->CST;
438
    }
439
440
    /**
441
     * @param string $CST
442
     */
443 27
    public function setCST(string $CST): void
444
    {
445 27
        $this->CST = $CST;
446 27
    }
447
448
    /**
449
     * @return int
450
     * 0 - Margem Valor Agregado (%);
451
     * 1 - Pauta (valor);
452
     * 2 - Preço Tabelado Máximo (valor);
453
     * 3 - Valor da Operação.
454
     */
455 5
    public function getModBC(): int
456
    {
457 5
        return $this->modBC;
458
    }
459
460
    /**
461
     * @param int $modBC
462
     */
463 6
    public function setModBC(int $modBC): void
464
    {
465 6
        $this->modBC = $modBC;
466 6
    }
467
468
    /**
469
     * @return float
470
     */
471 1
    public function getPRedBC(): float
472
    {
473 1
        return $this->pRedBC;
474
    }
475
476
    /**
477
     * @param float $pRedBC
478
     */
479 1
    public function setPRedBC(float $pRedBC): void
480
    {
481 1
        $this->pRedBC = $pRedBC;
482 1
    }
483
484
    /**
485
     * @return float
486
     */
487 4
    public function getVBC(): float
488
    {
489 4
        return $this->vBC;
490
    }
491
492
    /**
493
     * @param float $vBC
494
     */
495 6
    public function setVBC(float $vBC): void
496
    {
497 6
        $this->vBC = $vBC;
498 6
    }
499
500
    /**
501
     * @return float
502
     */
503 3
    public function getPICMS(): ?float
504
    {
505 3
        return $this->pICMS;
506
    }
507
508
    /**
509
     * @param string $ufOrigem
510
     * @param string $ufDestino
511
     */
512 26
    public function setPICMS(string $ufOrigem, string $ufDestino): void
513
    {
514 26
        $path = realpath(__DIR__ . '/../storage') . '/';
515 26
        $picmsFile = file_get_contents($path . 'picms.json');
516 26
        $picmsList = json_decode($picmsFile, true);
517 26
        foreach ($picmsList as $picms) {
518 26
            if ($picms['uf'] === $ufOrigem) {
519 26
                $this->pICMS = (float) $picms['uf' . $ufDestino];
520
            }
521
        }
522 26
    }
523
524
    /**
525
     * @return float
526
     */
527 4
    public function getVICMS(): float
528
    {
529 4
        return $this->vICMS;
530
    }
531
532
    /**
533
     * @param float $vICMS
534
     */
535 4
    public function setVICMS(float $vICMS): void
536
    {
537 4
        $this->vICMS = $vICMS;
538 4
    }
539
540
    /**
541
     * @return int
542
     */
543 4
    public function getModBCST(): int
544
    {
545 4
        return $this->modBCST;
546
    }
547
548
    /**
549
     * @param int $modBCST
550
     * 0 - Preço tabelado ou máximo sugerido;
551
     * 1 - Lista Negativa (valor);
552
     * 2 - Lista Positiva (valor);
553
     * 3 - Lista Neutra (valor);
554
     * 4 - Margem Valor Agregado (%);
555
     * 5 - Pauta (valor).
556
     */
557 10
    public function setModBCST(int $modBCST): void
558
    {
559 10
        $this->modBCST = $modBCST;
560 10
    }
561
562
    /**
563
     * @return float
564
     */
565 3
    public function getPMVAST(): float
566
    {
567 3
        return $this->pMVAST;
568
    }
569
570
    /**
571
     * @param float $pMVAST
572
     */
573 4
    public function setPMVAST(?float $pMVAST): void
574
    {
575 4
        $this->pMVAST = $pMVAST;
576 4
    }
577
578
    /**
579
     * @return float
580
     */
581 3
    public function getPRedBCST(): float
582
    {
583 3
        return $this->pRedBCST;
584
    }
585
586
    /**
587
     * @param float $pRedBCST
588
     */
589 4
    public function setPRedBCST(float $pRedBCST): void
590
    {
591 4
        $this->pRedBCST = $pRedBCST;
592 4
    }
593
594
    /**
595
     * @return float
596
     */
597 3
    public function getVBCST(): float
598
    {
599 3
        return $this->vBCST;
600
    }
601
602
    /**
603
     * @param float $vBCST
604
     */
605 4
    public function setVBCST(float $vBCST): void
606
    {
607 4
        $this->vBCST = $vBCST;
608 4
    }
609
610
    /**
611
     * @return float
612
     */
613 2
    public function getPICMSST(): ?float
614
    {
615 2
        return $this->pICMSST;
616
    }
617
618
    /**
619
     * @param string $ufOrigem
620
     * @param string $ufDestino
621
     */
622 26
    public function setPICMSST(string $ufOrigem, string $ufDestino): void
623
    {
624 26
        $path = realpath(__DIR__ . '/../storage') . '/';
625 26
        $picmsstFile = file_get_contents($path . 'picmsst.json');
626 26
        $picmsstList = json_decode($picmsstFile, true);
627 26
        foreach ($picmsstList as $picmsst) {
628 26
            if ($picmsst['uf'] === $ufOrigem) {
629 26
                $this->pICMSST = (float) $picmsst['uf' . $ufDestino];
630
            }
631
        }
632 26
    }
633
634
    /**
635
     * @return float
636
     */
637 3
    public function getVICMSST(): float
638
    {
639 3
        return $this->vICMSST;
640
    }
641
642
    /**
643
     * @param mixed $vICMSST
644
     */
645 3
    public function setVICMSST(float $vICMSST): void
646
    {
647 3
        $this->vICMSST = $vICMSST;
648 3
    }
649
650
    /**
651
     * @return string
652
     */
653 1
    public function getUFST(): string
654
    {
655 1
        return $this->UFST;
656
    }
657
658
    /**
659
     * @param string $UFST
660
     */
661 1
    public function setUFST(string $UFST): void
662
    {
663 1
        $this->UFST = $UFST;
664 1
    }
665
666
    /**
667
     * @return float
668
     */
669 1
    public function getPBCop(): float
670
    {
671 1
        return $this->pBCop;
672
    }
673
674
    /**
675
     * @param float $pBCop
676
     */
677 1
    public function setPBCop(float $pBCop): void
678
    {
679 1
        $this->pBCop = $pBCop;
680 1
    }
681
682
    /**
683
     * @return float
684
     */
685 1
    public function getVBCSTRet(): float
686
    {
687 1
        return $this->vBCSTRet;
688
    }
689
690
    /**
691
     * @param float $vBCSTRet
692
     */
693 1
    public function setVBCSTRet(float $vBCSTRet): void
694
    {
695 1
        $this->vBCSTRet = $vBCSTRet;
696 1
    }
697
698
    /**
699
     * @return float
700
     */
701 1
    public function getVICMSSTRet(): float
702
    {
703 1
        return $this->vICMSSTRet;
704
    }
705
706
    /**
707
     * @param float $vICMSSTRet
708
     */
709 1
    public function setVICMSSTRet(float $vICMSSTRet): void
710
    {
711 1
        $this->vICMSSTRet = $vICMSSTRet;
712 1
    }
713
714
    /**
715
     * @return int
716
     */
717 1
    public function getMotDesICMS(): int
718
    {
719 1
        return $this->motDesICMS;
720
    }
721
722
    /**
723
     * @param int $motDesICMS
724
     */
725 1
    public function setMotDesICMS(int $motDesICMS): void
726
    {
727 1
        $this->motDesICMS = $motDesICMS;
728 1
    }
729
730
    /**
731
     * @return float
732
     */
733 1
    public function getVBCSTDest(): float
734
    {
735 1
        return $this->vBCSTDest;
736
    }
737
738
    /**
739
     * @param float $vBCSTDest
740
     */
741 1
    public function setVBCSTDest(float $vBCSTDest): void
742
    {
743 1
        $this->vBCSTDest = $vBCSTDest;
744 1
    }
745
746
    /**
747
     * @return float
748
     */
749 1
    public function getVICMSSTDest(): float
750
    {
751 1
        return $this->vICMSSTDest;
752
    }
753
754
    /**
755
     * @param float $vICMSSTDest
756
     */
757 1
    public function setVICMSSTDest(float $vICMSSTDest): void
758
    {
759 1
        $this->vICMSSTDest = $vICMSSTDest;
760 1
    }
761
762
    /**
763
     * @return float
764
     */
765 1
    public function getPCredSN(): float
766
    {
767 1
        return $this->pCredSN;
768
    }
769
770
    /**
771
     * @param float $pCredSN
772
     */
773 1
    public function setPCredSN(float $pCredSN): void
774
    {
775 1
        $this->pCredSN = $pCredSN;
776 1
    }
777
778
    /**
779
     * @return float
780
     */
781 1
    public function getVCredICMSSN(): float
782
    {
783 1
        return $this->vCredICMSSN;
784
    }
785
786
    /**
787
     * @param float $vCredICMSSN
788
     */
789 1
    public function setVCredICMSSN(float $vCredICMSSN): void
790
    {
791 1
        $this->vCredICMSSN = $vCredICMSSN;
792 1
    }
793
794
    /**
795
     * @return float
796
     */
797 1
    public function getVICMSDeson(): float
798
    {
799 1
        return $this->vICMSDeson;
800
    }
801
802
    /**
803
     * @param float $vICMSDeson
804
     */
805 1
    public function setVICMSDeson(float $vICMSDeson): void
806
    {
807 1
        $this->vICMSDeson = $vICMSDeson;
808 1
    }
809
810
    /**
811
     * @return float
812
     */
813 1
    public function getVICMSOp(): float
814
    {
815 1
        return $this->vICMSOp;
816
    }
817
818
    /**
819
     * @param float $vICMSOp
820
     */
821 1
    public function setVICMSOp(float $vICMSOp): void
822
    {
823 1
        $this->vICMSOp = $vICMSOp;
824 1
    }
825
826
    /**
827
     * @return float
828
     */
829 1
    public function getPDif(): float
830
    {
831 1
        return $this->pDif;
832
    }
833
834
    /**
835
     * @param float $pDif
836
     */
837 1
    public function setPDif(float $pDif): void
838
    {
839 1
        $this->pDif = $pDif;
840 1
    }
841
842
    /**
843
     * @return float
844
     */
845 1
    public function getVICMSDif(): float
846
    {
847 1
        return $this->vICMSDif;
848
    }
849
850
    /**
851
     * @param float $vICMSDif
852
     */
853 1
    public function setVICMSDif(float $vICMSDif): void
854
    {
855 1
        $this->vICMSDif = $vICMSDif;
856 1
    }
857
858
    /**
859
     * @return float
860
     */
861 1
    public function getVBCFCP(): float
862
    {
863 1
        return $this->vBCFCP;
864
    }
865
866
    /**
867
     * @param float $vBCFCP
868
     */
869 1
    public function setVBCFCP(float $vBCFCP): void
870
    {
871 1
        $this->vBCFCP = $vBCFCP;
872 1
    }
873
874
    /**
875
     * @return float
876
     */
877 1
    public function getPFCP(): float
878
    {
879 1
        return $this->pFCP;
880
    }
881
882
    /**
883
     * @param float $pFCP
884
     */
885 1
    public function setPFCP(float $pFCP): void
886
    {
887 1
        $this->pFCP = $pFCP;
888 1
    }
889
890
    /**
891
     * @return float
892
     */
893 1
    public function getVFCP(): float
894
    {
895 1
        return $this->vFCP;
896
    }
897
898
    /**
899
     * @param float $vFCP
900
     */
901 1
    public function setVFCP(float $vFCP): void
902
    {
903 1
        $this->vFCP = $vFCP;
904 1
    }
905
906
    /**
907
     * @return float
908
     */
909 1
    public function getVBCFCPST(): float
910
    {
911 1
        return $this->vBCFCPST;
912
    }
913
914
    /**
915
     * @param float $vBCFCPST
916
     */
917 1
    public function setVBCFCPST(float $vBCFCPST): void
918
    {
919 1
        $this->vBCFCPST = $vBCFCPST;
920 1
    }
921
922
    /**
923
     * @return float
924
     */
925 1
    public function getPFCPST(): float
926
    {
927 1
        return $this->pFCPST;
928
    }
929
930
    /**
931
     * @param float $pFCPST
932
     */
933 1
    public function setPFCPST(float $pFCPST): void
934
    {
935 1
        $this->pFCPST = $pFCPST;
936 1
    }
937
938
    /**
939
     * @return float
940
     */
941 1
    public function getVFCPST(): float
942
    {
943 1
        return $this->vFCPST;
944
    }
945
946
    /**
947
     * @param float $vFCPST
948
     */
949 1
    public function setVFCPST(float $vFCPST): void
950
    {
951 1
        $this->vFCPST = $vFCPST;
952 1
    }
953
954
    /**
955
     * @return float
956
     */
957 1
    public function getVBCFCPSTRet(): float
958
    {
959 1
        return $this->vBCFCPSTRet;
960
    }
961
962
    /**
963
     * @param float $vBCFCPSTRet
964
     */
965 1
    public function setVBCFCPSTRet(float $vBCFCPSTRet): void
966
    {
967 1
        $this->vBCFCPSTRet = $vBCFCPSTRet;
968 1
    }
969
970
    /**
971
     * @return float
972
     */
973 1
    public function getPFCPSTRet(): float
974
    {
975 1
        return $this->pFCPSTRet;
976
    }
977
978
    /**
979
     * @param float $pFCPSTRet
980
     */
981 1
    public function setPFCPSTRet(float $pFCPSTRet): void
982
    {
983 1
        $this->pFCPSTRet = $pFCPSTRet;
984 1
    }
985
986
    /**
987
     * @return float
988
     */
989 1
    public function getVFCPSTRet(): float
990
    {
991 1
        return $this->vFCPSTRet;
992
    }
993
994
    /**
995
     * @param float $vFCPSTRet
996
     */
997 1
    public function setVFCPSTRet(float $vFCPSTRet): void
998
    {
999 1
        $this->vFCPSTRet = $vFCPSTRet;
1000 1
    }
1001
1002
    /**
1003
     * @return float
1004
     */
1005 1
    public function getPST(): float
1006
    {
1007 1
        return $this->pST;
1008
    }
1009
1010
    /**
1011
     * @param float $pST
1012
     */
1013 1
    public function setPST(float $pST): void
1014
    {
1015 1
        $this->pST = $pST;
1016 1
    }
1017
}
1018