problema com ligacao entre aplicacoes e botao

Bom dia,
estou desenvolvendo uma rotina de encarte para supermercado, que esta com a seguinte estrutura

  • Grid de consulta com os dados principais dos encartes ( encarte_grid ), nessa consulta tem um botao NOVO / EDITAR que chama o encarte_form;

  • encarte_form contem os dados para inclusao ou edicao do registro de encarte, nesse form coloquei um MESTRE DETALHE para incluir produtos ( enc_produtos_grid_edt -> grid editavel );

  • enc_produtos_grid_edt é um grid editavel para que eu possa incluir os produtos;

  • criei uma consulta de produtos ( encarte_selecao_produtos_grid ), nele criei 1 botao para salvar todos os registros que eu selecionar e incluir na tabela de produtos do encarte;
    Problema:

  • preciso chamar [encarte_selecao_produtos_grid] dentro de [enc_produtos_grid_edt];
    – no enc_produtos_grid_edt criei um botao de link, mas o procedimento nao deu certo, ele nao chama;
    – no encarte_form criei um botao de link, mas o procedimento nao deu certo, ele nao chama;

  • executei o encarte_selecao_produtos_grid separado, criei um botao para selecao e inserir os seguintes comandos nos eventos:
    – onRecord:
    // onRecord: Percorre cada registro que foi selecionado.
    $arr=[i]; // Atribui o valor da chave para uma variável local
    [total_chked][$arr]={idcadproduto}; // Atribui o valor do campo idforprodutos para o Array
    [i]++; //Incrementa a chave para acessar a próxima posição do Array.

– onFinish:
// onFinish: Processo executado após todos os registros selecionados.
$tot = count([total_chked]); // Contando o total de registros verificados.
//$contacts = $tot." Produto(s) Selecionado(s) : "; //Irá manter a mensagem a ser exibida
$contacts = “’”;

/* Este código irá verificar quem é o último valor selecionado para adicionar um ponto, então adicionar uma vírgula */
for($x=0;$x<$tot;$x++){
$contacts .= [total_chked][$x];
if($x == ($tot-1)){
$contacts .= “.”;
}else {
$contacts .= “’,’”;
}
}

// retirar o ponto . da string,
$contacts .= “’”;
$contacts = str_replace(’.’, ‘’, $contacts);

// nao precisa de variavel global, tendo em vista que sera inserido os registros em outra tabela
//sc_set_global($contacts);

echo "Total de registros = " .$tot. " ";
echo "Registros selecionados = " .$contacts. " ";

/*
Inserir os registros selecionados em outra tabela, os procedimentos devem seguir a seguinte ordem:

  • fazer filtro na tabela de produtos, contendo idcadproduto in ($contacts)
  • percorrer todo o filtro, inserindo cada registro selecionado na tabela enc_produtos
    */
    $_nrv = 0;
    $insert_table = ‘enc_produtos’;

$check_sql = ‘SELECT idcadproduto,idproduto,idsubproduto,descricao,ncm,codbarra,idcodbarra,iddivisao,descrdivisao,idsecao,’
. ‘descrsecao,idgrupo,idsubgrupo,descrgrupo,descrsubgrupo’
. ’ FROM cadproduto’
. " WHERE idcadproduto in (" .$contacts. ") ";

sc_select(rs, $check_sql);

if (false == {rs}) {
// Se houver erro enquanto estiver acessando a tabela filtrada
sc_error_message(’ Erro ao acessar o banco de dados !!! ');
} else {
// percorrer a tabela filtrada ate o final do filtro
while(!$rs->EOF) {

  $_nrv = $_nrv+1;
  echo " percorre o banco ".$_nrv." vezes </br>";       
   
  $insert_fields = array(   // Lista de campos, adicione todos os itens necessários
   'encarte_id'       => "'[glb_idencarte]'",
   'codigo'           => "'$rs->fields[2]'",
   'descricao'        => "'$rs->fields[3]'",
   'divisao'          => "'$rs->fields[7]'",
   'grupo'            => "'$rs->fields[11]'",
   'custo_produto'    => "'0'",	   
   'p_mgvenda'        => "'0'",
   'v_sugestao'       => "'0'",
   'v_custonegociado' => "'0'",
   'v_oferta'         => "'0'",
   'v_homolo'         => "'0'",
   'cdforneciss'      => "''",
   'markup_dentro'    => "'0'",
   'markup_fora'      => "'0'",
   'qtd_estim_venda'  => "'0'",
   'receita_venda'    => "'0'",       
   'cont_geral'       => "'0'",
   'cont_unica'       => "'0'",
   );

   // Inserir registro na tabela
   $insert_sql = 'INSERT INTO ' . $insert_table
    . ' ('   . implode(', ', array_keys($insert_fields))   . ')'
    . ' VALUES ('    . implode(', ', array_values($insert_fields)) . ')';
   sc_exec_sql($insert_sql);			
	
   
   $rs->MoveNext();
}
$rs->Close();

}

  • essa rotina só cadastra o primeiro registro

Alguem poderia me dizer o que estou fazendo de errado, creio que minha logica esta correta.

Agradeco antecipadamente por todo apoio fornecido

Passo a bola para outro ajudar.