Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

CrazyLOL

Procedure e Eventos diarios

Recommended Posts

Galera to com uma bronca... melhor duas... kkk

 

Tenho em meu sistema uma tabela que possui o cadastro dos meus clientes e nela possui uma coluna que é chamado data de vencimento nesta coluna eu coloquei apenas um valor exemplo "7, 15, 25", preciso que 5 dias antes faça uma inserção em outra tabela que é chamada "clientes_fatura" porém este processo tem que ser feito todo dia a meia noite.. o problema está sendo o seguinte...

 

- Preciso criar uma procedure que faça um loop no select de clientes e cada resultado eu faço um "if e else" verifica se a data atual é 5 dias menor da de vencimento.

 

- Como que crio o evento para executar diariamente a meia noite esta procedure?

 

Agradeço a ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cheguei nesta solução para a procedure... porém está dando erro...

DELIMITER $$

CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    PROCEDURE `gerarFaturaAssociado`()

    BEGIN
	
	DECLARE
	   v_cod_associado,
           v_cod_cliente,
           v_cod_empresa,
           v_data_vencimento,
           v_valor,
           v_data_cadastro,
           v_ciclo_pagamento;
	 
	  #declare cursor
	  DECLARE 
	    cur1 
		 CURSOR FOR 
		     SELECT 
			cod_associado,
			cod_cliente,
			cod_empresa,
			data_vencimento,
			valor,
			data_cadastro,
			ciclo_pagamento		
			FROM 
			 clientes_associados;
	 
	  #declare handle 
	  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
	 
	  #open cursor
	  OPEN cur1;
	 
	  #starts the loop
	  the_loop: LOOP
	 
	    #get the values of each column into our variables
	    FETCH cur1 INTO 
		v_cod_associado,
		v_cod_cliente,
		v_cod_empresa,
		v_data_vencimento,
		v_valor,
		v_data_cadastro,
		v_ciclo_pagamento;
	    IF done THEN
	      LEAVE the_loop;
	    END IF;
	     
	    #pego o dia atual e somo ele +5 que vejo se o dia do vencimento é igual o dia que estamos
	    IF (DAY(DATE_ADD(NOW(), INTERVAL 5 DAY))) = v_data_vencimento THEN
		INSERT INTO `clientes_associados_pagamento`
				    (
				     `cod_associado`,
				     `data_vencimento`,
				     `valor`,
				     `valor_pago`,
				     `cod_situacao`,
				     `data_pagamento`,
				     `usuario`)
			VALUES (
				v_cod_associado,
				DATE_ADD(NOW(), INTERVAL 5 DAY),
				v_valor,
				'',
				'ABERTO',
				'',
				'');
	    END IF;
	 
	  END LOOP the_loop;
	 
	  CLOSE cur1;
    END$$

DELIMITER ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.