<?php

namespace Predial\Http\Controllers;

use Illuminate\Http\Request;
use Predial\Predio;
use Predial\PropietarioPredio;
use Predial\FacturaPredial;
use Predial\PagoPredial;
use Illuminate\Support\Facades\DB;
use DateTime;
use PDF;
use Predial\ ParametrizacionAnio;
use Predial\Http\Controllers\LiquidadorInteresesController;
use Predial\Http\Controllers\ExtractoController;
use Predial\Http\Controllers\ExcensionesController;
use Predial\Vencimiento;
use Predial\InteresDescuento;
use Carbon\Carbon;
class PazySalvoInfController extends Controller
{
    public function index(){
        return view('informesPredial.generarPazySalvo');
    }

    public function view_inf(Request $request){
         $param = ParametrizacionAnio::find(session()->get('anno'));
        $valParamA= $param->id_unico;
        $facturaUl  = DB::table('gr_factura_predial')
        ->select('parametrizacionanno')                               
        ->orderBy('id_unico', 'desc')
        ->take(1)
        ->first();
        $valParamU= $facturaUl->parametrizacionanno;
        if ($valParamA<$valParamU) {
            $valAnnoPa= $param->anno;
            $annoPu  = DB::table('gf_parametrizacion_anno')
            ->select('anno')                               
            ->Where('id_unico', '=', $valParamU)
            ->first();
            $valAnnoPU= $annoPu->anno;
            flash()->overlay("No se pueden generar Paz y Salvos con parametrización año anterior ($valAnnoPa) a la ya creada ($valAnnoPU).", "Información");
            return back();
        }else{
        $anno = session()->get('anno');
        $vige = ParametrizacionAnio::find($anno);
        $NomS = ($request->txtNom);
        $id   = decrypt($request->txtId);

        if(empty($NomS)){
            $NomS = session()->get('usuario');
        }

        $compania = DB::table('gf_tercero as ter')
                            ->select( DB::raw('UPPER(ter.razonsocial) as razonsocial'),
                                      DB::raw('UPPER(ti.nombre) as tipodoc'),
                                      DB::raw('CONCAT_WS(" - ",ter.numeroidentificacion,ter.digitoverficacion) as numeroi'),
                                      'dir.direccion', 'tel.valor as telefono','ter.ruta_logo as logo'
                              )
                            ->leftJoin('gf_tipo_identificacion as ti' ,'ter.tipoidentificacion', '=', 'ti.id_unico')
                            ->leftJoin('gf_direccion as dir', 'dir.tercero', '=', 'ter.id_unico')
                            ->leftJoin('gf_telefono as tel', 'tel.tercero', '=', 'ter.id_unico')
                            ->where('ter.id_unico', '=', session()->get('compania'))
                            ->first();

        $predio = DB::table('gp_predio1 as pre')
                            ->select('pre.codigo_catastral as codc',
                                     'pre.direccion as dir',
                                      'p.nombres as prop'  ,

                                      'ba.nombre as nom',
                                      'pre.inicio_vigencia as iniv'
                                    )
                            ->leftjoin('gp_tercero_predio as tp', 'tp.predio', '=', 'pre.id_unico')
                            ->leftjoin('gr_propietarios as  p', 'tp.tercero', '=', 'p.id_unico')
                            ->leftjoin('gp_barrio as ba', 'pre.barrio', '=', 'ba.id_unico')
                            ->where('pre.id_unico', '=', $id)
                            ->where('tp.propietario', '=', 0)
                            ->first();

        $MAnno =  DB::table('gr_avaluo as av')
                    ->select(DB::raw('MAX(av.anno)  as ama'))
                    ->where('av.predio', '=', $id)
                    ->first();

        $MInno = DB::table('gr_factura_predial as fac')
                    ->select(DB::raw('MIN(ava.anno)  as man'))
                    ->leftJoin('gr_detalle_factura_predial as dtf', 'dtf.factura', '=', 'fac.id_unico')
                    ->leftJoin('gr_detalle_pago_predial as dtp', 'dtp.detallefactura', '=', 'dtf.id_unico')
                    ->leftJoin('gr_avaluo as ava', 'dtf.avaluo', '=', 'ava.id_unico')
                    ->whereNotNull('dtp.id_unico')
                    ->where('fac.predio', '=', $id)
                    ->first(); 


        $anosP= DB::table('gr_ultimo_ano_pago as uap')
                    ->select('uap.anno  as anp')
                    ->where('uap.predio', '=', $id)
                    ->orderBy('uap.predio', 'DESC')
                    ->first();
        $o      = 0;
        $annm   = 0;
        if(empty($MInno->man)){
            $annm =$anosP->anp;
        }  else {
            $annm = $MInno->man;
        }

        $avaluos = DB::table('gr_avaluo as av')
                    ->select('av.id_unico as avaluo',
                            'av.anno as an')
                    ->where('av.predio', '=', $id)
                    ->whereBetween('av.anno', [$annm, $MAnno->ama])
                    ->orderBy('av.anno')
                    ->get();
        $p = 0;
        while($annm < $MAnno->ama){
            $p      += 1;
            $annm   += 1;
        }

        $AD = array();
        foreach ($avaluos as $value){
            $totalpago = 0;
            $totalfac  = 0;
            $datapago = DB::table('gr_detalle_pago_predial as dtp')
                        ->select(DB::raw('DISTINCT(dfp.avaluo) as tp'))
                        ->leftJoin('gr_detalle_factura_predial as dfp', 'dtp.detallefactura', '=', 'dfp.id_unico')
                        ->leftJoin('gr_avaluo as a', 'dfp.avaluo', '=', 'a.id_unico')
                        ->where('a.anno', '=', $value->an)
                        ->where('a.predio', '=', $id)
                        ->whereNotNull('dtp.id_unico') 
                        ->get();
            if(count($datapago) > 0){
                $o += 1;
            }
        }

        list($imp, $sob, $cor, $int, $des, $pap, $sol, $icp, $deb, $xxx) = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
        $xmin = DB::table('gr_ultimo_ano_pago')->where('predio', '=',  $id)->min('anno');
        $data = DB::table('gr_avaluo as gav')
            ->leftJoin('gr_detalle_factura_predial as gdf', 'gdf.avaluo', '=', 'gav.id_unico')
            ->leftJoin('gr_detalle_pago_predial as gdp', 'gdp.detallefactura', '=', 'gdf.id_unico')
            ->leftJoin('gr_tarifa as tar', 'gav.tarifa', '=', 'tar.id_unico')
            ->where('gav.predio', '=',  $id)
            ->where('gav.anno', '>', $xmin)
            ->groupBy('gav.anno')
            ->select(
                'gav.anno as anno', 'gav.valor as avaluo', 'tar.valor as tarifa',
                'tar.tipobaseambiental', 'tar.porcentajeimpuestoambiental',
                'tar.porcentajesobretasa', 'gav.id_unico as ida'
            )
            ->get();
        $Liquidador = new LiquidadorInteresesController();
        $xxx =0;
        foreach($data as $row) { 
            $avaluo = $row->ida;
            $query = DB::table('gr_detalle_pago_predial as gdp')
                ->join('gr_detalle_factura_predial as gdf', 'gdp.detallefactura', '=', 'gdf.id_unico')
                ->where('gdf.avaluo', $avaluo)
                ->selectRaw('
                    GROUP_CONCAT(DISTINCT gdf.factura) AS facturas,
                    GROUP_CONCAT(DISTINCT gdp.pago) AS pagos,
                    ROUND(SUM(gdp.valor),2) AS valor_pago
                ')
                ->selectSub(function ($sub) use ($avaluo) {
                    $sub->from('gr_detalle_factura_predial as gdf2')
                        ->selectRaw('SUM(gdf2.valor)')
                        ->where('gdf2.avaluo', $avaluo)
                        ->whereIn('gdf2.factura', function ($q) use ($avaluo) {
                            $q->from('gr_detalle_pago_predial as gdp3')
                            ->join('gr_detalle_factura_predial as gdf3', 'gdp3.detallefactura', '=', 'gdf3.id_unico')
                            ->where('gdf3.avaluo', $avaluo)
                            ->select('gdf3.factura')
                            ->distinct();
                        });
                }, 'factura_total');

            $xinf = $query->first();
            
            $c = 0;
            if ($xinf && $xinf->factura_total !== null && $xinf->valor_pago !== null) {
                if ((int)$xinf->factura_total === (int)$xinf->valor_pago) {
                    $c = 1;
                }
                if ((int)$xinf->factura_total < (int)$xinf->valor_pago) {
                    $c = 1;
                }
            }
            if($c==0){ 
                $fechaa = date("Y-m-d");
                $year   = $row->anno;
                $venc   = DB::table('gr_vencimiento as ven')
                        ->where('ven.anno', '=', $row->anno)
                        ->where('tipo', '=', 1)
                        ->first();
                        
                $vend   = DB::table('gr_vencimiento as ven')
                                ->leftJoin('gf_mes as mes', 'ven.mes', '=', 'mes.id_unico')
                                ->where('ven.anno', '=', $row->anno)
                                ->where('tipo', '=', 2)
                                ->where('mes.numero', '=', date("m"))
                                ->first();
                $data_des = InteresDescuento::where('tipo', '=', 2)->where('anio', '=', $row->anno)->first();
                $impuesto = 0; $corporacion = 0; $descuento = 0;
                $ximpuesto = 0; $xcorporacion = 0; $xdescuento = 0;
                #****** IMPUESTO *****#

                $impuesto = ($row->avaluo * $row->tarifa) / 1000;
                $impuesto = ExcensionesController::ExcencionCabezaFactura($id, $row->anno, 1, $impuesto);
                $ximpuesto = $impuesto;
                
                if($impuesto < 0){
                    $impuesto = 0;
                }
                #Validar el 25%
                $annoAnterior = $row->anno -1;
                $data2 = DB::table('gr_avaluo as gav')
                ->leftJoin('gr_tarifa as tar', 'gav.tarifa', '=', 'tar.id_unico')
                ->where('gav.predio', '=', $id)
                ->where('gav.anno', '=', $annoAnterior)
                ->groupBy('gav.anno')
                ->select(
                    'gav.anno as anno', 'gav.valor as avaluo', 'tar.valor as tarifa',
                    'tar.tipobaseambiental', 'tar.porcentajeimpuestoambiental',
                    'tar.porcentajesobretasa', 'gav.id_unico as ida'
                )
                ->first();
                if(!empty($data2->avaluo)){
                    $impuestoAnterior = ($data2->avaluo * $data2->tarifa) / 1000;
                    if($row->anno == date('Y')){
                        if(!empty($data2->avaluo)){
                            $impuestoAnterior = ($data2->avaluo * $data2->tarifa) / 1000;
                            $valordif = ($impuestoAnterior *25)/100;
                            $valorMaximo = $impuestoAnterior + $valordif;
                            if($impuesto >$valorMaximo){
                                $impuesto =$valorMaximo;    
                                $ximpuesto = $impuesto;
                            }                                
                        }
                    }
                }

                #*Descuentos 
                $od  = DB::table('gr_otros_descuentos as o')
                ->select('o.porcentaje as vp')
                ->where('o.concepto', '=', 1)
                ->whereRaw("'$fechaa' BETWEEN o.fecha_inicial AND o.fecha_final")
                ->whereRaw("'$row->anno' BETWEEN o.vigencia_inicial AND o.vigencia_final")
                ->first();
                if(!empty($od->vp)){
                    $impuesto -= ($impuesto* $od->vp)/100;
                }
                $imp += $impuesto;
                $impuesto = FacturaPredialController::ValidarValorAbono($impuesto, $id, 1, $row->anno);
                #****** INTERESES *****#
                $xvn = Carbon::createFromDate($row->anno, 01, 01);
                $xvn = $xvn->lastOfMonth();
                $xven = $xvn->format("Y-m-d");

                if($row->anno == date('Y')){
                    $ffd     = explode("-", $venc->fecha);
                    $fechaVV = Carbon::createFromDate($ffd[0], $ffd[1], $ffd[2]);
                    if(date('m') > $fechaVV->format('m') ){
                         #Calculo de Intereses de mora
                        $interes = $Liquidador->liquidar_intereses($impuesto, $xven, date("Y-m-d"), date("Y-m-d"));
                        $interes = ExcensionesController::ExcencionCabezaFactura($id, $row->anno, 4, $interes);
                        $interes = FacturaPredialController::ValidarValorAbono($interes, $id, 4, $row->anno);
                        if($interes < 0){
                            $interes = 0;
                        }
                    } else {$interes = 0;}
                } else { 
                    #Calculo de Intereses de mora
                    if($impuesto <=0){
                        $interes = $Liquidador->liquidar_intereses($impuesto, $xven, date("Y-m-d"), date("Y-m-d"));
                    } else {
                        $interes = $Liquidador->liquidar_intereses($ximpuesto, $xven, date("Y-m-d"), date("Y-m-d"));
                    }
                    
                    $interes = ExcensionesController::ExcencionCabezaFactura($id, $row->anno, 4, $interes);
                    $interes = FacturaPredialController::ValidarValorAbono($interes, $id, 4, $row->anno);
                    if($interes < 0){
                        $interes = 0;
                    }
                }

                $od  = DB::table('gr_otros_descuentos as o')
                ->select('o.porcentaje as vp')
                ->where('o.concepto', '=', 4)
                ->whereRaw("'$fechaa' BETWEEN o.fecha_inicial AND o.fecha_final")
                ->whereRaw("'$row->anno' BETWEEN o.vigencia_inicial AND o.vigencia_final")
                ->first();
                if(!empty($od->vp)){
                    $interes -= ($interes* $od->vp)/100;
                }
                $int += $interes;

                #****** DESCUENTO *****#
                if(!empty($vend)){
                    $ffd     = explode("-", $vend->fecha);
                    $fechaVV = Carbon::createFromDate($ffd[0], $ffd[1], $ffd[2]);
                    if($row->anno == date("Y")){#Si años son iguales
                        $vid = DB::table('gr_interes_descuento as ids')
                           ->select('ids.valor as valor')
                           ->leftJoin('gf_mes as mes', 'mes.id_unico', '=', 'ids.mes')
                           ->Where('ids.anio', '=', $row->anno)
                           ->Where('mes.numero', '=', $fechaVV->format('m'))
                           ->Where('ids.tipo', '=', '2')
                           ->first();
                            if(!empty($vid->valor)){
                                $descuento       = ($impuesto * $vid->valor) / 100;
                            }
                    } else {
                        $descuento = 0;
                    }

                    if($row->anno != date("Y")){
                        $descuento = 0;
                    }
                } else {
                    $descuento = 0;
                }

                $descuento = $descuento * -1;
                $descuento = $descuento;
                if($row->anno != date("Y")){
                    $descuento = 0;
                    $descuento = 0;
                }
                $descuento = ExcensionesController::ExcencionCabezaFactura($id, $row->anno, 5, $descuento);
                $xdescuento = FacturaPredialController::ValidarValorAbono($descuento, $id, 5, $row->anno);
                $des += $descuento>0?$descuento:$descuento * -1;


                #****** CORPORACION *****#

                $base = 0; $por = 0;
                if($row->tipobaseambiental == 6){
                    $base = $row->avaluo;
                    $por  = 1000;
                }else
                if($row->tipobaseambiental == 7){
                    $base = $ximpuesto ;
                    $por  = 100;
                }
                #Calculo de corporación regional o sobretasa ambiental
                if(!empty($row->porcentajeimpuestoambiental)){
                    $valor       = ($base * $row->porcentajeimpuestoambiental) / $por;
                    $corporacion = $valor;
                }else{
                    $corporacion = 0;
                }
                if(!empty($data2->avaluo)){
                    #Validar el 25%
                    if($row->anno == date('Y')){
                        if(!empty($data2->avaluo)){
                            if($data2->tipobaseambiental == 6){
                                $base2 = $data2->avaluo;
                                $por2  = 1000;
                            }else
                            if($data2->tipobaseambiental == 7){
                                $base2 = $impuestoAnterior  ;
                                $por2  = 100;
                            }
                            #Calculo de corporación regional o sobretasa ambiental
                            if(!empty($data2->porcentajeimpuestoambiental)){
                                $valor2       = ($base2 * $data2->porcentajeimpuestoambiental) / $por2;
                                $corporacionAnterior = $valor2;
                            }else{
                                $corporacionAnterior = 0;
                            }

                            $valorMaximoCorp    = $corporacionAnterior *2;
                            if($corporacion >$valorMaximoCorp){
                               $corporacion = $valorMaximoCorp;    
                            }                                
                        }
                    }
                }

                $corporacion = ExcensionesController::ExcencionCabezaFactura($id, $row->anno, 3, $corporacion);
                $corporacion = FacturaPredialController::ValidarValorAbono($corporacion, $id, 3, $row->anno);
                if($corporacion < 0){
                    $corporacion = 0;
                }
                $cor += $corporacion;

                #****** INTERESE CORPORACION *****#
                $xvn  = Carbon::createFromDate($row->anno, 01, 01);
                $xvn  = $xvn->lastOfMonth();
                $xved = $xvn->format("Y-m-d");

                if($row->anno == date('Y')){
                    $ffd     = explode("-", $venc->fecha);
                    $fechaVV = Carbon::createFromDate($ffd[0], $ffd[1], $ffd[2]);
                    if(date('m') > $fechaVV->format('m') ){
                         #Calculo de Intereses corporación
                        $interesCar = $Liquidador->liquidar_intereses($corporacion, $xved , date("Y-m-d"), date("Y-m-d"));
                        $interesCar = ExcensionesController::ExcencionCabezaFactura($id, $row->anno, 8, $interesCar);
                        $interesCar = FacturaPredialController::ValidarValorAbono($interesCar, $id, 8, $row->anno);
                        if($interesCar < 0){
                            $interesCar = 0;
                        }
                    } else {$interesCar = 0;}
                } else { 
                     #Calculo de Intereses corporación
                    $interesCar = $Liquidador->liquidar_intereses($corporacion, $xved , date("Y-m-d"), date("Y-m-d"));
                    $interesCar = ExcensionesController::ExcencionCabezaFactura($id, $row->anno, 8, $interesCar);
                    $interesCar = FacturaPredialController::ValidarValorAbono($interesCar, $id, 8, $row->anno);
                    if($interesCar < 0){
                        $interesCar = 0;
                    }
                }                              
                $od  = DB::table('gr_otros_descuentos as o')
                ->select('o.porcentaje as vp')
                ->where('o.concepto', '=', 8)
                ->whereRaw("'$fechaa' BETWEEN o.fecha_inicial AND o.fecha_final")
                ->whereRaw("'$row->anno' BETWEEN o.vigencia_inicial AND o.vigencia_final")
                ->first();
                if(!empty($od->vp)){
                    $interesCar -= ($interesCar* $od->vp)/100;
                }
                $icp += $interesCar;

                #****** SOBRETASA *****#
                if(!empty($row->porcentajesobretasa)){
                    #Calculo de sobretasa bomberil
                    $bomberil = ($ximpuesto * $row->porcentajesobretasa) / 100;
                }else{
                    $bomberil = 0;
                }
                $bomberil = ExcensionesController::ExcencionCabezaFactura($id, $row->anno, 7, $bomberil);
                $bomberil = FacturaPredialController::ValidarValorAbono($bomberil, $id, 7, $row->anno);
                if($bomberil < 0){
                    $bomberil = 0;
                }
                $od  = DB::table('gr_otros_descuentos as o')
                ->select('o.porcentaje as vp')
                ->where('o.concepto', '=', 7)
                ->whereRaw("'$fechaa' BETWEEN o.fecha_inicial AND o.fecha_final")
                ->whereRaw("'$row->anno' BETWEEN o.vigencia_inicial AND o.vigencia_final")
                ->first();
                if(!empty($od->vp)){
                    $bomberil -= ($bomberil* $od->vp)/100;
                }

                $sol += $bomberil;

                #****** PAPELERIA *****#
                $papel = DB::table('gr_concepto_predial')
                            ->select('formula')
                            ->where('anno', '=', $year)
                            ->where('id_concepto', '=', 6)
                            ->first();
                if(empty($papel)){
                    $papeleria = 0;
                }else{
                    $papeleria = $papel->formula;
                }
                $papeleria = ExcensionesController::ExcencionCabezaFactura($id, $row->anno, 6, $papeleria);
                $papeleria = FacturaPredialController::ValidarValorAbono($papeleria, $id, 6, $row->anno);
                if($papeleria < 0){
                    $papeleria = 0;
                }
                $od  = DB::table('gr_otros_descuentos as o')
                ->select('o.porcentaje as vp')
                ->where('o.concepto', '=', 6)
                ->whereRaw("'$fechaa' BETWEEN o.fecha_inicial AND o.fecha_final")
                ->whereRaw("'$row->anno' BETWEEN o.vigencia_inicial AND o.vigencia_final")
                ->first();
                if(!empty($od->vp)){
                    $papeleria -= ($papeleria* $od->vp)/100;
                }

                $pap += $papeleria;
                $sq = DB::table('gr_concepto_predial')
                        ->where('id_concepto', '=', 9)
                        ->where('anno', '=', $row->anno)
                        ->first();
                if(empty($sq)){
                    $debido = 0;
                }else{
                    $dd = DB::table('gr_debido_valor')
                        ->select('valor')
                        ->where('predio', '=', $id)
                        ->first();
                    if(!empty($dd->valor)){
                        $debido = $dd->valor;
                    }else{
                        $debido = 0;
                    }

                }

                if(!is_numeric($debido)) {

                }

                $deb += (float) $debido;
                $x =  $impuesto + $interes + $descuento + $corporacion + $interesCar + $bomberil + $papeleria + $debido;
                $xxx += $x;
            }

        }
        
        $dif = $xxx;
        if($dif<0){
            $dif =0;
        }
        
        if(round($dif, 0)  == 0 ) {
            $Uava = DB::table('gr_avaluo as uav')
                        ->select(DB::raw('MAX(uav.id_unico) as id'),
                                        'uav.valor as valp',
                                        'uav.anno as anioa'
                                        )
                        ->where('uav.predio', '=', $id)
                        ->where('uav.anno', '=', $vige->anno)
                        ->first();

            $valA = DB::table('gr_area as a')
                        ->select(DB::raw('MAX(a.id_unico) as id'),
                                        'a.valor as vala',
                                        'ua.nombre as noma',
                                        'a.area_metros as amts')
                        ->leftjoin('gr_unidad_area as ua', 'a.unidadarea', '=', 'ua.id_unico')
                        ->where('a.anio', '=', $Uava->anioa)
                        ->where('a.predio', '=', $id)
                        ->first();

            $cooprop = DB::table('gp_predio1 as p')
                            ->select('pr.nombres as prop')
                            ->leftjoin('gp_tercero_predio as tp', 'tp.predio', '=', 'p.id_unico')
                            ->leftjoin('gr_propietarios as  pr', 'tp.tercero', '=', 'pr.id_unico')
                            ->where('p.id_unico', '=', $id)
                            ->where('tp.propietario', '!=', '0')
                            ->get();
            $ncopro = "";
            foreach ($cooprop as $value) {
                $ncopro .= $value->prop.",";
            }

            $ncopro = substr($ncopro, 0, strlen($ncopro) - 1);

            $hoy = date('d-m-Y');
            $hoy = trim($hoy, '"');
            $fecha_divi = explode("-", $hoy);
            $anioA = $fecha_divi[2];
            $mes = (int)$fecha_divi[1];
            $dia = $fecha_divi[0];
            $nombremes = ['no','Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];

            $mesA= $nombremes[$mes];
            // $fechaPago = DB::table('gp_predio1 as p1')
            // ->leftJoin('gr_avaluo as av', 'av.predio', '=', 'p1.id_unico')
            // ->leftJoin('gr_detalle_factura_predial as dfp', 'dfp.avaluo', '=', 'av.id_unico')
            // ->leftJoin('gr_detalle_pago_predial as dpp', 'dpp.detallefactura', '=', 'dfp.id_unico')
            // ->leftJoin('gr_pago_predial as pp', 'dpp.pago', '=', 'pp.id_unico')
            // ->leftJoin('gf_parametrizacion_anno as pa', 'pp.parametrizacionanno', '=', 'pa.id_unico')
            // ->where('p1.id_unico', $id)
            // ->where('pa.anno', $Uava->anioa)
            // ->value('pp.fechapago');
            $fechaPago = Carbon::now('America/Bogota')->format('Y-m-d');

            $paz = "Paz y Salvo Predial";
            $firma = DB::table('gf_tipo_documento as td')
            ->leftJoin('gf_responsable_documento as rd', 'td.id_unico', '=', 'rd.tipodocumento')
            ->leftJoin('gf_tercero as t', 'rd.tercero', '=', 't.id_unico')
            ->leftJoin('gf_tipo_identificacion as ti', 'ti.id_unico', '=', 't.tipoidentificacion')
            ->leftJoin('gf_cargo as car_rd', 'car_rd.id_unico', '=', 'rd.cargo')
            ->leftJoin('gg_tipo_relacion as tipRel', 'tipRel.id_unico', '=', 'rd.tipo_relacion')
            ->leftJoin('gf_tipo_responsable as tr', 'tr.id_unico', '=', 'rd.tiporesponsable')

            ->select(
                DB::raw("
                    IF(
                        CONCAT_WS(' ',
                            t.nombreuno,
                            t.nombredos,
                            t.apellidouno,
                            t.apellidodos
                        ) IS NULL 
                        OR CONCAT_WS(' ',
                            t.nombreuno,
                            t.nombredos,
                            t.apellidouno,
                            t.apellidodos
                        ) = '',
                        UPPER(t.razonsocial),
                        CONCAT_WS(' ',
                            UPPER(t.nombreuno),
                            UPPER(t.nombredos),
                            UPPER(t.apellidouno),
                            UPPER(t.apellidodos)
                        )
                    ) AS res
                "),
                
                DB::raw("
                    UPPER(
                        IF(
                            rd.cargo IS NOT NULL,
                            car_rd.nombre,
                            (
                                SELECT car2.nombre
                                FROM gf_cargo_tercero ct
                                INNER JOIN gf_cargo car2 
                                    ON car2.id_unico = ct.cargo
                                WHERE ct.tercero = t.id_unico
                                AND (ct.fecha_inicio IS NULL OR ct.fecha_inicio <= '$fechaPago')
                                AND (ct.fecha_fin IS NULL OR ct.fecha_fin >= '$fechaPago')
                                ORDER BY ct.fecha_inicio DESC
                                LIMIT 1
                            )
                        )
                    ) AS nomt
                "),
                
                'tipRel.nombre as ntro'
            )

            ->where('td.nombre', $paz)
            ->where('rd.fecha_inicio', '<=', $fechaPago)
            ->where(function($q) use ($fechaPago) {
                $q->whereNull('rd.fecha_fin')
                ->orWhere('rd.fecha_fin', '>=', $fechaPago);
            })

            ->orderBy('rd.orden', 'ASC')
            ->get();
 
            $B = $vige->anno;
            $consec = DB::table('gr_consecutivo_cert as cc')
                                ->select(DB::raw('MAX(cc.id_unico) as idcc'))
                                ->select('cc.consecutivo as co')
                                ->where('cc.tipo', '=', 1)
                                ->where('cc.consecutivo', 'like', "$B%")
                                ->get();

            if(count($consec)<=0){ 

                $cons = $vige->anno."0001";
            }else{

                foreach ($consec as $C) {
                    $E = substr($C->co,-4);
                }
                $num = (int) $E;
                $num = $num + 1;
                $m = substr($C->co,-8,4);
                $cant = strlen($num);
                if($cant < 4){
                    $c="";
                    for($i = $cant; $i <  4; $i++){
                        $c = $c."0";
                    }

                    $cons = $m.$c.$num;
                }else{
                    $cons = $m.$num;
                }
            }
            
            
            $In = DB::table('gr_consecutivo_cert')
                    ->insert(['consecutivo'=> $cons, 'predio'=>$id,'nombre'=>$NomS,'tipo'=>1]);

            $view  = \View::make('informesPredial.infResolucion', compact(['compania','predio','Uava','valA','cooprop','anioA','mesA','dia','firma','vige','cons', 'ncopro']))->render();

            $pdf   = \App::make('dompdf.wrapper');
            
            $pdf->loadHTML($view);
            return $pdf->stream("Paz_y_Salvo.pdf");
        
        } else{
            flash()->overlay('El Predio no se encuentra a Paz y Salvo.', 'Información');
            return back();

        }
      }
    }
}
