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

    private $mensaje = "";
    private $retorno = false;
    private $tablas = array(
		"tienda"=>array("tienda_id", "nombre", "imagen", "ubicacion", "telefono", "observaciones"),
		"usuario"=>array("usuario_id","tipo", "usuario", "password", "foto", "nombres", "documento_tipo", "documento_numero", "telefono", "correo", "direccion", "tienda_id", "estado_actividad", "permisos"),
		"cliente"=>array("cliente_id","nombre","documento_tipo","documento_numero","direccion"),
		"proveedor"=>array("proveedor_id","nombre","documento_tipo","documento_numero","direccion"),
		"responsable"=>array("responsable_id","nombre","documento_tipo","documento_numero","direccion"),
		"compra"=>array("compra_id","fecha","operacion","comprobante","numero","proveedor_id","responsable_id","moneda_codigo","igv_porcentaje","estado_registro","observaciones", "costo_total"),
		"compra_producto"=>array("compra_producto_id", "compra_id", "producto_id", "moneda_codigo", "igv_porcentaje", "valor_ganancia", "precio_compra", "precio_venta", "precio_minimo", "unidades", "ubicacion", "fecha_vencimiento"),
		"movimiento"=>array("movimiento_id", "origen_id", "fecha", "hora", "tipo_movimiento", "destino_id", "estado_proceso","estado_registro"),
		"movimiento_producto"=>array("movimiento_producto_id", "movimiento_id", "almacen_id", "producto_id", "moneda_codigo", "igv_porcentaje", "precio_compra", "precio_venta", "precio_minimo", "unidades", "fecha_vencimiento"),
		"moneda"=>array("moneda_id", "nombre", "codigo", "simbolo", "cambio"),
		"igv"=>array("igv_id","nombre","porcentaje","estado"),
		"unidad_medida"=>array("unidad_medida_id","nombre","simbolo"),
		"producto"=>array("producto_id","nombre","nombre_alternativo","imagen","codigo","codigo_barras","codigo_almacen","categoria_id","unidad_medida_id","fabricante","modelo","serie","peso","stock_minimo","producto_unitario_id","producto_fracciones", "estado"),
		"categoria"=>array("categoria_id","codigo","nombre"),
		"prestamo"=>array("prestamo_id","almacen_tienda_id","producto_id","tienda_origen_id","tienda_destino_id","unidades","fecha_prestamo","fecha_devolucion"),
		"almacen_general"=>array("almacen_general_id","compra_id","compra_producto_id","producto_id","moneda_codigo","igv_porcentaje","valor_ganancia", "precio_compra", "precio_venta","precio_minimo","unidades","ubicacion","fecha_vencimiento","tipo_movimiento"),
		"almacen_tienda"=>array("almacen_tienda_id", "almacen_general_id", "movimiento_producto_id", "tienda_id", "producto_id", "moneda_codigo", "igv_porcentaje", "precio_compra", "precio_venta", "precio_minimo", "unidades", "fecha_vencimiento", "ubicacion", "tipo_movimiento"),
		"multiprecio"=>array("multiprecio_id","producto_id","nombre","precio"),
		"venta"=>array("venta_id","tienda_id","vendedor_id", "venta_base_id", "venta_derivado_id","fecha","hora","cliente_nombre","cliente_documento_tipo","cliente_documento_numero","comprobante","serie","tipo_pago","moneda_codigo", "igv_porcentaje", "observaciones","subtotal","igv","total","estado_registro"),
		"venta_producto"=>array("venta_producto_id","venta_id","tienda_id","moneda_codigo","igv_porcentaje","almacen_id","almacen_tienda_id","producto_id","unidades","precio_almacen","precio_venta","precio_subtotal"),
		"almacen_movimiento"=>array("almacen_movimiento_id","almacen_general_id","compra_id","compra_producto_id","producto_id","precio_compra", "precio_venta","precio_minimo","unidades","ubicacion","tipo_movimiento"),
		"control_movimiento"=>array("control_movimiento_id", "tienda_id", "origen_id", "destino_id", "almacen_general_id", "almacen_tienda_id", "movimiento_id", "movimiento_producto_id", "producto_id", "unidades", "tipo_movimiento", "estado", "movimiento_fecha"),
		"proforma"=>array("proforma_id","tienda_id","vendedor_id", "fecha","hora","cliente_nombre","cliente_documento_tipo","cliente_documento_numero","comprobante","serie","moneda_codigo", "igv_porcentaje", "observaciones","subtotal","igv","total","estado_registro"),
		"proforma_producto"=>array("proforma_producto_id","proforma_id","moneda_codigo","igv_porcentaje","almacen_id","almacen_tienda_id","producto_id","unidades","precio_almacen","precio_venta","precio_subtotal"),
	);
    function get_sql($nom_tabla, $accion) {
		$consulta = "";
		$columnas = array();
		$filtros = array();
		if (isset($this->tablas[$nom_tabla])){
			if ($accion == "N") {
				$columnas = array_slice($this->tablas[$nom_tabla], 1);
				array_push($columnas, "usuario_modificacion");
				array_push($columnas, "fecha_creacion");
				array_push($columnas, "fecha_modificacion");
				array_push($columnas, "activo");
			} else if ($accion == "I") {
				$columnas = array_slice($this->tablas[$nom_tabla], 0);
				array_push($columnas, "usuario_modificacion");
				array_push($columnas, "fecha_creacion");
				array_push($columnas, "fecha_modificacion");
				array_push($columnas, "activo");
			} else if ($accion == "E") {
				$columnas = array_slice($this->tablas[$nom_tabla], 1);
				array_push($columnas, "usuario_modificacion");
				array_push($columnas, "fecha_modificacion");
				$filtros = array($this->tablas[$nom_tabla][0]);
			} else if ($accion == "L") {
				$columnas = array("usuario_modificacion", "fecha_modificacion","activo");
				$filtros = array($this->tablas[$nom_tabla][0]);
			}
		}
		
		if ($accion == "N"){
			$values = array();
			for ($i=0; $i<count($columnas); $i++){
			    if ($columnas[$i] == "fecha_creacion"){ //
					array_push($values, "NOW()");
			    } else if ($columnas[$i] == "fecha_modificacion"){ //
					array_push($values, "NOW()");
			    } else if ($columnas[$i] == "activo"){ //
					array_push($values, "true");
				} else {
					array_push($values, "?");
				}
			}
			$consulta .= "INSERT INTO ".$nom_tabla."(".implode(", ", $columnas).") VALUES (".implode(", ", $values).");";
		} else if ($accion == "I"){
			$values_in = array();
			$values_ed = array();
			for ($i=0; $i<count($columnas); $i++){
				array_push($values_in, "?");
			}
			for ($i=1; $i<count($columnas); $i++){
				array_push($values_ed, $columnas[$i]."=?");
			}
			$consulta .= "INSERT INTO ".$nom_tabla."(".implode(", ", $columnas).") VALUES (".implode(", ", $values_in).") ";
			$consulta .= "ON DUPLICATE KEY UPDATE ".implode(", ", $values_ed);
			$consulta .= ";";
		} else if ($accion == "E"){
			$values = array();
			for ($i=0; $i<count($columnas); $i++){
				if ($columnas[$i] == "fecha_modificacion"){
					array_push($values, "fecha_modificacion=NOW()");
				} else {
					array_push($values, $columnas[$i]."=?");
				}
			}
			$consulta .= "UPDATE ".$nom_tabla." SET ".implode(", ", $values)." WHERE ";
			for ($i=0; $i<count($filtros); $i++){
				$consulta .= $filtros[$i] . "=?";
				if ($i+1 < count($filtros)){
					$consulta .= " AND ";
				}
			}
			$consulta = $consulta . ";";
		} else if ($accion == "L"){
			$values = array();
			for ($i=0; $i<count($columnas); $i++){
				if ($columnas[$i] == "fecha_modificacion"){
					array_push($values, "fecha_modificacion=NOW()");
				} else if ($columnas[$i] == "activo"){
					array_push($values, "activo=false");
				} else {
					array_push($values, $columnas[$i]."=?");
				}
			}
			$consulta .= "UPDATE ".$nom_tabla." SET ".implode(", ", $values)." WHERE ";
			for ($i=0; $i<count($filtros); $i++){
				$consulta .= $filtros[$i] . "=?";
				if ($i+1 < count($filtros)){
					$consulta .= " AND ";
				}
			}
		} else {
			$consulta .= " ";
		}
		return $consulta;
    }
}
?>
