Compare commits
8 commits
91225d7796
...
c514569acd
Author | SHA1 | Date | |
---|---|---|---|
c514569acd | |||
0fc370e9d1 | |||
9332aa33c1 | |||
c11331695a | |||
688abf406d | |||
ceaddcabc3 | |||
f9a0ee5146 | |||
e879daa73e |
10 changed files with 51 additions and 61 deletions
|
@ -17,7 +17,7 @@ class CsvHelper
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public static function getRecords($filePath, $message): Iterator {
|
public static function getRecords($filePath, $message): Iterator {
|
||||||
$csv = Reader::createFromPath(storage_path($filePath));
|
$csv = Reader::createFromPath($filePath);
|
||||||
try {
|
try {
|
||||||
$csv->setDelimiter("|");
|
$csv->setDelimiter("|");
|
||||||
$csv->setEnclosure("'");
|
$csv->setEnclosure("'");
|
||||||
|
|
|
@ -31,7 +31,7 @@ class TransporteHelper
|
||||||
->pluck('path')
|
->pluck('path')
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
$registros = CsvHelper::getRecords($ultimaCanasta, "No se encontró la ultima canasta.");
|
$registros = CsvHelper::getRecords(storage_path($ultimaCanasta), "No se encontró la ultima canasta.");
|
||||||
$error = 'No hay fila de tipo T en la planilla: ' . $ultimaCanasta;
|
$error = 'No hay fila de tipo T en la planilla: ' . $ultimaCanasta;
|
||||||
|
|
||||||
foreach ($registros as $key => $registro)
|
foreach ($registros as $key => $registro)
|
||||||
|
|
|
@ -39,6 +39,6 @@ class GrupoDeCompraController extends Controller
|
||||||
]);
|
]);
|
||||||
$grupoDeCompra = GrupoDeCompra::find($gdc);
|
$grupoDeCompra = GrupoDeCompra::find($gdc);
|
||||||
$grupoDeCompra->setSaldo($valid['saldo']);
|
$grupoDeCompra->setSaldo($valid['saldo']);
|
||||||
return new GrupoDeCompraResource($grupoDeCompra);
|
return response()->noContent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,12 +5,12 @@ namespace App\Http\Controllers;
|
||||||
use App\GrupoDeCompra;
|
use App\GrupoDeCompra;
|
||||||
use App\Helpers\CanastaHelper;
|
use App\Helpers\CanastaHelper;
|
||||||
use App\Helpers\CsvHelper;
|
use App\Helpers\CsvHelper;
|
||||||
|
use App\Http\Resources\GrupoDeCompraResource;
|
||||||
use App\Producto;
|
use App\Producto;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use League\Csv\Exception;
|
use League\Csv\Exception;
|
||||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||||
use League\Csv\Reader;
|
|
||||||
|
|
||||||
class ComisionesController
|
class ComisionesController
|
||||||
{
|
{
|
||||||
|
@ -65,7 +65,7 @@ class ComisionesController
|
||||||
|
|
||||||
$nombre = CanastaHelper::guardarCanasta($request->file('data'), self::CANASTAS_PATH);
|
$nombre = CanastaHelper::guardarCanasta($request->file('data'), self::CANASTAS_PATH);
|
||||||
try {
|
try {
|
||||||
CanastaHelper::cargarCanasta(self::CANASTAS_PATH . $nombre);
|
CanastaHelper::cargarCanasta(storage_path(self::CANASTAS_PATH . $nombre));
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
return response()->json(['message' => $e->getMessage()], 500);
|
return response()->json(['message' => $e->getMessage()], 500);
|
||||||
}
|
}
|
||||||
|
@ -102,8 +102,6 @@ class ComisionesController
|
||||||
->update(['saldo' => $saldo]);
|
->update(['saldo' => $saldo]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return response()->json([
|
return response()->json(GrupoDeCompraResource::collection(GrupoDeCompra::all()));
|
||||||
'message' => 'Saldos cargados exitosamente',
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ class GrupoDeCompraResource extends JsonResource
|
||||||
'total_de_pedido' => number_format($this->totalDePedido(),2),
|
'total_de_pedido' => number_format($this->totalDePedido(),2),
|
||||||
'total_a_transferir' => number_format($this->totalATransferir(),2),
|
'total_a_transferir' => number_format($this->totalATransferir(),2),
|
||||||
'total_transporte' => number_format($this->totalTransporte()),
|
'total_transporte' => number_format($this->totalTransporte()),
|
||||||
'cantidad_transnumber_formatporte' => number_format($this->cantidadTransporte()),
|
'cantidad_transporte' => number_format($this->cantidadTransporte()),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ class AgregarSaldosABarrios extends Migration
|
||||||
{
|
{
|
||||||
// Agregar columna 'saldo' a la tabla 'grupos_de_compra'
|
// Agregar columna 'saldo' a la tabla 'grupos_de_compra'
|
||||||
Schema::table('grupos_de_compra', function (Blueprint $table) {
|
Schema::table('grupos_de_compra', function (Blueprint $table) {
|
||||||
$table->double('saldo', 10, 2);
|
$table->double('saldo', 10, 2)->default(0);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,6 @@ class CanastaSeeder extends Seeder
|
||||||
*/
|
*/
|
||||||
public function run()
|
public function run()
|
||||||
{
|
{
|
||||||
CanastaHelper::cargarCanasta(self::ARCHIVO_DEFAULT);
|
CanastaHelper::cargarCanasta(resource_path(self::ARCHIVO_DEFAULT));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ class GrupoDeCompraSeeder extends Seeder
|
||||||
*/
|
*/
|
||||||
public function run()
|
public function run()
|
||||||
{
|
{
|
||||||
$registros = CsvHelper::getRecords('csv/barrios.csv', 'No se pudo leer la planilla de barrios.');
|
$registros = CsvHelper::getRecords(resource_path('csv/barrios.csv'), 'No se pudo leer la planilla de barrios.');
|
||||||
$gdcToInsert = [];
|
$gdcToInsert = [];
|
||||||
$usersToInsert = [];
|
$usersToInsert = [];
|
||||||
$roles = UserRole::where('nombre', 'barrio')->orWhere('nombre', 'admin_barrio')->get();
|
$roles = UserRole::where('nombre', 'barrio')->orWhere('nombre', 'admin_barrio')->get();
|
||||||
|
|
|
@ -14,15 +14,20 @@ export default {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapActions('ui',["toast"]),
|
...mapActions('ui',["toast"]),
|
||||||
...mapActions('comisiones', ['setSaldo']),
|
...mapActions('comisiones', ['setSaldo', 'cargarSaldos']),
|
||||||
async confirmar_saldo(gdc_id) {
|
async confirmar_saldo(gdc_id) {
|
||||||
var saldo = this.getSaldo(gdc_id);
|
|
||||||
await this.setSaldo({
|
await this.setSaldo({
|
||||||
gdc_id: gdc_id,
|
gdc_id: gdc_id,
|
||||||
saldo: saldo,
|
saldo: this.getSaldo(gdc_id),
|
||||||
});
|
});
|
||||||
this.saldo_modificado[gdc_id] = false;
|
this.saldo_modificado[gdc_id] = false;
|
||||||
await this.getGruposDeCompra();
|
},
|
||||||
|
async archivoSubido(event) {
|
||||||
|
event.component.cargando = true;
|
||||||
|
const formData = new FormData();
|
||||||
|
formData.append('data',event.archivo);
|
||||||
|
await this.cargarSaldos(formData);
|
||||||
|
event.component.cargando = false;
|
||||||
},
|
},
|
||||||
saldoModificado(gdc_id) {
|
saldoModificado(gdc_id) {
|
||||||
this.saldo_modificado[gdc_id] = true;
|
this.saldo_modificado[gdc_id] = true;
|
||||||
|
@ -31,35 +36,8 @@ export default {
|
||||||
return gdc_id in this.saldo_modificado && this.saldo_modificado[gdc_id];
|
return gdc_id in this.saldo_modificado && this.saldo_modificado[gdc_id];
|
||||||
},
|
},
|
||||||
getSaldo(gdc_id) {
|
getSaldo(gdc_id) {
|
||||||
for (var i = 0; i < this.grupos_de_compra.length; i++) {
|
const barrio = this.grupos_de_compra.find(gdc => gdc.id === gdc_id);
|
||||||
if (this.grupos_de_compra[i].id == gdc_id) {
|
return barrio.saldo;
|
||||||
return this.grupos_de_compra[i].saldo;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
},
|
|
||||||
async saldosSubido(event) {
|
|
||||||
var archivo = event.archivo;
|
|
||||||
if (archivo.type === "text/csv") {
|
|
||||||
const formData = new FormData();
|
|
||||||
formData.append("data", archivo);
|
|
||||||
try {
|
|
||||||
const response = await axios.post("/comisiones/saldos", formData, {
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "multipart/form-data",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
this.getGruposDeCompra();
|
|
||||||
this.toast({ mensaje: (response.data.message || "Canasta cargada exitosamente") });
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
this.toast({ mensaje: (error.response?.data?.message || "Hubo errores.") });
|
|
||||||
}
|
|
||||||
event.component.cargando = false;
|
|
||||||
} else {
|
|
||||||
this.toast("El archivo debe ser .CSV");
|
|
||||||
event.component.cargando = false;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
toggleSaldosFileDialog() {
|
toggleSaldosFileDialog() {
|
||||||
this.show_saldos_file_dialog = !this.show_saldos_file_dialog;
|
this.show_saldos_file_dialog = !this.show_saldos_file_dialog;
|
||||||
|
@ -98,12 +76,12 @@ export default {
|
||||||
<article class="message is-danger mt-2">
|
<article class="message is-danger mt-2">
|
||||||
<div class="message-body">
|
<div class="message-body">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
Cargar un archivo de saldos sólo reemplazará los saldos de los barrios presentes en la tabla.
|
Al cargar un archivo, se reemplazaran los saldos de los barrios que éste contenga, el resto quedará sin cambiar.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
<input-file-button text="Subir archivo" @archivo-subido="saldosSubido" />
|
<input-file-button text="Subir archivo" @archivo-subido="archivoSubido" />
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
|
|
36
resources/js/store/modules/comisiones.js
vendored
36
resources/js/store/modules/comisiones.js
vendored
|
@ -8,14 +8,10 @@ const mutations = {
|
||||||
setGruposDeCompra(state, { data }) {
|
setGruposDeCompra(state, { data }) {
|
||||||
state.grupos_de_compra = data;
|
state.grupos_de_compra = data;
|
||||||
},
|
},
|
||||||
setGrupoDeCompra(state, gdc) {
|
setSaldo(state, { gdc_id, saldo }) {
|
||||||
for (var i = 0; i < state.grupos_de_compra.length; i++) {
|
const barrio = state.grupos_de_compra.find(gdc => gdc.id === gdc_id);
|
||||||
if (state.grupos_de_compra[i].id == gdc.id) {
|
const i = state.grupos_de_compra.indexOf(barrio);
|
||||||
state.grupos_de_compra[i] = gdc;
|
state.grupos_de_compra[i].saldo = saldo;
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
state.grupos_de_compra.push(gdc);
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -24,12 +20,30 @@ const actions = {
|
||||||
const response = await axios.get('/api/grupos-de-compra');
|
const response = await axios.get('/api/grupos-de-compra');
|
||||||
commit('setGruposDeCompra', response.data);
|
commit('setGruposDeCompra', response.data);
|
||||||
},
|
},
|
||||||
async setSaldo({ commit }, { gdc_id, saldo }) {
|
async setSaldo({ commit, dispatch }, { gdc_id, saldo }) {
|
||||||
const response = await axios.post(
|
try {
|
||||||
|
await axios.post(
|
||||||
"api/grupos-de-compra/" + gdc_id + "/saldo",
|
"api/grupos-de-compra/" + gdc_id + "/saldo",
|
||||||
{ saldo: saldo }
|
{ saldo: saldo }
|
||||||
);
|
);
|
||||||
commit('setGrupoDeCompra', response.data.data);
|
commit('setSaldo', { gdc_id: gdc_id, saldo: saldo });
|
||||||
|
dispatch("ui/toast", { mensaje: 'Saldo modificado con éxito' }, { root: true });
|
||||||
|
} catch (error) {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async cargarSaldos({ commit, dispatch }, formData) {
|
||||||
|
try {
|
||||||
|
const response = await axios.post("/comisiones/saldos", formData, {
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "multipart/form-data",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
commit('setGruposDeCompra', response);
|
||||||
|
dispatch("ui/toast", { mensaje: 'Saldos cargados con éxito' }, { root: true });
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
dispatch("ui/error", { error: error }, { root: true });
|
||||||
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue