import axios from "axios"; const state = { lastFetch: null, pedido_id: null, nombre: null, productos: null, aprobado: null, total: null, total_transporte: null, cantidad_transporte: null, total_sin_devoluciones: null, devoluciones_total: null, devoluciones_notas: null, }; const mutations = { setState(state, pedido) { state.lastFetch = new Date(); state.pedido_id = pedido.id; state.nombre = pedido.nombre; state.productos = pedido.productos; state.aprobado = pedido.aprobado; state.total = pedido.total; state.total_transporte = pedido.total_transporte; state.cantidad_transporte = pedido.cantidad_transporte; state.total_sin_devoluciones = pedido.total_sin_devoluciones; state.devoluciones_total = pedido.devoluciones_total; state.devoluciones_notas = pedido.devoluciones_notas; }, }; const actions = { async guardarSesion(_, { pedido_id }) { await axios.post("/subpedidos/sesion", { id: pedido_id }); }, async getSesion({ commit }) { const sesion = await axios.get("/subpedidos/sesion"); if (sesion.data) { const response = await axios.get(`/api/subpedidos/${sesion.data}`); commit('setState', response.data.data); } }, async crearPedido({ commit, dispatch }, { nombre, grupo_de_compra_id }) { const response = await axios.post("/api/subpedidos", { nombre: nombre, grupo_de_compra_id: grupo_de_compra_id }); dispatch("guardarSesion", { pedido_id: response.data.data.id}); commit('setState', response.data.data); }, async elegirPedido({ commit, dispatch }, { pedido }) { const response = await axios.get(`/api/subpedidos/${pedido.id}`); dispatch("guardarSesion", { pedido_id: response.data.data.id}) commit('setState', response.data.data); }, async modificarChismosa({ commit, dispatch }, { producto_id, cantidad, notas }) { try { const response = await axios.post("/api/subpedidos/" + state.pedido_id + "/sync", { cantidad: cantidad, producto_id: producto_id, notas: notas, }); commit('setState', response.data.data); dispatch("ui/toast", { mensaje: 'Pedido modificado con éxito' }, { root: true }); } catch (error) { dispatch("ui/error", { error: error }, { root: true }); } }, async modificarDevoluciones({ commit, dispatch }, { monto, notas }) { try { const response = await axios.post("api/subpedidos/" + state.pedido_id + "/sync_devoluciones", { total: monto, notas: notas, }); commit('setState', response.data.data); dispatch("ui/toast", { mensaje: 'Devoluciones modificadas con éxito' }, { root: true }); } catch (error) { dispatch("ui/error", { error: error }, { root: true }); } }, }; const getters = { pedidoDefinido() { return state.lastFetch !== null; }, enChismosa() { return ((producto_id) => state.productos.some(p => p.id === producto_id)); }, cantidad() { return ((producto_id) => state.productos.find(p => p.id === producto_id)?.pivot.cantidad ?? 0); }, notas() { return ((producto_id) => state.productos.find(p => p.id === producto_id)?.pivot.notas ?? ""); } } export default { namespaced: true, state, mutations, actions, getters, };