Ir para conteúdo
  • Cadastre-se

Giquieu

Membros Pro
  • Total de ítens

    65
  • Registro em

  • Última visita

Tudo que Giquieu postou

  1. Não. Pra resolver deixo o certificado em cada PC que vai emitir algum tipo de DFe...
  2. Olá, Provavelmente seu ResponseCosmos está NIL. Faça o seguinte: ResponseCosmos := RESTResponse2.JSONValue; ou RESTResponse2.JSONValue.GetValue<TJSONString>('description').Value; Tome cuidado ao acessar variáveis não instanciadas...
  3. Não tenho o Tokyo para verificar, mas provavelmente é o uses que não está correto... Adicione a REST.Types no uses do seu fonte e tente novamente... Pode dar uma olhada aqui: http://docwiki.embarcadero.com/Libraries/Tokyo/en/REST.Types.TRESTRequestMethod
  4. Diz para o servidor que você está enviando na requisição um XML: IdHTTP.Request.ContentType := 'text/xml'; IdHTTP.Request.ContentEncoding := 'utf-8'; Diz para o servidor que você quer receber a resposta em XML: IdHTTP.Request.Accept := 'text/xml';
  5. É so seguir o fluxo do processo que esta no demo. Não tem segredo, é só implementar os eventos e pronto. @Poliany, seja mais especifica com o seu problema. De preferencia em um novo tópico.
  6. Visto que eles disponibilizam uma API RESTFull respondendo JSON, o passo inicial seria definir/criar uma biblioteca de JSON pro ACBr. Veja a discussão:
  7. Realmente uma biblioteca de JSON é muito abrangente e demandaria um bom esforço inicial pra criar uma. No meu ver, o melhor dos mundos seria usar as bibliotecas nativas, porém será necessário um bom trabalho pra criar uma Fachada que encapsule as bibliotecas do Delphi e do Lazarus. Pelo menos a maioria das classes entre Delphi/Lazarus tem o mesmo nome... (TJSONObject, TJSONString, TJSONNumber, etc). Mas diante do que o Elton disse, sobre estabilidade, erros, no final fica melhor usar uma de Terceiro mesmo. xD Já usei a LkJSON, tanto no Delphi quanto no Lazarus. Apesar do repositório dela esta parada, ela está estável. Achei interessante a: https://github.com/hgourvest/superobject - Para Delphi e Lazarus. Eu não intendo muito bem essa questão de licença... qual licença que a biblioteca deve estar registrada pra podermos usar e modificar se necessário?
  8. Pessoal, Inevitavelmente, cada vez mais JSON vem se tornando o protocolo de comunicação mais utilizados entre as aplicações. Sabemos que existem bibliotecas de conversão nativas tanto para o Delphi quanto para o Lazarus. E tantas outras de terceiros, de código fechado e de código aberto. Creio que cedo ou tarde, o projeto ACBr terá que fazer uso de alguma biblioteca JSON, então gostaria de propor aqui uma discussão pra validar/decidir o uso de JSON dentro do projeto ACBr. Poderia-se iniciar com algumas questões: Criar uma biblioteca própria? Criada do zero, ou se basear em alguma já existente? Usar uma existente e colocar dentro de /Terceiros/? Qual biblioteca existente utilizar? Usar nativo? IFDEF pra Lazarus e Delphi/XE? Estou levantando essa questão, pois estou criando um componente pra realizar a comunicação com o COSMOS da Bluesoft fazendo uso da TACBrHTTP, onde o retorno é JSON. Na qual, quem sabe após a definição de uma biblioteca JSON, esse componente poderá fazer parte do projeto ACBr... claro se o mesmo for aprovado. Aguardo uma discussão []'s
  9. Vc não, necessariamente, precisa usar TClientDataSet, quando vc trabalha com Zeos, a TZQuery, consegue trabalhar off-line. O seu problema está em: TZAbstractConnection.StartTransaction; Aqui é chamado a verificação do contador de transação. Veja aqui: Unit: ZAbstractConnection Classe: TZAbstractConnection Metodo: CheckAutoCommitMode procedure TZAbstractConnection.CheckAutoCommitMode; begin if not FAutoCommit and (FExplicitTransactionCounter = 0) then raise EZDatabaseError.Create(SInvalidOpInNonAutoCommit); end; Em anexo estou deixando um pdf que irá te ajudar. Tutorial_Zeos_Especial_Em_Portugues_BR.rar
  10. Pedro, na documentação da API não existe nada sobre trazer as informações de tributações. Logo, nessa versão da API não é possível acessar as tributações ou eles não documentaram. Mas creio que a BlueSoft deve estar fazendo alguma coisa pra disponibilizar esses dados... Acompanho a API do Cosmos faz um tempo, lembro que no inicio era disponibilizado apenas a descrição e alguma coisa de NCM. Hoje já dá até pra pegar a imagem do produto (quando existe rsrss).
  11. Se vc estiver usando Delphi XE7+ usa os componentes da REST.* Vc vai precisar 3 componentes: REST: TRESTClient; Request: TRESTRequest; Response: TRESTResponse; E vai montar o código parecido com esse: REST.BaseURL := ' http://cosmos.bluesoft.com.br/api'; Request.Client := REST; Request.Response := Response; Request.Method := rmGet; Request.Resource := '/gtins/{codigo}'; Request.Params.AddHeader('X-Cosmos-Token', 'SEU_TOKEN'); Request.Set Params.ParameterByName('codigo').Value := 'GTIN_DO_PRODUTO'; Request.Execute; if (Response.StatusCode = 200) then begin Meu_Objeto_Que_Representa_o_JSON_do_Cosmos := Meu_Parser_De_Json_Para_Algo_Que_Meu_Sistema_Entende(Response.JSONValue); end; Meu_Parser_De_Json_Para_Algo_Que_Meu_Sistema_Entende Aqui vc pode usar xSuperObject como o Renato falou ou outra biblioteca que lê JSON. Recomendo usar as do próprio Delphi System.JSON. Meu_Objeto_Que_Representa_o_JSON_do_Cosmos Aqui pode ser algo que o seu sistema conheça, um Objeto, um DataSet. Algo que represente o retorno do Cosmos. Um pequeno exemplo pra vc pegar valores do retorno do Cosmos usando a System.JSON: ResponseCosmos: TJSONValue; // Para pegar a description que está de exemplo no site: ResponseCosmos.GetValue<TJSONString>('description').Value; // Para pegar a o code do NCM que está de exemplo no site: ResponseCosmos.GetValue<TJSONObject>('ncm').GetValue<TJSONString>('code').Value; ResponseCosmos.GetValue<TJSONObject>('ncm').GetValue<TJSONString>('description').Value; ResponseCosmos.GetValue<TJSONObject>('ncm').GetValue<TJSONString>('full_description').Value; // Note que os Parametros estao em minusculos, é CASESENSITIVE...
  12. Provavelmente teu código deve estar saindo do fluxo da geração das tags PIS/COFINS, se vc informar tudo zero, as tags não serão geradas. Veja o código abaixo retirado do pcnNFeW: procedure TNFeW.GerarDetImpostoPIS(const i: Integer); begin if (nfe.Ide.modelo <> 55) and ((nfe.Det[i].Imposto.PIS.vBC = 0) and (nfe.Det[i].Imposto.PIS.pPIS = 0) and (nfe.Det[i].Imposto.PIS.vPIS = 0) and (nfe.Det[i].Imposto.PIS.qBCProd = 0) and (nfe.Det[i].Imposto.PIS.vAliqProd = 0) and (not (nfe.Det[i].Imposto.PIS.CST in [pis04, pis05, pis06, pis07, pis08, pis09, pis49]))) then //No caso da NFC-e, o grupo de tributação do PIS e o grupo de tributação da COFINS são opcionais. exit; procedure TNFeW.GerarDetImpostoCOFINS(const i: Integer); begin if (nfe.Ide.modelo <> 55) and ((nfe.Det[i].Imposto.COFINS.vBC = 0) and (nfe.Det[i].Imposto.COFINS.pCOFINS = 0) and (nfe.Det[i].Imposto.COFINS.vCOFINS = 0) and (nfe.Det[i].Imposto.COFINS.qBCProd = 0) and (nfe.Det[i].Imposto.COFINS.vAliqProd = 0) and (not (nfe.Det[i].Imposto.COFINS.CST in [cof04, cof05, cof06, cof07, cof08, cof09, cof49]))) then //No caso da NFC-e, o grupo de tributação do PIS e o grupo de tributação da COFINS são opcionais. exit;
  13. Olá, Ao vender um produto com desconto estou recebendo a seguinte rejeição: 531 - Total da BC ICMS (id:W03) difere do somatório do valor dos itens (id:N15). O produto que esta sendo vendido é Isento, então no evento QuandoVenderItem faço o seguinte tratamento: with Det.Imposto do begin ICMS.pICMS := 0; ICMS.vICMS := 0; ICMS.vBC := 0 end; Porém, após esse tratamento está sendo chamado o DescontoAcrescimoItemAnteriorVirtual: procedure TACBrECFVirtualNFCeClass.DescontoAcrescimoItemAnteriorVirtual(ItemCupom: TACBrECFVirtualClassItemCupom; PorcDesc: Double); var Det: TDetCollectionItem; begin ..... if fsACBrNFCe.NotasFiscais.Items[0].NFe.Emit.CRT <> crtSimplesNacional then begin Det.Imposto.ICMS.vBC := RoundABNT((ItemCupom.Qtd*ItemCupom.ValorUnit)+ItemCupom.DescAcres,2); Det.Imposto.ICMS.vICMS := RoundABNT( Det.Imposto.ICMS.vBC*(Det.Imposto.ICMS.pICMS/100),2); end; end; Nesse caso, se o emitente não for do Simples, está sendo recalculado o vBC, vICMS, porém meu produto é Isento. vBC e vICMS não deveriam ir vazios no XML? Que procedimento deve-se fazer nesse caso? []'s
  14. Olá pessoal, fiz update para ultima versao do ACBr, está sem as alterações. Ocorreu algum problema? Provavelmente, se forem subir pro SVN, terei que aplicar os ajustes novamente, certo? []'s
  15. Olá, fiz alguns ajustes corrigindo dois probleminhas que encontrei ao usar o demo do ECF configurado para emitir NFCe OpenSSL usando o PosPrinter. "\Fontes\ACBrDFe\ACBrNFe\ACBrECFVirtualNFCe\ACBrECFVirtualNFCe.pas" "\Exemplos\ACBrSerial\ACBrECF\Lazarus\ecfteste1.pas" Segue alguns comentários: ACBrECFVirtualNFCe.pas Neste fonte basicamente corrigi o TACBrECFVirtualNFCeClass.GravaArqINIVirtual(ConteudoINI: TStrings); Quando não informado nada para o NomeArqINI, que nesse caso será gerado um nome automaticamente. Este nome é gerado através do TACBrECFVirtualClass.CalculaNomeArqINI, que pega o path da aplicação + acbrecf + .ini. Ao chamar o TACBrECFVirtualNFCeClass.GravaArqINIVirtual, o ACBr irá gravar o XML através do GravarTXT, passando como nome do arquivo o fsNomeArqTempXML. (fsNomeArqTempXML é valorizado em TACBrECFVirtualNFCeClass.AtivarVirtual com o valor de NomeArqINI apenas mudando a extensão de .txt para .xml.) Nesse caso, o CalcularNomeArquivoCompleto que é chamado dentro do NotaFiscal.GravarTXT retorna por exemplo o seguinte valor: 'H:\ACBr\Exemplos\ACBrSerial\ACBrECF\Lazarus\Docs\H:ACBr\Exemplos\ACBrSerial\ACBrECF\Lazarus\acbrecf001.xml' Quando o ACBr tenta salvar o .txt, ocasiona o erro, pois esse path não existe. ecfteste1.pas Ajuste na propriedade quando usado com OpenSSL: ACBrNFe1.Configuracoes.Certificados.Certificado para ACBrNFe1.Configuracoes.Certificados.ArquivoPFX []'s ACBrECFVirtualNFCe.pas ecfteste1.pas
  16. Que bom que ajudou. Pra melhorar o desempenho do loop deixaria com o down to, afinal, normalmente o cancelamento vai ocorrer nos últimos itens... xD
  17. Olá, eu estava com o mesmo problema. De uma olhada nesse post: http://www.projetoacbr.com.br/forum/topic/18486-dúvidas-acbrecfvirtualnfce/?do=findComment&comment=131967 Até hoje estou usando assim, e não deu problema, até seria interessante verificar com o pessoal pra subir pro SVN...
  18. SAT ainda não implementei... Apenas com ECF, NFCe, e nos outros recebimentos do sistema, por ex: as contas a receber.
  19. Gostei muito de integrar com a Software Express (CliSitef). ACBrTEF é o cara, dá pra fazer a integração muito fácil !!!
  20. Existe algumas opções: 1. Extrato direto com as Adquirentes. 2. Arquivo Retorno de Alguma VAN. 3. Ou como nosso amigo Marcelo comentou o Arquivo Retorno da Software Express. 1. Extrato direto com as Adquirentes. O mais trabalhoso... rsrs Provavelmente vc vai precisar solicitar para seu cliente o layout, estuda-lo e implementa-lo no seu sistema. Terá que fazer o download do Extrato Adquirente por Adquirente. Cada Adquirente tem seu próprio modelo/layout, normalmente são dois Arquivos, tem Adquirente que chega a enviar 5 arquivos... 2. Arquivo(s) Retorno de Alguma VAN. Vc vai fechar o contrato com uma VAN, e está fará o processo de realizar o download dos Extratos das Adquirentes, disponibilizando em um único lugar. Facilita pq os extratos estarão em apenas um lugar... Vc também terá o trabalho de interpretar Extrato por Extrato, quero dizer, a CIELO trabalha com um layout, a REDE é outro layout, e por ai vai... 3. Arquivo Retorno da Software Express Procure o comercial deles solicitando informações sobre o módulo de Conciliação. Mas basicamente, a SE irá te retornar um ÚNICO extrato, contento todas as transações. Apenas um layout para vc integrar... show né? xD
  21. Olá, pessoal, como tenho em algumas classes que herdam de classes do ACBR, e ainda não fiz download do trunk2, seria possível listar os principais fontes que receberam refactoring? ou os fontes que tiverem um refactoring considerável grande?
  22. Boa William, Fiz as seguinte alterações, conforme vc sugeriu: Ide.dhCont := DateZero; Alterei para Ide.dhCont := 0; pra não ocorrer nenhum resulta inesperado aqui (Self.Items[i].NFe.Ide.dhCont <> 0). E também adicionei ACBr.NotasFiscais.Items[0].NFe.infNFe.ID := ''; E funcionou perfeitamente! Muito obrigado pela ajuda... []'s
  23. Exatamente, porém, olhe esse fluxo: Ide.tpEmiss = teOffline | teContingencia; (Sem conexão com a SEFAZ) Ide.dhCont = now; Ide.xJust = 'JUSTIFICATIVA'; VendeItem VendeItem Voltou a Conexão com a SEFAZ: Ide.tpEmiss = teNormal; Ide.dhCont = DateZero; Ide.xJust = ''; VendeItem VendeItem Validar <- Aqui Retorna que devo informar uma Valor para Ide.xJust... Assinar ACBrNFe1.Enviar(...) Esse fluxo deveria funcionar sem problemas, ou não posso mais alterar o Ide.tpEmiss após abrir a NFCe?
  24. Olá pessoal, Imaginem o seguinte cenário: O PDV está sem comunicação com a SEFAZ, então, a NFCe é aberta em modo offline (contingência). Durante a venda o PDV restabelece a conexão com a SEFAZ, logo, tenho a possibilidade de enviar essa NFCe normalmente. Quando abro a NFCe offline a chave é formada. (41150513284396000198650100000010009000001005) com o digito 9, identificando que é offline. O que estou fazendo é o seguinte: ao abrir a NFCe offline, informo o motivo e a data/hora, e no momento de enviar, se a conexão estiver OK, limpo os campos Ide.xJust e Ide.dhCont, e mudo o Ide.tpEmis para teNormal, Gero o xml, valido e assino. Porém ao validar o xml, o mesmo retorna que o campo xJust deve ter um valor, creio que seja pq a chave ainda esteja como offline (digito 9). É possível executar esse cenário? Abrir a NFCe em contingência (chave 41150513284396000198650100000010009000001005) e depois enviar normalmente (chave 41150513284396000198650100000010001000001005)? []'s
  25. O emulador da Bematech-MP4200 TH FI, é Fiscal, e o ACBrNFeDANFEEscPos, se comunica apenas com impressoras Não Fiscal via protocolo Esc/Pos. Até onde sei a Bematech não tem nenhum emulador de impressora não fiscal. Vc pode implementar NFCe com o DANFE Fortes ou outro para impressora a jato/laser.
×
×
  • 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.