[RESOLVIDO] Controlar Valor a Pagar com Pagamento

Tenho o seguinte caso que devo implementar no SC y não estou sabendo como chegar ao resultado
Atual no Desktop ERP
1- Se seleciona varias Ctas. a Pagar de um provedor X pré-selecionado.
2- É ingressado os diversos tipos de pagamentos que as contas selecionadas terão Exemplo (Cheques, Depósitos, Dinheiro Vivo, Transferências), podendo ter N condições de pagamentos para um mesmo pago. tudo isto ainda sem fazer qualquer alteração na BD excepto reservar as contas selecionadas para que outro usuário de Pagamentos não as selecione ao mesmo tempo.
3- Antes do usuário salvar a operação e validado que a soma de todos os valores inseridos nas condições seja igual ao valor a ser pago, si for menor ou maior não e possível salvar a operação, ate que o usuário corrija os valores…

Agora no SC
1- Se seleciona varias Ctas. a Pagar de um provedor X pré-selecionado. OK
2- :frowning: nem ideia
3- Pioro ainda mais

Alguém tem algo parecido no SC que poderia me indicar como proceder…

Imagem de como e hoje em dia

Tô estranhando que você não deu conta de fazer isso. eheh

E só colocar FLAGs (campos extras na tabela com status) nas contas do BD que o usuário selecionou e prende elas até o
movimento ser encerrado, para um outro usuário não usar, caso o usuário desista da operação ele libera os flags, e hora de
gravar checa os flags que ele usou se estão válidos, compara a soma se tá batendo se não mostra a mensagem sc_error_message
para ele ajustar os valores.

Vai postando a sequência ou os comandos necessários que agente vai colocando indicando.

Se tiver tempo e uns $$ sobrando é legal ler estes livros:
http://www.saraiva.com.br/2665929-algoritmos--logica-para-desenvolvimento-de-programacao-de-computadores.html

Tipo muda-se a linguagem mas a lógica matemática algoritimos continuam os mesmo, é tipo a lei da física. hehe
http://pt.wikipedia.org/wiki/Algoritmo

Ola Jailton o problema maior e na validação de valores pois cada vez que você inseri uma linha no form multi linhas ele grava na BD tornando-se impossível você validar si os valores estão ou não corretos
A parte de reservar os DOCs. e moleza sem drama nisso, mais o problema mesmo e como validar valor dos Docs. com os valores de pagamentos lembrando que pode ser N as condições de pagamentos.

não sei si me expliquei :slight_smile:

Wiliam ai que tá a ‘lógica’ da coisa, você neste ‘ALGORITIMO’ não pode gravar no BD na hora, você vai armazenar, tudo primeiro no detalhe.

E colocar um botão em cima chamado ‘TRANSMITIR’ ai quando o usuário terminar de lançar ele vai clicar no botão ‘TRANSMITIR’ você vai ler
os dados validar eles e fazer os lançamentos e atualizar as FLAGS campos nas tabelas.

Assim que usar a FLAG anota também o TIMESTAMP para controlar o tempo que a flag tá presa caso o usuário não terminar o lançamento em 10 minutos ele vai cancelar ela automaticamente, mas na hora de TRANSMITIR ele vai mostrar que aquela forma selecionada não esta mais valida ai ele vai ter que fazer a substituição e você inicia a marcação novamente.

  • Observação a cada detalhe lançado ele prende a flag ali no registro, até que seja clicado em ‘TRANSMITIR’ ou usuário exceda o tempo
    para a operação.

Bom mas no caso, se alguém tiver uma melhor forma de fazer, estamos abertos a sugestões. hehe

Entendi que não pode alterar o banco de dados pois não valida com o valor total a ser pago.

Crie uma tabela temporária em memoria, para salvar o id da conta, usuário e outros dados que necessite.

No evento onchange do campo checkbox (aquele que você vai selecionar a conta) verifique se tem o id da conta já inserido, se sim apresente uma mensagem ao operador dizendo que essa conta já foi marcada para baixa pelo usuário xxxx, caso não insira o id, valor, usuário,sessão php, etc, na tabela.
Ao submeter faça um sum nessa tabela pela sessão php, se o valor bater você baixa as contas e remove todos os registos dessa sessão.

Com a dica de vocês cheguei ao resultado não sei si e o mais pratico mais funciono.

Tenho uma app tipo controle onde se seleciona um provedor a ser pago com um campo auto complete.
Ao selecionar um provedor y aceitar, redir()… para uma app tipo grid com um campo checkbox onde o usuário seleciona todas as contas a serem baixadas… suponhamos que o total a ser pago foi de 25.000
Então processo o que foi selecionado guardando em um TMP (tabela temporal). com o botão RUN da grid
O seguinte passo e ingressar a/as formas de pagamentos para os 25.000 que como disse pode ser varias, aqui estava o problema pois estou trabalhando com form Grid editável também posso com Grid editável View, por que??? por que para poder inserir uma nova linha devo submeter a ultima sim o sim, então não poderia estar validando nesse momento os valores e condições utilizadas para pagar os 25.000,
Solução vou guardando cada linha das condições em uma tbl auxiliar, adicionei um botão no form PROCESSAR onde ai finalmente faço a validação onde pego a soma do total inserido pelo usuário com o total que ele seleciona desejando pagar…

Putz mais fácil que isto só dos isto :smiley:

Ok, agora na hora que finalizar a rotina, lembra de fazer 2 testes.

  1. 2 usuários tentando usar os mesmos pagamentos na mesma hora.

  2. Usuário começou a lançar e desistiu, fechou o formulário no X, do navegador, ai se ele entrar novamente e fazer um
    outro lançamento e tentar usar os valores já estariam liberados novamente.

Um abraço.