CALCULAR CANTIDAD DE PEDIDOS DESPACHADOS
unknown
javascript
a year ago
8.3 kB
9
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