[RESOLVIDO] Insert trazendo uma data incompleta

Olá,

Não estou conseguindo gerar lançamentos recorrentes, seleciono um periodo de 10 a 12 meses e só gera um lançamento. O insert é o seguinte:

insert into lanctos (Doc,empresa_id,Parc,QtParc,documento_g,Id_tipo,nome_doc,classe_pg,classe_rc,DtEmissao,Referencia,parceiro_id, nome_parc,Valor,Pg_Rc,DtVcto,lote_id,saldo,cc_id)

values

(‘145859’,‘1’,‘1’,‘1’,‘145859’,‘6’,‘FATURA DE SERVIÇOS’,‘TELEFONE FIXO’,‘null’,‘2020-01-01’,‘TELEFONE FIXO’,‘4’,'VIVO ', ‘325.00’,‘D’,‘2021–0-15’,‘77’,‘325.00’,‘1’)


SELECT Id_rc,empresa_id,parceiro_id,DtEmissao,tipodoc_id,nome_doc,rc_doc,rc_diavenc,rc_valor,rc_pg_rc,rc_referencia,‘M’ as intervalo,rc_classe
FROM recorrente
WHERE parceiro_id = 4 and empresa_id = ‘1’

O campo vencimento fica 2021–0-15 realizando apenas um lançamento e com o campo data em branco ou 0000-00-00

Lanc_rec

Desde já fico grato,

Mauricio Buchmeier

o loop que realiza o insert deve estar errado gerando apenas 1 insert.
cole o código aqui do seu loop.

Olá Haroldo,

Dei uma enxugada nos campos e ficou assim:

$vetcat = explode(";", {categoria});

foreach ($vetcat as $cat) {

if (!empty($cat)) {

$sql = “SELECT Id_rc,empresa_id,parceiro_id,DtEmissao,cc_id,id_plano_ctas_res,tipodoc_id,rc_doc,rc_diavenc,rc_valor,rc_pg_rc,rc_referencia,‘M’ as intervalo
FROM recorrente
WHERE id_plano_ctas_res = $cat and parceiro_id = {parceiro} and empresa_id = ‘[usr_empresa]’”;

  sc_lookup(dataset,$sql);
  $diavenc   = {dataset[0][8]};
  $intervalo = {dataset[0][12]};	 	  
	  
  $vetor = funarrayvenc({dtinicio},{dtfinal},$diavenc,$intervalo);
                    foreach ($vetor as $svenc) {	 
   $fornec  = {dataset[0][2]};		  
   $dt_em   = {dataset[0][3]};	   
   $cc      = {dataset[0][4]};
   $id_pl_r = {dataset[0][5]};	  
   $tp_doc  = {dataset[0][6]};	  	  
   $doc     = {dataset[0][7]};  
   $valor   = {dataset[0][9]};
   $pg_rc   = {dataset[0][10]};	   
   $descr   = {dataset[0][11]};		   	   
   $dtlan   = $svenc;

seria possivel ver o conteúdo de {categoria} nesse momento?
um echo no campo deve exibir seu conteúdo.

É um Controle onde seleciono o parceiro e com um ajax ele atualiza uma lista (duplo select), mostrando as opções para pegar a categoria. Agora tem duas (Telefone e Salários), Seleciono a Vivo e traz a conta de telefone ou seleciono o nome do funcionário e traz a conta de salários. E por último coloco o período a gerar.

Mas o problema está na data de vencimento, o campo está irregular/gera irregular deixando no sistema/banco de dados zerado. O mês errado.

só consigo te ajudar se me mostrar o conteúdo do campo {categoria}, identificado em seu próprio código.

Esse campo é um duplo select:

SELECT P.id_plano_ctas, concat(P.plano_reduzida,’ - ‘,P.plano_codigo,’ - ',P.plano_descricao)
FROM recorrente R INNER JOIN plano_ctas P ON R.id_plano_ctas_res = P.id_plano_ctas
WHERE R.parceiro_id = ‘{parceiro}’

Com o Where:

Sem o Where:

Eu gostaria de ver o conteúdo do campo {categoria} no momento da execução para saber se o array gerado pelo comando explode está retornando mais de um registro, para do assim ter a certeza que seu loop está sendo executado mais de uma vez.

Meu foco é entender a questão principal do tópico.

Se estiver executando uma segunda vez ou mais, deveria dar erro de SQL, pois a data inserida é inválida.

Olá Haroldo,

Resolvi ver com o pai da criança, o professor Leonardo e ele depois de atualizar e gerar o SC deu o mesmo problema. O SC tá bugado.

Abraço.

Olá Haroldo,

Veja o comentário do Leonardo (Cursos Scriptcase). Bem complicado trabalhar com o SC.

|### Leonardo Pereira|sáb., 13 de mar. 11:34 (há 20 horas)||

para mim

|

como podera ver so acrescentei duas linhas logo no inicio da funcao

$dt = str_replace(’-’,’’,$dtinicio);
$dtfim = str_replace(’-’,’’,$dtfim);

elas tiram os tracinhos separadores da data que estavam chegando na funcoa mesmo a data estando com fornato interno AAAAMMDD sem o hifen.

Vai entender ne.

Se o campo formato interno esta la o sc teria que respeita-lo , caso contrario pra quer ter o campo la se ele nao obece o que esta configurado la.

Mas se estamos falando de um campo scriptcase basta configurar o formato interno.
Se se for o retorno de um select vai retornar o que está no banco.

Não pode ser isso aqui?

$vetor = funarrayvenc({dtinicio},{dtfinal} ...

De quem é esse método? Isso não tem na a ver com Scriptcase a meu ver e sim com o código inserido nele.

Sim, é uma function dentro de bibliotecas internas.

function funarrayvenc($dtinicio,$dtfim,$dia,$intervalo) {
$log = “”;
if (strlen($dia) < 2)
$dia = ‘0’.$dia;
$dt = str_replace(’-’,’’,$dtinicio); <--------- inseriu essa linha
$dtfim = str_replace(’-’,’’,$dtfim); <--------- inseriu essa linha

E com isso gerou todas e não somente 1.

Valeu!!!

Consertou a função?

Sim, deu certo. Gerando correto agora.

1 Curtida