<?php
class Materiales extends CI_Controller
{
    private $_template;
    protected $_fechaActual;
    protected $_iduser;
    protected $_csstyle;
    protected $_Variables;
	
	function __construct() //Constructor
	{
		parent::__construct();

		if( ! $this->redux_auth->logged_in() )
		{
			redirect(base_url().'login');
		}
		
		$this->_fechaActual = mdate("%Y-%m-%d %H:%i:%s",now());
		$this->_iduser = $this->session->userdata('id');
		$this->config->load('style', TRUE);
		$this->_csstyle = $this->config->item('style');
		$this->config->load('js',TRUE);
		$this->_jss=$this->config->item('js');
		
		$this->load->model("modelousuario","modelousuario");
		$this->load->model("modeloclientes","modeloclientes");
		$this->load->model("materiales_modelo","materiales");
		$this->load->model("proveedores_model","modeloproveedores");
		$this->load->model("inventario_model","inventario");
		
		$this->load->model("modelo_configuracion","configuracion");
		$this->_Variables=$this->configuracion->getAllVariables();
	}//_constructor
	
	#========================================================================================================#
	#=========================================CRITERIOS DE ORDENANAMIENTO====================================#
	#========================================================================================================#
	
	public function ordenamiento($criterio)
	{
		$this->session->set_userdata('criterioMateriales',$criterio);
		$this->session->set_userdata('criterioMaterialesInventario',"b");
		
		redirect('materiales','refresh');
	}
	
	public function ordenamientoInventario($criterio)
	{
		$this->session->set_userdata('criterioMaterialesInventario',$criterio);
		
		redirect('materiales','refresh');
	}

	#========================================================================================================#
	#=============================================AUTOCOMPLETADOS============================================#
	#========================================================================================================#
	
	public function autoCompletadoMateriales()
	{
		if(!empty ($_POST))
		{
			$clientes=$this->configuracion->autoCompletadoMateriales();
			
			if ($clientes!=NULL)
			{
				foreach ($clientes as $row)
				{
					echo '<li onClick="datoEncontrado(\''.
					$row->idMaterial.
					'\',\''.str_replace('"',"",$row->nombre).
					'\',\''.$row->idUnidad.
					'\',\''.str_replace('"',"",$row->unidad).
					'\')
					">'.$row->nombre.', '.$row->unidad.'</li>';
				}
			}
		}
	}
	
	public function prebusqueda($idMaterial)
	{
		if($idMaterial=="nada")
		{
			$idMaterial='';
		}
		
		$this->session->set_userdata('idMaterialBusqueda',$idMaterial);
		
		redirect('materiales','refresh');
	}
		 
	public function index($limite=0)
	{
		$Data['title']				= "Panel de Administración";
		$Data['cassadmin']			=$this->_csstyle["cassadmin"];
		$Data['csmenu']				=$this->_csstyle["csmenu"];
		$Data['csvalidate']			=$this->_csstyle["csvalidate"];
		$Data['csui']				=$this->_csstyle["csui"];
		$Data['nameusuario']		=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']		=$this->_fechaActual;
		$Data['Jry']				=$this->_jss['jquery'];
		$Data['JFuntInventario']	=$this->_jss['JFuntInventario'];
		$Data['Jqui']				=$this->_jss['jqueryui'];                  
		$Data['jFicha_cliente']		=$this->_jss['jFicha_cliente'];  
		$Data['permisos']			=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']			='materiales'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);    
		$this->load->view("principal",$Data);
		
		$Pag["base_url"]	= base_url()."materiales/index/";
		$Pag["total_rows"]	=$this->materiales->contarMateriales();//Total de Registros
		$Pag["per_page"]	=25;
		$Pag["num_links"]	=5;
		
		$this->pagination->initialize($Pag);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('6',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['proveedores']	=$this->inventario->proveedores();
		$data['materiales'] 	= $this->materiales->obtenerMateriales($Pag["per_page"],$limite);
		$data['unidades'] 		= $this->configuracion->obtenerUnidades();
		$data['inicio']  		= $limite;
		$num_r 					= count($data['materiales']);
		$data['per_page']		= $num_r;
		
		$this->load->view("materiales/index",$data); //principal lista de clientes
		$this->load->view("pie",$Data);
	}//index
 
	public function registrarMateriaPrima() #Almacenar un nuevo material
	{
		if(!empty ($_POST))
		{
			$material	=$this->materiales->registrarMateriaPrima();
			$material==1?$this->session->set_userdata("notificacion",'El material se ha registrado correctamente'):'';
		   
		   	echo $material;
		}
	}
	
	public function borrarMaterial($idMaterial,$idProveedor)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('6',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$material	=$this->materiales->borrarProductoMaterial($idMaterial,$idProveedor);
		
		$material=="1"?
				$this->session->set_userdata('notificacion','El material se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar el material porque esta asociado a compras, proveedores y/o productos');
		
		
		redirect("materiales","refresh");
	}
	

	public function saveProducto()
	{
		if(!empty ($_POST))
		{
			$id = intval($this->input->post('id'));		
			
			//if($this->inventario->SaveProducto($id,$this->_upload_image('image', TRUE)) != NULL)
			if($this->inventario->actualizar_material($id))
			{
				$this->session->set_flashdata('message', array('messageType' => 'success','Message' => 'El registro se ha almacenado correctamente.'));
			}
			else
			{
				$this->session->set_flashdata('message', array('messageType' => 'error','Message' => 'Ocurrio un error al guardar el registro.'));
			}
			redirect('materiales','refresh');
		}
		else 
		{
			redirect('materiales','refresh');
		}
	}//saveProveedor
	
	public function editarMaterial($idMaterial,$idProveedor)
	{
		$material		=$this->materiales->obtenerMaterialProveedor($idMaterial,$idProveedor);
		$relaciones		=$this->materiales->comprobarNumeroRelaciones($idMaterial);
		$unidades 		=$this->configuracion->obtenerUnidades();
		$conversiones 	=$this->configuracion->obtenerConversiones($material->idUnidad);
		
		echo'
		<div class="ui-state-error" ></div>
		<table style="width:100%" class="admintable">
			<tr>
				<td class="key">Materia prima:</td>
				<td>
					<input id="materiaPrima" name="materiaPrima" class="cajas" style="width:70%" value="'.$material->nombre.'" />
				</td>
			</tr>
			
			<td class="key">Unidad:</td>
				<td>
				<select name="txtUnidad" id="txtUnidad" onchange="obtenerConversiones()" class="cajas" style="width:200px;" >
					<option value="0">Seleccione</option>';
				 
					   foreach($unidades as $row) 
					   { 
					      $seleccionado=$row['idUnidad']==$material->idUnidad?'selected="selected"':'';
						  echo'<option '.$seleccionado.' value="'.$row['idUnidad'].'">'.$row['descripcion'].'</option>';
					   }
					echo'
					</select>
				 </td>
			</tr>
			
			<td class="key">Conversión:</td>
				<td id="obtenerConversiones">
				<select name="selectConversiones" id="selectConversiones" class="cajas" style="width:200px;" >
					<option value="0">Seleccione</option>';
					
					 foreach($conversiones as $row) 
					 { 
						 $seleccionado=$row->idConversion==$material->idConversion?'selected="selected"':'';
						 echo'<option '.$seleccionado.' value="'.$row->idConversion.'">'.$row->nombre.' ('.$row->referencia.')</option>';
					 }
					   
					echo'
					</select>
				 </td>
			</tr>
			
			<tr>
				<td class="key">Costo:</td>
				<td>
					<input id="costoMateria" name="costoMateria" class="cajas" value="'.$material->costoMaterial.'" />
					<input type="hidden" id="txtIdMaterial" name="" class="cajas" value="'.$idMaterial.'" />
				</td>
			</tr>
			
			<input type="hidden" id="txtIdProveedor" value="'.$material->idProveedor.'" />
			<input type="hidden" id="txtIdProveedorPasado" value="'.$material->idProveedor.'" /> ';
			
			if($relaciones==1)
			{
				if($this->materiales->comprobarComprasMaterial($idMaterial,$idProveedor)==0)
				{
					echo'
					<tr>
					  <td  class="key">Proveedor:</td>
					  <td>
						  
						  <input type="text" value="'.$material->empresa.'" class="cajas" id="txtBusquedaProveedor"  style="width:500px" />
						  <script>
							$("#txtBusquedaProveedor").autocomplete(
							{
								source:"'.base_url().'configuracion/obtenerProveedores",
								
								select:function( event, ui)
								{
									$("#txtIdProveedor").val(ui.item.idProveedor)
								}
							});
						  </script>
					  </td>
					</tr>';
				}
			}
			
			echo'
            <tr>
				<td class="key">Código interno:</td>
				<td>
					<input id="txtCodigoInternoEditar" name="txtCodigoInternoEditar" class="cajas" style="width:70%" value="'.$material->codigoInterno.'" />
				</td>
			</tr>
			<tr>
				<td class="key">Cantidad mínima:</td>
				<td>
					<input id="txtCantidadMinimaEditar" name="txtCantidadMinimaEditar" class="cajas" style="width:70%" value="'.$material->stockMinimo.'" />
				</td>
			</tr>
		</table>';
	}
	
	function formularioMateriaPrima()
	{
		$proveedores	=$this->inventario->proveedores();
		$unidades 		=$this->configuracion->obtenerUnidades();
		
		echo'
		<script>
		$(document).ready(function()
		{
			$("#txtMaterial").autocomplete(
			{
				source:"'.base_url().'configuracion/obtenerMateriales",
				
				select:function( event, ui)
				{
					notify("El material ya esta registrado",500,5000,"error",5,5);
					document.getElementById("txtMaterial").reset();
				}
			});
		});
		</script>
		<div class="ui-state-error" ></div>
		<table class="admintable" width="100%;">
			<tr>
				<td class="key" >Concepto:</td>
				<td>
					<input type="text" name="txtMaterial" id="txtMaterial" class="cajas" style="width:500px;"  /> 
				</td>
			</tr>
			
			<tr>
			
			<td class="key">Unidad:</td>
				<td>
				<select name="txtUnidad" id="txtUnidad" onchange="obtenerConversiones()" class="cajas" style="width:200px;" >
					<option value="0">Seleccione</option>';
				 
					   foreach($unidades as $unidad) 
					   { 
						  echo'<option value="'.$unidad['idUnidad'].'">'.$unidad['descripcion'].'</option>';
					   }
					echo'
					</select>
				 </td>
			</tr>
			
			<td class="key">Conversión:</td>
				<td id="obtenerConversiones">
				<select name="selectConversiones" id="selectConversiones" class="cajas" style="width:200px;" >
					<option value="0">Seleccione</option>
					</select>
				 </td>
			</tr>
			
			<tr>
				<td class="key" >Código interno:</td>
				<td>
					<input type="text" name="txtCodigoInterno" id="txtCodigoInterno" class="cajas" style="width:200px;"  /> 
				</td>
			</tr>
			
			<tr>
				<td class="key">Costo:</td>
				<td>
					<input name="T4" style="width:200px;" type="text" class="cajas" id="T4"  /> 
				</td>
			</tr>
			<tr>
			  <td  class="key">Proveedor:</td>
			  <td>
			  	  <input type="hidden" id="txtIdProveedor" value="0" />
				  <input type="text" class="cajas" id="txtBusquedaProveedor"  style="width:500px" />
				  <script>
				  	$("#txtBusquedaProveedor").autocomplete(
					{
						source:"'.base_url().'configuracion/obtenerProveedores",
						
						select:function( event, ui)
						{
							$("#txtIdProveedor").val(ui.item.idProveedor)
						}
					});
				  </script>
			  </td>
			</tr>
			<tr>
				<td  class="key">Cantidad mínima:</td>
				<td>
					<input name="CMINIMA" style="width:200px;" type="text" class="cajas" id="CMINIMA" value="" /> 
				</td>
			</tr>
		</table>';
	}
	
	public function confirmarEditar()
	{
		if(!empty($_POST))
		{
			$material=$this->materiales->confirmarEditar();
			print($material);
		}
	}
	
	public function obtenerTodosProveedores()
	{
		if(!empty($_POST))
		{
			$idMaterial		=$this->input->post('idMaterial');
			$proveedores	=$this->inventario->proveedores();
			
			echo'
			<div class="ui-state-error" ></div>
			<table class="admintable">
				<tr>
					<td class="key">Seleccione un proveedor</td>
					<td>
					<select id="proveedoresMateriales" class="cajas" style="width:90%">';
					
					foreach($proveedores as $row) 
					{
						if($this->materiales->checarProveedorMaterial($row->idProveedor,$idMaterial)==0)
						{
							echo '<option value="'.$row->idProveedor.'">'.$row->empresa.'</option>';
						}
					}
					echo'</select>
					</td>
				</tr>
				<tr>
					<td class="key">Costo</td>
					<td><input type="text" class="cajas" id="txtCostoMaterial" style="width:100px" /></td>
				</tr>
			</table>';
		}
	}
	
	public function agregarProveedorMaterial()
	{
		if(!empty($_POST))
		{
			$proveedor=$this->materiales->agregarProveedorMaterial();
			echo $proveedor;
		}
	}
	
	public function registrarMerma()
	{
		if(!empty($_POST))
		{
			$merma=$this->materiales->registrarMerma();
			
			if($merma=="1")
			{
				$this->session->set_userdata('notificacion','Se ha registrado correctamente la merma');
			}
			
			echo $merma;
		}
	}
	
	public function obtenerMermas()
	{
		if(!empty($_POST))
		{
			$idMaterial	=$this->input->post('idMaterial');
			
			$mermas		=$this->materiales->obtenerMermas($idMaterial);
			$material	=$this->materiales->obtenerMaterial($idMaterial);
			
			$i=1;
			
			echo'
			<div class="ui-state-error" ></div>
			<table class="admintable" width="99%">
				<tr>
					<th colspan="2">'.$material->nombre.'</th>
				</tr>
				<tr>
					<td class="key">Cantidad</td>
					<td>
						<input type="text" id="txtCantidadMerma" class="cajas" /> 
						<input type="hidden" id="txtTotalMaterial" value="'.$material->stock.'" class="cajas" />
						<input type="hidden" id="txtIdMaterialMerma" value="'.$idMaterial.'" class="cajas" />
					</td>
				</tr>
				<tr>
					<td class="key">Comentarios</td>
					<td>
						<textarea class="TextArea" id="txtComentariosMerma"></textarea>
					</td>
				</tr>
			</table>';
			
			
			if($mermas!=null)
			{
				echo'
				<table class="admintable" width="99%">
					<tr>
						<th>#</th>
						<th>Fecha</th>
						<th>Cantidad</th>
						<th>Comentarios</th>
					</tr>';
				
				
				foreach($mermas as $row)
				{
					echo'
					<tr>
						<td>'.$i.'</td>
						<td align="center">'.$row->fecha.'</td>
						<td align="right">'.number_format($row->cantidad,4).'</td>
						<td>'.$row->comentarios.'</td>
					</tr>';
				}
				
				echo'</table>';
			}
			
		}
	}
	
	public function prima()
	{
		$prima=$this->materiales->prima();
		redirect('materiales','refresh');
	}
	
	public function produccion()
	{
		$prima=$this->materiales->produccion();
		redirect('materiales','refresh');
	}
}
?>
