Ir para conteúdo
  • Cadastre-se

Rodrigo Cunha

Membros Pro
  • Total de ítens

    31
  • Registro em

  • Última visita

Posts postados por Rodrigo Cunha

  1. Bom dia! Eu ainda não consegui entender como coloco um parâmetro em uma query no delphi para executar o comando:
    Gostaria de passar a data para executar o comando. Obg.

    Execute Block (dtvencto timestamp = ?data)
    as
    begin
        Update Titulo_Receber Set   vlr_multa = Case When dt_vencto < Cast(:dtvencto as date) Then (vlr_nominal - Coalesce(vlr_desc,0)) * (Select First 1 coalesce(l.pct_multa,0) From Loja l Where Titulo_Receber.cd_emp = l.cd_emp and Titulo_Receber.cd_loja = l.cd_loja)/100 Else 0 End,
                                    pct_juros = (Select first 1 l.pct_juros_mes From Loja l Where Titulo_Receber.cd_emp = l.cd_emp and Titulo_Receber.cd_loja = l.cd_loja),
                                    vlr_juros = (vlr_nominal - Coalesce(vlr_desc,0)) * ((((Select First 1 l.pct_juros_mes From Loja l Where Titulo_Receber.cd_emp = l.cd_emp and Titulo_Receber.cd_loja = l.cd_loja)/30)/100) * (Cast(:dtvencto as date) - Cast(dt_vencto as date)))
        Where   cd_emp > 0
        and     cd_loja > 0
        and     status = 'A'
        and     dt_vencto <= Cast(:dtvencto as date)
        and     dt_vencto <= cast(current_timestamp as date);
        
        Update Titulo_Receber Set   vlr_saldo = vlr_nominal - Coalesce(vlr_pago,0) - Coalesce(vlr_desc,0) + Coalesce(vlr_multa,0) + Coalesce(vlr_juros,0)
        Where   cd_emp > 0
        and     cd_loja > 0
        and     status = 'A'
        and     dt_vencto <= Cast(:dtvencto as date)
        and     dt_vencto <= cast(current_timestamp as date);

    end;
     

  2. Não sei a a dúvida seria aqui, mas...


    É que pesquisei e o parâmetro do execute block é ? e no delphi é :

    Quando coloco da forma acima no delphi dá um erro na hora da execução.

    Queria saber qual a forma pra eu colocar execute block pra funcionar numa query do delphi passando parâmetro de entrada.

  3. Olá. Estou reestruturando meus updates e preciso executar vários em um bloco apenas. Me deparei com  um problema referente a parâmetros no execute block.

    Ex:

    Execute Block (dtvencto timestamp = :data)
    as
    begin
        Update  Titulo_Receber Set  vlr_multa = vlr_nominal * 0.02,
                                    vlr_juros = vlr_nominal * 0.05
        Where   dt_vencto <= Cast(:dtvencto as date);

        Update  Titulo_Receber Set   vlr_saldo = vlr_nominal - Coalesce(vlr_pago,0) - Coalesce(vlr_desc,0) + Coalesce(vlr_multa,0) + Coalesce(vlr_juros,0)
        Where   dt_vencto <= Cast(:dtvencto as date);
    end;
    Não está funcionando claro. Mas como eu passa um parâmetro pelo delphi pra funcionar o execute block?

    Obg pela ajuda.

  4. Obg pelo retorno. Vamos lá.

    Criei uma tabela temporaria com o nome: Create Table  lixo_teste (cd_prod integer, vlr_01 numeric(9,2), vlr_02 numeric(9,2), vlr_03 numeric(9,2)).

    Ai eu uso o update pra pegar o valor maximo de uma coluna de outra tabela e colocar no vlr_01, depois eu pego o campo vlr_01 diminuo 1 e atribuo ao campo vlr_02 e a mesma coiasa com o campo vlr_03. Então ficaria assim

    cd_prod  vlr_01   vlr_02    vlr_03

    000001   10,00       9,00       8,00

    000002  15,00       14,00      13,00

    Como o vlr_01 é de um select max... eu uso o resultado dentro da mesma update para compor os campos vlr_02 e vlr_03. 

    No firebird 2.5 eu utilizada o OldSetClauseSemantics = 1 , mas no firebird 3 não há essa possibilidade. Eu queria entender se no update eu não consigo mesmo utilizar o resultado de uma campo para ser utilizado em outro, no caso, no mesmo comando: update lixo_teste vlr_01 = 10, vlr_02 = vlr_01 -1, vlr_03 = vlr_02 - 1. Neste exemplo não fica 10 - 9 - 8 o resultado e sim 10 -1  -1. Se eu quiser aproveitar a informação eu devo colocar no execute block o update lixo_teste set vlr_01=10. depois update lixo_teste vlr_02 = vlr_01  - 1....
    Ou tem alguma outra forma de eu aproveitar minha lógica?

  5. Olá a todos!
       Eu utilizo o firebird 2.5 com a opção OldSetClauseSemantics = 1. Ex:

      update lixo_teste set vlr_01 = (select max(prc_venda) from produto_empresa pe where cd_loja=2 and lixo_teste.cd_prod = pe.cd_prod), vlr_02 = vlr_01 - 1, vlr_03 = vlr_02 - 1 where exists (select * from produto_empresa pe where cd_loja=2 and lixo_teste.cd_prod = pe.cd_prod);

       Utilizo muito a recuperação do valor da coluna 1 em outras colunas. Como as novas versões do firebird não tem essa opção, terei que reescrever todos os meus updates? Como ficaria? um exemplo pv. Tenho que ficar repedindo o select max... nas outras colunas pra obter o valore necessário? Tenho subselects grandes, seria uma grande mudança. Preciso de sugestões e/ou esclarecimentos.

    Obg.

  6. Bom dia! 

    Eu nunca fiz um consumo API/Json/Webservice e estou a procura de um curso/video ou ajuda de passo a passo sobre o assunto. 

    Estou pesquisando e não estou encontrando um curso mais extensivo e explicativo sobre os assuntos. Alguém tem um dica onde encontro esse material? Pago ou gratuíto.

    Obg.

  7. Olá, 

        recebi um telefonema da área jurídica da embarcadero alegando que eu instalei um trial do rad studio e que a licença não retornou e estou entrando com uma ação judicial contra mim. Eu aleguei que tenho sim, o delphi community e que tenho interesso do professional. Posso ter instalado esse trial, mas nunca compilei um programa nele. A pessoa não quis discussão e retornou um email que irá prosseguir com a ação judicial. Já liguei na área de vendas e não podem ajudar.

       Alguém ja passou por isso aqui? Como resolveu?

    Obg.

    • Curtir 1
  8. Boa tarde!

    Utilizo o MonitorPlus para fazer downloads das nfes dos meu clientes. Tendo fazer o download com o comando: NFe.DistribuicaoDFePorChaveNFe(33,30927153000140,33180910243792000189550010000379701000800604). Caso não localize envio o evento 210200 Confirmação de Recebimento e depois de 8segundos executo o comando  NFe.DistribuicaoDFePorChaveNFe. Desde que atualizei o monitor plus para versao 1.2.xxx estou com dificuldades de fazer os downloads, pois poucas vezes o processo ocorre de forma sequencial. E muitas vezes demora minutos para conseguir fazer o download.

    Há alguma configuração específica para melhorar esse processo?

  9. Na verdade eu ja crio o xml e passo os comandos:

    NFE.ASSINARNFE("caminho do xml');

    NFE.VALIDARNFE("caminho do xml");

    NFE.ENVIARNFE("caminho do xml",1,1,1);

    A Assinatura é preenchida pelo retorno do xml. 

    Segue o primeiro xml gerador e o segundo como retorno após os comandos acima.

    33180108529764000180550010000001411134162929-nfe.xml

    33180108529764000180550010000001411134162929-nfe apos o retorno.xml

  10. Atualizei para a versão ACBrMonitorPLUS-1.1.0.50 e está retoroando o seguinte erro. Não consegui literatura sobre isto que me ajudasse. E em versões anteriores o erro é outro, então acredito que tenho que funcionar nas versões atuais.

    ERRO: Falha na validação dos dados da nota: 141

    1871 - Element '{http://www.w3.org/2000/09/xmldsig#}Signature'

    33180108529764000180550010000001411191446450-nfe.xml

  11. Bom dia!

    Como o próprio título questiona gostaria de saber como saber se as notas de entrada foram manifestadas.

    Estou utilizando o método NFe.DistribuicaoDFePorUltNSU ou NFe.DistribuicaoDFe para verificas as notas emitidas para o cnpj do cliente. Nos retornos não identifiquei os eventos de ciência ou confirmação da operação. Tem algum outro método? Como baixar os eventos dessas notas?

    Att,

    Rodrigo Cunha.

  12. Boa tarde!

    Após atualizar o acbrmonitorplus para 1.1.0.14 ocorre a seguinte mensagem:

    Content for element '{http://www.portalfiscal.inf.br/nfe}NFe' is incomplete according to the DTD/Schema.
    Expecting: {http://www.portalfiscal.inf.br/nfe}infNFeSupl, {http://www.w3.org/2000/09/xmldsig#}Signature.

    Dei uma lida no forum e passei a assinar antes de validar, mas não segue.

    Gostaria de saber qual procedimento devo fazer?

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