botão RUN - como informar a data da baixa

no meu formulario de consulta, estou usando o botão RUN para baixar os titulos do contas a pagar selecionados, porem só consigo baixar com a data atual, gostaria de ao clicar no botao RUN(botao BAIXAR TITULOS) fosse solicitado ao operador a data da baixa dos documentos selecionados, e ser armazenada em uma variavel pra eu poder usar esta informação e gravar no banco. Hoje estou sendo obrigado a assumir a data atual como a data da baixa.

Olá isso só será possível se existir um campo que o usuário informará qual data será da baixa.
Aí você coloca no se sc_exec_sql o update com essa data (campo)
Não é possível exibir opção para que o usuário tenha interação com esse evento…

onde coloco essse campo unico na aplicacao consulta?

Seria um novo campo ex. data da baixa.
Nele deve constar a data correta e fazer o update de acordo com o valor dele e não da data atual.
Mas assim o usuário terá que alterá-lo de acordo com a data correta.

Olá Rodrigo,
tratando-se de uma aplicacao de consulta, ao criar este campo que vc me sugeriu, duas coisas ocorrem:

  1. ele não me permite editar na grid;
  2. eu teria que informar a data de um a um;

Eu abro esta aplicacao no modo filtro, e normalmente consulto por vencimento, etão ele me mostra lá uns 30 documentos. Eu preciso por exemplo ou ainda no filtro informar a data em que foi dado baixa nas duplicatas que irei selecionar, ou apois selecionar ao clicar no botao run ele pedir a data da baixa dos documento selecionados pra eu nao ter que fazer isso um a um.

Faz o seguinte, crie um campo novo na grid e um no filtro com nomes diferentes.

O usuário colocará a data da baixa nesse campo no filtro. (deve ser a app inicial)

no onScriptInit atribua o valor do campo criado da grid com o valor digitado pelo usuário nesse campo do filtro.

Assim todos os campo filtrados receberão o valor digitado no filtro, aí só usar o botão run atualizando de acordo com o campo da grid, o valor inserido pelo usuário.

Vou fazer assim, porem o ideal pra mim seria solicitar a data ao clicar no botao run. Tem algum jeito?

Dessa maneira você precisaria criar uma tabela com o campo da data de baixa.
Criar um form apenas para esse campo.
Na consulta fazer um lookup e puxar esse campo.
Criar um botão na grid para o usuário alterar essa data.
E assim atualizar qual de acordo com a data.

Agora para solicitar ao processar o run não tem como…

Você pode criar um app controle que recebe via array ou qualquer outro tipo de variável a listagem de baixas e na app controle ter um campo tipo data onde o usuário informe a data de baixa e ao clicar em ok ele pega a listagem recebida da grid pelo botão run e faz a baixa.

e como chamo essa nova app dentro do botam run passando a variavel array?

Como passar uma variavel array como paramentro entre uma APP consulta e visualiza-la na APP controle?

Olá pessoal!

Por mais que ainda seja um tópico velhinho, também tenho este problema.

Preciso que antes de fazer o UPDATE via botão RUN eu informe a data da baixa.

Como fazer isto via SC?

Acredito que seja uma melhoria para as próximas versões.

Vou tentar uma gabiarra aqui.

Melhoria para próximas versões?

Qual a melhoria? Especifique?

Pegar a data da baixa?
Esse valor se encontra onde?
Não sabe trabalhar com Globais???

Prezado Haroldo,

Algo simples que todo sistema deveria fazer: eu marco em uma grid as opções que quero executar alguma ação, neste caso UPDATE em massa de uma data, porém preciso informar esta data antes de fazer este UPDATE em massa.
O que habilita o Checkbox para marcarmos os itens da grid é o botão RUN, porém ele não tem nenhuma funcionalidade de chamar, por exemplo, uma aplicação controle para definirmos alguns parâmetros antes da execução do código ONRECORD e ONFINISH.

O que eu estou fazendo de gambiarra é criar uma tela de controle onde o usuário define a data e então eu coloca como variável global. E tem outro botão para alterar que é do tipo RUN.

Não sei se me fiz entender. O que seria ideal para mim era ter uma forma de acessar este array de registros marcados em uma aplicação controle sem a necessidade do botão RUN ou que no botão RUN tivesse uma opção de abrir um controle antes.

Acho que complica o que é simples.

Use o filtro da consulta para informar os valores desejados ( isso ocorrerá antes das marcações do checkbox).

Se deseja informar os dados após a marcação.

No evento onfinish do botão Run redirecione para a consulta passando os ids do registros marcados para uma app de controle, onde irã informar os dados desejados e no evento onvalidatesucess vc processa os registros marcados na consulta.

Qual a dificuldade?

Obrigado Haroldo, esta ideia do ONFINISH é o que eu precisava.

A questão da simplicidade é complicado, pois depende da regra de negócio, necessidades de usabilidade, experiência de usuário, etc… o importante é a NM ficar atenta as nossas necessidades e ver a possibilidade de melhorar as formas de acesso aos campos marcados.

Nesse videos e em sua sequência de mais 3, vc pode capturar o momento da marcação:

https://www.youtube.com/watch?v=ow-UV2fopyQ

Grande Haroldo, tuas dicas foram valiosas.

Como eu resolvi?

No ONRECORD do botão RUN:

if (empty([glo_str_operacoes_id])){ [glo_str_operacoes_id] = {operacao_id}; }else{ [glo_str_operacoes_id] .= '#'.{operacao_id}; }

No ONFINISH do botão RUN:

sc_redir(control_nova_otp_do_data);

Criei uma aplicação CONTOLE control_nova_otp_do_data com dois campos:
{operacoes_alteradas} tipo label
{nova_otp_do_data} tipo data

No ONLOAD da APP control_nova_otp_do_data:

[code]$operacoes = explode("#", [glo_str_operacoes_id]);

$operacoes_alteradas_montado = ‘’;

foreach ($operacoes as &$operacao_id_alterada) {

sc_lookup(ds_operacao_alterada, "SELECT producao_sublote_id, do_data FROM operacao WHERE operacao_id=$operacao_id_alterada");

$ds_operacao_alterada_sublote = {ds_operacao_alterada[0][0]};
$ds_operacao_alterada_do_data = {ds_operacao_alterada[0][1]};
$ds_operacao_alterada_do_data = sc_date_conv($ds_operacao_alterada_do_data, "AAAAMMDD", "DD/MM/AAAA");

$operacoes_alteradas_montado.= "Operação: $operacao_id_alterada | Sublote: $ds_operacao_alterada_sublote | DO Data: $ds_operacao_alterada_do_data<br>";

}

{operacoes_alteradas} = $operacoes_alteradas_montado;

if (!empty([glo_nova_otp_do_data])){
{nova_otp_do_data} = [glo_nova_otp_do_data];
}[/code]

No ONVALIDATESUCESS da APP control_nova_otp_do_data::

[code]$operacoes = explode("#", [glo_str_operacoes_id]);

sc_begin_trans();
foreach ($operacoes as &$operacao_id_alterada) {
sc_exec_sql(“UPDATE operacao SET do_data = ‘{nova_otp_do_data}’ WHERE operacao_id=$operacao_id_alterada”);
}
sc_commit_trans();

sc_reset_global([glo_str_operacoes_id]);
sc_redir(grid_operacao_otp_do);[/code]