const {
    style
} = require('./style')
const {
    HEADER
} = require('../global/header')

const validaciones = [
    'NOMBRE_EMPRESA',
    'NOMBRE_SUCURSAL',
    'NOMBRE_ARCHIVO',
    'NOMBRE',
    'NUMERO_CLIENTE',
    'FECHA_OTORGAMIENTO',
    'GRUPO_CLIENTE',
    'NUMERO_CREDITO',
    'FECHA_DE_VENCIMIENTO',
    'TASA_IVA',
    'INT_NORMAL_ANUAL',
    'IMPORTE',
    'COMISIONES',
    'INT_MORATORIO_ANUAL',
    'PLAZOS',
    'PERIODOS',
    'COBROS',
    'PRODUCTO',
    'NOMBRE_QUEJAS',
    'CELULAR_QUEJA',
    'FECHA_LARGA',
    'INTERES_PERIODO_INICIAL',
    'TOTAL_INTERES',
    'TOTAL_CAPITAL',
    'TOTAL_IVA',
    'TOTAL_TOTALPAGAR',
    'listaAmortizacion'
];
 
const pages_border = {
    border_left: 15,
    border_top: 0,
    border_right: 10,
    border_bottom: 0,
    header_height: 29,
    footer_height: 13,
};

const pagare = async(parametros, imagen, fuente) => {
    const reca = parametros['RECA'];
    const lista_amortizacion = parametros['listaAmortizacion'];    
    const amortizacion = lista_amortizacion[0];
    let servicios_adicionales = parametros["SERVICIOS_ADICIONALES_FINANCIADOS"];
    let servicio_adicional = validaNombreServicioAdicional(servicios_adicionales);
    
    return `
        <!doctype html>
        <html>
        <head>
            <meta charset="utf-8">
            <title>PDF Result Template</title>
            <style>
            ` + await style(fuente) + ` 
            </style>
        </head>
        <body>
          <div id="pageHeader"  >  
              <div align='center' style='height: 100%;'>
                ` + HEADER("" + parametros['NOMBRE_EMPRESA'], '' + parametros['NOMBRE_SUCURSAL'], '' + parametros['NOMBRE_ARCHIVO'], '' + imagen) + `
              </div>
          </div>   
          <div id="pageFooter">
            <div class='page_number'>
                    <!--{{page}}/{{pages}}-->
                    <table m-none>
                    <tr class="py-none m-none">
                        <td class="text-center noborder py-none font-sucursal m-none" style="width: 90%;">
                            Registro RECA: ${reca}
                        </td>
                        <td class="page_number text-right noborder py-none m-none fontsize9" style="width:10%">
                            {{page}}/{{pages}}
                        </td>
                    </tr>
                </table>
            </div>
          </div> 
        
                <div class="col-max py text-center" >
                    <span class="bold" >${parametros["PRODUCTO"]}</span>
                </div>
                    <table>
                        <tr>
                            <td class="p-none border-none" colspan="4" ><b>Nombre:</b> ${parametros["NOMBRE"]}</td>
                            <td class="p-none border-none" colspan="4" ><b>Referencia Cliente:</b></td>
                            <td class="p-none border-none" colspan="4" >${parametros["NUMERO_CLIENTE"]}</td>
                            <td class="p-none border-none" colspan="4" ><b>Fecha de Otorgamiento: </b></td>
                            <td class="p-none border-none" colspan="4" >${parametros["FECHA_OTORGAMIENTO"]}</td>
                        </tr>
                        <tr>
                            <td class="p-none border-none" colspan="4" ><b>Grupo:</b> ${parametros["GRUPO_CLIENTE"]}</td>
                            <td class="p-none border-none" colspan="4" ><b>N° de Crédito: </b></td>
                            <td class="p-none border-none" colspan="4" >${parametros["NUMERO_CREDITO"]}</td>
                            <td class="p-none border-none" colspan="4" ><b>Fecha de Vencimiento: </b></td>
                            <td class="p-none border-none" colspan="4" >${parametros["FECHA_DE_VENCIMIENTO"]}</td>
                        </tr>
                        <tr>
                            <td class="p-none border-none" colspan="4" ></td>
                            <td class="p-none border-none" colspan="4" ><b>Tasa IVA (%) </b></td>
                            <td class="p-none border-none" colspan="4" >${parametros["TASA_IVA"]}</td>
                            <td class="p-none border-none" colspan="4" ><b>Int. Normal (%) Anual:</b></td>
                            <td class="p-none border-none" colspan="4" >${parametros["INT_NORMAL_ANUAL"]}</td>
                        </tr>
                        <tr>
                            <td class="p-none border-none" colspan="4" ><b>Importe:</b> ${parametros["IMPORTE"]}</td>
                            <td class="p-none border-none" colspan="4" ><b>Comisión </b></td>
                            <td class="p-none border-none" colspan="4" >${parametros["COMISIONES"]}</td>
                            <td class="p-none border-none" colspan="4" ><b>Int. Moratorio (%) Anual:</b></td>
                            <td class="p-none border-none" colspan="4" >${parametros["INT_MORATORIO_ANUAL"]}</td>
                        </tr>
                    </table>
                    <table>
                      <tr>
                          <td class="p-none border-none" colspan="1" >
                            <b>Plazo:</b> ${parametros["PLAZOS"]} 
                          </td>
                          <td class="p-none border-none" colspan="8" >
                            <b>Periodo:</b>  ${parametros["PERIODOS"]} 
                          </td>
                          <td class="p-none border-none" colspan="4" ><b>Interes Periodo <br> Inicial:  </b></td>
                          <td class="p-none border-none" colspan="4" >${parametros['INTERES_PERIODO_INICIAL']} </td>
                          <td class="p-none border-none" colspan="4" ><b>Tipo Cobro:</b></td>
                          <td class="p-none border-none" colspan="4" >${parametros["COBROS"]}</td>
                      </tr>
                    </table>
                    <div class="col-max my"></div>
                    <table class="table" >
                        <!--<thead>-->
                            <tr class="border-y" >
                                <td class="border-none py-chico" style="width: 2%;"><b</b></td>
                                <td class="border-none py-chico text-center" style="font-size:8px; width: 7%;"><b>N° Pago</b></td> 
                                <td class="border-none py-chico text-center" style="font-size:8px; width: 9%;"><b>Fecha de Pago</b></td> 
                                <td class="border-none py-chico text-center" style="font-size:8px; width: 13%;"><b>Capital</b></td> 
                                <td class="border-none py-chico text-center" style="font-size:8px; width: 11%;"><b>Interés</b></td> 
                                <td class="border-none py-chico text-center" style="font-size:8px; width: 11%;"><b>IVA</b></td>
                                ${servicios_adicionales != undefined && servicios_adicionales.length > 0?  
                                    `<td class="border-none py-chico text-center" style="font-size:8px; width: 11%"><b>${servicio_adicional}</b></td> 
                                    <td class="border-none py-chico text-center" style=font-size:8px; "width: 10%"><b>IVA</b></td>`
                                : ``}
                                <td class="border-none py-chico text-center" style="font-size:8px; width: 13%;"><b>Total a Pagar</b></td> 
                                <td class="border-none py-chico text-center" style="font-size:8px; width: 13%;"><b>Saldo Insoluto</b></td> 
                            </tr>
                        <!--</thead>-->
                    </table>
                    <table class="table">
                            ${listas_amortizaciones(parametros, (servicios_adicionales != undefined && servicios_adicionales.length > 0))}
                    </table>
                    <table>
                        <tr>
                            <td class="text-right border-none" style="font-size:7px; width: 18%;" >   
                                <b>Total</b>
                            </td>
                            <td class="text-right border-none" style="font-size:7px; width: 13%;" > 
                                <b>${parametros['TOTAL_CAPITAL']} </b>
                            </td>
                            <td class="text-right border-none" style="font-size:7px; width: 11%;"> 
                                <b>${parametros['TOTAL_INTERES']}</b>
                            </td>
                            <td class="text-right border-none" style="font-size:7px; width: 11%;" > 
                                <b>${parametros['TOTAL_IVA']}</b>
                            </td>
                            ${servicios_adicionales != undefined && servicios_adicionales.length > 0 ? 
                                `<td class="text-right border-none" style="font-size:7px; width: 11%;"> 
                                    <b>${parametros['TOTAL_COMISIONES']}</b>
                                </td>
                                <td class="text-right border-none" style="font-size:7px; width: 10%;" > 
                                    <b>${parametros['TOTAL_COMISIONES_IVA']}</b>
                                </td>`
                            : ``}
                            
                            <td class="text-right border-none" style="font-size:7px; width: 13%;"  > 
                                <b>${parametros['TOTAL_TOTALPAGAR']}</b>
                            </td>
                            <td class="text-center border-none" style="width: 13%;"> 
                            </td>
                        </tr>
                    </table>
                <div class="col-max fontsize8" >
                    <div class="col-max" >
                        <span class="text-red" >NOTAS IMPORTANTES</span>
                    </div>
                    <div class="col-max" >
                        <ul>
                            <li>Los intereses calculados con el presente documento sólo son válidos para el pago puntual efectuado en la fecha correspondiente</li>
                            <li>Cualquier atraso en el pago modifica los intereses a pagar y genera intereses moratorios</li>
                        </ul>
                    </div>
                    <div class="col-max" >
                        <span>Acepto que no pagué Comisión por Apertura de cuenta</span>
                        <br>
                        <span>No Pago Aportación Social</span>
                        <br>
                        <span>No Pago Garantía Liquida</span>
                    </div>
                    <div class="col-max" >
                        <span>Recibí a mi entera satisfacción la presente <b>${parametros["NOMBRE_ARCHIVO"]}</b> con fecha <b>${parametros["FECHA_LARGA"]}</b></span>
                    </div>

                    <!--<table>
                        <tr>
                            <td width="10%" class="noborder py-chico">
                                Nombre:    
                            </td>    
                            <td  width="60%" class="noborder py-chico">
                                &nbsp;<hr class="hrBajo ">    
                            </td class="noborder">
                            <td class="noborder">    
                            </td> 
                        </tr>
                        <tr>
                            <td width="10%" class="noborder py-chico">
                                Firma:    
                            </td>    
                            <td  width="60%" class="noborder py-chico" >
                                &nbsp;<hr class="hrBajo ">    
                            </td>  
                            <td class="noborder">    
                            </td> 
                        </tr>
                    </table>-->
                    ${listadoIntegrantes(parametros['NUMERO_INTEGRANTES'])}
                    <div class="col-max" >
                        
                    </div>
                </div>
    </body> 
        `;
};

let totalCapital = 0.0;
let totalInteres = 0.0;
let totalIva = 0.0;
let totalPagar = 0.0;
let totalComision = 0.0;

const listas_amortizaciones = (parametros, tiene_servicios_adicionales) => {
    listaAmortizacion = parametros["listaAmortizacion"];
    let tabla = ``
    if (listaAmortizacion.length > 0) {
        listaAmortizacion.forEach(element => {
            tabla += `
                <tr class="border-y saltodePag" > 
                    <td class="border-none py-chico p-none text-center" style=" width:2%;">
                        <div class="border p-none m-none" style="width:100%; height:1em ">
                        
                        </div>
                    </td> 
                    <td class="border-none text-center py-chico" style="font-size: 7px; width: 7%;" >${element["pagare"]}</td> 
                    <td class="border-none text-center py-chico" style="font-size: 7px; width: 9%;" >${element["fecha_pago"]}</td> 
                    <td class="border-none text-right py-chico" style="font-size: 7px; width: 13%;" >${element["capital"]}</td> 
                    <td class="border-none text-right py-chico" style="font-size: 7px; width: 11%;" >${element["interes"]}</td> 
                    <td class="border-none text-right py-chico" style="font-size: 7px; width: 11%;" >${element["iva"]}</td>
                    ${tiene_servicios_adicionales == true? 
                        `<td class="border-none text-right py-chico" style="font-size: 7px; width: 11%;" >${element["servicio_adicional"]}</td> 
                        <td class="border-none text-right py-chico" style="font-size: 7px; width: 10%;" >${element["servicio_adicional_iva"]}</td>`
                    : ``}
                    <td class="border-none text-right py-chico" style="font-size: 7px; width: 13%;" >${element["total"]}</td> 
                    <td class="border-none text-right py-chico" style="font-size: 7px; width: 13%;" >${element["saldo"]}</td> 
                </tr>
                `
        });
    }

    return tabla;
}

const listadoIntegrantes = (cantidad) => {
    let integrantes = `
            <br>
            <table>
                <tr>
                    <td class="row3 noborder text-center">
                        <b>NOMBRE</b>
                    </td>
                    <td class="noborder" style="width:10%">
                    </td>
                    <td class="noborder text-center" style="width:15%">
                        <b>Firma</b>
                    </td>
                </tr>
            </table>
            <br>
        `;
    if (cantidad != undefined && cantidad > 1) {
        integrantes = `
            <br>
            <table>
                <tr>
                    <td class="row3 noborder text-center">
                        <b>NOMBRE DE LOS INTEGRANTES</b>
                    </td>
                    <td class="noborder" style="width:10%">
                    </td>
                    <td class="noborder text-center" style="width:15%">
                        <b>Firma</b>
                    </td>
                </tr>
            </table>
            <br>
        `;
        for (let index = 0; index < cantidad; index++) {
            integrantes += `
                    <table class="saltodePag">
                        <tr class="">
                            <td class="row3 noborder py-chico">
                                <hr class="hrBajo">
                            </td>  
                            <td class="noborder px-none" style="width:10%">
                            </td>
                            <td class="noborder fontsize8 px-none" valign="bottom" style="width:15%">
                                <hr class="hrBajo">
                            </td>
                        </tr>
                    </table>
            `;
            if (index+1 < cantidad) {
                integrantes += `<br><br>`;
            }
        }
    }else{
        integrantes += `
            <table class="saltodePag">
                <tr class="">
                    <td class="row3 noborder py-chico">
                        <hr class="hrBajo">
                    </td>  
                    <td class="noborder px-none row3" style="width:10%">
                    </td>
                    <td class="noborder saltodePag fontsize8 px-none" valign="bottom" style="width:15%">
                        <hr class="hrBajo">
                    </td>
                </tr>
            </table>
        `;
    }
    return integrantes;
}

const capitalize = (cadena) => {
    cadena = cadena.toLowerCase();
    cadena = cadena.replace(/\w\S*/g, (w) => (w.replace(/^\w/, (c) => c.toUpperCase()))); 
    return cadena;
}

const validaNombreServicioAdicional = (servicios_adicionales) => {
    let servicio_adicional = 'Servicios Adicionales';
    if (servicios_adicionales != undefined) {
        if (typeof servicios_adicionales == 'string') {
            array_servicios = servicios_adicionales.split(",");
            if (array_servicios.length == 1 && array_servicios[0] != '') {
                servicio_adicional = capitalize(array_servicios[0]);   
                console.log(servicio_adicional);
            }
            if (array_servicios.length > 1) {
                servicio_adicional = 'Servicios Adicionales';
            }         
        }else{
            if (servicios_adicionales.length == 1 && servicios_adicionales[0] != '') {
                servicio_adicional = capitalize(servicios_adicionales[0]);   
            }
            if (servicios_adicionales.length > 1) {
                servicio_adicional = 'Servicios Adicionales';
            }
        }        
    }
    return servicio_adicional;
}

module.exports = {
    pagare,
    validaciones,
    pages_border,
};