APDevs - ITC
Construir un modulo de paquetes para el punto de venta
<?php
namespace Modules\Paquetes\Http\Controllers\API;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Paquetes\Entities\Paquete;
use Modules\Sucursales\Entities\Local;
use Exception;
class PaquetesController extends Controller
{
/**
* Display a listing of the resource.
* @return Response
*/
public function index(Request $request, $local_id)
{
$local = Local::findOrFail($local_id);
return $local->paquetes()->with('opciones')->get();
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Response
*/
public function store(Request $request, $local_id)
{
$local = Local::findOrFail($local_id);
$paquete = new Paquete($request->all());
$paquete->local()->associate($local);
$paquete->saveOrFail();
return $paquete;
}
/**
* Show the specified resource.
* @return Response
*/
public function show($local_id, $paquete_id)
{
$paquete = Paquete::where('local_id', '=', $local_id)
->with('opciones.platillos', 'opciones.paquetes')
->findOrFail($paquete_id);
return $paquete;
}
/**
* Update the specified resource in storage.
* @param Request $request
* @return Response
*/
public function update(Request $request, $local_id, $paquete_id)
{
$paquete = Paquete::where('local_id', '=', $local_id)
->findOrFail($paquete_id);
$paquete->fill($request->all());
$paquete->saveOrFail();
return $paquete;
}
/**
* Remove the specified resource from storage.
* @return Response
*/
public function destroy(Request $request, $local_id, $paquete_id)
{
$paquete = Paquete::where('local_id', '=', $local_id)
->findOrFail($paquete_id);
if (! $paquete->delete()) {
throw new Exception('Error al eliminar paquete');
}
return response()->noContent();
}
}
<?php
namespace Modules\Paquetes\Http\Controllers\API;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Paquetes\Entities\Paquete;
use Modules\Paquetes\Entities\OpcionPaquete;
use Exception;
class OpcionesPaquetesController extends Controller
{
/**
* Display a listing of the resource.
* @return Response
*/
public function index(Request $request, $local_id, $paquete_id)
{
$paquete = Paquete::where('local_id', '=', $local_id)
->findOrFail($paquete_id);
return $paquete->opciones()->with('platillos', 'productos')->get();
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Response
*/
public function store(Request $request, $local_id, $paquete_id)
{
$paquete = Paquete::where('local_id', '=', $local_id)
->findOrFail($paquete_id);
$opcion = new OpcionPaquete($request->all());
$opcion->paquete()->associate($paquete);
$opcion->saveOrFail();
return $opcion;
}
/**
* Show the specified resource.
* @return Response
*/
public function show(Request $request, $local_id, $paquete_id, $opcion_id)
{
$paquete = Paquete::where('local_id', '=', $local_id)
->findOrFail($paquete_id);
$opcion = $paquete->opciones()
->with('platillos', 'productos')
->findOrFail($opcion_id);
$opcion->setRelation('paquete', $paquete);
return $opcion;
}
/**
* Update the specified resource in storage.
* @param Request $request
* @return Response
*/
public function update(Request $request, $local_id, $paquete_id, $opcion_id)
{
$paquete = Paquete::where('local_id', '=', $local_id)
->findOrFail($paquete_id);
$opcion = $paquete->opciones()->findOrFail($opcion_id);
$opcion->fill($request->all());
$opcion->saveOrFail();
return $opcion;
}
/**
* Remove the specified resource from storage.
* @return Response
*/
public function destroy(Request $request, $local_id, $paquete_id, $opcion_id)
{
$paquete = Paquete::where('local_id', '=', $local_id)
->findOrFail($paquete_id);
$opcion = $paquete->opciones()->findOrFail($opcion_id);
if (! $opcion->delete()) {
throw new Exception('Error al eliminar la opcion del paquete');
}
return ['success'=>'true'];
}
}
<?php
namespace Modules\Paquetes\Http\Controllers\API;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Paquetes\Entities\Paquete;
use Modules\Paquetes\Entities\OpcionPaquete;
use Modules\Productos\Entities\Producto;
use Exception;
class ProductosPaquetesController extends Controller
{
/**
* Show the form for creating a new resource.
* @return Response
*/
public function create(Request $request, $local_id, $paquete_id, $opcion_id)
{
$paquete = Paquete::where('local_id', '=', $local_id)
->findOrFail($paquete_id);
$opcion = $paquete->opciones()->findOrFail($opcion_id);
return $opcion->productos()->get();
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Response
*/
public function store(Request $request, $local_id, $paquete_id, $opcion_id)
{
$paquete = Paquete::where('local_id', '=', $local_id)
->findOrFail($paquete_id);
$opcion = $paquete->opciones()
->with('productos')
->findOrFail($opcion_id);
$producto = Producto::findOrFail($request->input('producto_id'));
if ($opcion->productos->contains($producto)) {
throw new Exception('Ya existe el producto en la opcion de paquete');
}
$opcion->productos()->attach($producto);
return $producto;
}
/**
* Remove the specified resource from storage.
* @return Response
*/
public function destroy(Request $request, $local_id, $paquete_id, $opcion_id)
{
$paquete = Paquete::where('local_id', '=', $local_id)
->findOrFail($paquete_id);
$opcion = $paquete->opciones()
->with('productos')
->findOrFail($opcion_id);
$producto = Producto::findOrFail($request->input('producto_id'));
if ($opcion->productos->contains($producto)) {
throw new Exception('Ya existe el producto en la opcion de paquete');
}
$opcion->productos()->attach($producto);
return $producto;
}
}
{
"id": 1,
"local_id": 1,
"nombre": "Paquete 1",
"precio": 100,
"codigo": "paquete1",
"created_at": "2018-06-04 19:36:00",
"updated_at": "2018-06-04 19:36:00",
"opciones": [
{
"id": 1,
"paquete_id": 1,
"nombre": "Bebida",
"descripcion": "Bebida taparrosca o preparada",
"cantidad": 1,
"created_at": "2018-06-04 19:37:38",
"updated_at": "2018-06-04 19:37:38",
"platillos": [
{
"id": 6,
"local_id": 1,
"nombre": "Naranjada",
"costo": 0,
"porcentaje_ganancia": 100,
"precio_sugerido": 0,
"precio_venta": 25,
"historial_costos": "",
"historial_precios": "",
"created_at": "2018-06-04 19:57:54",
"updated_at": "2018-06-04 19:57:54",
"porcentaje_estimado": 0,
"imagen": "",
"costo_adicional": 0,
"costo_productos": 0,
"codigo_barras": null,
"pivot": {
"opcion_id": 1,
"platillo_id": 6,
"created_at": "2018-06-04 19:58:36",
"updated_at": "2018-06-04 19:58:36"
}
},
{
"id": 7,
"local_id": 1,
"nombre": "Limonada",
"costo": 0,
"porcentaje_ganancia": 100,
"precio_sugerido": 0,
"precio_venta": 25,
"historial_costos": "",
"historial_precios": "",
"created_at": "2018-06-04 19:58:05",
"updated_at": "2018-06-04 19:58:05",
"porcentaje_estimado": 0,
"imagen": "",
"costo_adicional": 0,
"costo_productos": 0,
"codigo_barras": null,
"pivot": {
"opcion_id": 1,
"platillo_id": 7,
"created_at": "2018-06-04 19:58:39",
"updated_at": "2018-06-04 19:58:39"
}
}
],
"productos": [
{
"id": 1015,
"created_at": "2018-06-04 19:41:07",
"updated_at": "2018-06-04 19:46:47",
"nombre": "Sprite 500ml",
"descripcion": "",
"codigo_barras": "sprite1",
"tipo_unidad": "pieza",
"categoria_id": null,
"codigo_producto": "sprite",
"created_by": null,
"pivot": {
"opcion_id": 1,
"producto_id": 1015,
"created_at": "2018-06-04 19:48:49",
"updated_at": "2018-06-04 19:48:49"
},
"categoria": null
},
{
"id": 1014,
"created_at": "2018-06-04 19:40:44",
"updated_at": "2018-06-04 19:41:33",
"nombre": "Coca Cola 500ml",
"descripcion": "",
"codigo_barras": "cocacola",
"tipo_unidad": "pieza",
"categoria_id": 16,
"codigo_producto": "",
"created_by": null,
"pivot": {
"opcion_id": 1,
"producto_id": 1014,
"created_at": "2018-06-04 19:49:04",
"updated_at": "2018-06-04 19:49:04"
},
"categoria": {
"id": 16,
"nombre": "bebidas",
"descripcion": "",
"created_at": "2018-06-04 19:40:44",
"updated_at": "2018-06-04 19:40:44"
}
}
]
},
{
"id": 2,
"paquete_id": 1,
"nombre": "Pizza mediana",
"descripcion": "Pizza mediana de especialidad",
"cantidad": 1,
"created_at": "2018-06-04 19:52:39",
"updated_at": "2018-06-04 19:52:39",
"platillos": [
{
"id": 3,
"local_id": 1,
"nombre": "Pizza Pepperoni",
"costo": 0,
"porcentaje_ganancia": 100,
"precio_sugerido": 0,
"precio_venta": 150,
"historial_costos": "",
"historial_precios": "",
"created_at": "2018-06-04 19:54:16",
"updated_at": "2018-06-04 19:54:16",
"porcentaje_estimado": 0,
"imagen": "",
"costo_adicional": 0,
"costo_productos": 0,
"codigo_barras": null,
"pivot": {
"opcion_id": 2,
"platillo_id": 3,
"created_at": "2018-06-04 19:55:48",
"updated_at": "2018-06-04 19:55:48"
}
},
{
"id": 4,
"local_id": 1,
"nombre": "Pizza Mexicana",
"costo": 0,
"porcentaje_ganancia": 100,
"precio_sugerido": 0,
"precio_venta": 180,
"historial_costos": "",
"historial_precios": "",
"created_at": "2018-06-04 19:54:44",
"updated_at": "2018-06-04 19:55:08",
"porcentaje_estimado": 0,
"imagen": "",
"costo_adicional": 0,
"costo_productos": 0,
"codigo_barras": null,
"pivot": {
"opcion_id": 2,
"platillo_id": 4,
"created_at": "2018-06-04 19:55:52",
"updated_at": "2018-06-04 19:55:52"
}
},
{
"id": 5,
"local_id": 1,
"nombre": "Pizza Tres Quesos",
"costo": 0,
"porcentaje_ganancia": 100,
"precio_sugerido": 0,
"precio_venta": 180,
"historial_costos": "",
"historial_precios": "",
"created_at": "2018-06-04 19:54:59",
"updated_at": "2018-06-04 19:55:20",
"porcentaje_estimado": 0,
"imagen": "",
"costo_adicional": 0,
"costo_productos": 0,
"codigo_barras": null,
"pivot": {
"opcion_id": 2,
"platillo_id": 5,
"created_at": "2018-06-04 19:55:55",
"updated_at": "2018-06-04 19:55:55"
}
}
],
"productos": []
}
]
}
<?php
namespace Modules\Paquetes\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Paquetes\Entities\Paquete;
class PaquetesController extends Controller
{
/**
* Display a listing of the resource.
* @return Response
*/
public function index(Request $request)
{
$local_id = $request->local_id;
if ($request->filled('local_id')) {
return $query = DB::table('paquetes')->select('nombre','costo')->where('local_id','=',$local_id);
}
return Paquete::all();
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$request->validate(Paquete::$rules);
return Paquete::create($request->all());
}
/**
* Show the specified resource.
* @return Response
*/
public function show($paquete_id)
{
$paquete = Paquete::findOrFail($paquete_id);
return $paquete;
}
/**
* Update the specified resource in storage.
* @param Request $request
* @return Response
*/
public function update(Request $request, $paquete_id)
{
$paquete = Paquete::findOrFail($paquete_id);
$paquete->update($request->all());
return $paquete;
}
/**
* Remove the specified resource from storage.
* @return Response
*/
public function destroy($paquete_id)
{
$paquete = Paquete::findOrFail($paquete_id);
$paquete->delete();
return ['success'=>true];
}
}
git fetch
# Descarga los cambios realizados en el repositorio remoto.
git merge <nombre_rama>
# Impacta en la rama en la que te encuentras parado, los cambios realizados en la rama “nombre_rama”.
git pull
# Unifica los comandos fetch y merge en un único comando.
git commit -am "<mensaje>"
# Confirma los cambios realizados. El “mensaje” generalmente se usa para asociar al commit una breve descripción de los cambios realizados.
git push origin <nombre_rama>
# Sube la rama “nombre_rama” al servidor remoto.
git status
# Muestra el estado actual de la rama, como los cambios que hay sin commitear.
git add <nombre_archivo>
# Comienza a trackear el archivo “nombre_archivo”.
git checkout -b <nombre_rama_nueva>
# Crea una rama a partir de la que te encuentres parado con el nombre “nombre_rama_nueva”, y luego salta sobre la rama nueva, por lo que quedas parado en esta última.
git checkout -t origin/<nombre_rama>
# Si existe una rama remota de nombre “nombre_rama”, al ejecutar este comando se crea una rama local con el nombre “nombre_rama” para hacer un seguimiento de la rama remota con el mismo nombre.
git branch
# Lista todas las ramas locales.
git branch -a
# Lista todas las ramas locales y remotas.
git branch -d <nombre_rama>
# Elimina la rama local con el nombre “nombre_rama”.
git push origin <nombre_rama>
# Commitea los cambios desde el branch local origin al branch “nombre_rama”.
git remote prune origin
# Actualiza tu repositorio remoto en caso que algún otro desarrollador haya eliminado alguna rama remota.
git reset --hard HEAD
# Elimina los cambios realizados que aún no se hayan hecho commit.
git revert <hash_commit>
# Revierte el commit realizado, identificado por el “hash_commit”.
Sistema de control escolar
APDevs POS
/**
* Display a listing of the resource.
* @return Response
*/
public function index(Request $request)
{
$local_id = $request->local_id;
if ($request->filled('local_id'))
{
return $query = DB::table('paquete')
->select('nombre','costo')
->where('local_id','=',local_id);
}
//return Paquete::all();
}
<?php
namespace Modules\Productos\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Productos\Entities\Producto;
class ProductosController extends Controller
{
/**
* Display a listing of the resource.
* @return Response
*/
public function index()
{
return Producto::all();
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$producto = new Producto($request->all());
if ($request->hasFile('imagen')) {
$producto->imagen = $this->uploadFile($request);
}
$producto->save();
return $producto;
}
/**
* Show the specified resource.
* @return Response
*/
public function show($producto_id)
{
$producto = Producto::findOrFail($producto_id);
return $producto;
}
/**
* Update the specified resource in storage.
* @param Request $request
* @return Response
*/
public function update(Request $request, $producto_id)
{
$producto = Producto::findOrFail($producto_id);
$producto->update($request->all());
return $producto;
}
/**
* Remove the specified resource from storage.
* @return Response
*/
public function destroy($producto_id)
{
$producto = Producto::findOrFail($producto_id);
$producto->delete();
return ['success'=>true];
}
}
<?php
namespace Modules\Productos\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Productos\Entities\Producto;
class ProductosController extends Controller
{
/**
* Display a listing of the resource.
* @return Response
*/
public function index()
{
return Producto::all();
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$producto = new Producto($request->all());
if ($request->hasFile('imagen')) {
$producto->imagen = $this->uploadFile($request);
}
$producto->save();
return $producto;
}
/**
* Show the specified resource.
* @return Response
*/
public function show($producto_id)
{
$producto = Producto::findOrFail($producto_id);
return $producto;
}
/**
* Update the specified resource in storage.
* @param Request $request
* @return Response
*/
public function update(Request $request, $producto_id)
{
$producto = Producto::findOrFail($producto_id);
$producto->update($request->all());
return $producto;
}
/**
* Remove the specified resource from storage.
* @return Response
*/
public function destroy($producto_id)
{
$producto = Producto::findOrFail($producto_id);
$producto->delete();
return ['success'=>true];
}
}
jmanuel@apdevs.com
José Manuel Ruiz Pérez