- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 8 anos, 3 meses atrás por José Laurindo Chiappa.
-
AutorPosts
-
29 de julho de 2016 às 10:13 pm #108325Marco Antonio BorgesParticipante
Necessidade:
Colocar nas colunas das tabelas valores de comissões com base no numero de parcelas.Exemplo:
VALOR DA VENDA = R$ 2.673,00 * 55/100 = R$ 1.470,15 /*VALOR REAL DA VENDA */VALOR REAL DA VENDA = R$ 1.470,15 * 5,5% = R$ 80,86 /*COMISSAO */
Se a pessoa pagou em NRO_PARCELAS >=2
ENTÃO:
NUMERO DE VEZES: V_NROPARCELAS
MES ATUAL + nº de vezes ate completar
ex.
Nº DE VEZES = 3
Janeiro 2016 =R$ 80,86
Fevereiro 2016 =R$ 80,86
Março 2016 =R$ 80,86TENHO QUE FAZER UM INSERT NA TABELA DE VENDAS QUE FIQUE, COMO O EXEMPLO ASSIM:
NRO_PARCELAS | VALOR_TOTAL | VALOR_REAL | VL_COMISSAO | MES_1 | MES_2 | MES_3 ….
3 2.673,00 1.470,15 80,86 80,86 80,86 80,86Qual seria a melhor abordagem para ele fazer um insert na tabela de vendas com meses a frente
completando com o valor da comissão?1 de agosto de 2016 às 5:25 pm #108326José Laurindo ChiappaModeradorColega, ** primeira coisa ** que eu TENHO que dizer é qaue essa modelagem que vc propõe, com MES_1, MES_2, MES_3, é Horrivelmente Inadequada para um RDBMS – entre outras coisas isso pode levar a necessidade de se ficar alterando estrutura/adicionando colunas quando qtdade de meses se alterar, pode levar à QUEBRA DE LINHAS em múltiplos blocos cfrme https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:53174778859588 lembra, E imho o pior de tudo : cfrme abudantemente documentado nos manuais de Concepts e de SQL, as recursos ** QUASE TODOS ** da linguagem SQL, os conceitos quase todos fundamentam filtragem de dados POR REGISTROS, e junção de múltiplas tabelas… A hora que vc começa colocar dados novos e independentes entre si num só registro, não só vc está Violando a normalização de dados mas também está Jogando Fora pela janela muitos dos built-ins do RDBMS que (insisto) visam a fazer JOIN e filtragens entre múltiplos registros de múltiplas tabelas, E NÃO a processar dados/extrair informação do mesmo registro…. Reveja isso plz….
Isso posto, pra podermos entender o seu problema vc TEM que não só nos dar as estruturas das tabelas envolvidas MAS TAMBÈM precisa nos dar uma massinha de dados-exemplo refletindo a sua situação : por exemplo, quando uma venda a prazo é feita, Existem registros com os dados das prestações futuras ou não, vc quer “gerar” dados que não estão inseridos e que devem ser DEDUZIDOS a partir do que existe (o TOTAL e a QTDADE DE PARCELAS no caso) ??? SE for isso, ** provavelmente ** vc vai precisar usar alguma lógica de geração de dados, por exemplo o truque do connect by mostrado em https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:40476301944675 , ou fazer join com ula tabela que sempre tenha mais dados do que a qtdade de linhas a se gerar, como por exemplo a ALL_OBJECTS talvez – mas ** INSISTO **, para podermos te ajudar precisamos da sua Estrutura de dados, de alguns INSERTs que montem uma massa de dados apropriada E de uma expplicação das suas regras de negócio…. okdoc ?? Sem isso estaríamos CHUTANDO A ESMO aqui….[]s
Chiappa
4 de agosto de 2016 às 12:53 am #108335Marco Antonio BorgesParticipanteOpa!
Tens razão meu caro, mas quando perguntei qual o melhor cenario tentei passar uma idéia de que nao tinha nada pronto ainda.
Somente escrevi do que tinha em mente como iria aparecer no ambiente , entende.Exemplo de dados de uma tabela excel recebida do vendedor:
Nome_Cliente Valor_Compra Pgto(x) Valor_Real_produto Valor Total Comissao
ANTONIO 3570,00 6 1963,50 107,99
CARLOS 3117,00 3 1714,35 94,29Obviamente, com tempo, criarei um modelo ER que mantenha critérios e regras que conhecemos.
O que preciso no fim:> No caso do ANTONIO, ele pagou 3570,00 no produto
> Para a empresa o valor do produto é: 1963,50.
Logo
> Ele efetuou a compra em 6 vezes, então para o vendedor, no fim das contas
o valor da sua comissão, será 107,99 que, por regra de negocio, tem que ser diluida
nos meses a frente da data da compra.Então seria 107,99 / 6 que daria em torno de 17,98 à receber em 6 parcelas a frente.
Se comprou em JAN/2016 a comissão irá de FEV À JUL/2016.
E a pergunta é:
Qual a melhor abordagem, por experiencia que voces tem, poderiam me dar?4 de agosto de 2016 às 11:08 pm #108336José Laurindo ChiappaModeradorEntão : pra podermos indicar a abordagem programática, temos que codificar e NECESSARIAMENTE, antes de sair programando, vc TEM QUE TER DEFINIDAS as estruturas físicas, ok ?? Não tem como vc colocar a carroça na frente dos bois, PRIMEIRO vc modela e DEPOIS vc programa, sim sim sim ???? não é viável vc querer programar/codificar COISA NENHUMA antes de ter definida E criada a sua modelagem lógica e física….
ASSUMINDO que vc vai ter uma modelagem Relacional adequada, Primeiro creio vc vai ter uma tabela de Prestações, com 1 registro para cada prestação… A Segunda coisa que eu tinha perguntado é a apresentação dos dados – ie, se temos os N pagamentos ou não, se só temos a qtdade de pagamentos e o valor total : baseado na Planilha que vc mostra, assumo que só temos o valor total e qtdade de pagamentos…Sendo isso que supus acima, a sua pergunta se torna : como fazer N inserts numa tabela, baseado na informação de qtdade de parcelas, sendo que só temos o Total ? É plenamente possível fazer em SQL mas (por comodidade) eu faria em PL/SQL mesmo… O pseudocódigo (PSEUDO, porque, INSISTO, sem estrutura física Não tem Como programar de verdade) seria :
…
for i in 1..qtdade de parcelas loop
insert into tabela de prestações (coluna nro do pagamento, valor) values(i, totaldopagamento/total de parcelas);
end loop;
….Uma vez corretamente Preenchida a tabela de prestações, é ** Trivial ** vc abrir um cursor nela para fazer qualquer análise necessária, okdoc ???
[]s
Chiappa
-
AutorPosts
- Você deve fazer login para responder a este tópico.