CALCULAR CANTIDAD DE PEDIDOS DESPACHADOS

mail@pastecode.io avatar
unknown
javascript
21 days ago
8.3 kB
2
Indexable
Never
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(', '));
}



Leave a Comment