Compare commits
9 commits
0f8e58841e
...
71a6e496e9
| Author | SHA1 | Date | |
|---|---|---|---|
| 71a6e496e9 | |||
| dcf1659042 | |||
| 8dc76eca67 | |||
| c25b369e26 | |||
| bc37347c30 | |||
| 5670ddf55a | |||
| deca03865f | |||
| 68cb740187 | |||
| cdd10a870d |
8 changed files with 194 additions and 35 deletions
|
|
@ -68,23 +68,11 @@ class SubpedidoController extends Controller
|
||||||
|
|
||||||
// recibe request, saca producto y cantidad, valida, y pasa a syncProducto en Subpedido
|
// recibe request, saca producto y cantidad, valida, y pasa a syncProducto en Subpedido
|
||||||
public function syncProductos(Subpedido $subpedido) {
|
public function syncProductos(Subpedido $subpedido) {
|
||||||
if ($subpedido->aprobado)
|
$faltantesYSobrantes = TipoPedido::firstOrCreate(['nombre' => 'faltantes_y_sobrantes']);
|
||||||
abort(400, "No se puede modificar un pedido aprobado.");
|
if ($subpedido->tipo_pedido_id == $faltantesYSobrantes->id) {
|
||||||
|
return $this->syncFaltantesYSobrantes($subpedido);
|
||||||
$valid = request()->validate([
|
}
|
||||||
'cantidad' => ['integer','required','min:0'],
|
return $this->syncPedidoNormal($subpedido);
|
||||||
'notas' => 'nullable',
|
|
||||||
'producto_id' => [
|
|
||||||
'required',
|
|
||||||
Rule::in(Producto::all()->pluck('id')),
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
|
|
||||||
$producto = Producto::find($valid['producto_id']);
|
|
||||||
$notas = $valid['notas'];
|
|
||||||
$cantidad = $valid['cantidad'];
|
|
||||||
$subpedido->syncProducto($producto, $cantidad, $notas ?? "");
|
|
||||||
return new SubpedidoResource($subpedido);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function toggleAprobacion(Subpedido $subpedido) {
|
public function toggleAprobacion(Subpedido $subpedido) {
|
||||||
|
|
@ -107,4 +95,53 @@ class SubpedidoController extends Controller
|
||||||
|
|
||||||
return new SubpedidoResource($subpedido);
|
return new SubpedidoResource($subpedido);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Subpedido $subpedido
|
||||||
|
* @return SubpedidoResource
|
||||||
|
*/
|
||||||
|
public function syncPedidoNormal(Subpedido $subpedido): SubpedidoResource
|
||||||
|
{
|
||||||
|
if ($subpedido->aprobado)
|
||||||
|
abort(400, "No se puede modificar un pedido aprobado.");
|
||||||
|
|
||||||
|
$valid = request()->validate([
|
||||||
|
'cantidad' => ['integer', 'required', 'min:0'],
|
||||||
|
'notas' => 'nullable',
|
||||||
|
'producto_id' => [
|
||||||
|
'required',
|
||||||
|
Rule::in(Producto::all()->pluck('id')),
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$producto = Producto::find($valid['producto_id']);
|
||||||
|
$notas = $valid['notas'];
|
||||||
|
$cantidad = $valid['cantidad'];
|
||||||
|
$subpedido->syncProducto($producto, $cantidad, $notas ?? "");
|
||||||
|
return new SubpedidoResource($subpedido);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Subpedido $subpedido
|
||||||
|
* @return SubpedidoResource
|
||||||
|
*/
|
||||||
|
public function syncFaltantesYSobrantes(Subpedido $subpedido): SubpedidoResource
|
||||||
|
{
|
||||||
|
$producto_id = request()->producto_id;
|
||||||
|
$producto = Producto::find($producto_id);
|
||||||
|
if (!$producto) {
|
||||||
|
throw new HttpException(400, "No se encontro el producto.");
|
||||||
|
}
|
||||||
|
|
||||||
|
$cantidad = -1*($subpedido->productos()->find($producto_id)?->cantidad ?? 0);
|
||||||
|
|
||||||
|
$valid = request()->validate([
|
||||||
|
'cantidad' => ['integer', 'required', 'min:' . $cantidad],
|
||||||
|
'producto_id' => ['required']
|
||||||
|
]);
|
||||||
|
|
||||||
|
$cantidad = $valid['cantidad'];
|
||||||
|
$subpedido->syncProducto($producto, $cantidad, null);
|
||||||
|
return new SubpedidoResource($subpedido);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
27
app/Http/Controllers/FaltantesYSobrantesController.php
Normal file
27
app/Http/Controllers/FaltantesYSobrantesController.php
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\GrupoDeCompra;
|
||||||
|
use App\Http\Resources\PedidoFaltantesYSobrantesResource;
|
||||||
|
use App\Http\Resources\PedidoOllasResource;
|
||||||
|
use App\TipoPedido;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class FaltantesYSobrantesController extends Controller
|
||||||
|
{
|
||||||
|
public function show()
|
||||||
|
{
|
||||||
|
return view('auth/login');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function pedido(GrupoDeCompra $gdc)
|
||||||
|
{
|
||||||
|
$tipoFaltantesYSobrantes = TipoPedido::firstOrCreate(['nombre' => 'faltantes_y_sobrantes']);
|
||||||
|
$pedido = $gdc->subpedidos()->firstOrCreate([
|
||||||
|
'nombre' => 'Faltantes y Sobrantes de ' . $gdc->nombre,
|
||||||
|
'tipo_pedido_id' => $tipoFaltantesYSobrantes->id,
|
||||||
|
]);
|
||||||
|
return response()->json(new PedidoFaltantesYSobrantesResource($pedido));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Resources;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class GrupoDeCompraFaltantesYSobrantesResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @return array<string, mixed>
|
||||||
|
*/
|
||||||
|
public function toArray(Request $request): array
|
||||||
|
{
|
||||||
|
$productos_cantidades = [];
|
||||||
|
$productosPedidos = $this->productosPedidos();
|
||||||
|
foreach ($productosPedidos as $productoPedido) {
|
||||||
|
$productos_cantidades[$productoPedido->producto_id] = $productoPedido->cantidad_pedida;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'id' => $this->id,
|
||||||
|
'nombre' => $this->nombre,
|
||||||
|
'productos_cantidades' => $productos_cantidades,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -15,6 +15,14 @@ class GrupoDeCompraResource extends JsonResource
|
||||||
*/
|
*/
|
||||||
public function toArray($request): array
|
public function toArray($request): array
|
||||||
{
|
{
|
||||||
|
$productos_cantidades = [];
|
||||||
|
$productos_pedidos = $this->productosPedidos();
|
||||||
|
foreach ($productos_pedidos as $productoPedido) {
|
||||||
|
$productos_cantidades[] = [
|
||||||
|
"id" => $productoPedido->producto_id,
|
||||||
|
"cantidad" => $productoPedido->cantidad_pedida
|
||||||
|
];
|
||||||
|
}
|
||||||
return [
|
return [
|
||||||
'id' => $this->id,
|
'id' => $this->id,
|
||||||
'nombre' => $this->nombre,
|
'nombre' => $this->nombre,
|
||||||
|
|
@ -29,6 +37,7 @@ class GrupoDeCompraResource extends JsonResource
|
||||||
'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_transporte' => number_format($this->cantidadTransporte()),
|
'cantidad_transporte' => number_format($this->cantidadTransporte()),
|
||||||
|
'productos_cantidades' => $productos_cantidades,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
28
app/Http/Resources/PedidoFaltantesYSobrantesResource.php
Normal file
28
app/Http/Resources/PedidoFaltantesYSobrantesResource.php
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Resources;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class PedidoFaltantesYSobrantesResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toArray($request): array
|
||||||
|
{
|
||||||
|
$productos = $this->productos;
|
||||||
|
foreach ($productos as $producto) {
|
||||||
|
$producto['pivot']['total'] = number_format($producto->pivot->cantidad * $producto->precio, 2);
|
||||||
|
}
|
||||||
|
return [
|
||||||
|
'id' => $this->id,
|
||||||
|
'nombre' => $this->nombre,
|
||||||
|
'productos' => $productos,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use App\TipoPedido;
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
TipoPedido::firstOrCreate(['nombre' => 'faltantes_y_sobrantes']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
$faltantesYSobrantes = TipoPedido::where('nombre', 'faltantes_y_sobrantes')->firstOrFail();
|
||||||
|
$faltantesYSobrantes->delete();
|
||||||
|
}
|
||||||
|
};
|
||||||
1
package-lock.json
generated
1
package-lock.json
generated
|
|
@ -4,7 +4,6 @@
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "www",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"animate.css": "^4.1.1",
|
"animate.css": "^4.1.1",
|
||||||
"bulma": "^0.9.4",
|
"bulma": "^0.9.4",
|
||||||
|
|
|
||||||
|
|
@ -38,27 +38,27 @@ Route::middleware(['auth', 'role:barrio'])->group(function() {
|
||||||
|
|
||||||
Route::get('/admin/login', 'AdminController@show')->name('admin.login');
|
Route::get('/admin/login', 'AdminController@show')->name('admin.login');
|
||||||
|
|
||||||
Route::middleware(['auth', 'role:admin_barrio'])->group(function () {
|
Route::middleware(['auth', 'role:admin_barrio'])->prefix('admin')->group(function () {
|
||||||
Route::get('/admin', 'RouteController@main')->name('admin');
|
Route::get('/', 'RouteController@main')->name('admin');
|
||||||
|
Route::get('/exportar-planillas-a-pdf/{gdc}', 'AdminController@exportarPedidosAPdf');
|
||||||
Route::get('/admin/exportar-planillas-a-pdf/{gdc}', 'AdminController@exportarPedidosAPdf');
|
Route::get('/exportar-pedido-a-csv/{gdc}', 'AdminController@exportarPedidoACSV');
|
||||||
Route::get('/admin/exportar-pedido-a-csv/{gdc}', 'AdminController@exportarPedidoACSV');
|
Route::get('/exportar-pedido-con-nucleos-a-csv/{gdc}', 'AdminController@exportarPedidoConNucleosACSV');
|
||||||
Route::get('/admin/exportar-pedido-con-nucleos-a-csv/{gdc}', 'AdminController@exportarPedidoConNucleosACSV');
|
Route::get('/{gdc}/faltantes-y-sobrantes', 'FaltantesYSobrantesController@pedido');
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::get('/comisiones/login', 'ComisionesController@show')->name('comisiones.login');
|
Route::get('/comisiones/login', 'ComisionesController@show')->name('comisiones.login');
|
||||||
|
|
||||||
Route::middleware(['auth', 'role:comision'])->group( function() {
|
Route::middleware(['auth', 'role:comision'])->prefix('comisiones')->group( function() {
|
||||||
Route::get('/comisiones', 'RouteController@main')->name('comisiones');
|
Route::get('/', 'RouteController@main')->name('comisiones');
|
||||||
Route::get('/comisiones/pedidos/descargar', 'ComisionesController@descargarPedidos')->name('comisiones.pedidos.descargar');
|
Route::get('/pedidos/descargar', 'ComisionesController@descargarPedidos')->name('comisiones.pedidos.descargar');
|
||||||
Route::get('/comisiones/pedidos/notas', 'ComisionesController@descargarNotas')->name('comisiones.pedidos.notas');
|
Route::get('/pedidos/notas', 'ComisionesController@descargarNotas')->name('comisiones.pedidos.notas');
|
||||||
Route::get('/comisiones/pedidos/pdf', 'ComisionesController@pdf')->name('comisiones.pedidos.pdf');
|
Route::get('/pedidos/pdf', 'ComisionesController@pdf')->name('comisiones.pedidos.pdf');
|
||||||
Route::get('/comisiones/pedidos/ollas', 'ComisionesController@descargarPedidosDeOllas')->name('comisiones.pedidos.ollas');
|
Route::get('/pedidos/ollas', 'ComisionesController@descargarPedidosDeOllas')->name('comisiones.pedidos.ollas');
|
||||||
Route::get('/comisiones/canasta/ejemplo', 'ComisionesController@descargarCanastaEjemplo')->name('comisiones.canasta.ejemplo');
|
Route::get('/canasta/ejemplo', 'ComisionesController@descargarCanastaEjemplo')->name('comisiones.canasta.ejemplo');
|
||||||
Route::post('/comisiones/canasta', 'ComisionesController@cargarCanasta')->name('comisiones.canasta');
|
Route::post('/canasta', 'ComisionesController@cargarCanasta')->name('comisiones.canasta');
|
||||||
Route::get('/comisiones/saldos/ejemplo', 'ComisionesController@descargarSaldosEjemplo')->name('comisiones.saldos.ejemplo');
|
Route::get('/saldos/ejemplo', 'ComisionesController@descargarSaldosEjemplo')->name('comisiones.saldos.ejemplo');
|
||||||
Route::post('/comisiones/saldos', 'ComisionesController@cargarSaldos')->name('comisiones.saldos');
|
Route::post('/saldos', 'ComisionesController@cargarSaldos')->name('comisiones.saldos');
|
||||||
Route::put('/comisiones/parametros/{parametro_id}', 'ComisionesController@modificarParametros');
|
Route::put('/parametros/{parametro_id}', 'ComisionesController@modificarParametros');
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::get('/ollas/login', 'OllasController@show')->name('ollas.login');
|
Route::get('/ollas/login', 'OllasController@show')->name('ollas.login');
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue