<?php
header("Content-Type: text/html;charset=utf-8");

class cls_Movimiento {

	private $db_mensaje = "";
	private $db_nombretabla = "movimiento";
	private $db_nombrevista = "vista_movimiento";
	private $db_filas = "*";
	private $movimiento_id = 0;
	private $origen_id = "";
	private $origen_nombre = "";
	private $origen_imagen = "";
	private $origen_ubicacion = "";
	private $origen_telefono = "";
	private $fecha = "";
	private $hora = "";
	private $tipo_movimiento = "";
	private $destino_id = 0;
	private $destino_nombre = "";
	private $destino_imagen = "";
	private $destino_ubicacion = "";
	private $destino_telefono = "";
	private $estado_proceso = "";
	private $estado_registro = "";
	private $estado = "";
	private $usuario_modificacion = 0;
	private $fecha_creacion = "";
	private $fecha_modificacion = "";
	private $activo = true;
	
	public function __construct(){
		$this->db_filas = "movimiento_id, origen_id, origen_nombre, origen_imagen, origen_ubicacion, origen_telefono, fecha, hora, tipo_movimiento, destino_id, destino_nombre, destino_imagen, destino_ubicacion, destino_telefono, estado_proceso, estado_registro, usuario_modificacion, fecha_creacion, fecha_modificacion, activo";
	}

	static public function Indice($codigo){
		$current = new cls_Movimiento();
		$conn = new cls_Conexion();
		$filtro = "movimiento_id = ?";
		$values = array();
		array_push($values, $codigo );
		$lista = $conn->buscar_datos($current->db_nombrevista, $current->db_filas, $filtro, $values, "");
		$current->db_mensaje = $conn->getMensaje();
		for ($indice=0; $indice<count($lista); $indice++){
			$current->movimiento_id = $lista[$indice]["movimiento_id"];
			$current->origen_id = $lista[$indice]["origen_id"];
			$current->origen_nombre = $lista[$indice]["origen_nombre"];
			$current->origen_imagen = $lista[$indice]["origen_imagen"];
			$current->origen_ubicacion = $lista[$indice]["origen_ubicacion"];
			$current->origen_telefono = $lista[$indice]["origen_telefono"];
			$current->fecha = $lista[$indice]["fecha"];
			$current->hora = $lista[$indice]["hora"];
			$current->tipo_movimiento = $lista[$indice]["tipo_movimiento"];
			$current->destino_id = $lista[$indice]["destino_id"];
			$current->destino_nombre = $lista[$indice]["destino_nombre"];
			$current->destino_imagen = $lista[$indice]["destino_imagen"];
			$current->destino_ubicacion = $lista[$indice]["destino_ubicacion"];
			$current->destino_telefono = $lista[$indice]["destino_telefono"];
			$current->estado_proceso = $lista[$indice]["estado_proceso"];
			$current->estado_registro = $lista[$indice]["estado_registro"];
			$current->usuario_modificacion = $lista[$indice]["usuario_modificacion"];
			$current->fecha_creacion = $lista[$indice]["fecha_creacion"];
			$current->fecha_modificacion = $lista[$indice]["fecha_modificacion"];
			$current->activo = $lista[$indice]["activo"];
		}
		return $current;
	}

	public function get_movimiento_id() { return $this->movimiento_id; }
	public function get_origen_id() { return $this->origen_id; }
	public function get_origen_nombre() { return $this->origen_nombre; }
	public function get_origen_imagen() { return $this->origen_imagen; }
	public function get_origen_ubicacion() { return $this->origen_ubicacion; }
	public function get_origen_telefono() { return $this->origen_telefono; }
	public function get_fecha() { return $this->fecha; }
	public function get_hora() { return $this->hora; }
	public function get_tipo_movimiento() { return $this->tipo_movimiento; }
	public function get_destino_id() { return $this->destino_id; }
	public function get_destino_nombre() { return $this->destino_nombre; }
	public function get_destino_imagen() { return $this->destino_imagen; }
	public function get_destino_ubicacion() { return $this->destino_ubicacion; }
	public function get_destino_telefono() { return $this->destino_telefono; }
	public function get_estado_registro() { return $this->estado_registro; }
	public function get_estado_proceso() { return $this->estado_proceso; }
	public function get_usuario_modificacion(){  return $this->usuario_modificacion; }
	public function get_fecha_creacion(){  return $this->fecha_creacion; }
	public function get_fecha_modificacion(){  return $this->fecha_modificacion; }
	public function get_activo() { return $this->activo; }
	
	public function set_movimiento_id($movimiento_id){ $this->movimiento_id = $movimiento_id; }
	public function set_origen_id($origen_id){ $this->origen_id = $origen_id; }
	public function set_fecha($fecha){ $this->fecha = $fecha; }
	public function set_hora($hora){ $this->hora = $hora; }
	public function set_tipo_movimiento($tipo_movimiento){ $this->tipo_movimiento = $tipo_movimiento; }
	public function set_destino_id($destino_id){ $this->destino_id = $destino_id; }
	public function set_estado_registro($estado_registro){ $this->estado_registro = $estado_registro; }
	public function set_estado_proceso($estado_proceso){ $this->estado_proceso = $estado_proceso; }
	public function set_usuario_modificacion($usuario_modificacion){ $this->usuario_modificacion = $usuario_modificacion; }
	public function set_fecha_creacion($fecha_creacion){ $this->fecha_creacion = $fecha_creacion; }
	public function set_fecha_modificacion($fecha_modificacion){ $this->fecha_modificacion = $fecha_modificacion; }
	public function set_activo($activo){ $this->activo = $activo; }
	
	public function registrar( $usuario_editor ){
		$conn = new cls_Conexion();
		$respuesta = false;
		$values = array();
		if ( $this->movimiento_id == 0 ){ // REGISTER
			array_push($values, $this->origen_id);
			array_push($values, $this->fecha);
			array_push($values, $this->hora);
			array_push($values, $this->tipo_movimiento);
			array_push($values, $this->destino_id);
			array_push($values, $this->estado_proceso);
			array_push($values, $this->estado_registro);
			array_push($values, $usuario_editor);
			$respuesta = $conn->nuevo_registro($this->db_nombretabla, $values);
			$this->db_mensaje = $conn->GetMensaje();
			if ( $respuesta ){
				$this->movimiento_id = $conn->getlastId();
			}
		} else { // UPDATE
			array_push($values, $this->origen_id);
			array_push($values, $this->fecha);
			array_push($values, $this->hora);
			array_push($values, $this->tipo_movimiento);
			array_push($values, $this->destino_id);
			array_push($values, $this->estado_proceso);
			array_push($values, $this->estado_registro);
			array_push($values, $usuario_editor);
			array_push($values, $this->movimiento_id);
			$respuesta = $conn->editar_registro($this->db_nombretabla, $values);
			$this->db_mensaje = $conn->GetMensaje();
		}
		return $respuesta;
	}
	
	public function importar( $usuario_editor ){
		$conn = new cls_Conexion();
		$respuesta = false;
		$values = array();
			array_push($values, $this->movimiento_id);
			array_push($values, $this->origen_id);
			array_push($values, $this->fecha);
			array_push($values, $this->hora);
			array_push($values, $this->tipo_movimiento);
			array_push($values, $this->destino_id);
			array_push($values, $this->estado_proceso);
			array_push($values, $this->estado_registro);
			array_push($values, $this->usuario_modificacion);
			array_push($values, $this->fecha_creacion);
			array_push($values, $this->fecha_modificacion);
			array_push($values, $this->activo);
			
			array_push($values, $this->origen_id);
			array_push($values, $this->fecha);
			array_push($values, $this->hora);
			array_push($values, $this->tipo_movimiento);
			array_push($values, $this->destino_id);
			array_push($values, $this->estado_proceso);
			array_push($values, $this->estado_registro);
			array_push($values, $this->usuario_modificacion);
			array_push($values, $this->fecha_creacion);
			array_push($values, $this->fecha_modificacion);
			array_push($values, $this->activo);
		$respuesta = $conn->importar_registro($this->db_nombretabla, $values);
		$this->db_mensaje = $conn->GetMensaje();
		if ( $respuesta ){
			$this->movimiento_id = $conn->getlastId();
		};
		return $respuesta;
	}

	public function eliminar( $usuario_editor ){
		$conn = new cls_Conexion();
		$respuesta = false;
		$values = array();
		if ($this->movimiento_id > 0){ // DELETE
			array_push($values, $usuario_editor);
			array_push($values, $this->movimiento_id );
			$respuesta = $conn->eliminar_registro($this->db_nombretabla, $values);
			$this->db_mensaje = $conn->GetMensaje();
		} else {
			$this->db_mensaje = "No se puede realizar este proceso";
		}
		return $respuesta;
	}
}

class cls_Group_Movimiento {

	protected $db_mensaje = "";
	protected $db_nombre_tabla = "vista_movimiento";
	protected $db_nombres_columnas = "*";
	protected $db_filtro = "1";
	protected $db_agrupar = "";
	protected $db_orden_columna = "fecha";
	protected $db_orden_direccion = "ASC";
	protected $db_cantidad = 0;
	protected $db_filtro_datos = array();
	protected $db_filas = array();
	
	public function __construct(){
		$this->db_nombres_columnas = "movimiento_id, origen_id, origen_nombre, origen_imagen, origen_ubicacion, origen_telefono, fecha, hora, tipo_movimiento, destino_id, destino_nombre, destino_imagen, destino_ubicacion, destino_telefono, estado_proceso, estado_registro, usuario_modificacion, fecha_creacion, fecha_modificacion, activo";
		$this->db_orden_columna = "fecha";
	}

	static public function Export($fecha_min, $fecha_max, $ordendireccion="ASC", $ordencolumna="movimiento_id", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Movimiento();
		$current->db_filtro = "DATE(fecha_creacion) > DATE(?) AND DATE(fecha_creacion) <= DATE(?)";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $fecha_min);
		array_push($current->db_filtro_datos, $fecha_max);
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	static public function Buscar($buscar="", $ordendireccion="ASC", $ordencolumna="fecha", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Movimiento();
		$current->db_filtro = "origen_id = ? AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $buscar );
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	static public function RangoFechaEstadoRegistro($origen, $fecha_min, $fecha_max, $filtro_estado="Todos", $ordendireccion="ASC", $ordencolumna="fecha", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Movimiento();
		$current->db_filtro = "(origen_id = ? OR ? = -1) AND DATE(fecha) >= DATE(?) AND DATE(fecha) <= DATE(?) AND (estado_registro LIKE ? OR ? LIKE 'Todos') AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $origen );
		array_push($current->db_filtro_datos, $origen );
		array_push($current->db_filtro_datos, $fecha_min );
		array_push($current->db_filtro_datos, $fecha_max );
		array_push($current->db_filtro_datos, $filtro_estado );
		array_push($current->db_filtro_datos, $filtro_estado );
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	static public function EnviadosEstadoRegistro($origen, $filtro_estado="Todos", $ordendireccion="ASC", $ordencolumna="fecha"){
		$conn = new cls_Conexion();
		$current = new cls_Group_Movimiento();
		$current->db_filtro = "(origen_id = ? OR ? = -1) AND (estado_registro LIKE ? OR ? LIKE 'Todos') AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		array_push($current->db_filtro_datos, $origen );
		array_push($current->db_filtro_datos, $origen );
		array_push($current->db_filtro_datos, $filtro_estado );
		array_push($current->db_filtro_datos, $filtro_estado );
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	static public function RecibidosEstadoRegistro($destino, $filtro_estado="Todos", $ordendireccion="ASC", $ordencolumna="fecha"){
		$conn = new cls_Conexion();
		$current = new cls_Group_Movimiento();
		$current->db_filtro = "(destino_id = ? OR ? = -1) AND (estado_registro LIKE ? OR ? LIKE 'Todos') AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		array_push($current->db_filtro_datos, $destino );
		array_push($current->db_filtro_datos, $destino );
		array_push($current->db_filtro_datos, $filtro_estado );
		array_push($current->db_filtro_datos, $filtro_estado );
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	static public function EnviadosFechaEstadoRegistro($origen, $destino, $fecha_min, $fecha_max, $filtro_estado="Todos", $ordendireccion="ASC", $ordencolumna="fecha", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Movimiento();
		$current->db_filtro = "(origen_id = ? OR ? = -1) AND origen_id > 0 AND (destino_id = ? OR ? = -1) AND destino_id > 0 AND DATE(fecha) >= DATE(?) AND DATE(fecha) <= DATE(?) AND (estado_registro LIKE ? OR ? LIKE 'Todos') AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $origen );
		array_push($current->db_filtro_datos, $origen );
		array_push($current->db_filtro_datos, $destino );
		array_push($current->db_filtro_datos, $destino );
		array_push($current->db_filtro_datos, $fecha_min );
		array_push($current->db_filtro_datos, $fecha_max );
		array_push($current->db_filtro_datos, $filtro_estado );
		array_push($current->db_filtro_datos, $filtro_estado );
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	static public function RecibidosFechaEstadoRegistro($destino, $fecha_min, $fecha_max, $filtro_estado="Todos", $ordendireccion="ASC", $ordencolumna="fecha", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Movimiento();
		$current->db_filtro = "(destino_id = ? OR ? = -1) AND DATE(fecha) >= DATE(?) AND DATE(fecha) <= DATE(?) AND (estado_registro LIKE ? OR ? LIKE 'Todos') AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $destino );
		array_push($current->db_filtro_datos, $destino );
		array_push($current->db_filtro_datos, $fecha_min );
		array_push($current->db_filtro_datos, $fecha_max );
		array_push($current->db_filtro_datos, $filtro_estado );
		array_push($current->db_filtro_datos, $filtro_estado );
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	static public function TransferenciasFechaEstadoRegistro($origen, $destino, $fecha_min, $fecha_max, $filtro_estado="Todos", $ordendireccion="ASC", $ordencolumna="fecha", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Movimiento();
		$current->db_filtro = "(origen_id = ? OR ? = -1) AND (destino_id = ? OR ? = -1) AND DATE(fecha) >= DATE(?) AND DATE(fecha) <= DATE(?) AND (estado_registro LIKE ? OR ? LIKE 'Todos') AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $origen );
		array_push($current->db_filtro_datos, $origen );
		array_push($current->db_filtro_datos, $destino );
		array_push($current->db_filtro_datos, $destino );
		array_push($current->db_filtro_datos, $fecha_min );
		array_push($current->db_filtro_datos, $fecha_max );
		array_push($current->db_filtro_datos, $filtro_estado );
		array_push($current->db_filtro_datos, $filtro_estado );
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	public function cargar_datos( $offset, $cantidad ){
		$conn = new cls_Conexion();
		$this->db_filas = $conn->listar_filas( $this->db_nombre_tabla, $this->db_nombres_columnas, $this->db_orden_columna, $this->db_orden_direccion, $this->db_filtro, $this->db_filtro_datos, $offset, $cantidad, $this->db_agrupar );
		$this->db_mensaje = $conn->GetMensaje();
	}
	public function get_cantidad_cargados(){
		return count($this->db_filas);
	}
	public function get_cantidad(){
		return $this->db_cantidad;
	}
	
	public function get_movimiento_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["movimiento_id"];
			return $val;
		}
		return 0;
	}
	public function get_fecha($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["fecha"];
			return $val;
		}
		return "";
	}
	public function get_origen_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["origen_id"];
			return $val;
		}
		return "";
	}
	public function get_origen_nombre($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["origen_nombre"];
			return $val;
		}
		return "";
	}
	public function get_origen_imagen($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["origen_imagen"];
			return $val;
		}
		return "";
	}
	public function get_origen_ubicacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["origen_ubicacion"];
			return $val;
		}
		return "";
	}
	public function get_origen_telefono($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["origen_telefono"];
			return $val;
		}
		return "";
	}
	public function get_hora($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["hora"];
			return $val;
		}
		return "";
	}
	public function get_tipo_movimiento($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tipo_movimiento"];
			return $val;
		}
		return "";
	}
	public function get_proveedor_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["proveedor_id"];
			return $val;
		}
		return "";
	}
	public function get_destino_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["destino_id"];
			return $val;
		}
		return "";
	}
	public function get_destino_nombre($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["destino_nombre"];
			return $val;
		}
		return "";
	}
	public function get_destino_imagen($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["destino_imagen"];
			return $val;
		}
		return "";
	}
	public function get_destino_ubicacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["destino_ubicacion"];
			return $val;
		}
		return "";
	}
	public function get_destino_telefono($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["destino_telefono"];
			return $val;
		}
		return "";
	}
	public function get_estado_proceso($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["estado_proceso"];
			return $val;
		}
		return "";
	}
	public function get_estado_registro($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["estado_registro"];
			return $val;
		}
		return "";
	}
	public function get_usuario_modificacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["usuario_modificacion"];
			return $val;
		}
		return 0;
	}
	public function get_fecha_creacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["fecha_creacion"];
			return $val;
		}
		return "";
	}
	public function get_fecha_modificacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["fecha_modificacion"];
			return $val;
		}
		return "";
	}
	public function get_activo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["activo"];
			return $val;
		}
		return "";
	}
};
?>		
