forked from nathalie/pedi2
148 lines
5.9 KiB
Vue
148 lines
5.9 KiB
Vue
<template>
|
|
<div class="block ml-3 mr-3 is-max-widescreen is-max-desktop">
|
|
<comunes-tabs-secciones :tabs="tabs" :tabInicial="tabActiva"></comunes-tabs-secciones>
|
|
<div class="block pb-6" id="pedidos-compras-seccion"
|
|
:class="seccionActiva === 'pedidos-compras-seccion' ? 'is-active' : 'is-hidden'">
|
|
<div class="block" id="pedidos-compras-tabla-y-dropdown">
|
|
<dropdown-descargar>
|
|
</dropdown-descargar>
|
|
</div>
|
|
</div>
|
|
<div class="block pb-6" id="canasta-compras-seccion"
|
|
:class="seccionActiva === 'canasta-compras-seccion' ? 'is-active' : 'is-hidden'">
|
|
<div class="block" id="canasta-compras-seccion">
|
|
<article class="message is-warning">
|
|
<div class="message-header">
|
|
<p>Formato de la canasta</p>
|
|
</div>
|
|
<div class="message-body">
|
|
<div class="content">
|
|
La planilla de la canasta tiene que tener el siguiente formato para que la aplicación la lea correctamente:
|
|
<ul>
|
|
<li> Los precios deben usar punto y no coma decimal </li>
|
|
<li> El nombre de las columnas deben ser "Tipo", "Producto", y "Precio" respectivamente </li>
|
|
<li> Las celdas deben separarse con '|' </li>
|
|
<li> No puede haber "enters" en ninguna celda </li>
|
|
<li> El bono de transporte debe tener tipo 'T' </li>
|
|
</ul>
|
|
<a class="has-text-info" href="/compras/canasta/ejemplo">Planilla de ejemplo.</a>
|
|
<article class="message is-danger mt-2">
|
|
<div class="message-body">
|
|
<div class="content">
|
|
Cuidado! Cargar una nueva canasta elimina todos los pedidos de la aplicación.
|
|
</div>
|
|
</div>
|
|
</article>
|
|
</div>
|
|
</div>
|
|
</article>
|
|
<div class="buttons is-right">
|
|
<canasta-input></canasta-input>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div
|
|
class="block pb-6"
|
|
id="saldos-compras-seccion"
|
|
:class="seccionActiva === 'saldos-compras-seccion' ? 'is-active' : 'is-hidden'"
|
|
>
|
|
<div class="block" id="saldos-compras-seccion">
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th>Barrio</th>
|
|
<th>Saldo</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr v-for="gdc in grupos_de_compra">
|
|
<th>{{ gdc.nombre }}</th>
|
|
<td>
|
|
<input id="cantidad"
|
|
v-model="gdc.saldo"
|
|
class="input is-small"
|
|
type="number"
|
|
style="text-align: center"
|
|
@input="saldoModificado(gdc.id)">
|
|
</td>
|
|
<td>
|
|
<button :disabled="!isSaldoModificado(gdc.id)" class="button is-small is-success ml-1" @click="confirmar_saldo(gdc.id)">
|
|
<span class="icon">
|
|
<i class="fas fa-check"></i>
|
|
</span>
|
|
</button>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import TabsSecciones from "../comunes/TabsSecciones.vue";
|
|
import DropdownDescargar from "./DropdownDescargar.vue";
|
|
import CanastaInput from "./CanastaInput.vue";
|
|
import { mapActions, mapState } from "vuex";
|
|
|
|
export default {
|
|
components: {
|
|
TabsSecciones,
|
|
DropdownDescargar,
|
|
CanastaInput,
|
|
InputFileButton,
|
|
},
|
|
data() {
|
|
return {
|
|
tabs: [
|
|
{ id: "pedidos-compras", nombre: "Pedidos" },
|
|
{ id: "canasta-compras", nombre: "Canasta" },
|
|
{ id: "saldos-compras", nombre: "Saldos" },
|
|
],
|
|
tabActiva: "pedidos-compras",
|
|
seccionActiva: "pedidos-compras-seccion",
|
|
archivo: undefined,
|
|
saldo_modificado: {},
|
|
}
|
|
},
|
|
methods: {
|
|
setSeccionActiva(tabId) {
|
|
this.tabActiva = tabId;
|
|
this.seccionActiva = tabId + "-seccion";
|
|
},
|
|
...mapActions('comisiones', ['getGruposDeCompra', 'setSaldo']),
|
|
async confirmar_saldo(gdc_id) {
|
|
var saldo = this.getSaldo(gdc_id);
|
|
await this.setSaldo({
|
|
gdc_id: gdc_id,
|
|
saldo: saldo,
|
|
});
|
|
this.saldo_modificado[gdc_id] = false;
|
|
await this.getGruposDeCompra();
|
|
},
|
|
saldoModificado(gdc_id) {
|
|
this.saldo_modificado[gdc_id] = true;
|
|
},
|
|
isSaldoModificado(gdc_id) {
|
|
return gdc_id in this.saldo_modificado && this.saldo_modificado[gdc_id];
|
|
},
|
|
getSaldo(gdc_id) {
|
|
for (var i = 0; i < this.grupos_de_compra.length; i++) {
|
|
if (this.grupos_de_compra[i].id == gdc_id) {
|
|
return this.grupos_de_compra[i].saldo;
|
|
}
|
|
}
|
|
return 0;
|
|
},
|
|
},
|
|
computed: {
|
|
...mapState('comisiones', [
|
|
'grupos_de_compra',
|
|
]),
|
|
},
|
|
async mounted() {
|
|
await this.getGruposDeCompra();
|
|
},
|
|
}
|
|
</script>
|