# app/queries/facturacion_queries.py

def obtener_facturacion_por_ano(db):
    try:
        cursor = db.cursor()
        query = """
            SELECT sum(total_cuenta) AS sum,
                   to_char(f.fecha_ingreso_cuentas::date, 'YYYY-MM') AS fecha
            FROM factura_envio AS f
            WHERE ingreso NOT IN (
                SELECT ingreso
                FROM factura_envio
                GROUP BY ingreso
                HAVING COUNT(*) > 1
            )
            AND fecha_ingreso_cuentas >= '2024-10-01'
            AND fecha_ingreso_cuentas <= '2025-07-31'
            AND NOT (f.estado = '3' OR f.estado = '2')
            GROUP BY fecha
            ORDER BY fecha ASC
        """
        cursor.execute(query)
        result = cursor.fetchall()

        # Formatear los resultados en una lista de diccionarios
        facturacion_data = [{"fecha": row[1], "sum": row[0]} for row in result]
        return facturacion_data
    except Exception as e:
        print(f"Error al obtener facturación por año: {e}")
        raise
    finally:
        cursor.close()
   
      