Commit 2a7a7d8e by Pancholin

Merge branch 'master' of bunkrbit.com:bsabbath/onestartup-shop

parents 4edd3f15 2e37c729
......@@ -11,6 +11,7 @@ use Onestartup\Shop\Model\ProductImageShop as Gallery;
use Onestartup\Shop\Model\ProductShop as Product;
use Onestartup\Shop\Model\ExtraField as Extra;
use Onestartup\Shop\Model\ProductShopInfo as ProductInfo;
use Onestartup\Shop\Model\CategoriaSat;
use Onestartup\Shop\DataTables\ClientDataTable;
use Onestartup\Shop\DataTables\OrderDataTable;
......@@ -53,10 +54,12 @@ class AdminProductController extends Controller
public function create()
{
$categories = Category::pluck('name', 'id');
$categoria_sat = CategoriaSat::pluck('nombre', 'id');
$extras = Extra::where('active', true)->orderBy('variable', 'asc')->get();
return view('shop::product.create')
->with('categories', $categories)
->with('categoria_sat', $categoria_sat)
->with('extras', $extras);
}
......@@ -97,6 +100,7 @@ class AdminProductController extends Controller
{
$product = Product::find($id);
$categories = Category::pluck('name', 'id');
$categoria_sat = CategoriaSat::pluck('nombre', 'id');
$extras = Extra::where('active', true)->orderBy('variable', 'asc')->get();
if ($product->infoSale != null) {
......@@ -110,6 +114,7 @@ class AdminProductController extends Controller
return view('shop::product.edit')
->with('categories', $categories)
->with('categoria_sat', $categoria_sat)
->with('product', $product)
->with('info', $info)
->with('extras', $extras);
......
<?php
namespace Onestartup\Shop\Controller;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Yajra\Datatables\Datatables;
use Onestartup\Shop\Model\CategoriaSat as Category;
use Onestartup\Shop\Model\Unidad;
use Onestartup\Shop\Model\ClavesProducto;
class CategorySatController extends Controller
{
/**
* Display a listing of the resource.
* @return Response
*/
public function index()
{
$categories = Category::paginate(25);
$unidades = Unidad::select(
\DB::raw("CONCAT(clave,'-',nombre) AS nombre"),'clave')
->pluck('nombre', 'clave');
return view('shop::categorysat.index')
->with('categories', $categories)
->with('unidades', $unidades);
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$category = new Category($request->all());
$category->save();
return redirect()
->back()
->with('message_success', 'Categoria añadida correctamente');
}
/**
* Show the form for editing the specified resource.
* @return Response
*/
public function edit($id)
{
$category = Category::find($id);
$unidades = Unidad::select(
\DB::raw("CONCAT(clave,'-',nombre) AS nombre"),'clave')
->pluck('nombre', 'clave');
return view('shop::categorysat.edit')
->with('category', $category)
->with('unidades', $unidades);
}
/**
* Update the specified resource in storage.
* @param Request $request
* @return Response
*/
public function update(Request $request, $id)
{
$category = Category::find($id);
$category->fill($request->all());
$category->save();
return redirect()
->back()
->with('message_success', 'Categoria actualizado correctamente');
}
/**
* Remove the specified resource from storage.
* @return Response
*/
public function destroy($id)
{
$category = Category::find($id);
$category->delete();
return redirect()
->back()
->with('message_danger', 'Categoria eliminada correctamente');
}
public function deleteCover($id)
{
$category = Category::find($id);
$category->save();
return redirect()
->back()
->with('message_success', 'Imagen eliminada correctamente');
}
public function apiClaveProd(Request $request)
{
$claves = ClavesProducto::where('descripcion', 'LIKE','%'.$request->q.'%')->get();
return $claves;
}
}
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateCategoriaSatsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('categorias_sat', function (Blueprint $table) {
$table->increments('id');
$table->string('nombre');
$table->string('clave_producto');
$table->string('clave_unidad');
$table->string('unidad');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('categorias_sat');
}
}
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddCategorySatIdToShopProductsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('products_shop', function (Blueprint $table) {
$table->integer('category_sat_id')->unsigned()->index()->nullable();
$table->foreign('category_sat_id')->references('id')->on('categorias_sat')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('products_shop', function (Blueprint $table) {
$table->dropForeign(['category_sat_id']);
$table->dropColumn('category_sat_id');
});
}
}
<?php
namespace Onestartup\Shop\Model;
use Illuminate\Database\Eloquent\Model;
class CategoriaSat extends Model
{
protected $table = 'categorias_sat';
protected $fillable = [
'nombre',
'clave_producto',
'clave_unidad',
'unidad'
];
public function products()
{
return $this->hasMany('Onestartup\Shop\Model\ProductShop', 'category_sat_id');
}
}
......@@ -19,6 +19,7 @@ class ProductShop extends Model
'active',
'publication_date',
'category_id',
'category_sat_id',
'cover',
'extra1',
'extra2',
......@@ -58,4 +59,9 @@ class ProductShop extends Model
{
return $this->hasMany('Onestartup\Shop\Model\DetailShop', 'product_id');
}
public function categoria_sat()
{
return $this->belongsTo('Onestartup\Shop\Model\CategoriaSat', 'category_sat_id');
}
}
......@@ -5,6 +5,7 @@ Route::group(['middleware' => ['web', 'auth', 'is_admin']], function(){
Route::resource('admin/shop/product', 'Onestartup\Shop\Controller\AdminProductController', ['as'=>'admin.shop']);
Route::resource('admin/shop/category', 'Onestartup\Shop\Controller\CategoryController', ['as'=>'admin.shop']);
Route::resource('admin/shop/coupon', 'Onestartup\Shop\Controller\DiscountCouponController', ['as'=>'admin.shop']);
Route::resource('admin/shop/categoriasat', 'Onestartup\Shop\Controller\CategorySatController', ['as'=>'admin.shop']);
Route::resource('admin/shop/extra-fields', 'Onestartup\Shop\Controller\ExtraFieldController', ['as'=>'admin.shop']);
......@@ -78,6 +79,10 @@ Route::group(['middleware' => ['web', 'auth', 'is_admin']], function(){
'Onestartup\Shop\Controller\AdminProductController@refundPaypal')
->name('admin-shop-client.refundPaypal');
Route::get('api/buscar/producto',
'Onestartup\Shop\Controller\CategorySatController@apiClaveProd')
->name('admin-shop-client.apiClaveProd');
});
......
@extends('crm-admin::main-layout')
@section('breadcrumb')
<li class="breadcrumb-item">
<a href="{{route('home')}}">Home</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin-shop-client.orders')}}">Tienda</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.shop.category.index')}}">Listado de categorías</a>
</li>
<li class="breadcrumb-item active">
{{$category->nombre}}
</li>
@endsection
@section('content')
<div class='row'>
<div class='col-md-12'>
<div class='box'>
<div class='box-header dark'>
<h2>Actualizar información</h2>
</div>
<div class='box-body'>
<div class='col-md-12'>
{!! Form::model($category,['route'=> ['admin.shop.categoriasat.update',$category->id],"method"=>"PUT", 'enctype'=>'multipart/form-data']) !!}
@include('shop::categorysat.fields')
</div>
</div>
<div class='dker p-a text-right'>
<div class='col-md-12'>
<a class='btn danger' href="{{route('admin.shop.categoriasat.index')}}">Cancelar</a>
{!! Form::submit('Actualizar información', ['class'=>'btn dark']) !!}
{!! Form::close() !!}
</div>
</div>
</div>
</div>
</div>
@endsection
@section('css_extras');
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
@endsection
<div class="form-group">
{!! Form::label('buscador', 'Buscador de claves de productos del SAT') !!}
{!! Form::select('buscador',[], null, ["id"=>"buscador","class"=>"form-control", "placeholder"=>"Escribe aqui la clave del producto", "style"=>"width:100%"]) !!}
</div>
<div class="form-group">
{!! Form::label('clave_producto', 'Clave del producto *') !!}
{!! Form::text('clave_producto', null, ["class"=>"form-control", "required"=>"required", "placeholder"=>"Selecciona una clave", "id"=>"clave_producto"]) !!}
</div>
<div class="form-group">
{!! Form::label('clave_unidad', 'Clave Unidad *') !!}
{!! Form::select('clave_unidad', $unidades, null, ["class"=>"form-control", "required"=>"required", "placeholder"=>"Selecciona una clave", "id"=>"nombre"]) !!}
</div>
<div class="form-group">
{!! Form::label('unidad', 'Unidad *') !!}
{!! Form::text('unidad', null, ["class"=>"form-control", "required"=>"required", "placeholder"=>"Selecciona una clave", "id"=>"clave", "readonly"=>"readonly"]) !!}
</div>
<div class="form-group">
{!! Form::label('nombre', 'Nombre *') !!}
{!! Form::text('nombre', null, ["class"=>"form-control", "required"=>"required", "placeholder"=>"Escribe el nombre de esta categoría"]) !!}
</div>
@section('script_extras')
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<script type="text/javascript">
$('#buscador').select2({
placeholder: 'Busca la clave del producto aquí',
minimumInputLength: 3,
ajax: {
url: '/api/buscar/producto',
dataType: 'json',
delay: 250,
processResults: function (data) {
return {
results: $.map(data, function(obj) {
return { id: obj.clave, text: obj.clave+' '+obj.descripcion };
})
};
},
cache: true
}
});
$('#nombre').change(function(){
var texto = $("#nombre option:selected").text();
texto = texto.substr(texto.indexOf('-')+1);
$('#clave').val(texto);
});
$('#buscador').change(function(){
$('#clave_producto').val(this.value);
});
</script>
@endsection
\ No newline at end of file
@extends('crm-admin::main-layout')
@section('breadcrumb')
<li class="breadcrumb-item">
<a href="{{route('home')}}">Home</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin-shop-client.orders')}}">Tienda</a>
</li>
<li class="breadcrumb-item active">
Listado de categorias
</li>
@endsection
@section('content')
<div class='row'>
<div class='col-md-12 collapse' id='agregarCategoria'>
<div class='box'>
<div class='box-header dark'>
<h2>
Agregar nueva categoria
<span></span>
<a aria-expanded='false' class='btn btn-xs btn-danger button-ml' data-toggle='collapse' href='#agregarCategoria'>
Cancelar
</a>
</h2>
</div>
<div class='box-body'>
<div class='col-md-12'>
{!! Form::open(['route'=> 'admin.shop.categoriasat.store','method'=>'POST', 'enctype'=>'multipart/form-data']) !!}
@include('shop::categorysat.fields')
<div class='form-group'>
<button class='btn btn-primary' type='submit'>
Registrar
</button>
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
<div class='col-md-12'>
<div class='box'>
<div class='box-header dark'>
<h2>
Listado de Categorias de productos de la tienda
<span>
<a aria-expanded='false' class='btn btn-xs btn-info button-ml' data-toggle='collapse' href='#agregarCategoria'>
<i class='fas fa-plus'></i>
Agregar Categorías
</a>
</span>
</h2>
</div>
<div class='box-body'>
<div class='col-md-12'>
<table class='table'>
<tr>
<th>#</th>
<th>Nombre</th>
<th>Clave Producto</th>
<th>Unidad</th>
<th>Productos</th>
<th></th>
</tr>
@foreach ($categories as $category)
<tr>
<td> {{$category->id}}</td>
<td>
{{$category->nombre}}
</td>
<td>
<p> {{$category->clave_producto}}</p>
</td>
<td>
Clave unidad: <b>{{$category->clave_unidad}} </b><br>
Unidad: <b>{{$category->unidad}}</b>
</td>
<td> {{$category->products->count()}}</td>
<td>
{!! Form::open(['route'=> ['admin.shop.categoriasat.destroy',$category->id],'method'=>'DELETE'])!!}
<button class='btn btn-danger btn-xs button-mb' onclick="return confirm('¿Estás seguro de eliminar este elemento?');" type='submit'>
<i class='fas fa-trash-alt icon-special-size'></i>
Eliminar
</button>
{!! Form::close()!!}
<a class='btn btn-xs accent' href="{{route('admin.shop.categoriasat.edit', $category->id)}}">
<i class='fas fa-edit icon-special-size'></i>
Editar
</a>
</td>
@endforeach
</tr>
</table>
</div>
</div>
<div class='dker p-a text-right'>
{{ $categories->links() }}
</div>
</div>
</div>
</div>
@endsection
<div class="row">
<div class="col-md-6">
<div class="form-group">
{!! Form::label('name', 'Nombre', ['class'=>'control-label'])!!}
{!! Form::text('name', null, ["class"=>"form-control", "required"=>"required", "id"=>"first"]) !!}
</div>
<div class="form-group">
{!! Form::label('name', 'Nombre', ['class'=>'control-label'])!!}
{!! Form::text('name', null, ["class"=>"form-control", "required"=>"required", "id"=>"first"]) !!}
</div>
</div>
<div class="col-md-6">
<div class="form-group">
{!! Form::label('slug', 'URL Slug', ['class'=>'control-label'])!!}
{!! Form::text('slug', null, ["class"=>"form-control", "required"=>"required", "id"=>"second"]) !!}
</div>
<div class="form-group">
{!! Form::label('slug', 'URL Slug', ['class'=>'control-label'])!!}
{!! Form::text('slug', null, ["class"=>"form-control", "required"=>"required", "id"=>"second"]) !!}
</div>
</div>
</div>
......@@ -33,60 +33,69 @@
<div class="row">
<div class="col-md-6">
<div class="form-group">
{!! Form::label('cover', 'Portada', ['class'=>'control-label'])!!}
@if (isset($product))
<span>
<a class="btn btn-xs accent" data-target="#ver" data-toggle="modal" href="#" ui-toggle-class="fade-up-big">
Ver actual
<i class="fa fa-eye"></i>
</a>
</span>
@endif
<br>
{!! Form::file('cover', null, ["class"=>"form-control", "required"=>"required"]) !!}
</div>
{!! Form::label('cover', 'Portada', ['class'=>'control-label'])!!}
@if (isset($product))
<span>
<a class="btn btn-xs accent" data-target="#ver" data-toggle="modal" href="#" ui-toggle-class="fade-up-big">
Ver actual
<i class="fa fa-eye"></i>
</a>
</span>
@endif
<br>
{!! Form::file('cover', null, ["class"=>"form-control", "required"=>"required"]) !!}
</div>
</div>
<div class="col-md-6">
<div class="form-group">
{!! Form::label('publication_date', 'Fecha de publicación', ['class'=>'control-label'])!!}
{!! Form::text('publication_date', isset($product) ? null: date('Y-m-d'), ["class"=>"form-control", "required"=>"required", "id"=>"publication_date"]) !!}
</div>
<div class="col-md-6">
<div class="form-group">
{!! Form::label('publication_date', 'Fecha de publicación', ['class'=>'control-label'])!!}
{!! Form::text('publication_date', isset($product) ? null: date('Y-m-d'), ["class"=>"form-control", "required"=>"required", "id"=>"publication_date"]) !!}
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group" >
{!! Form::label('category_sat_id', 'Categoría del sat', ['class'=>'control-label'])!!}
{!! Form::select('category_sat_id', $categoria_sat, null, ["class"=>"form-control", 'placeholder'=>'Elije una categoria']) !!}
</div>
</div>
</div>
<div class="row">
@if($extras->count() > 0)
@foreach($extras as $extra)
@if($extra->type == 'select')
<div class="col-md-4">
<div class="form-group">
{!! Form::label($extra->variable, $extra->alias, ['class'=>'control-label'])!!}
{!! Form::select($extra->variable, array_combine( explode(",", $extra->values), explode(",", $extra->values)), null, ["class"=>"form-control", "placeholder"=>"Elije una opción"]) !!}
</div>
</div>
@endif
@foreach($extras as $extra)
@if($extra->type == 'select')
<div class="col-md-4">
<div class="form-group">
{!! Form::label($extra->variable, $extra->alias, ['class'=>'control-label'])!!}
{!! Form::select($extra->variable, array_combine( explode(",", $extra->values), explode(",", $extra->values)), null, ["class"=>"form-control", "placeholder"=>"Elije una opción"]) !!}
</div>
</div>
@endif
@if($extra->type == 'text')
<div class="col-md-4">
<div class="form-group">
{!! Form::label($extra->variable, $extra->alias, ['class'=>'control-label'])!!}
{!! Form::text($extra->variable, null, ["class"=>"form-control"]) !!}
</div>
</div>
@endif
@if($extra->type == 'text')
<div class="col-md-4">
<div class="form-group">
{!! Form::label($extra->variable, $extra->alias, ['class'=>'control-label'])!!}
{!! Form::text($extra->variable, null, ["class"=>"form-control"]) !!}
</div>
</div>
@endif
@if($extra->type == 'textarea')
<div class="col-md-4">
<div class="form-group">
{!! Form::label($extra->variable, $extra->alias, ['class'=>'control-label'])!!}
{!! Form::textarea($extra->variable, null, ["class"=>"form-control"]) !!}
</div>
</div>
@endif
@endforeach
@if($extra->type == 'textarea')
<div class="col-md-4">
<div class="form-group">
{!! Form::label($extra->variable, $extra->alias, ['class'=>'control-label'])!!}
{!! Form::textarea($extra->variable, null, ["class"=>"form-control"]) !!}
</div>
</div>
@endif
@endforeach
@endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment