Commit b0d9029a by Angel MAS

visualizacion de ordenes desde el administrador

parent 439a936e
...@@ -12,6 +12,8 @@ use Onestartup\Shop\Model\ProductShop as Product; ...@@ -12,6 +12,8 @@ use Onestartup\Shop\Model\ProductShop as Product;
use Onestartup\Shop\Model\ExtraField as Extra; use Onestartup\Shop\Model\ExtraField as Extra;
use Onestartup\Shop\Model\ProductShopInfo as ProductInfo; use Onestartup\Shop\Model\ProductShopInfo as ProductInfo;
use Onestartup\Shop\DataTables\ClientDataTable; use Onestartup\Shop\DataTables\ClientDataTable;
use Onestartup\Shop\DataTables\OrderDataTable;
use Onestartup\Shop\Model\SaleShop as Sale;
class AdminProductController extends Controller class AdminProductController extends Controller
...@@ -228,36 +230,7 @@ class AdminProductController extends Controller ...@@ -228,36 +230,7 @@ class AdminProductController extends Controller
} }
/*public function showVars()
{
$variable = Variable::first();
if ($variable == null) {
$variable = new Variable();
}
return view('shop::variable.edit')
->with('variable', $variable);
}
public function postVars(Request $request)
{
$variable = Variable::first();
if ($variable == null) {
$variable = new Variable();
}
$variable->fill($request->all());
$variable->save();
return redirect()
->back()
->with('message_success', 'Información actualizada');
}*/
public function extraInfo(Request $request) public function extraInfo(Request $request)
{ {
...@@ -283,4 +256,60 @@ class AdminProductController extends Controller ...@@ -283,4 +256,60 @@ class AdminProductController extends Controller
return $dataTable->render('shop::clients.list'); return $dataTable->render('shop::clients.list');
} }
public function listOrders(OrderDataTable $dataTable)
{
return $dataTable->render('shop::clients.orders');
}
public function showOrder($id)
{
$sale = Sale::find($id);
$client = $sale->client;
$orden = $sale->items;
$shipping = $client->shipping;
$shipping_price = $shipping->shipping_price;
if ($sale->status == 0) {
$estado = "Cancelado";
}
if ($sale->status == 1) {
$estado = "Pendiente";
}
if ($sale->status == 2) {
$estado = "Pagado";
}
if ($sale->status == 3) {
$estado = "En proceso";
}
return view('shop::clients.orden')
->with('sale', $sale)
->with('client', $client)
->with('orden', $orden)
->with('estado', $estado)
->with('shipping_price', $shipping_price)
->with('shipping', $shipping);
}
public function updateShipping(Request $request, $id)
{
$sale = Sale::find($id);
$sale->shipping_status = $request->shipping_status;
$sale->save();
return redirect()->back()->with('message_success', 'Estatus actualizado correctamente');
}
public function updateStatusSale(Request $request, $id)
{
$sale = Sale::find($id);
$sale->status = $request->status;
$sale->save();
return redirect()->back()->with('message_success', 'Estatus actualizado correctamente');
}
} }
<?php
namespace Onestartup\Shop\DataTables;
use Onestartup\Shop\Model\SaleShop as Sale;
use Yajra\DataTables\Services\DataTable;
class OrderDataTable extends DataTable
{
/**
* Build DataTable class.
*
* @param mixed $query Results from query() method.
* @return \Yajra\DataTables\DataTableAbstract
*/
public function dataTable($query)
{
return datatables($query)
->addColumn('cliente', function(Sale $sale) {
return 'Nombre: <b>'.$sale->client->name." ".$sale->client->lastname.'</b>'.
'<br>Teléfono: <b>'.$sale->client->phone.'</b>'.
'<br>Correo: <b>'.$sale->client->email.'</b>';
})
->addColumn('orden', function(Sale $sale) {
$estado = "";
$html = "";
if ($sale->status == 0) {
$estado = "<span class='label danger'>Cancelado</span>";
}
if ($sale->status == 1) {
$estado = "<span class='label warning'>Pendiente</span>";
}
if ($sale->status == 2) {
$estado = "<span class='label success'>Pagado</span>";
}
if ($sale->status == 3) {
$estado = "<span class='label primary'>En proceso</span>";
}
$html = "Estado: <b>$estado</b><br>Tipo: <b>$sale->payment_type</b> <br>Transaccion:<br><b>$sale->transaction_id</b><br>Envio: <b>".$sale->client->shipping->shipping_price->name."</b>";
return $html;
})
->addColumn('action', function (Sale $sale){
return "<a href='".route('admin-shop-client.orders.show',$sale->id)."'>Ver Detalle</a>";
})
->rawColumns(['orden', 'action', 'cliente']);
}
/**
* Get query source of dataTable.
*
* @param \App\Interested $model
* @return \Illuminate\Database\Eloquent\Builder
*/
public function query(Sale $model)
{
return $model->select(['id', 'client_id', 'status', 'payment_type','transaction_id', 'total', 'created_at'])->where('status', '!=', 0)->orderBy('id', 'desc');
}
/**
* Optional method if you want to use html builder.
*
* @return \Yajra\DataTables\Html\Builder
*/
public function html()
{
return $this->builder()
->columns($this->getColumns())
->parameters([
'dom' => 'Bfrtip',
'pageLength' => 20,
'buttons' => ['excel', 'csv','reset', 'reload'],
]);
}
/**
* Get columns.
*
* @return array
*/
protected function getColumns()
{
return [
'id',
'cliente',
'orden',
'created_at',
'action'
];
}
/**
* Get filename for export.
*
* @return string
*/
protected function filename()
{
return 'orders' . date('YmdHis');
}
}
...@@ -15,6 +15,7 @@ class AddPaymentTypeToSaleShopsTable extends Migration ...@@ -15,6 +15,7 @@ class AddPaymentTypeToSaleShopsTable extends Migration
{ {
Schema::table('sale_shops', function (Blueprint $table) { Schema::table('sale_shops', function (Blueprint $table) {
$table->string('payment_type')->nullable(); $table->string('payment_type')->nullable();
$table->string('shipping_status')->default('Pendiente');
}); });
} }
...@@ -27,6 +28,7 @@ class AddPaymentTypeToSaleShopsTable extends Migration ...@@ -27,6 +28,7 @@ class AddPaymentTypeToSaleShopsTable extends Migration
{ {
Schema::table('sale_shops', function (Blueprint $table) { Schema::table('sale_shops', function (Blueprint $table) {
$table->dropColumn('payment_type'); $table->dropColumn('payment_type');
$table->dropColumn('shipping_status');
}); });
} }
} }
...@@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Model; ...@@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Model;
class SaleShop extends Model class SaleShop extends Model
{ {
protected $table = 'sale_shops'; protected $table = 'sale_shops';
protected $fillable = ['status', 'total', 'client_id', 'transaction_id', 'payment_type']; protected $fillable = ['status', 'total', 'client_id', 'transaction_id', 'payment_type', 'shipping_status'];
public function client() public function client()
......
...@@ -45,6 +45,22 @@ Route::group(['middleware' => ['web', 'auth', 'is_admin']], function(){ ...@@ -45,6 +45,22 @@ Route::group(['middleware' => ['web', 'auth', 'is_admin']], function(){
'Onestartup\Shop\Controller\AdminProductController@listClient') 'Onestartup\Shop\Controller\AdminProductController@listClient')
->name('admin-shop-client.list'); ->name('admin-shop-client.list');
Route::get('admin/shop/client/orders',
'Onestartup\Shop\Controller\AdminProductController@listOrders')
->name('admin-shop-client.orders');
Route::get('admin/shop/client/orders/{id}',
'Onestartup\Shop\Controller\AdminProductController@showOrder')
->name('admin-shop-client.orders.show');
Route::put('admin/shop/client/shipping/{id}/update',
'Onestartup\Shop\Controller\AdminProductController@updateShipping')
->name('admin-shop-client.updateshipping');
Route::put('admin/shop/client/statusSale/{id}/update',
'Onestartup\Shop\Controller\AdminProductController@updateStatusSale')
->name('admin-shop-client.statussale');
}); });
......
@extends('crm-admin::main-layout')
@section('content')
@php
setlocale(LC_MONETARY, 'en_US');
@endphp
<div class="row">
<div class="col-md-12">
<div class="nav-active-border b-primary">
<ul class="nav nav-sm">
<li class="nav-item">
<a class="nav-link block active" href="" data-toggle="tab" data-target="#tab-1">
<h6>Cliente</h6>
</a>
</li>
<li class="nav-item">
<a class="nav-link block" href="" data-toggle="tab" data-target="#tab-2">
<h6>Ordén</h6>
</a>
</li>
<li class="nav-item">
<a class="nav-link block" href="" data-toggle="tab" data-target="#tab-3">
<h6>Envio</h6>
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="tab-content pos-rlt">
<div class="tab-pane active" id="tab-1">
<div class="p-a-md dark _600">Datos del Cliente y seguimiento</div>
<div class="box">
<div class="box-body">
<div class="row">
<div class="col-md-6">
<h6>Datos generales</h6>
<p>Nombre: <b>{{$client->name}} {{$client->lastname}} </b></p>
<p>Teléfono: <b>{{$client->phone}}</b></p>
<p>Correo: <b>{{$client->email}}</b></p>
<p>Fecha de registro: <b>{{$client->created_at}}</b></p>
<h6>Datos de facturación</h6>
</div>
<div class="row">
<h6>Seguimiento</h6>
</div>
</div>
</div>
<div class='dker p-a text-right'>
<div class='col-md-12'>
</div>
</div>
</div>
</div><!-- end tab-1 -->
<div class="tab-pane" id="tab-2">
<div class="p-a-md dark _600">Resumen de la Ordén</div>
<div class="box">
<div class="box-body">
<div class="row">
<div class="col-md-4">
Estatus de la compra: <a href="javascript::void()" data-target="#status_sale" data-toggle="modal" href="#" ui-target="#animate" ui-toggle-class="zoom"><i class="fa fa-edit"></i></a><br>
<span class="label warning">{{$estado}}</span>
<br>Medio de pago:<br>
<b>{{$sale->payment_type}}</b>
<br>Id Transaccion:<br>
<b>{{$sale->transaction_id}}</b>
<br>Fecha de orden:<br>
<b>{{$sale->created_at}}</b>
</div>
<div class="col-md-8">
<table class="table table-hover">
<thead>
<tr>
<th>Cantidad</th>
<th>Producto</th>
<th>Precio</th>
<th>Subtotal</th>
</tr>
</thead>
<tbody>
@foreach($orden as $item)
<tr>
<td>{{$item->quantity}}</td>
<td>{{$item->product->name}}</td>
<td>{{money_format('%(#10n', $item->product->infoSale->sale_price)}}</td>
<td>{{money_format('%(#10n', ($item->product->infoSale->sale_price * $item->quantity))}}</td>
</tr>
@endforeach
<tr>
<td>1</td>
<td>{{$shipping_price->name}}</td>
<td>{{money_format('%(#10n', $shipping_price->cost)}}</td>
<td>{{money_format('%(#10n', $shipping_price->cost)}}</td>
</tr>
<tfoot>
<tr>
<td></td>
<td></td>
<td>Total</td>
<td><b>{{money_format('%(#10n', $sale->total)}}</b></td>
</tr>
</tfoot>
</tbody>
</table>
</div>
</div>
</div>
<div class='dker p-a text-right'>
<div class='col-md-12'>
</div>
</div>
</div>
</div><!-- end tab-2 -->
<div class="tab-pane" id="tab-3">
<div class="p-a-md dark _600">Direccion de Envio y estatus</div>
<div class="box">
<div class="box-body">
<div class="row">
<div class="col-md-8 offset-2">
Direccion de entrega:<br>
<b>{{$shipping->calle}}, # {{$shipping->numero}}, col. {{$shipping->colonia}}</b><br>
<b>{{$shipping->ciudad}}, {{$shipping->estado}}</b><br>
C.P. <b>{{$shipping->cp}}</b><br>
Referencias:<br>
<b>Callejon en barda azul</b><br>
Estatus del envio: <a href="javascript::void()" data-target="#m-a-a" data-toggle="modal" href="#" ui-target="#animate" ui-toggle-class="zoom"><i class="fa fa-edit"></i></a><br>
<span class="label warning">{{$sale->shipping_status}}</span>
</div>
</div>
</div>
</div>
</div><!-- end tab-3 -->
</div>
</div>
</div>
<div class="modal fade animate" data-backdrop="true" id="m-a-a">
<div class="modal-dialog" id="animate">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Cambiar estatus de envio</h5>
</div>
<div class="modal-body text-center p-lg">
{!! Form::model($sale,['route'=> ['admin-shop-client.updateshipping', $sale->id],"method"=>"PUT"]) !!}
<div class="form-group">
{!! Form::label('shipping_status', 'Estatus del envio', ['class'=>'form-control-label']) !!}
{!! Form::select('shipping_status', ['Pendiente'=>'Pendiente','Enviado'=>'Enviado','Cancelado'=>'Cancelado','En camino'=>'En camino'], null, ['class' => 'form-control select2', 'required'=>'required']) !!}
</div>
<br>
{!! Form::submit('Actualizar', ['class'=>'btn btn-danger btn-block']) !!}
{!! Form::close() !!}
</div>
</div>
</div>
</div>
<div class="modal fade animate" data-backdrop="true" id="status_sale">
<div class="modal-dialog" id="animate">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Cambiar estatus de compra</h5>
</div>
<div class="modal-body text-center p-lg">
{!! Form::model($sale,['route'=> ['admin-shop-client.statussale', $sale->id],"method"=>"PUT"]) !!}
<div class="form-group">
{!! Form::label('status', 'Estatus del envio', ['class'=>'form-control-label']) !!}
{!! Form::select('status', [0=>'Cancelado',1=>'Pendiente',2=>'Pagado',3=>'En proceso'], null, ['class' => 'form-control select2', 'required'=>'required']) !!}
</div>
<br>
{!! Form::submit('Actualizar', ['class'=>'btn btn-danger btn-block']) !!}
{!! Form::close() !!}
</div>
</div>
</div>
</div>
@endsection
@extends('crm-admin::main-layout')
@section('content')
<div class="row">
<div class="col-md-12">
<div class="box">
<div class="box-header dark">
<h2>Listado de Ordenes</h2>
</div>
<div class="box-body">
<div class='table-responsive'>
{!! $dataTable->table() !!}
</div>
</div>
<div class="dker p-a text-right">
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.0.3/css/buttons.dataTables.min.css">
<script src="https://cdn.datatables.net/buttons/1.0.3/js/dataTables.buttons.min.js"></script>
<script src="/vendor/datatables/buttons.server-side.js"></script>
{!! $dataTable->scripts() !!}
@endpush
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