Jump to content

dremul

Membros
  • Posts

    41
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

dremul's Achievements

Contributor

Contributor (5/14)

  • First Post
  • Collaborator Rare
  • Conversation Starter
  • Week One Done
  • One Month Later

Recent Badges

2

Reputation

3

Community Answers

  1. Prezados. Alguma atualização nesse tópico? Não consigo validar um NCM individual. Baixei o último fonte indicado, reinstalei os componentes, deixei a URL que está vindo por padrão agora (http://www4.receita.fazenda.gov.br/simulador/PesquisarNCM2.jsp?origem=PesquisarNCM2.jsp&) e não funciona, retorna NCM inválido pra 01051110 por exemplo. abs Andre `
  2. dremul

    Baixar Xml

    Pessoal. Só para registrar o que eu fiz: Eu pago uma solução chamada Arquivei. Subo o certificado A1 na nuvem. Daí o serviço deles consulta todas as notas. Arquiva em servidores da Amazon. Eles também disponibilizam um aplicativo que baixa todas as notas localmente. Apontei a minha aplicação para esse diretório. Resultado: O usuário lê a Danfe e o XML é carregado, porque ele já está baixado, e o usuário nem vê isso acontecendo. abs André
  3. Olá colegas. Estou rodando a versão 0.9.03.3 do Monitor. Ao tentar emitir uma Danfe recebo a mensagem de erro Canvas Does Not Allow Drawing. Alguém já passou por isso? obrigado André
  4. Você consegue imaginar o caos que seria os clientes precisarem esperar 30 segundos para aprovar cada "cupom" em frentes de caixa movimentadas? No rush? Totalmente inviável. 30 segundos, parado, esperando ali em pé, é muito tempo. Até 5 segundo é viável. Chorando em 10 segundos. Qualquer número além disso é off-line na veia
  5. Na verdade, pelo seu último arquivo dá: ERRO: Falha na validação dos dados da nota 19 TAG:<dest> ID:E02-E03/CNPJ-CPF(CNPJ/CPF) - Nenhum valor informado. TAG:<det nItem="1"><prod> ID:I05/NCM(Código NCM) - Nenhum valor informado. Element '{http://www.portalfiscal.inf.br/nfe}xNome'is unexpected according to content model of parent element '{http://www.portalfiscal.inf.br/nfe}dest'. Expecting: {http://www.portalfiscal.inf.br/nfe}CNPJ,{http://www.portalfiscal.inf.br/nfe}CPF, {http://www.portalfiscal.inf.br/nfe}idEst....
  6. Estou rodando a 0.9.03.3. Coloquei o seu arquivo, com os espaços em branco. E o erro no SAINFE.txt é ERRO: '' is not a valid floating point value Não dá esse outro erro não.
  7. Isaque. Eu tenho rotinas que exportam o bloco C por período (empresa/filial/ ...). Eu passo uma interface com parâmetros que me devolvem ele preenchido. Está tudo pronto. Eu poderia usar esse mesmo módulo para os 2 relatórios. A questão é que o Acbr tem um erro de design: Como no layout alguns registros possuem a seguinte documentação: "Registro com estrutura, campos e conteúdo definidos e constantes no Leiaute da Escrituração Fiscal Digital – EFD (ICMS e IPI)" A classe do registro deveria ser a mesma nos 2 SPEDs. Mas eu também sei o motivo disso: eu trabalhei no Contribuições desde bem cedo (incluindo quando ainda não estava liberado para o público em geral). Então me lembro que no início não era assim e todos "front runners" duplicaram as estruturas. Eu também projetei a duplicação disso na SAP por exemplo (https://br.linkedin.com/in/mullera). PS: a minha dúvida aqui é para uma coisa pessoal, um sistema que fiz para um negócio de minha família a mais de 10 anos atrás e mantenho por que gosto No topo das alternativas também imagino 4) Unificamos as classes. Isso pode gerar impacto em quem usa, por isso não recomendado 5) Eu resolvo meu problema já que ele é pequeno. Só entrego poucos registros. Essa a mais fácil pra mim, só imaginei que seria interessante contribuir Bom, vou de alternativa (5). Se surgir algum outro ponto que possa ser interessante para o grupo, eu aviso. Agradeço à todos pelo interesse. abs André
  8. Aqui tem a documentação sobre a diretiva de compilação: http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/compdirsruntimetypeinformation_xml.html Veja que ali ele diz que a diretiva serve exatamente para ativar o RTTI para as propriedades da classe. Também para tornar visível coisas fora da Published. Isso exatamente porque nas versões mais altas do Delphi o RTTI é um pouco diferente e tudo no published já está liberado. Nas versões mais baixar (a minha é D7) é preciso da diretiva pra liberar a published em si pra RTTI. Então, nós poderíamos trocar de public pra published pra todas versões, mas adicionar o {M} somente para algumas versões, começando com o D7 (talvez somente esse inclusive)
  9. Olá Isaque. Não sei se entendi sua sugestão. Você diz uma rotina genérica que preenche ambos registros? Não tem como fazer isso com pouco código e dinâmico visto que as classes não possuem uma herança em comum. Daria para fazer as atribuições manualmente, de propriedades com o mesmo nome (mesma tag), uma por uma, isso é um procedimento manual e característica de um método Assign, que foi a outra alternativa que imaginei. Mais trabalhosa sim, precisa ser mantida depois, mas feita somente 1x por um de nós. Sobre as alterações, minha dúvida está mais no Lazarus que desconheço. As versões mais altas de Delphi possuem uma forma mais simples de usar RTTI, mas essa forma aqui não é incompatível. E a diretiva de compilação é somente para dizer ao compilador para tratar a classe de forma igual a TPersistent. Temos várias alternativas: 1) Implementar por Assign, já que vou fazer isso igual Com isso cada pessoa que precisar vai ter que implementar o Assign. Cada propriedade nova na classe não pode ser esquecida de ser adicionada ao Assign. Assign também normalmente é de objetos da mesma classe, então na verdade eu indicaria fazer uma nova classe com métodos estáticos para jogar de um tipo pra outro. Até para evitar referência circular entre as classes. 2) Só mudar as classes do Acbr com o Published e o {M} Só serve pra mim. Não faz muito sentido em um código aberto. 3) Mudar as classes do Acbr e entregar a rotina RTTI Acredito que nenhum de nós tem exatamente todos ambientes instalados para testar compatibilidade. Acredito que não exista problema. Sempre tem a possibilidade de isolar código com diretivas se algum problema for encontrado. Também o erro só deve acontecer se alguém tentar usar a rotina RTTI. @Elton: algum retorno no Lazarus? abs André
  10. Olá. Projeto anexado. Lembrando que para funcionar é necessário alterar 2 objetos no Acbr. O anexo também inclui esses objetos, como devem ficar. Não é necessário recompilar os componentes. Minha intenção seria fazer essa alteração (pelo menos no momento) somente para Bloco 0 e C. abs André ReusoSped.zip
  11. Juliomar, obrigado pelo retorno. E em relação ao certificado, quando são emitidos documentas de diversas estações de trabalho (indiferente do modelo de documento-e), o que vocês tem preferido? obrigado André
  12. Prezados. Demorou para postar algo aqui porque não estava trabalhando nesse tópico. Porém, voltei ao tópico hoje e montei um POC. Ele precisa ser estendido para, por exemplo, outros tipos além de string. Mas antes de eu continuar preciso passar com vocês uma alteração que será necessária nas classes do Acbr para que RTTI funcione. Então, eu criei uma rotina que atribui dinamicamente todas as propriedades de uma classe do EFD para as propriedades do PCO. Esse código faz as atribuições dinâmicas: procedure TdmFerramentasAdmin.TestaReuso; var oEfd_Reg: ACBrEFDBloco_0.TRegistro0000; oPco_Reg: ACBrEPCBloco_0.TRegistro0000; iPropIndex: Integer; iPropCount: Integer; pList: PPropList; rInfo, rInfoCheck: PPropInfo; const TypeKinds: TTypeKinds = [tkString, tkLString, tkWString]; begin oEfd_Reg := efd.Bloco_0.Registro0000New(); oEfd_Reg.NOME := 'Teste 1'; oPco_Reg := pco.Bloco_0.Registro0000New(); GetMem(pList, SizeOf(pList^)); try iPropCount := GetPropList(oPco_Reg.ClassInfo, TypeKinds, pList); for iPropIndex := 0 to iPropCount - 1 do begin rInfo := pList^[iPropIndex]; rInfoCheck := GetPropInfo(oEfd_Reg, rInfo.Name); if rInfoCheck = nil then Continue; if Assigned(rInfo^.SetProc) then case rInfo^.PropType^.Kind of tkString, tkLString, tkWString: SetStrProp(oPco_Reg, rInfo, GetPropValue(oEfd_Reg, rInfo.Name)); end; end; finally FreeMem(pList); end; pco.IniciaGeracao(); pco.SaveFileTXT(); end; Porém, para o RTTI funcionar, tanto as classes do EFD quanto do PCO precisam ficar como abaixo (com published ao invés de public, adicionando as diretivas de compilação): {$M+} //REGISTRO 0000: ABERTURA DO ARQUIVO DIGITAL E IDENTIFICAÇÃO DA PESSOA JURÍDICA TRegistro0000 = class private FCOD_VER : TACBrCodVer;{TACBrVersaoLeiaute;} //Código da versão do leiaute conforme a tabela 3.1.1 FTIPO_ESCRIT : TACBrTipoEscrit;{TACBrTipoEscrituracao;} //Tipo de escrituração: 0 - Original; 1 – Retificadora; FIND_SIT_ESP : TACBrIndSitEsp;{TACBrIndicadorSituacaoEspecial;} //Indicador de situação especial: 0 - Abertura; 1 - Cisão; 2 - Fusão; 3 - Incorporação; 4 – Encerramento; FNUM_REC_ANTERIOR : string; //Número do Recibo da Escrituração anterior a ser retificada, utilizado quando TIPO_ESCRIT for igual a 1 FDT_INI : TDateTime; //Data inicial das informações contidas no arquivo FDT_FIN : TDateTime; //Data final das informações contidas no arquivo FNOME : string; //Nome empresarial da pessoa jurídica FCNPJ : string; //Número de inscrição do estabelecimento matriz da pessoa jurídica no CNPJ FUF : string; //Sigla da Unidade da Federação da pessoa jurídica FCOD_MUN : integer; //Código do município do domicílio fiscal da pessoa jurídica, conforme a tabela IBGE FSUFRAMA : string; //Inscrição da pessoa jurídica na Suframa FIND_NAT_PJ : TACBrIndNatPJ;{TACBrIndicadorNaturezaPJ;} //Indicador da natureza da pessoa jurídica: 00 – Sociedade empresária em geral 01 – Sociedade cooperativa 02 – Entidade sujeita ao PIS/Pasep exclusivamente com base na Folha de Salários FIND_ATIV : TACBrIndAtiv;{TACBrIndicadorAtividade;} //Indicador de tipo de atividade preponderante: 0 – Industrial ou equiparado a industrial; 1 – Prestador de serviços; 2 - Atividade de comércio; 3 – Atividade financeira; 4 – Atividade imobiliária; 9 – Outros. published property COD_VER : TACBrCodVer{TACBrVersaoLeiaute} read FCOD_VER write FCOD_VER; property TIPO_ESCRIT : TACBrTipoEscrit{TACBrTipoEscrituracao} read FTIPO_ESCRIT write FTIPO_ESCRIT; property IND_SIT_ESP : TACBrIndSitEsp{TACBrIndicadorSituacaoEspecial} read FIND_SIT_ESP write FIND_SIT_ESP; property NUM_REC_ANTERIOR : string read FNUM_REC_ANTERIOR write FNUM_REC_ANTERIOR; property DT_INI : TDateTime read FDT_INI write FDT_INI; property DT_FIN : TDateTime read FDT_FIN write FDT_FIN; property NOME : string read FNOME write FNOME; property CNPJ : string read FCNPJ write FCNPJ; property UF : string read FUF write FUF; property COD_MUN : integer read FCOD_MUN write FCOD_MUN; property SUFRAMA : string read FSUFRAMA write FSUFRAMA; property IND_NAT_PJ : TACBrIndNatPJ{TACBrIndicadorNaturezaPJ} read FIND_NAT_PJ write FIND_NAT_PJ; property IND_ATIV : TACBrIndAtiv{TACBrIndicadorAtividade} read FIND_ATIV write FIND_ATIV; end; {$M-} Como só vai funcionar com essa alteração, para aperfeiçoar a rotina e entregar no Acbr preciso ter certeza que as alterações das classes to Acbr serão também adicionadas. E então? O que acham? abs André
  13. Prezados. Olhando o AcbrNfeMonitor percebi a configuração de impressão para NFC-e. Como o monitor define qual impressora imprimir? Ou ele manda os comandos somente local e por isso só vai imprimir na própria máquina com o monitor instalado? obrigado André
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.