<?php

namespace Predial\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

use Carbon\Carbon;
use Fpdf;
use Predial\DetallePagoPredial;
use Predial\DetalleFacturaPredial;
use Illuminate\Support\Collection as Collection;
use Predial\PagoPredial;
use Predial\ParametrizacionAnio;
use Predial\Paquete;
use Predial\Predio;
use Predial\TipoPago;
use Predial\FacturaPredial;
use Predial\Http\Controllers\RelacionPredialContableController;
use Illuminate\Support\Facades\Response;
use Predial\CierrePeriodo;
use Predial\Mes;

class PagoPredialController extends Controller{

    public $path = 'pago.';

    public static function index($id_paquete = NULL){
        if(!empty(session()->get('usuario'))){

            $compania = session()->get('compania');
            $param    = session()->get('anno');
            $tipos    = TipoPago::all();


            $bancos   = DB::table('gf_cuenta_bancaria as cta')
                        ->select(
                            'cta.id_unico',
                            'cta.numerocuenta as cod',
                            'cta.descripcion'
                        )
                        ->leftJoin('gf_cuenta_bancaria_tercero as cter', 'cter.cuentabancaria', '=', 'cta.id_unico')
                        ->where('cter.tercero', '=', $compania)
                        ->where('cta.parametrizacionanno', '=', $param)
                        ->get();

            $data = NULL;

            if(!empty($id_paquete)){
                $id_p    = decrypt($id_paquete);
                $paquete = PaqueteController::buscarPaqueteIdUnico($id_p);

                $data = DB::table('gr_pago_predial as pag')
                          ->select('tpg.nombre as pgnom', 'fat.numero', DB::raw('SUM(dtp.valor) as valor'), 'pre.codigo_catastral as predio')
                          ->leftJoin('gr_detalle_pago_predial as dtp', 'dtp.pago', '=', 'pag.id_unico')
                          ->leftJoin('gr_detalle_factura_predial as dtf', 'dtp.detallefactura', '=', 'dtf.id_unico')
                          ->leftJoin('gr_factura_predial as fat', 'dtf.factura', '=', 'fat.id_unico')
                          ->leftJoin('gp_predio1 as pre', 'fat.predio', '=', 'pre.id_unico')
                          ->leftJoin('gr_tipo_pago as tpg', 'pag.tipopago', '=', 'tpg.id_unico')
                          ->where('pag.paquete', '=', $paquete->id_unico)
                          ->groupBy('pag.id_unico')
                          ->get();
            } else {
                $paquete  = NULL;
            }

            return view('pago.index', compact('tipos', 'bancos', 'paquete', 'data'));
        }else{
            return redirect("CerrarSesion");
        }
    }

    public static function view_pay($id_paquete = NULL){
        if(!empty(session()->get('usuario'))){

            $compania = session()->get('compania');
            $tipos    = TipoPago::all();
            $param    = session()->get('anno');
            $bancos   = DB::table('gf_cuenta_bancaria as cta')
                        ->select(
                            'cta.id_unico',
                            'cta.numerocuenta as cod',
                            'cta.descripcion'
                        )
                        ->leftJoin('gf_cuenta_bancaria_tercero as cter', 'cter.cuentabancaria', '=', 'cta.id_unico')
                        ->where('cter.tercero', '=', $compania)
                        ->where('cta.parametrizacionanno', '=', $param)
                        ->get();

            $data = NULL;

            if(!empty($id_paquete)){
                $id_p    = decrypt($id_paquete);
                $paquete = PaqueteController::buscarPaqueteIdUnico($id_p);

                $data = DB::table('gr_pago_predial as pag')
                          ->select('tpg.nombre as pgnom', 'fat.numero', DB::raw('SUM(dtp.valor) as valor'), 'pre.codigo_catastral as predio')
                          ->leftJoin('gr_detalle_pago_predial as dtp', 'dtp.pago', '=', 'pag.id_unico')
                          ->leftJoin('gr_detalle_factura_predial as dtf', 'dtp.detallefactura', '=', 'dtf.id_unico')
                          ->leftJoin('gr_factura_predial as fat', 'dtf.factura', '=', 'fat.id_unico')
                          ->leftJoin('gp_predio1 as pre', 'fat.predio', '=', 'pre.id_unico')
                          ->leftJoin('gr_tipo_pago as tpg', 'pag.tipopago', '=', 'tpg.id_unico')
                          ->where('pag.paquete', '=', $paquete->id_unico)
                          ->groupBy('pag.id_unico')
                          ->orderBy('fat.numero', 'desc')
                          ->get();
            }
            return view('pago.pago', compact('tipos', 'bancos', 'paquete', 'data'));
        }else{
            return redirect("CerrarSesion");
        }
    }

    public function store(Request $request){
        try {
            $ff    = explode("/", $request->txtFecha);
            $fecha = Carbon::createFromDate($ff[2], $ff[1], $ff[0]);
            $param = ParametrizacionAnio::find(session()->get('anno'));
            $new = new PagoPredial();
            $new->fechapago   = $fecha->format("Y-m-d");
            $new->responsable = session()->get('usuario_tercero');
            $new->banco       = $request->txtBanco;
            $new->paquete     = $request->txtPaquete;
            $new->tipopago    = $request->sltTipo;
            $new->parametrizacionanno = $param->id_unico;
            $new->save();

            $pago    = PagoPredial::where('fechapago', '=', $fecha->format("Y-m-d"))->where('banco', '=', $request->txtBanco)->max('id_unico');
            DetallePagoPredialController::store($request->txtValor, $pago, $request->sltFactura, $request->txtValorC);
            RelacionPredialContableController::procesarRelacion($pago);
            // flash()->overlay("Información guardada correctamente", "Información");

            $paquete = PaqueteController::buscarPaqueteIdUnico($request->txtPaquete);

            return redirect()->route("Pay", encrypt($paquete->id_unico));
        } catch (Exception $e) {
            return $e->getMesage();
        }
    }

    public static function guardar_Pago($fecha, $banco, $paquete, $tipo, $factura){
        try {
            $ff    = explode("/", $fecha);
            $fecha = Carbon::createFromDate($ff[2], $ff[1], $ff[0]);
            $param = ParametrizacionAnio::find(session()->get('anno'));
            $new   = new PagoPredial();
            $new->fechapago   = $fecha->format("Y-m-d");
            $new->responsable = session()->get('usuario_tercero');
            $new->banco       = $banco;
            $new->paquete     = $paquete;
            $new->tipopago    = $tipo;
            $new->parametrizacionanno = $param->id_unico;
            $new->save();

            $pago     = PagoPredial::where('fechapago', '=', $fecha->format("Y-m-d"))->where('banco', '=', $banco)->max('id_unico');
            DetallePagoPredialController::guardarPagoF($pago, $factura);
            RelacionPredialContableController::procesarRelacion($pago);
        } catch (Exception $e) {
            return $e->getMesage();
        }
    }

    public static function guardarPago($fecha, $banco, $paquete, $tipo, $factura){
        try {
            $ff    = explode("-", $fecha);
            $fecha = Carbon::createFromDate($ff[0], $ff[1], $ff[2]);
            $param = ParametrizacionAnio::find(session()->get('anno'));
            $new   = new PagoPredial();
            $new->fechapago   = $fecha->format("Y-m-d");
            $new->responsable = session()->get('usuario_tercero');
            $new->banco       = $banco;
            $new->paquete     = $paquete;
            $new->tipopago    = $tipo;
            $new->parametrizacionanno = $param->id_unico;
            $new->save();

            $pago     = PagoPredial::where('fechapago', '=', $fecha->format("Y-m-d"))->where('banco', '=', $banco)->max('id_unico');
            DetallePagoPredialController::guardarPagoF($pago, $factura);
            RelacionPredialContableController::procesarRelacion($pago);
            return $pago;
        } catch (Exception $e) {
            return $e->getMesage();
        }
    }

    public static function ValidarFechaPago(Request $request){
        if(!empty($request->factura)){
            $ff_p = explode("/",$request->fechapago);
            $ff_p = Carbon::createFromDate($ff_p[2], $ff_p[1], $ff_p[0]);
            $data = DB::table('gr_factura_predial')
                        ->select('fechavencimiento')
                        ->where('id_unico', '=', $request->factura)
                        ->first();
            if($data->fechavencimiento >= $ff_p->format('Y-m-d')){
                return 0;
            }else{
                return 1;
            }
        }else{
            return "";
        }
    }

    public static function ValidarPeriodoC(Request $request){
        if(!empty($request->fecha)){
            $compania = session()->get('compania');
            $ff_p =$request->fecha;
            $fecha_div = explode("/", $ff_p);
            $dia = $fecha_div[0];
            $mes = $fecha_div[1];
            $anio = $fecha_div[2];
            $data = DB::table('gs_cierre_periodo as cp')
                        ->select('cp.id_unico as cierre')
                        ->leftJoin('gf_parametrizacion_anno as pa', 'pa.id_unico', '=', 'cp.anno')
                        ->leftJoin('gf_mes as m', 'cp.mes', '=', 'm.id_unico')
                        ->where('pa.anno', '=', $anio)
                        ->where('m.numero', '=', $mes)
                        ->where('pa.compania', '=', $compania)
                        ->where('cp.estado', '=', 2)
                        ->first();

                        if(!empty($data->cierre)){
                            return 1;
                        }else{
                            return 2; 
                        }       
        }else{
            return 2;
        }
    }

    public function ViewSpecialPay(){
        return view('pago.viewPaySpecial');
    }

    /**
     * PagoAbono
     * Metodo de registro cuando los pagos a realizar son de tipo abono
     * @author Alexander Numpaque
     * @package Predial
     * @param $request (Request) Envio del formulario
     * @return Pay (View) Retorna a la vista de pago
    */
    public static function PagoAbono(Request $request){
        try {
            $ff    = explode("/", $request->txtFecha);
            $fecha = Carbon::createFromDate($ff[2], $ff[1], $ff[0]);
            $param = ParametrizacionAnio::find(session()->get('anno'));
            $new = new PagoPredial();
            $new->fechapago   = $fecha->format("Y-m-d");
            $new->responsable = session()->get('usuario_tercero');
            $new->banco       = $request->txtBanco;
            $new->paquete     = $request->txtPaquete;
            $new->tipopago    = $request->sltTipo;
            $new->parametrizacionanno = $param->id_unico;
            $new->save();
            $pago     = PagoPredial::where('fechapago', '=', $fecha->format("Y-m-d"))->where('banco', '=', $request->txtBanco)->max('id_unico');

            PagoPredialController::PagoDetalleAbono($request->sltFactura, $pago, $request->txtValor, $request->txtValorC);
            RelacionPredialContableController::procesarRelacion($pago);
            flash()->overlay("Información guardada correctamente", "Información");

            $paquete = PaqueteController::buscarPaquete($fecha->format('Y-m-d'), $request->txtBanco);

            return redirect()->route("Pay", encrypt($paquete->id_unico));
        } catch (Exception $e) {
            return $e->getMesage();
        }
    }

    /**
     * PagoDetalleAbono
     * Metodo para registrar abonos hasta el tope o valor enviado en el campo de recaudo
     * @author Alexander Numpaque
     * @package Predial
     * @param $factura (int) Id de factura
     * @param $pago (int) Id de pago
     * @param $valorX (int|double) Valor enviado del campo de pago
     * @param $total (int|double) Valor total de la factura
    */
    public static function PagoDetalleAbono($factura, $pago, $valorX, $total)
    {
        try {
            $xxx = 0;
            $data = DB::table('gr_detalle_factura_predial as dtf')
                ->select('dtf.id_unico', 'dtf.valor', 'dtf.concepto', DB::raw('SUM(dtp.valor) as dtpval'), 'dtp.detallefactura', 'dtf.avaluo')
                ->leftJoin('gr_detalle_pago_predial as dtp', 'dtp.detallefactura', '=', 'dtf.id_unico')
                ->leftJoin('gr_avaluo as ava', 'dtf.avaluo', '=', 'ava.id_unico')
                ->where('dtf.factura',  '=', $factura)
                ->where('dtf.valor', '<>', 0)
                ->groupBy('dtf.id_unico', 'dtf.concepto')
                ->orderBy('ava.anno')
                ->get();
            $valorI = $valorX;
            $saldo = 0;
            foreach ($data as $row) {
                $valor = $row->valor;
                $xxx   += $valor;
                if ($xxx > $valorI) {
                    $xxx   -= $row->valor;
                    if ($valor != 0) {
                        if ($row->valor < $valorI) {
                            if (!empty($row->dtpval)) {
                                $saldo = $row->valor - $row->dtpval;
                                if ($saldo > 0) {
                                    $valor = $saldo;
                                    $xxx  += $valor;
                                } else {
                                    $valor = 0;
                                }
                            } else {
                                $valor =  $row->valor;
                                $xxx   += $valor;
                            }
                        } else {
                            if (!empty($row->dtpval)) {
                                $saldo = $row->valor - $row->dtpval;
                                if ($saldo > 0) {
                                    if ($saldo > $valorI) {
                                        $valor = $valorI;
                                        $xxx  += $valor;
                                    } else {
                                        $valor = $saldo;
                                        $xxx  += $valor;
                                    }
                                } else {
                                    $valor = 0;
                                }
                            } else {
                                $valor = $valorI;
                                $xxx   += $valor;
                            }
                        }
                    }
                } else {
                    $valor = $row->valor;
                }

                if (empty($row->dtpval) || ($row->dtpval < $row->valor)) {
                    if ($valor != 0) {
                        $new = new DetallePagoPredial();
                        $new->valor          = $valor;
                        $new->pago           = $pago;
                        $new->detallefactura = $row->id_unico;
                        $new->save();

                        $valorI -= $valor;
                    }
                }
                if ($valorI <= 0) {
                    break;
                }
                PagoPredialController::VerificarValorTotalAvaluo($factura, $pago, $row->avaluo);
            }
        } catch (Exception $e) {
            return $e->getMessage();
        }
    }

    
    /**
     * VerificarValorTotalAvaluo
     * Función para verificar y validar que el valor total registrado en el avaluo sea el mismo en el pago
     * para registrar el ultimo año pago
     * @author Alexander Numpaque
     * @package Predial
     * @param $factura (int) Id de la factura
     * @param $pago (int) Id del pago
     * @param $avaluo (int) Id del avaluo
     *
    */
    public static function VerificarValorTotalAvaluo($factura, $pago, $avaluo){
        try {
            $valorDetalleF = PagoPredialController::obtnerTotalFacturaAvaluo($avaluo, $factura);
            $valorDetalleP = PagoPredialController::obtnerTotalPagoAvaluo($avaluo, $factura, $pago);
            if($valorDetalleF == $valorDetalleP){#Validamos que si ambos valores son iguales
                $anno  = PagoPredialController::obtnerAnnoAvaluo($avaluo); #obtenemos el año del avaluo
                $predio = PagoPredialController::obtnerPredioFactura($factura);#obtnemos el predio relacioando a la factura
                DetallePagoPredialController::saveLastYearPay($anno, $predio);#Guardamos el ultimo año pago
            }
        } catch (Exception $e) {
            return $e->getMesage();
        }
    }

    /**
     * obtnerTotalFacturaAvaluo
     * Metodo para obtner el valor total de la factura
     * @author Alexander Numpaque
     * @package Predial
     * @param $avaluo (int) Id del avaluo
     * @param $factura (int) Id de la factura
     * @return $xxx (int|double) Valor de la factura en el avaluo
    */
    public static function obtnerTotalFacturaAvaluo($avaluo, $factura){
        try {
            $xxx  = 0;
            $data = DB::table('gr_detalle_factura_predial as dtf')
                        ->select('dtf.valor as valor')
                        ->where('dtf.factura', '=', $factura)
                        ->where('dtf.avaluo', '=', $avaluo)
                        ->get();
            foreach ($data as $row) {
                $xxx += $row->valor;
            }
        } catch (Exception $e) {
            return $e->getMesage();
        }
    }

    /**
     * obtnerTotalPagoAvaluo
     * Metodo para obtener el valor total del pago respecto a un avaluo y factura
     * @author Alexander Numpaque
     * @package Predial
     * @param $avaluo (int) Id del avaluo
     * @param $factura (int) Id de la factura
     * @param $pago (int) Id del pago
     * @return $xxx (int|double) Valor de la factura en el avaluo
    */

    public static function obtnerTotalPagoAvaluo($avaluo, $factura, $pago){
        try {
            $xxx  = 0;
            $data = DB::table('gr_detalle_pago_predial as dtp')
                        ->select('dtp.valor as valor')
                        ->leftJoin('gr_detalle_factura_predial as dtf', 'dtp.detallefactura', '=', 'dtf.id_unico')
                        ->where('dtp.pago', '=', $pago)
                        ->where('dtf.avaluo', '=', $avaluo)
                        ->get();
            foreach ($data as $row) {
                $xxx += $row->valor;
            }
            return $xxx;
        } catch (Exception $e) {
            return $e->getMesage();
        }
    }

    /**
     * obtnerPredioFactura
     * Metodo para obtner el predio relacionado a la factura
     * @author Alexander Numpaque
     * @package Predial
     * @param $factura (int) Id de la factura
     * @return $predio (int) Id del predio
    */
    public static function  obtnerPredioFactura($factura){
        try {
            $data = DB::table('gr_factura_predial')
                        ->select('predio')
                        ->where('id_unico', '=', $factura)
                        ->first();
            return $data->predio;
        } catch (Exception $e) {
            return $e->getMesage();
        }
    }

    /**
     * obtnerAnnoAvaluo
     * Metodo para obtener el año del avaluo
     * @author Alexander Numpaque
     * @package Predial
     * @param $avaluo (int) Id de avaluo
     * @return $data->anno (string) Valor del año en el avaluo
    */
    public static function obtnerAnnoAvaluo($avaluo){
        try {
            $data = DB::table('gr_avaluo')
                    ->select('anno')
                    ->where('id_unico', '=', $avaluo)
                    ->first();
            return $data->anno;
        } catch (Exception $e) {
            return $e->getMesage();
        }
    }

    /**
     * buscarFacturaNumero
     * Metodo para crear array con los valores similares de facturas a buscar
     * @param Request $request
     * @return json $results Array con los valores encontrados por la consulta
     */

    public static function buscarFacturaNumero(Request $request){
        try {
            $term    = $request->term;
            $results = array();
            $queries = DB::table('gr_factura_predial')
                            ->select('id_unico', 'numero')
                            ->where('numero', 'LIKE', '%'.$term.'%')
                            ->orderBy('fechafactura', 'desc')
                            ->take(10)
                            ->get();
            foreach ($queries as $value) {
                $results[] = ['id' => $value->id_unico, 'value' => $value->numero];
            }
            return Response::json($results);
        } catch (Exception $e) {

        }
    }

    /**
     * buscarDetalleComprobante
     * @author Alexander Numpaque
     * @package Predial
     * @param int $pago Id de pago
     * @return int $data->detallecomprobante id de detalle comprobante cnt
     */
    public static function buscarDetalleComprobante($pago){
        try {
            $data = DB::table('gr_detalle_pago_predial')
                        ->select('detallecomprobante as dtc')
                        ->where('pago', '=', $pago)
                        ->whereNotNull('detallecomprobante')
                        ->first();
            if ($data) {
                return $data->dtc;
            }else{
                return 0;
            }
        } catch (Exception $e) {
            return $e->getMesage();
        }
    }

    public static function obtnerTotalPaquete($id_paquete){
        try {
            $data = DB::table('gr_detalle_pago_predial as dtp')
                    ->leftJoin('gr_pago_predial as gpr', 'gtp.pago', '=', 'gpr.id_unico')
                    ->where('gpr.paquete', $id_paquete)
                    ->sum('dtp.valor');
            return $data;
        } catch (Exception $e) {
            return $e->getMesage();
        }
    }

    public static function vistaCobroCoactivo(){
        return view('informesPredial.vistaCobroCoactivo');
    }

    public static function generateInf(Request $request){
        try {
            $idI = decrypt($request->sltPredioI);
            $idF = decrypt($request->sltPredioF);
            $fechaG = $request->txtFechaF;
            $data = DB::table('gp_predio1 as gpr')
                    ->leftJoin('gp_tercero_predio as gpt', 'gpt.predio', '=', 'gpr.id_unico')
                    ->leftJoin('gr_propietarios as gps', 'gpt.tercero', '=', 'gps.id_unico')
                    ->where('gpr.estado', 2)
                    ->whereBetween('gpr.id_unico', [$idI, $idF])
                    ->where('gpt.orden', '001')
                    ->select('gpr.id_unico', 'gps.nombres as nom', 'gpr.direccion', 'gpr.codigo_catastral as cod')
                    ->get();
            date_default_timezone_set('America/Bogota');
            $mes = [
                'no', 'Enero', 'Febrero', 'Abril',
                'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre',   'Diciembre'
            ];
            if(count($data) > 0){
                $compania = ListadoPagosController::obtenerCompania();
                $pdf      = new Fpdf();
                $meses = array(
                    'no', 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto',
                    'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'
                );
                foreach ($data as $row){
                    $xxxA = ExtractoController::obtnerultimoannopago($row->id_unico);
                    //if($xxxA > date("Y") || empty($xxxA)){

                    if(!empty($xxxA) || empty($xxxA)){
                        $pdf::AddPage("P", "A4");
                        if(!empty($compania->logo)){
                            $pdf::Image($compania->logo, 15, 8, 20);
                        }

                         if(!empty($fechaG)){
                              $fechaC=$fechaG;
                          }else{
                              $fechaC=null;
                          }
                        $pdf::SetFont('Arial','B', 12);
                        $pdf::SetX(35);
                        $pdf::Cell(160, 5, $compania->razonsocial, 0, 0, "C");
                        $pdf::Ln(5);
                        $pdf::SetX(35);
                        $pdf::Cell(160, 5,"NIT :".$compania->numeroi,0,0,'C');
                        $pdf::Ln(20);
                        $pdf::SetFont('Arial', '', 12);
                        $mes  = (int) date("m");
                       if ($fechaC!=null && $fechaC!="00/00/0000") {
                            $fechaDiv=explode("/",$fechaC);
                            $diaP=$fechaDiv[0];
                            $mesP=$fechaDiv[1];
                            $mesP=intval($mesP);
                            $anioP=$fechaDiv[2];
                            $nmes = $meses[$mesP];
                            $pdf::Cell(170, 5, 'Barbosa, '.$nmes.' '.$diaP.' de '.$anioP, 0, 0, 'L');
                        }else{
                            $nmes = $meses[$mes];
                            $pdf::Cell(170, 5, 'Barbosa, '.$nmes.' '.date("d").' de '.date("Y"), 0, 0, 'L');
                        }
                        $pdf::Ln(15);
                        $pdf::Cell(170, 5, utf8_decode('Señor'), 0, 0, 'L');
                        $pdf::Ln(5);
                        $pdf::SetFont('Arial', 'B', 12);
                        $pdf::Cell(170, 5, $row->nom, 0, 0, 'L');
                        $pdf::SetFont('Arial', '', 12);
                        $pdf::Ln(5);
                        $pdf::Cell(170, 5, $row->direccion, 0, 0, 'L');
                        $pdf::Ln(5);
                        $pdf::Cell(170, 5, 'Barbosa', 0, 0, 'L');
                        $pdf::Ln(15);
                        $pdf::SetFont('Arial', 'B', 12);
                        $pdf::Cell(170, 5, iconv('utf-8', 'cp1252', 'REF. Requerimiento Cobro Persuasivo – Impuesto Predial.'), 0, 0, 'L');
                        $pdf::Ln(15);
                        $pdf::SetFont('Arial', '', 12);
                        $pdf::MultiCell(190, 5, iconv('utf-8', 'cp1252','Me permito solicitarle se presente a la Secretaria de Hacienda del Municipio de Barbosa en el termino de cinco (05) días hábiles a partir del recibo de este requerimiento, con el fin de aclarar asuntos relacionados con el pago del impuesto predial, correspondiente al predio ubicado en la dirección '.$row->direccion.', e identificado con cedula catastral No. '.$row->cod.'.'), 0, 'FJ');
                        $pdf::Ln(5);
                        $pdf::MultiCell(190, 5, iconv('utf-8', 'cp1252','Una vez vencido el termino anterior, sin obtener respuesta alguna a este requerimiento, se continuara en forma eficaz y efectiva con el proceso de cobro administrativo  coactivo, según lo establece la ley 1066 de 2006, Estatuto Tributario y demás normas concordantes, así como las demás consecuencias que conlleva el sustraerse del pago del mencionado impuesto.'), 0, 'FJ');
                        $pdf::Ln(5);
                        $pdf::MultiCell(190, 5, iconv('utf-8', 'cp1252','Si ya cancelo la presente obligación, por favor suministrar los soportes de pago a esta Secretaria, con el fin de evitar que se continúe con el tramite de cobro.'), 0, 'FJ');
                        $pdf::Ln(5);
                        $pdf::Cell(190, 5, 'Cordialmente,', 0, 0, 'L');
                        $pdf::Ln(5);
                        $y = $pdf::GetY();
                        $firm = DB::table('gf_responsable_documento as rd')
                         ->select('c.nombre','tr.nombreuno','tr.nombredos','tr.apellidouno','tr.apellidodos','tr.firma as firma')
                        ->leftJoin('gf_tercero as tr', 'rd.tercero', '=', 'tr.id_unico')
                        ->leftJoin('gf_cargo_tercero as ct', 'ct.tercero', '=', 'tr.id_unico')
                        ->leftJoin('gf_cargo as c', 'ct.cargo', '=', 'c.id_unico')
                        ->leftJoin('gf_tipo_documento as td', 'rd.tipodocumento', '=', 'td.id_unico')
                        ->where('td.nombre', '=', 'Cobro Coactivo')
                        ->get();
                

                        $pdf::SetFont('Arial', 'B', 12);
                        $pdf::Image('./img/Firma/LUIS_AL.jpg', 10, $y, 60);
                        $pdf::Ln(30);
                        $pdf::Cell(190, 5,$firm[0]->nombreuno." ".$firm[0]->nombredos." ".$firm[0]->apellidouno." ".$firm[0]->apellidodos, 0, 0, 'L');
                        $pdf::Ln(5);
                        $pdf::Cell(190, 5,$firm[0]->nombre , 0, 0, 'L');
                        $pdf::Ln(5);
                        $pdf::Cell(190, 5, 'Municipio de Barbosa', 0, 0, 'L');
                    }
                }
                $pdf::Output();
                exit;
            }else{
                flash()->overlay("Se encontro predios sin adeudo", "Información");
                return back();
            }
        } catch (Exception $e) {
            return $e->getMessage();
        }
    }
}
