Compare commits
No commits in common. "a44c0745932ac68fb79292679082fbae02401be2" and "7b36aa0b0c84e8d5d4af9b6b2f25d59a112b00df" have entirely different histories.
a44c074593
...
7b36aa0b0c
7 changed files with 22 additions and 171 deletions
|
@ -16,28 +16,6 @@ class GrupoDeCompra extends Model
|
||||||
protected $table = 'grupos_de_compra';
|
protected $table = 'grupos_de_compra';
|
||||||
protected $hidden = ['password'];
|
protected $hidden = ['password'];
|
||||||
|
|
||||||
public function faltantes()
|
|
||||||
{
|
|
||||||
return Subpedido::firstOrCreate([
|
|
||||||
'nombre' => 'Faltantes de ' . $this->nombre,
|
|
||||||
'grupo_de_compra_id' => $this->id
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'es_faltantes' => true
|
|
||||||
])->id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function sobrantes()
|
|
||||||
{
|
|
||||||
return Subpedido::firstOrCreate([
|
|
||||||
'nombre' => 'Sobrantes de ' . $this->nombre,
|
|
||||||
'grupo_de_compra_id' => $this->id
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'es_sobrantes' => true
|
|
||||||
])->id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function toggleDevoluciones()
|
public function toggleDevoluciones()
|
||||||
{
|
{
|
||||||
$this->devoluciones_habilitadas = !$this->devoluciones_habilitadas;
|
$this->devoluciones_habilitadas = !$this->devoluciones_habilitadas;
|
||||||
|
|
|
@ -11,7 +11,7 @@ use App\Filtros\FiltroDeSubpedido;
|
||||||
class Subpedido extends Model
|
class Subpedido extends Model
|
||||||
{
|
{
|
||||||
public $timestamps = false;
|
public $timestamps = false;
|
||||||
protected $fillable = ['grupo_de_compra_id', 'aprobado', 'nombre', 'devoluciones_total', 'devoluciones_notas', 'es_faltantes', 'es_sobrantes'];
|
protected $fillable = ['grupo_de_compra_id', 'aprobado', 'nombre', 'devoluciones_total', 'devoluciones_notas'];
|
||||||
|
|
||||||
public function productos()
|
public function productos()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
class PedidosFaltantesYSobrantes extends Migration
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::table('subpedidos', function (Blueprint $table) {
|
|
||||||
$table->boolean('es_faltantes')->default(false);
|
|
||||||
$table->boolean('es_sobrantes')->default(false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
Schema::table('subpedidos', function (Blueprint $table) {
|
|
||||||
$table->dropColumn('es_faltantes');
|
|
||||||
$table->dropColumn('es_sobrantes');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,28 +1,33 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="block ml-3 mr-3 is-max-widescreen is-max-desktop">
|
<div class="block ml-3 mr-3 is-max-widescreen is-max-desktop">
|
||||||
<tabs-secciones :tabs="tabs" :tabInicial="tabActiva"></tabs-secciones>
|
<comunes-tabs-secciones :tabs="tabs" :tabInicial="tabActiva"></comunes-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 pb-6" id="pedidos-tabla-y-dropdown" v-show="hayPedidos">
|
<div class="block pb-6" id="pedidos-tabla-y-dropdown" v-show="hayPedidos">
|
||||||
<dropdown-descargar
|
<admin-dropdown-descargar
|
||||||
:gdc="gdc">
|
:gdc="gdc">
|
||||||
</dropdown-descargar>
|
</admin-dropdown-descargar>
|
||||||
<tabla-pedidos
|
<admin-tabla-pedidos
|
||||||
:pedidos="pedidos" :bonosDeTransporte="bonosDeTransporte" :totalBonosBarriales="totalBonosBarriales">
|
:pedidos="pedidos" :bonosDeTransporte="bonosDeTransporte" :totalBonosBarriales="totalBonosBarriales">
|
||||||
</tabla-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 pb-6" id="faltantes-y-sobrantes-seccion"
|
<div class="block pb-6" id="bonos-seccion"
|
||||||
:class="seccionActiva === 'faltantes-y-sobrantes-seccion' ? 'is-active' : 'is-hidden'">
|
:class="seccionActiva === 'bonos-seccion' ? 'is-active' : 'is-hidden'">
|
||||||
<faltantes-y-sobrantes></faltantes-y-sobrantes>
|
<admin-tabla-bonos v-show="hayAprobados"
|
||||||
|
:pedidos="pedidos">
|
||||||
|
</admin-tabla-bonos>
|
||||||
|
<p class="has-text-centered" v-show="!hayAprobados">
|
||||||
|
Todavía no hay pedidos aprobados.
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="block pb-6" id="caracteristicas-seccion"
|
<div class="block pb-6" id="caracteristicas-seccion"
|
||||||
:class="seccionActiva === 'caracteristicas-seccion' ? 'is-active' : 'is-hidden'">
|
:class="seccionActiva === 'caracteristicas-seccion' ? 'is-active' : 'is-hidden'">
|
||||||
<caracteristicas-opcionales>
|
<admin-caracteristicas-opcionales>
|
||||||
</caracteristicas-opcionales>
|
</admin-caracteristicas-opcionales>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -32,14 +37,14 @@ import CaracteristicasOpcionales from "./CaracteristicasOpcionales.vue";
|
||||||
import TabsSecciones from "../comunes/TabsSecciones.vue";
|
import TabsSecciones from "../comunes/TabsSecciones.vue";
|
||||||
import DropdownDescargar from "./DropdownDescargar.vue";
|
import DropdownDescargar from "./DropdownDescargar.vue";
|
||||||
import TablaPedidos from "./TablaPedidos.vue";
|
import TablaPedidos from "./TablaPedidos.vue";
|
||||||
import FaltantesYSobrantes from "./FaltantesYSobrantes.vue";
|
import TablaBonos from "./TablaBonos.vue";
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
CaracteristicasOpcionales,
|
CaracteristicasOpcionales,
|
||||||
TabsSecciones,
|
TabsSecciones,
|
||||||
DropdownDescargar,
|
DropdownDescargar,
|
||||||
TablaPedidos,
|
TablaPedidos,
|
||||||
FaltantesYSobrantes,
|
TablaBonos,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -48,7 +53,7 @@ export default {
|
||||||
bonosDeTransporte: 0,
|
bonosDeTransporte: 0,
|
||||||
totalBonosBarriales: 0,
|
totalBonosBarriales: 0,
|
||||||
tabs: [{ id: "pedidos", nombre: "Pedidos" },
|
tabs: [{ id: "pedidos", nombre: "Pedidos" },
|
||||||
{ id: "faltantes-y-sobrantes", nombre: "Faltantes y Sobrantes" },
|
{ id: "bonos", nombre: "Bonos" },
|
||||||
{ id: "caracteristicas", nombre: "Caracteristicas opcionales" }],
|
{ id: "caracteristicas", nombre: "Caracteristicas opcionales" }],
|
||||||
tabActiva: "pedidos",
|
tabActiva: "pedidos",
|
||||||
seccionActiva: "pedidos-seccion",
|
seccionActiva: "pedidos-seccion",
|
||||||
|
|
|
@ -1,79 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="columns is-mobile is-centered">
|
|
||||||
<div class="column is-half">
|
|
||||||
<div class="block">
|
|
||||||
<tabs-secciones
|
|
||||||
:tabs="tabs"
|
|
||||||
:tabInicial="tabActiva"
|
|
||||||
:clases="['is-centered', 'is-fullwidth']">
|
|
||||||
</tabs-secciones>
|
|
||||||
<div class="block pb-6" id="faltantes-seccion"
|
|
||||||
:class="seccionActiva === 'faltantes-seccion' ? 'is-active' : 'is-hidden'">
|
|
||||||
<p>{{faltantes ?? 'nada aún'}}</p>
|
|
||||||
</div>
|
|
||||||
<div class="block pb-6" id="sobrantes-seccion"
|
|
||||||
:class="seccionActiva === 'sobrantes-seccion' ? 'is-active' : 'is-hidden'">
|
|
||||||
<p>{{sobrantes ?? 'nada aún'}}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import axios from "axios";
|
|
||||||
import TabsSecciones from "../comunes/TabsSecciones.vue";
|
|
||||||
import Chismosa from "../pedidos/Chismosa.vue";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: "FaltantesYSobrantes",
|
|
||||||
components: {
|
|
||||||
TabsSecciones,
|
|
||||||
Chismosa,
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
gdc: undefined,
|
|
||||||
tabs: [{ id: "faltantes", nombre: "Faltantes" },
|
|
||||||
{ id: "sobrantes", nombre: "Sobrantes" }],
|
|
||||||
tabActiva: "faltantes",
|
|
||||||
seccionActiva: "faltantes-seccion",
|
|
||||||
faltantes: undefined,
|
|
||||||
sobrantes: undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
'$root.gdc' : {
|
|
||||||
handler(newValue) {
|
|
||||||
if (newValue) {
|
|
||||||
this.gdc = newValue;
|
|
||||||
this.actualizarFaltantes();
|
|
||||||
this.actualizarSobrantes();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
setSeccionActiva(tabId) {
|
|
||||||
this.tabActiva = tabId;
|
|
||||||
this.seccionActiva = tabId + "-seccion";
|
|
||||||
},
|
|
||||||
actualizarFaltantes() {
|
|
||||||
axios.get(`/api/grupos-de-compra/${this.gdc}/faltantes`)
|
|
||||||
.then(response => {
|
|
||||||
this.faltantes = response.data['faltantes'];
|
|
||||||
})
|
|
||||||
},
|
|
||||||
actualizarSobrantes() {
|
|
||||||
axios.get(`/api/grupos-de-compra/${this.gdc}/sobrantes`)
|
|
||||||
.then(response => {
|
|
||||||
this.sobrantes = response.data['sobrantes'];
|
|
||||||
})
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
|
|
||||||
</style>
|
|
|
@ -1,7 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<div class="tabs"
|
<div class="tabs is-boxed" id="tabs">
|
||||||
:class="clases">
|
|
||||||
<ul class="has-bottom-line">
|
<ul class="has-bottom-line">
|
||||||
<li v-for="(tab, index) in tabs" class="is-size-6"
|
<li v-for="(tab, index) in tabs" class="is-size-6"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
@ -21,18 +20,8 @@
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
tabs: {
|
tabs: Array,
|
||||||
type: Array,
|
tabInicial: String,
|
||||||
required: true
|
|
||||||
},
|
|
||||||
tabInicial: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
clases: {
|
|
||||||
type: Array,
|
|
||||||
default: () => ['is-boxed']
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -44,14 +44,6 @@ Route::middleware('api')->group(function () {
|
||||||
$habilitadas = GrupoDeCompra::find($gdc)->toggleDevoluciones();
|
$habilitadas = GrupoDeCompra::find($gdc)->toggleDevoluciones();
|
||||||
return ['devoluciones' => $habilitadas];
|
return ['devoluciones' => $habilitadas];
|
||||||
});
|
});
|
||||||
Route::get('/{gdc}/faltantes', function($gdc) {
|
|
||||||
$faltantes = GrupoDeCompra::find($gdc)->faltantes();
|
|
||||||
return ['faltantes' => $faltantes];
|
|
||||||
});
|
|
||||||
Route::get('/{gdc}/sobrantes', function($gdc) {
|
|
||||||
$sobrantes = GrupoDeCompra::find($gdc)->sobrantes();
|
|
||||||
return ['sobrantes' => $sobrantes];
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::prefix('subpedidos')->group(function () {
|
Route::prefix('subpedidos')->group(function () {
|
||||||
|
|
Loading…
Add table
Reference in a new issue