<?php

class StockController extends \BaseController {

	public static $jqgrid_colmodel = [
		[
			'label' => 'Id',
			'name' => 'NREGUIST',
			'hidden' => true
		],
		[
			'label' => 'Codigo Diken',
			'name' => 'CODIGO',
		],
		[
			'label' => 'Codigo Bañados',
			'name' => 'CODIGO_BANADOS',
		],
		[
			'label' => 'Nombre',
			'name' => 'NOMBRE',
		],
		[
			'label' => 'Tipo Producto',
			'name' => 'TIPOPROD',
		],
		[
			'label' => 'Proveedor',
			'name' => 'NOM_PROV',
		],
		[
			'label' => 'Precio Venta',
			'name' => 'PRECVTA',
		],
		[
			'label' => 'Estado',
			'name' => 'ELIMINADO',
			'stype' => 'select',
			'searchoptions' => [
				'value' => ':;0:Habilitado;1:Eliminado',
			]
		],
		[
			'label' => 'Stock Fisico',
			'name' => 'STK_FISICO',
		],
	];

	public static $jqgrid_colmodel2 = [
		[
			'label' => 'Codigo Diken',
			'name' => 'CODIGO',
		],
		[
			'label' => 'Nombre',
			'name' => 'NOMBRE',
		],
		[
			'label' => 'Lote',
			'name' => 'LOTE',
		],
		[
			'label' => 'Fecha',
			'name' => 'FECHA',
		],
		[
			'label' => 'Tipo Producto',
			'name' => 'TIPO_DOCTO',
		],
		[
			'label' => 'Nro.Docto',
			'name' => 'DOCTO',
		],
		[
			'label' => 'Precio Venta',
			'name' => 'PRECIO',
		],
		[
			'label' => 'Entradas',
			'name' => 'ENTRADAS',
		],
		[
			'label' => 'Salidas',
			'name' => 'SALIDAS',
		],
	];

	public static $tipo_productos = [
		1 => 'Producto Terminado',
		2 => 'Materia Prima',
		3 => 'Envases',
		7 => 'Productos Granel'
	];

	public static $estado_productos = [
		0 => 'Habilitado',
		1 => 'Eliminado'
	];

	/**
	 * Muestra grilla de Productos
	 * @return mixed
	 */
	public function index() {
		$title         = 'INVENTARIO DE PRODUCTOS';
		Breadcrumb::append_crumb($title);
		Jqgrid::add_js_colmodel('productos', self::$jqgrid_colmodel);
		Jqgrid::add_js_colmodel('movimientos', self::$jqgrid_colmodel2);

		$clase1  = DB::table('vFamilias')->lists('DESCRIP', 'DESCRIP');
		$clase2  = DB::table('vSubFamilias')->lists('DESCRIP', 'DESCRIP');
		$clase3  = DB::table('vSubSubFamilias')->lists('DESCRIP', 'DESCRIP');
		$prodban = DB::table('vListaProductosBanados')->lists('NOMBRE', 'NREGUIST');

		$tipo    = self::$tipo_productos;
		$estado  = self::$estado_productos;
		return View::make('stock.index', compact('title', 'clase1', 'clase2', 'clase3', 'tipo', 'estado', 'prodban'));
	}

	/**
	 * Genera el json para cargar los datos en jqgrid
	 * @return string
	 */
	public function datagrid() {
		Jqgrid::init('vProductos', self::$jqgrid_colmodel, self::jqgrid_format());
		return Jqgrid::datagrid();		
	}

	/**
	 * Genera el json para cargar los datos en jqgrid
	 * @return string
	 */
	public function movimientos($codigo) {

		$productos = DB::table('vMovimientoInventario')
			->where('CODIGO', 'LIKE', "%$codigo%")
			->select(DB::raw('CODIGO, NOMBRE, LOTE, FECHA, TIPO_DOCTO, DOCTO, PRECIO, ENTRADAS, SALIDAS, ANNO, MES, DIA'))
			->orderBy('ANNO')
			->orderBy('MES')
			->orderBy('DIA')
			->get();

		return \Response::json($productos);
	}

	public function saldo_productos() {

		$productos = DB::table('vProductos')
			->select(DB::raw("CODIGO Codigo, NOMBRE Descripcion, TIPOPROD Tipo, NOM_PROV Proveedor, PRECVTA Precio, CASE WHEN ELIMINADO=1 THEN 'Eliminado' Else 'Vigente' END Estado, STK_FISICO Saldo"))
			->orderBy('STK_FISICO', 'desc')
			->get();

		return \Response::json($productos);
	}


	/**
	 * Retorna funcion anonima que define los formatos para los valores de las distintas columnas de la grilla
	 * @return function
	 */
	private static function jqgrid_format() {
		return function ($column, $value) {
			$result = $value;
			if(in_array($column, ['PRECVTA'])) {
				$result = moneda($value);
			} else if($column == 'TIPO') {
				$result = self::$tipo_productos[$value];
			} else if($column == 'ELIMINADO') {
				if ($value == 0)
				{
					$result = "<div style='color: green;'><b>".self::$estado_productos[$value]."</b></div>";
				}
				else
				{
					$result = "<div style='color: red;'><b>".self::$estado_productos[$value]."</b></div>";
				}
			} else if($column == 'STK_FISICO') {
				if ($value  > 0)
				{
					$result = "<div style='color: white;'><b><button type='button' name='stock' class='btn btn-success' style='width: 100px; height: 22px; vertical-align: text-top;'>".$value."</button></b></div>";
				}
				elseif ($value == 0)
				{
					$result = "<div style='color: white;'><b><button type='button' name='stock' class='btn btn-primary' style='width: 100px; height: 22px; vertical-align: text-top;'>".$value."</button></b></div>";
				}
				else
				{
					$result = "<div style='color: white;'><b><button type='button' name='stock' class='btn btn-danger'  style='width: 100px; height: 22px; vertical-align: text-top;'>".$value."</button></b></div>";
				}
			}

			return $result;
		};
	}


	/**
	 * Retorna funcion anonima que define los formatos para los valores de las distintas columnas de la grilla
	 * @return function
	 */
	private static function jqgrid_format2() {
		return function ($column, $value) {
			$result = $value;

			return $result;
		};
	}

}
