Skip to content

Commit

Permalink
Merge pull request #1019 from robmachado/master
Browse files Browse the repository at this point in the history
ajustes Credito Presumido NT 2019.001 v1.61
  • Loading branch information
robmachado authored Feb 12, 2024
2 parents 1373f38 + bc20226 commit c659273
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 30 deletions.
31 changes: 29 additions & 2 deletions docs/Make.md
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,26 @@ $std->nFCI;
$nfe->tagprod($std);
```

### function tagCreditoPresumidoProd($std): void
Node opcional com dados de Crédito Presumido, são permitidos até 4 registros por item

| Parâmetro | Tipo | Descrição |
| :--- | :---: |:-----------------------------------------------------------------------|
|item|inteiro| Número do item da NFe |
|cCredPresumido|string|Código de Benefício Fiscal de Crédito Presumido na UF aplicado ao item |
|pCredPresumido|numerico|Percentual do Crédito Presumido |
|vCredPresumido|numerico|Valor do Crédito Presumido |

```php
$std = new \stdClass();
$std->item = 1;
$std->cCredPresumido = '2222211234';
$std->pCredPresumido = '4';
$std->vCredPresumido = '4';

$make->tagCreditoPresumidoProd($std);
```

### function taginfAdProd($std):DOMElement
Node de informações adicionais do produto

Expand Down Expand Up @@ -460,6 +480,7 @@ $std->tpViaTransp;
$std->vAFRMM;
$std->tpIntermedio;
$std->CNPJ;
$std->CPF; //NT 2023.004 v1.00
$std->UFTerceiro;
$std->cExportador;

Expand Down Expand Up @@ -746,7 +767,9 @@ $std->adRemICMSRet; //NT 2023.001-v1.10
$std->vICMSMonoRet; //NT 2023.001-v1.10
$std->vICMSMonoDif; //NT 2023.001-v1.10
$std->vICMSMonoRet; //NT 2023.001-v1.10

$std->adRemICMSRet;
$std->cBenefRBC; //NT 2019.001 v1.61
$std->indDeduzDeson; //NT 2023.004 v1.00
$nfe->tagICMS($std);
```

Expand Down Expand Up @@ -1337,13 +1360,17 @@ Node com o detalhamento da forma de pagamento **OBRIGATÓRIO para NFCe e NFe lay
| $std | stdClass | contêm os dados dos campos, nomeados conforme manual |
```php
$std = new stdClass();
$std->indPag = '0'; //0= Pagamento à Vista 1= Pagamento à Prazo
$std->tPag = '03';
$std->vPag = 200.00; //Obs: deve ser informado o valor pago pelo cliente
$std->CNPJ = '12345678901234';
$std->tBand = '01';
$std->cAut = '3333333';
$std->tpIntegra = 1; //incluso na NT 2015/002
$std->indPag = '0'; //0= Pagamento à Vista 1= Pagamento à Prazo
$std->CNPJPag; //NT 2023.004 v1.00
$std->UFPag; //NT 2023.004 v1.00
$std->CNPJReceb; //NT 2023.004 v1.00
$std->idTermPag; //NT 2023.004 v1.00

$nfe->tagdetPag($std);
```
Expand Down
80 changes: 52 additions & 28 deletions src/Make.php
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,10 @@ class Make
* @var array of DOMElements
*/
protected $aProd = [];
/**
* @var array
*/
protected $aProdCreditoPresumido = [];
/**
* @var array of DOMElements
*/
Expand Down Expand Up @@ -1736,6 +1740,27 @@ public function taginfAdProd(stdClass $std): DOMElement
return $infAdProd;
}

/**
* Detalhamento do crédito presumido do item da NFe
* Grupo opcional para informações do Crédito Presumido. Obs.: A exigência do preenchimento das informações
* do crédito presumido fica a critério de cada UF
* tag NFe/infNFe/det[]/prod/[cCredPresumido, pCredPresumido, vCredPresumido]
* NT 2019.001 v1.61
* @param stdClass $std
* @return void
*/
public function tagCreditoPresumidoProd(stdClass $std)
{
$possible = ['item', 'cCredPresumido', 'pCredPresumido', 'vCredPresumido'];
$std = $this->equilizeParameters($std, $possible);
$this->aProdCreditoPresumido[] = [
'item' => $std->item,
'cCredPresumido' => $std->cCredPresumido,
'pCredPresumido' => $this->conditionalNumberFormatting($std->pCredPresumido, 4),
'vCredPresumido' => $this->conditionalNumberFormatting($std->vCredPresumido, 2)
];
}

/**
* Detalhamento de Produtos e Serviços I01 pai H01
* tag NFe/infNFe/det[]/prod
Expand Down Expand Up @@ -1770,10 +1795,7 @@ public function tagprod(stdClass $std): DOMElement
'indTot',
'xPed',
'nItemPed',
'nFCI',
'cCredPresumido',
'pCredPresumido',
'vCredPresumido'
'nFCI'
];
$std = $this->equilizeParameters($std, $possible);
//totalizador
Expand Down Expand Up @@ -1851,30 +1873,6 @@ public function tagprod(stdClass $std): DOMElement
false,
$identificador . "[item $std->item] Código de Benefício Fiscal utilizado pela UF"
);
//NT 2019.001 v1.60
$this->dom->addChild(
$prod,
"cCredPresumido",
$std->cCredPresumido ?? null,
false,
$identificador . "[item $std->item] Código de Benefício Fiscal de Crédito Presumido na UF aplicado ao item"
);
//NT 2019.001 v1.60
$this->dom->addChild(
$prod,
"pCredPresumido",
$this->conditionalNumberFormatting($std->pCredPresumido, 4),
false,
$identificador . "[item $std->item] Percentual do Crédito Presumido"
);
//NT 2019.001 v1.60
$this->dom->addChild(
$prod,
"vCredPresumido",
$this->conditionalNumberFormatting($std->vCredPresumido, 2),
false,
$identificador . "[item $std->item] Valor do Crédito Presumido"
);
$this->dom->addChild(
$prod,
"EXTIPI",
Expand Down Expand Up @@ -7860,6 +7858,32 @@ protected function buildDet()
}
}
}
//insere credito presumido
$it = [];
foreach ($this->aProdCreditoPresumido as $cp) {
$scp = (object) $cp;
$prod = $this->aProd[$scp->item];
$cBenef = $prod->getElementsByTagName("cBenef")->item(0);
if (empty($cBenef)) {
break;
}
if (!empty($prod->getElementsByTagName("EXTIPI")->item(0))) {
$node = $prod->getElementsByTagName("EXTIPI")->item(0);
} else {
$node = $prod->getElementsByTagName("CFOP")->item(0);
}
$it[$scp->item]++;
if ($it[$scp->item] > 4) {
$this->errors[] = "Item {$scp->item} não pode ter mais de 4 registros de Credito Presumido";
continue;
}
$ccp = $this->dom->createElement('cCredPresumido', $scp->cCredPresumido);
$pcp = $this->dom->createElement('pCredPresumido', $scp->pCredPresumido);
$vcp = $this->dom->createElement('vCredPresumido', $scp->vCredPresumido);
$prod->insertBefore($ccp, $node);
$prod->insertBefore($pcp, $node);
$prod->insertBefore($vcp, $node);
}
//insere DI
foreach ($this->aDI as $nItem => $aDI) {
$prod = $this->aProd[$nItem];
Expand Down

0 comments on commit c659273

Please sign in to comment.