Ir para conteúdo
  • Cadastre-se

MSOL

Membros Pro
  • Total de ítens

    33
  • Registro em

  • Última visita

Sobre MSOL

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

MSOL's Achievements

Explorer

Explorer (4/14)

  • One Year In
  • Collaborator Rare
  • First Post
  • Conversation Starter
  • One Month Later

Recent Badges

14

Reputação

  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?
×
×
  • 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.