Ir para conteúdo
  • Cadastre-se

EMBarbosa

Consultores
  • Total de ítens

    9.935
  • Registro em

  • Última visita

  • Days Won

    127

Tudo que EMBarbosa postou

  1. Olá maicon, Eu acredito que é um erro no seu arquivo schema local. Note que o campo vICMSSTRet é obrigatório em todas as menções dele na NT 2018.005. Sim. A princípio ele foi o único campo que gerou problema nessa rejeição específica (938).
  2. Há uns 6 anos atrás achei isso: tão verdade...
  3. Se tiver sugestões de onde o evento pode ser realizado em campinas você pode criar um tópico dando as sugestões. Certeza que vão ser levadas em conta.
  4. Pode ser que o estado não esteja preparado para a versão 2.0 do GNRe. Você pode verificar isso no seguinte site: Pode-se consultar alguma (in)compatibilidade no seguinte site: http://www.gnre.pe.gov.br/gnre/portal/consultarTabelas.jsp Queiram por favor verificar também o seguinte tópico sobre o assunto que indica que alguns campos adicionais podem não estar disponíveis em algumas UFs:
  5. Tenho algumas sugestões para você: Opção 1 - Verificar com o contador se o seu cliente pode fazer os lançamentos com enfoque no declarante. Quer dizer, ele lançaria não exatamente o que vem escrito na nota, mas como ele considera o produto. Nesse caso em vez de lançar 120 m3 de madeira ele vai lançar 120 caibros 5X2, 60 caibros 5,5X2, etc... Opção 2 - Verificar como o seu cliente fazia anteriormente pra controlar o estoque. A partir daí, você pode tentar seguir o mesmo esquema automatizando de acordo com seu programa. Opção 3 - Criar um sistema de conversão de produtos de entrada. Nesse caso, seu sistema teria um cadastro de produtos que são gerados a cada m3 de madeira. O cadastro seria alimentado pelo cliente e, a partir da entrada, seu programa faria a conversão. Mas só funcionaria mesmo se os fornecedores dele mandam sempre a mesma quantidade de material para a mesma quantidade de m3 de madeira. Opção 4 - Criar um sistema de produção. Esse seria uma área separada do seu programa e funcionaria como o Italo descreveu acima.
  6. A parte de comentar era responder as perguntas acima mesmo. Não precisa comentar o código.
  7. Na verdade pode existir fórmula, mas vai depender das medidas e do método de transformação. Poderia explicar com mais detalhes como é a peça de madeira que ele compra e como ele a transforma pra venda?
  8. Moderação: Fechando esse tópico que é de 2014. @Dempsey e @Agnaldo Prates Há tópicos mais recentes falando sobre esse assunto. Queiram por favor acompanhar o seguinte:
  9. Use o mesmo tópico apenas se estiver falando sobre a mesma coisa que o primeiro tópico menciona. Quando o assunto não for o mesmo, por favor, sempre crie um novo tópico. Por exemplo, se no primeiro tópico estiver falando sobre o nome do arquivo gerado pelo ACBrNFe e o que você quer criar for sobre a geração de imposto no ACBrNFe, crie um novo tópico. Ambos são sobre NFe, mas são assuntos diferentes. Mas nesse caso, me parece que todas as alterações estão seguindo a mesma ideia e você só está encontrando lugares diferentes a alterar. E mais, nenhuma delas foi enviada ao SVN. Então é melhor continuar usando o mesmo tópico.
  10. Apenas para acrescentar: Isso acontece porque a grande demanda obrigatória do TEF foi próximo desses anos. Havia a exigência do TEF no PAF-ECF, muitos "players" novos no mercado e grande atividade no projeto ACBr nessa área. A maior parte das informações continuam atuais. Mas algumas coisas ou exigências foram simplificadas. Geralmente, dá pra perceber isso no roteiro de certificação que eles te passam. Geralmente é remoto. Não conheço nenhuma que hoje em dia exija a certificação presencial. Não existe emulador de tef do ACBr. Mas ao entrar em contado com as certificadoras elas vão te disponibilizar tanto as dlls como um sistema que emula o TEF para que você possa implementar.
  11. Algumas sugestões. Verifique: se as contas e dados de login realmente existem; se os e-mails estão configurados corretamente (por exemplo, no google é exigido uma configuração para permitir o acesso por aplicativos menos seguros); se as dlls estão atualizadas (exemplo, dlls da openssl); se existe algum problema externo. (Exemplo: modem?)
  12. Eu sugiro você usar um profiler ou medir o tempo de execução de cada linha para conseguir verificar onde exatamente dentro dessa rotina acontece a lentidão nessas máquinas.
  13. Acontece nas melhores famílias. O código que você está interessado está no arquivo ACBrEFDBloco_H_Class.pas, na procedure TBloco_H.WriteRegistroH005(RegH001: TRegistroH001), especialmente essa parte abaixo: if (FBloco_0.Registro0000.COD_VER >= vlVersao104) then begin if DT_FIN >= EncodeDate(2012,07,01) then begin case MOT_INV of miFinalPeriodo: strMotInv := '01'; miMudancaTributacao: strMotInv := '02'; miBaixaCadastral: strMotInv := '03'; miRegimePagamento: strMotInv := '04'; miDeterminacaoFiscos: strMotInv := '05'; else strMotInv := '01'; end;
  14. Moderação: Tópico dividido.
  15. Sim. Porque é uma função para o tipo Motivo de inventário. Sim. Foi isso mesmo que você mesmo escreveu no seu primeiro post que queria, veja: Aqui você está confundindo índice com valor. O valor do tipo enumerado não é necessariamente o seu índice. É justamente por isso que temos essas funções. Claro! MOT_INV é do tipo TACBrMotInv. Não é string. Mas também não é inteiro. Se você quer converter o valor para atribuir ao campo MOT_INV você deve usar a outra função StrToMotInv. Isso, na verdade é mais uma prova que você está equivocado, porque conforme você mesmo disse no primeiro post, e conforme consta no Guia prático da EFD, página 191:
  16. Olá Mateus, A alteração não é necessária. Você não deve converter o tipo enumerado diretamente para inteiro ou vice-versa. Se fizer isso, vai ter problemas com outros tipos. Use as funções declaradas nessa mesma unit como: function StrToMotInv(const AValue: string): TACBrMotInv; function MotInvToStr(AValue: TACBrMotInv): string;
  17. E quando terceiros prestam serviço de manutenção? Quem é o responsável técnico? Dúvidas assim podem surgir quando fixamos na mente mais a ideia de um "representante da classe de programação" perante a lei do que na ideia de um responsável pelo sistema. Talvez isso aconteça porque o termo usado é "responsável técnico". Logo nos vem a mente um engenheiro responsável pela obra e tal... Mas veja bem, a ideia do responsável técnico, é ter uma "pessoa" para quem a Sefaz vai mandar um e-mail quando quiser falar sobre o software emissor do DF-e. Como dito antes, suponha que o software emissor tentou retransmitir a mesma NF-e com erros no XML, por 70.000 vezes... ou seja, mesmo recebendo o erro de rejeição por XML inválido, a aplicação ficou em algum Loop, tentando retransmitir o mesmo XML que já sabia era rejeitado, isso por 70 mil vezes. Nesse caso, quem a SEFAZ deveria contatar? Pensar nesses termos, nos ajuda a entender o motivo das tags Responsável Técnico e assim saber como preencher. Vamos a dois exemplos, com base nas perguntas desse link: Imagine uma microempresa, distribuidora de produtos de limpeza, que para emitir a notas fiscais, paga a um programador fazer as alterações nos fontes de um sistema emissor. Esse programador é pessoa física. Como fica esta situação? Não se engane. A resposta depende mais do tipo do vínculo entre eles e menos de o programador ser uma pessoa física. A questão que deve ser respondida é: Quem é o responsável pelo software? Quem a SEFAZ deve contatar caso queira falar sobre o sistema? Isso vai depender de cada caso e talvez de cada UF. Responder algumas perguntas podem ajudar a resolver a questão: Atualmente, o sistema é da ME distribuidora de produtos de limpeza? O programador é chamado como um terceirizado ou mesmo como funcionário temporário da empresa, não tendo de fato vínculo com o sistema? Por exemplo, ele pode ser substituído por outro programador? (Note, não importa aqui o conhecimento interno do sistema...) Se a resposta a essas perguntas for sim então, a menos que algo diferente esteja em contrato, o responsável técnico é a empresa distribuidora de produtos de limpeza.  Ela contrata outra pessoa para dar manutenção mas, ainda assim, ela é responsável, porque o sistema é dela. No PAF-ECF, chamávamos isso de "sistema próprio". Quer dizer próprio da empresa. Não é um sistema que ela aluga. Caso alguma resposta para as perguntas for não, então, provavelmente, o responsável técnico é o programador. Será necessário verificar com a UF como ele deve ser informado já que ele não tem CNPJ. No caso da empresa ter uma pessoa que saiba programação e faça estas alterações mas não é programador registrado e sim diretor ou gerente ADM, como fica? Nesse caso, sem dúvida, o responsável técnico é a própria empresa. Ela tem um sistema próprio, desenvolvido internamente para emitir os DF-e. Não importa se quem faz as alterações é um programador ou o contínuo da empresa. O importante é quem é responsável perante a SEFAZ e, nesse caso, é claro que a SEFAZ não vai querer saber quem deu manutenção no sistema. Quando ela precisar falar com um responsável, ela vai querer contatar diretamente a empresa. Afinal de contas, se a empresa não quisesse isso ela teria contratado um sistema de alguém ao invés de permitir um funcionário (ou sobrinho do dono) criar o sistema.
  18. Você está respondendo a um tópico de aproximadamente um ano atrás. É provável que agora o problema seja outro. Por exemplo, talvez eles tenham implementado um limite de pesquisas por período.
  19. A propósito, o XML não foi feito para isso (incluir arquivos binários). Ele não é eficiente para isso. Você vai gastar mais tempo e recursos. Seria melhor verificar com o servidor uma alternativa.
  20. Acho que você não pode simplesmente atribuir ao NodeValue (que é um OleVariant) uma string que é na verdade um arquivo binário. É provável que vão existir caracteres de controle não compatíveis e resultará em um xml malformado. Talvez por isso seja necessário converter para base64. Visto que está usando Delphi 7 espero que esse link te ajude: https://stackoverflow.com/q/32306960/460775
  21. Como você está convertendo o tipo binário? Está usando base64 por exemplo?
  22. Não vou ter tempo pra ver, mas achei muito interessante seu componente. Pelo erro, ou o arquivo dfm já possui o campo, ou o seu componente está criando os campos novamente. Então bastaria você tratar isso. Estritamente falando, os campos não existem "nela". Eles estão relacionados com ela. Então a ideia seria validar se eles já existem no form ou DM. Bom, se não tiver jeito de fazer isso automaticamente, isso explica o motivo de não ser feito nos componentes do Delphi. Mas caso contrário, se você tem o Delphi, você tem o código da VCL e assim pode verificar como é que um TDataSet implementa essa facilidade quando selecionamos "Add all Fields".
  23. Olá Willian, Ao analisar o código eu notei as seguintes características. Precisava que você comentasse antes de a gente incluir no projeto ACBr: A unit GerarBlocos.pas está vazia e não é utilizada por nenhum arquivo. Poderia avaliar se não está faltando nada? O componente não está utilizando nenhuma das classes do ACBrTXT. Isso foi proposital? Os registros estão definidos usando Generics. Como nosso projeto atualmente suporta o Delphi 7, talvez tenhamos que alterar os tipos. Vê algum problema nisso? Por último, mas mais importante: Notei que nenhum arquivo tem a licença anotada, mas na procedure de registro está o nome de uma empresa. Você confirma que esses fontes são de sua autoria e podem ser licenciados como LGPL ou MPL, alterados e adicionados ao projeto seguindo as licenças do ACBr?
  24. Se você abrir o arquivo no Delphi, ele costuma remover os IFDEF na cláusula uses dos arquivos DPK e DPR. Pode ser isso que aconteceu.
  25. Daniel, Achei manuais que implementam qrCode em PPLA e PPLB. Teria que verificar se é válido e quais modelos aceitam. Abaixo um manual da PPLB que encontrei: https://downloads.genesysinf.com.br/downloads/uteis/argox/fscommand/manual/PPLB.pdf Talvez possamos colocar isso na nossa lista de afazeres. O que acha?
×
×
  • 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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...