Compare commits
4 commits
917e3e1df3
...
88e3532418
Author | SHA1 | Date | |
---|---|---|---|
88e3532418 | |||
07289b01e9 | |||
5c1fa931eb | |||
744b867af3 |
8 changed files with 83 additions and 17 deletions
|
@ -17,7 +17,34 @@ class GrupoDeCompra extends Model
|
|||
protected $table = 'grupos_de_compra';
|
||||
protected $hidden = ['password'];
|
||||
|
||||
public function toggleDevoluciones()
|
||||
/**
|
||||
* @param $gdcs
|
||||
* @param array $planilla
|
||||
* @return array
|
||||
*/
|
||||
public static function getPlanilla($gdcs, array $planilla): array
|
||||
{
|
||||
$barrios = [""];
|
||||
foreach ($gdcs as $i => $gdc) {
|
||||
$barrios[] = $gdc->nombre;
|
||||
$productos_en_pedido = DB::table('pedidos_aprobados')->where('grupo_de_compra_id', $gdc->id)->get()->keyBy('producto_id');
|
||||
$pedidos = $gdc->pedidosAprobados();
|
||||
foreach ($productos_en_pedido as $id => $producto_pedido) {
|
||||
$total = 0;
|
||||
// Poner cantidad de cada producto para cada núcleo
|
||||
foreach ($pedidos as $pedido) {
|
||||
list($_, $_, $cantidad) = $gdc->agregarCantidad($pedido, $id, [], 0, 0);
|
||||
$total = $total + $cantidad;
|
||||
}
|
||||
$fila = Producto::productosIdFila()[$id];
|
||||
$planilla[$fila][$i+1] = $total;
|
||||
}
|
||||
}
|
||||
array_splice($planilla, 0, 0, array($barrios));
|
||||
return $planilla;
|
||||
}
|
||||
|
||||
public function toggleDevoluciones()
|
||||
{
|
||||
$this->devoluciones_habilitadas = !$this->devoluciones_habilitadas;
|
||||
$this->save();
|
||||
|
@ -85,7 +112,7 @@ class GrupoDeCompra extends Model
|
|||
throw new Exception('No hay bono de transporte');
|
||||
}
|
||||
|
||||
private function totalPedidosSinBonos() {
|
||||
private function totalPedidosSinBonos() {
|
||||
$total = 0;
|
||||
foreach ($this->pedidosAprobados() as $pedido) {
|
||||
$total += ceil($pedido->totalSinBonos());
|
||||
|
@ -166,9 +193,7 @@ class GrupoDeCompra extends Model
|
|||
$i = 1;
|
||||
// Poner cantidad de cada producto para cada núcleo
|
||||
foreach ($pedidos as $pedido) {
|
||||
$producto = $pedido->productos()->find($id);
|
||||
$records[$fila][$i] = $producto == NULL ? 0 : $producto["pivot"]["cantidad"];
|
||||
$i++;
|
||||
list($records, $i, $_) = $this->agregarCantidad($pedido, $id, $records, $fila, $i);
|
||||
}
|
||||
}
|
||||
// Insertar lista de núcleos en la primera fila
|
||||
|
@ -189,16 +214,21 @@ class GrupoDeCompra extends Model
|
|||
}
|
||||
}
|
||||
|
||||
public function agregarCantidad($pedido, $id, array $records, $fila, int $i): array
|
||||
{
|
||||
$producto = $pedido->productos()->find($id);
|
||||
$cantidad = $producto == NULL ? 0 : $producto->pivot->cantidad;
|
||||
$records[$fila][$i] = $cantidad;
|
||||
$i++;
|
||||
return array($records, $i, $cantidad);
|
||||
}
|
||||
|
||||
public static function exportarTodosLosPedidosEnCSV(){
|
||||
$gdcs = GrupoDeCompra::all();
|
||||
$planilla = GrupoDeCompra::obtenerTemplateDeFilasVacias($gdcs->count());
|
||||
$barrios = [""];
|
||||
foreach ($gdcs as $gdc) {
|
||||
$barrios[] = $gdc->nombre;
|
||||
}
|
||||
array_splice($planilla, 0, 0, array($barrios));
|
||||
$planilla = self::getPlanilla($gdcs, $planilla);
|
||||
|
||||
// Guardar en un archivo .csv
|
||||
// Guardar en un archivo .csv
|
||||
try {
|
||||
$writer = Writer::createFromPath(resource_path('csv/exports/total-pedidos.csv'), 'w');
|
||||
$writer->insertAll($planilla);
|
||||
|
|
|
@ -6,7 +6,11 @@ use App\GrupoDeCompra;
|
|||
|
||||
class ComprasController
|
||||
{
|
||||
public function pedidos() {
|
||||
public function indexPedidos() {
|
||||
return view('compras_pedidos');
|
||||
}
|
||||
|
||||
public function descargarPedidos() {
|
||||
GrupoDeCompra::exportarTodosLosPedidosEnCSV();
|
||||
$file = resource_path('csv/exports/total-pedidos.csv');
|
||||
return response()->download($file);
|
||||
|
|
|
@ -42,6 +42,10 @@ class Producto extends Model
|
|||
return Producto::pluck('id', 'fila',)->all();
|
||||
}
|
||||
|
||||
public static function productosIDFila() {
|
||||
return Producto::pluck('fila', 'id',)->all();
|
||||
}
|
||||
|
||||
public static function productosIDNombre() {
|
||||
return Producto::pluck('nombre', 'id',)->all();
|
||||
}
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
<td v-if="$root.devoluciones" class="has-text-right" ><abbr :title="pedido.devoluciones_notas">-{{ pedido.devoluciones_total }}</abbr></td>
|
||||
<td class="has-text-right" >{{ $root.devoluciones ? pedido.total_menos_devoluciones : pedido.total }}</td>
|
||||
<td>
|
||||
<pedidos-admin-switch-aprobacion
|
||||
<admin-switch-aprobacion
|
||||
:pedido="pedido">
|
||||
</pedidos-admin-switch-aprobacion>
|
||||
</admin-switch-aprobacion>
|
||||
</td>
|
||||
</tr>
|
||||
</template>
|
||||
|
|
|
@ -11,10 +11,10 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<pedidos-admin-fila-pedido
|
||||
<admin-fila-pedido
|
||||
v-for="pedido in this.pedidos"
|
||||
:pedido="pedido" :key="pedido.id">
|
||||
</pedidos-admin-fila-pedido>
|
||||
</admin-fila-pedido>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table is-striped is-bordered">
|
||||
|
|
22
resources/js/components/compras/Body.vue
Normal file
22
resources/js/components/compras/Body.vue
Normal file
|
@ -0,0 +1,22 @@
|
|||
<template>
|
||||
<div class="container is-fluid has-text-centered">
|
||||
<div class="block">
|
||||
<div class="field">
|
||||
<p class="control">
|
||||
<a href="/compras/pedidos/descargar" class="button">
|
||||
<span class="icon is-small">
|
||||
<i class="fas fa-download"></i>
|
||||
</span>
|
||||
<span>Descargar planilla de totales</span>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
|
||||
}
|
||||
</script>
|
5
resources/views/compras_pedidos.blade.php
Normal file
5
resources/views/compras_pedidos.blade.php
Normal file
|
@ -0,0 +1,5 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<compras-body></compras-body>
|
||||
@endsection
|
|
@ -79,5 +79,6 @@ Route::middleware('auth')->group( function() {
|
|||
Route::get('/compras', 'ComprasController@show')->name('compras_login.show');
|
||||
|
||||
Route::middleware(['compras'])->group( function() {
|
||||
Route::get('/compras/pedidos', 'ComprasController@pedidos')->name('compras.pedidos');
|
||||
Route::get('/compras/pedidos', 'ComprasController@indexPedidos')->name('compras.pedidos');
|
||||
Route::get('/compras/pedidos/descargar', 'ComprasController@descargarPedidos')->name('compras.pedidos.descargar');
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue