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