<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Request;

use App\Custom\SQLConnection;
use App\Custom\Misc;

class ImperiumDocsNuevoController extends Controller {
    public static function verificacionDocumentosNuevo() {
        $status = !empty(Request::input('status')) ? Request::input('status') : 'PENDIENTES';
        /* $fecha_desde;
        $busqueda_cliente; */
        $clientesImperium = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT', NULL, NULL, NULL, NULL, 0, env('IMPE_PRODUCTO')), 'select');
        if (isset($_POST["desde_fecha"]) && !empty(Request::input("desde_fecha")) && Request::input("desde_fecha") != null) {
            $fecha_desde = Request::input("desde_fecha");
            $busqueda_cliente = Request::input('cliente_busqueda');
            return view('/documentos-Imperium/verificacion_documentos')->with(compact(['status', 'fecha_desde', 'clientesImperium', 'busqueda_cliente']));
        } else {
            return view('/documentos-Imperium/verificacion_documentos')->with(compact(['status', 'clientesImperium']));
        }

    }

    public static function verificacionDocumentosDataNuevo() {
        $status = !empty(Request::input('status')) ? Request::input('status') : 'PENDIENTES';
        $fecha_desde = null;
        $cliente_busqueda = null;
        if (isset($_POST["desde_fecha"]) && !empty(Request::input("desde_fecha")) && Request::input("desde_fecha") != null) {
            $fecha_desde = str_replace("-", "", Request::input("desde_fecha"));
            //$fecha_hasta = str_replace("-", "", Request::input('hasta_fecha'));
            $cliente_busqueda = Request::input("cliente_busqueda");
        } else {
            $fecha_desde = null;
            $fecha_hasta = null;
            $cliente_busqueda = null;

        }
        //$docs = SQLConnection::backendStoreProcedure('backend_documentos', array($status, null, null, null, null, null, null, null), 'select');
        //$docs = SQLConnection::backendStoreProcedure('Imperium_vista_admin_2', array($status, null, null, null, null, null, null, null), 'select');
        $docs = SQLConnection::backendStoreProcedure('backend_verificacion_led_docs', array($status, null, null, null, $fecha_desde, $fecha_desde, null, null, $cliente_busqueda), 'select');

        // dd($docs);
        $periodos = [];
        $secciones = [];
        $acceso = [];
        $parcial = [];
        $complejidad = [];
        $per = [];
        $sec = [];
        $acc = [];
        $ser = [];
        $fam = [];
        $cli = [];
        $par = [];
        $comple = [];
        $clientes = [];
        $servicios = [];
        $familias = [];
        foreach ($docs as $key => $doc) {
            $docs[$key]->servicio = new \stdClass;
            $docs[$key]->servicio = 'IMPERIUM';
            $docs[$key]->contratista = $doc->nombre_contratista_1/* . '<br>'. $doc->numero_1*/ ;

            if ($doc->nombre_contratista_1 == $doc->nombre_contratista && $doc->numero_1 == $doc->numero) {
                $docs[$key]->subcontratista = null;
            } else {
                $docs[$key]->subcontratista = $doc->nombre_contratista /*. '<br>'. $doc->numero*/ ;
            }

            $docs[$key]->empleado = $doc->nombre_empleado /*. '<br>' . $doc->numero_e*/ ;
            $docs[$key]->vehiculo = $doc->nombre_vehiculo /*. '<br>' . $doc->dominio*/ ;

            if (!in_array($docs[$key]->servicio, $ser)) {
                $ser[] = $docs[$key]->servicio;
            }
            if (!in_array($docs[$key]->nombre_familia, $fam)) {
                $fam[] = $docs[$key]->nombre_familia;
            }
            if (!in_array($doc->nombre_cliente, $cli)) {
                $cli[] = $doc->nombre_cliente;
            }
            if (!in_array($doc->periodo, $per)) {
                $per[] = $doc->periodo;
            }
            if (!in_array($doc->nombre_seccion, $sec)) {
                $sec[] = $doc->nombre_seccion;
            }
            if (!in_array($doc->ci_killer, $acc)) {
                $acc[] = $doc->ci_killer;
            }
            if (!in_array($doc->codigo_complejidad, $comple)) {
                $comple[] = $doc->codigo_complejidad;
            }
        }

        arsort($per, 0);
        foreach ($per as $p) {
            $periodos[] = array('periodo' => $p, 'periodo_my' => substr($p, 4, 2) . '-' . substr($p, 0, 4));
        }

        /* DROPDOWN DE COMPLEJIDAD PARA LA FANCY */

        asort($comple, 0);
        foreach ($comple as $com) {
            $complejidad[] = array('codigo_complejidad' => $com);
        }
        asort($sec, 0);
        foreach ($sec as $s) {
            $secciones[] = array('nombre_seccion' => $s);
        }

        foreach ($acc as $a) {
            $acceso[] = array('acceso' => ($a == 1) ? 'SI' : 'NO');
        }

        $parciales = [];
        $parciales = Misc::etiquetas();
        foreach ($parciales as $s) {
            $parcial[] = array('parcial' => $s);
        }
        arsort($ser, 0);
        foreach ($ser as $s) {
            $servicios[] = array('servicio' => $s);
        }
        asort($fam, 0);
        foreach ($fam as $f) {
            if ($f !== NULL) {
                $familias[] = array('nombre_familia' => $f);
            }
        }
        asort($cli, 0);
        foreach ($cli as $c) {
            $clientes[] = array('nombre_cliente' => $c);
        }

        return json_encode(array('docs' => $docs, 'periodos' => $periodos, 'secciones' => $secciones, 'complejidad' => $complejidad, 'acceso' => $acceso, 'parcial' => $parcial, 'servicios' => $servicios, 'clientes' => $clientes, 'familias' => $familias));
    }

    public static function verificacionDocumentosDocNuevo() {
        $doc_id = Request::input('doc_id');
        #old $doc = SQLConnection::backendStoreProcedure('Imperium_datos_documento', array($doc_id), 'selectOne');
        
        // Willy -> NUEVO -> Verificacion 
        $parametros = [
            'p_doc_id'      => $doc_id,
            'p_contratista' => null,
            'p_periodo'     => null,
            'p_tipo_doc'    => null,
            'p_replicado'   => null,
            'p_user_id'     => Session::get("usuario")->user_id,
            'p_chequeo'     => 1,
            'p_tiempo'      => env('TIEMPO_A_CONTEMPLAR_IMPERIUM')
        ];
        /* Este store realiza una verificacion de si un usuario esta asignado al documento
        - Si no esta asignado a un usuario, asigna al usuario que ejecuto este controlador
        - Si esta asignado a otro usuario, le muestra la vista 'modal_usuario_asignado' */
        $doc = SQLConnection::backendStoreProcedure('Imperium_datos_documento', array_values($parametros), 'selectOne');
        
        if (isset($doc->error) || isset($doc->mensaje)) {
            // Extraigo fecha y hora del mensaje
            preg_match('/desde el (\d{2}\/\d{2}\/\d{4} \d{2}:\d{2}:\d{2})/', $doc->mensaje, $matches);
            $fechaInicio = isset($matches[1]) ? \DateTime::createFromFormat('d/m/Y H:i:s', $matches[1]) : null;
            $duracionBloqueo = env('TIEMPO_A_CONTEMPLAR_IMPERIUM');
            $tiempoRestante = null;

            if ($fechaInicio) {
                $fechaActual = new \DateTime();
                $diferencia = $fechaInicio->diff($fechaActual);
                $minutosTranscurridos = ($diferencia->days * 24 * 60) + ($diferencia->h * 60) + $diferencia->i;
    
                // Calcular el tiempo restante
                $tiempoRestante = max(0, $duracionBloqueo - $minutosTranscurridos);
            }

            return response()->json([
                'documento_asignado' => true,
                'vista' => \View::make('/documentos-Imperium/modal_usuario_asignado')->with(compact(['doc', 'tiempoRestante']))->render()
            ]);
            /* $vista = \View::make('/documentos-Imperium/modal_usuario_asignado')->with(compact(['doc']));
            return $vista; */
        }
        // Willy -> FIN

        // Directorio del documento
        $path = env('PATH_DOCUMENTOS') . '/' . $doc->doc_path;

        // EJEMPLO TIPO DOC 1010 / DOC ID 4971245516
        //$campos_doc = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('LISTARCAMPOS', "1010", "4971245516"), 'select');
        //$valores_campos = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('VALORES', "1010", "4971245516"), 'select');

        // Campos de un formulario que se creará en la vista.
        $campos_doc = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('LISTARCAMPOS', $doc->tipo_doc, $doc_id), 'select');
        //echo(var_dump(array($campos_doc)));die();

        // Valores de todos los campos de un formulario según el documento.
        $valores_campos = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('VALORES', $doc->tipo_doc, $doc_id), 'select');
        //echo(var_dump(array($valores_campos)));die();

        $planes_pago_modif = SQLConnection::backendStoreProcedure('Imperium_planes_pago', array('LISTARPLANES', NULL, $doc_id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 'select');

        //  Ruta donde se envian los archivos subidos.
        $cod_ruta = env('RUTA_DOCUMENTOS_IMPERIUM') . '/' . $doc->doc_path;
        if (count($planes_pago_modif) == 0) {
            $planes_pago = array();
            $monto_planes = 0;
            $monto_cancelado = 0;
        } else {
            $planes = self::iconosEstado($planes_pago_modif);
            $planes_pago = self::modificarConcepto($planes);
            $monto_planes = self::montoTotal($planes_pago);
            $monto_cancelado = self::montoAbonado($planes_pago);
        }
        if (!($doc->prox_vencer == 1 && $doc->estado_doc == 'I' && $doc->doc_version == 0)) {
            //  Permiso para el boton Borrar documento (por ahora no hace nada). // Kevin 16/09/2021
            if (Session::get("usuario")->username == "sa" || Session::get("usuario")->username == "kevin.cisneros") {
                $permiso = true;
            } else {
                $permiso = false;
            }
            // ------------------------------------------------------------------------------------   //

            $files = [];
            for ($x = 0; $x <= $doc->doc_version; $x += 1) {

                $files[$x] = Misc::getDocUrl($doc_id, $x);

            }

            $doc_url = $files[$doc->doc_version];

            if ($doc_url != '') {
                $cmdline_python = env('PDFREAD') . ' ' . $doc_id . ' ' . "/var/www/html/" . $cod_ruta . $doc_url;
            } else {
                $cmdline_python = env('PDFREAD') . ' ' . $doc_id . ' ' . "/var/www/html/" . $cod_ruta;
            }

            $hijos = NULL;

            if ($doc->es_doc_lista > 0) {
                $hijos = SQLConnection::backendStoreProcedure('Imperium_Datos_Documentos_Hijos', array($doc_id), 'select');

            }

            $ultima_nomina = NULL;
            if ($doc->validar_lista_cuil > 0 && empty($hijos)) {

                $ultima_nomina = SQLConnection::backendStoreProcedure('Imperium_max_periodo', array($doc->contratista, 'E'), 'selectOne');

            }

            $aux = NULL;

            if ($doc->doc_version > 0) {

                // Todos los documentos de reemplazo para mostrar el historial en caso que el estado sea verificado

                $aux = SQLConnection::backendStoreProcedure('Imperium_datos_documento_reemplazo', array($doc_id, -1), 'select');

            }
            //return view('/documentos/documento_verificar')->with(compact(['doc', 'doc_url', 'hijos', 'files', 'aux']));
            #dd($doc);
            
            return response()->json([
                'documento_asignado' => false,
                'vista' => \View::make('/documentos-Imperium/documento_verificar')->with(compact(['doc', 'doc_url', 'hijos', 'files', 'aux', 'campos_doc', 'valores_campos', 'permiso', 'planes_pago', 'cod_ruta', 'monto_planes', 'monto_cancelado', 'cmdline_python', 'ultima_nomina']))->render()
            ]);
            /* $vista = \View::make('/documentos-Imperium/documento_verificar')->with(compact(['doc', 'doc_url', 'hijos', 'files', 'aux', 'campos_doc', 'valores_campos', 'permiso', 'planes_pago', 'cod_ruta', 'monto_planes', 'monto_cancelado', 'cmdline_python', 'ultima_nomina']));
            return $vista; */
        } else {
            $usuarios_permitidos = array();

            if (Session::get("usuario")->username == "sa" || Session::get("usuario")->username == "kevin.cisneros") {
                array_push($usuarios_permitidos, Session::get("usuario")->username);
            }

            for ($i = 0; $i < count($usuarios_permitidos); $i++) {
                if ($usuarios_permitidos[$i] == Session::get("usuario")->username) {
                    $permiso = true;
                } else {
                    $permiso = false;
                }
            }

            // Directorio del documento
            $path = env('PATH_DOCUMENTOS') . '/' . $doc->doc_path;

            // EJEMPLO TIPO DOC 1010 / DOC ID 4971245516
            //$campos_doc = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('LISTARCAMPOS', "1010", "4971245516"), 'select');
            //$valores_campos = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('VALORES', "1010", "4971245516"), 'select');

            // Campos de un formulario que se creará en la vista.
            $campos_doc = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('LISTARCAMPOS', $doc->tipo_doc, $doc_id), 'select');
            // Valores de todos los campos de un formulario según el documento.
            $valores_campos = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('VALORES', $doc->tipo_doc, $doc_id), 'select');

            $dv = $doc->doc_version;

            $doc = SQLConnection::backendStoreProcedure('Imperium_datos_documento_reemplazo', array($doc_id, 0), 'selectOne');

            $doc_reemp = SQLConnection::backendStoreProcedure('Imperium_datos_documento_reemplazo', array($doc_id, $dv), 'selectOne');

            $doc_url = Misc::getDocUrl($doc_id);

            $doc_url_reemp = Misc::getDocUrl($doc_id, $dv);

            $hijos = NULL;

            if ($doc->es_doc_lista > 0) {

                $hijos = SQLConnection::backendStoreProcedure('Imperium_Datos_Documentos_Hijos', array($doc_id), 'select');

            }
            // dd("llegamo");
            //return view('/documentos/documento_verificar_reemplazo')->with(compact(['doc', 'doc_reemp', 'doc_url', 'doc_url_reemp', 'hijos']));            

            /* $vista = \View::make('/documentos-Imperium/documento_verificar_reemplazo')->with(compact(['doc', 'doc_reemp', 'doc_url', 'doc_url_reemp', 'hijos', 'campos_doc', 'valores_campos', 'permiso', 'planes_pago', 'cod_ruta']));
            return $vista; */

            return response()->json([
                'documento_asignado' => false,
                'vista' => \View::make('/documentos-Imperium/documento_verificar_reemplazo')->with(compact(['doc', 'doc_reemp', 'doc_url', 'doc_url_reemp', 'hijos', 'campos_doc', 'valores_campos', 'permiso', 'planes_pago', 'cod_ruta']))->render()
            ]);


        }
    }

    public static function verificacionDocumentosDocNuevoOrg() {
        $doc_id = Request::input('doc_id');
        $doc = SQLConnection::backendStoreProcedure('Imperium_datos_documento', array($doc_id), 'selectOne');
        // Directorio del documento
        $path = env('PATH_DOCUMENTOS') . '/' . $doc->doc_path;

        // EJEMPLO TIPO DOC 1010 / DOC ID 4971245516
        //$campos_doc = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('LISTARCAMPOS', "1010", "4971245516"), 'select');
        //$valores_campos = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('VALORES', "1010", "4971245516"), 'select');

        // Campos de un formulario que se creará en la vista.
        $campos_doc = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('LISTARCAMPOS', $doc->tipo_doc, $doc_id), 'select');
        //echo(var_dump(array($campos_doc)));die();

        // Valores de todos los campos de un formulario según el documento.
        $valores_campos = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('VALORES', $doc->tipo_doc, $doc_id), 'select');
        //echo(var_dump(array($valores_campos)));die();

        $planes_pago_modif = SQLConnection::backendStoreProcedure('Imperium_planes_pago', array('LISTARPLANES', NULL, $doc_id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 'select');

        //  Ruta donde se envian los archivos subidos.
        $cod_ruta = env('RUTA_DOCUMENTOS_IMPERIUM') . '/' . $doc->doc_path;

        if (count($planes_pago_modif) == 0) {
            $planes_pago = array();
            $monto_planes = 0;
            $monto_cancelado = 0;
        } else {
            $planes = self::iconosEstado($planes_pago_modif);
            $planes_pago = self::modificarConcepto($planes);
            $monto_planes = self::montoTotal($planes_pago);
            $monto_cancelado = self::montoAbonado($planes_pago);
        }

        if (!($doc->prox_vencer == 1 && $doc->estado_doc == 'I' && $doc->doc_version == 0)) {
            //  Permiso para el boton Borrar documento (por ahora no hace nada). // Kevin 16/09/2021
            if (Session::get("usuario")->username == "sa" || Session::get("usuario")->username == "kevin.cisneros") {
                $permiso = true;
            } else {
                $permiso = false;
            }
            // ------------------------------------------------------------------------------------   //

            $files = [];

            for ($x = 0; $x <= $doc->doc_version; $x += 1) {

                $files[$x] = Misc::getDocUrl($doc_id, $x);

            }

            $doc_url = $files[$doc->doc_version];

            if ($doc_url != '') {
                $cmdline_python = env('PDFREAD') . ' ' . $doc_id . ' ' . "/var/www/html/" . $cod_ruta . $doc_url;
            } else {
                $cmdline_python = env('PDFREAD') . ' ' . $doc_id . ' ' . "/var/www/html/" . $cod_ruta;
            }

            $hijos = NULL;

            if ($doc->es_doc_lista > 0) {

                $hijos = SQLConnection::backendStoreProcedure('Imperium_Datos_Documentos_Hijos', array($doc_id), 'select');

            }

            $ultima_nomina = NULL;
            if ($doc->validar_lista_cuil > 0 && empty($hijos)) {

                $ultima_nomina = SQLConnection::backendStoreProcedure('Imperium_max_periodo', array($doc->contratista, 'E'), 'selectOne');

            }

            $aux = NULL;

            if ($doc->doc_version > 0) {

                // Todos los documentos de reemplazo para mostrar el historial en caso que el estado sea verificado

                $aux = SQLConnection::backendStoreProcedure('Imperium_datos_documento_reemplazo', array($doc_id, -1), 'select');

            }
            //return view('/documentos/documento_verificar')->with(compact(['doc', 'doc_url', 'hijos', 'files', 'aux']));

            $vista = \View::make('/documentos-Imperium/documento_verificar')->with(compact(['doc', 'doc_url', 'hijos', 'files', 'aux', 'campos_doc', 'valores_campos', 'permiso', 'planes_pago', 'cod_ruta', 'monto_planes', 'monto_cancelado', 'cmdline_python', 'ultima_nomina']));
            return $vista;
        } else {
            $usuarios_permitidos = array();

            if (Session::get("usuario")->username == "sa" || Session::get("usuario")->username == "kevin.cisneros") {
                array_push($usuarios_permitidos, Session::get("usuario")->username);
            }

            for ($i = 0; $i < count($usuarios_permitidos); $i++) {
                if ($usuarios_permitidos[$i] == Session::get("usuario")->username) {
                    $permiso = true;
                } else {
                    $permiso = false;
                }
            }

            // Directorio del documento
            $path = env('PATH_DOCUMENTOS') . '/' . $doc->doc_path;

            // EJEMPLO TIPO DOC 1010 / DOC ID 4971245516
            //$campos_doc = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('LISTARCAMPOS', "1010", "4971245516"), 'select');
            //$valores_campos = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('VALORES', "1010", "4971245516"), 'select');

            // Campos de un formulario que se creará en la vista.
            $campos_doc = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('LISTARCAMPOS', $doc->tipo_doc, $doc_id), 'select');
            // Valores de todos los campos de un formulario según el documento.
            $valores_campos = SQLConnection::backendStoreProcedure('Imperium_campos_documentos', array('VALORES', $doc->tipo_doc, $doc_id), 'select');

            $dv = $doc->doc_version;

            $doc = SQLConnection::backendStoreProcedure('Imperium_datos_documento_reemplazo', array($doc_id, 0), 'selectOne');

            $doc_reemp = SQLConnection::backendStoreProcedure('Imperium_datos_documento_reemplazo', array($doc_id, $dv), 'selectOne');

            $doc_url = Misc::getDocUrl($doc_id);

            $doc_url_reemp = Misc::getDocUrl($doc_id, $dv);

            $hijos = NULL;

            if ($doc->es_doc_lista > 0) {

                $hijos = SQLConnection::backendStoreProcedure('Imperium_Datos_Documentos_Hijos', array($doc_id), 'select');

            }
            // dd("llegamo");
            //return view('/documentos/documento_verificar_reemplazo')->with(compact(['doc', 'doc_reemp', 'doc_url', 'doc_url_reemp', 'hijos']));            

            $vista = \View::make('/documentos-Imperium/documento_verificar_reemplazo')->with(compact(['doc', 'doc_reemp', 'doc_url', 'doc_url_reemp', 'hijos', 'campos_doc', 'valores_campos', 'permiso', 'planes_pago', 'cod_ruta']));
            return $vista;
        }
    }

    //    Agrega iconos de estado del plan (auxiliar)
    private static function iconosEstado($lista) {
        for ($i = 0; $i < count($lista); $i++) {
            switch ($lista[$i]->estado) {
                case 'V':
                    $lista[$i]->estado = "<span class='circle' title='VIGENTE' style='background:#63b68c;'>&nbsp</span> VIGENTE";
                    break;
                case 'G':
                    $lista[$i]->estado = "<span class='circle' title='REEMPLAZADO' style='background:#929292;'>&nbsp</span> REEMPLAZADO";
                    break;
                case 'A':
                    $lista[$i]->estado = "<span class='circle' title='ATRASADO' style='background:#fcf80f;'>&nbsp</span> ATRASADO";
                    break;
                case 'B':
                    $lista[$i]->estado = "<span class='circle' title='CUMPLIDO' style='background:#005dff;'>&nbsp</span> CUMPLIDO";
                    break;
                case 'R':
                    $lista[$i]->estado = "<span class='circle' title='CAÍDO' style='background:#A72B2A;'>&nbsp</span> CAÍDO";
                    break;
                case NULL:
                    $lista[$i]->estado = "<span class='circle' title='SIN ESTADO' style='background:#000000;'>&nbsp</span> SIN ESTADO";
                    break;
                case 'S':
                    $lista[$i]->estado = "<span class='circle' title='SIN ESTADO' style='background:#000000;'>&nbsp</span> SIN ESTADO";
                    break;
            }
        }
        return $lista;
    }

    //    Modificacion de valores de conceptos
    private static function modificarConcepto($planes) {
        for ($i = 0; $i < count($planes); $i++) {
            switch ($planes[$i]->concepto_consolidado) {
                case '100':
                    $planes[$i]->concepto_consolidado = 'Aportes y Contribuciones de seguridad social';
                    break;

                case '301':
                    $planes[$i]->concepto_consolidado = 'Aportes de seguridad social';
                    break;

                case '351':
                    $planes[$i]->concepto_consolidado = 'Contribuciones de seguridad social';
                    break;
            }
        }
        return $planes;
    }

    //    Monto total de los planes
    private static function montoTotal($planes) {
        $dev = NULL;
        //  Recorro los planes
        for ($i = 0; $i < count($planes); $i++) {
            //  Estados de planes 
            $nuevo_estado = self::estadosOriginales($planes[$i]->estado);
            //  Si el estado es distinto de "REEMPLAZADO", entonces sumo los montos totales de los planes
            if ($nuevo_estado != 'G') {
                $dev += $planes[$i]->monto_total;
            }
        }
        return $dev;
    }

    //    Cambia el estado modificado a su estado original que proviene del store (auxiliar)
    private static function estadosOriginales($estado) {
        switch ($estado) {
            case "<span class='circle' title='VIGENTE' style='background:#63b68c;'>&nbsp</span> VIGENTE":
                $estado = 'V';
                break;
            case "<span class='circle' title='REEMPLAZADO' style='background:#929292;'>&nbsp</span> REEMPLAZADO":
                $estado = 'G';
                break;
            case "<span class='circle' title='ATRASADO' style='background:#fcf80f;'>&nbsp</span> ATRASADO":
                $estado = 'A';
                break;
            case "<span class='circle' title='CUMPLIDO' style='background:#005dff;'>&nbsp</span> CUMPLIDO":
                $estado = 'B';
                break;
            case "<span class='circle' title='CAÍDO' style='background:#A72B2A;'>&nbsp</span> CAÍDO":
                $estado = 'R';
                break;
            case "<span class='circle' title='SIN ESTADO' style='background:#000000;'>&nbsp</span> SIN ESTADO":
                $estado = NULL;
                break;
        }
        return $estado;
    }

    //    Monto abonado de los planes
    private static function montoAbonado($planes) {
        $dev = NULL;
        //  Recorro los planes
        for ($i = 0; $i < count($planes); $i++) {
            //  Estados de planes
            $nuevo_estado = self::estadosOriginales($planes[$i]->estado);
            //  Si el estado es distinto de "REEMPLAZADO", entonces sumo los montos abonados de los planes
            if ($nuevo_estado != 'G') {
                $dev += $planes[$i]->importe_cancelado;
            }
        }
        return $dev;
    }
}
