<?php
class Ordenes extends CI_Controller
{
    private 	$_template;
    protected 	$_fechaActual;
    protected 	$_iduser;
    protected 	$_csstyle;
    protected 	$_Variables;

	function __construct()
	{
		parent::__construct();
		//verificar si el el usuario ha iniciado sesion
		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","usuarios");
		$this->load->model("modeloclientes","clientes");
		$this->load->model("produccion_modelo","produccion");
		$this->load->model("ordenes_modelo","ordenes");
		$this->load->model("materiales_modelo","materiales");
		$this->load->model("proveedores_model","proveedores");
		$this->load->model("inventario_model","inventario");
		
		$this->load->model("modelo_configuracion","configuracion");
		$this->_Variables=$this->configuracion->getAllVariables();
	}
	
	public function obtenerProductosOrden($Limite=0)
	{
		$Pag["base_url"]= base_url()."ordenes/obtenerProductosOrden/";
		$Pag["total_rows"]=$this->ordenes->numeroRemisionesProduccion();//Total de Registros
		$Pag["per_page"]=18;
		$Pag["num_links"]=5;
		
		$this->pagination->initialize($Pag);
		
		$remisiones	= $this->ordenes->obtenerRemisionesProduccion($Pag["per_page"],$Limite);
		
		echo '
		<div style="width:90%; margin-bottom:1%;">
		 <ul id="pagination-digg" class="ajax-pags">
		 '.$this->pagination->create_links().'
		 </ul>
		</div>';
		
		echo
		'<table class="admintable" width="99%;">
			<tr>
				<th colspan="7">Generar ordenes de producción</th>
			</tr>
			<tr>
				<th>#</th>
				<th>Producto</th>
				<th>Cliente</th>
				<th>Cotización</th>
				<th>Cantidad</th>
				<th>Producido</th>
			</tr>';
			
			$i=1;
			
			foreach($remisiones as $row)
			{
				$estilo=$i%2>0?"class='sinSombra'":'class="sombreado"';
	
				echo'
				<tr '.$estilo.'>
					<td>'.$i.'</td>
					<td>'.$row->descripcion.'</td>
					<td>'.$row->empresa.'</td>
					<td align="center">'.$row->serie.'</td>
					<td align="center">'.$row->cantidad.'</td>
					<td align="center" id="filaOrden'.$i.'">
					<input type="hidden" id="idProducto'.$i.'" value="'.$row->idProducto.'"/>
					<input type="hidden" id="cantidad'.$i.'" value="'.$row->cantidad.'"/>
					<input type="hidden" id="idProductoCotizado'.$i.'" value="'.$row->id.'"/>';
					
					if($row->produccion=='0')
					{
						echo'<input type="checkbox" value="" id="chkProduccion'.$i.'" onchange="agregarOrdenProduccion('.$i.')" />';
					}
					else
					{
						echo'<img src="'.base_url().'img/success.png" width="16" />';
					}
					
			   echo'</td>
				</tr>
				';
				
				$i++;
			}
			
		echo'</table>';
	}
	
	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->usuarios->getUsuarios($this->_iduser);
		$Data['Fecha_actual']		=$this->_fechaActual;
		$Data['Jquical']			=$this->_jss['jquerycal'];
		$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']			='ordenesProduccion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		$Pag["base_url"]	= base_url()."ordenes/index/";
		$Pag["total_rows"]	=$this->ordenes->numeroProduccion();//Total de Registros
		$Pag["per_page"]	=15;
		$Pag["num_links"]	=5;
		
		$this->pagination->initialize($Pag);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('10',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['ordenes'] 		= $this->ordenes->obtenerProduccion($Pag["per_page"],$Limite);
		$data['material'] 		= $this->materiales->materiales();
		$data['zonas']			= $this->configuracion->obtenerZonas();
		$data['clientes'] 		= $this->clientes->obtenerClientes();
		
		$data['inicio']  		= $Limite;
		$num_r 					= count($data['ordenes']);
		$data['per_page']		= $num_r;
	
		$this->load->view("ordenes/index",$data);
		$this->load->view("pie",$Data);
	}//index
 
	 function prebusqueda($fecha)
	 {
		if($fecha=='nada')
		{
			$fecha="";
		}
		 
		$this->session->set_userdata('fechaOrden',$fecha);
		 
		 redirect('ordenes/index','refresh');
	 }
 
	public function borrarMaterial($idMaterial, $idProducto)
	{
		if($this->produccion->borrarProductoMaterial($idMaterial,$idProducto)!=NULL)
		{
			redirect("/produccion/","refresh");
		}
	}
	
    public function borrarOrden($idOrden)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('10',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$this->ordenes->borrarOrdenDetalle($idOrden);//!=NULL)
	//{
		$this->ordenes->borrarOrdenes($idOrden);
		#{
		#redirect("/ordenes/","refresh");
		#}
		redirect("/ordenes/","refresh");
	//	}
	}

	public function saveNewProducto()
	{
		if(!empty ($_POST))
		{
			if($this->produccion->addProducto() != NULL)
			{
				print("1");            
			}
			else 
			{
				print("1");
			}
		}
	}
	
	public function agregarOrden()
	{
		if(!empty ($_POST))
		{
			$orden=$this->ordenes->RegistrarProduccion();
			print($orden);
		}
	}

	public function ordenProducido()
	{
		if(!empty ($_POST))
		{
			 $orden=$this->ordenes->producidoOrden();
			 print($orden); 
		}
	}
	
	public function produccionProductos()
	{
		if(!empty ($_POST))
		{
			$orden=$this->produccion->ObtenerProductos();
			
			if ($orden!=NULL)
			{
				foreach ($orden as $row)
				{
					echo '<li onClick="fill(\''.$row['idProducto'].' '.$row['nombre'].' '.$row['color']. '\');">'.$row['idProducto'].' '.$row['nombre'].' '. $row['color'].'</li>';
				}
			}
		}
	}
   
	public function autoCompletadoProductosProduccion()
	{
		if(!empty ($_POST))
		{
			$orden=$this->produccion->productosObtener();
			
			if ($orden!=NULL)
			{
				foreach ($orden as $row)
				{
					echo '<li onClick="datoEncontrado(\''.$row->idProducto.'\',\''.str_replace('"',"",$row->nombre).'\');">'.$row->nombre.'</li>';
				}
			}
		}
	}

	public function buscarDetalles()
	{
		$idOrden		=$this->input->post('idOrden');
		$idRelacion		=$this->input->post('idRelacion');
		
		$detalles		=$this->ordenes->obtenerDetallesProducido($idOrden);
		$orden			=$this->ordenes->obtenerOrden($idOrden);
		$totalProducido	=$this->ordenes->obtenerTotalProducido($idOrden);
		
		$producto=$this->ordenes->obtenerProducto($orden->idProducto);
		
		if($totalProducido==null)
		{
			$totalProducido=0;
		}
				
		
		if ($totalProducido=='0' or $totalProducido==null or $totalProducido<$orden->cantidad )
		{
			echo'
			<table class="admintable" width="100%">
				<tr>
				<td class="key">Superviso:</td>
				<td><input type="text" name="txtSuperviso" id="txtSuperviso" class="cajas" style="width:160px;" value="'.$this->session->userdata('nombreUsuarioSesion').'"  /> </td>
				</tr>
				<tr>
				  <td class="key">Fecha:</td>
				  <td>
					<input readonly="readonly" name="txtFechaProducido" id="txtFechaProducido" type="text" class="cajasSelect" value="'.date("Y/m/d").'" />
					<input type="hidden" id="txtIdOrden" value="'.$idOrden.'" />
					<input type="hidden" id="txtIdProducto" value="'.$orden->idProducto.'" />
					<input type="hidden" id="txtTotalOrden" value="'.$orden->cantidad.'" />
					<input type="hidden" id="txtTotalProducido" value="'.$totalProducido.'" />
					<input type="hidden" id="txtIdRelacion" value="'.$idRelacion.'" />
					<input type="hidden" id="txtMateriaPrima" value="'.$producto->materiaPrima.'" />
				  </td>
				</tr>	
				<tr>
				  <td class="key">Cantidad:</td>
				  <td>
					  <input type="text" class="cajasSelect" name="txtCantidadProducido" id="txtCantidadProducido" />
				  </td>
				</tr>	
			</table>
			<script>
				$("#txtFechaProducido").datepicker({ changeMonth: true });
			</script>';
		}
		
		echo'
		<table class="admintable" width="100%" style="margin-top:3px">
			<tr>
			<th>Fecha</th>
			<th>Cantidad</th>
			<th>Superviso</th>
			</tr>';
		
		$i=1;
		
		if($detalles!=NULL)
		{
			foreach ($detalles as $row)
			{
				$estilo=$i%2>0?"class='sinSombra'":'class="sombreado"';
				
				echo'
				<tr '.$estilo.'>
					<td align="center"> '.$row->fechaProduccion.' </td>
					<td align="center"> '.$row->cantidad.' </td>
					<td align="center"> '.$row->superviso.' </td>
				</tr>';
				
				$i++;
			}
			
			echo '</table>';
		}
	}
	
	public function procesosProducido()
	{
		if(!empty ($_POST))
		{
			 $orden=$this->ordenes->procesosProducido();
			 print($orden); 
		}
	}
	
	public function obtenerDetallesProceso()
	{
		$idOrden			=$this->input->post('idOrden');
		$idRelacion			=$this->input->post('idRelacion');
		$prioridad			=$this->input->post('prioridad');
		$procesoAnterior	=$this->input->post('procesoAnterior');
		$detalles			=$this->ordenes->obtenerDetallesProceso($idRelacion);
		$orden				=$this->ordenes->obtenerOrden($idOrden);
		$totalProceso		=$this->ordenes->obtenerTotalProceso($idRelacion);
		
		if($totalProceso==null)
		{
			$totalProceso=0;
		}
		else
		{
			
		}
		
		if($prioridad==1) // La prioridad es uno, se toma como base la cantidad total a producir
		{
			$cantidadTotal=$orden->cantidad;
		}
		else // La prioridad es mayor uno, se toma como base la cantidad total del proceso pasado
		{
			$totalProcesoPasado		=$this->ordenes->obtenerTotalProceso($procesoAnterior);
			
			if($totalProcesoPasado==null)
			{
				$cantidadTotal=0;
			}
		}
		
		
		echo'
		<table class="admintable" width="100%">
			<tr>
			<td class="key">Superviso:</td>
			<td>
				<input type="text" name="txtSuperviso" id="txtSuperviso" class="cajas" style="width:160px;" value="'.$this->session->userdata('nombreUsuarioSesion').'"  /> 
			</td>
			</tr>
			<tr>
			  <td class="key">Fecha:</td>
			  <td>
				<input readonly="readonly" name="txtFechaProducido" id="txtFechaProducido" type="text" class="cajasSelect" value="'.date("Y/m/d").'" />
				<input type="hidden" id="txtIdOrden" value="'.$idOrden.'" />
				<input type="hidden" id="txtIdProducto" value="'.$orden->idProducto.'" />
				<input type="hidden" id="txtIdRelacion" value="'.$idRelacion.'" />
				<input type="hidden" id="txtIdRelacionPasada" value="'.$procesoAnterior.'" />
				<input type="hidden" id="txtPrioridad" value="'.$prioridad.'" />
				<input type="hidden" id="txtTotalOrden" value="" />
				<input type="hidden" id="txtTotalProducido" value="" />
			  </td>
			</tr>	
			<tr>
			  <td class="key">Cantidad:</td>
			  <td>
				  <input type="text" class="cajasSelect" name="txtCantidadProducido" id="txtCantidadProducido" />
			  </td>
			</tr>	
		</table>
		<script>
			$("#txtFechaProducido").datepicker({ changeMonth: true });
			$("#ventanaProcesosProduccion").atrr(title,\''.$orden->cantidad.'\');
		</script>';
		
		echo'
		<table class="admintable" width="100%" style="margin-top:3px">
			<tr>
			<th>Fecha</th>
			<th>Cantidad</th>
			<th>Superviso</th>
			</tr>';
		
		if($detalles!=NULL)
		{
			$i=1;
			
			foreach ($detalles as $row)
			{
				$estilo=$i%2>0?"class='sinSombra'":'class="sombreado"';
				
				echo'
				<tr '.$estilo.'>
					<td align="center"> '.$row->fechaProduccion.' </td>
					<td align="center"> '.$row->cantidad.' </td>
					<td align="center"> '.$row->superviso.' </td>
				</tr>';
				
				$i++;
			}
			
			echo '</table>';
		}
	}
	
	public function formularioProduccion() //Es el formulario para ordenes de producción independientes de las cotizaciones
	{
		$procesos=$this->configuracion->obtenerProcesos();
		
		$i=1;
		
		if($procesos!=null)
		{
			echo'
			<table class="admintable" width="100%" style="margin-top:3px">
				<tr>
					<th colspan="3">Procesos de producción</th>
				</tr>
				<tr>
					<th>#</th>
					<th width="70%">Proceso</th>
					<th>Seleccionar</th>
				</tr>';
			
			
			
			foreach($procesos as $row)
			{
				$estilo		=$i%2>0?'class="sinSombra"':'class="sombreado"';
		
				echo'
				<tr '.$estilo.'>
					<td>'.$i.'</td>
					<td>'.$row->nombre.'</td>
					<td align="center">
						<input type="checkbox" id="chkProceso'.$i.'" value="'.$row->idProceso.'" />
					</td>
				</tr>';
				$i++;
			}
			
			echo'</table>';
		}
		else
		{
			echo '<div class="Error_validar" style=" width:97%; margin-top:10px; margin-bottom: 5px;">
			Puede registrar mas procesos de producción en la configuración</div><br />';
		}
		
		echo'<input type="hidden" id="txtIndiceProcesos" value="'.$i.'" />';
		
		echo'
		<table class="admintable" width="100%" style="margin-top:3px">
			<tr>
				<th colspan="2">Seleccionar producto</th>
			</tr>
			<tr>
			  <td class="key">
			  Producto
			  </td>
				<td>
					<textarea style="width:200px" id="txtBusquedaNombre" class="TextArea" onkeyup="buscarDato(this.value,\'ordenProduccion\');" 
					  onblur="datoEncontrado();"></textarea>
					<div align="left" class="suggestionsBox" id="listaInformacion" style="display: none; position:absolute; margin-left:30%">
						<img src="'.base_url().'img/upArrow.png" style="position: relative; top: -12px; left: 30px;" />
					<div class="suggestionList" id="autoListaInformacion">
					 &nbsp;
					</div>
				</div>
					<input type="hidden" id="txtIdProducto" value="0" />
				</td>
			</tr>
			<tr>
				<td class="key">Cantidad</td>
				<td>
					<input type="text" style="width:200px" class="cajas" id="txtCantidadProduccion" />
				</td>
			</tr>
		</table>';
	}
}