diff --git a/README.md b/README.md index b6c54183..66c6fcc1 100755 --- a/README.md +++ b/README.md @@ -10,7 +10,9 @@ Biblioteca para geração e comunicação das NFe com as SEFAZ autorizadoras, e - NT 2021.004 v1.20 Regras de Validação e Novos Campos (válido em produção a partir de 16/05/2022) - NT 2023.001 v1.10 Criação e atualização de regras de validação para atender o regime de tributação monofásica do ICMS nas operações com combustíveis (válido a partir de 30/03/2023) - NT 2023.001 v1.20 Tributação Monofásica sobre Combustíveis (Homologação em 20/04/2023 e em produção em 01/05/2023) - +- NT 2019.001 v1.60 Criação e Atualização de Regras de Validação +- NT 2023.004 v1.00 Evento de Conciliação Financeira + > **NOTA: Estas NT afetam principalmente o uso do TXT para conversão em XML, mesmo que os campos ainda não sejam exigidos.** ## TODO: A conversão com o PADRÃO SEBRAE ainda está incompleta!! diff --git a/schemes/PL_009_V4/leiauteNFe_v4.00.xsd b/schemes/PL_009_V4/leiauteNFe_v4.00.xsd index 6d7f42fd..b31a930b 100755 --- a/schemes/PL_009_V4/leiauteNFe_v4.00.xsd +++ b/schemes/PL_009_V4/leiauteNFe_v4.00.xsd @@ -14,6 +14,9 @@ + + + @@ -913,6 +916,29 @@ Formato ”CFOP9999”. + + + + Código de Benefício Fiscal de Crédito Presumido na UF aplicado ao item + + + + + + + + + + + Percentual do Crédito Presumido + + + + + Valor do Crédito Presumido + + + Código EX TIPI (3 posições) @@ -1047,7 +1073,7 @@ Formato ”CFOP9999”. - Numero do Documento de Importação DI/DSI/DA/DRI-E (DI/DSI/DA/DRI-E) (NT2011/004) + Número do Documento de Importação (DI, DSI, DIRE, DUImp) (NT2011/004) @@ -1084,7 +1110,7 @@ Formato ”CFOP9999”. - Via de transporte internacional informada na DI + Via de transporte internacional informada na DI ou na Declaração Única de Importação (DUImp): 1-Maritima;2-Fluvial;3-Lacustre;4-Aerea;5-Postal;6-Ferroviaria;7-Rodoviaria;8-Conduto;9-Meios Proprios;10-Entrada/Saida Ficta; 11-Courier;12-Em maos;13-Por reboque. @@ -1126,11 +1152,18 @@ Formato ”CFOP9999”. - - - CNPJ do adquirente ou do encomendante - - + + + + CNPJ do adquirente ou do encomendante + + + + + CPF do adquirente ou do encomendante + + + Sigla da UF do adquirente ou do encomendante @@ -1166,7 +1199,7 @@ Formato ”CFOP9999”. - Número seqüencial do item dentro da Adição + Número seqüencial do item @@ -1188,7 +1221,7 @@ Formato ”CFOP9999”. - Valor do desconto do item da DI – adição + Valor do desconto do item @@ -1293,7 +1326,7 @@ Formato ”CFOP9999”. Número do lote do produto. - + @@ -1803,7 +1836,7 @@ N-NormalVIN Descrição do Produto conforme ANP. Utilizar a descrição de produtos do Sistema de Informações de Movimentação de Produtos - SIMP (http://www.anp.gov.br/simp/). - + @@ -2465,6 +2498,20 @@ ambiente. + + + Indica se o valor do ICMS desonerado (vICMSDeson) deduz do valor do item (vProd): +0=Valor do ICMS desonerado (vICMSDeson) não deduz do valor do item (vProd) / total da NF-e; +1=Valor do ICMS desonerado (vICMSDeson) deduz do valor do item (vProd) / total da NF-e. + + + + + + + + + @@ -2583,6 +2630,20 @@ ambiente. + + + Indica se o valor do ICMS desonerado (vICMSDeson) deduz do valor do item (vProd): +0=Valor do ICMS desonerado (vICMSDeson) não deduz do valor do item (vProd) / total da NF-e; +1=Valor do ICMS desonerado (vICMSDeson) deduz do valor do item (vProd) / total da NF-e. + + + + + + + + + @@ -2661,15 +2722,27 @@ Informar o motivo da desoneração: + + + Indica se o valor do ICMS desonerado (vICMSDeson) deduz do valor do item (vProd): +0=Valor do ICMS desonerado (vICMSDeson) não deduz do valor do item (vProd) / total da NF-e; +1=Valor do ICMS desonerado (vICMSDeson) deduz do valor do item (vProd) / total da NF-e. + + + + + + + + + - Tributção pelo ICMS -51 - Diferimento -A exigência do preenchimento das informações do ICMS diferido fica à critério de cada UF. + Tributção pelo ICMS 51 - Diferimento. A exigência do preenchimento das informações do ICMS diferido fica à critério de cada UF. @@ -2715,6 +2788,17 @@ A exigência do preenchimento das informações do ICMS diferido fica à critér Percentual de redução da BC + + + Código de Benefício Fiscal na UF aplicado ao item quando houver RBC. + + + + + + + + Valor da BC do ICMS @@ -3151,6 +3235,20 @@ A exigência do preenchimento das informações do ICMS diferido fica à critér + + + Indica se o valor do ICMS desonerado (vICMSDeson) deduz do valor do item (vProd): +0=Valor do ICMS desonerado (vICMSDeson) não deduz do valor do item (vProd) / total da NF-e; +1=Valor do ICMS desonerado (vICMSDeson) deduz do valor do item (vProd) / total da NF-e. + + + + + + + + + @@ -3348,6 +3446,20 @@ A exigência do preenchimento das informações do ICMS diferido fica à critér + + + Indica se o valor do ICMS desonerado (vICMSDeson) deduz do valor do item (vProd): +0=Valor do ICMS desonerado (vICMSDeson) não deduz do valor do item (vProd) / total da NF-e; +1=Valor do ICMS desonerado (vICMSDeson) deduz do valor do item (vProd) / total da NF-e. + + + + + + + + + @@ -4238,7 +4350,7 @@ Operação interestadual para consumidor final com partilha do ICMS devido na o Código do serviço prestado dentro do município - + @@ -4266,7 +4378,7 @@ Operação interestadual para consumidor final com partilha do ICMS devido na o Número do Processo administrativo ou judicial de suspenção do processo - + @@ -5678,17 +5790,34 @@ Substituição Tributaria; Valor do Pagamento. Esta tag poderá ser omitida quando a tag tPag=90 (Sem Pagamento), caso contrário deverá ser preenchida. + + + Data do Pagamento + + + + + + CNPJ transacional do pagamento - Preencher informando o CNPJ do estabelecimento onde o pagamento foi processado/transacionado/recebido quando a emissão do documento fiscal ocorrer em estabelecimento distinto + + + + + UF do CNPJ do estabelecimento onde o pagamento foi processado/transacionado/recebido. + + + - Grupo de Cartões + Grupo de Cartões, PIX, Boletos e outros Pagamentos Eletrônicos - Tipo de Integração do processo de pagamento com o sistema de automação da empresa/ - 1=Pagamento integrado com o sistema de automação da empresa Ex. equipamento TEF , Comercio Eletronico - 2=Pagamento não integrado com o sistema de automação da empresa Ex: equipamento POS + Tipo de Integração do processo de pagamento com o sistema de automação da empresa: +1 - Pagamento integrado com o sistema de automação da empresa (Ex.: equipamento TEF, Comércio Eletrônico, POS Integrado); +2 - Pagamento não integrado com o sistema de automação da empresa (Ex.: equipamento POS Simples). @@ -5716,12 +5845,28 @@ Substituição Tributaria; - Número de autorização da operação cartão de crédito/débito + Número de autorização da operação com cartões, PIX, boletos e outros pagamentos eletrônicos - + + + + + + + CNPJ do beneficiário do pagamento + + + + + Identificador do terminal de pagamento + + + + + @@ -5871,7 +6016,8 @@ concessório 1 - Justiça Federal; 2 - Justiça Estadual; 3 - Secex/RFB; -9 - Outros +4 - CONFAZ; +9 - Outros. @@ -5880,6 +6026,7 @@ concessório + @@ -5889,9 +6036,11 @@ concessório Tipo do ato concessório Para origem do Processo na SEFAZ (indProc=0), informar o tipo de ato concessório: -08=Termo de Acordo; -10=Regime Especial; -12=Autorização específica; +08 - Termo de Acordo; +10 - Regime Especial; +12 - Autorização específica; +14 - Ajuste SINIEF; +15 - Convênio ICMS. @@ -5899,6 +6048,8 @@ tipo de ato concessório: + + @@ -6117,7 +6268,7 @@ tipo de ato concessório: Solicitação do pedido de emissão da NFF - + @@ -6172,7 +6323,7 @@ tipo de ato concessório: Informar a URL da "Consulta por chave de acesso da NFC-e". A mesma URL que deve estar informada no DANFE NFC-e para consulta por chave de acesso. - + diff --git a/src/Make.php b/src/Make.php index f15852a7..e5855b46 100755 --- a/src/Make.php +++ b/src/Make.php @@ -1770,7 +1770,10 @@ public function tagprod(stdClass $std): DOMElement 'indTot', 'xPed', 'nItemPed', - 'nFCI' + 'nFCI', + 'cCredPresumido', + 'pCredPresumido', + 'vCredPresumido' ]; $std = $this->equilizeParameters($std, $possible); //totalizador @@ -1848,6 +1851,30 @@ 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", @@ -2112,6 +2139,7 @@ public function tagDI(stdClass $std): DOMElement 'vAFRMM', 'tpIntermedio', 'CNPJ', + 'CPF', 'UFTerceiro', 'cExportador' ]; @@ -2176,13 +2204,23 @@ public function tagDI(stdClass $std): DOMElement true, $identificador . "[item $std->item] Forma de importação quanto a intermediação" ); - $this->dom->addChild( - $tDI, - "CNPJ", - $std->CNPJ, - false, - $identificador . "[item $std->item] CNPJ do adquirente ou do encomendante" - ); + if (!empty($std->CNPJ)) { + $this->dom->addChild( + $tDI, + "CNPJ", + $std->CNPJ, + false, + $identificador . "[item $std->item] CNPJ do adquirente ou do encomendante" + ); + } else { + $this->dom->addChild( + $tDI, + "CPF", + $std->CPF, + false, + $identificador . "[item $std->item] CPF do adquirente ou do encomendante" + ); + } $this->dom->addChild( $tDI, "UFTerceiro", @@ -3019,7 +3057,9 @@ public function tagICMS(stdClass $std): DOMElement 'vICMSMonoReten', 'vICMSMonoDif', 'vICMSMonoRet', - 'adRemICMSRet' + 'adRemICMSRet', + 'cBenefRBC', + 'indDeduzDeson' ]; $std = $this->equilizeParameters($std, $possible); $identificador = 'N01 - '; @@ -3454,6 +3494,15 @@ public function tagICMS(stdClass $std): DOMElement false, "$identificador [item $std->item] Motivo da desoneração do ICMS" ); + //NT 2023.004 v1.00 + $this->dom->addChild( + $icms, + 'indDeduzDeson', + $std->indDeduzDeson, + false, + "$identificador [item $std->item] Indica se o valor do ICMS desonerado (vICMSDeson) " + . "deduz do valor do item (vProd)." + ); break; case '30': $this->stdTot->vICMSDeson += (float) !empty($std->vICMSDeson) ? $std->vICMSDeson : 0; @@ -3554,6 +3603,15 @@ public function tagICMS(stdClass $std): DOMElement false, "$identificador [item $std->item] Motivo da desoneração do ICMS" ); + //NT 2023.004 v1.00 + $this->dom->addChild( + $icms, + 'indDeduzDeson', + $std->indDeduzDeson, + false, + "$identificador [item $std->item] Indica se o valor do ICMS desonerado (vICMSDeson) " + . "deduz do valor do item (vProd)." + ); break; case '40': case '41': @@ -3588,6 +3646,15 @@ public function tagICMS(stdClass $std): DOMElement false, "$identificador [item $std->item] Motivo da desoneração do ICMS" ); + //NT 2023.004 v1.00 + $this->dom->addChild( + $icms, + 'indDeduzDeson', + $std->indDeduzDeson, + false, + "$identificador [item $std->item] Indica se o valor do ICMS desonerado (vICMSDeson) " + . "deduz do valor do item (vProd)." + ); break; case '51': $this->stdTot->vBC += (float) !empty($std->vBC) ? $std->vBC : 0; @@ -3623,6 +3690,14 @@ public function tagICMS(stdClass $std): DOMElement false, "$identificador [item $std->item] Percentual da Redução de BC" ); + $this->dom->addChild( + $icms, + 'cBenefRBC', + $std->cBenefRBC, + false, + "$identificador [item $std->item] Código de Benefício Fiscal na UF aplicado ao " + . "item quando houver RBC." + ); $this->dom->addChild( $icms, 'vBC', @@ -4078,6 +4153,15 @@ public function tagICMS(stdClass $std): DOMElement false, "$identificador [item $std->item] Motivo da desoneração do ICMS" ); + //NT 2023.004 v1.00 + $this->dom->addChild( + $icms, + 'indDeduzDeson', + $std->indDeduzDeson, + false, + "$identificador [item $std->item] Indica se o valor do ICMS desonerado (vICMSDeson) " + . "deduz do valor do item (vProd)." + ); $this->dom->addChild( $icms, 'vICMSSTDeson', @@ -4251,6 +4335,15 @@ public function tagICMS(stdClass $std): DOMElement false, "$identificador [item $std->item] Motivo da desoneração do ICMS" ); + //NT 2023.004 v1.00 + $this->dom->addChild( + $icms, + 'indDeduzDeson', + $std->indDeduzDeson, + false, + "$identificador [item $std->item] Indica se o valor do ICMS desonerado (vICMSDeson) " + . "deduz do valor do item (vProd)." + ); $this->dom->addChild( $icms, 'vICMSSTDeson', @@ -6913,7 +7006,11 @@ public function tagdetPag(stdClass $std): DOMElement 'CNPJ', 'tBand', 'cAut', - 'tpIntegra' + 'tpIntegra', + 'CNPJPag', + 'UFPag', + 'CNPJReceb', + 'idTermPag' ]; $std = $this->equilizeParameters($std, $possible); //padrão para layout 4.00 @@ -6946,6 +7043,23 @@ public function tagdetPag(stdClass $std): DOMElement true, "Valor do Pagamento" ); + //NT 2023.004 v1.00 + if (!empty($std->CNPJPag) && !empty($std->UFPag)) { + $this->dom->addChild( + $detPag, + "CNPJPag", + $std->CNPJPag, + false, + "CNPJ transacional do pagamento" + ); + $this->dom->addChild( + $detPag, + "UFPag", + $std->UFPag, + false, + "UF do CNPJ do estabelecimento onde o pagamento foi processado/transacionado/recebido" + ); + } if (!empty($std->tpIntegra)) { $card = $this->dom->createElement("card"); $this->dom->addChild( @@ -6976,6 +7090,22 @@ public function tagdetPag(stdClass $std): DOMElement false, "Número de autorização da operação cartão de crédito e/ou débito" ); + //NT 2023.004 v1.00 + $this->dom->addChild( + $card, + "CNPJReceb", + !empty($std->CNPJReceb) ? $std->CNPJReceb : null, + false, + "CNPJ do beneficiário do pagamento" + ); + //NT 2023.004 v1.00 + $this->dom->addChild( + $card, + "idTermPag", + !empty($std->idTermPag) ? $std->idTermPag : null, + false, + "Identificador do terminal de pagamento" + ); $this->dom->appChild($detPag, $card, "Inclusão do node Card"); } $node = !empty($this->pag->getElementsByTagName("vTroco")->item(0))