diff --git a/resources/js/store/comunes.ts b/resources/js/store/comunes.ts new file mode 100644 index 0000000..88b7f0d --- /dev/null +++ b/resources/js/store/comunes.ts @@ -0,0 +1,53 @@ +export interface ProductoResponse { + id: number, + fila: number, + nombre: string, + precio: number, + categoria: string, + bono: boolean, + created_at: Date, + updated_at: Date, + requiere_notas: boolean, + es_solidario: boolean, + pivot: { + subpedido_id: number, + producto_id: number, + notas: string, + cantidad: number, + total: number, + } +} + +export interface Producto { + id: number, + fila: number, + nombre: string, + precio: number, + categoria: string, + bono: boolean, + created_at: Date, + updated_at: Date, + requiere_notas: boolean, + es_solidario: boolean, + notas: string, + cantidad: number, + total: number, +} + +export function aplanarProducto(producto: ProductoResponse): Producto { + return { + id: producto.id, + fila: producto.fila, + nombre: producto.nombre, + precio: producto.precio, + categoria: producto.categoria, + bono: producto.bono, + created_at: producto.created_at, + updated_at: producto.updated_at, + requiere_notas: producto.requiere_notas, + es_solidario: producto.es_solidario, + notas: producto.pivot.notas, + cantidad: producto.pivot.cantidad, + total: producto.pivot.total, + }; +} diff --git a/resources/js/store/modules/admin/index.ts b/resources/js/store/modules/admin/index.ts index 1e2b28a..7e91dce 100644 --- a/resources/js/store/modules/admin/index.ts +++ b/resources/js/store/modules/admin/index.ts @@ -1,5 +1,6 @@ import axios from "axios"; import { AdminState } from "./types"; +import { aplanarProducto } from "../../comunes"; const state: AdminState = { lastFetch: undefined, @@ -20,11 +21,16 @@ const state: AdminState = { const mutations = { setState(state: AdminState, { grupo_de_compra }) { + const aplanarProductos = (pedido) => { + pedido.productos = pedido.productos.map(p => aplanarProducto(p)); + return pedido; + }; + state.lastFetch = new Date(); state.grupo_de_compra_id = grupo_de_compra.id; state.nombre = grupo_de_compra.nombre; state.devoluciones_habilitadas = grupo_de_compra.devoluciones_habilitadas; - state.pedidos = grupo_de_compra.pedidos; + state.pedidos = grupo_de_compra.pedidos.map(p => aplanarProductos(p)); state.total_a_recaudar = grupo_de_compra.total_a_recaudar; state.total_sin_devoluciones = grupo_de_compra.total_sin_devoluciones; state.total_barrial = grupo_de_compra.total_barrial; diff --git a/resources/js/store/modules/admin/types.ts b/resources/js/store/modules/admin/types.ts index 5e9ef75..6e38ad7 100644 --- a/resources/js/store/modules/admin/types.ts +++ b/resources/js/store/modules/admin/types.ts @@ -1,3 +1,5 @@ +import { Producto } from "../../comunes"; + export interface AdminState extends Barrio { lastFetch?: Date } @@ -29,19 +31,3 @@ export interface Pedido { devoluciones_total: number, devoluciones_notas: string } - -export interface Producto { - id: number, - fila: number, - nombre: string, - precio: number, - categoria: string, - bono: boolean, - created_at: Date, - updated_at: Date, - requiere_notas: boolean, - es_solidario: boolean, - notas: string, - cantidad: number, - total: number, -} diff --git a/resources/js/store/modules/pedido/index.ts b/resources/js/store/modules/pedido/index.ts index 5251aee..81abb9f 100644 --- a/resources/js/store/modules/pedido/index.ts +++ b/resources/js/store/modules/pedido/index.ts @@ -1,5 +1,6 @@ import axios from "axios"; import { PedidoState } from "./types"; +import { aplanarProducto } from "../../comunes"; const state: PedidoState = { lastFetch: undefined, @@ -24,7 +25,7 @@ const mutations = { state.lastFetch = new Date(); state.pedido_id = pedido.id; state.nombre = pedido.nombre; - state.productos = pedido.productos; + state.productos = pedido.productos.map(p => aplanarProducto(p)); state.aprobado = pedido.aprobado; state.total = pedido.total; state.total_transporte = pedido.total_transporte; diff --git a/resources/js/store/modules/pedido/types.ts b/resources/js/store/modules/pedido/types.ts index e2195e1..85b4691 100644 --- a/resources/js/store/modules/pedido/types.ts +++ b/resources/js/store/modules/pedido/types.ts @@ -1,3 +1,5 @@ +import { Producto } from "../../comunes"; + export interface PedidoState { lastFetch?: Date, grupo_de_compra?: Barrio, @@ -18,19 +20,3 @@ export interface Barrio { nombre: string, devoluciones_habilitadas: boolean, } - -export interface Producto { - id: number, - fila: number, - nombre: string, - precio: number, - categoria: string, - bono: boolean, - created_at: Date, - updated_at: Date, - requiere_notas: boolean, - es_solidario: boolean, - cantidad: number, - total: number, - notas: string, -}