CALCULAR EFECTIVIDAD ENTREGA Y COMISIONES

mail@pastecode.io avatar
unknown
javascript
23 days ago
7.7 kB
2
Indexable
Never
function calcularCantidadPedidosDespachados() {
    try {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var hojaDestino = ss.getSheetByName('DESTINO');
        var hojaPrevias = ss.getSheetByName('TEST COMISIONES');

        var ui = SpreadsheetApp.getUi();
        var responseFechaInicio = ui.prompt('Ingrese la fecha de inicio del rango (formato: DD/MM/YYYY):');
        var responseFechaFin = ui.prompt('Ingrese la fecha de fin del rango (formato: DD/MM/YYYY):');

        if (responseFechaInicio.getSelectedButton() == ui.Button.CLOSE || responseFechaFin.getSelectedButton() == ui.Button.CLOSE) {
            return;
        }

        var fechaInicioIngresada = responseFechaInicio.getResponseText();
        var fechaFinIngresada = responseFechaFin.getResponseText();
        var responseNombreAsesora = ui.prompt('Ingrese el nombre de la asesora:');
        var nombreAsesoraIngresado = responseNombreAsesora.getResponseText();

        var fechaInicio = new Date(fechaInicioIngresada.split('/').reverse().join('/'));
        var fechaFin = new Date(fechaFinIngresada.split('/').reverse().join('/'));

        if (fechaInicio > fechaFin) {
            ui.alert('La fecha de inicio no puede ser posterior a la fecha de fin.');
            return;
        }

        var datosDestino = hojaDestino.getDataRange().getDisplayValues();

        var cantidadPedidosDespachados = 0;
        var cantidadDePedidosContraEntregaDespachados = 0;
        var cantidadDePedidosContraEntregaDespachadosEntregados = 0;
        var cantidadDePedidosAgenciaDespachados = 0;
        var cantidadDePedidosAgenciaDespachadosEntregados = 0;

        var comisionPedidosContraEntregaEntregados = 0;
        var comisionPedidosAgenciaDespachados = 0;
        var comisionPedidosAgenciaEntregados = 0;

        var fechasDespachoAnalizadas = [];

        for (var i = 1; i < datosDestino.length; i++) {
            var fila = datosDestino[i];
            var fechaDespachoTexto = fila[16];
            var nombreAsesora = fila[12];
            var fechaEntregaTexto = fila[17];
            var estadoPedido = fila[13];

            var fechaDespacho = new Date(fechaDespachoTexto.split('/').reverse().join('/'));
            fechasDespachoAnalizadas.push(fechaDespachoTexto);

            if (fechaDespacho >= fechaInicio && fechaDespacho <= fechaFin && nombreAsesora === nombreAsesoraIngresado) {
                if (
                    estadoPedido === '[AGENCIA] 25% - CONFIRMADO (ADELANTO RECIBIDO)' ||
                    estadoPedido === '[AGENCIA] 50% - CONFIRMADO PENDIENTE (FALTA DEPOSITAR EL RESTANTE)' ||
                    estadoPedido === '[AGENCIA] 100% - PEDIDO ENTREGADO (MONTO RESTANTE RECIBIDO)' ||
                    estadoPedido === '[CONTRA ENTREGA] - CONFIRMADO' ||
                    estadoPedido === '[CONTRA ENTREGA] - PEDIDO ENTREGADO'
                ) {
                    cantidadPedidosDespachados++;
                }
                if (estadoPedido.includes('[CONTRA ENTREGA]')) {
                    cantidadDePedidosContraEntregaDespachados++;
                    if (fechaEntregaTexto.trim() === fechaDespachoTexto.trim() && estadoPedido === '[CONTRA ENTREGA] - PEDIDO ENTREGADO') {
                        cantidadDePedidosContraEntregaDespachadosEntregados++;
                        comisionPedidosContraEntregaEntregados++;
                    }
                }
                if ( 
                    estadoPedido === '[AGENCIA] 25% - CONFIRMADO (ADELANTO RECIBIDO)' ||
                    estadoPedido === '[AGENCIA] 50% - CONFIRMADO PENDIENTE (FALTA DEPOSITAR EL RESTANTE)' ||
                    estadoPedido === '[AGENCIA] 100% - PEDIDO ENTREGADO (MONTO RESTANTE RECIBIDO)'
                ) {
                    cantidadDePedidosAgenciaDespachados++;
                    comisionPedidosAgenciaDespachados++;
                }
                if (estadoPedido === '[AGENCIA] 100% - PEDIDO ENTREGADO (MONTO RESTANTE RECIBIDO)') {
                    cantidadDePedidosAgenciaDespachadosEntregados++;
                    comisionPedidosAgenciaEntregados += 3;
                }
            }
        }

        var efectividadDeEntregaContraEntrega = (cantidadDePedidosContraEntregaDespachados > 0)
            ? (cantidadDePedidosContraEntregaDespachadosEntregados / cantidadDePedidosContraEntregaDespachados) * 100 : 0;
        var efectividadDeEntregaAgencia = (cantidadDePedidosAgenciaDespachados > 0)
            ? (cantidadDePedidosAgenciaDespachadosEntregados / cantidadDePedidosAgenciaDespachados) * 100 : 0;

        var montoTotalDeComisiones = comisionPedidosContraEntregaEntregados + comisionPedidosAgenciaDespachados + comisionPedidosAgenciaEntregados;

        var ultimaFila = hojaPrevias.getLastRow();

        if (ultimaFila === 0) {
            hojaPrevias.appendRow([
                'Fecha de Despacho', 'Nombre de Asesora', 'Cantidad de pedidos despachados',
                'Cantidad de Pedidos Contra Entrega Despachados', 'Cantidad de Pedidos Contra Entrega Despachados Entregados',
                'Efectividad de Entrega Contra Entrega', 'Cantidad de Pedidos Agencia Despachados',
                'Cantidad de Pedidos Agencia Despachados Entregados', 'Efectividad de Entrega Agencia',
                'Comision por Pedidos Contra Entrega Entregados', 'Comision por Pedidos Agencia Despachados', 'Comision por Pedidos Agencia Entregados',
                'Monto Total de Comisiones'
            ]);
            ultimaFila++;
        }

        hojaPrevias.appendRow([
            fechaInicioIngresada + ' al ' + fechaFinIngresada, nombreAsesoraIngresado, cantidadPedidosDespachados,
            cantidadDePedidosContraEntregaDespachados, cantidadDePedidosContraEntregaDespachadosEntregados,
            efectividadDeEntregaContraEntrega.toFixed(2) + '%', cantidadDePedidosAgenciaDespachados,
            cantidadDePedidosAgenciaDespachadosEntregados, efectividadDeEntregaAgencia.toFixed(2) + '%',
            comisionPedidosContraEntregaEntregados, comisionPedidosAgenciaDespachados, comisionPedidosAgenciaEntregados,
            montoTotalDeComisiones
        ]);

        console.log('Fecha de inicio ingresada: ' + fechaInicioIngresada);
        console.log('Fecha de fin ingresada: ' + fechaFinIngresada);
        console.log('Nombre de la asesora ingresado: ' + nombreAsesoraIngresado);
        console.log('Cantidad de pedidos despachados: ' + cantidadPedidosDespachados);
        console.log('Cantidad de pedidos contra entrega despachados: ' + cantidadDePedidosContraEntregaDespachados);
        console.log('Cantidad de pedidos contra entrega despachados entregados: ' + cantidadDePedidosContraEntregaDespachadosEntregados);
        console.log('Efectividad de entrega contra entrega: ' + efectividadDeEntregaContraEntrega.toFixed(2) + '%');
        console.log('Cantidad de pedidos agencia despachados: ' + cantidadDePedidosAgenciaDespachados);
        console.log('Cantidad de pedidos agencia despachados entregados: ' + cantidadDePedidosAgenciaDespachadosEntregados);
        console.log('Efectividad de entrega agencia: ' + efectividadDeEntregaAgencia.toFixed(2) + '%');
        console.log('Comision por pedidos contra entrega entregados: ' + comisionPedidosContraEntregaEntregados);
        console.log('Comision por pedidos agencia despachados: ' + comisionPedidosAgenciaDespachados);
        console.log('Comision por pedidos agencia entregados: ' + comisionPedidosAgenciaEntregados);
        console.log('Monto total de comisiones: ' + montoTotalDeComisiones);
        console.log('Fechas de despacho analizadas: ' + fechasDespachoAnalizadas.join(', '));
    } catch (e) {
        console.error('Error al ejecutar el script: ' + e.message);
    }
}
Leave a Comment