<?php

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;

class FormulasController extends \BaseController {

	public static $jqgrid_colmodel = [
		[
			'label' => 'Id',
			'name' => 'ID',
			'hidden' => true
		],
		[
			'label' => 'Num registro',
			'name' => 'NREGUIST',
		],
		[
			'label' => 'Código',
			'name' => 'CODIGO',
			'hidden' => true
		],
		[
			'label' => 'Nombre',
			'name' => 'NOMBRE',
		],
		[
			'label' => 'Densidad Total',
			'name' => 'DEN_TOTAL',
		],
		[
			'label' => 'Peso Total (Kg)',
			'name' => 'PESO_TOTAL',
		],
		[
			'label' => 'Volumen (Lts)',
			'name' => 'VOL_TOTAL',
		],
		[
			'label' => 'Vida útil',
			'name' => 'VIDA_UTIL',
		],
		[
			'label' => 'Tipo articulo',
			'name' => 'TIPO_ARTICULO',
			'hidden' => true,
		],
		[
			'label' => 'Fecha Creación',
			'name' => 'FECHA_CRE',
			'searchoptions' => [
				'sopt' => ['custom']
			]
		],
		[
			'label' => 'Fecha Modif.',
			'name' => 'FECHA_MOD',
			'searchoptions' => [
				'sopt' => ['custom']
			]
		],
		[
			'label' => 'Usuario',
			'name' => 'USUARIO',
		],
		[
			'label'  => 'Imprimir',
			'name'   => 'texto',
		],
	];

	public static $jqgrid_detalles_colmodel = [
		[
			'label' => 'Id',
			'name' => 'ID',
			'hidden' => true
		],
		[
			'label' => 'Orden',
			'name' => 'ORDEN',
		],
		[
			'label' => 'Materia Prima',
			'name' => 'NOMBRE',
		],
		[
			'label' => 'Densidad',
			'name' => 'DENSIDAD',
		],
		[
			'label' => 'Peso',
			'name' => 'PESO',
		],
		[
			'label' => 'Volumen',
			'name' => 'VOLUMEN',
		]
	];

	/**
	 * Muestra grilla de fórmulas
	 *
	 * @return Response
	 */
	public function index($id = false)
	{
		$rowid = $id;
		$title = 'Fórmulas';
		Breadcrumb::append_crumb($title);
		Jqgrid::add_js_colmodel('formulas', self::$jqgrid_colmodel);
		Jqgrid::add_js_colmodel('detalles_formula', self::$jqgrid_detalles_colmodel);
		return View::make('formulas.index', compact('title', 'rowid'));
	}

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

	/**
	 * Genera el json para cargar los datos en jqgrid
	 * @return string
	 */
	public function detalles_datagrid() {
		Jqgrid::init('vDetallesFormula Order by ORDEN', self::$jqgrid_detalles_colmodel,  self::jqgrid_format());
		Jqgrid::get_query()->where('NREGUIST', Input::get('NREGUIST'));
		return Jqgrid::datagrid();
	}

	/**
	 * 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, ['VOLUMEN', 'PESO', 'DENSIDAD', 'DEN_TOTAL'])) {
				$result = number_format($value, 3, ',', '.');
			} else if(in_array($column, ['VOL_TOTAL', 'PESO_TOTAL'])) {
				$result = number_format($value / 1000, 2, ',', '.');
			} else if(in_array($column, ['FECHA_CRE', 'FECHA_MOD'])) {
				$result = date('d-m-Y H:i:s', strtotime($value));
			} else if(in_array($column, ['COSTO', 'COSTO_TOTAL'])) {
				$result = moneda($value);
			}
			if (in_array($column, ['texto'])) {
				$result = '<button type="button" id="IMPRIMIR_FORMULA_' . $value . '" name="IMPRIMIR_FORMULA_' . $value . '" style="height: 22px;" class="btn btn-primary btn-imprimir" title="Imprimir Formulas"><i class="fa fa-print"></i></button>';
            }
			return $result;
		};
	}

	/**
	 * Retorna funcion anonima que define los formatos de búsqueda para los valores de las distintas columnas de la grilla
	 * @return function
	 */
	private static function jqgrid_filter_format() {
		return function ($field, $data) {
			$result = $data;
			if (in_array($field, ['FECHA_CRE', 'FECHA_MOD'])) {
				$values = explode(' | ', $data);
				$v1 = date('d-m-Y', strtotime($values[0]));
				$v2 = date('d-m-Y', strtotime($values[1]));
				$aux = "$field BETWEEN '$v1 00:00:00' AND '$v2 23:59:59'";
				$result = $aux;
			}
			return $result;
		};
	}

	/**
	 * Muestra Vista de agregar fórmula
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function vista_agregar() {
		$title = 'Agregar';
		Breadcrumb::append_crumb('Fórmulas');
		Breadcrumb::append_crumb($title);
		$agua = DB::table('vProductos')
			->where('NREGUIST', Config::get('settings.agua_id'))
			->first();
		return View::make('formulas.agregar', compact('title', 'agua'));
	}

	/**
	 * Muestra Vista de editar fórmula
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function vista_editar($id) {
		$title = 'Editar';
		Breadcrumb::append_crumb('Fórmulas');
		Breadcrumb::append_crumb($title);
		$formula = DB::table('vFormulas')->where('ID', '=',$id)->first();
		if(empty($formula)) {
			//App::abort(404);
			$formula                = new stdClass;
			$formula->ID            = 0;
			$formula->NREGUIST      = 0;
			$formula->CODIGO        = '';
			$formula->NOMBRE        = '';
			$formula->OBSERVACION   = '';
			$formula->KILOS         = 0;
			$formula->VOLUMEN       = 0;
			$formula->VIDA_UTIL     = 0;
			$formula->TIPO_ARTICULO = '';
			$formula->FECHA_CRE     = '';
			$formula->FECHA_MOD     = '';
			$formula->USUARIO       = '';
			$formula->DEN_TOTAL     = 0;
			$formula->VOL_TOTAL     = 0;
			$formula->COSTO_TOTAL   = 0;
			$formula->PRECVTA       = 0;
			$formula->DENSIDAD      = 0;
		}
		$detalles_formula  = DB::table('vDetallesFormula')->where('NREGUIST', '=', $formula->NREGUIST)->get();
		$preguntas = DB::table('PRODUCCION_PREGUNTAS_FORMULA')->where('IDFORMULA', '=', $id)->get();
		$agua = DB::table('vProductos')
			->where('NREGUIST', Config::get('settings.agua_id'))
			->first();
		return View::make('formulas.editar', compact('id', 'title', 'formula', 'detalles_formula', 'preguntas', 'agua'));
	}

	/**
	 * Guarda fórmula en base de datos
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function agregar_formula() {
		$data = json_decode(Input::get('data'), true);
		//Validacion
		$vdata = [
			'NREGUIST_PROD_TERMINADO' => isset($data['nreguist'])?$data['nreguist']:'',
			'LITROS'  => isset($data['LITROS'])?$data['LITROS']:'',
			'VOLUMEN' => isset($data['volumen_formula'])?$data['volumen_formula']:'',
			'VIDA_UTIL' => isset($data['vida_util'])?$data['vida_util']:'',
			'OBSERVACION' => isset($data['observacion'])?$data['observacion']:'',
			'DENSIDAD' => isset($data['DENSIDAD'])?$data['DENSIDAD']:'',
		];
		$vrules = [
			'NREGUIST_PROD_TERMINADO' => 'required|unique:PRODUCCION_CABECERA_FORMULAS',
			'LITROS' => 'required|numeric',
			'VOLUMEN' => 'required|numeric',
			'VIDA_UTIL' => 'required|numeric',
			'DENSIDAD' => 'required|numeric',
		];
		$vmessages = [
			'NREGUIST_PROD_TERMINADO.required' => 'El campo Nombre del Producto es obligatorio.',
			'NREGUIST_PROD_TERMINADO.unique' => 'El Producto seleccionado ya poseé una fórmula.',
			'LITROS.required' => 'El campo Litros es obligatorio.',
			'LITROS.numeric' => 'El campo Litros debe ser numérico.',
			'VOLUMEN.required' => 'El campo Volumen es obligatorio.',
			'VOLUMEN.numeric' => 'El campo Volumen debe ser numérico.',
			'VIDA_UTIL.required' => 'El campo Vida útil es obligatorio.',
			'VIDA_UTIL.numeric' => 'El campo Vida útil debe ser numérico.',
			'DENSIDAD.required' => 'El campo Densidad es obligatorio.',
			'DENSIDAD.numeric' => 'El campo Densidad debe ser numérico.',
		];
		if(isset($data['materias_primas'])) {
			foreach($data['materias_primas'] as $mp) {
				$nreguists = implode(',', array_column(array_filter($data['materias_primas'], function($v) use ($mp) {return $v['id'] != $mp['id'];}), 'nreguist'));
				$vdata["MATERIA_PRIMA.{$mp['id']}.NREGUIST_MATERIA_PRIMA"] = isset($mp['nreguist'])?$mp['nreguist']:'';
				$vdata["MATERIA_PRIMA.{$mp['id']}.PESO"] = isset($mp['peso'])?$mp['peso']:'';
				$vdata["MATERIA_PRIMA.{$mp['id']}.VOLUMEN"] = isset($mp['volumen'])?$mp['volumen']:'';

				$vrules["MATERIA_PRIMA.{$mp['id']}.NREGUIST_MATERIA_PRIMA"] = "required|not_in:$nreguists";
				$vrules["MATERIA_PRIMA.{$mp['id']}.PESO"] = 'required';

				$vmessages["MATERIA_PRIMA.{$mp['id']}.NREGUIST_MATERIA_PRIMA.required"] = 'El campo Materia Prima es obligatorio.';
				$vmessages["MATERIA_PRIMA.{$mp['id']}.NREGUIST_MATERIA_PRIMA.not_in"] = 'La Materia Prima no puede estar repetida.';
				$vmessages["MATERIA_PRIMA.{$mp['id']}.PESO.required"] = 'El campo Peso es obligatorio.';
			}
		}
		if(isset($data['preguntas_calidad'])) {
			foreach($data['preguntas_calidad'] as $pc) {
				$vdata["PREGUNTA.{$pc['id']}"] = isset($pc['pregunta'])?$pc['pregunta']:'';

				$vrules["PREGUNTA.{$pc['id']}"] = "required";

				$vmessages["PREGUNTA.{$pc['id']}.required"] = 'El campo Pregunta es obligatorio.';
			}
		}

		$validador = Validator::make($vdata, $vrules, $vmessages);

		if($validador->fails()) {
			$response = $validador->messages();
			return Response::json($response, 422);
		} else if(!isset($data['materias_primas'])) {
			$message = ['content' => 'Debe agregar Materias Primas.', 'type' => 'error'];
			$response = ['status' => 409, 'message' => $message];
		} else {
			//fin validacion
			$result = DB::transaction(function() use ($data, $vdata) {
				$id_insert = DB::table('PRODUCCION_CABECERA_FORMULAS')->insertGetId([
					'NREGUIST_PROD_TERMINADO' => $vdata['NREGUIST_PROD_TERMINADO'],
					'OBSERVACION' => $vdata['OBSERVACION'],
					'LITROS'  => $vdata['LITROS'],
					'VOLUMEN' => $vdata['VOLUMEN'],
					'VIDA_UTIL' => $vdata['VIDA_UTIL'],
					'DENSIDAD' => $vdata['DENSIDAD'],
					'FECHA_CRE' => date('Ymd H:i:s'),
					'FECHA_MOD' => date('Ymd H:i:s'),
					'USUMOD' => Auth::id()
				]);

				foreach($data['materias_primas'] as $mp) {

					/* Inserta registros */
					DB::table('PRODUCCION_DETALLE_FORMULAS')->insert([
						'ID_CABECERA' => $id_insert,
						'NREGUIST_PROD_TERMINADO' => $vdata['NREGUIST_PROD_TERMINADO'],
						'NREGUIST_MATERIA_PRIMA'  => $vdata["MATERIA_PRIMA.{$mp['id']}.NREGUIST_MATERIA_PRIMA"],
						'PESO'                    => $vdata["MATERIA_PRIMA.{$mp['id']}.PESO"],
						'VOLUMEN'                 => $vdata["MATERIA_PRIMA.{$mp['id']}.VOLUMEN"],
						'DENSIDAD'                => $mp['densidad'],
						'ORDEN'                   => $mp['orden']
					]);
				}

				if(isset($data['preguntas_calidad'])) {
					foreach($data['preguntas_calidad'] as $pc) {
						DB::table('PRODUCCION_PREGUNTAS_FORMULA')->insert([
							'IDFORMULA'    => $id_insert,
							'ORDEN'        => $pc['orden'],
							'TIPOPREGUNTA' => $pc['tipo_pregunta'],
							'rango_inf'    => $pc['rango_inf'],
							'rango_may'    => $pc['rango_may'],
							'opciones'     => $pc['opciones'],
							'PREGUNTA'     => $vdata["PREGUNTA.{$pc['id']}"],
						]);
					}
				}

				return ['success' => true, 'id' => $id_insert];
			});

			if(isset($result['success'])) {
				$message = ['content' => 'La fórmula fue agregada.', 'type' => 'success', 'id' => $result['id']];
				$response = ['status' => 200, 'message' => $message];
			} else {
				$message = ['content' => 'La fórmula no pudo ser agregada.', 'type' => 'error'];
				$response = ['status' => 409, 'message' => $message];
			}
		}
		return Response::json($response, $response['status']);
	}

	/**
	 * Guarda fórmula en base de datos
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function editar_formula($id) {
		$data      = json_decode(Input::get('data'), true);
		//Validacion
		$vdata     = [
			'NREGUIST_PROD_TERMINADO' => isset($data['nreguist'])?$data['nreguist']:'',
			'LITROS'      => isset($data['LITROS'])?$data['LITROS']:'',
			'VOLUMEN'     => isset($data['volumen_formula'])?$data['volumen_formula']:'',
			'VIDA_UTIL'   => isset($data['vida_util'])?$data['vida_util']:'',
			'DENSIDAD'    => isset($data['DENSIDAD'])?$data['DENSIDAD']:'',
			'OBSERVACION' => isset($data['observacion'])?$data['observacion']:'',
		];
		$vrules    = [
			'NREGUIST_PROD_TERMINADO' => "required",
			'LITROS'    => 'required|numeric',
			'VOLUMEN'   => 'numeric',
			'VIDA_UTIL' => 'required|numeric',
			'DENSIDAD'  => 'required|numeric',
		];
		$vmessages = [
			'NREGUIST_PROD_TERMINADO.required' => 'El campo Nombre del Producto es obligatorio.',
			'LITROS.required'    => 'El campo Litros útil es obligatorio.',
			'LITROS.numeric'     => 'El campo Litros útil debe ser numérico.',
			'VOLUMEN.numeric'    => 'El campo Volumen debe ser numérico.',
			'VIDA_UTIL.required' => 'El campo Vida útil es obligatorio.',
			'VIDA_UTIL.numeric'  => 'El campo Vida útil debe ser numérico.',
			'DENSIDAD.required'  => 'El campo densidad es obligatorio.',
			'DENSIDAD.numeric'   => 'El campo densidad debe ser numérico.',
		];
		if(isset($data['materias_primas'])) {
			foreach($data['materias_primas'] as $mp) 
            {
				$nreguists = implode(',', array_column(array_filter($data['materias_primas'], function($v) use ($mp) {return $v['id'] != $mp['id'];}), 'nreguist'));
				$vdata["MATERIA_PRIMA.{$mp['id']}.NREGUIST_MATERIA_PRIMA"] = isset($mp['nreguist'])?$mp['nreguist']:'';
				$vdata["MATERIA_PRIMA.{$mp['id']}.PESO"]     = isset($mp['peso'])?$mp['peso']:'';
				$vdata["MATERIA_PRIMA.{$mp['id']}.VOLUMEN"]  = isset($mp['volumen'])?$mp['volumen']:'';
				$vdata["MATERIA_PRIMA.{$mp['id']}.densidad"] = isset($mp['densidad'])?$mp['densidad']:'';

				$vrules["MATERIA_PRIMA.{$mp['id']}.NREGUIST_MATERIA_PRIMA"] = "required|not_in:$nreguists";
				$vrules["MATERIA_PRIMA.{$mp['id']}.PESO"]   = 'required';

				$vmessages["MATERIA_PRIMA.{$mp['id']}.NREGUIST_MATERIA_PRIMA.required"] = 'El campo Materia Prima es obligatorio.';
				$vmessages["MATERIA_PRIMA.{$mp['id']}.NREGUIST_MATERIA_PRIMA.not_in"] = 'La Materia Prima no puede estar repetida.';
				$vmessages["MATERIA_PRIMA.{$mp['id']}.PESO.required"] = 'El campo Peso es obligatorio.';
			}
		}
		if(isset($data['preguntas_calidad'])) {
			foreach($data['preguntas_calidad'] as $pc) 
            {
				$vdata["PREGUNTA.{$pc['id']}"]  = isset($pc['pregunta'])?$pc['pregunta']:'';
				$vrules["PREGUNTA.{$pc['id']}"] = "required";
				$vmessages["PREGUNTA.{$pc['id']}.required"] = 'El campo Pregunta es obligatorio.';
			}
		}
		$validador = Validator::make($vdata, $vrules, $vmessages);
		if ($validador->fails()) {
			$response = $validador->messages();
			return Response::json($response, 422);
		} elseif(!isset($data['materias_primas'])) {
            $message = ['content' => 'Debe agregar Materias Primas.', 'type' => 'error'];
            $response = ['status' => 409, 'message' => $message];
		} else {
			// Fin validacion

   			$id_insert = DB::table('PRODUCCION_CABECERA_FORMULAS')
			    ->where('ID', $id)
				->update([
				'NREGUIST_PROD_TERMINADO' => $vdata['NREGUIST_PROD_TERMINADO'],
				'OBSERVACION' => $vdata['OBSERVACION'],
				'LITROS'      => $vdata['LITROS'],
				'VOLUMEN'     => $vdata['VOLUMEN'],
				'VIDA_UTIL'   => $vdata['VIDA_UTIL'],
				'DENSIDAD'    => $vdata['DENSIDAD'],
				'FECHA_MOD'   => date('Ymd H:i:s'),
				'USUMOD'      => Auth::id()
			]);

			DB::table('PRODUCCION_DETALLE_FORMULAS')->where('NREGUIST_PROD_TERMINADO', $vdata['NREGUIST_PROD_TERMINADO'])->delete();

			foreach($data['materias_primas']  as $mp) {

				/* Inserta registros */
				DB::table('PRODUCCION_DETALLE_FORMULAS')->insert([
					'ID_CABECERA'             => $id,
					'NREGUIST_PROD_TERMINADO' => $vdata['NREGUIST_PROD_TERMINADO'],
					'NREGUIST_MATERIA_PRIMA'  => $vdata["MATERIA_PRIMA.{$mp['id']}.NREGUIST_MATERIA_PRIMA"],
					'PESO'                    => $vdata["MATERIA_PRIMA.{$mp['id']}.PESO"],
					'VOLUMEN'                 => $vdata["MATERIA_PRIMA.{$mp['id']}.VOLUMEN"],
					'DENSIDAD'                => $vdata["MATERIA_PRIMA.{$mp['id']}.densidad"],
					'ORDEN'                   => $mp['orden']
				]);
			}

			DB::table('PRODUCCION_PREGUNTAS_FORMULA')->where('IDFORMULA', $id)->delete();
			if (isset($data['preguntas_calidad'])) {
				foreach($data['preguntas_calidad'] as $pc) {

					/* Inserta valores */
					DB::table('PRODUCCION_PREGUNTAS_FORMULA')->insert([
						'IDFORMULA'    => $id,
						'PREGUNTA'     => $vdata["PREGUNTA.{$pc['id']}"],
						'TIPOPREGUNTA' => $pc['tipo_pregunta'],
						'rango_inf'    => $pc['rango_inf'],
						'rango_may'    => $pc['rango_may'],
						'opciones'     => $pc['opciones'],
						'ORDEN'        => $pc['orden']
					]);
				}
			}

            $result       = ['success' => true, 'id' => $id];

			if(isset($result['success'])) {
				$message  = ['content'  => 'La fórmula fue editada.', 'type' => 'success', 'id' => $id];
				$response = ['status'  => 200, 'message' => $message];
			} else {
				$message  = ['content'  => 'La fórmula no pudo ser editada.', 'type' => 'error'];
				$response = ['status'  => 409, 'message' => $message];
			}
		}
		return Response::json($response, $response['status']);
	}

	/**
	 * Elimina fórmula de base de datos
	 * @return mixed
	 */
	public function eliminar() {
		$id = Input::get('id');
		$result = DB::transaction(function() use ($id) {
			DB::table('PRODUCCION_DETALLE_FORMULAS')
				->where('ID_CABECERA', $id)
				->delete();
			DB::table('PRODUCCION_CABECERA_FORMULAS')
				->where('ID', $id)
				->delete();
			return true;
		});

		if($result) {
			$message = ['content' => 'La fórmula fue eliminada.', 'type' => 'success'];
			$response = ['status' => 200, 'message' => $message];
		} else {
			$message = ['content' => 'La fórmula no pudo ser eliminada.', 'type' => 'error'];
			$response = ['status' => 409, 'message' => $message];
		}

		return Response::json($response, $response['status']);
	}

	/**
	 * Obtiene listado de materias primas
	 * @return mixed
	 */
	public function select_materias_primas() {
		$query = Input::get('q', '');
		$materias_primas = DB::table('vListaProductos')
			->where('TIPO_ARTICULO', 'MATERIA PRIMA')
			->where('NOMBRE', 'LIKE', "%$query%")
			->where('NREGUIST', '<>', 1013474)
			->select(DB::raw('NREGUIST as id, NOMBRE as text, VALPROM as costo, DENSIDAD as densidad'))
			->paginate(10);
		return $materias_primas;
	}

	/**
	 * Obtiene listado de productos terminados
	 * @return mixed
	 */
	public function select_productos() {
		$query = Input::get('q', '');
		$productos = DB::table('vListaProductos')
			->where('TIPO_ARTICULO', 'PRODUCTO GRANEL')
			->where('NOMBRE', 'LIKE', "%$query%")
			->whereRaw('NREGUIST NOT IN (SELECT NREGUIST FROM vFormulas)')
			->select(DB::raw('NREGUIST as id, NOMBRE as text, PRECVTA as precio_venta'))
			->paginate(10);
		return $productos;
	}

	/**  vista_editar_formula */
	public function vista_editar_formula() {
		$id      = Input::get('ID', '');

		$formula = DB::table('vFormulas')
		->where('ID', '=', $id)
		->select(DB::raw('ID, NREGUIST, CODIGO, NOMBRE, OBSERVACION, LITROS, VOLUMEN, VIDA_UTIL, TIPO_ARTICULO, FECHA_CRE, FECHA_MOD, USUARIO, DEN_TOTAL, VOL_TOTAL, COSTO_TOTAL, PRECVTA, DENSIDAD'))
		->get();

		$detalles_formula  = DB::table('vDetallesFormula')
		->where('NREGUIST', '=', $formula[0]->NREGUIST)
		->select(DB::raw('ORDEN, NOMBRE, DENSIDAD, PESO, VOLUMEN'))
		->get();

		/* Variables */
		$CODIGO      = $formula[0]->CODIGO;
		$NOMBRE      = $formula[0]->NOMBRE;
		$VOLUMEN     = $formula[0]->VOLUMEN;
		$LITROS      = $formula[0]->LITROS;
		$VIDA_UTIL   = $formula[0]->VIDA_UTIL;
		$DEN_TOTAL   = $formula[0]->DEN_TOTAL;
		$OBSERVACION = $formula[0]->OBSERVACION;

		/* Html de formulario de Detalle de Formulas */

		$html = "

		<style>
		div.row {
			margin-left: -13px;
			margin-right: -13px
		}
		div.col-md-1 {
			position: relative;
			min-height: 1px;
			padding-left: 13px;
			padding-right: 13px;
			float: left;
			width: 8.33333333%;
		}
		div.col-md-2 {
			position: relative;
			min-height: 1px;
			padding-left: 13px;
			padding-right: 13px;
			float: left;
			width: 16.66666667%;
		}
		div.col-md-5 {
			position: relative;
			min-height: 1px;
			padding-left: 13px;
			padding-right: 13px;
			float: left;
			width: 41.66666667%;
		}
		div.col-md-10 {
			position: relative;
			min-height: 1px;
			padding-left: 13px;
			padding-right: 13px;
			float: left;
			width: 83.33333333%;
		}
		div.col-md-12 {
			position: relative;
			min-height: 1px;
			padding-left: 13px;
			padding-right: 13px;
			float: left;
			width: 100%;
		}
		
		
		table.blueTable {
			border: 1px solid #1C6EA4;
			background-color: #EEEEEE;
			width: 100%;
			text-align: left;
			border-collapse: collapse;
		  }
		  table.blueTable td, table.blueTable th {
			border: 1px solid #AAAAAA;
			padding: 3px 2px;
		  }
		  table.blueTable tbody td {
			font-size: 13px;
		  }
		  table.blueTable tr:nth-child(even) {
			background: #D0E4F5;
		  }
		  table.blueTable thead {
			background: #1C6EA4;
			background: -moz-linear-gradient(top, #5592bb 0%, #327cad 66%, #1C6EA4 100%);
			background: -webkit-linear-gradient(top, #5592bb 0%, #327cad 66%, #1C6EA4 100%);
			background: linear-gradient(to bottom, #5592bb 0%, #327cad 66%, #1C6EA4 100%);
			border-bottom: 2px solid #444444;
		  }
		  table.blueTable thead th {
			font-size: 15px;
			font-weight: bold;
			color: #FFFFFF;
			border-left: 2px solid #D0E4F5;
		  }
		  table.blueTable thead th:first-child {
			border-left: none;
		  }
		  
		  table.blueTable tfoot {
			font-size: 14px;
			font-weight: bold;
			color: #FFFFFF;
			background: #D0E4F5;
			background: -moz-linear-gradient(top, #dcebf7 0%, #d4e6f6 66%, #D0E4F5 100%);
			background: -webkit-linear-gradient(top, #dcebf7 0%, #d4e6f6 66%, #D0E4F5 100%);
			background: linear-gradient(to bottom, #dcebf7 0%, #d4e6f6 66%, #D0E4F5 100%);
			border-top: 2px solid #444444;
		  }
		  table.blueTable tfoot td {
			font-size: 14px;
		  }
		  table.blueTable tfoot .links {
			text-align: right;
		  }
		  table.blueTable tfoot .links a{
			display: inline-block;
			background: #1C6EA4;
			color: #FFFFFF;
			padding: 2px 8px;
			border-radius: 5px;
		  }
		  
		  </style>";

        $html .= "<div class='modal-header' style='width: 100%;'>";
        $html .= "     <button type='button' class='close' tabindex='-1' data-dismiss='modal' aria-hidden='true'>";
        $html .= "    	×";
        $html .= "     </button>";
        $html .= '     <h4 class="modal-title"><b><div style="float: left;">Composición de Fórmula&nbsp;(Cod:&nbsp;'.$CODIGO.')&nbsp;<font color="red">Producto:&nbsp;'.$NOMBRE.'</font></div></b></h4><br>';
        $html .= "</div>";
        $html .= "<form method='POST' class='form-horizontal' id='codigo_barra_form'>";
        $html .= "      <input type='hidden' id='id_imprimir' name='id' value='$id'>";
        $html .= "      <div class='modal-body'>";
        $html .= "           <div class='row'>";
        $html .= "                <div class='col-md-12'>";
        $html .= "                     <div id='imprime' class='form-group col-sm-12'></div>";


        $html .= "<div style='row'>";
        $html .= "     <div class='col-md-2'>";
        $html .= "          <label>Volumen:</label>";
        $html .= "     </div>";
        $html .= "     <div class='col-md-2'>";
        $html .= "          <div id='Volumen'>$VOLUMEN</div>";
        $html .= "     </div>";
        $html .= "     <div class='col-md-1'>";
        $html .= "          <div> </div>";
        $html .= "     </div>";
        $html .= "     <div class='col-md-2'>";
        $html .= "          <label>Litros:</label>";
        $html .= "     </div>";
        $html .= "     <div class='col-md-5'>";
		$html .= "          <div id='Litros'>$LITROS</div>";
        $html .= "     </div>";
        $html .= "</div>";
        $html .= "<div class='row'>";
        $html .= "     <div class='col-md-2'>";
        $html .= "          <label>Vida Util:</label>";
        $html .= "     </div>";
        $html .= "     <div class='col-md-2'>";
        $html .= "          <div id='VidaUtil'>$VIDA_UTIL</div>";
        $html .= "     </div>";
        $html .= "     <div class='col-md-1'>";
        $html .= "          <div> </div>";
        $html .= "     </div>";
        $html .= "     <div class='col-md-2'>";
        $html .= "          <label>Densidad:</label>";
        $html .= "     </div>";
        $html .= "     <div class='col-md-5'>";
        $html .= "          <div id='Densidad'>$DEN_TOTAL</div>";
        $html .= "     </div>";
        $html .= "</div>";
        $html .= "<div class='row'>";
        $html .= "     <div class='col-md-2'>";
        $html .= "          <label>Instrucciones de Fabricación:</label>";
        $html .= "     </div>";
        $html .= "     <div class='col-md-10'>";
        $html .= "          <div><textarea id='OBSERVACIONES' rows='3' cols='100' readonly>$OBSERVACION</textarea></div>";
        $html .= "     </div>";
		$html .= "</div><BR>";

		$html .= "<div class='row'>";
		$html .= "     <div class='col-md-12'>";
		$html .= "          <B>DETALLE DE MATERIAS PRIMAS</B>";
		$html .= "     </div>";
		$html .= "</div><BR>";

		/* Titulos de la tabla de materias primas */
		$html .= "<table class='blueTable' style='font-size: 9px;'>";
		$html .= "<tr>";
		$html .= "     <th>";
		$html .= "          Orden";
		$html .= "     </th>";
		$html .= "     <th>";
		$html .= "          Nombre";
		$html .= "     </th>";
		$html .= "     <th>";
		$html .= "          Densidad";
		$html .= "     </th>";
		$html .= "     <th>";
		$html .= "          Peso";
		$html .= "     </th>";
		$html .= "     <th>";
		$html .= "          Volumen";
		$html .= "     </th>";
		$html .= "</tr>";
	
		/* Recorre el arreglo */
		$swColor      = 0;
        foreach ($detalles_formula as $key => $linea) {
            /* Valores de los campos */
			$ORDEN    = $linea->ORDEN; 
			$NOMBRE   = $linea->NOMBRE; 
			$DENSIDAD = $linea->DENSIDAD;
			$PESO     = $linea->PESO;
			$VOLUMEN  = $linea->VOLUMEN;

			/* Colores */
			if ($swColor == 1)
			{
				$bckcolor = '#E4F5FC'; 
				$color    = 'black';
				$swColor  = 0;
			}
			else
			{
				$bckcolor = '#FCE4FB'; 
				$color    = 'black';
				$swColor  = 1;
			}
	
            /* Detalle de los componentes */
			$html .= "<tr>";
			$html .= "     <td style='background-color: $bckcolor; color: $color'>";
			$html .=            $ORDEN;
			$html .= "     </td>";
			$html .= "     <td style='background-color: $bckcolor; color: $color'>";
			$html .=            $NOMBRE;
			$html .= "     </td>";
			$html .= "     <td style='background-color: $bckcolor; color: $color'>";
			$html .=            $DENSIDAD;
			$html .= "     </td>";
			$html .= "     <td style='background-color: $bckcolor; color: $color'>";
			$html .=            $PESO;
			$html .= "     </td>";
			$html .= "     <td style='background-color: $bckcolor; color: $color'>";
			$html .=            $VOLUMEN;
			$html .= "     </td>";
			$html .= "</tr>";
		}
		$html .= "</table>";

		/* Lee preguntas */
		$preguntas         = DB::table('PRODUCCION_PREGUNTAS_FORMULA')
							->where('IDFORMULA', '=', $id)
							->select(DB::raw('ORDEN, PREGUNTA, TIPOPREGUNTA, RANGO_INF, RANGO_MAY, OPCIONES'))
							->get();

        /* PREGUNTAS */
		$html .= "<BR><div class='row'>";
		$html .= "     <div class='col-md-12'>";
		$html .= "          <B>PREGUNTAS PARA CONTROL DE CALIDAD</B>";
		$html .= "     </div>";
		$html .= "</div><BR>";

		/* Titulos de la tabla de Preguntas */
		$html .= "<table class='blueTable' style='font-size: 9px;'>";
		$html .= "<tr>";
		$html .= "     <td style='background-color: blue; color: white'>";
		$html .= "          Orden";
		$html .= "     </td>";
		$html .= "     <td style='background-color: blue; color: white'>";
		$html .= "          Pregunta";
		$html .= "     </td>";
		$html .= "     <td style='background-color: blue; color: white'>";
		$html .= "          Tipo Pregunta";
		$html .= "     </td>";
		$html .= "     <td style='background-color: blue; color: white'>";
		$html .= "          Rango inferior";
		$html .= "     </td>";
		$html .= "     <td style='background-color: blue; color: white'>";
		$html .= "          Rango Mayor";
		$html .= "     </td>";
		$html .= "     <td style='background-color: blue; color: white'>";
		$html .= "          Opciones";
		$html .= "     </td>";
		$html .= "</tr>";

		/* Recorre el Preguntas */
		$swColor      = 0;
        foreach ($preguntas as $key => $linea) {
            /* Valores de los campos */
			$ORDEN         = $linea->ORDEN; 
			$PREGUNTA      = $linea->PREGUNTA; 
			$RANGO_INF     = $linea->RANGO_INF;
			$RANGO_MAY     = $linea->RANGO_MAY;
			$OPCIONES      = $linea->OPCIONES;
			if ($OPCIONES == '')
			{
				$OPCIONES  = '&nbsp;';
			}

			If ($linea->TIPOPREGUNTA == 1)
            {
				$TIPOPREGUNTA = 'Texto'; 
            }
			If ($linea->TIPOPREGUNTA == 2)
            {
				$TIPOPREGUNTA = 'Por Rangos'; 
            }
			If ($linea->TIPOPREGUNTA == 3)
            {
				$TIPOPREGUNTA = 'Texto Opción'; 
            }


			/* Colores */
			if ($swColor == 1)
			{
				$bckcolor = '#E4F5FC'; 
				$color    = 'black';
				$swColor  = 0;
			}
			else
			{
				$bckcolor = '#FCE4FB'; 
				$color    = 'black';
				$swColor  = 1;
			}

            /* Detalle de los componentes */
			$html .= "<tr>";
			$html .= "     <td style='background-color: $bckcolor; color: $color'>";
			$html .=            $ORDEN;
			$html .= "     </td>";
			$html .= "     <td style='background-color: $bckcolor; color: $color'>";
			$html .=            $PREGUNTA;
			$html .= "     </div>";
			$html .= "     <td style='background-color: $bckcolor; color: $color'>";
			$html .=            $TIPOPREGUNTA;
			$html .= "     </td>";
			$html .= "     <td style='background-color: $bckcolor; color: $color'>";
			$html .=            $RANGO_INF;
			$html .= "     </td>";
			$html .= "     <td style='background-color: $bckcolor; color: $color'>";
			$html .=            $RANGO_MAY;
			$html .= "     </td>";
			$html .= "     <td style='background-color: $bckcolor; color: $color'>";
			$html .=            $OPCIONES;
			$html .= "     </td>";
			$html .= "</tr>";
		}
		$html .= "</table>";

		/* Parte final */
		$html .= "<div id='pdf_imprimir' class='form-group col-sm-12'>";
		$html .= "</div>";
		$html .= "</div>";
		$html .= "</div>";
		$html .= "</div>";
		$html .= "<div class='modal-footer'>";
		$html .= "<button type='button' class='btn btn-default' data-dismiss='modal'>Cancelar</button>";
		$html .= "<button type='button' class='btn btn-danger' id='barra-impresora'>Imprimir</button>";
		$html .= "</div>";
		$html .= "</form>";

		return $html;
	}

}