CALCULAR CANTIDAD DE PEDIDOS DESPACHADOS
unknown
javascript
a year ago
8.3 kB
5
Indexable
function calcularCantidadPedidosDespachados() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var hojaDestino = ss.getSheetByName('DESTINO'); var hojaPrevias = ss.getSheetByName('TEST COMISIONES'); // Solicitar rango de fechas de despacho al usuario 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):'); // Verificar si el usuario canceló el diálogo if (responseFechaInicio.getSelectedButton() == ui.Button.CLOSE || responseFechaFin.getSelectedButton() == ui.Button.CLOSE) { return; } var fechaInicioIngresada = responseFechaInicio.getResponseText(); var fechaFinIngresada = responseFechaFin.getResponseText(); // Solicitar nombre de la asesora al usuario var responseNombreAsesora = ui.prompt('Ingrese el nombre de la asesora:'); var nombreAsesoraIngresado = responseNombreAsesora.getResponseText(); // Convertir las fechas ingresadas a objetos de fecha var fechaInicio = new Date(fechaInicioIngresada.split('/').reverse().join('/')); var fechaFin = new Date(fechaFinIngresada.split('/').reverse().join('/')); // Obtener los datos de la hoja Destino var datosDestino = hojaDestino.getDataRange().getDisplayValues(); // Variables para contar los pedidos var cantidadPedidosDespachados = 0; var cantidadDePedidosContraEntregaDespachados = 0; var cantidadDePedidosContraEntregaDespachadosEntregados = 0; var cantidadDePedidosAgenciaDespachados = 0; var cantidadDePedidosAgenciaDespachadosEntregados = 0; // Variables para contar las comisiones var comisionPedidosContraEntregaEntregados = 0; var comisionPedidosAgenciaDespachados = 0; var comisionPedidosAgenciaEntregados = 0; // Crear un array para almacenar las fechas de despacho de las filas analizadas var fechasDespachoAnalizadas = []; // Filtrar los pedidos según el rango de fechas de despacho, el nombre de la asesora, la fecha de entrega y el estado del pedido for (var i = 1; i < datosDestino.length; i++) { // Empezamos desde 1 para omitir la fila de encabezados var fila = datosDestino[i]; var fechaDespachoTexto = fila[16]; // Columna Q var nombreAsesora = fila[12]; // Columna M var fechaEntregaTexto = fila[17]; // Columna R var estadoPedido = fila[13]; // Columna N // Convertir la fecha de despacho a objeto de fecha var fechaDespacho = new Date(fechaDespachoTexto.split('/').reverse().join('/')); // Añadir la fecha de despacho al array fechasDespachoAnalizadas.push(fechaDespachoTexto); // Contar si la fecha de despacho está dentro del rango y el nombre de la asesora coincide if (fechaDespacho >= fechaInicio && fechaDespacho <= fechaFin && nombreAsesora === nombreAsesoraIngresado) { // Contar si el pedido tiene uno de los estados especificados if (estadoPedido === '[CONTRA ENTREGA] - PEDIDO ENTREGADO' || estadoPedido === '[CONTRA ENTREGA] - CONFIRMADO' || estadoPedido === '[AGENCIA] 25% - CONFIRMADO (ADELANTO RECIBIDO)' || estadoPedido === '[AGENCIA] 50% - CONFIRMADO PENDIENTE (FALTA DEPOSITAR EL RESTANTE)' || estadoPedido === '[AGENCIA] 100% - PEDIDO ENTREGADO (MONTO RESTANTE RECIBIDO)') { cantidadPedidosDespachados++; } // Contar si el pedido es contra entrega y tiene uno de los estados especificados if (estadoPedido === '[CONTRA ENTREGA] - PEDIDO ENTREGADO' || estadoPedido === '[CONTRA ENTREGA] - CONFIRMADO') { cantidadDePedidosContraEntregaDespachados++; if (fechaEntregaTexto.trim() === fechaDespachoTexto.trim() && estadoPedido === '[CONTRA ENTREGA] - PEDIDO ENTREGADO') { cantidadDePedidosContraEntregaDespachadosEntregados++; comisionPedidosContraEntregaEntregados++; // Comision por pedidos contra entrega entregados } } // Contar si el pedido es de agencia y tiene uno de los estados especificados 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++; // Comision por pedidos agencia despachados } // Contar si el pedido de agencia fue entregado if (estadoPedido === '[AGENCIA] 100% - PEDIDO ENTREGADO (MONTO RESTANTE RECIBIDO)') { if (fechaEntregaTexto.trim() === fechaDespachoTexto.trim()) { cantidadDePedidosAgenciaDespachadosEntregados++; comisionPedidosAgenciaEntregados += 3; // Comision por pedidos agencia entregados } } } } // Calcular la efectividad de entrega para contra entrega y agencia var efectividadDeEntregaContraEntrega = (cantidadDePedidosContraEntregaDespachados > 0) ? (cantidadDePedidosContraEntregaDespachadosEntregados / cantidadDePedidosContraEntregaDespachados) * 100 : 0; var efectividadDeEntregaAgencia = (cantidadDePedidosAgenciaDespachados > 0) ? (cantidadDePedidosAgenciaDespachadosEntregados / cantidadDePedidosAgenciaDespachados) * 100 : 0; // Calcular el monto total de comisiones var montoTotalDeComisiones = comisionPedidosContraEntregaEntregados + comisionPedidosAgenciaDespachados + comisionPedidosAgenciaEntregados; // Encontrar la última fila ocupada en la hoja PREVIAS var ultimaFila = hojaPrevias.getLastRow(); // Si la hoja está vacía (solo encabezados), añadir los encabezados 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++; } // Escribir los resultados en la hoja PREVIAS hojaPrevias.appendRow([ fechaInicioIngresada + ' al ' + fechaFinIngresada, nombreAsesoraIngresado, cantidadPedidosDespachados, cantidadDePedidosContraEntregaDespachados, cantidadDePedidosContraEntregaDespachadosEntregados, efectividadDeEntregaContraEntrega.toFixed(2) + '%', cantidadDePedidosAgenciaDespachados, cantidadDePedidosAgenciaDespachadosEntregados, efectividadDeEntregaAgencia.toFixed(2) + '%', comisionPedidosContraEntregaEntregados, comisionPedidosAgenciaDespachados, comisionPedidosAgenciaEntregados, montoTotalDeComisiones ]); // Imprimir el resumen en la consola 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(', ')); }
Editor is loading...
Leave a Comment