<?php

$id_tipo_titulo = 1;  // 1 para receitas e 2 para despesas



//geraLancFinanceiro - com base no id do DOCUMENTO DE SAIDA faz as chamadas de funções para gerar um título no banco de dados
function geraLancFinanceiro($id_documento_saida){
	prepareInsert(getDadosInsertLancamentos($id_documento_saida));
}

//geraLancFinanceiro - com base no id do PEDIDO LIBERADO faz as chamadas de funções para gerar um título no banco de dados
function geraLancFinanceiroRecibo($id_pedido_venda_liberado){
    global $conexao;
    $sql_check = "select * from erpc_financeiro_lancamentos where id_pedido_venda_liberado = $id_pedido_venda_liberado";
    $result = mysqli_query($conexao, $sql_check);
    if(mysqli_num_rows($result) > 0){
        
    }else{
        prepareInsert(getDadosReciboInsertLancamentos($id_pedido_venda_liberado));
    }
}

//Cancela título financeiro A PARTIR de um ID_PEDIDO_VENDA_LIBERADO
function cancelaTituloFinanceiro($id_pedido_venda_liberado){
    global $conexao;
    $sql = "update erpc_financeiro_lancamentos set st_ativo = 0 where id_pedido_venda_liberado = $id_pedido_venda_liberado";
    mysqli_query($conexao, $sql) or die(mysqli_error($conexao));
}

//Cancela título financeiro A PARTIR de um ID_DOCUMENTO_SAIDA
function cancelaTitulo($id_documento_saida){
    $id_pedido_liberado = getIdPedidoLiberado($id_documento_saida);
    $sql = "update erpc_financeiro_lancamentos set st_ativo = 0 where id_pedido_venda_liberado = $id_pedido_liberado";
    global $conexao;
    mysqli_query($conexao, $sql);
}

// Descobramento de Títulos
// prepareInsert - Divide o valor de um pedido pelo numero das parcelas e chama método para inserção de um título
function prepareInsert($dados){
    $id_status_baixa = 2; // 1->Título Baixado , 2->Título Aberto
	$id_plano_contas = $dados['id_plano_contas'];
	$id_tipo_pagamento = $dados['id_tipo_pagamento'];
	$ds_item = "Venda";
	$vl_desconto = $dados['vl_desconto'];
	$id_usuario = $dados['id_usuario'];
	$prazos = explode(",", $dados['ds_estrutura']);
	$st_ativo = 1;
	if(isset($dados['id_documento_saida'])){
	    $id_documento_saida = $dados['id_documento_saida'];
	}
	$id_pedido_venda_liberado = $dados['id_pedido_venda_liberado'];
	//Henrique - Atualmente o nr_dia vem da tabela condição de pagamento. É necessário ter esse valor para setar o dia no qual a conta será lançada.
	//$nr_dia = $dados['nr_dia'];
	$nr_dia = 31;
	$nr_dia--;
	$hoje = date("d");
	//echo "diaNr: " . $nr_dia . "<br><br>";
	$prox_mes = date('Y-m-d',strtotime('first day of +1 month'));
	$dia_correto = date('Y-m-d', strtotime(''.$prox_mes. ' +'. $nr_dia .' days'));
	//echo "Dia correto: " . $dia_correto . "<br>";

	
	
	if($nr_dia!='' && $hoje > $nr_dia){
		
		$prox_mes = date('m',strtotime('first day of +1 month'));
		
		if($dados['nr_qtde_parcelas'] > 0){

			$vl_parcial_saldo = $dados['vl_total']/$dados['nr_qtde_parcelas'];
				
			for($i = 0; $i < $dados['nr_qtde_parcelas']; $i++){
				$prazo = array_shift($prazos);
				//echo "Prazo é: $prazo <br>";
				$dt_vencimento = date('Y-m-d', strtotime(''.$dia_correto. ' +'. $prazo .' days'));
				//echo "Dt_vencimento: $dt_vencimento <br>";
				
				insertLancamentos(	$id_plano_contas
									,$id_status_baixa
									,$id_tipo_pagamento
									,$dt_vencimento
									,$vl_desconto
									,NULL
									,$vl_parcial_saldo
									,$ds_item
									,NULL
									,$id_usuario
				                    ,$id_pedido_venda_liberado
									,$st_ativo
				);
				
			}
			
		}
	}else{
		if($dados['nr_qtde_parcelas'] > 0){

			$vl_parcial_saldo = $dados['vl_total']/$dados['nr_qtde_parcelas'];
				
			for($i = 0; $i < $dados['nr_qtde_parcelas']; $i++){
				$prazo = array_shift($prazos);
				//echo "Prazo é: $prazo <br>";
				if(is_null($prazo)){
				    $prazo = 0;
				}
				$dt_vencimento = date('Y-m-d', strtotime('+'.$prazo. ' days'));
				//echo "Dt_vencimento: " . $dt_vencimento . "<br>";
				
				insertLancamentos(	$id_plano_contas
									,$id_status_baixa
									,$id_tipo_pagamento
									,$dt_vencimento
									,$vl_desconto
									,NULL
									,$vl_parcial_saldo
									,$ds_item
									,NULL
									,$id_usuario
				                    ,$id_pedido_venda_liberado
									,$st_ativo
				);

			}
			
		}
		
	}
	
}

//ID TIPO TITULO remover?	

function insertLancamentos($id_planofin, $id_status_baixa, $id_tipo_titulo, $dt_vencimento, $vl_desconto, $vl_juros_multa, $vl_parcial_saldo, $ds_item, $ds_historico, $id_usuario, $id_pedido_venda_liberado, $st_ativo){

global $conexao;	
global $id_tipo_titulo;	
	
if(is_null($vl_desconto)){
	$vl_desconto = 0.00;
}
if(is_null($vl_juros_multa)){
	$vl_juros_multa = 0.00;
}



//echo "Valor no insert é de: R$ " . $vl_parcial_saldo . "<br>";

$sql = "insert into erpc_financeiro_lancamentos (
						id_planofin
						,id_status_baixa
						,id_tipo_titulo
						,dt_vencimento
						,dt_lancamento
						,vl_desconto
						,vl_juros_multa
						,vl_saldo
						,ds_nr_cheque
						,ds_item
						,ds_historico
						,dh_alteracao
						,id_usuario
						,id_pedido_venda_liberado
						,st_ativo)
				Values 	($id_planofin
						,$id_status_baixa
						,$id_tipo_titulo
						,'$dt_vencimento'
						,now()
						,'$vl_desconto'
						,'$vl_juros_multa'
						,'$vl_parcial_saldo'
						,''
						,'$ds_item'
						,''
						,now()
						,$id_usuario
						,$id_pedido_venda_liberado
						,$st_ativo)";	

//echo $sql;
//exit;
	
	$set_fk_check_off = "SET FOREIGN_KEY_CHECKS = 0;";  
	$stmt1 = mysqli_prepare($conexao, $set_fk_check_off) or die(mysqli_error($conexao) . '<br />' . $set_fk_check_off);
	mysqli_stmt_execute($stmt1) or die(mysqli_error($conexao));
	
	$stmt = mysqli_prepare($conexao, $sql) or die(mysqli_error($conexao) . '<br />' . $sql);		
	if(mysqli_stmt_execute($stmt)){
		//echo "<br>Receita inserida com sucesso";
	}else{
		die(mysqli_error($conexao));
	}
	$set_fk_check_on = "SET FOREIGN_KEY_CHECKS = 1;"; 
	$stmt2 = mysqli_prepare($conexao, $set_fk_check_on) or die(mysqli_error($conexao) . '<br />' . $set_fk_check_on);
	mysqli_stmt_execute($stmt2) or die(mysqli_error($conexao));
}



//Obtem dados necessários para inserir uma linha da tabela erpc_financeiro_lancamentos a partir de um ID de documento de Saída
function getDadosInsertLancamentos($id_documento_saida){
	global $conexao;
	$sql = "select  
                     ven.id as id_pedido_venda_liberado  
					,ven.id_condicao_pagamento
					,cond.nr_qtde_parcelas
					,cond.id_tipo as id_tipo_pagamento
					,cond.ds_estrutura
					,cond.nr_dia
                    ,ven.vl_total_pedido
					,ven.vl_desconto
					,ven.id_plano_contas
					,ven.id_usuario
			from 
					erpc_pedidos_venda_liberados ven
					inner join erpc_pedidos_documentos_saida pds 
						on ven.id = pds.id_pedido_liberados
					inner join erpc_documentos_saida sai 
						on pds.id_documento_saida = sai.id
					inner join erpc_condicao_pagamento cond
						on ven.id_condicao_pagamento = cond.id
                    inner join erpc_pedidos_itens_liberados itens_lib
						on ven.id = (select    
                                                ven.id
                                        from 
                                                erpc_pedidos_venda_liberados ven
                                                inner join erpc_pedidos_documentos_saida pds 
                                                    on ven.id = pds.id_pedido_liberados
                                                inner join erpc_documentos_saida sai 
                                                    on pds.id_documento_saida = sai.id
                                        where 
                                                sai.id = $id_documento_saida
                                        group by ven.id)
			where 
					sai.id = $id_documento_saida
			group by 
					ven.id;";
	
	$dados = array (
	     'id_pedido_venda_liberado' => ''
		,'id_plano_contas' => ''
		,'id_condicao_pagamento' => ''
		,'nr_qtde_parcelas' => ''
		,'id_tipo_pagamento' => ''
		,'ds_estrutura' => ''
		,'nr_dia' => ''
		,'vl_total' => ''
		,'vl_desconto' => ''
		,'id_plano_contas' => ''
		,'id_usuario' => ''
		,'id_documento_saida' => $id_documento_saida
	);
	
	//echo "<br>" . $sql . "<br><br>";

	$resultado = mysqli_query($conexao, $sql) or die ($erro = mysqli_error($conexao));
	
	if (mysqli_num_rows($resultado)>0) {
		while ($registro = mysqli_fetch_assoc($resultado)){
		    $dados['id_pedido_venda_liberado'] = $registro['id_pedido_venda_liberado'];
			$dados['id_condicao_pagamento'] = $registro['id_condicao_pagamento'];
			$dados['nr_qtde_parcelas'] = $registro['nr_qtde_parcelas'];
			$dados['id_tipo_pagamento'] = $registro['id_tipo_pagamento'];
			$dados['ds_estrutura'] = $registro['ds_estrutura'];
			$dados['nr_dia'] = $registro['nr_dia'];
			$dados['vl_total'] = $registro['vl_total_pedido'];
			$dados['vl_desconto'] = $registro['vl_desconto'];
			$dados['id_plano_contas'] = $registro['id_plano_contas'];
			$dados['id_usuario'] = $registro['id_usuario'];
		}
	}
	return $dados;
}

//Obtem dados necessários para inserir uma linha da tabela erpc_financeiro_lancamentos a partir de um PEDIDO LIBERADO
function getDadosReciboInsertLancamentos($id_pedido_venda_liberado){
    global $conexao;
    $sql = "select    
            		 ven.id_condicao_pagamento
            		,cond.nr_qtde_parcelas
            		,cond.id_tipo as id_tipo_pagamento
            		,cond.ds_estrutura
            		,cond.nr_dia
            		,ven.vl_total_pedido
            		,ven.vl_desconto
            		,ven.id_plano_contas
            		,ven.id_usuario
            from 
            		erpc_pedidos_venda_liberados ven
                    inner join erpc_condicao_pagamento cond
            			on ven.id_condicao_pagamento = cond.id
            			where
            					ven.id = $id_pedido_venda_liberado
            			group by
            					ven.id;";
    
    $dados = array (
        'id_plano_contas' => ''
        ,'id_condicao_pagamento' => ''
        ,'nr_qtde_parcelas' => ''
        ,'id_tipo_pagamento' => ''
        ,'ds_estrutura' => ''
        ,'nr_dia' => ''
        ,'vl_total' => ''
        ,'vl_desconto' => ''
        ,'id_plano_contas' => ''
        ,'id_usuario' => ''
        ,'id_pedido_venda_liberado' => $id_pedido_venda_liberado
    );
    
    //echo "<br>" . $sql . "<br><br>";
    
    $resultado = mysqli_query($conexao, $sql) or die ($erro = mysqli_error($conexao));
    
    if (mysqli_num_rows($resultado)>0) {
        while ($registro = mysqli_fetch_assoc($resultado)){
            $dados['id_condicao_pagamento'] = $registro['id_condicao_pagamento'];
            $dados['nr_qtde_parcelas'] = $registro['nr_qtde_parcelas'];
            $dados['id_tipo_pagamento'] = $registro['id_tipo_pagamento'];
            $dados['ds_estrutura'] = $registro['ds_estrutura'];
            $dados['nr_dia'] = $registro['nr_dia'];
            $dados['vl_total'] = $registro['vl_total_pedido'];
            $dados['vl_desconto'] = $registro['vl_desconto'];
            $dados['id_plano_contas'] = $registro['id_plano_contas'];
            $dados['id_usuario'] = $registro['id_usuario'];
        }
    }
    return $dados;
}


function getIdPedidoLiberado($id_documento_saida){
	global $conexao;
	$sql = "select    
					ven.id
			from 
					erpc_pedidos_venda_liberados ven
					inner join erpc_pedidos_documentos_saida pds 
						on ven.id = pds.id_pedido_liberados
					inner join erpc_documentos_saida sai 
						on pds.id_documento_saida = sai.id
			where 
					sai.id = $id_documento_saida
			group by ven.id;";
			
	$resultado = mysqli_query($conexao, $sql) or die ($erro = mysqli_error($conexao));
	
	if (mysqli_num_rows($resultado)>0) {
		while ($registro = mysqli_fetch_assoc($resultado)){
			$id_pedido_liberado = $registro['id'];
		}
	}
	return $id_pedido_liberado;
}

function getValorPedidoLiberado($id_documento_saida){
	global $conexao;
	$id_pedido_liberado = getIdPedidoLiberado($id_documento_saida);
	$sql_valor = "SELECT  ven.id
					,ven.vl_total_pedido
				  FROM 
							erpc_pedidos_venda_liberados ven
						inner join erpc_pedidos_itens_liberados itens
						on ven.id = itens.id_pedido_venda_liberado
				  Where 
							itens.id_tipo_movimentacao = 510
							and ven.id = $id_pedido_liberado       
				  group by ven.id;"; 
				  
	$resultado2 = mysqli_query($conexao, $sql_valor) or die ($erro = mysqli_error($conexao));
	
	if (mysqli_num_rows($resultado2)>0) {
		while ($registro = mysqli_fetch_assoc($resultado2)){
			$valor = $registro['vl_total_pedido'];
		}
	}
	return $valor;
}

?>