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

class cls_Almacen_Movimiento {

	private $db_nombre = "almacen_movimiento";
	private $db_nombrevista = "almacen_movimiento";
	private $db_filas = "*";
	private $almacen_movimiento_id = 0;
	private $almacen_general_id = 0;
	private $compra_id = 0;
	private $compra_producto_id = 0;
	private $producto_id = 0;
	private $precio_venta = 0.00;
	private $precio_minimo = 0.00;
	private $cantidad = 0;
	private $ubicacion = "";
	private $tipo_movimiento = "";
  
	
	public function __construct(){
		$this->db_filas = "almacen_movimiento_id, almacen_general_id, compra_id, compra_producto_id, producto_id, precio_venta, precio_minimo, cantidad, ubicacion, tipo_movimiento, usuario_modificacion, fecha_creacion, fecha_modificacion, activo";
	}

	static public function Indice($codigo){
		$current = new cls_Almacen_Movimiento();
		$conn = new cls_Conexion();
		$filtro = "almacen_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->almacen_movimiento_id = $lista[$indice]["almacen_movimiento_id"];
			$current->almacen_general_id = $lista[$indice]["almacen_general_id"];
			$current->compra_id = $lista[$indice]["compra_id"];
			$current->compra_producto_id = $lista[$indice]["compra_producto_id"];
			$current->producto_id = $lista[$indice]["producto_id"];
			$current->precio_venta = $lista[$indice]["precio_venta"];
			$current->precio_minimo = $lista[$indice]["precio_minimo"];
			$current->cantidad = $lista[$indice]["cantidad"];
			$current->ubicacion = $lista[$indice]["ubicacion"];
			$current->tipo_movimiento = $lista[$indice]["tipo_movimiento"];
		}
		return $current;
	}

	public function get_almacen_movimiento_id() { return $this->almacen_movimiento_id; }
	public function get_almacen_general_id() { return $this->almacen_general_id; }
	public function get_compra_id() { return $this->compra_id; }
	public function get_compra_producto_id() { return $this->compra_producto_id; }
	public function get_precio_venta() { return $this->precio_venta; }
	public function get_precio_minimo() { return $this->precio_minimo; }
	public function get_cantidad() { return $this->cantidad; }
	public function get_ubicacion() { return $this->ubicacion; }
	public function get_tipo_movimiento() { return $this->tipo_movimiento; }
	
	public function set_almacen_movimiento_id($almacen_movimiento_id){ $this->almacen_movimiento_id = $almacen_movimiento_id; }
	public function set_almacen_general_id($almacen_general_id){ $this->almacen_general_id = $almacen_general_id; }
	public function set_compra_id($compra_id){ $this->compra_id = $compra_id; }
	public function set_compra_producto_id($compra_producto_id){ $this->compra_producto_id = $compra_producto_id; }
	public function set_precio_venta($precio_venta){ $this->precio_venta = $precio_venta; }
	public function set_precio_minimo($precio_minimo){ $this->precio_minimo = $precio_minimo; }
	public function set_cantidad($cantidad){ $this->cantidad = $cantidad; }
	public function set_ubicacion($ubicacion){ $this->ubicacion = $ubicacion; }
	public function set_tipo_movimiento($tipo_movimiento){ $this->tipo_movimiento = $tipo_movimiento; }
	
	public function registrar( ){
		$conn = new cls_Conexion();
		$respuesta = false;
		$values = array();
		if ( $this->almacen_movimiento_id == 0 ){ // REGISTER
			array_push($values, $this->almacen_general_id);
			array_push($values, $this->compra_id);
			array_push($values, $this->compra_producto_id);
			array_push($values, $this->precio_venta);
			array_push($values, $this->precio_minimo);
			array_push($values, $this->cantidad);
			array_push($values, $this->ubicacion);
			array_push($values, $this->tipo_movimiento);
			$respuesta = $conn->nuevo_registro($this->db_nombretabla, $values);
			$this->db_mensaje = $conn->GetMensaje();
			if ( $respuesta ){
				$this->almacen_movimiento_id = $conn->getlastId();
			}
		} else { // UPDATE
			array_push($values, $this->almacen_general_id);
			array_push($values, $this->compra_id);
			array_push($values, $this->compra_producto_id);
			array_push($values, $this->precio_venta);
			array_push($values, $this->precio_minimo);
			array_push($values, $this->cantidad);
			array_push($values, $this->ubicacion);
			array_push($values, $this->tipo_movimiento);
			array_push($values, $this->almacen_movimiento_id);
			$respuesta = $conn->editar_registro($this->db_nombretabla, $values);
			$this->db_mensaje = $conn->GetMensaje();
		}
		return $respuesta;
	}
	
	public function importar( ){
		$conn = new cls_Conexion();
		$respuesta = false;
		$values = array();
			array_push($values, $this->almacen_general_id);
			array_push($values, $this->compra_id);
			array_push($values, $this->compra_producto_id);
			array_push($values, $this->precio_venta);
			array_push($values, $this->precio_minimo);
			array_push($values, $this->cantidad);
			array_push($values, $this->ubicacion);
			array_push($values, $this->tipo_movimiento);
		if ($this->almacen_movimiento_id > 0){
			array_push($values, $this->almacen_movimiento_id );
		} else {
			array_push($values, NULL );
		}
		$respuesta = $conn->importar_registro($this->db_nombretabla, $values);
		$this->db_mensaje = $conn->GetMensaje();
		if ( $respuesta ){
			$this->almacen_movimiento_id = $conn->getlastId();
		};
		return $respuesta;
	}

	public function eliminar(){
		$conn = new cls_Conexion();
		$respuesta = false;
		$values = array();
		if ($this->almacen_movimiento_id > 0){ // DELETE
			array_push($values, $this->almacen_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_Almacen_Movimiento {

	protected $db_mensaje = "";
	protected $db_nombre_tabla = "almacen_movimiento";
	protected $db_nombres_columnas = "*";
	protected $db_filtro = "1";
	protected $db_agrupar = "";
	protected $db_orden_columna = "nombre";
	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 = "almacen_movimiento_id, almacen_general_id, compra_id, compra_producto_id, producto_id, precio_venta, precio_minimo, cantidad, ubicacion, tipo_movimiento, usuario_modificacion, fecha_creacion, fecha_modificacion, activo";
		$this->db_orden_columna = "nombre";
	}

	static public function Buscar($buscar="", $ordendireccion="ASC", $ordencolumna="nombre", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Almacen_Movimiento();
		$buscar = "%".$buscar."%";
		$current->db_filtro = "nombre LIKE ? 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;
	}
	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_almacen_movimiento_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["almacen_movimiento_id"];
			return $val;
		}
		return 0;
	}
	public function get_almacen_general_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["almacen_general_id"];
			return $val;
		}
		return "";
	}
	public function get_compra_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["compra_id"];
			return $val;
		}
		return "";
	}
	public function get_compra_producto_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["compra_producto_id"];
			return $val;
		}
		return "";
	}
	public function get_producto_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["producto_id"];
			return $val;
		}
		return "";
	}
	public function get_precio_venta($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["precio_venta"];
			return $val;
		}
		return "";
	}
	public function get_precio_minimo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["precio_minimo"];
			return $val;
		}
		return "";
	}
	public function get_cantidad($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["cantidad"];
			return $val;
		}
		return "";
	}
	public function get_ubicacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["ubicacion"];
			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 "";
	}
};
?>		
