import { create } from "zustand";
import { getFacturaDetalles } from "../api/facturas.service";

function calcularTotal(items) {
  return items.reduce(
    (total, item) =>
      total +
      (item.precio_venta || item.precio_unitario || 0) * (item.cantidad || 1),
    0,
  );
}

export const useDetalleVentasStore = create((set) => ({
  datadetalleventa: [],
  parametros: {},
  total: 0,

  mostrardetalleventa: async (p) => {
    const id = p?.id_venta || p?.factura_id;
    if (!id || id === 0 || id === "undefined") {
      set({ datadetalleventa: [] });
      set({ total: 0 });
      return [];
    }
    try {
      const response = await getFacturaDetalles(id);
      const data = response?.data || response || [];
      set({ datadetalleventa: data });
      set({ total: calcularTotal(data) });
      return data;
    } catch (error) {
      console.error("Error al obtener detalle de venta:", error);
      set({ datadetalleventa: [] });
      set({ total: 0 });
      return [];
    }
  },

  insertarDetalleVentas: async (p) => {
    // TODO: Implementar cuando se migre completamente el flujo de ventas
    console.log("insertarDetalleVentas - pendiente de migración", p);
  },

  eliminardetalleventa: async (p) => {
    // TODO: Implementar cuando se migre completamente el flujo de ventas
    console.log("eliminardetalleventa - pendiente de migración", p);
  },

  mostrartop5productosmasvendidosxcantidad: async (p) => {
    // TODO: Implementar endpoint en backend para reportes
    console.log("mostrartop5productosmasvendidosxcantidad - pendiente", p);
    return [];
  },

  mostrartop10productosmasvendidosxmonto: async (p) => {
    // TODO: Implementar endpoint en backend para reportes
    console.log("mostrartop10productosmasvendidosxmonto - pendiente", p);
    return [];
  },

  editarCantidadDetalleVenta: async (p) => {
    // TODO: Implementar cuando se migre completamente el flujo de ventas
    console.log("editarCantidadDetalleVenta - pendiente de migración", p);
  },
}));
