Ir para conteúdo
  • Cadastre-se

Pesquisar na Comunidade

Showing results for tags 'PCN'.

  • Search By Tags

    Digite tags separadas por vírgulas
  • Search By Author

Tipo de Conteúdo


Fóruns

  • Fórum Aberto - ACBr
    • Notícias do ACBr
    • Equipamentos testados
    • Base de Conhecimento
    • Dúvidas Gerais sobre o ACBr
    • ACBrSerial
    • ACBrSAT
    • ACBrNFe
    • ACBrDFe
    • Dúvidas sobre TEF
    • Dúvidas sobre PIX
    • ACBrMonitor PLUS
    • ACBrTXT
    • ACBrBoleto
    • ACBrDiversos
    • ACBrTCP
    • ACBrFramework
    • ACBrLIB
  • ACBr Pro
    • Dúvidas gerais
    • ACBrMonitorPLUS
    • NFe/NFCe - Nota Fiscal Eletrônica
    • DFe - Documentos Fiscais Eletrônicos
    • SAT / MFE
    • TEF
    • Boleto
    • ACBrSPED
    • ACBrTXT
    • Paf-ECF
    • Requisitos Fiscais por UF
    • ACBrLIB
  • Outros Assuntos
    • Boteco do ACBr
    • Legislação Fiscal e Tributária
    • Object Pascal - Delphi & Lazarus
    • Banco de Dados
    • Classificados
    • Dúvidas não relacionadas ao ACBr

Categorias

  • ACBr Pro
    • ACBrLib - PRO
    • ACBrMonitorPLUS - PRO
    • Utilitários - PRO
    • Dia do ACBr 1a edição
    • Dia do ACBr 2a edição
  • Download Livre
    • ACBrLib - DEMO
    • ACBrMonitorPLUS - DEMO
    • Demos / Testes / Utilitários
    • Apresentações - Palestras

Calendários

  • Eventos - Palestras - Webinars
  • Prazos SEFAZ
  • Calendário da Comunidade
  • ACBr Papo Pro
  • Feriados Nacionais

Find results in...

Find results that contain...


Data de Criação

  • Início

    End


Data de Atualização

  • Início

    End


Filter by number of...

Data de Registro

  • Início

    End


Grupo


Website URL

Encontrado 5 registros

  1. Boa tarde. Um cliente meu está tentando importar uma NF-e de Produtor Rural Modelo 55, e ela foi emitida por um Produtor que usa CPF (CPF na chave da Nota), usando uma Série na faixa 910 à 919. Eu estou usando a seguinte função para validar a Chave dessa Nota: ValidarChave(const chave: string) Essa função está na Unit ACBR\Fontes\PCNComum\pcnAuxiliar.pas. Mas ela está retornando o valor falso, invalidando a chave da Nota, quando na verdade eu verifiquei a chave na consulta NF-e do portal da SEFAZ, e está emitida corretamente, portanto a chave é válida. Nessa função há um trecho de código que faz a validação da chave da Nota tratando como um CNPJ ou CPF dependendo da Série utilizada, onde somente trata como CPF se estiver usando uma Série entre 920 e 969, conforme segue: case StrToInt(copy(aChave, 23, 3)) of // serie reservada para DFe eCPF emitida por aplicativo da Empresa Emitente 920..969: result := ValidarCPF(copy(aChave, 10, 11)); else // serie (001-889) reservada para DFe eCNPJ result := ValidarCNPJ(copy(aChave, 7, 14)); end; Verificando a Documentação da NF-e, eu constatei o seguinte tratamento: Faixa Emissor Identificador Assinatura procEmi 000-889 Aplicativo do Contribuinte (NFe) CNPJ e-CNPJ do contribuinte 0 ou 3 890-899 Site do Fisco (NFA-e) CNPJ / CPF e-CNPJ da Sefaz 1 900-909 Site do Fisco (NFA-e) CNPJ e-CNPJ da Sefaz ou e-CNPJ do contribuinte 1 ou 2 910-919 Site do Fisco (NFA-e) CPF e-CNPJ da Sefaz ou e-CPF do contribuinte 1 ou 2 920-969 Aplicativo do Contribuinte (NFe) CPF e-CPF do contribuinte 0 ou 3 (No caso, o meu cliente se encaixa na penúltima linha, Série da faixa 910 à 919, NFA-e Modelo 55 emitida por um CPF). Portanto eu fiz alterações nessa parte do código, ficando da seguinte forma: case StrToInt(copy(aChave, 23, 3)) of // Séries (000-889) reservadas para NF-e eCNPJ emitida por aplicativo da Empresa Emitente 000..889, // Séries (900-909) reservadas para NFA-e eCNPJ emitida no Site do Fisco 900..909: result := ValidarCNPJ(copy(aChave, 7, 14)); // Séries (910-919) reservadas para NFA-e eCPF emitida no Site do Fisco 910..919, // Séries (920-969) reservadas para NF-e eCPF emitida por aplicativo da Empresa Emitente 920..969: result := ValidarCPF(copy(aChave, 10, 11)); else // Séries (890-899) reservadas para NFA-e eCNPJ ou eCPF emitida no Site do Fisco, e outras possíveis Séries futuras result := ValidarCNPJ(copy(aChave, 7, 14)) or ValidarCPF(copy(aChave, 10, 11)); end; O arquivo atualizado com as alterações que fiz segue em anexo nesse post. Favor verificar e aprovar a alteração se possível. Aceito sugestões de melhoria. Agradeço desde já. Vlw! pcnAuxiliar#new.pas
  2. Olá amigos, estou fazendo uma rotina de gerar o TXT da NFe utilizando o ACBr. Posteriomente vou utilizar o ACBr para importar este mesmo txt gerado. Ao fazer a importação do TXT não estava carregando os dados da nota. Ao fazer um Debug observei que na unit PCNLayoutTXT.PAS, na linha 272 estava : LoadLayout('<B01> A|versao|^id^'); Tive que fazer a alteração para LoadLayout('<B01> A|3.10|^id^'); Tirei como base as instruções referentes as versões anteriores, linha 73 e 64: LoadLayout('<B01> A|1.10|^id^'); LoadLayout('<B01> A|2.00|^id^'); //ok Com estas alterações passou a funcionar. Observando que na importação do txt a rotina verifica isto ai. PCNNFERTXT.PAS linha 127: const VERSOES_VALIDAS_LAYOUT_TXT = '|1.10|2.00|3.10|'; versao := copy(FconteudoArquivo[1], 3, 4); if pos('|' + Versao + '|', VERSOES_VALIDAS_LAYOUT_TXT) = 0 then exit; é possível atualizar esta alteração no repositório uma vez que a unit faz parte do projeto PCN ?
  3. Amigo boa tarde, hoje fui instalar o acbr no delphi 7 usando o acbrinstalar que vem junto da pasta CODE ate ai blz... instalação concluida com exito. Porem quando eu abro o projeto exemplo de nfe2 me dar um erro. Queria ajuda dos amigos para resolver tal situação!
  4. Colegas, Percebi que a exportação do layout TXT do PCN para NFe 3.10 não está funcionando corretamente, então decidi tentar corrigir o problema. Esbarrei na seguinte dificuldade: As chaves O10 e O11 são excludentes. Uma ou a outra. No entanto, como ambas são classificadas como O07, ambas são geradas quando da geração das tags do IPI. LoadLayout('<O07> O07|CST¨|VIPI¨'); LoadLayout('<O07> O10|VBC¨|PIPI¨|VIPI¨'); LoadLayout('<O07> O11|QUnid¨|VUnid¨|VIPI¨'); Como a tag O07 também tem que ser gerada, a solução que encontrei foi duplicar a chave O07, uma na categoria )10 e outra na O11 (com as devidas alterações no pcnGerador). Ficou assim: LoadLayout('<O10> O07|CST¨|VIPI¨'); LoadLayout('<O10> O10|VBC¨|PIPI¨|VIPI¨'); LoadLayout('<O11> O07|CST¨|VIPI¨'); LoadLayout('<O11> O11|QUnid¨|VUnid¨|VIPI¨'); Minha dúvida é: Tem alguma maneira melhor de fazer? Ainda estou trabalhando nessa correção e assim que tiver algo pronto e testado eu anexo aqui no fórum para avaliação. PS: Sou só eu ou a rotina de exportação do TXT é muito mais complicada do que o necessário? rs. Lendo o código, fico com a impressão de que a ideia era ter a geração do TXT e do XML na mesma base de código. Mas talvez isso traga mais complicações do que vantagens. Abraços, Gabriel.
  5. Caros colegas, Eu não sei como o projeto ACBr gera os DANFe's, e estou um pouco apurado agora para procurar na base de código. Mas segue uma procedure que le um TObject e joga todas as suas propriedades (e até collections) dentro de variáveis do FastReport, usando o RTTI. Isso é útil para fazer um Danfe usando os nomes de propriedades do próprio TNFe. Exemplo: <NFe.infNFe.ID> Procedure GetVars(Vars: TfrxArray; AObject: TObject; Prefix: String); Var I, Count: Integer; PList: PPropList; Begin If Not Assigned(AObject) Then Exit; If AObject Is TCollection Then Begin Vars[Prefix + '.Count'] := TCollection(AObject).Count; For I := 0 To TCollection(AObject).Count - 1 Do GetVars(Vars, TCollection(AObject).Items[I], Prefix + '[' + IntToStr(I) + ']'); End; Count := GetPropList(AObject, PList); For I := 0 To Count - 1 Do Begin If PList^[I].PropType^.Kind = tkClass Then GetVars(Vars, GetObjectProp(AObject, PList^[I].Name), Prefix + '.' + PList^[I].Name) Else If PList^[I].PropType^.Kind = tkEnumeration Then Vars[Prefix + '.' + PList^[I].Name] := GetOrdProp(AObject, PList^[I].Name) Else Begin Case PList^[I].PropType^.Kind Of tkLString: Vars[Prefix + '.' + PList^[I].Name] := AnsiQuotedStr(GetStrProp(AObject, PList^[I].Name), ''''); tkInteger, tkFloat: Vars[Prefix + '.' + PList^[I].Name] := GetPropValue(AObject, PList^[I].Name); End; End; End; End; Var NFe: TNFe; Vars: TfrxArray; begin Vars := TfrxArray.Create; NFe := TNFe.Create; Try ... GetVars(Vars, NFe, 'NFe'); frxReport1.Variables.Assign(Vars); frxReport1.ShowReport; Finally NFe.Free; Vars.Free; End; end; Para acessar os itens de collections, tem que fazer algo assim em um MasterData (ou outra banda de dados): [Get('NFe.Det[' + IntToStr(<Line> - 1) + '].Prod.xProd')] E você pode colocar esse código no OnBeforePrint para definir o número correto de linhas do MasterData (defina como 1 inicialmente, para que ele seja impresso): MasterData1.RowCount := <NFe.Det.Count>; PS: Fiz usando a versão antiga do RTTI (pré-D2010) porque uso D7 e não faço idéia de como fica no Lazarus/FPC. Abraços, Gabriel.
×
×
  • 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.