AVANCE GANANCIAS

mail@pastecode.io avatar
unknown
javascript
20 days ago
3.7 kB
0
Indexable
Never
function calcularGananciaNetaDiaria() {
    try {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var hojaDestino = ss.getSheetByName('DESTINO');
        var hojaResultados = ss.getSheetByName('GANANCIAS');

        var ui = SpreadsheetApp.getUi();
        var responseFecha = ui.prompt('Ingrese la fecha para calcular la ganancia neta (formato: DD/MM/YYYY):');
        var responseCostoPublicidad = ui.prompt('Ingrese el costo de publicidad para esa fecha:');
        var responseCostoServicioCourier = ui.prompt('Ingrese el costo del servicio de courier para esa fecha:');
        var responseCostoProductos = ui.prompt('Ingrese el costo total de los productos vendidos para esa fecha:');

        if (responseFecha.getSelectedButton() == ui.Button.CLOSE || 
            responseCostoPublicidad.getSelectedButton() == ui.Button.CLOSE || 
            responseCostoServicioCourier.getSelectedButton() == ui.Button.CLOSE || 
            responseCostoProductos.getSelectedButton() == ui.Button.CLOSE) {
            return;
        }

        var fechaIngresada = responseFecha.getResponseText();
        var costoPublicidad = parseFloat(responseCostoPublicidad.getResponseText());
        var costoServicioCourier = parseFloat(responseCostoServicioCourier.getResponseText());
        var costoProductos = parseFloat(responseCostoProductos.getResponseText());

        var fechaObjetivo = new Date(fechaIngresada.split('/').reverse().join('/'));
        var datosDestino = hojaDestino.getDataRange().getDisplayValues();

        var totalIngresos = 0;
        var totalComisiones = 0;
        var comisionPorPedido = 1.0; // Ejemplo de comisión por pedido, modificar según sea necesario

        for (var i = 1; i < datosDestino.length; i++) {
            var fila = datosDestino[i];
            var fechaEntregaTexto = fila[17];
            var montoPedido = parseFloat(fila[11]);
            var estadoPedido = fila[13];

            var fechaEntrega = new Date(fechaEntregaTexto.split('/').reverse().join('/'));

            if (fechaEntrega.getTime() === fechaObjetivo.getTime() && 
                (estadoPedido === '[CONTRA ENTREGA] - PEDIDO ENTREGADO' || estadoPedido === '[AGENCIA] 100% - PEDIDO ENTREGADO (MONTO RESTANTE RECIBIDO)')) {
                totalIngresos += montoPedido;
                totalComisiones += comisionPorPedido;
            }
        }

        var gananciaNeta = totalIngresos - (costoPublicidad + costoServicioCourier + costoProductos + totalComisiones);

        var ultimaFila = hojaResultados.getLastRow();
        if (ultimaFila === 0) {
            hojaResultados.appendRow([
                'Fecha', 'Ingresos Totales', 'Gastos de Publicidad', 'Costo del Servicio de Courier', 
                'Costos de Productos', 'Comisiones', 'Ganancia Neta'
            ]);
            ultimaFila++;
        }

        hojaResultados.appendRow([
            fechaIngresada, totalIngresos.toFixed(2), costoPublicidad.toFixed(2), costoServicioCourier.toFixed(2),
            costoProductos.toFixed(2), totalComisiones.toFixed(2), gananciaNeta.toFixed(2)
        ]);

        console.log('Fecha ingresada: ' + fechaIngresada);
        console.log('Ingresos totales: ' + totalIngresos.toFixed(2));
        console.log('Costo de publicidad: ' + costoPublicidad.toFixed(2));
        console.log('Costo del servicio de courier: ' + costoServicioCourier.toFixed(2));
        console.log('Costos de productos: ' + costoProductos.toFixed(2));
        console.log('Comisiones: ' + totalComisiones.toFixed(2));
        console.log('Ganancia neta: ' + gananciaNeta.toFixed(2));

    } catch (e) {
        console.error('Error al ejecutar el script: ' + e.message);
    }
}
Leave a Comment