diff --git a/app/GrupoDeCompra.php b/app/GrupoDeCompra.php index c5172a9..a16f87b 100644 --- a/app/GrupoDeCompra.php +++ b/app/GrupoDeCompra.php @@ -290,4 +290,9 @@ class GrupoDeCompra extends Model ->get() ->keyBy('producto_id'); } + + public function setSaldo(float $saldo) { + $this->saldo = $saldo; + $this->save(); + } } diff --git a/app/Http/Controllers/Api/GrupoDeCompraController.php b/app/Http/Controllers/Api/GrupoDeCompraController.php index 754b1ae..1c57878 100644 --- a/app/Http/Controllers/Api/GrupoDeCompraController.php +++ b/app/Http/Controllers/Api/GrupoDeCompraController.php @@ -32,4 +32,13 @@ class GrupoDeCompraController extends Controller GrupoDeCompra::find($gdc)->toggleDevoluciones(); return response()->noContent(); } + + public function setSaldo(int $gdc) { + $valid = request()->validate([ + 'saldo' => ['required', 'min:0'], + ]); + $grupoDeCompra = GrupoDeCompra::find($gdc); + $grupoDeCompra->setSaldo($valid['saldo']); + return new GrupoDeCompraResource($grupoDeCompra); + } } diff --git a/app/Http/Resources/GrupoDeCompraResource.php b/app/Http/Resources/GrupoDeCompraResource.php index b19aa13..ee0552e 100644 --- a/app/Http/Resources/GrupoDeCompraResource.php +++ b/app/Http/Resources/GrupoDeCompraResource.php @@ -21,14 +21,14 @@ class GrupoDeCompraResource extends JsonResource 'devoluciones_habilitadas' => $this->devoluciones_habilitadas, 'pedidos' => SubpedidoResource::collection($this->subpedidos), 'total_a_recaudar' => number_format($this->totalARecaudar(),2), - 'saldo' => number_format($this->saldo,2), + 'saldo' => number_format($this->saldo, 2, ".", ""), 'total_sin_devoluciones' => number_format($this->totalSinDevoluciones(),2), 'total_barrial' => number_format($this->totalBarrial(),2), 'total_devoluciones' => number_format($this->totalDevoluciones(),2), 'total_de_pedido' => number_format($this->totalDePedido(),2), 'total_a_transferir' => number_format($this->totalATransferir(),2), 'total_transporte' => number_format($this->totalTransporte()), - 'cantidad_transporte' => number_format($this->cantidadTransporte()), + 'cantidad_transnumber_formatporte' => number_format($this->cantidadTransporte()), ]; } } diff --git a/resources/js/components/admin/TablaPedidos.vue b/resources/js/components/admin/TablaPedidos.vue index bcc9713..1aae42c 100644 --- a/resources/js/components/admin/TablaPedidos.vue +++ b/resources/js/components/admin/TablaPedidos.vue @@ -48,7 +48,7 @@ Saldo a favor: - $ {{ saldo }} + - $ {{ saldo }} Total a transferir: diff --git a/resources/js/components/comisiones/Body.vue b/resources/js/components/comisiones/Body.vue index 42108a2..990ed72 100644 --- a/resources/js/components/comisiones/Body.vue +++ b/resources/js/components/comisiones/Body.vue @@ -46,11 +46,31 @@ :class="seccionActiva === 'saldos-comisiones-seccion' ? 'is-active' : 'is-hidden'" >
- +
+ + + + + + - + +
BarrioSaldo
{{ gdc.nombre }}{{ gdc.saldo }} + + + +
@@ -71,6 +91,7 @@ export default { TabsSecciones, DropdownDescargar, CanastaInput, + InputFileButton, }, data() { return { @@ -82,6 +103,7 @@ export default { tabActiva: "pedidos-comisiones", seccionActiva: "pedidos-comisiones-seccion", archivo: undefined, + saldo_modificado: {}, } }, methods: { @@ -89,7 +111,30 @@ export default { this.tabActiva = tabId; this.seccionActiva = tabId + "-seccion"; }, - ...mapActions('comisiones', ['getGruposDeCompra']), + ...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', [ diff --git a/resources/js/store/modules/comisiones.js b/resources/js/store/modules/comisiones.js index 04f480f..024de04 100644 --- a/resources/js/store/modules/comisiones.js +++ b/resources/js/store/modules/comisiones.js @@ -1,12 +1,21 @@ import axios from "axios"; const state = { - grupos_de_compra: null, + grupos_de_compra: [], }; const mutations = { - setGruposDeCompra(state, { grupos_de_compra }) { - state.grupos_de_compra = grupos_de_compra; + setGruposDeCompra(state, { data }) { + state.grupos_de_compra = data; + }, + setGrupoDeCompra(state, gdc) { + for (var i = 0; i < state.grupos_de_compra.length; i++) { + if (state.grupos_de_compra[i].id == gdc.id) { + state.grupos_de_compra[i] = gdc; + return; + } + } + state.grupos_de_compra.push(gdc); }, }; @@ -15,9 +24,20 @@ const actions = { const response = await axios.get('/api/grupos-de-compra'); commit('setGruposDeCompra', response.data); }, + async setSaldo({ commit }, { gdc_id, saldo }) { + const response = await axios.post( + "api/grupos-de-compra/" + gdc_id + "/saldo", + { saldo: saldo } + ); + commit('setGrupoDeCompra', response.data.data); + }, }; -const getters = {}; +const getters = { + getSaldo() { + return (gdc_id) => state.grupos_de_compra.find(gdc => gdc.id === gdc_id)?.saldo ?? 0; + }, +}; export default { namespaced: true, diff --git a/routes/api.php b/routes/api.php index 91aac3e..c9d08d1 100644 --- a/routes/api.php +++ b/routes/api.php @@ -23,6 +23,7 @@ Route::middleware('api')->group(function() { Route::get('/', 'Api\GrupoDeCompraController@index'); Route::get('/{grupoDeCompra}', 'Api\GrupoDeCompraController@show'); Route::post('/{gdc}/devoluciones', 'Api\GrupoDeCompraController@toggleDevoluciones'); + Route::post('/{gdc}/saldo', 'Api\GrupoDeCompraController@setSaldo'); }); Route::prefix('subpedidos')->group(function () {