From ea6596a5b408a28bff5de904bf30b3fe2c32f2c3 Mon Sep 17 00:00:00 2001 From: Ale Date: Wed, 24 May 2023 15:01:31 -0300 Subject: [PATCH] Rework de la tabla de bonos y cambios en total de tabla de pedidos --- app/GrupoDeCompra.php | 10 +- app/Http/Resources/SubpedidoResource.php | 2 +- app/Subpedido.php | 6 +- package.json | 2 +- resources/js/components/PedidosAdminBody.vue | 15 +- .../js/components/PedidosAdminFilaBono.vue | 22 --- .../js/components/PedidosAdminTablaBonos.vue | 140 +++++++----------- .../components/PedidosAdminTablaPedidos.vue | 12 +- routes/api.php | 6 + 9 files changed, 86 insertions(+), 129 deletions(-) delete mode 100644 resources/js/components/PedidosAdminFilaBono.vue diff --git a/app/GrupoDeCompra.php b/app/GrupoDeCompra.php index 6f30d43..99aa398 100644 --- a/app/GrupoDeCompra.php +++ b/app/GrupoDeCompra.php @@ -69,16 +69,16 @@ class GrupoDeCompra extends Model throw new Exception('No hay bono de transporte'); } - private function totalPedidoSinBDT() { + private function totalPedidosSinBonos() { $total = 0; - foreach ($this->subpedidos as $subpedido) { - $total += $subpedido->totalSinBDT(); + foreach ($this->pedidosAprobados() as $pedido) { + $total += ceil($pedido->totalSinBonos()); } return $total; } - private function calcularCantidadBDT() { - return ceil($this->totalPedidoSinBDT() / 500); + public function calcularCantidadBDT() { + return ceil($this->totalPedidosSinBonos() / 500); } public function exportarPedidoEnCSV(){ diff --git a/app/Http/Resources/SubpedidoResource.php b/app/Http/Resources/SubpedidoResource.php index 6567ee0..bd53b85 100644 --- a/app/Http/Resources/SubpedidoResource.php +++ b/app/Http/Resources/SubpedidoResource.php @@ -17,7 +17,7 @@ class SubpedidoResource extends JsonResource return [ 'id' => $this->id, 'nombre' => $this->nombre, - 'subtotal_productos' => number_format($this->totalSinBDT(),0), + 'subtotal_productos' => number_format($this->totalSinBonos(),0), 'subtotal_bonos' => number_format($this->getSubtotalBonos(),0), 'bonos_de_transporte' => $this->cantidadBDT(), 'subtotal_bonos_de_transporte' => number_format($this->getSubtotalBDT(),0), diff --git a/app/Subpedido.php b/app/Subpedido.php index ea9d779..8b64a24 100644 --- a/app/Subpedido.php +++ b/app/Subpedido.php @@ -41,7 +41,7 @@ class Subpedido extends Model } //Subtotal de dinero de productos del pedido, sin bonos ni transporte - public function totalSinBDT() + public function totalSinBonos() { return $this->productosSinBonos()->sum('total'); } @@ -49,7 +49,7 @@ class Subpedido extends Model //Cantidad de bonos de transporte public function cantidadBDT() { - return ceil($this->totalSinBDT() / 500); + return ceil($this->totalSinBonos() / 500); } //Subtotal de dinero de bonos de transporte @@ -66,7 +66,7 @@ class Subpedido extends Model public function getTotal() { - return $this->totalSinBDT() + $this->getSubtotalBDT() + $this->getSubtotalBonos(); + return $this->totalSinBonos() + $this->getSubtotalBDT() + $this->getSubtotalBonos(); } //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/package.json b/package.json index ca11d30..cc4c17c 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "devDependencies": { "axios": "^0.19.2", "bootstrap": "^4.0.0", - "cross-env": "^7.0", + "cross-env": "^7.0.3", "jquery": "^3.2", "laravel-mix": "^5.0.1", "lodash": "^4.17.19", diff --git a/resources/js/components/PedidosAdminBody.vue b/resources/js/components/PedidosAdminBody.vue index 7466c25..ff5d559 100644 --- a/resources/js/components/PedidosAdminBody.vue +++ b/resources/js/components/PedidosAdminBody.vue @@ -8,7 +8,7 @@ :gdc="gdc"> + :pedidos="pedidos" :bonosDeTransporte="bonosDeTransporte">

@@ -44,6 +44,7 @@ export default { return { gdc: 0, pedidos: [], + bonosDeTransporte: 0, tabActiva: "pedidos", seccionActiva: "pedidos-seccion" } @@ -58,21 +59,15 @@ export default { }, methods: { fetchPedidos() { + axios.get("/api/grupos-de-compra/"+this.gdc+"/bonos-de-transporte", {}) + .then(response => this.bonosDeTransporte = response.data.bdt); axios.get("/api/subpedidos/resources", { params: { grupo_de_compra: this.gdc }}) .then(response => { this.pedidos = response.data.data - }); - }, - totalAprobados() { - let suma = 0; - let aprobados = this.pedidos.filter(p => p.aprobado); - for (let i = 0; i < aprobados.length; i++) { - suma += parseFloat(aprobados[i].total.replace(/,/g, '')); - } - return suma; + }).get; }, setSeccionActiva(tabId) { this.tabActiva = tabId; diff --git a/resources/js/components/PedidosAdminFilaBono.vue b/resources/js/components/PedidosAdminFilaBono.vue deleted file mode 100644 index f4876b1..0000000 --- a/resources/js/components/PedidosAdminFilaBono.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/resources/js/components/PedidosAdminTablaBonos.vue b/resources/js/components/PedidosAdminTablaBonos.vue index 98b6b96..7fafdaa 100644 --- a/resources/js/components/PedidosAdminTablaBonos.vue +++ b/resources/js/components/PedidosAdminTablaBonos.vue @@ -5,119 +5,91 @@ Todavía no hay bonos pedidos.

-
- +
+
- - + + + + + + + + + - + - + - - - - - - - - -
BonoCantidadNúcleo + {{ bono.nombre }} + Total $
{{ bp.nucleo }} + {{ bono.cantidad }} + {{ bp.total }}
Total bonosTotal bonos $ {{ totalBonos }}
Bonos de Transporte {{ bonosDeTransporteAprobados }} $ {{ bonosDeTransporteAprobados * 15 }}
diff --git a/resources/js/components/PedidosAdminTablaPedidos.vue b/resources/js/components/PedidosAdminTablaPedidos.vue index 35c7098..379190b 100644 --- a/resources/js/components/PedidosAdminTablaPedidos.vue +++ b/resources/js/components/PedidosAdminTablaPedidos.vue @@ -33,18 +33,24 @@ export default { pedidos: { type: Array, required: true - } + }, + bonosDeTransporte: { + type: Number, + required: true + }, }, methods: { totalAprobados() { let suma = 0; let aprobados = this.pedidos.filter(p => p.aprobado); for (let i = 0; i < aprobados.length; i++) { - suma += parseFloat(aprobados[i].total.replace(/,/g, '')); + suma += parseFloat(aprobados[i].subtotal_bonos.replace(/,/g, '')); + suma += parseFloat(aprobados[i].subtotal_productos.replace(/,/g, '')); } + suma += parseInt(this.bonosDeTransporte)*15 return suma; } - } + }, } diff --git a/routes/api.php b/routes/api.php index fdc813e..d756aad 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,5 +1,7 @@ group(function () { $atributos_a_ocultar = ['telefono', 'cantidad_de_nucleos', 'correo', 'referente_finanzas', 'created_at', 'updated_at']; return GrupoDeCompra::all()->makeHidden($atributos_a_ocultar)->sortBy('nombre')->groupBy('region'); }); + Route::get('/{gdc}/bonos-de-transporte', function($gdc) { + $grupo = GrupoDeCompra::where('id',$gdc)->first(); + return ['bdt' => $grupo->calcularCantidadBDT()]; + }); }); Route::prefix('pedidos')->group(function () {