From 14361a858e085e1ca7c2c4082dfaa6b4a8574596 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Wed, 4 Oct 2023 22:47:42 -0300 Subject: [PATCH 01/27] =?UTF-8?q?Devoluciones:=20modelo=20y=20sync=20Lo=20?= =?UTF-8?q?agregu=C3=A9=20a=20la=20base=20de=20datos=20y=20se=20sincroniza?= =?UTF-8?q?=20con=20un=20modal=20que=20se=20abre=20desde=20la=20chismosa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/SubpedidoController.php | 11 +++ app/Http/Resources/SubpedidoResource.php | 4 +- app/Subpedido.php | 18 ++++- ...0_09_23_180334_create_subpedidos_table.php | 2 + resources/js/app.js | 16 +++++ resources/js/components/Chismosa.vue | 18 +++++ resources/js/components/DevolucionesModal.vue | 67 +++++++++++++++++++ resources/views/productos.blade.php | 1 + routes/api.php | 1 + 9 files changed, 134 insertions(+), 4 deletions(-) create mode 100644 resources/js/components/DevolucionesModal.vue diff --git a/app/Http/Controllers/Api/SubpedidoController.php b/app/Http/Controllers/Api/SubpedidoController.php index a03e5ee..f2b25ed 100644 --- a/app/Http/Controllers/Api/SubpedidoController.php +++ b/app/Http/Controllers/Api/SubpedidoController.php @@ -97,5 +97,16 @@ class SubpedidoController extends Controller $subpedido->toggleAprobacion($valid['aprobacion']); return new SubpedidoResource($subpedido); } + + public function syncDevoluciones(Subpedido $subpedido) { + if ($subpedido->aprobado) return new SubpedidoResource($subpedido); + $valid = request()->validate([ + 'total' => 'required|min:0', + 'notas' => 'required', + ]); + $subpedido->syncDevoluciones($valid['total'], $valid['notas']); + + return new SubpedidoResource($subpedido); + } } diff --git a/app/Http/Resources/SubpedidoResource.php b/app/Http/Resources/SubpedidoResource.php index bd53b85..9115e40 100644 --- a/app/Http/Resources/SubpedidoResource.php +++ b/app/Http/Resources/SubpedidoResource.php @@ -24,7 +24,9 @@ class SubpedidoResource extends JsonResource 'total' => number_format($this->getTotal(),0), 'grupo_de_compra' => $this->grupoDeCompra, 'productos' => $this->productos, - 'aprobado' => (bool) $this->aprobado + 'aprobado' => (bool) $this->aprobado, + 'devoluciones_total' => (double) $this->devoluciones_total, + 'devoluciones_notas' => $this->devoluciones_notas ]; } } diff --git a/app/Subpedido.php b/app/Subpedido.php index 8b64a24..d5581dc 100644 --- a/app/Subpedido.php +++ b/app/Subpedido.php @@ -11,7 +11,7 @@ use App\Filtros\FiltroDeSubpedido; class Subpedido extends Model { public $timestamps = false; - protected $fillable = ['grupo_de_compra_id', 'aprobado', 'nombre']; + protected $fillable = ['grupo_de_compra_id', 'aprobado', 'nombre', 'devoluciones_total', 'devoluciones_notas']; public function productos() { @@ -66,7 +66,7 @@ class Subpedido extends Model public function getTotal() { - return $this->totalSinBonos() + $this->getSubtotalBDT() + $this->getSubtotalBonos(); + return $this->totalSinBonos() + $this->getSubtotalBDT() + $this->getSubtotalBonos() - $this->getDevoluciones(); } //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. @@ -94,5 +94,17 @@ class Subpedido extends Model $view = view("pdfgen.subpedido_tabla", ["subpedido" => $this]); return $view->render(); } - + + public function getDevoluciones() { + return $this->devoluciones_total; + } + + public function getNotasDevoluciones() { + return $this->devoluciones_notas; + } + public function syncDevoluciones(float $total, string $notas) { + $this->devoluciones_total = $total; + $this->devoluciones_notas = $notas; + $this->save(); + } } diff --git a/database/migrations/2020_09_23_180334_create_subpedidos_table.php b/database/migrations/2020_09_23_180334_create_subpedidos_table.php index 7ef83f3..f116f33 100644 --- a/database/migrations/2020_09_23_180334_create_subpedidos_table.php +++ b/database/migrations/2020_09_23_180334_create_subpedidos_table.php @@ -18,6 +18,8 @@ class CreateSubpedidosTable extends Migration $table->string('nombre'); $table->foreignId('grupo_de_compra_id'); $table->boolean('aprobado')->default(false); + $table->double('devoluciones_total', 10, 2)->default(0); + $table->string('devoluciones_notas')->default(""); $table->timestamps(); }); diff --git a/resources/js/app.js b/resources/js/app.js index 9642940..1c3b1a6 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -98,6 +98,22 @@ const app = new Vue({ this.$toast('Pedido actualizado exitosamente') }); }); + // Actualizar monto y notas de devoluciones + Event.$on('sync-devoluciones', (total, notas) => { + if (this.pedido.aprobado) { + this.$toast('No se puede modificar un pedido ya aprobado', 2000); + return; + } + + axios.post("api/subpedidos/" + this.pedido.id + "/sync_devoluciones", { + total: total, + notas: notas, + }).then((response) => { + this.pedido = response.data.data; + this.$toast('Pedido actualizado'); + }); + }); + Event.$on('aprobacion-subpedido', (subpedidoId, aprobado) => { axios.post("/api/admin/subpedidos/" + subpedidoId + "/aprobacion", { aprobacion: aprobado diff --git a/resources/js/components/Chismosa.vue b/resources/js/components/Chismosa.vue index e03c79f..82b5f3f 100644 --- a/resources/js/components/Chismosa.vue +++ b/resources/js/components/Chismosa.vue @@ -25,6 +25,19 @@ + +

Devoluciones

+ + -{{ this.$root.pedido.devoluciones_total }} + + + + + Total total @@ -65,6 +78,11 @@ return this.$limpiarInt(this.$root.pedido.total) } }, + methods: { + modificarDevoluciones: function() { + Event.$emit("modificar-devoluciones"); + }, + } } diff --git a/resources/js/components/DevolucionesModal.vue b/resources/js/components/DevolucionesModal.vue new file mode 100644 index 0000000..9d4862f --- /dev/null +++ b/resources/js/components/DevolucionesModal.vue @@ -0,0 +1,67 @@ + + + \ No newline at end of file diff --git a/resources/views/productos.blade.php b/resources/views/productos.blade.php index e3a6bdb..fd29893 100644 --- a/resources/views/productos.blade.php +++ b/resources/views/productos.blade.php @@ -5,4 +5,5 @@ + @endsection diff --git a/routes/api.php b/routes/api.php index fafd824..8a56d63 100644 --- a/routes/api.php +++ b/routes/api.php @@ -40,6 +40,7 @@ Route::middleware('api')->group(function () { Route::get('{subpedido}','Api\SubpedidoController@show'); Route::post('/','Api\SubpedidoController@store'); Route::post('/{subpedido}/sync', 'Api\SubpedidoController@syncProductos'); + Route::post('/{subpedido}/sync_devoluciones', 'Api\SubpedidoController@syncDevoluciones'); }); Route::prefix('admin')->group(function () { -- 2.44.0 From 3941dc0fd29a063f3cc1e6394e968441672c5b64 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Thu, 5 Oct 2023 12:58:03 -0300 Subject: [PATCH 02/27] Mostrar devoluciones en admin --- app/Http/Resources/SubpedidoResource.php | 1 + app/Subpedido.php | 6 +- resources/js/components/Chismosa.vue | 2 +- .../js/components/PedidosAdminFilaPedido.vue | 2 + .../components/PedidosAdminTablaPedidos.vue | 86 ++++++++++++------- 5 files changed, 66 insertions(+), 31 deletions(-) diff --git a/app/Http/Resources/SubpedidoResource.php b/app/Http/Resources/SubpedidoResource.php index 9115e40..3108eb5 100644 --- a/app/Http/Resources/SubpedidoResource.php +++ b/app/Http/Resources/SubpedidoResource.php @@ -22,6 +22,7 @@ class SubpedidoResource extends JsonResource 'bonos_de_transporte' => $this->cantidadBDT(), 'subtotal_bonos_de_transporte' => number_format($this->getSubtotalBDT(),0), 'total' => number_format($this->getTotal(),0), + 'total_menos_devoluciones' => number_format($this->getTotalMenosDevoluciones(),0), 'grupo_de_compra' => $this->grupoDeCompra, 'productos' => $this->productos, 'aprobado' => (bool) $this->aprobado, diff --git a/app/Subpedido.php b/app/Subpedido.php index d5581dc..276d743 100644 --- a/app/Subpedido.php +++ b/app/Subpedido.php @@ -66,7 +66,11 @@ class Subpedido extends Model public function getTotal() { - return $this->totalSinBonos() + $this->getSubtotalBDT() + $this->getSubtotalBonos() - $this->getDevoluciones(); + return $this->totalSinBonos() + $this->getSubtotalBDT() + $this->getSubtotalBonos(); + } + + public function getTotalMenosDevoluciones() { + return $this->getTotal() - $this->getDevoluciones(); } //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. diff --git a/resources/js/components/Chismosa.vue b/resources/js/components/Chismosa.vue index 82b5f3f..c949bdb 100644 --- a/resources/js/components/Chismosa.vue +++ b/resources/js/components/Chismosa.vue @@ -75,7 +75,7 @@ return this.$limpiarInt(this.$root.pedido.subtotal_bonos) }, total: function() { - return this.$limpiarInt(this.$root.pedido.total) + return this.$limpiarInt(this.$root.pedido.total_menos_devoluciones) } }, methods: { diff --git a/resources/js/components/PedidosAdminFilaPedido.vue b/resources/js/components/PedidosAdminFilaPedido.vue index 384dc56..fb6223d 100644 --- a/resources/js/components/PedidosAdminFilaPedido.vue +++ b/resources/js/components/PedidosAdminFilaPedido.vue @@ -2,6 +2,8 @@ {{ pedido.nombre }} {{ this.$limpiarInt(pedido.total) }} + -{{ pedido.devoluciones_total }} + {{ pedido.total_menos_devoluciones }} diff --git a/resources/js/components/PedidosAdminTablaPedidos.vue b/resources/js/components/PedidosAdminTablaPedidos.vue index ad15454..3c47f01 100644 --- a/resources/js/components/PedidosAdminTablaPedidos.vue +++ b/resources/js/components/PedidosAdminTablaPedidos.vue @@ -1,35 +1,43 @@ + + + + diff --git a/resources/js/components/PedidosAdminFilaCaracteristica.vue b/resources/js/components/PedidosAdminFilaCaracteristica.vue new file mode 100644 index 0000000..a747fb9 --- /dev/null +++ b/resources/js/components/PedidosAdminFilaCaracteristica.vue @@ -0,0 +1,68 @@ + + + + + -- 2.44.0 From 057170118dc8db01857ff07330074213ee7221bb Mon Sep 17 00:00:00 2001 From: ale Date: Thu, 11 Jul 2024 18:59:47 -0300 Subject: [PATCH 18/27] cambio segun si devoluciones esta activa --- resources/js/components/Chismosa.vue | 6 +++--- resources/js/components/ChismosaDropdown.vue | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/js/components/Chismosa.vue b/resources/js/components/Chismosa.vue index c34c899..f7dc46e 100644 --- a/resources/js/components/Chismosa.vue +++ b/resources/js/components/Chismosa.vue @@ -18,7 +18,7 @@ - +

Devoluciones

-{{ this.$root.pedido.devoluciones_total }} @@ -62,7 +62,7 @@ return this.$limpiarInt(this.$root.pedido.subtotal_bonos_de_transporte) }, total: function() { - return this.$limpiarInt(this.$root.pedido.total_menos_devoluciones) + return this.$limpiarInt(this.$root.devoluciones ? this.$root.pedido.total_menos_devoluciones : this.$root.pedido.total) } }, methods: { @@ -79,4 +79,4 @@ max-width: 80vw; } } - \ No newline at end of file + diff --git a/resources/js/components/ChismosaDropdown.vue b/resources/js/components/ChismosaDropdown.vue index 7bf851e..9e8c834 100644 --- a/resources/js/components/ChismosaDropdown.vue +++ b/resources/js/components/ChismosaDropdown.vue @@ -5,7 +5,7 @@ - +