Ir para conteúdo
  • Cadastre-se

Painel de líderes

Conteúdo popular

Showing content with the highest reputation on 06-04-2018 em todas as áreas

  1. Boa tarde! A partir de segunda-feira 09/04 (ficará fora do ar das 8:00 as 18:00) o ambiente de produção restrita passará a operacionalizar na versão 2.4.02 do layout. http://portal.esocial.gov.br/noticias/producao-restrita-sera-atualizada-para-a-versao-2-4-02-do-leiaute-em-09-04 Outra notícia importante é que a partir de segunda-feira (09/04) também começa a funcionar o eSocial Web para as as empresas, que poderão consultar os eventos enviados, o conteúdo, os recibos, etc. Também haverá a possibilidade de incluir/alterar/retificar/excluir os eventos diretamente pelo ambiente nas versões futuras. http://portal.esocial.gov.br/noticias/esocial-web-para-empresas-e-regras-de-eventos-extemporaneos-entram-em-producao-em-09-04
    2 pontos
  2. Boa noite, Apenas um ajuste para quem estiver passando pela "Rejeição: Total da NF difere do somatório dos Valores compõe o valor Total da NF." na hora de "ValidarRegrasdeNegocios". Os campos vFCPST e vIPIDevol foram incluídos no somatório dos valores que compõe a valor da NF. function NotaFiscal.ValidarRegrasdeNegocios: Boolean; var Erros: String; I: Integer; Inicio, Agora: TDateTime; fsvTotTrib, fsvBC, fsvICMS, fsvICMSDeson, fsvBCST, fsvST, fsvFCPST, fsvProd, fsvFrete : Currency; fsvSeg, fsvDesc, fsvII, fsvIPI, fsIPIDevol, fsvPIS, fsvCOFINS, fsvOutro, fsvServ, fsvNF, fsvTotPag : Currency; FaturamentoDireto, NFImportacao : Boolean; procedure GravaLog(AString: String); begin //DEBUG //Log := Log + FormatDateTime('hh:nn:ss:zzz',Now) + ' - ' + AString + sLineBreak; end; procedure AdicionaErro(const Erro: String); begin Erros := Erros + Erro + sLineBreak; end; begin Inicio := Now; Agora := IncMinute(Now,5); //Aceita uma tolerância de até 5 minutos, devido ao sincronismo de horário do servidor da Empresa e o servidor da SEFAZ. GravaLog('Inicio da Validação'); with TACBrNFe(TNotasFiscais(Collection).ACBrNFe) do begin Erros := ''; GravaLog('Validar: 701-versão'); if NFe.infNFe.Versao < 3.10 then AdicionaErro('701-Rejeição: Versão inválida'); GravaLog('Validar 512-Chave de acesso'); if not ValidarConcatChave then //A03-10 AdicionaErro( '502-Rejeição: Erro na Chave de Acesso - Campo Id não corresponde à concatenação dos campos correspondentes'); GravaLog('Validar 226-IF'); if copy(IntToStr(NFe.Emit.EnderEmit.cMun), 1, 2) <> IntToStr(Configuracoes.WebServices.UFCodigo) then //B02-10 AdicionaErro('226-Rejeição: Código da UF do Emitente diverge da UF autorizadora'); // 702-Rejeição: NFC-e não é aceita pela UF do Emitente GravaLog('Validar: 503-Serie'); if (NFe.Ide.serie > 899) and //B07-20 (NFe.Ide.tpEmis <> teSCAN) then AdicionaErro('503-Rejeição: Série utilizada fora da faixa permitida no SCAN (900-999)'); GravaLog('Validar: 703-Data hora'); if (NFe.Ide.dEmi > Agora) then //B09-10 AdicionaErro('703-Rejeição: Data-Hora de Emissão posterior ao horário de recebimento'); GravaLog('Validar: 228-Data Emissão'); if ((Agora - NFe.Ide.dEmi) > 30) then //B09-20 AdicionaErro('228-Rejeição: Data de Emissão muito atrasada'); //GB09.02 - Data de Emissão posterior à 31/03/2011 //GB09.03 - Data de Recepção posterior à 31/03/2011 e tpAmb (B24) = 2 GravaLog('Validar: 253-Digito Chave'); if not ValidarChave(NFe.infNFe.ID) then AdicionaErro('253-Rejeição: Digito Verificador da chave de acesso composta inválida'); GravaLog('Validar: 270-Digito Municipio Fato Gerador'); if not ValidarMunicipio(NFe.Ide.cMunFG) then //B12-10 AdicionaErro('270-Rejeição: Código Município do Fato Gerador: dígito inválido'); GravaLog('Validar: 271-Municipio Fato Gerador diferente'); if (UFparaCodigo(NFe.Emit.EnderEmit.UF) <> StrToIntDef( copy(IntToStr(NFe.Ide.cMunFG), 1, 2), 0)) then//GB12.1 AdicionaErro('271-Rejeição: Código Município do Fato Gerador: difere da UF do emitente'); GravaLog('Validar: 570-Tipo de Emissão SCAN/SVC'); if ((NFe.Ide.tpEmis in [teSCAN, teSVCAN, teSVCRS]) and (Configuracoes.Geral.FormaEmissao = teNormal)) then //B22-30 AdicionaErro( '570-Rejeição: Tipo de Emissão 3, 6 ou 7 só é válido nas contingências SCAN/SVC'); GravaLog('Validar: 571-Tipo de Emissão SCAN'); if ((NFe.Ide.tpEmis <> teSCAN) and (Configuracoes.Geral.FormaEmissao = teSCAN)) then //B22-40 AdicionaErro('571-Rejeição: Tipo de Emissão informado diferente de 3 para contingência SCAN'); GravaLog('Validar: 713-Tipo de Emissão SCAN/SVCRS'); if ((Configuracoes.Geral.FormaEmissao in [teSVCAN, teSVCRS]) and (not (NFe.Ide.tpEmis in [teSVCAN, teSVCRS]))) then //B22-60 AdicionaErro('713-Rejeição: Tipo de Emissão diferente de 6 ou 7 para contingência da SVC acessada'); //B23-10 GravaLog('Validar: 252-Ambiente'); if (NFe.Ide.tpAmb <> Configuracoes.WebServices.Ambiente) then //B24-10 AdicionaErro('252-Rejeição: Ambiente informado diverge do Ambiente de recebimento ' + '(Tipo do ambiente da NF-e difere do ambiente do Web Service)'); GravaLog('Validar: 266-Série'); if (not (NFe.Ide.procEmi in [peAvulsaFisco, peAvulsaContribuinte])) and (NFe.Ide.serie > 889) then //B26-10 AdicionaErro('266-Rejeição: Série utilizada fora da faixa permitida no Web Service (0-889)'); GravaLog('Validar: 451-Processo de emissão'); if (NFe.Ide.procEmi in [peAvulsaFisco, peAvulsaContribuinte]) and (NFe.Ide.serie < 890) and (NFe.Ide.serie > 899) then //B26-20 AdicionaErro('451-Rejeição: Processo de emissão informado inválido'); GravaLog('Validar: 370-Tipo de Emissão'); if (NFe.Ide.procEmi in [peAvulsaFisco, peAvulsaContribuinte]) and (NFe.Ide.tpEmis <> teNormal) then //B26-30 AdicionaErro('370-Rejeição: Nota Fiscal Avulsa com tipo de emissão inválido'); GravaLog('Validar: 556-Justificativa Entrada'); if (NFe.Ide.tpEmis = teNormal) and ((NFe.Ide.xJust > '') or (NFe.Ide.dhCont <> 0)) then //B28-10 AdicionaErro( '556-Justificativa de entrada em contingência não deve ser informada para tipo de emissão normal'); GravaLog('Validar: 557-Justificativa Entrada'); if (NFe.Ide.tpEmis in [teContingencia, teFSDA, teOffLine]) and (NFe.Ide.xJust = '') then //B28-20 AdicionaErro('557-A Justificativa de entrada em contingência deve ser informada'); GravaLog('Validar: 558-Data de Entrada'); if (NFe.Ide.dhCont > Agora) then //B28-30 AdicionaErro('558-Rejeição: Data de entrada em contingência posterior a data de recebimento'); GravaLog('Validar: 559-Data Entrada contingência'); if (NFe.Ide.dhCont > 0) and ((Agora - NFe.Ide.dhCont) > 30) then //B28-40 AdicionaErro('559-Rejeição: Data de entrada em contingência muito atrasada'); GravaLog('Validar: 207-CNPJ emitente'); if not ValidarCNPJ(NFe.Emit.CNPJCPF) then AdicionaErro('207-Rejeição: CNPJ do emitente inválido'); GravaLog('Validar: 272-Código Município'); if not ValidarMunicipio(NFe.Emit.EnderEmit.cMun) then AdicionaErro('272-Rejeição: Código Município do Emitente: dígito inválido'); GravaLog('Validar: 273-Código Município difere da UF'); if (UFparaCodigo(NFe.Emit.EnderEmit.UF) <> StrToIntDef( copy(IntToStr(NFe.Emit.EnderEmit.cMun), 1, 2), 0)) then AdicionaErro('273-Rejeição: Código Município do Emitente: difere da UF do emitente'); GravaLog('Validar: 229-IE não informada'); if EstaVazio(NFe.Emit.IE) then AdicionaErro('229-Rejeição: IE do emitente não informada'); GravaLog('Validar: 209-IE inválida'); if not ValidarIE(NFe.Emit.IE,NFe.Emit.EnderEmit.UF) then AdicionaErro('209-Rejeição: IE do emitente inválida '); GravaLog('Validar: 208-CNPJ destinatário'); if (Length(Trim(OnlyNumber(NFe.Dest.CNPJCPF))) >= 14) and not ValidarCNPJ(NFe.Dest.CNPJCPF) then AdicionaErro('208-Rejeição: CNPJ do destinatário inválido'); GravaLog('Validar: 513-EX'); if (NFe.Retirada.UF = 'EX') and (NFe.Retirada.cMun <> 9999999) then AdicionaErro('513-Rejeição: Código Município do Local de Retirada deve ser 9999999 para UF retirada = "EX"'); GravaLog('Validar: 276-Cod Município Retirada inválido'); if (NFe.Retirada.UF <> 'EX') and NaoEstaVazio(NFe.Retirada.xMun) and not ValidarMunicipio(NFe.Retirada.cMun) then AdicionaErro('276-Rejeição: Código Município do Local de Retirada: dígito inválido'); GravaLog('Validar: 277-Cod Município Retirada diferente UF'); if NaoEstaVazio(NFe.Retirada.UF) and (NFe.Retirada.cMun > 0)then if (UFparaCodigo(NFe.Retirada.UF) <> StrToIntDef( copy(IntToStr(NFe.Retirada.cMun), 1, 2), 0)) then AdicionaErro('277-Rejeição: Código Município do Local de Retirada: difere da UF do Local de Retirada'); GravaLog('Validar: 515-Cod Município Entrega EX'); if (NFe.Entrega.UF = 'EX') and (NFe.Entrega.cMun <> 9999999) then AdicionaErro('515-Rejeição: Código Município do Local de Entrega deve ser 9999999 para UF entrega = "EX"'); GravaLog('Validar: 278-Cod Município Entrega inválido'); if (NFe.Entrega.UF <> 'EX') and NaoEstaVazio(NFe.Entrega.xMun) and not ValidarMunicipio(NFe.Entrega.cMun) then AdicionaErro('278-Rejeição: Código Município do Local de Entrega: dígito inválido'); GravaLog('Validar: 279-Cod Município Entrega diferente UF'); if NaoEstaVazio(NFe.Entrega.UF)and (NFe.Entrega.cMun > 0) then if (UFparaCodigo(NFe.Entrega.UF) <> StrToIntDef( copy(IntToStr(NFe.Entrega.cMun), 1, 2), 0)) then AdicionaErro('279-Rejeição: Código Município do Local de Entrega: difere da UF do Local de Entrega'); GravaLog('Validar: 542-CNPJ Transportador'); if NaoEstaVazio(Trim(NFe.Transp.Transporta.CNPJCPF)) and (Length(Trim(OnlyNumber(NFe.Transp.Transporta.CNPJCPF))) >= 14) and not ValidarCNPJ(NFe.Transp.Transporta.CNPJCPF) then AdicionaErro('542-Rejeição: CNPJ do Transportador inválido'); GravaLog('Validar: 543-CPF Transportador'); if NaoEstaVazio(Trim(NFe.Transp.Transporta.CNPJCPF)) and (Length(Trim(OnlyNumber(NFe.Transp.Transporta.CNPJCPF))) <= 11) and not ValidarCPF(NFe.Transp.Transporta.CNPJCPF) then AdicionaErro('543-Rejeição: CPF do Transportador inválido'); GravaLog('Validar: 559-UF do Transportador'); if NaoEstaVazio(Trim(NFe.Transp.Transporta.IE)) and EstaVazio(Trim(NFe.Transp.Transporta.UF)) then AdicionaErro('559-Rejeição: UF do Transportador não informada'); GravaLog('Validar: 544-IE do Transportador'); if NaoEstaVazio(Trim(NFe.Transp.Transporta.IE)) and not ValidarIE(NFe.Transp.Transporta.IE,NFe.Transp.Transporta.UF) then AdicionaErro('544-Rejeição: IE do Transportador inválida'); if (NFe.Ide.modelo = 65) then //Regras válidas apenas para NFC-e - 65 begin GravaLog('Validar: 704-NFCe Data atrasada'); if (NFe.Ide.dEmi < IncMinute(Agora,-10)) and (NFe.Ide.tpEmis in [teNormal, teSCAN, teSVCAN, teSVCRS]) then //B09-40 AdicionaErro('704-Rejeição: NFC-e com Data-Hora de emissão atrasada'); GravaLog('Validar: 705-NFCe Data de entrada/saida'); if (NFe.Ide.dSaiEnt <> 0) then //B10-10 AdicionaErro('705-Rejeição: NFC-e com data de entrada/saída'); GravaLog('Validar: 706-NFCe operação entrada'); if (NFe.Ide.tpNF = tnEntrada) then //B11-10 AdicionaErro('706-Rejeição: NFC-e para operação de entrada'); GravaLog('Validar: 707-NFCe operação interestadual'); if (NFe.Ide.idDest <> doInterna) then //B11-10 AdicionaErro('707-NFC-e para operação interestadual ou com o exterior'); GravaLog('Validar: 709-NFCe formato DANFE'); if (not (NFe.Ide.tpImp in [tiNFCe, tiMsgEletronica])) then //B21-10 AdicionaErro('709-Rejeição: NFC-e com formato de DANFE inválido'); GravaLog('Validar: 712-NFCe contingência off-line'); if (NFe.Ide.tpEmis = teOffLine) and (AnsiIndexStr(NFe.Emit.EnderEmit.UF, ['SP']) <> -1) then //B22-20 AdicionaErro('712-Rejeição: NF-e com contingência off-line'); GravaLog('Validar: 782-NFCe e SCAN'); if (NFe.Ide.tpEmis = teSCAN) then //B22-50 AdicionaErro('782-Rejeição: NFC-e não é autorizada pelo SCAN'); GravaLog('Validar: 783-NFCe e SVC'); if (NFe.Ide.tpEmis in [teSVCAN, teSVCRS]) then //B22-70 AdicionaErro('783-Rejeição: NFC-e não é autorizada pela SVC'); GravaLog('Validar: 715-NFCe finalidade'); if (NFe.Ide.finNFe <> fnNormal) then //B25-20 AdicionaErro('715-Rejeição: Rejeição: NFC-e com finalidade inválida'); GravaLog('Validar: 716-NFCe operação'); if (NFe.Ide.indFinal = cfNao) then //B25a-10 AdicionaErro('716-Rejeição: NFC-e em operação não destinada a consumidor final'); GravaLog('Validar: 717-NFCe entrega'); if (not (NFe.Ide.indPres in [pcPresencial, pcEntregaDomicilio])) then //B25b-20 AdicionaErro('717-Rejeição: NFC-e em operação não presencial'); GravaLog('Validar: 785-NFCe entrega e UF'); if (NFe.Ide.indPres = pcEntregaDomicilio) and (AnsiIndexStr(NFe.Emit.EnderEmit.UF, ['XX']) <> -1) then //B25b-30 Qual estado não permite entrega a domicílio? AdicionaErro('785-Rejeição: NFC-e com entrega a domicílio não permitida pela UF'); GravaLog('Validar: 708-NFCe referenciada'); if (NFe.Ide.NFref.Count > 0) then AdicionaErro('708-Rejeição: NFC-e não pode referenciar documento fiscal'); GravaLog('Validar: 718-NFCe e IE de ST'); if NaoEstaVazio(Trim(NFe.Emit.IEST)) then AdicionaErro('718-Rejeição: NFC-e não deve informar IE de Substituto Tributário'); GravaLog('Validar: 787-NFCe entrega e Identificação'); if (NFe.Ide.indPres = pcEntregaDomicilio) and EstaVazio(Trim(nfe.Entrega.xLgr)) and EstaVazio(Trim(nfe.Dest.EnderDest.xLgr)) then AdicionaErro('787-Rejeição: NFC-e de entrega a domicílio sem a identificação do destinatário'); GravaLog('Validar: 789-NFCe e destinatário'); if (NFe.Dest.indIEDest <> inNaoContribuinte) then AdicionaErro('789-Rejeição: NFC-e para destinatário contribuinte de ICMS'); GravaLog('Validar: 729-NFCe IE destinatário'); if NaoEstaVazio(Trim(NFe.Dest.IE)) then AdicionaErro('729-Rejeição: NFC-e com informação da IE do destinatário'); GravaLog('Validar: 730-NFCe e SUFRAMA'); if NaoEstaVazio(Trim(NFe.Dest.ISUF)) then AdicionaErro('730-Rejeição: NFC-e com Inscrição Suframa'); GravaLog('Validar: 753-NFCe e Frete'); if (NFe.Transp.modFrete <> mfSemFrete) and (NFe.Ide.indPres <> pcEntregaDomicilio)then AdicionaErro('753-Rejeição: NFC-e com Frete'); GravaLog('Validar: 754-NFCe e dados Transporte'); if (NFe.Ide.indPres <> pcEntregaDomicilio) and ((trim(NFe.Transp.Transporta.CNPJCPF) <> '') or (trim(NFe.Transp.Transporta.xNome) <> '') or (trim(NFe.Transp.Transporta.IE) <> '') or (trim(NFe.Transp.Transporta.xEnder) <> '') or (trim(NFe.Transp.Transporta.xMun) <> '') or (trim(NFe.Transp.Transporta.UF) <> '')) then AdicionaErro('754-Rejeição: NFC-e com dados do Transportador'); GravaLog('Validar: 786-NFCe entrega domicilio e dados Transporte'); if (NFe.Ide.indPres = pcEntregaDomicilio) and ((trim(NFe.Transp.Transporta.CNPJCPF) = '') or (trim(NFe.Transp.Transporta.xNome) = '')) then AdicionaErro('786-Rejeição: NFC-e de entrega a domicílio sem dados do Transportador'); GravaLog('Validar: 755-NFCe retenção ICMS Transporte'); if (NFe.Transp.retTransp.vServ > 0) or (NFe.Transp.retTransp.vBCRet > 0) or (NFe.Transp.retTransp.pICMSRet > 0) or (NFe.Transp.retTransp.vICMSRet > 0) or (Trim(NFe.Transp.retTransp.CFOP) <> '') or (NFe.Transp.retTransp.cMunFG > 0) then AdicionaErro('755-Rejeição: NFC-e com dados de Retenção do ICMS no Transporte'); GravaLog('Validar: 756-NFCe dados veiculo Transporte'); if (Trim(NFe.Transp.veicTransp.placa) <> '') or (Trim(NFe.Transp.veicTransp.UF) <> '') or (Trim(NFe.Transp.veicTransp.RNTC) <> '') then AdicionaErro('756-Rejeição: NFC-e com dados do veículo de Transporte'); GravaLog('Validar: 757-NFCe dados reboque Transporte'); if NFe.Transp.Reboque.Count > 0 then AdicionaErro('757-Rejeição: NFC-e com dados de Reboque do veículo de Transporte'); GravaLog('Validar: 758-NFCe dados vagão Transporte'); if NaoEstaVazio(Trim(NFe.Transp.vagao)) then AdicionaErro('758-Rejeição: NFC-e com dados do Vagão de Transporte'); GravaLog('Validar: 759-NFCe dados Balsa Transporte'); if NaoEstaVazio(Trim(NFe.Transp.balsa)) then AdicionaErro('759-Rejeição: NFC-e com dados da Balsa de Transporte'); GravaLog('Validar: 760-NFCe entrega dados cobrança'); if (Trim(nfe.Cobr.Fat.nFat) <> '') or (NFe.Cobr.Fat.vOrig > 0) or (NFe.Cobr.Fat.vDesc > 0) or (NFe.Cobr.Fat.vLiq > 0) or (NFe.Cobr.Dup.Count > 0) then AdicionaErro('760-Rejeição: NFC-e com dados de cobrança (Fatura, Duplicata)'); GravaLog('Validar: 769-NFCe formas pagamento'); if NFe.pag.Count <= 0 then AdicionaErro('769-Rejeição: NFC-e deve possuir o grupo de Formas de Pagamento'); GravaLog('Validar: 762-NFCe dados de compra'); if Trim(NFe.compra.xNEmp) + Trim(NFe.compra.xPed) + Trim(NFe.compra.xCont) <> '' then AdicionaErro('762-Rejeição: NFC-e com dados de compras (Empenho, Pedido, Contrato)'); GravaLog('Validar: 763-NFCe dados cana'); if not(Trim(NFe.cana.safra) = '') or not(Trim(NFe.cana.ref) = '') or (NFe.cana.fordia.Count > 0) or (NFe.cana.deduc.Count > 0) then AdicionaErro('763-Rejeição: NFC-e com dados de aquisição de Cana'); end; if (NFe.Ide.modelo = 55) then //Regras válidas apenas para NF-e - 55 begin GravaLog('Validar: 504-Saida > 30'); if ((NFe.Ide.dSaiEnt - Agora) > 30) then //B10-20 - Facultativo AdicionaErro('504-Rejeição: Data de Entrada/Saída posterior ao permitido'); GravaLog('Validar: 505-Saida < 30'); if (NFe.Ide.dSaiEnt <> 0) and ((Agora - NFe.Ide.dSaiEnt) > 30) then //B10-30 - Facultativo AdicionaErro('505-Rejeição: Data de Entrada/Saída anterior ao permitido'); GravaLog('Validar: 506-Saida < Emissao'); if (NFe.Ide.dSaiEnt <> 0) and (NFe.Ide.dSaiEnt < NFe.Ide.dEmi) then //B10-40 - Facultativo AdicionaErro('506-Rejeição: Data de Saída menor que a Data de Emissão'); GravaLog('Validar: 710-Formato DANFE'); if (NFe.Ide.tpImp in [tiNFCe, tiMsgEletronica]) then //B21-20 AdicionaErro('710-Rejeição: NF-e com formato de DANFE inválido'); GravaLog('Validar: 711-NFe off-line'); if (NFe.Ide.tpEmis = teOffLine) then //B22-10 AdicionaErro('711-Rejeição: NF-e com contingência off-line'); GravaLog('Validar: 254-NFe complementar sem referenciada'); if (NFe.Ide.finNFe = fnComplementar) and (NFe.Ide.NFref.Count = 0) then //B25-30 AdicionaErro('254-Rejeição: NF-e complementar não possui NF referenciada'); GravaLog('Validar: 255-NFe complementar e muitas referenciada'); if (NFe.Ide.finNFe = fnComplementar) and (NFe.Ide.NFref.Count > 1) then //B25-40 AdicionaErro('255-Rejeição: NF-e complementar possui mais de uma NF referenciada'); GravaLog('Validar: 269-CNPJ Emitente NFe complementar'); if (NFe.Ide.finNFe = fnComplementar) and (NFe.Ide.NFref.Count = 1) and (((NFe.Ide.NFref.Items[0].RefNF.CNPJ > '') and (NFe.Ide.NFref.Items[0].RefNF.CNPJ <> NFe.Emit.CNPJCPF)) or ((NFe.Ide.NFref.Items[0].RefNFP.CNPJCPF > '') and (NFe.Ide.NFref.Items[0].RefNFP.CNPJCPF <> NFe.Emit.CNPJCPF))) then //B25-50 AdicionaErro( '269-Rejeição: CNPJ Emitente da NF Complementar difere do CNPJ da NF Referenciada'); GravaLog('Validar: 678-UF NFe referenciada e complementar'); if (NFe.Ide.finNFe = fnComplementar) and (NFe.Ide.NFref.Count = 1) and //Testa pelo número para saber se TAG foi preenchida (((NFe.Ide.NFref.Items[0].RefNF.nNF > 0) and (NFe.Ide.NFref.Items[0].RefNF.cUF <> UFparaCodigo( NFe.Emit.EnderEmit.UF))) or ((NFe.Ide.NFref.Items[0].RefNFP.nNF > 0) and (NFe.Ide.NFref.Items[0].RefNFP.cUF <> UFparaCodigo( NFe.Emit.EnderEmit.UF)))) then //B25-60 - Facultativo AdicionaErro('678-Rejeição: NF referenciada com UF diferente da NF-e complementar'); GravaLog('Validar: 321-NFe devolução sem referenciada'); if (NFe.Ide.finNFe = fnDevolucao) and (NFe.Ide.NFref.Count = 0) then //B25-70 AdicionaErro('321-Rejeição: NF-e devolução não possui NF referenciada'); GravaLog('Validar: 794-NFe e domicício NFCe'); if (NFe.Ide.indPres = pcEntregaDomicilio) then //B25b-10 AdicionaErro('794-Rejeição: NF-e com indicativo de NFC-e com entrega a domicílio'); // GravaLog('Validar: 719-NFe sem ident. destinatário'); // if (NFe.Dest.CNPJCPF = '') and // (NFe.Dest.idEstrangeiro = '') then // AdicionaErro('719-Rejeição: NF-e sem a identificação do destinatário'); GravaLog('Validar: 237-CPF destinatário '); if (Trim(OnlyNumber(NFe.Dest.CNPJCPF)) <> EmptyStr) and (Length(Trim(OnlyNumber(NFe.Dest.CNPJCPF))) <= 11) and not ValidarCPF(NFe.Dest.CNPJCPF) then AdicionaErro('237-Rejeição: CPF do destinatário inválido'); // GravaLog('Validar: 720-idEstrangeiro'); // if (nfe.Ide.idDest = doExterior) and // (EstaVazio(Trim(NFe.Dest.idEstrangeiro))) then // AdicionaErro('720-Rejeição: Na operação com Exterior deve ser informada tag idEstrangeiro'); GravaLog('Validar: 721-Op.Interstadual sem CPF/CNPJ'); if (nfe.Ide.idDest = doInterestadual) and (EstaVazio(Trim(NFe.Dest.CNPJCPF))) then AdicionaErro('721-Rejeição: Operação interestadual deve informar CNPJ ou CPF'); GravaLog('Validar: 723-Op.interna com idEstrangeiro'); if (nfe.Ide.idDest = doInterna) and (NaoEstaVazio(Trim(NFe.Dest.idEstrangeiro))) and (NFe.Ide.indFinal <> cfConsumidorFinal)then AdicionaErro('723-Rejeição: Operação interna com idEstrangeiro informado deve ser para consumidor final'); GravaLog('Validar: 724-Nome destinatário'); if EstaVazio(Trim(NFe.Dest.xNome)) then AdicionaErro('724-Rejeição: NF-e sem o nome do destinatário'); GravaLog('Validar: 726-Sem Endereço destinatário'); if EstaVazio(Trim(NFe.Dest.EnderDest.xLgr)) then AdicionaErro('726-Rejeição: NF-e sem a informação de endereço do destinatário'); GravaLog('Validar: 509-EX e município'); if (NFe.Dest.EnderDest.UF <> 'EX') and not ValidarMunicipio(NFe.Dest.EnderDest.cMun) then AdicionaErro('509-Rejeição: Informado código de município diferente de "9999999" para operação com o exterior'); GravaLog('Validar: 727-Op exterior e UF'); if (nfe.Ide.idDest = doExterior) and (NFe.Dest.EnderDest.UF <> 'EX') then AdicionaErro('727-Rejeição: Operação com Exterior e UF diferente de EX'); GravaLog('Validar: 771-Op.Interstadual e UF EX'); if (nfe.Ide.idDest = doInterestadual) and (NFe.Dest.EnderDest.UF = 'EX') then AdicionaErro('771-Rejeição: Operação Interestadual e UF de destino com EX'); GravaLog('Validar: 772-Op.Interstadual e UF igual'); if (nfe.Ide.idDest = doInterestadual) and (NFe.Dest.EnderDest.UF = NFe.Emit.EnderEmit.UF) then AdicionaErro('772-Rejeição: Operação Interestadual e UF de destino igual à UF do emitente'); GravaLog('Validar: 773-Op.Interna e UF diferente'); if (nfe.Ide.idDest = doInterna) and (NFe.Dest.EnderDest.UF <> NFe.Emit.EnderEmit.UF) and (NFe.Ide.indPres <> pcPresencial) then AdicionaErro('773-Rejeição: Operação Interna e UF de destino difere da UF do emitente - não presencial'); GravaLog('Validar: 790-Op.Exterior e Destinatário ICMS'); if (NFe.Ide.idDest = doExterior) and (NFe.Dest.indIEDest <> inNaoContribuinte) then AdicionaErro('790-Rejeição: Operação com Exterior para destinatário Contribuinte de ICMS'); if NFe.infNFe.Versao < 4 then begin GravaLog('Validar: 768-NFe < 4.0 com formas de pagamento'); if (NFe.pag.Count > 0) then AdicionaErro('768-Rejeição: NF-e não deve possuir o grupo de Formas de Pagamento'); end else begin GravaLog('Validar: 769-NFe >= 4.0 sem formas pagamento'); if (NFe.pag.Count <= 0) then AdicionaErro('769-Rejeição: NF-e deve possuir o grupo de Formas de Pagamento'); end; end; for I:=0 to NFe.autXML.Count-1 do begin GravaLog('Validar: 325-'+IntToStr(I)+'-CPF download'); if (Length(Trim(OnlyNumber(NFe.autXML[I].CNPJCPF))) <= 11) and not ValidarCPF(NFe.autXML[I].CNPJCPF) then AdicionaErro('325-Rejeição: CPF autorizado para download inválido'); GravaLog('Validar: 323-'+IntToStr(I)+'-CNPJ download'); if (Length(Trim(OnlyNumber(NFe.autXML[I].CNPJCPF))) > 11) and not ValidarCNPJ(NFe.autXML[I].CNPJCPF) then AdicionaErro('323-Rejeição: CNPJ autorizado para download inválido'); end; fsvTotTrib := 0; fsvBC := 0; fsvICMS := 0; fsvICMSDeson := 0; fsvBCST := 0; fsvST := 0; fsvFCPST := 0; fsvProd := 0; fsvFrete := 0; fsvSeg := 0; fsvDesc := 0; fsvII := 0; fsvIPI := 0; fsIPIDevol := 0; fsvPIS := 0; fsvCOFINS := 0; fsvOutro := 0; fsvServ := 0; FaturamentoDireto := False; NFImportacao := False; for I:=0 to NFe.Det.Count-1 do begin with NFe.Det[I] do begin if Trim(Prod.NCM) <> '00' then begin // validar NCM completo somente quando não for serviço GravaLog('Validar: 777-'+IntToStr(I)+'-NCM info'); if Length(Trim(Prod.NCM)) < 8 then AdicionaErro('777-Rejeição: Obrigatória a informação do NCM completo'); end; if (NFe.Ide.modelo = 65) then begin GravaLog('Validar: 725-'+IntToStr(I)+'-NFCe CFOP invalido'); if (pos(OnlyNumber(Prod.CFOP), 'XXXX,5101,5102,5103,5104,5115,5401,5403,5405,5653,5656,5667,5933') <= 0) then AdicionaErro('725-Rejeição: NFC-e com CFOP inválido'); GravaLog('Validar: 774-'+IntToStr(I)+'-NFCe indicador Total'); if (Prod.IndTot = itNaoSomaTotalNFe) then AdicionaErro('774-Rejeição: NFC-e com indicador de item não participante do total'); GravaLog('Validar: 736-'+IntToStr(I)+'-NFCe Grupo veiculos novos'); if (NaoEstaVazio(Prod.veicProd.chassi)) then AdicionaErro('736-Rejeição: NFC-e com grupo de Veículos novos'); GravaLog('Validar: 737-'+IntToStr(I)+'-NCM info'); if (Prod.med.Count > 0) then AdicionaErro('737-Rejeição: NFC-e com grupo de Medicamentos'); GravaLog('Validar: 738-'+IntToStr(I)+'-NFCe grupo Armamentos'); if (Prod.arma.Count > 0) then AdicionaErro('738-Rejeição: NFC-e com grupo de Armamentos'); GravaLog('Validar: 348-'+IntToStr(I)+'-NFCe grupo RECOPI'); if (NaoEstaVazio(Prod.nRECOPI)) then AdicionaErro('348-Rejeição: NFC-e com grupo RECOPI'); GravaLog('Validar: 766-'+IntToStr(I)+'-NFCe CST 50'); if (Imposto.ICMS.CST = cst50) then AdicionaErro('766-Rejeição: NFC-e com CST 50-Suspensão'); GravaLog('Validar: 740-'+IntToStr(I)+'-NFCe CST 51'); if (Imposto.ICMS.CST = cst51) then AdicionaErro('740-Rejeição: NFC-e com CST 51-Diferimento'); GravaLog('Validar: 741-'+IntToStr(I)+'-NFCe partilha ICMS'); if (Imposto.ICMS.CST in [cstPart10,cstPart90]) then AdicionaErro('741-Rejeição: NFC-e com Partilha de ICMS entre UF'); GravaLog('Validar: 742-'+IntToStr(I)+'-NFCe grupo IPI'); if ((Imposto.IPI.cEnq <> '') or (Imposto.IPI.vBC <> 0) or (Imposto.IPI.qUnid <> 0) or (Imposto.IPI.vUnid <> 0) or (Imposto.IPI.pIPI <> 0) or (Imposto.IPI.vIPI <> 0)) then AdicionaErro('742-Rejeição: NFC-e com grupo do IPI'); GravaLog('Validar: 743-'+IntToStr(I)+'-NFCe grupo II'); if (Imposto.II.vBc > 0) or (Imposto.II.vDespAdu > 0) or (Imposto.II.vII > 0) or (Imposto.II.vIOF > 0) or (Copy(Prod.CFOP,1,1) = '3') then AdicionaErro('743-Rejeição: NFC-e com grupo do II'); GravaLog('Validar: 746-'+IntToStr(I)+'-NFCe grupo PIS-ST'); if (Imposto.PISST.vBc > 0) or (Imposto.PISST.pPis > 0) or (Imposto.PISST.qBCProd > 0) or (Imposto.PISST.vAliqProd > 0) or (Imposto.PISST.vPIS > 0) then AdicionaErro('746-Rejeição: NFC-e com grupo do PIS-ST'); GravaLog('Validar: 749-'+IntToStr(I)+'-NFCe grupo COFINS-ST'); if (Imposto.COFINSST.vBC > 0) or (Imposto.COFINSST.pCOFINS > 0) or (Imposto.COFINSST.qBCProd > 0) or (Imposto.COFINSST.vAliqProd > 0) or (Imposto.COFINSST.vCOFINS > 0) then AdicionaErro('749-Rejeição: NFC-e com grupo da COFINS-ST'); end; GravaLog('Validar: 528-'+IntToStr(I)+'-ICMS BC e Aliq'); if (Imposto.ICMS.CST in [cst00,cst10,cst20,cst70]) and (NFe.Ide.finNFe = fnNormal) and (ComparaValor(Imposto.ICMS.vICMS, Imposto.ICMS.vBC * (Imposto.ICMS.pICMS/100), 0.01) <> 0) then AdicionaErro('528-Rejeição: Valor do ICMS difere do produto BC e Alíquota'); GravaLog('Validar: 625-'+IntToStr(I)+'-Insc.SUFRAMA'); if (Imposto.ICMS.motDesICMS = mdiSuframa) and (EstaVazio(NFe.Dest.ISUF))then AdicionaErro('625-Rejeição: Inscrição SUFRAMA deve ser informada na venda com isenção para ZFM'); GravaLog('Validar: 530-'+IntToStr(I)+'-ISSQN e IM'); if EstaVazio(NFe.Emit.IM) and ((Imposto.ISSQN.vBC > 0) or (Imposto.ISSQN.vAliq > 0) or (Imposto.ISSQN.vISSQN > 0) or (Imposto.ISSQN.cMunFG > 0) or (Imposto.ISSQN.cListServ <> '')) then AdicionaErro('530-Rejeição: Operação com tributação de ISSQN sem informar a Inscrição Municipal'); GravaLog('Validar: 287-'+IntToStr(I)+'-Cod.Município FG'); if (Imposto.ISSQN.cMunFG > 0) and not ValidarMunicipio(Imposto.ISSQN.cMunFG) then AdicionaErro('287-Rejeição: Código Município do FG - ISSQN: dígito inválido'); if Prod.IndTot = itSomaTotalNFe then begin fsvTotTrib := fsvTotTrib + Imposto.vTotTrib; fsvBC := fsvBC + Imposto.ICMS.vBC; fsvICMS := fsvICMS + Imposto.ICMS.vICMS; fsvICMSDeson := fsvICMSDeson + Imposto.ICMS.vICMSDeson; fsvBCST := fsvBCST + Imposto.ICMS.vBCST; fsvST := fsvST + Imposto.ICMS.vICMSST; fsvFCPST := fsvFCPST + Imposto.ICMS.vFCPST; fsvFrete := fsvFrete + Prod.vFrete; fsvSeg := fsvSeg + Prod.vSeg; fsvDesc := fsvDesc + Prod.vDesc; fsvII := fsvII + Imposto.II.vII; fsvIPI := fsvIPI + Imposto.IPI.vIPI; fsIPIDevol := fsIPIDevol + vIPIDevol; fsvPIS := fsvPIS + Imposto.PIS.vPIS; fsvCOFINS := fsvCOFINS + Imposto.COFINS.vCOFINS; fsvOutro := fsvOutro + Prod.vOutro; fsvServ := fsvServ + Imposto.ISSQN.vBC; //VERIFICAR // quando for serviço o produto não soma do total de produtos, quando for nota de ajuste também irá somar if (Prod.NCM <> '00') or ((Prod.NCM = '00') and (NFe.Ide.finNFe = fnAjuste)) then fsvProd := fsvProd + Prod.vProd; end; if Prod.veicProd.tpOP = toFaturamentoDireto then FaturamentoDireto := True; if Copy(Prod.CFOP,1,1) = '3'then NFImportacao := True; end; end; if FaturamentoDireto then fsvNF := (fsvProd+fsvFrete+fsvSeg+fsvOutro+fsvII+fsvIPI+fsvServ)-(fsvDesc+fsvICMSDeson) else fsvNF := (fsvProd+fsvST+fsvFCPST+fsvFrete+fsvSeg+fsvOutro+fsvII+fsvIPI+fsIPIDevol+fsvServ)-(fsvDesc+fsvICMSDeson); GravaLog('Validar: 531-Total BC ICMS'); if (NFe.Total.ICMSTot.vBC <> fsvBC) then AdicionaErro('531-Rejeição: Total da BC ICMS difere do somatório dos itens'); GravaLog('Validar: 532-Total ICMS'); if (NFe.Total.ICMSTot.vICMS <> fsvICMS) then AdicionaErro('532-Rejeição: Total do ICMS difere do somatório dos itens'); GravaLog('Validar: 795-Total ICMS desonerado'); if (NFe.Total.ICMSTot.vICMSDeson <> fsvICMSDeson) then AdicionaErro('795-Rejeição: Total do ICMS desonerado difere do somatório dos itens'); GravaLog('Validar: 533-Total BC ICMS-ST'); if (NFe.Total.ICMSTot.vBCST <> fsvBCST) then AdicionaErro('533-Rejeição: Total da BC ICMS-ST difere do somatório dos itens'); GravaLog('Validar: 534-Total ICMS-ST'); if (NFe.Total.ICMSTot.vST <> fsvST) then AdicionaErro('534-Rejeição: Total do ICMS-ST difere do somatório dos itens'); GravaLog('Validar: 564-Total Produto/Serviço'); if (NFe.Total.ICMSTot.vProd <> fsvProd) then AdicionaErro('564-Rejeição: Total do Produto / Serviço difere do somatório dos itens'); GravaLog('Validar: 535-Total Frete'); if (NFe.Total.ICMSTot.vFrete <> fsvFrete) then AdicionaErro('535-Rejeição: Total do Frete difere do somatório dos itens'); GravaLog('Validar: 536-Total Seguro'); if (NFe.Total.ICMSTot.vSeg <> fsvSeg) then AdicionaErro('536-Rejeição: Total do Seguro difere do somatório dos itens'); GravaLog('Validar: 537-Total Desconto'); if (NFe.Total.ICMSTot.vDesc <> fsvDesc) then AdicionaErro('537-Rejeição: Total do Desconto difere do somatório dos itens'); GravaLog('Validar: 601-Total II'); if (NFe.Total.ICMSTot.vII <> fsvII) then AdicionaErro('601-Rejeição: Total do II difere do somatório dos itens'); GravaLog('Validar: 538-Total IPI'); if (NFe.Total.ICMSTot.vIPI <> fsvIPI) then AdicionaErro('538-Rejeição: Total do IPI difere do somatório dos itens'); GravaLog('Validar: 602-Total PIS'); if (NFe.Total.ICMSTot.vPIS <> fsvPIS) then AdicionaErro('602-Rejeição: Total do PIS difere do somatório dos itens sujeitos ao ICMS'); GravaLog('Validar: 603-Total COFINS'); if (NFe.Total.ICMSTot.vCOFINS <> fsvCOFINS) then AdicionaErro('603-Rejeição: Total da COFINS difere do somatório dos itens sujeitos ao ICMS'); GravaLog('Validar: 604-Total vOutro'); if (NFe.Total.ICMSTot.vOutro <> fsvOutro) then AdicionaErro('604-Rejeição: Total do vOutro difere do somatório dos itens'); GravaLog('Validar: 610-Total NF'); if not NFImportacao and (NFe.Total.ICMSTot.vNF <> fsvNF) then begin if (NFe.Total.ICMSTot.vNF <> (fsvNF+fsvICMSDeson)) then AdicionaErro('610-Rejeição: Total da NF difere do somatório dos Valores compõe o valor Total da NF.'); end; GravaLog('Validar: 685-Total Tributos'); if (NFe.Total.ICMSTot.vTotTrib <> fsvTotTrib) then AdicionaErro('685-Rejeição: Total do Valor Aproximado dos Tributos difere do somatório dos itens'); if (NFe.Ide.modelo = 65) and (NFe.infNFe.Versao < 4) then begin GravaLog('Validar: 767-NFCe soma pagamentos'); fsvTotPag := 0; for I := 0 to NFe.pag.Count-1 do begin fsvTotPag := fsvTotPag + NFe.pag[I].vPag; end; if (NFe.Total.ICMSTot.vNF <> fsvTotPag) then AdicionaErro('767-Rejeição: NFC-e com somatório dos pagamentos diferente do total da Nota Fiscal'); end; //TODO: Regrar W01. Total da NF-e / ISSQN end; Result := EstaVazio(Erros); if not Result then begin Erros := ACBrStr('Erro(s) nas Regras de negócios da nota: '+ IntToStr(NFe.Ide.nNF) + sLineBreak + Erros); end; GravaLog('Fim da Validação. Tempo: '+FormatDateTime('hh:nn:ss:zzz', Now - Inicio)+sLineBreak+ 'Erros:' + Erros); //DEBUG //WriteToTXT('c:\temp\Notafiscal.txt', Log); FErroRegrasdeNegocios := Erros; end;
    1 ponto
  3. Esse erro geralmente indica IdCSC ou CSC errados. Então é preciso verificar se estão sendo informados corretamente, e se foram criados para o ambiente em que está sendo enviada a NFCe, produção ou homologação. Também acontece de alguns formatos de CSC virem corrompidos por algum motivo, verificar pelo debug se isso não está acontecendo.
    1 ponto
  4. Enviei um possível ajustes para o SVN... e vários novos Casos de Teste...
    1 ponto
  5. Ola Neste caso em especial deste cliente Ele mesmo vai transportar rejeição: grupos transportador, veiculo transporte e reboque não devem ser informado Compreendi já que ele mesmo deve emitir o MDFe! Eu até queria ter o mesmo erro no ambiente de testes. Porém coloquei o transportador, e operação fora do estado. A nota transmitiu. Só da rejeição em produção. Deveria da erro também em homologação (Mas isto e e de menos) Mas obrigado pela resposta! Creio que esteja já claro !!! Na hora assustei porque soltei a versão da nfe 4.0 agora. Ai emiti no ambiente de teste e passou normalmente. Meio bizarro isto, eu sinceramente entendi a ideia deles. Porém quando o cara e o proprio transportador e um trabalho so pra dificultar mais os usuarios que muita das vezes já nao ajuda. (Trem ta ficando e cada dia mais feio). Tomara e que nao inventem do cara ter de fazer o MDFe para operação interna também.
    1 ponto
  6. @Curitiba Computer Ltda e @Alisson Souza Pereira, muito obrigado pelas respostas, esclareceram minhas dúvidas. @Alisson Souza Pereira, no seu ultimo exemplo (Alteração(2018-02 - ' ') CodIncCp 91 (Informa que a rubrica na verdade é isenta por decisão judicial)), neste caso a {inivalid} deverá ser preenchida com o valor 2018-02, que se refere a {nova validade} do evento anteriormente enviado? Obrigado.
    1 ponto
  7. Boa tarde, Muito obrigado pela correção, já enviei para o repositório.
    1 ponto
  8. Bom dia Marcílio, Favor anexar os XMLs de envio e de retorno.
    1 ponto
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.