Ir para conteúdo
  • Cadastre-se

MSOL

Membros Pro
  • Total de ítens

    33
  • Registro em

  • Última visita

Tudo que MSOL postou

  1. Boa tarde, Juliomar! Eu resolvi o problema e vou postar aqui se alguem tiver o mesmo problema; Como eu precisava gerenciar a transação de bancos distintos(porem mesmo DBMS), a solução foi usar o FDManager(não conhecia como funcionava); Fiz assim: While Not .... Begin try conexaoAtual := TFDConnection.Create(nil); conexaoAtual.TxOptions.AutoCommit:= false; conexaoAtual.TxOptions.DisconnectAction:= xdNone; transacao:= TFDTransaction.Create(nil); transacao.Options.DisconnectAction:= xdNone; transacao.Options.AutoCommit:= false; transacao.Connection:= ConexaoAtual; TabelaPrincipa:= TFDQuery.Create(nil); TabelaPrincipal.Connection:= ConexaoAtual; TabelaPrincipal.UpdateTransaction:= transacao; TabelaPrincipal.Transaction:= transacao; ConexaoAtual.transaction:= transacao; transacao.StartTransaction; // faz aqui os inserts, updates etc... usando a query TabelaPrincipal // Aqui foi o pulo do gato. Ao inves de usar transacao. commit, chamo os metodos , criei 2 metodos, uma para commitar e outro para da Rollback CommitAllTransactions; except RollbackAllTransactions; end end procedure CommitAllTransactions; var FDManager: TFDManager; i: integer; begin FDManager := TFDManager.Create(nil); // Percorrer todas as conexões ativas for I := 0 to FDManager.ConnectionCount -1 do if FDManager.Connections[i].InTransaction then Connections[i].commit; end; procedure RollbackAllTransactions; var FDManager: TFDManager; i: integer; begin FDManager := TFDManager.Create(nil); // Percorrer todas as conexões ativas for I := 0 to FDManager.ConnectionCount -1 do if FDManager.Connections[i].InTransaction then Connections[i].Rollback; end; Espero que possa ser util para alguém Obrigado Juliomar pela atenção
  2. Não tem. As ações que estou fazendo está neste exemplo. Em momento alguma faço TFDConnection.StarTransaction;
  3. Boa tarde, Juliomar! Eu desabilitei o autocommit do TFDConnection; vou demostrar como fiz COnexao = TFDConnection que é criado dentro da classe ConfiguraEmpresa. While Not DmPrincipal.QrEmpCad.Eof Do Begin Try ConfiguraEmpresa(RetornaAlias(DmPrincipal.QrEmpCadCODIGOEMPRESA.Value)); aqui crio a conexão para cada banco existente transacao:= TFDTransaction.Create(nil); transacao.Connection:= Conexao; FrPrincipal.conexaoteste.UpdateOptions.LockWait := False; transacao.Options.ReadOnly := False; transacao.Options.Isolation := xiReadCommitted; transacao.StartTransaction; Gravar; aqui grava os registros suando um TFDQuery apontado para COnexao Except transacao.Rollback; Application.MessageBox(Pchar('Não foi possível gravar Registro na empresa ' + FormatFloat('000',DmPrincipal.QrEmpCadCODIGOEMPRESA.Value)),'Atenção',MB_ICONEXCLAMATION); exit; End; DmPrincipal.QrEmpCad.Next; End; transacao.Commit; O que está de errado no codigo?
  4. Boa tarde, Juliomar! Mesmo lendo e tentando implementar não obtive sucesso!, gera o mesmo erro . Connection must is active Vc teria um exemplo como ficaria no meu caso?
  5. MSOL

    Múltiplas transações

    Bom dia! Não estou conseguindo trabalhar com varias transações. Nosso sistema trabalha com empresa cadastro, ou seja, posso ter varios bancos(empresa), mas todo cadastro é realizado em apenas uma que persiste as informações nos outro banco. Ex: cadastro um produto na empresa 1 e replica para empresa 2, 3 etc... Só que se por algum motivo falhar a inserção das informações na empresa3, por exemplo, preciso abortar o cancelamento no outros banco tbm. Uso firedac com firebird. Tentei assim: transacao = TFDTrasaction e ADCEmpresa = TFDConnection ADCEmpresa.Transaction:= transacao; transacao.StartTransaction; vEmpAtual := FrPrincipal.vAliasEmp; While Not DmPrincipal.QrEmpCad.Eof Do Begin Try If FrPrincipal.CodigoEmpresaCad > 0 Then ConfiguraEmpresa(RetornaAlias(DmPrincipal.QrEmpCadCODIGOEMPRESA.Value)); // aqui eu crio uma nova conexão em outro banco if FrPrincipal.CodigoEmpresaCad > 0 then Gravar(Trunc(DMPrincipal.QrEmpCadCODIGOEMPRESA.Value)) else Gravar(FrPrincipal.CodigoEmpresa); If FrPrincipal.CodigoEmpresaCad <= 0 Then exit; Except transacao.Rollback; Application.MessageBox(Pchar('Não foi possível gravar Registro na empresa ' + FormatFloat('000',DmPrincipal.QrEmpCadCODIGOEMPRESA.Value)),'Atenção',MB_ICONEXCLAMATION); exit; End; DmPrincipal.QrEmpCad.Next; End; transacao.Commit; Mas da erro no rollback, com o erro mais ou menos assim connection must is active Como faria isso?
  6. Já estão em processo de migração desde o dia 27/11/23. A partir do dia 04/12/23 começarão com o novo provedor. Segue abaixo o aviso da prefeitura: A Prefeitura de Divinópolis, através da Secretaria Municipal de Fazenda (Semfaz), informa que, a emissão de nota fiscal eletrônica de serviços, retornará na segunda-feira (4/12), a partir das 8h. A exceção ainda será para a Nota Fiscal Avulsa, que será restabelecida no dia 11 de dezembro. Conforme amplamente divulgado, a Prefeitura de Divinópolis está passando por um processo de migração de sistemas para uma Administração Municipal mais tecnológica, sem burocracia e para melhor atender o cidadão! Para configuração final dos dados, se faz necessária uma parada técnica que teve início no dia 27 de novembro e vai até o dia 8 de dezembro, com a indisponibilidade temporária de alguns serviços. Quem precisar de informações, esclarecimentos ou desejarem realizar solicitações urgentes, devem entrar em contato por meio dos canais alternativos de atendimento, como telefone/WhatsApp ou e-mail. A equipe da Semfaz estará pronta para auxiliar e fornecer as informações necessárias! Contatos: Gerência de Fiscalização Tributária: 3229-6523 (WhatsApp) E-mail: [email protected] Plantão Fiscal: (37) 3229-6531
  7. Diego, entrei em contato com a prefeitura e me informaram que as duas estarão disponíveis
  8. Boa tarde! A cidade de Divinopolis MG, está alterando seu provedor. Atualmente é GovDigital e passará para Betha segue documentação https://e-gov.betha.com.br/e-nota-test/ambienteteste.faces
  9. Bom dia! Obrigado, Panda! Deu certo a atualização. Pode fechar o tópico, por favor
  10. Bom dia! O email foi enviado com emitente [email protected] Obrigado pela atenção de todos!
  11. Bom dia! Será possível fazer a alteração mencionada por mim no inicio do tópico?
  12. Bom dia, Daniel! é pq tem cliente que não insere o numero da autorização, mas deseja que imprima qual bandeira usada no DANFce. Coisas de clientes, vai entender!
  13. Boa tarde! Uso o Fortes para impressão; Percebi que para imprimir a bandeira na forma de pagamento da NFCe, está obrigando a ter uma numero de autorização; veja o codigo: function TACBrNFeDANFCEClass.ManterDescricaoPagamentos(aPagto: TpagCollectionItem String; var descBandeira, codigoAutorizacao: String; begin Result := ''; descBandeira := ''; codigoAutorizacao := ''; with aPagto do begin try if ((tPag in [fpCartaoCredito, fpCartaoDebito]) and (tpIntegra = tiPagIntegrado)) or ((tPag in [fpCartaoCredito, fpCartaoDebito]) and (cAut <>'')) then begin if Ord(aPagto.tBand) >= 0 then descBandeira:= BandeiraCartaoToDescStr(tBand); CodigoAutorizacao := '- Aut: ' + cAut; end; if (icaTipo in FDescricaoPagamentos) then Result:= ACBrStr(FormaPagamentoToDescricao(tPag, xPag)) + Space(1); if (icaBandeira in FDescricaoPagamentos) then Result := Result + descBandeira + Space(1); if (icaAutorizacao in FDescricaoPagamentos) then Result := Result + CodigoAutorizacao; except Result:= ACBrStr(FormaPagamentoToDescricao(tPag, xPag)) + Space(1); end; end; end; No caso penso que teria que ser assim: if ((tPag in [fpCartaoCredito, fpCartaoDebito]) and (tpIntegra = tiPagIntegrado)) or ((tPag in [fpCartaoCredito, fpCartaoDebito])) then begin if Ord(aPagto.tBand) >= 0 then descBandeira:= BandeiraCartaoToDescStr(tBand); if (cAut <>'')then CodigoAutorizacao := '- Aut: ' + cAut; end; Sendo assim, mesmo que não informou o numero da autorização, irá mostrar qual bandeira vendeu
  14. Bom dia, Daniel! Eu já li esses topicos e a NT, mas como não é mencionado (pelo menos não encontrei) como proceder quando varias entradas de notas no periodo, pensei em pegar os valores da ultima nota de entrada, para não fazer consultas e calculos(que deixaria lento ao vender o produto) na NFC-e
  15. Boa tarde! De acordo com a NT 2023.001, precisarei informar as tags qBCMonoRet e vICMSMonoRet na NFCe. (só tenho clientes de revenda de GLP); Minha duvida seria se posso pegar essas informações da ultima nota de entrada ou teria que fazer uma media ponderada? Penso que é uma informação sem sentido do fisco(acompanhei o papo pro) e que poderia pegar somente os valores da ultima nota, pois imagina fazer media de valores no frente de caixa; Como estão fazendo?
  16. Bom dia! Deixei um log no app para saber onde pode ser o problema, ou seja, onde está duplicando o caminho. Pode fechar o topico
  17. Não dá; Onde consigo o manual do retorno de cada propriedade do componente?
  18. Boa tarde! Gravo no meu banco o caminho das notas de serviços emitidas, porém começou a um tempo duplicar o caminho. Exemplo de gravação: sNomeArquivo := FrPrincipal.ACBrNFSeX1.Configuracoes.Arquivos.GetPathNFSe + '\' + FrPrincipal.ACBrNFSeX1.NotasFiscais.Items[i].NomeArq; Está gravando assim no banco: C:\Sge32\PastasNFe\07528036000191\nfse\07528036000191\2023\04\Notas\C:\Sge32\PastasNFe\07528036000191\nfse\07528036000191\2023\04\Notas\3123040752803600019156000000000000732-nfse.xml Configuraçao do componente TACBrNFSeX: with ACBrNFSeX1.Configuracoes.Arquivos do begin PathGer := '\Sge32\PastasNFe\07528036000191\nfse'; if not DirectoryExists(PathSalvar) then ForceDirectories(PathSalvar); NomeLongoNFSe := True; Salvar := true; //salvar arq. em pastas separadas SepararPorMes := true; AdicionarLiteral := false; EmissaoPathNFSe := false;//salvar documento pelo campo dt. emissão SepararPorCNPJ := true; PathMensal := GetPathGer(0); PathSalvar := PathMensal; PathCan := PathMensal; end; Antes funcionava, agora está assim. Acredito ser da ultima vez que atualizei o ACBr; Ai não encontra o caminho para imprimir a nota
  19. Realmente era a sequencia da configuração que estava errada. Ao gravar o codigo do municipio por ultimo, deu certo! Resolvido o problema! Muito obrigado!
  20. Realmente não observei essa sequencia! Farei os testes aqui e retornarei mais tarde. Obrigado
  21. Obrigado, Diego! Mas eu configuro o ambiente tbm, veja: with ACBrNFeSource.Configuracoes.WebServices do begin if fParametersServices.VerificaParametros('AMBIENTENFSE','V') = 'P' then Ambiente := taProducao else Ambiente := taHomologacao; Visualizar := true; UF := fParametersServices.VerificaParametros('UFEMPRESA','V'); Salvar := true; end; Tanto é que a emissão está no ambiente de produção
  22. Bom dia! Não estou conseguindo cancelar uma NFS-e; O Provedor é ISSNET, e ao enviar o comando para cancelar recebo o retorno 'Município de prestação de serviço informado no XML diferente da URL do webservice' Percebi que o codigo do municipio está 999, mas estranho que aimento o componente com o codigo correto, tanto é que consigo emitir nas NFS-e; MInha configuração do componente ACBrNFSeX na guia geral é o seguinte: with ACBrNFeSource.Configuracoes.Geral do begin SSLLib := TSSLLib(StrToInt(fParametersServices.VerificaParametros('SSLLIB','I'))); SSLCryptLib := TSSLCryptLib(StrToInt(fParametersServices.VerificaParametros('CRYPTLIB','I'))); SSLHttpLib := TSSLHttpLib(StrToInt(fParametersServices.VerificaParametros('HTTPLIB','I'))); SSLXmlSignLib := TSSLXmlSignLib(StrToInt(fParametersServices.VerificaParametros('XMLSIGNLIB','I'))); Salvar := true; RetirarAcentos := true; ConsultaLoteAposEnvio := true; ConsultaAposCancelar := true; Emitente.CNPJ := fParametersServices.VerificaParametros('CGCEMPRESA','V'); Emitente.InscMun := fParametersServices.VerificaParametros('INSCMUNICIPAL','V'); Emitente.RazSocial := fParametersServices.VerificaParametros('NOMEEMPRESA','V'); CodigoMunicipio := StrToIntDef(cMunicipio,0); // Exemplos de valores para WSChaveAcesso para alguns provedores. if Provedor in [proAgili, proElotech] then Emitente.WSChaveAcesso := '0aA1bB2cC3dD4eE5fF6aA7bB8cC9dDEF'; if Provedor = proISSNet then Emitente.WSChaveAcesso := 'A001.B0001.C0001-1'; if Provedor = proSigep then Emitente.WSChaveAcesso := 'A001.B0001.C0001'; if Provedor = proiiBrasil then Emitente.WSChaveAcesso := 'TLXX4JN38KXTRNSEAJYYEA=='; end; Não entendi o pq está 999 no codigo do municipio no meu pedido de cancelamento; Xmls em anexo 6871-ped-can.xml 6871-can.xml
  23. Bom dia! O problema foi resolvido, porém estou deixando aqui a solução que pode ser util para outros. O problema era na configuração do Windows, e segue o caminho: Painel de controle, Região. Aba Administrativo, alterar localidade do sistema. Deixar desmarcado o check Beta: Usar Unicode UTF-8 para suporte de linguagem mundial; No cliente eles instalaram uma camera e acredito que seja esse sistema que alterou, deixando marcado UTF-8; Obrigado a todos pela atenção!
  24. Vou fazer esses teste e aviso! Obrigado
  25. Entendo, Juliomar! Mas no meu caso eu alimento a logo por um edit e nos fontes não tem nada fixo para a logo(vazio). Como o edit está vazio, penso que não teria como ser isso; Ainda mais que somente o suporte tem acesso a configuração de logo
×
×
  • 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.