Compare commits
No commits in common. "82f58620635eb2e0971ce19746d736308d96cb42" and "b4ca119f9a87448d7f6ebaaddf0c7cfda122654f" have entirely different histories.
82f5862063
...
b4ca119f9a
|
@ -79,7 +79,6 @@ class SubpedidoController extends Controller
|
||||||
|
|
||||||
$valid = request()->validate([
|
$valid = request()->validate([
|
||||||
'cantidad' => 'required|min:0',
|
'cantidad' => 'required|min:0',
|
||||||
'notas' => 'required',
|
|
||||||
'producto_id' => [
|
'producto_id' => [
|
||||||
'required',
|
'required',
|
||||||
Rule::in(Producto::all()->pluck('id')),
|
Rule::in(Producto::all()->pluck('id')),
|
||||||
|
@ -87,7 +86,7 @@ class SubpedidoController extends Controller
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$producto = Producto::find($valid['producto_id']);
|
$producto = Producto::find($valid['producto_id']);
|
||||||
$subpedido->syncProducto($producto, $valid['cantidad'], $valid['notas']);
|
$subpedido->syncProducto($producto, $valid['cantidad']);
|
||||||
return new SubpedidoResource($subpedido);
|
return new SubpedidoResource($subpedido);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ class Producto extends Model
|
||||||
|
|
||||||
public function subpedidos()
|
public function subpedidos()
|
||||||
{
|
{
|
||||||
return $this->belongsToMany('App\Subpedido','productos_subpedidos')->withPivot(["cantidad", "notas"]);
|
return $this->belongsToMany('App\Subpedido','productos_subpedidos')->withPivot(["cantidad"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function proveedor()
|
public function proveedor()
|
||||||
|
|
|
@ -15,7 +15,7 @@ class Subpedido extends Model
|
||||||
|
|
||||||
public function productos()
|
public function productos()
|
||||||
{
|
{
|
||||||
return $this->belongsToMany('App\Producto')->withPivot(["cantidad","total", "notas"]);
|
return $this->belongsToMany('App\Producto')->withPivot(["cantidad","total"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Bonos del MPS, Sororo, etc. NO devuelve bonos de transporte
|
//Bonos del MPS, Sororo, etc. NO devuelve bonos de transporte
|
||||||
|
@ -84,14 +84,13 @@ class Subpedido extends Model
|
||||||
}
|
}
|
||||||
|
|
||||||
//Actualiza el pedido, agregando o quitando del subpedido según sea necesario. Debe ser llamado desde el controlador de subpedidos, luego de validar que los parámetros $producto y $cantidad son correctos. También calcula el subtotal por producto.
|
//Actualiza el pedido, agregando o quitando del subpedido según sea necesario. Debe ser llamado desde el controlador de subpedidos, luego de validar que los parámetros $producto y $cantidad son correctos. También calcula el subtotal por producto.
|
||||||
public function syncProducto(Producto $producto, Int $cantidad, string $notas) {
|
public function syncProducto(Producto $producto, Int $cantidad) {
|
||||||
if ($cantidad){
|
if ($cantidad){
|
||||||
//si la cantidad es 1 o más se agrega el producto o actualiza la cantidad
|
//si la cantidad es 1 o más se agrega el producto o actualiza la cantidad
|
||||||
$this->productos()->syncWithoutDetaching([
|
$this->productos()->syncWithoutDetaching([
|
||||||
$producto->id => [
|
$producto->id => [
|
||||||
'cantidad' => $cantidad,
|
'cantidad' => $cantidad,
|
||||||
'total' => $cantidad * $producto->precio,
|
'total' => $cantidad * $producto->precio
|
||||||
'notas' => $notas,
|
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
class NotasProducto extends Migration
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::table('producto_subpedido', function (Blueprint $table) {
|
|
||||||
$table->string('notas');
|
|
||||||
$table->boolean('requiere-notas');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
Schema::table('producto_subpedido', function (Blueprint $table) {
|
|
||||||
$table->dropColumn('notas');
|
|
||||||
$table->dropColumn('requiere-notas');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -72,10 +72,6 @@ const app = new Vue({
|
||||||
cantidad(producto) {
|
cantidad(producto) {
|
||||||
let pedido = this.productos.some(p => p.id == producto.id)
|
let pedido = this.productos.some(p => p.id == producto.id)
|
||||||
return pedido ? this.productos.find(p => p.id == producto.id).pivot.cantidad : 0
|
return pedido ? this.productos.find(p => p.id == producto.id).pivot.cantidad : 0
|
||||||
},
|
|
||||||
notas(producto) {
|
|
||||||
let pedido = this.productos.some(p => p.id == producto.id);
|
|
||||||
return pedido ? this.productos.find(p => p.id == producto.id).pivot.notas : "";
|
|
||||||
},
|
},
|
||||||
settearDevoluciones() {
|
settearDevoluciones() {
|
||||||
axios.get(`/api/grupos-de-compra/${this.gdc}/devoluciones`)
|
axios.get(`/api/grupos-de-compra/${this.gdc}/devoluciones`)
|
||||||
|
@ -104,15 +100,14 @@ const app = new Vue({
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
Event.$on('sync-subpedido', (cantidad, id, notas) => {
|
Event.$on('sync-subpedido', (cantidad, id) => {
|
||||||
if (this.pedido.aprobado) {
|
if (this.pedido.aprobado) {
|
||||||
this.$toast('No se puede modificar un pedido ya aprobado', 2000);
|
this.$toast('No se puede modificar un pedido ya aprobado', 2000);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
axios.post("/api/subpedidos/" + this.pedido.id + "/sync", {
|
axios.post("/api/subpedidos/" + this.pedido.id + "/sync", {
|
||||||
cantidad: cantidad,
|
cantidad: cantidad,
|
||||||
producto_id: id,
|
producto_id: id
|
||||||
notas: notas,
|
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
this.pedido = response.data.data
|
this.pedido = response.data.data
|
||||||
this.$toast('Pedido actualizado exitosamente')
|
this.$toast('Pedido actualizado exitosamente')
|
||||||
|
|
|
@ -8,13 +8,12 @@ export default {
|
||||||
return {
|
return {
|
||||||
cantidad: this.producto.cantidad,
|
cantidad: this.producto.cantidad,
|
||||||
enChismosa: this.producto.cantidad,
|
enChismosa: this.producto.cantidad,
|
||||||
notas: this.producto.notas,
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
Event.$on('sync-subpedido', (cantidad, productoId, notas) => {
|
Event.$on('sync-subpedido', (cantidad,productoId) => {
|
||||||
if (this.producto.id === productoId)
|
if (this.producto.id === productoId)
|
||||||
this.sincronizar(cantidad, notas);
|
this.sincronizar(cantidad);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -25,21 +24,19 @@ export default {
|
||||||
this.cantidad += 1;
|
this.cantidad += 1;
|
||||||
},
|
},
|
||||||
confirmar() {
|
confirmar() {
|
||||||
Event.$emit('sync-subpedido', this.cantidad, this.producto.id, this.notas);
|
Event.$emit('sync-subpedido', this.cantidad, this.producto.id);
|
||||||
},
|
},
|
||||||
borrar() {
|
borrar() {
|
||||||
this.cantidad = 0;
|
this.cantidad = 0;
|
||||||
this.confirmar();
|
this.confirmar();
|
||||||
},
|
},
|
||||||
sincronizar(cantidad, notas) {
|
sincronizar(cantidad) {
|
||||||
this.cantidad = cantidad;
|
this.cantidad = cantidad;
|
||||||
this.producto.cantidad = cantidad;
|
this.producto.cantidad = cantidad;
|
||||||
this.enChismosa = cantidad;
|
this.enChismosa = cantidad;
|
||||||
this.notas = notas;
|
|
||||||
this.producto.notas = notas;
|
|
||||||
},
|
},
|
||||||
hayCambios() {
|
hayCambios() {
|
||||||
return this.cantidad != this.enChismosa || this.notas != this.producto.notas;
|
return this.cantidad != this.enChismosa;
|
||||||
},
|
},
|
||||||
puedeBorrar() {
|
puedeBorrar() {
|
||||||
return this.enChismosa > 0;
|
return this.enChismosa > 0;
|
||||||
|
@ -96,7 +93,6 @@ export default {
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
Notas: <input v-model="notas" />
|
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<p class="subtitle is-7 is-hidden-mobile" v-if="enChismosa !== 0">{{ enChismosa }} en chismosa</p>
|
<p class="subtitle is-7 is-hidden-mobile" v-if="enChismosa !== 0">{{ enChismosa }} en chismosa</p>
|
||||||
|
|
|
@ -37,10 +37,7 @@ export default {
|
||||||
params: this.params(filtro,valor)
|
params: this.params(filtro,valor)
|
||||||
}).then(response => {
|
}).then(response => {
|
||||||
this.productos = response.data.data;
|
this.productos = response.data.data;
|
||||||
this.productos.forEach(p => {
|
this.productos.forEach(p => p.cantidad = this.$root.cantidad(p))
|
||||||
p.cantidad = this.$root.cantidad(p);
|
|
||||||
p.notas = this.$root.notas(p);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
this.visible = true;
|
this.visible = true;
|
||||||
Event.$emit("migas-agregar",this.miga);
|
Event.$emit("migas-agregar",this.miga);
|
||||||
|
|
Loading…
Reference in New Issue