From 0b7f8a24bc8080148f1b4efbe0de723cc1d3be38 Mon Sep 17 00:00:00 2001 From: adriano_g3 Date: Mon, 15 Jun 2026 17:13:24 -0300 Subject: [PATCH] =?UTF-8?q?Adicionado=20Schemas=20para=20Valida=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20CNPJ=20Alfanum=C3=A9rico,=20retirado=20valida?= =?UTF-8?q?=C3=A7=C3=A3o=20num=C3=A9rica=20de=20propriedades=20CNPJ?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CTe.Classes/Informacoes/autXML.cs | 22 +- .../Servicos/DistribuicaoDFe/distDFeInt.cs | 26 +- CTe.Classes/Servicos/Evento/dest.cs | 33 +- NFe.AppTeste/MainWindow.xaml.cs | 3 +- .../Schemas/DFeTiposBasicos_v1.00.xsd | 475 +++++++++++++----- .../Schemas/leiauteConsSitNFe_v4.00.xsd | 3 +- NFe.AppTeste/Schemas/leiauteInutNFe_v4.00.xsd | 2 +- NFe.AppTeste/Schemas/leiauteNFe_v4.00.xsd | 174 ++++++- NFe.AppTeste/Schemas/nfe_v4.00.xsd | 3 +- NFe.AppTeste/Schemas/tiposBasico_v4.00.xsd | 22 +- NFe.Classes/Informacoes/Destinatario/dest.cs | 46 +- NFe.Classes/Informacoes/Emitente/emit.cs | 23 +- .../Informacoes/Transporte/transporta.cs | 22 +- NFe.Classes/Informacoes/autXML.cs | 22 +- NFe.Classes/Informacoes/entrega.cs | 22 +- NFe.Classes/Informacoes/retirada.cs | 22 +- .../Servicos/ConsultaCadastro/infConsEnv.cs | 33 +- .../Servicos/DistribuicaoDFe/distDFeInt.cs | 22 +- NFe.Classes/Servicos/Evento/dest.cs | 30 +- NFe.Classes/Servicos/Evento/infEventoEnv.cs | 22 +- NFe.Classes/Servicos/Evento/infEventoRet.cs | 22 +- 21 files changed, 696 insertions(+), 353 deletions(-) diff --git a/CTe.Classes/Informacoes/autXML.cs b/CTe.Classes/Informacoes/autXML.cs index b95f446b9..b2972fec9 100644 --- a/CTe.Classes/Informacoes/autXML.cs +++ b/CTe.Classes/Informacoes/autXML.cs @@ -16,13 +16,12 @@ public string CNPJ get { return cnpj; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cpf)) - cnpj = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cpf)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cnpj = value; } } @@ -34,13 +33,12 @@ public string CPF get { return cpf; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cnpj)) - cpf = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cnpj)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cpf = value; } } } diff --git a/CTe.Classes/Servicos/DistribuicaoDFe/distDFeInt.cs b/CTe.Classes/Servicos/DistribuicaoDFe/distDFeInt.cs index e27dfcf7b..3b6a5c32a 100644 --- a/CTe.Classes/Servicos/DistribuicaoDFe/distDFeInt.cs +++ b/CTe.Classes/Servicos/DistribuicaoDFe/distDFeInt.cs @@ -38,13 +38,12 @@ public string CNPJ get { return _cNPJ; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(_cPF)) - _cNPJ = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(_cPF)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + _cNPJ = value; } } @@ -56,13 +55,12 @@ public string CPF get { return _cPF; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(_cNPJ)) - _cPF = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(_cNPJ)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + _cPF = value; } } @@ -74,8 +72,6 @@ public string CPF /// /// A09 - Grupo para consultar um DF-e a partir de um NSU específico /// - public consNSU consNSU { get; set; } - - + public consNSU consNSU { get; set; } } } \ No newline at end of file diff --git a/CTe.Classes/Servicos/Evento/dest.cs b/CTe.Classes/Servicos/Evento/dest.cs index 80442024b..e74732b9a 100644 --- a/CTe.Classes/Servicos/Evento/dest.cs +++ b/CTe.Classes/Servicos/Evento/dest.cs @@ -27,13 +27,12 @@ public string CNPJ get { return _cnpj; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(CPF) & string.IsNullOrEmpty(idEstrangeiro)) - _cnpj = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(CPF) || !string.IsNullOrEmpty(idEstrangeiro)) throw new ArgumentException(ErroCpfCnpjIdEstrangeiroPreenchidos); - } + + _cnpj = value; } } @@ -45,13 +44,12 @@ public string CPF get { return _cpf; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(CNPJ) & string.IsNullOrEmpty(idEstrangeiro)) - _cpf = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(CNPJ) || !string.IsNullOrEmpty(idEstrangeiro)) throw new ArgumentException(ErroCpfCnpjIdEstrangeiroPreenchidos); - } + + _cpf = value; } } @@ -63,13 +61,12 @@ public string idEstrangeiro get { return _idEstrangeiro; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(CNPJ) & string.IsNullOrEmpty(CPF)) - _idEstrangeiro = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(CNPJ) || !string.IsNullOrEmpty(CPF)) throw new ArgumentException(ErroCpfCnpjIdEstrangeiroPreenchidos); - } + + _idEstrangeiro = value; } } diff --git a/NFe.AppTeste/MainWindow.xaml.cs b/NFe.AppTeste/MainWindow.xaml.cs index e34e9f67e..8c8204798 100644 --- a/NFe.AppTeste/MainWindow.xaml.cs +++ b/NFe.AppTeste/MainWindow.xaml.cs @@ -1431,7 +1431,8 @@ protected virtual dest GetDestinatario(VersaoServico versao, ModeloDocumento mod { var dest = new dest(versao) { - CNPJ = "99999999000191", + CNPJ = "0ZEN3MS8000127", + //CNPJ = "99999999000191", //CPF = "99999999999", }; dest.xNome = "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"; //Obrigatório para NFe e opcional para NFCe diff --git a/NFe.AppTeste/Schemas/DFeTiposBasicos_v1.00.xsd b/NFe.AppTeste/Schemas/DFeTiposBasicos_v1.00.xsd index 86da44c50..a5051dd02 100644 --- a/NFe.AppTeste/Schemas/DFeTiposBasicos_v1.00.xsd +++ b/NFe.AppTeste/Schemas/DFeTiposBasicos_v1.00.xsd @@ -1,5 +1,5 @@ - + @@ -28,7 +28,16 @@ - + + + Código de Classificação do Crédito Presumido do IBS e da CBS, conforme tabela cCredPres + + + + + + + Tipo Decimal com 15 dígitos, sendo 11 de corpo e 4 decimais @@ -37,7 +46,7 @@ - + Tipo Decimal com 11 inteiros, podendo ter 4 decimais (utilizado em tags opcionais) @@ -46,7 +55,7 @@ - + Tipo Decimal com 15 dígitos, sendo 13 de corpo e 2 decimais @@ -55,7 +64,7 @@ - + Tipo Decimal com até 3 dígitos inteiros, podendo ter de 2 até 4 decimais @@ -98,6 +107,14 @@ + + + Tipo Indicador de Doação + + + + + Grupo de informações da Tributação da NFCom @@ -109,7 +126,17 @@ + + + Indica se a operação é de doação + + + + + Informado conforme indicador no cClassTrib + + @@ -123,7 +150,37 @@ + + + Indica se a operação é de doação + + + + + + Informado conforme indicador no cClassTrib + + + + + + + Grupo de informações da Tributação da NFAg + + + + + Código Situação Tributária do IBS/CBS + + + + + + + Informado conforme indicador no cClassTrib + + @@ -137,7 +194,13 @@ + + + + Informado conforme indicador no cClassTrib + + @@ -151,7 +214,13 @@ + + + + Informado conforme indicador no cClassTrib + + @@ -165,6 +234,11 @@ + + + Indica se a operação é de doação + + @@ -182,11 +256,16 @@ + + + Indica se a operação é de doação + + - Informar essa opção da Choice para Monofasia + Informar essa opção da Choice para Monofasia (CST 620) @@ -194,10 +273,54 @@ Informar essa opção da Choice para o CST 800 + + + Informar essa opção da Choice para o CST 811 + + - + - Classificação de acordo com o art. 450, § 1º, da LC 214/25 para o cálculo do crédito presumido na ZFM + Informado conforme indicador no cClassTrib + + + + + + Crédito Presumido da Operação. Informado conforme indicador no cClassTrib. + + + + + Classificação de acordo com o art. 450, § 1º, da LC 214/25 para o cálculo do crédito presumido na ZFM. Informado conforme indicador no cClassTrib. + + + + + + + + Grupo de informações da Tributação da NFGas + + + + + Código Situação Tributária do IBS/CBS + + + + + + + + + Informar essa opção da Choice para Monofasia + + + + + + Informado conforme indicador no cClassTrib @@ -214,17 +337,17 @@ - + Valor do BC - + Alíquota do Imposto Seletivo (percentual) - + Alíquota do Imposto Seletivo (por valor) @@ -241,13 +364,13 @@ - + Quantidade com abse no campo uTrib informado - + Valor do Imposto Seletivo calculado @@ -260,7 +383,7 @@ Grupo de informações de totais do Imposto Seletivo - + Valor Total do Imposto Seletivo @@ -272,7 +395,7 @@ Grupo de informações de totais da CBS/IBS - + Total Base de Calculo @@ -289,17 +412,17 @@ - + Total do Diferimento - + Total de devoluções de tributos - + Valor total do IBS Estadual @@ -313,17 +436,17 @@ - + Total do Diferimento - + Total de devoluções de tributos - + Valor total do IBS Municipal @@ -331,21 +454,11 @@ - + Valor total do IBS - - - Total do Crédito Presumido - - - - - Total do Crédito Presumido Condição Suspensiva - - @@ -355,29 +468,38 @@ - + Total do Diferimento - + Total de devoluções de tributos - + Valor total da CBS - + + + + + + Totalização do estorno de crédito + + + + - Total do Crédito Presumido + Valor total do IBS estornado - + - Total do Crédito Presumido Condição Suspensiva + Valor total da CBS estornada @@ -390,7 +512,7 @@ Grupo de informações de totais da CBS/IBS com monofasia - + Total Base de Calculo @@ -407,17 +529,17 @@ - + Total do Diferimento - + Total de devoluções de tributos - + Valor total do IBS Estadual @@ -431,17 +553,17 @@ - + Total do Diferimento - + Total de devoluções de tributos - + Valor total do IBS Municipal @@ -449,17 +571,17 @@ - + Valor total do IBS - + Total do Crédito Presumido - + Total do Crédito Presumido Condição Suspensiva @@ -473,27 +595,27 @@ - + Total do Diferimento - + Total de devoluções de tributos - + Valor total da CBS - + Total do Crédito Presumido - + Total do Crédito Presumido Condição Suspensiva @@ -508,32 +630,32 @@ - + Valor total do IBS monofásico - + Valor total da CBS monofásica - + Valor total do IBS monofásico sujeito a retenção - + Valor total da CBS monofásica sujeita a retenção - + Valor do IBS monofásico retido anteriormente - + Valor da CBS monofásica retida anteriormente @@ -541,6 +663,25 @@ + + + Totalização do estorno de crédito + + + + + + Valor total do IBS estornado + + + + + Valor total da CBS estornada + + + + + @@ -557,27 +698,27 @@ - + Quantidade tributada na monofasia - + Alíquota ad rem do IBS - + Alíquota ad rem da CBS - + Valor do IBS monofásico - + Valor da CBS monofásica @@ -591,27 +732,27 @@ - + Quantidade tributada sujeita a retenção. - + Alíquota ad rem do IBS sujeito a retenção - + Valor do IBS monofásico sujeito a retenção - + Alíquota ad rem da CBS sujeita a retenção - + Valor da CBS monofásica sujeita a retenção @@ -625,27 +766,27 @@ - + Quantidade tributada retida anteriormente - + Alíquota ad rem do IBS retido anteriormente - + Valor do IBS retido anteriormente - + Alíquota ad rem da CBS retida anteriormente - + Valor da CBS retida anteriormente @@ -659,22 +800,22 @@ - + Percentual do diferimento do imposto monofásico - + Valor do IBS monofásico diferido - + Percentual do diferimento do imposto monofásico - + Valor da CBS monofásica diferida @@ -682,12 +823,12 @@ - + Total de IBS monofásico do item - + Total da CBS monofásica do item @@ -702,7 +843,7 @@ IBS / CBS - + Valor do BC @@ -714,9 +855,9 @@ - + - Aliquota do IBS de competência das UF + Aliquota do IBS de competência das UF (em percentual) @@ -734,7 +875,7 @@ Grupo de campos da redução de aliquota - + Valor do IBS de competência das UF @@ -748,9 +889,9 @@ - + - Aliquota do IBS Municipal + Aliquota do IBS Municipal (em percentual) @@ -768,7 +909,7 @@ Grupo de campos da redução de aliquota - + Valor do IBS Municipal @@ -776,7 +917,7 @@ - + Valor do IBS @@ -788,9 +929,9 @@ - + - Aliquota da CBS + Aliquota da CBS (em percentual) @@ -808,7 +949,7 @@ Grupo de campos da redução de aliquota - + Valor da CBS @@ -821,16 +962,6 @@ Grupo de informações da Tributação Regular. Informar como seria a tributação caso não cumprida a condição resolutória/suspensiva. Exemplo 1: Art. 442, §4. Operações com ZFM e ALC. Exemplo 2: Operações com suspensão do tributo. - - - Grupo de Informações do Crédito Presumido referente ao IBS, quando aproveitado pelo emitente do documento. - - - - - Grupo de Informações do Crédito Presumido referente a CBS, quando aproveitado pelo emitente do documento. - - Grupo de informações da composição do valor do IBS e da CBS em compras governamental @@ -843,14 +974,14 @@ Tipo Redução Base de Cálculo - + Percentual de redução de aliquota do cClassTrib - + - Aliquota Efetiva que será aplicada a Base de Calculo + Aliquota Efetiva que será aplicada a Base de Calculo (em percentual) @@ -860,23 +991,18 @@ Tipo Crédito Presumido - - - Usar tabela Cred Presumido, para o emitente da nota. - - - + Percentual do Crédito Presumido - + Valor do Crédito Presumido - + Valor do Crédito Presumido Condição Suspensiva, preencher apenas para cCredPres que possui indicação de Condição Suspensiva @@ -889,12 +1015,12 @@ Tipo Diferimento - + Percentual do diferimento - + Valor do diferimento @@ -906,7 +1032,7 @@ Tipo Devolução Tributo - + Valor do tributo devolvido. No fornecimento de energia elétrica, água, esgoto e gás natural e em outras hipóteses definidas no regulamento @@ -930,37 +1056,37 @@ gás natural e em outras hipóteses definidas no regulamento Informar qual seria o cClassTrib caso não cumprida a condição resolutória/suspensiva - + Alíquota do IBS da UF Informar como seria a Alíquota caso não cumprida a condição resolutória/suspensiva - + Valor do IBS da UF Informar como seria o valor do Tributo caso não cumprida a condição resolutória/suspensiva - + Alíquota do IBS do Município Informar como seria a Alíquota caso não cumprida a condição resolutória/suspensiva - + Valor do IBS do Município Informar como seria o valor do Tributo caso não cumprida a condição resolutória/suspensiva - + Alíquota da CBS Informar como seria a Alíquota caso não cumprida a condição resolutória/suspensiva - + Valor da CBS Informar como seria o valor do Tributo caso não cumprida a condição resolutória/suspensiva @@ -973,20 +1099,20 @@ gás natural e em outras hipóteses definidas no regulamento Tipo Tributação Compra Governamental - - + + Valor que seria devido a UF, sem aplicação do Art. 473. da LC 214/2025 - - + + Valor que seria devido ao município, sem aplicação do Art. 473. da LC 214/2025 - - + + Valor que seria devido a CBS, sem aplicação do Art. 473. da LC 214/2025 @@ -1008,9 +1134,9 @@ gás natural e em outras hipóteses definidas no regulamento 4=Municípios - + - Percentual de redução de aliquota em compra goverrnamental + Percentual de redução de aliquota em compra governamental @@ -1030,9 +1156,9 @@ gás natural e em outras hipóteses definidas no regulamento 4=Municípios - + - Percentual de redução de aliquota em compra goverrnamental + Percentual de redução de aliquota em compra governamental @@ -1049,23 +1175,102 @@ gás natural e em outras hipóteses definidas no regulamento Tipo Transferência de Crédito - + Valor do IBS a ser transferido - + Valor da CBS a ser transferida + + + Tipo Estorno de Crédito + + + + + Valor do IBS a ser estornado + + + + + Valor da CBS a ser estornada + + + + + + + Ano e mês referência do período de apuração (AAAA-MM) + + + + + + + + Tipo Ajuste de Competência + + + + + Ano e mês referência do período de apuração (AAAA-MM) + + + + + Valor do IBS + + + + + Valor da CBS + + + + + + + Tipo Crédito Presumido da Operação + + + + + Valor da Base de Cálculo do Crédito Presumido da Operação + + + + + Código de Classificação do Crédito Presumido do IBS e da CBS + + + + + Grupo de Informações do Crédito Presumido referente ao IBS, quando aproveitado pelo emitente do documento. + + + + + Grupo de Informações do Crédito Presumido referente a CBS, quando aproveitado pelo emitente do documento. + + + + Tipo Informações do crédito presumido de IBS para fornecimentos a partir da ZFM + + + Ano e mês referência do período de apuração (AAAA-MM) + + Classificação de acordo com o art. 450, § 1º, da LC 214/25 para o cálculo do crédito presumido na ZFM @@ -1078,7 +1283,7 @@ OBS: Percentuais definidos no art. 450, § 1º, da LC 214/25 para o cálculo do - + Valor do crédito presumido calculado sobre o saldo devedor apurado diff --git a/NFe.AppTeste/Schemas/leiauteConsSitNFe_v4.00.xsd b/NFe.AppTeste/Schemas/leiauteConsSitNFe_v4.00.xsd index a56621542..a43c7e033 100644 --- a/NFe.AppTeste/Schemas/leiauteConsSitNFe_v4.00.xsd +++ b/NFe.AppTeste/Schemas/leiauteConsSitNFe_v4.00.xsd @@ -4,7 +4,6 @@ - @@ -316,7 +315,7 @@ - + diff --git a/NFe.AppTeste/Schemas/leiauteInutNFe_v4.00.xsd b/NFe.AppTeste/Schemas/leiauteInutNFe_v4.00.xsd index 819597c1a..886e05d0f 100644 --- a/NFe.AppTeste/Schemas/leiauteInutNFe_v4.00.xsd +++ b/NFe.AppTeste/Schemas/leiauteInutNFe_v4.00.xsd @@ -76,7 +76,7 @@ - + diff --git a/NFe.AppTeste/Schemas/leiauteNFe_v4.00.xsd b/NFe.AppTeste/Schemas/leiauteNFe_v4.00.xsd index 12d2c07dc..9409ba120 100644 --- a/NFe.AppTeste/Schemas/leiauteNFe_v4.00.xsd +++ b/NFe.AppTeste/Schemas/leiauteNFe_v4.00.xsd @@ -94,6 +94,11 @@ SCAN 900-999 Data e Hora da saída ou de entrada da mercadoria / produto (AAAA-MM-DDTHH:mm:ssTZD) + + + Data da previsão de entrega ou disponibilização do bem (AAAA-MM-DD) + + Tipo do Documento Fiscal (0 - entrada; 1 - saída) @@ -269,7 +274,8 @@ Campo preenchido somente quando “indPres = 5 (Operação presencial, fora do e 1 - emissão de NF-e avulsa pelo Fisco; 2 - emissão de NF-e avulsa, pelo contribuinte com seu certificado digital, através do site do Fisco; -3- emissão de NF-e pelo contribuinte com aplicativo fornecido pelo Fisco. +3 - emissão de NF-e pelo contribuinte com aplicativo fornecido pelo Fisco; +4 - emissão de NF-e por Provedor de Assinatura e Autorização - PAA. @@ -502,7 +508,7 @@ Preencher com "2B", quando se tratar de Cupom Fiscal emitido por máqu - + Chave de acesso da NF-e de antecipação de pagamento @@ -993,6 +999,11 @@ Formato ”CFOP9999”. + + + Classificação para subapuração do IBS na ZFM + + Código EX TIPI (3 posições) @@ -2551,13 +2562,15 @@ ambiente. - Motivo da desoneração do ICMS:3-Uso na agropecuária;9-Outros;12-Fomento agropecuário + Motivo da desoneração do ICMS:3-Uso na agropecuária;9-Outros; 10=Deficiente Condutor (Convênio ICMS 38/12); 11=Deficiente Não Condutor (Convênio ICMS 38/12); 12-Fomento agropecuário + + @@ -3391,11 +3404,39 @@ Informar o motivo da desoneração: Percentual de redução da BC + + + Código de Benefício Fiscal na UF aplicado ao item quando houver RBC. + + + + + + + + Alíquota do ICMS + + + + Valor do ICMS da Operação + + + + + Percentual do diferemento + + + + + Valor do ICMS da diferido + + + Valor do ICMS @@ -3418,6 +3459,23 @@ Informar o motivo da desoneração: + + + + Percentual do diferimento do ICMS relativo ao Fundo de Combate à Pobreza (FCP). + + + + + Valor do ICMS relativo ao Fundo de Combate à Pobreza (FCP) diferido. + + + + + Valor efetivo do ICMS relativo ao Fundo de Combate à Pobreza (FCP). + + + @@ -3565,12 +3623,14 @@ Operação interestadual para consumidor final com partilha do ICMS devido na o Tributação pelo ICMS 10 - Tributada e com cobrança do ICMS por substituição tributária; +20 – Redução de base de cálculo 90 – Outros. + @@ -3689,6 +3749,43 @@ Operação interestadual para consumidor final com partilha do ICMS devido na o Sigla da UF para qual é devido o ICMS ST da operação. + + + Grupo desoneração + + + + Valor do ICMS de desoneração + + + + + Motivo da desoneração do ICMS:9-Outros;10=Deficiente Condutor (Convênio ICMS 38/12) 11=Deficiente Não Condutor (Convênio ICMS 38/12) + + + + + + + + + + + + + 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. + + + + + + + + + + @@ -6477,6 +6574,40 @@ tipo de ato concessório: + + + Grupo de Informação do Provedor de Assinatura e Autorização + + + + + + CNPJ do Provedor de Assinatura e Autorização + + + + + Assinatura RSA do Emitente para DFe gerados por PAA + + + + + + Assinatura digital padrão RSA + Converter o atributo Id do DFe para array de bytes e assinar com a chave privada do RSA com algoritmo SHA1 gerando um valor no formato base64. + + + + + Chave Publica no padrão XML RSA Key + + + + + + + + @@ -6489,7 +6620,7 @@ tipo de ato concessório: - + @@ -6515,15 +6646,15 @@ tipo de ato concessório: - + - + - + - + - + @@ -7345,7 +7476,15 @@ alterado para tamanho variavel 1-4. (NT2011/004) - Tipo de Nota de Débito: 01=Transferência de créditos para Cooperativas; 02=Anulação de Crédito por Saídas Imunes/Isentas; 03=Débitos de notas fiscais não processadas na apuração; 04=Multa e juros; 05=Transferência de crédito de sucessão); 06=Pagamento antecipado; 07=Perda em estoque + Tipo de Nota de Débito: + 01=Transferência de créditos para Cooperativas; + 02=Anulação de Crédito por Saídas Imunes/Isentas; + 03=Débitos de notas fiscais não processadas na apuração; + 04=Multa e juros; + 05=Transferência de crédito na sucessão; + 06=Pagamento antecipado; + 07=Perda em estoque; + 08=Desenquadramento do SN; @@ -7356,16 +7495,26 @@ alterado para tamanho variavel 1-4. (NT2011/004) + - Tipo de Nota de Crédito: 01=Multa e juros; 02=Apropriação de crédito presumido de IBS sobre o saldo devedor na ZFM (art. 450, § 1º, LC 214/25) + Tipo de Nota de Crédito: + 01=Multa e juros; + 02=Apropriação de crédito presumido de IBS sobre o saldo devedor na ZFM (art. 450, § 1º, LC 214/25); + 03=Retorno por recusa na entrega ou por não localização do destinatário na tentativa de entrega; + 04=Redução de valores; + 05=Transferência de crédito na sucessão; + + + + @@ -7378,6 +7527,7 @@ alterado para tamanho variavel 1-4. (NT2011/004) + @@ -7554,4 +7704,4 @@ alterado para tamanho variavel 1-4. (NT2011/004) - \ No newline at end of file + diff --git a/NFe.AppTeste/Schemas/nfe_v4.00.xsd b/NFe.AppTeste/Schemas/nfe_v4.00.xsd index 4fe917aea..5b2eb0810 100644 --- a/NFe.AppTeste/Schemas/nfe_v4.00.xsd +++ b/NFe.AppTeste/Schemas/nfe_v4.00.xsd @@ -1,4 +1,5 @@ + @@ -6,4 +7,4 @@ Nota Fiscal Eletrônica - + \ No newline at end of file diff --git a/NFe.AppTeste/Schemas/tiposBasico_v4.00.xsd b/NFe.AppTeste/Schemas/tiposBasico_v4.00.xsd index dfabc3366..4445319c9 100644 --- a/NFe.AppTeste/Schemas/tiposBasico_v4.00.xsd +++ b/NFe.AppTeste/Schemas/tiposBasico_v4.00.xsd @@ -1,4 +1,5 @@ + @@ -52,7 +53,7 @@ - + @@ -92,7 +93,7 @@ - + @@ -102,7 +103,7 @@ - + @@ -112,7 +113,7 @@ - + @@ -521,7 +522,7 @@ - + @@ -595,4 +596,13 @@ - + + + Tipo que representa uma chave publica padrão RSA + + + + + + + \ No newline at end of file diff --git a/NFe.Classes/Informacoes/Destinatario/dest.cs b/NFe.Classes/Informacoes/Destinatario/dest.cs index df6e40e78..8132cf7e3 100644 --- a/NFe.Classes/Informacoes/Destinatario/dest.cs +++ b/NFe.Classes/Informacoes/Destinatario/dest.cs @@ -1,15 +1,15 @@ +using DFe.Classes.Flags; using System; using System.Xml.Serialization; -using DFe.Classes.Flags; -using NFe.Classes.Servicos.Tipos; namespace NFe.Classes.Informacoes.Destinatario { public class dest { - private const string ErroCpfCnpjPreenchidos = "Somente preencher um dos campos: CNPJ ou CPF, para um objeto do tipo dest!"; + private const string ErroCpfCnpjIdEstrangeiroPreenchidos = "Somente preencher um dos campos: CNPJ, CPF ou idEstrangeiro, para um objeto do tipo dest!"; private string cnpj; private string cpf; + private string _idEstrangeiro; private readonly VersaoServico _versao; /// @@ -34,13 +34,12 @@ public string CNPJ get { return cnpj; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cpf)) - cnpj = value; - else - { - throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cpf) || !string.IsNullOrEmpty(idEstrangeiro)) + throw new ArgumentException(ErroCpfCnpjIdEstrangeiroPreenchidos); + + cnpj = value; } } @@ -52,20 +51,31 @@ public string CPF get { return cpf; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cnpj)) - cpf = value; - else - { - throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cnpj) || !string.IsNullOrEmpty(idEstrangeiro)) + throw new ArgumentException(ErroCpfCnpjIdEstrangeiroPreenchidos); + + cpf = value; } } /// /// E03a - Identificador do destinatário, em caso de comprador estrangeiro /// - public string idEstrangeiro { get; set; } + public string idEstrangeiro + { + get { return _idEstrangeiro; } + set + { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(CNPJ) || !string.IsNullOrEmpty(CPF)) + throw new ArgumentException(ErroCpfCnpjIdEstrangeiroPreenchidos); + + _idEstrangeiro = value; + } + } /// /// E04 - Razão Social ou nome do destinatário diff --git a/NFe.Classes/Informacoes/Emitente/emit.cs b/NFe.Classes/Informacoes/Emitente/emit.cs index 130fd1cea..3d85aa7f6 100644 --- a/NFe.Classes/Informacoes/Emitente/emit.cs +++ b/NFe.Classes/Informacoes/Emitente/emit.cs @@ -17,14 +17,12 @@ public string CNPJ get { return _cnpj; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(_cpf)) - _cnpj = Regex.Match(value, @"\d+").Value; - - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(_cpf)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + _cnpj = value; } } @@ -36,13 +34,12 @@ public string CPF get { return _cpf; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(_cnpj)) - _cpf = Regex.Match(value, @"\d+").Value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(_cnpj)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + _cpf = value; } } diff --git a/NFe.Classes/Informacoes/Transporte/transporta.cs b/NFe.Classes/Informacoes/Transporte/transporta.cs index 301c59e0e..6ed5f97d1 100644 --- a/NFe.Classes/Informacoes/Transporte/transporta.cs +++ b/NFe.Classes/Informacoes/Transporte/transporta.cs @@ -16,13 +16,12 @@ public string CNPJ get { return cnpj; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cpf)) - cnpj = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cpf)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cnpj = value; } } @@ -34,13 +33,12 @@ public string CPF get { return cpf; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cnpj)) - cpf = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cnpj)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cpf = value; } } diff --git a/NFe.Classes/Informacoes/autXML.cs b/NFe.Classes/Informacoes/autXML.cs index 1fca847ad..d0e16ac0b 100644 --- a/NFe.Classes/Informacoes/autXML.cs +++ b/NFe.Classes/Informacoes/autXML.cs @@ -16,13 +16,12 @@ public string CNPJ get { return cnpj; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cpf)) - cnpj = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cpf)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cnpj = value; } } @@ -34,13 +33,12 @@ public string CPF get { return cpf; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cnpj)) - cpf = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cnpj)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cpf = value; } } } diff --git a/NFe.Classes/Informacoes/entrega.cs b/NFe.Classes/Informacoes/entrega.cs index bd9d4372c..b9ca42d80 100644 --- a/NFe.Classes/Informacoes/entrega.cs +++ b/NFe.Classes/Informacoes/entrega.cs @@ -17,13 +17,12 @@ public string CNPJ get { return cnpj; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cpf)) - cnpj = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cpf)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cnpj = value; } } @@ -35,13 +34,12 @@ public string CPF get { return cpf; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cnpj)) - cpf = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cnpj)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cpf = value; } } diff --git a/NFe.Classes/Informacoes/retirada.cs b/NFe.Classes/Informacoes/retirada.cs index 6b190f784..b5268890f 100644 --- a/NFe.Classes/Informacoes/retirada.cs +++ b/NFe.Classes/Informacoes/retirada.cs @@ -17,13 +17,12 @@ public string CNPJ get { return cnpj; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cpf)) - cnpj = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cpf)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cnpj = value; } } @@ -35,13 +34,12 @@ public string CPF get { return cpf; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cnpj)) - cpf = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cnpj)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cpf = value; } } diff --git a/NFe.Classes/Servicos/ConsultaCadastro/infConsEnv.cs b/NFe.Classes/Servicos/ConsultaCadastro/infConsEnv.cs index d342db4f9..5ae1f4072 100644 --- a/NFe.Classes/Servicos/ConsultaCadastro/infConsEnv.cs +++ b/NFe.Classes/Servicos/ConsultaCadastro/infConsEnv.cs @@ -33,13 +33,12 @@ public string IE get { return _ie; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(CNPJ) & string.IsNullOrEmpty(CPF)) - _ie = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(CNPJ) || !string.IsNullOrEmpty(CPF)) throw new ArgumentException(ErroCpfCnpjIePreenchidos); - } + + _ie = value; } } @@ -52,13 +51,12 @@ public string CNPJ get { return _cnpj; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(CPF) & string.IsNullOrEmpty(IE)) - _cnpj = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(CPF) || !string.IsNullOrEmpty(IE)) throw new ArgumentException(ErroCpfCnpjIePreenchidos); - } + + _cnpj = value; } } @@ -71,13 +69,12 @@ public string CPF get { return _cpf; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(CNPJ) & string.IsNullOrEmpty(IE)) - _cpf = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(CNPJ) || !string.IsNullOrEmpty(IE)) throw new ArgumentException(ErroCpfCnpjIePreenchidos); - } + + _cpf = value; } } } diff --git a/NFe.Classes/Servicos/DistribuicaoDFe/distDFeInt.cs b/NFe.Classes/Servicos/DistribuicaoDFe/distDFeInt.cs index 9954fdeab..c2352deac 100644 --- a/NFe.Classes/Servicos/DistribuicaoDFe/distDFeInt.cs +++ b/NFe.Classes/Servicos/DistribuicaoDFe/distDFeInt.cs @@ -38,13 +38,12 @@ public string CNPJ get { return _cNPJ; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(_cPF)) - _cNPJ = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(_cPF)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + _cNPJ = value; } } @@ -56,13 +55,12 @@ public string CPF get { return _cPF; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(_cNPJ)) - _cPF = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(_cNPJ)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + _cPF = value; } } diff --git a/NFe.Classes/Servicos/Evento/dest.cs b/NFe.Classes/Servicos/Evento/dest.cs index 3a84c0b8d..8c93b51d7 100644 --- a/NFe.Classes/Servicos/Evento/dest.cs +++ b/NFe.Classes/Servicos/Evento/dest.cs @@ -26,13 +26,12 @@ public string CNPJ get { return _cnpj; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(CPF) & string.IsNullOrEmpty(idEstrangeiro)) - _cnpj = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(CPF) || !string.IsNullOrEmpty(idEstrangeiro)) throw new ArgumentException(ErroCpfCnpjIdEstrangeiroPreenchidos); - } + + _cnpj = value; } } @@ -44,13 +43,12 @@ public string CPF get { return _cpf; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(CNPJ) & string.IsNullOrEmpty(idEstrangeiro)) - _cpf = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(CNPJ) || !string.IsNullOrEmpty(idEstrangeiro)) throw new ArgumentException(ErroCpfCnpjIdEstrangeiroPreenchidos); - } + + _cpf = value; } } @@ -63,12 +61,10 @@ public string idEstrangeiro set { if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(CNPJ) & string.IsNullOrEmpty(CPF)) - _idEstrangeiro = value; - else - { + if (!string.IsNullOrEmpty(CNPJ) || !string.IsNullOrEmpty(CPF)) throw new ArgumentException(ErroCpfCnpjIdEstrangeiroPreenchidos); - } + + _idEstrangeiro = value; } } diff --git a/NFe.Classes/Servicos/Evento/infEventoEnv.cs b/NFe.Classes/Servicos/Evento/infEventoEnv.cs index acbcee2aa..8371af591 100644 --- a/NFe.Classes/Servicos/Evento/infEventoEnv.cs +++ b/NFe.Classes/Servicos/Evento/infEventoEnv.cs @@ -37,13 +37,12 @@ public string CNPJ get { return cnpj; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cpf)) - cnpj = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cpf)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cnpj = value; } } @@ -55,13 +54,12 @@ public string CPF get { return cpf; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cnpj)) - cpf = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cnpj)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cpf = value; } } diff --git a/NFe.Classes/Servicos/Evento/infEventoRet.cs b/NFe.Classes/Servicos/Evento/infEventoRet.cs index 51d3eebbd..8fc1fbabe 100644 --- a/NFe.Classes/Servicos/Evento/infEventoRet.cs +++ b/NFe.Classes/Servicos/Evento/infEventoRet.cs @@ -78,13 +78,12 @@ public string CNPJDest get { return cnpj; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cpf)) - cnpj = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cpf)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cnpj = value; } } @@ -96,13 +95,12 @@ public string CPFDest get { return cpf; } set { - if (string.IsNullOrEmpty(value)) return; - if (string.IsNullOrEmpty(cnpj)) - cpf = value; - else - { + if (string.IsNullOrEmpty(value)) + return; + if (!string.IsNullOrEmpty(cnpj)) throw new ArgumentException(ErroCpfCnpjPreenchidos); - } + + cpf = value; } }