(RESOLVIDO) - Invalid argument supplied for foreach()

Prezados, já tenho uma app para tratar parcelamentos e funciona muito bem… no entanto estou fazendo uma outra app aqui
usando o mesmo código só que nao funciona…sempre dá erro : Invalid argument supplied for foreach()

[code]//ESSE GRUPO DE CODIGO GERA AS PARCELAS
sc_lookup(ds_p,“SELECT descricao, quantidade
FROM
dbo.prazos_pagamento
WHERE
(idprazo = ‘{condicao}’)”);
$CondicaoPagto = {ds_p[0][0]}; // aqui retorno os valores por ex: 30/60
$numero = {ds_p[0][1]};// aqui retorno o numero de parcelas = 2

sc_lookup(dataset,“SELECT idcontas, idcliente, valor, obs, login, forma_pagamento, identificador
FROM dbo.contas_receber
WHERE (idcontas = [conta])”);

$conta 			= {dataset[0][0]};
$cliente 		        = {dataset[0][1]};
$valor 			= {dataset[0][2]};
$obs 			= {dataset[0][3]};
$login			= {dataset[0][4]};
$forma 			= {dataset[0][5]};
$identificador 	        = {dataset[0][6]};

// até aqui esta funcionando tudo…
$condicao=explode("/",$CondicaoPagto);
$parcela = 1;

$lancamento = Date(‘Ymd G:i:s’);
foreach($condicao as $dias)// a partir daqui dá o erro…e nao estou achando onde está
{

	$vencimentoF = sc_date_conv({vencimento},"ddmmaaaa","aaaammdd");
	$vencimento = sc_date($vencimentoF, "aaaammdd "," + ", $dias, 0, 0);
	$valorparcela = $valor / $numero;
	$insert_table  = 'contas_receber';      // Table name
	$insert_fields = array(   // Field list, add as many as needed
 	        'idcliente' 		        => "'$cliente'",
	'data_lancamento' 	=> "'$lancamento'",
	'vencimento' 		=> "'$vencimento'",
	'valor' 			=> "'$valorparcela'",
	'obs' 			=> "'$obs'",
	'login' 			=> "'$login'",        //REVISEI E TODOS OS CAMPOS ESTAO CORRETOS COM A TABELA
	'status' 			=> "'1'",
	'parcela' 			=> "'$parcela'",
	'forma_pagamento' 	=> "'$forma'",
	'identificador' 	        => "'$identificador'",

);
// Insert record
$insert_sql = ‘INSERT INTO ’ . $insert_table
. ’ (’ . implode(’, ‘, array_keys($insert_fields)) . ‘)’
. ’ VALUES (’ . implode(’, ', array_values($insert_fields)) . ‘)’;

sc_exec_sql($insert_sql);
$parcela++;
}[/code]

ONDE ESTÁ A O ERRO?

provavelmente um dos seus selects não esta retornando valor, furando o foreach

Coloque em modo debug e analise os selects.

Já estou rodando no debug…

(mssqlnative): SELECT idcontas, idcliente,convert(char(23),vencimento,121), valor, obs, login, forma_pagamento, identificador FROM dbo.contas_receber WHERE (idcontas = 12)
12 2 2014-02-10 1000 jean.matos 3 89FD0F9209
(mssqlnative): SELECT descricao, quantidade FROM dbo.prazos_pagamento WHERE (idprazo = ‘6’)
00/30/60 tem que executar o $condicao=explode("/",$CondicaoPagto); só que nao esta dando retorno… só retorna “Array”
3

as saidas estao corretas.

coloque após o explode:

var_dump($condicao);

Retorna : string(1) “6”

parece que resolvi…
o SC é meio tosco em algumas coisas… ele confunde $condicao com {condicao}
daí mudei para {prazo}… vualá…
Mas tb…hoje é segunda feira… o teor de sangue nas veias alcoólicas ainda está alto…
Obrigado Novamente.

codigo completo e funcionando

//ESSE GRUPO DE CODIGO GERA AS PARCELAS

sc_lookup(dataset,“SELECT idcontas, idcliente,vencimento, valor, obs, login, forma_pagamento, identificador
FROM dbo.contas_receber
WHERE (idcontas = [conta])”);

$conta 			= {dataset[0][0]};
$cliente 		= {dataset[0][1]};
$valor 			= {dataset[0][2]};
$vence 			= {dataset[0][3]};
$obs 			= {dataset[0][4]};
$login			= {dataset[0][5]};
$forma 			= {dataset[0][6]};
$identificador 	= {dataset[0][7]};


sc_lookup(ds_p,"SELECT	descricao,	quantidade
			FROM
				 dbo.prazos_pagamento
			WHERE 
				(idprazo = {prazo})");

$CondicaoPagto = {ds_p[0][0]};
$numero = {ds_p[0][1]};

$condicao=explode("/",$CondicaoPagto);
$parcela = 1;

$lancamento = Date(‘Ymd G:i:s’);
foreach($condicao as $dias)
{

	$vencimentoF = sc_date_conv($vence,"ddmmaaaa","aaaammdd");
	$vencimento = sc_date($vencimentoF, "aaaammdd "," + ", $dias, 0, 0);
	$valorparcela = $valor / $numero;
	$insert_table  = 'contas_receber';      // Table name
	$insert_fields = array(   // Field list, add as many as needed
 	'idcliente' 		=> "'$cliente'",

);
// Insert record
$insert_sql = ‘INSERT INTO ’ . $insert_table
. ’ (’ . implode(’, ‘, array_keys($insert_fields)) . ‘)’
. ’ VALUES (’ . implode(’, ', array_values($insert_fields)) . ‘)’;

sc_exec_sql($insert_sql);
$parcela++;
}

fica como sugestão:

toda variavel local que criar use um prefixo padrão, eu por exemplo usaria $_condicao.

Correto… passarei a usar desta forma…Obrigado novamente.
TFA.