Coletar data para processar no botão run

Olá Pessoal,

Estou com uma dificuldade em um projeto que talvez seja algo simples de resolver, mas não estou encontrando a solução.

Trata-se de uma grid de contas a receber com vários boletos lançados.

O que desejo: criar um botão tipo run onde (após selecionar os boletos que desejo baixar) gere uma janela para o usuário inserir a data do pagamento e depois de confirmado, rode o código para atualizar as tabelas do sistema, usando a informação de data de pagamento informada pelo usuário.

Minha dificuldade está justamente em como fazer essa janela para o usuário entrar com a data do pagamento e capturar este valor para usar no evento OnFinish do botão Run.

Segue o código no momento.

No evento OnScriptInit da grid declaro:

[id] = 0;
[id_base] = array();
[cod_ra] = array();

No evento OnRecord do botão Run coleto os ids selecionados pelo usuário:

$arr = [id];
[id_base][$arr] = {ID_BASE};
[cod_ra][$arr] = {COD_RA};
[id]++;

No evento OnFinish, faço a atualização das tabelas. Onde está grifado em vermelho seria utilizada a informação da data de pagamento.

$datapagto = $_POST[“datapagto”];
$tot = count([id_base]);
for ($x=0;$x<$tot;$x++){
$id_base = [id_base][$x];
$cod_ra = [cod_ra][$x];
$compara = $x-1;
sc_exec_sql(“UPDATE resgates SET STATUS_RESGATE = 21, DT_PAGTO = $datapagto, OBS = CONCAT(OBS,’ | Baixa via comprovante’), DATA_ATUALIZ = NOW() WHERE ID_BASE = $id_base;”);
if ($x == 0){
sc_exec_sql(“UPDATE carteira SET STATUS_RESGATE = 21, DATA_ATUALIZACAO = NOW() WHERE COD_RA = $cod_ra AND COMISSAO_VALIDADA > 0;”);}
elseif ($cod_ra <> [cod_ra][$compara]){
sc_exec_sql(“UPDATE carteira SET STATUS_RESGATE = 21, DATA_ATUALIZACAO = NOW() WHERE COD_RA = $cod_ra AND COMISSAO_VALIDADA > 0;”);}
}

Alguém teria alguma dica? Já tentei colocar o formulário abaixo no início do evento OnFinish, mas não funciona.

?>

Data do Pagamento :
<?php

Agradeço se puderem ajudar.

Abs,
Eduardo

selecione os ids dos registros que deseja baixar.
na onfinish com sc_redir chame uma controle passando como parâmetros os ids.

Na controle crie o campo para informar a data da baixa.

na onvalidatesuccess providêncie as baixas do registros.

It is what we need so much for your information, and if you have more information, it is very good.

Olá Haroldo,

Muito obrigado pela dica. A idéia da aplicação de controle encaixou bem no projeto.

Você sabe dizer se existe alguma restrição de passar array como parâmetro na macro sc_redir?

Já tentei de várias formas mas não consigo passar o parâmetro para a app controle.

No evento OnScriptInit está assim:

[id] = 0;
[id_base] = array();
[cod_ra] = array();

No botão Run está assim:

OnRecord
$arr = [id];
[id_base][$arr] = {ID_BASE};
[cod_ra][$arr] = {COD_RA};
[id]++;

OnFinish
sc_redir(Data_Pagamento, id_base=[id_base]; cod_ra=[cod_ra], , “170”, “280”);

Estou tentando ler [id_base] e [cod_ra] na app controle, mas não passa, só passa a string Array. Já tentei trocar o nome do parâmetro, mas nada também.

Obrigado pelo auxílio até aqui.

Eduardo

Já envia os ids separados por virgula.

onApplicationInit:

[iw]= new StdClass;
[iw]->ids = '';

Botão Run:

onRecord:

[iw]->ids.={id}.',';

onFinish:

$ids=trim([iw]->ids,',');
sc_redir(app_controle,  var_ids=$ids);

Variáveis globais: iw (não post. não get, nâo session, opcional, saída)

Mas, quanto a sua pergunta, você pode transformar o array em json com json_encode e enviar como parâmetro e na controle converte para array novamente com json_decode

Olá Haroldo,

Utilizei o StdClass sugerido (com as adaptações necessárias ao projeto) e funcionou certinho.

sc_redir() com parâmetro array não será mais problema.

Muito obrigado pelo auxílio!!!

Eduardo