Mejoras varias a la pantalla de admini

This commit is contained in:
Alejandro Tasistro 2023-10-04 22:37:59 -03:00
parent aab05541b2
commit 8f8733cb7b
5 changed files with 58 additions and 8 deletions

View File

@ -89,6 +89,21 @@ class GrupoDeCompra extends Model
return ceil($this->totalPedidosSinBonos() / 500); return ceil($this->totalPedidosSinBonos() / 500);
} }
public function totalBonosBarriales() {
$total = 0;
$bonoBarrial = Producto::where('nombre','LIKE','%barrial%')->first();
if ($bonoBarrial) {
$pedidos = $this->pedidosAprobados();
foreach ($pedidos as $pedido) {
$bonoPedido = $pedido->productos()->find($bonoBarrial["id"]);
if ($bonoPedido) {
$total += $bonoPedido["pivot"]["total"];
}
}
}
return $total;
}
public function exportarPedidoEnCSV(){ public function exportarPedidoEnCSV(){
$productos_en_pedido = DB::table('pedidos_aprobados')->where('grupo_de_compra_id',$this->id)->get()->keyBy('producto_id'); $productos_en_pedido = DB::table('pedidos_aprobados')->where('grupo_de_compra_id',$this->id)->get()->keyBy('producto_id');

View File

@ -1,21 +1,21 @@
<template> <template>
<div class="container is-max-widescreen is-max-desktop animate__animated" :class="animation"> <div class="container is-max-widescreen is-max-desktop">
<pedidos-admin-tabs-secciones></pedidos-admin-tabs-secciones> <pedidos-admin-tabs-secciones></pedidos-admin-tabs-secciones>
<div class="block" id="pedidos-seccion" <div class="block" id="pedidos-seccion"
:class="seccionActiva === 'pedidos-seccion' ? 'is-active' : 'is-hidden'"> :class="seccionActiva === 'pedidos-seccion' ? 'is-active' : 'is-hidden'">
<div class="block" id="pedidos-tabla-y-dropdown" v-show="hayPedidos"> <div class="block pb-6" id="pedidos-tabla-y-dropdown" v-show="hayPedidos">
<pedidos-admin-dropdown-descargar <pedidos-admin-dropdown-descargar
:gdc="gdc"> :gdc="gdc">
</pedidos-admin-dropdown-descargar> </pedidos-admin-dropdown-descargar>
<pedidos-admin-tabla-pedidos <pedidos-admin-tabla-pedidos
:pedidos="pedidos" :bonosDeTransporte="bonosDeTransporte"> :pedidos="pedidos" :bonosDeTransporte="bonosDeTransporte" :totalBonosBarriales="totalBonosBarriales">
</pedidos-admin-tabla-pedidos> </pedidos-admin-tabla-pedidos>
</div> </div>
<p class="has-text-centered" v-show="!hayPedidos"> <p class="has-text-centered" v-show="!hayPedidos">
Todavía no hay ningún pedido para administrar. Todavía no hay ningún pedido para administrar.
</p> </p>
</div> </div>
<div class="block" id="bonos-seccion" <div class="block pb-6" id="bonos-seccion"
:class="seccionActiva === 'bonos-seccion' ? 'is-active' : 'is-hidden'"> :class="seccionActiva === 'bonos-seccion' ? 'is-active' : 'is-hidden'">
<pedidos-admin-tabla-bonos v-show="hayAprobados" <pedidos-admin-tabla-bonos v-show="hayAprobados"
:pedidos="pedidos"> :pedidos="pedidos">
@ -45,6 +45,7 @@ export default {
gdc: 0, gdc: 0,
pedidos: [], pedidos: [],
bonosDeTransporte: 0, bonosDeTransporte: 0,
totalBonosBarriales: 0,
tabActiva: "pedidos", tabActiva: "pedidos",
seccionActiva: "pedidos-seccion" seccionActiva: "pedidos-seccion"
} }
@ -72,6 +73,10 @@ export default {
setSeccionActiva(tabId) { setSeccionActiva(tabId) {
this.tabActiva = tabId; this.tabActiva = tabId;
this.seccionActiva = tabId + "-seccion"; this.seccionActiva = tabId + "-seccion";
},
getBonosBarriales() {
axios.get("/api/grupos-de-compra/"+this.gdc+"/bonos-barriales", {})
.then(response => this.totalBonosBarriales = response.data.bonos_barriales)
} }
}, },
mounted() { mounted() {
@ -82,6 +87,7 @@ export default {
axios.get("/admin/obtener_sesion").then(response => { axios.get("/admin/obtener_sesion").then(response => {
this.gdc = response.data.gdc; this.gdc = response.data.gdc;
this.fetchPedidos(); this.fetchPedidos();
this.bonosBarriales = this.getBonosBarriales()
}); });
} }
} }

View File

@ -19,7 +19,7 @@
<tbody> <tbody>
<tr v-for="(bp, i) in bonosPorPedido" :key="i"> <tr v-for="(bp, i) in bonosPorPedido" :key="i">
<td> {{ bp.nucleo }} </td> <td> {{ bp.nucleo }} </td>
<td v-for="(bono,j) in bp.bonos" :key="j"> <td v-for="(bono,j) in bp.bonos" :key="j" class="has-text-right">
{{ bono.cantidad }} {{ bono.cantidad }}
</td> </td>
<td class="has-text-right"> {{ bp.total }} </td> <td class="has-text-right"> {{ bp.total }} </td>

View File

@ -10,8 +10,18 @@
<tfoot> <tfoot>
<tr> <tr>
<th></th> <th></th>
<th>Total de los aprobados</th> <th>Total a recaudar:</th>
<th>$ {{ totalAprobados() }}</th> <th class="has-text-right">$ {{ totalAprobados() }}</th>
</tr>
<tr>
<th></th>
<th>Total bonos barriales:</th>
<th class="has-text-right">$ {{ totalBonosBarriales }}</th>
</tr>
<tr>
<th></th>
<th>Total a transferir:</th>
<th class="has-text-right">$ {{ totalAprobados() - totalBonosBarriales }}</th>
</tr> </tr>
</tfoot> </tfoot>
<tbody> <tbody>
@ -38,11 +48,26 @@ export default {
type: Number, type: Number,
required: true required: true
}, },
totalBonosBarriales: {
type: Number,
required: true
},
}, },
methods: { methods: {
totalAprobados() { totalBonosBarriales() {
let suma = 0; let suma = 0;
let aprobados = this.pedidos.filter(p => p.aprobado); let aprobados = this.pedidos.filter(p => p.aprobado);
for (let i = 0; i < aprobados.length; i++) {
let bonoBarrial = aprobados[i].productos.find(p => p.nombre.includes("barrial"))
if (bonoBarrial) {
suma += this.$limpiarInt(bonoBarrial.pivot.total)
}
}
return suma;
},
totalAprobados() {
let suma = 0
let aprobados = this.pedidos.filter(p => p.aprobado);
for (let i = 0; i < aprobados.length; i++) { for (let i = 0; i < aprobados.length; i++) {
suma += this.$limpiarFloat(aprobados[i].subtotal_bonos) suma += this.$limpiarFloat(aprobados[i].subtotal_bonos)
suma += this.$limpiarFloat(aprobados[i].subtotal_productos) suma += this.$limpiarFloat(aprobados[i].subtotal_productos)

View File

@ -32,6 +32,10 @@ Route::middleware('api')->group(function () {
$grupo = GrupoDeCompra::where('id',$gdc)->first(); $grupo = GrupoDeCompra::where('id',$gdc)->first();
return ['bdt' => $grupo->calcularCantidadBDT()]; return ['bdt' => $grupo->calcularCantidadBDT()];
}); });
Route::get('/{gdc}/bonos-barriales', function($gdc) {
$grupo = GrupoDeCompra::where('id',$gdc)->first();
return ['bonos_barriales' => $grupo->totalBonosBarriales()];
});
}); });
Route::prefix('subpedidos')->group(function () { Route::prefix('subpedidos')->group(function () {