diff --git a/app/Http/Controllers/Api/SubpedidoController.php b/app/Http/Controllers/Api/SubpedidoController.php index 1d375cf..7f57cab 100644 --- a/app/Http/Controllers/Api/SubpedidoController.php +++ b/app/Http/Controllers/Api/SubpedidoController.php @@ -79,7 +79,7 @@ class SubpedidoController extends Controller $valid = request()->validate([ 'cantidad' => 'required|min:0', - 'notas' => 'required', + 'notas' => 'nullable', 'producto_id' => [ 'required', Rule::in(Producto::all()->pluck('id')), @@ -87,7 +87,11 @@ class SubpedidoController extends Controller ]); $producto = Producto::find($valid['producto_id']); - $subpedido->syncProducto($producto, $valid['cantidad'], $valid['notas']); + $notas = $valid['notas']; + if ($notas == null) { + $notas = ""; + } + $subpedido->syncProducto($producto, $valid['cantidad'], $notas); return new SubpedidoResource($subpedido); } diff --git a/database/migrations/2024_09_17_234635_notas_producto.php b/database/migrations/2024_09_17_234635_notas_producto.php index 56b6ff4..898db8d 100644 --- a/database/migrations/2024_09_17_234635_notas_producto.php +++ b/database/migrations/2024_09_17_234635_notas_producto.php @@ -14,7 +14,7 @@ class NotasProducto extends Migration public function up() { Schema::table('producto_subpedido', function (Blueprint $table) { - $table->string('notas'); + $table->string('notas')->nullable(); }); } diff --git a/resources/js/components/Producto/ProductoCantidad.vue b/resources/js/components/Producto/ProductoCantidad.vue index 93ec5cd..e141e12 100644 --- a/resources/js/components/Producto/ProductoCantidad.vue +++ b/resources/js/components/Producto/ProductoCantidad.vue @@ -23,6 +23,11 @@ +
+ + +
+ @@ -33,21 +38,23 @@ }, data() { return { - cantidad: this.producto.cantidad, - enChismosa: this.producto.cantidad, + cantidad: this.cantidadEnChismosa(), + notas: this.notasEnChismosa(), } }, mounted() { - if (this.producto.pivot !== undefined) { - this.cantidad = this.producto.pivot.cantidad; - this.enChismosa = this.cantidad; - } - Event.$on('sync-subpedido', (cantidad,productoId) => { - if (this.producto.id === productoId) - this.sincronizar(cantidad); + Event.$on('sync-subpedido', (cantidad, productoId, notas) => { + if (this.producto.id === productoId) + this.sincronizar(cantidad, notas); }); }, methods: { + notasEnChismosa() { + return this.producto.pivot !== undefined ? this.producto.pivot.notas : ""; + }, + cantidadEnChismosa() { + return this.producto.pivot !== undefined ? this.producto.pivot.cantidad : 0; + }, decrementar() { this.cantidad -= 1; }, @@ -55,26 +62,26 @@ this.cantidad += 1; }, confirmar() { - Event.$emit('sync-subpedido', this.cantidad, this.producto.id); + console.log("Emit sync " + this.cantidad + " " + this.notas); + Event.$emit('sync-subpedido', this.cantidad, this.producto.id, this.notas); }, borrar() { this.cantidad = 0; this.confirmar(); }, - sincronizar(cantidad) { + sincronizar(cantidad, notas) { + this.notas = notas; this.cantidad = cantidad; - if (this.producto.pivot != null) { + if (this.producto.pivot !== undefined) { this.producto.pivot.cantidad = cantidad; - } else { - this.producto.cantidad = cantidad; + this.producto.pivot.notas = notas; } - this.enChismosa = cantidad; }, hayCambios() { - return this.cantidad != this.enChismosa; + return this.cantidad != this.cantidadEnChismosa() || this.notas != this.notasEnChismosa(); }, puedeBorrar() { - return this.enChismosa > 0; + return this.cantidadEnChismosa() > 0; }, } } diff --git a/resources/js/components/ProductosContainer.vue b/resources/js/components/ProductosContainer.vue index 3f34f15..5c32f51 100644 --- a/resources/js/components/ProductosContainer.vue +++ b/resources/js/components/ProductosContainer.vue @@ -38,8 +38,9 @@ export default { }).then(response => { this.productos = response.data.data; this.productos.forEach(p => { - p.cantidad = this.$root.cantidad(p); - p.notas = this.$root.notas(p); + p.pivot = {}; + p.pivot.cantidad = this.$root.cantidad(p); + p.pivot.notas = this.$root.notas(p); }); }); this.visible = true;