none
Lógica de loop em stored procedure para conversão de moedas RRS feed

  • Pergunta

  • Tenho o seguinte cenário, 2 querys que me retornam os campos abaixo:

    Query 1:

    Moeda | Mês/Ano | Valor
    Real  | 1/2018  | 123.12
    Real  | 2/2018  | 234.34
    Real  | 3/2018  | 525.34
    Real  | 4/2018  | 545.21

    Query 2:

    MoedaDe | MoedaPara | DataCotação | TaxaConversao
    Real    | Dolar     | 31/01/2018  | 0.32
    Dolar   | Euro      | 31/01/2018  | 3.16
    Euro    | Real      | 31/01/2018  | 0.25
    Real    | Franco    | 31/01/2018  | 3.94

    Eu preciso cruzar os valores delas em uma SP de forma que eu valide se na query 2 tem o ultimo dia útil do mês que está em cada registro da query 1, caso não tenha preciso que retorne uma mensagem de erro e se sim preciso converter o valor da query 1 com a taxa de conversão de cada registro.

    Por exemplo:

    Quero converter a query 1 pra dolar, neste caso vai retornar erro pois só tem taxa de conversão com ultimo dia útil do mês pra janeiro pros outros meses não tem na query 2. Mas caso tivesse o novo resultado da procedure seria a query 1 com os valores convertidos com o ultimo dia util de cada mês da query 2.

    Espero que tenha conseguido ser claro...

    Alguém tem alguma ideia de como posso fazer isso??

    Agradeço desde já qualquer ajuda?


    Wallace Carlos

    sexta-feira, 4 de janeiro de 2019 16:43

Respostas

Todas as Respostas

  • WallCarlos,

    Deixa eu ver se entendi, temos que analisar se existe o valor referente ao mês e moeda na query 1, se existir vai na query 2 identifica justamente esta moeda e o último dia do mês para posteriormente aplicar a conversão.

    É isso?

    Como é cadastradas as moedas e seus demais dados? Como a taxa de conversão deve ser estabelecida?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 4 de janeiro de 2019 17:20
  • Oi Pedro,

    Tenho uma tabela MOEDA e uma tabela TAXACONVERSAO.

    MOEDA => (ID, Nome, Codigo, Simbolo)

    TAXACONVERSAO => (ID, IdMoedaConvDe, IdMoedaConvPara, DataCotacao, TaxaConversao)

    A query 1 são lançamentos feitos pelo usuário que no momento de exibir no relatório devem ser mostrados na moeda solicitada independente da moeda que foi cadastrada.

    No exemplo ele tem lançamentos feitos em REAL, e pode querer exibir no relatório em DOLAR por exemplo. Como parametro principal pra conversão ele passa um range de datas que ja são os MESES da query 1. O que deve ser feito é verificar se pra cada mês existe cadastrado na query 2 a taxa de conversão do último dia útil daquele mês e converter os valores da query 1 respectivamente.

    Exemplo:

    1 registro da "query 1" deve receber o valor atualizado como (123.12 * 0.32)

    2 registro já retornaria um erro pq não existe valor do dia 28/2/2018 com taxa de conversão de REAL para DOLAR

    E a ideia é que fosse dando continuidade sucessivamente enquanto os cadastros estiverem atualizados com as taxas de conversões dos ultimos dias de cada mês.

    PS:As taxas de conversão são imputadas pelos usuários ao final de cada mês manualmente.

    Deu pra entender melhor agora???

    Grato pela ajuda.


    Wallace Carlos

    sexta-feira, 4 de janeiro de 2019 18:35
  • Deleted
    • Marcado como Resposta WallCarlos terça-feira, 8 de janeiro de 2019 12:21
    sexta-feira, 4 de janeiro de 2019 19:31
  • Wallace,

    Eu consegui entender sim, mas a questão que eu queria justamente entender era a maneira que os dados deveriam ser consistidos, sendo que a moeda teoricamente possui uma taxa de conversão que também é cadastrada por algum usuário.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    domingo, 6 de janeiro de 2019 01:14
  • Bom dia a todos!

    Gostaria de agradecer a todos que se dispuseram a ajudar, em especial ao José que clareou muito a solução.

    Vlw mesmo.

    Att.,

    Wallace Carlos


    Wallace Carlos

    terça-feira, 8 de janeiro de 2019 12:21