/*
 * Created on 30/08/2004
 *
 */
package com.fenalco.entities;

import java.sql.Date;
import java.util.Hashtable;
import java.util.Vector;

import com.fenalco.utilities.database.SQLUtilities;
import com.fenalco.utilities.database.Transaction;



//import com.fenalco.utilities.database.Transaction;

/**
 * @author Andrés
 *
 * Esta clase representa un producto de la base de datos. 
 */
public class SupplierProduct
{
	/**
	 * Identificador de la tabla
	 */
	private int id;
	
	/**
	 * c{odigo de barras del producto
	 */
	private String code;//
	

	/**
	 * identificador del proveedor al que está asociado este producto
	 */
	private String supplierGLN;//
	
	/**
	 * Identificador de la categoría a la cual pertenece el producto 
	 */
	private int category;//
	
	/**
	 * Nombre de la categoría a la cual pertenece el producto
	 */
	private String categoryName;//
	
	/**
	 * Código interno que el proveedor utiliza para el producto
	 * TODO: este campo puede no ir
	 */
	private String codeSupplier;//
	/**
	 * descripción larga del producto (máximo 40 caracteres)
	 */
	private String longDescription;//
	
	/**
	 * Descripción corta del producto (máximo 18 caracteres)
	 */
	private String shortDescription;//
	
	/**
	 * Color del producto
	 */
	private String color;//
	
	/**
	 * talla del producto
	 */
	private String size;
	
	/**
	 * Marca del producto
	 */
	private String brand;//
	
	/**
	 * Número del registro sanitario del producto
	 */
	private String sanitaryRegistry;//
	
	/**
	 * forma farmacéutica del producto. Ej: Píldora, Pastilla, Jarabe, etc
	 */
	private String pharmaceuticalForm;
	
	/**
	 * Estilo
	 */
	private String style;
	
	/**
	 * Es el nombre del objeto que se esta codificando. 
	 * Ej: Jabón, Detergente, Crema Dental, Pantalón, Teléfono etc
	 */
	private String functionalName;//
	
	/**
	 * Tipo de tela del articulo, sabor o fragancia
	 */
	private String variant;
	
	/**
	 * Nombre del fabricante
	 */
	private String manufacturerName;//
	
	/**
	 * Principio activo del producto
	 */
	private String activePrinciple;//
	
	/**
	 * identifica si es unidad de consumo o no
	 */
	private boolean consumerUnit;//
	
	/**
	 * identifica si es unidad de despacho o no
	 */
	private boolean despatchUnit;//
	
	/**
	 * indica si es unidad de comercio o no
	 */
	private boolean invoiceUnit;//
	
	/**
	 * Ancho del artículo
	 */
	private float width;//
	
	/**
	 * Unidades en las que se mide el ancho del artículo
	 */
	private String widthUnit;//
	
	/**
	 * peso neto del producto
	 */
	private float netWeight;//
	
	/**
	 * Unidades en las que se mide el peso neto del producto
	 */
	private String netWeightUnit;//
	
	/**
	 * Profundidad del artículo
	 */
	private float depth;//
	
	/**
	 * Unidades en las que se mide la profundidad del artículo
	 */
	private String depthUnit;//
	
	/**
	 * Altura del artículo
	 */
	private float height;//
	
	/**
	 * Unidades en las que se mide la altura del artículo
	 */
	private String heightUnit;//
	
	/**
	 * Peso bruto del producto
	 */
	private float grossWeight;//
	
	/**
	 * Unidades en las que se mide el peso bruto del producto
	 */
	private String grossWeightUnit;//
	
	/**
	 * Temperatura mímina que soporta el artículo
	 */
	private float minimumTemperature;//
	
	/**
	 * Temperatura máxima que soporta el artículo
	 */
	private float maximumTemperature;//
	
	/**
	 * Unidad en la que se miden las temperaturas
	 */
	private String temperatureUnit;//
	
	/**
	 * Número máximo de unidades que se pueden apilar
	 */
	private int stackingWeightMaximum;
	
	/**
	 * Número de capas que tiene una unidad logística
	 */
	private int completeLayers;
	
	/**
	 * Numero de productos por capa dentro de la unidad logística
	 */
	private int itemsContainedInALayer;
	
	/**
	 * El contenido del producto dentro del envase. 
	 * Es la oferta real de producto al consumidor
	 */
	private float netContent;//
	
	/**
	 * Unidad en que se mide el contenido del producto
	 */
	private String netContentUnit;//
	
	
	/**
	 * Se refiere al numero de piezas de un producto específicamente 
	 * para el sector textil
	 */
	private int pieces;//
	
	/**
	 * Se refiere a la fecha de registro sanitario del producto
	 */
	private Date sanitaryRegistryDate;
	
	/**
	 * IVA
	 */
	private float tax;//
	
	/**
	 * Tipo de empaque del producto
	 */
	private String packagingType;//
	
	/**
	 * URL en donde se encuentra la imagen
	 */
	private String image;//
	

	/**
	 * Identificador del proveedor que publica el producto
	 */
	private int supplierId;
        
        /**
         * Nombre del proveedor
         */
        private String supplierName;
	
	/**
	 * indica si el producto se va a mostrar en el nurit
	 */
	private boolean nurit;
	
	/**
	 * indic el estado del producto, esto es si el proveedor lo esta vendiendo o no
	 */
	private boolean status;
	
	
	/**
	 * Crea un nuevo producto vacio
	 *
	 */
	public SupplierProduct()
	{
		sanitaryRegistryDate = Date.valueOf( "2004-08-01" );
	}
	
	/**
	 * Crea un nuevo producto y llama al método loadData para que lo cargue de la
	 * base de datos
	 * @param prodId identificador del producto en la base de datos
	 */
	public SupplierProduct( int prodId )
	{
		id = prodId;
		loadData( id );
	}
	
	/**
	 * Crea un nuevo producto y llama al método loadData para que lo cargue de la
	 * base de datos
	 * @param prodCode código de barras del producto
	 * @param suppCode identificador del proveedor al que está asociado el producto
	 */
	public SupplierProduct( String prodCode, int suppCode )
	{
		code = prodCode;
		supplierId = suppCode;
		loadData( code, supplierId );
	}
	
	/**
	 * carga un producto de la base de datos a partir de su identificador
	 * @param prodId identificador del producto en la tabla
	 * @return booleano que indica si se pudo cargar o no
	 */
	public boolean loadData( int prodId )
	{
		id = prodId;
                supplierGLN = "";
		String sql = "SELECT cate_prod_codigo, empr_id, prod_prov_codigo, "
					+ "prod_prov_proveedor, prod_prov_descripcion_larga, prod_prov_descripcion_corta, "
					+ "prod_prov_color, prod_prov_talla, prod_prov_marca, prod_prov_registro_sanitario, "
					+ "prod_prov_forma_farmaceutica, prod_prov_estilo, prod_prov_nombre_funcional, "
					+ "prod_prov_variante, prod_prov_nombre_fabricante, prod_prov_principio_activo, "
					+ "prod_prov_unidad_consumo, prod_prov_unidad_despacho, prod_prov_unidad_comercio, "
					+ "prod_prov_ancho, prod_prov_ancho_unidad, prod_prov_peso_neto, prod_prov_peso_neto_unidad, "
					+ "prod_prov_profundidad, prod_prov_profundidad_unidad, prod_prov_alto, "
					+ "prod_prov_alto_unidad, prod_prov_peso_bruto, prod_prov_peso_bruto_unidad, "
					+ "prod_prov_temperatura_minima, prod_prov_temperatura_maxima, prod_prov_temperatura_unidad, "
					+ "prod_prov_unidades_apilables, prod_prov_tendidos, prod_prov_unidades_tendido, prod_prov_cantidad_envase, "
					+ "prod_prov_cantidad_env_unidad, prod_prov_piezas, prod_prov_fecha_registro_sani, "
					+ "prod_prov_tipo_empaque, prod_prov_url_imagen, prod_prov_nurit, prod_prov_estado, prod_prov_iva "
					+ "FROM producto_proveedor WHERE prod_prov_id=" + id + ";";
		try
		{
			Vector res = SQLUtilities.query( sql );
			Hashtable datos = ( Hashtable )res.elementAt( 0 );
			
			category = ( ( Integer )datos.get( "cate_prod_codigo" ) ).intValue();
			///////////////////////////////////////////////////////////
			/// para buscar el nombre de la categoria
			sql = "SELECT cate_prod_nombre FROM categoria_producto WHERE cate_prod_codigo=" + category + ";";
			Vector res1 = SQLUtilities.query( sql );
			Hashtable datos1 = ( Hashtable )res1.elementAt( 0 );
			categoryName = ( String )datos1.get( "cate_prod_nombre" );
			///////////////////////////////////////////////////////////
			tax = ( ( Double )datos.get( "prod_prov_iva2" ) ).floatValue();
			supplierId = ( ( Integer )datos.get( "empr_id" ) ).intValue();
			code = ( String )datos.get( "prod_prov_codigo" );
			supplierGLN = ( String )datos.get( "prod_prov_proveedor" );
			longDescription = ( String )datos.get( "prod_prov_descripcion_larga" );
			shortDescription = ( String )datos.get( "prod_prov_descripcion_corta" );
			color = ( String )datos.get( "prod_prov_color" );
			size = ( String )datos.get( "prod_prov_talla" );
			brand = ( String )datos.get( "prod_prov_marca" );
			sanitaryRegistry = ( String )datos.get( "prod_prov_registro_sanitario" );
			pharmaceuticalForm = ( String )datos.get( "prod_prov_forma_farmaceutica" );
			style = ( String )datos.get( "prod_prov_estilo" );
			functionalName = ( String )datos.get( "prod_prov_nombre_funcional" );
			variant = ( String )datos.get( "prod_prov_variante" );
			manufacturerName = ( String )datos.get( "prod_prov_nombre_fabricante" );
			activePrinciple = ( String )datos.get( "prod_prov_principio_activo" );
                        
                        /*
                        consumerUnit = ( ( Boolean )datos.get( "prod_prov_unidad_consumo" ) ).booleanValue();
                        despatchUnit = ( ( Boolean )datos.get( "prod_prov_unidad_despacho" ) ).booleanValue();
			invoiceUnit = ( ( Boolean )datos.get( "prod_prov_unidad_comercio" ) ).booleanValue();
                        */
                        
                        int isConsumerUnit = ( ( Integer )datos.get("prod_prov_unidad_consumo") ).intValue();
                        if(isConsumerUnit == 1){
                            consumerUnit = true;
                        }else{
                            consumerUnit = false;
                        }
                        
                        int isDespatchUnit = ( ( Integer )datos.get("prod_prov_unidad_despacho") ).intValue();
                        if(isDespatchUnit == 1){
                            despatchUnit = true;
                        }else{
                            despatchUnit = false;
                        }
                        
                        int isInvoiceUnit = ( ( Integer )datos.get("prod_prov_unidad_comercio") ).intValue();
                        if(isInvoiceUnit == 1){
                            invoiceUnit = true;
                        }else{
                            invoiceUnit = false;
                        }
                        
                        
			width = ( ( Double )datos.get( "prod_prov_ancho2" ) ).floatValue();
			widthUnit = ( String )datos.get( "prod_prov_ancho_unidad" );
			netWeight = ( ( Double )datos.get( "prod_prov_peso_neto2" ) ).floatValue();
			netWeightUnit = ( String )datos.get( "prod_prov_peso_neto_unidad" );
			depth = ( ( Double )datos.get( "prod_prov_profundidad2" ) ).floatValue();
			depthUnit = ( String )datos.get( "prod_prov_profundidad_unidad" );
			height = ( ( Double )datos.get( "prod_prov_alto2" ) ).floatValue();
			heightUnit = ( String )datos.get( "prod_prov_alto_unidad" );
			grossWeight = ( ( Double )datos.get( "prod_prov_peso_bruto2" ) ).floatValue();
			grossWeightUnit = ( String )datos.get( "prod_prov_peso_bruto_unidad" );
			minimumTemperature = ( ( Double )datos.get( "prod_prov_temperatura_minima2" ) ).floatValue();
			maximumTemperature = ( ( Double )datos.get( "prod_prov_temperatura_maxima2" ) ).floatValue();
			temperatureUnit = ( String )datos.get( "prod_prov_temperatura_unidad" );
			stackingWeightMaximum = ( ( Integer )datos.get( "prod_prov_unidades_apilables" ) ).intValue();
			completeLayers = ( ( Integer )datos.get( "prod_prov_tendidos" ) ).intValue();
			//itemsContainedInALayer = (( Integer )datos.get( "prod_prov_unidades_tendido" )).intValue();
			netContent = ( ( Double )datos.get( "prod_prov_cantidad_envase2" ) ).floatValue();
			netContentUnit = ( String )datos.get( "prod_prov_cantidad_env_unidad" );
			pieces = ( ( Integer )datos.get( "prod_prov_piezas" ) ).intValue();
			sanitaryRegistryDate = Date.valueOf( ( ( Date )datos.get( "prod_prov_fecha_registro_sani" ) ).toString() );
			packagingType = ( String )datos.get( "prod_prov_tipo_empaque" );
			image = ( String )datos.get( "prod_prov_url_imagen" );
                        
                        /*
			nurit = ( ( Boolean )datos.get( "prod_prov_nurit" ) ).booleanValue();
			status = ( ( Boolean )datos.get( "prod_prov_estado" ) ).booleanValue();
                        */
                        
                        int isNurit = ( ( Integer )datos.get("prod_prov_nurit") ).intValue();
                        if(isNurit == 1){
                            nurit = true;
                        }else{
                            nurit = false;
                        }
                        
                        int intStatus = ( ( Integer )datos.get("prod_prov_estado") ).intValue();
                        if(intStatus == 1){
                            status = true;
                        }else{
                            status = false;
                        }
                        
                        // para cargar el nombre del proveedor
                        sql = "SELECT empr_nombre_comercial FROM empresa WHERE empr_id=" + supplierId + ";";
                        res = SQLUtilities.query(sql);
                        datos = ( Hashtable )res.elementAt( 0 );
                        supplierName = ( String )datos.get( "empr_nombre_comercial" );
                        
                        // para cargar el nombre de la categoria
                        sql = "SELECT cate_prod_nombre FROM categoria_producto WHERE cate_prod_codigo=" + category + ";";
                        res = SQLUtilities.query(sql);
                        datos = ( Hashtable )res.elementAt( 0 );
                        categoryName = ( String )datos.get( "cate_prod_nombre" );
			
		}
		catch( Exception e )
		{
			System.out.println( "Error cargando producto --> " + e );
                        e.printStackTrace();
			return false;
		}
		return true;
	}
	
	/**
	 * carga un producto de la base de datos a partir del código de barras y el
	 * identificador del proveedor al que está asociado el producto
	 * @param prodCode código de barras del producto
	 * @param suppCode identificador del proveedor
	 * @return booleano que indica si se pudo cargar o no
	 */
	public boolean loadData( String prodCode, int suppCode )
	{
		code = prodCode;
		supplierId = suppCode;
		String sql = "SELECT prod_prov_id, cate_prod_codigo, "
					+ "prod_prov_proveedor, prod_prov_descripcion_larga, prod_prov_descripcion_corta, "
					+ "prod_prov_color, prod_prov_talla, prod_prov_marca, prod_prov_registro_sanitario, "
					+ "prod_prov_forma_farmaceutica, prod_prov_estilo, prod_prov_nombre_funcional, "
					+ "prod_prov_variante, prod_prov_nombre_fabricante, prod_prov_principio_activo, "
					+ "prod_prov_unidad_consumo, prod_prov_unidad_despacho, prod_prov_unidad_comercio, "
					+ "prod_prov_ancho, prod_prov_ancho_unidad, prod_prov_peso_neto, prod_prov_peso_neto_unidad, "
					+ "prod_prov_profundidad, prod_prov_profundidad_unidad, prod_prov_alto, "
					+ "prod_prov_alto_unidad, prod_prov_peso_bruto, prod_prov_peso_bruto_unidad, "
					+ "prod_prov_temperatura_minima, prod_prov_temperatura_maxima, prod_prov_temperatura_unidad, "
					+ "prod_prov_tendidos, prod_prov_unidades_tendido, prod_prov_cantidad_envase, "
					+ "prod_prov_cantidad_env_unidad, prod_prov_piezas, prod_prov_fecha_registro_sani, "
					+ "prod_prov_tipo_empaque, prod_prov_url_imagen, prod_prov_nurit, prod_prov_estado, prod_prov_iva "
					+ "FROM producto_proveedor WHERE prod_prov_id=" + id + ";";
		try
		{
			Vector res = SQLUtilities.query( sql );
			Hashtable datos = ( Hashtable )res.elementAt( 0 );
			
			id = ( ( Integer )datos.get( "prod_prov_id" ) ).intValue();
			category = ( ( Integer )datos.get( "cate_prod_codigo" ) ).intValue();
			///////////////////////////////////////////////////////////
			/// para buscar el nombre de la categoria
			sql = "SELECT cate_prod_nombre FROM categoria_producto WHERE cate_prod_codigo=" + category + ";";
			Vector res1 = SQLUtilities.query( sql );
			Hashtable datos1 = ( Hashtable )res1.elementAt( 0 );
			categoryName = ( String )datos1.get( "cate_prod_nombre" );
			///////////////////////////////////////////////////////////
			tax = ( ( Float )datos.get( "prod_prov_iva3" ) ).floatValue();
			supplierGLN = ( String )datos.get( "prod_prov_proveedor" );
			longDescription = ( String )datos.get( "prod_prov_descripcion_larga" );
			shortDescription = ( String )datos.get( "prod_prov_descripcion_corta" );
			color = ( String )datos.get( "prod_prov_color" );
			size = ( String )datos.get( "prod_prov_talla" );
			brand = ( String )datos.get( "prod_prov_marca" );
			sanitaryRegistry = ( String )datos.get( "prod_prov_registro_sanitario" );
			pharmaceuticalForm = ( String )datos.get( "prod_prov_forma_farmaceutica" );
			style = ( String )datos.get( "prod_prov_estilo" );
			functionalName = ( String )datos.get( "prod_prov_nombre_funcional" );
			variant = ( String )datos.get( "prod_prov_variante" );
			manufacturerName = ( String )datos.get( "prod_prov_nombre_fabricante" );
			activePrinciple = ( String )datos.get( "prod_prov_principio_activo" );
			consumerUnit = ( ( Boolean )datos.get( "prod_prov_unidad_consumo" ) ).booleanValue();
			despatchUnit = ( ( Boolean )datos.get( "prod_prov_unidad_despacho" ) ).booleanValue();
			invoiceUnit = ( ( Boolean )datos.get( "prod_prov_unidad_comercio" ) ).booleanValue();
			width = ( ( Float )datos.get( "prod_prov_ancho3" ) ).floatValue();
			widthUnit = ( String )datos.get( "prod_prov_ancho_unidad" );
			netWeight = ( ( Float )datos.get( "prod_prov_peso_neto3" ) ).floatValue();
			netWeightUnit = ( String )datos.get( "prod_prov_peso_neto_unidad" );
			depth = ( ( Float )datos.get( "prod_prov_profundidad3" ) ).floatValue();
			depthUnit = ( String )datos.get( "prod_prov_profundidad_unidad" );
			height = ( ( Float )datos.get( "prod_prov_alto3" ) ).floatValue();
			heightUnit = ( String )datos.get( "prod_prov_alto_unidad" );
			grossWeight = ( ( Float )datos.get( "prod_prov_peso_bruto3" ) ).floatValue();
			grossWeightUnit = ( String )datos.get( "prod_prov_peso_bruto_unidad" );
			minimumTemperature = ( ( Float )datos.get( "prod_prov_temperatura_minima3" ) ).floatValue();
			maximumTemperature = ( ( Float )datos.get( "prod_prov_temperatura_maxima3" ) ).floatValue();
			temperatureUnit = ( String )datos.get( "prod_prov_temperatura_unidad" );
			stackingWeightMaximum = ( ( Integer )datos.get( "prod_prov_unidades_apilables" ) ).intValue();
			completeLayers = ( ( Integer )datos.get( "prod_prov_tendidos" ) ).intValue();
			itemsContainedInALayer = ( ( Integer )datos.get( "prod_prov_unidades_tendido" ) ).intValue();
			netContent = ( ( Float )datos.get( "prod_prov_cantidad_envase3" ) ).floatValue();
			netContentUnit = ( String )datos.get( "prod_prov_cantidad_env_unidad" );
			pieces = ( ( Integer )datos.get( "prod_prov_pieces" ) ).intValue();
			sanitaryRegistryDate = Date.valueOf( ( ( Date )datos.get( "prod_prov_fecha_registro_sani" ) ).toString() );
			packagingType = ( String )datos.get( "prod_prov_tipo_empaque" );
			image = ( String )datos.get( "prod_prov_url_imagen" );
			nurit = ( ( Boolean )datos.get( "prod_prov_nurit" ) ).booleanValue();
			status = ( ( Boolean )datos.get( "prod_prov_estado" ) ).booleanValue();
			
		}
		catch( Exception e )
		{
			System.out.println( "Error cargando producto --> " + e );
			return false;
		}
		return true;
	}
	
	public boolean loadData( String prodCode, String suppGLN )
	{
		code = prodCode;
		supplierGLN = suppGLN;
		String sql = "SELECT prod_prov_id, cate_prod_codigo, empr_id, "
					+ "prod_prov_descripcion_larga, prod_prov_descripcion_corta, "
					+ "prod_prov_color, prod_prov_talla, prod_prov_marca, prod_prov_registro_sanitario, "
					+ "prod_prov_forma_farmaceutica, prod_prov_estilo, prod_prov_nombre_funcional, "
					+ "prod_prov_variante, prod_prov_nombre_fabricante, prod_prov_principio_activo, "
					+ "prod_prov_unidad_consumo, prod_prov_unidad_despacho, prod_prov_unidad_comercio, "
					+ "prod_prov_ancho, prod_prov_ancho_unidad, prod_prov_peso_neto, prod_prov_peso_neto_unidad, "
					+ "prod_prov_profundidad, prod_prov_profundidad_unidad, prod_prov_alto, "
					+ "prod_prov_alto_unidad, prod_prov_peso_bruto, prod_prov_peso_bruto_unidad, "
					+ "prod_prov_temperatura_minima, prod_prov_temperatura_maxima, prod_prov_temperatura_unidad, "
					+ "prod_prov_tendidos, prod_prov_unidades_tendido, prod_prov_cantidad_envase, "
					+ "prod_prov_cantidad_env_unidad, prod_prov_piezas, prod_prov_fecha_registro_sani, "
					+ "prod_prov_tipo_empaque, prod_prov_url_imagen, prod_prov_nurit, prod_prov_estado, prod_prov_iva "
					+ "FROM producto_proveedor WHERE prod_prov_id=" + id + ";";
		try
		{
			Vector res = SQLUtilities.query( sql );
			Hashtable datos = ( Hashtable )res.elementAt( 0 );
			
			id = ( ( Integer )datos.get( "prod_prov_codigo" ) ).intValue();
			category = ( ( Integer )datos.get( "cate_prod_codigo" ) ).intValue();
			///////////////////////////////////////////////////////////
			/// para buscar el nombre de la categoria
			sql = "SELECT cate_prod_nombre FROM categoria_producto WHERE cate_prod_codigo=" + category + ";";
			Vector res1 = SQLUtilities.query( sql );
			Hashtable datos1 = ( Hashtable )res1.elementAt( 0 );
			categoryName = ( String )datos1.get( "cate_prod_nombre" );
			///////////////////////////////////////////////////////////
			tax = ( ( Float )datos.get( "prod_prov_iva3" ) ).floatValue();
			supplierId = ( ( Integer )datos.get( "empr_id" ) ).intValue();
			longDescription = ( String )datos.get( "prod_prov_descripcion_larga" );
			shortDescription = ( String )datos.get( "prod_prov_descripcion_corta" );
			color = ( String )datos.get( "prod_prov_color" );
			size = ( String )datos.get( "prod_prov_talla" );
			brand = ( String )datos.get( "prod_prov_marca" );
			sanitaryRegistry = ( String )datos.get( "prod_prov_registro_sanitario" );
			pharmaceuticalForm = ( String )datos.get( "prod_prov_forma_farmaceutica" );
			style = ( String )datos.get( "prod_prov_estilo" );
			functionalName = ( String )datos.get( "prod_prov_nombre_funcional" );
			variant = ( String )datos.get( "prod_prov_variante" );
			manufacturerName = ( String )datos.get( "prod_prov_nombre_fabricante" );
			activePrinciple = ( String )datos.get( "prod_prov_principio_activo" );
			consumerUnit = ( ( Boolean )datos.get( "prod_prov_unidad_consumo" ) ).booleanValue();
			despatchUnit = ( ( Boolean )datos.get( "prod_prov_unidad_despacho" ) ).booleanValue();
			invoiceUnit = ( ( Boolean )datos.get( "prod_prov_unidad_comercio" ) ).booleanValue();
			width = ( ( Float )datos.get( "prod_prov_ancho3" ) ).floatValue();
			widthUnit = ( String )datos.get( "prod_prov_ancho_unidad" );
			netWeight = ( ( Float )datos.get( "prod_prov_peso_neto3" ) ).floatValue();
			netWeightUnit = ( String )datos.get( "prod_prov_peso_neto_unidad" );
			depth = ( ( Float )datos.get( "prod_prov_profundidad3" ) ).floatValue();
			depthUnit = ( String )datos.get( "prod_prov_profundidad_unidad" );
			height = ( ( Float )datos.get( "prod_prov_alto3" ) ).floatValue();
			heightUnit = ( String )datos.get( "prod_prov_alto_unidad" );
			grossWeight = ( ( Float )datos.get( "prod_prov_peso_bruto3" ) ).floatValue();
			grossWeightUnit = ( String )datos.get( "prod_prov_peso_bruto_unidad" );
			minimumTemperature = ( ( Float )datos.get( "prod_prov_temperatura_minima3" ) ).floatValue();
			maximumTemperature = ( ( Float )datos.get( "prod_prov_temperatura_maxima3" ) ).floatValue();
			temperatureUnit = ( String )datos.get( "prod_prov_temperatura_unidad" );
			stackingWeightMaximum = ( ( Integer )datos.get( "prod_prov_unidades_apilables" ) ).intValue();
			completeLayers = ( ( Integer )datos.get( "prod_prov_tendidos" ) ).intValue();
			itemsContainedInALayer = ( ( Integer )datos.get( "prod_prov_unidades_tendido" ) ).intValue();
			netContent = ( ( Float )datos.get( "prod_prov_cantidad_envase3" ) ).floatValue();
			netContentUnit = ( String )datos.get( "prod_prov_cantidad_env_unidad" );
			pieces = ( ( Integer )datos.get( "prod_prov_pieces" ) ).intValue();
			sanitaryRegistryDate = Date.valueOf( ( ( Date )datos.get( "prod_prov_fecha_registro_sani" ) ).toString() );
			packagingType = ( String )datos.get( "prod_prov_tipo_empaque" );
			image = ( String )datos.get( "prod_prov_url_imagen" );
			nurit = ( ( Boolean )datos.get( "prod_prov_nurit" ) ).booleanValue();
			status = ( ( Boolean )datos.get( "prod_prov_estado" ) ).booleanValue();
			
		}
		catch( Exception e )
		{
			System.out.println( "Error cargando producto --> " + e );
			return false;
		}
		return true;
	}
        
        public boolean loadMinimalData( int id )
        {
		this.id = id;
		String sql = "SELECT cate_prod_codigo, empr_id, prod_prov_codigo, "
					+ "prod_prov_descripcion_corta, "
					+ "prod_prov_marca, " 
                                        + "prod_prov_estado "
					+ "FROM producto_proveedor WHERE prod_prov_id=" + id + ";";
                
		try
		{
			Vector res = SQLUtilities.query( sql );
			Hashtable datos = ( Hashtable )res.elementAt( 0 );
			
			category = ( ( Integer )datos.get( "cate_prod_codigo" ) ).intValue();
			///////////////////////////////////////////////////////////
			/// para buscar el nombre de la categoria
			sql = "SELECT cate_prod_nombre FROM categoria_producto WHERE cate_prod_codigo=" + category + ";";
			Vector res1 = SQLUtilities.query( sql );
			Hashtable datos1 = ( Hashtable )res1.elementAt( 0 );
			categoryName = ( String )datos1.get( "cate_prod_nombre" );
			///////////////////////////////////////////////////////////
			supplierId = ( ( Integer )datos.get( "empr_id" ) ).intValue();
			code = ( String )datos.get( "prod_prov_codigo" );
			shortDescription = ( String )datos.get( "prod_prov_descripcion_corta" );
			brand = ( String )datos.get( "prod_prov_marca" );
                        if( ( (Integer)datos.get("prod_prov_estado")).intValue()==1)
                        {
                            status = true;
                        }
                        else
                        {
                            status = false;
                        }
                        
                        
                        // para cargar el nombre del proveedor
                        sql = "SELECT empr_nombre_comercial FROM empresa WHERE empr_id=" + supplierId + ";";
                        res = SQLUtilities.query(sql);
                        datos = ( Hashtable )res.elementAt( 0 );
                        supplierName = ( String )datos.get( "empr_nombre_comercial" );
                        
			
		}
		catch( Exception e )
		{
			System.out.println( "Error cargando producto --> " + e );
			return false;
		}
		return true;
        }
	
	/**
	 * Almacena la información del producto en la base de datos construyendo la 
	 * instrucción sql y pasandola a la transacción
	 * @param transaction Transacción que se está ejecutando
	 * @return booleano que indica si se pudo efectuar la operación o no
	 */
	public boolean saveData( Transaction transaction )
	{
		if( id == 0 )
		{
			id = this.hashCode();
			
			
			String sql = "INSERT INTO producto_proveedor (prod_prov_id, cate_prod_codigo, "
						+ "empr_id, prod_prov_codigo, prod_prov_proveedor, prod_prov_descripcion_larga, "
						+ "prod_prov_descripcion_corta, prod_prov_color, prod_prov_talla, prod_prov_marca, "
						+ "prod_prov_registro_sanitario, prod_prov_forma_farmaceutica,prod_prov_estilo, "
						+ "prod_prov_nombre_funcional, prod_prov_variante, prod_prov_nombre_fabricante, "
						+ "prod_prov_principio_activo, prod_prov_unidad_consumo, prod_prov_unidad_despacho, "
						+ "prod_prov_unidad_comercio, prod_prov_ancho, prod_prov_ancho_unidad, "
						+ "prod_prov_peso_neto, prod_prov_peso_neto_unidad, prod_prov_profundidad, "
						+ "prod_prov_profundidad_unidad, prod_prov_alto, prod_prov_alto_unidad, "
						+ "prod_prov_peso_bruto, prod_prov_peso_bruto_unidad, prod_prov_temperatura_minima, "
						+ "prod_prov_temperatura_maxima, prod_prov_temperatura_unidad, prod_prov_unidades_apilables, "
						+ "prod_prov_tendidos, prod_prov_unidades_tendido, prod_prov_cantidad_envase, "
						+ "prod_prov_cantidad_env_unidad, prod_prov_piezas, prod_prov_fecha_registro_sani, "
						+ "prod_prov_tipo_empaque, prod_prov_url_imagen, prod_prov_nurit, prod_prov_estado, "
						+ "prod_prov_iva) VALUES("
						+ id + ", "
						+ category + ", "
						+ supplierId + ", "
						+ "\'" + code + "\', "
						+ "\'" + supplierGLN + "\', "
						+ "\'" + longDescription + "\', "
						+ "\'" + shortDescription + "\', "
						+ "\'" + color + "\', "
						+ "\'" + size + "\', "
						+ "\'" + brand + "\', "
						+ "\'" + sanitaryRegistry + "\', "
						+ "\'" + pharmaceuticalForm + "\', "
						+ "\'" + style + "\', "
						+ "\'" + functionalName + "\', "
						+ "\'" + variant + "\', "
						+ "\'" + manufacturerName + "\', "
						+ "\'" + activePrinciple + "\', "
						+ ( consumerUnit ? "1" : "0" ) + ", "
						+ ( despatchUnit ? "1" : "0" ) + ", "
						+ ( invoiceUnit ? "1" : "0" ) + ", "
						+ width + ", "
						+ "\'" + widthUnit + "\', "
						+ netWeight + ", "
						+ "\'" + netWeightUnit + "\', "
						+ depth + ", "
						+ "\'" + depthUnit + "\', "
						+ height + ", "
						+ "\'" + heightUnit + "\', "
						+ grossWeight + ", "
						+ "\'" + grossWeightUnit + "\', "
						+ minimumTemperature + ", "
						+ maximumTemperature + ", "
						+ "\'" + temperatureUnit + "\', "
						+ stackingWeightMaximum + ", "
						+ completeLayers + ", "
						+ itemsContainedInALayer + ", "
						+ netContent + ", "
						+ "\'" + netContentUnit + "\', "
						+ pieces + ", "
						+ "\'" + sanitaryRegistryDate + "\', "
						+ "\'" + packagingType + "\', "
						+ "\'" + image + "\', "
						+ ( nurit ? "1" : "0" ) + ", "
						+ ( status ? "1" : "0" ) + ", "
						+ tax
						+ ");";
			transaction.addSql( sql );
			return true;
		}
		else
		{
			return false;
		}
	}
	
	/**
	 * Actualiza la información del producto en la base de datos creando la 
	 * instrucción sql y pasandola a la transacción
	 * @param transaction Transacción que se está ejecutando
	 * @return booleano que indica si se pudo efectuar la operación o no
	 */
	public boolean update( Transaction transaction )
	{
		if( id != 0 )
		{
			String sql = "UPDATE producto_proveedor SET "
						+ "cate_prod_codigo=" + category + ", "
						+ "empr_id=" + supplierId + ", "
						+ "prod_prov_codigo=\'" + code + "\', "
						+ "prod_prov_proveedor=\'" + supplierGLN + "\', "
						+ "prod_prov_descripcion_larga=\'" + longDescription + "\', "
						+ "prod_prov_descripcion_corta=\'" + shortDescription + "\', "
						+ "prod_prov_color=\'" + color + "\', "
						+ "prod_prov_talla=\'" + size + "\', "
						+ "prod_prov_marca=\'" + brand + "\', "
						+ "prod_prov_registro_sanitario=\'" + sanitaryRegistry + "\', "
						+ "prod_prov_forma_farmaceutica=\'" + pharmaceuticalForm + "\', "
						+ "prod_prov_estilo=\'" + style + "\', "
						+ "prod_prov_nombre_funcional=\'" + functionalName + "\', "
						+ "prod_prov_variante=\'" + variant + "\', "
						+ "prod_prov_nombre_fabricante=\'" + manufacturerName + "\', "
						+ "prod_prov_principio_activo=\'" + activePrinciple + "\', "
						+ "prod_prov_unidad_consumo=" + ( consumerUnit ? "1" : "0" ) + ", "
						+ "prod_prov_unidad_despacho=" + ( despatchUnit ? "1" : "0" ) + ", "
						+ "prod_prov_unidad_comercio=" + ( invoiceUnit ? "1" : "0" ) + ", "
						+ "prod_prov_ancho=" + width + ", "
						+ "prod_prov_ancho_unidad=\'" + widthUnit + "\', "
						+ "prod_prov_peso_neto=" + netWeight + ", "
						+ "prod_prov_peso_neto_unidad=\'" + netWeightUnit + "\', "
						+ "prod_prov_profundidad=" + depth + ", "
						+ "prod_prov_profundidad_unidad=\'" + depthUnit + "\', "
						+ "prod_prov_alto=" + height + ", "
						+ "prod_prov_alto_unidad=\'" + heightUnit + "\', "
						+ "prod_prov_peso_bruto=" + grossWeight + ", "
						+ "prod_prov_peso_bruto_unidad=\'" + grossWeightUnit + "\', "
						+ "prod_prov_temperatura_minima=" + minimumTemperature + ", "
						+ "prod_prov_temperatura_maxima=" + maximumTemperature + ", "
						+ "prod_prov_temperatura_unidad=\'" + temperatureUnit + "\', "
						+ "prod_prov_unidades_apilables=" + stackingWeightMaximum + ", "
						+ "prod_prov_tendidos=" + completeLayers + ", "
						+ "prod_prov_unidades_tendido=" + itemsContainedInALayer + ", "
						+ "prod_prov_cantidad_envase=" + netContent + ", "
						+ "prod_prov_cantidad_env_unidad=\'" + netContentUnit + "\', "
						+ "prod_prov_ìezas=" + pieces + ", "
						+ "prod_prov_fecha_registro_sani=\'" + sanitaryRegistryDate + "\', "
						+ "prod_prov_tipo_empaque=\'" + packagingType + "\', "
						+ "prod_prov_url_imagen=\'" + image + "\', "
						+ "prod_prov_nurit=" + ( nurit ? "1" : "0" ) + ", "
						+ "prod_prov_estado=" + ( status ? "1" : "0" ) + ", "
						+ "prod_prov_iva=" + tax + " "
						+ "WHERE prod_prov_id=" + id + ";";
			transaction.addSql( sql );
			return true;
		}
		else
		{
			return false;
		}
	}
	
	/**
	 * No se van a eliminar los productos de la base de datos, ya que esto implicaría
	 * borrar las ordenes de compra, cotizaciones y listas que involucran dichos
	 * productos, en lugar de ello simplemente se va a poner el estado del producto en false,
	 * lo que indica que el proveedor no lo está vendiendo.
	 * @param transaction Transacción que se está ejecutando
	 * @return booleno que indica si se pudo efectuar la operación o no
	 */
	public boolean delete( Transaction transaction )
	{
		if( id != 0 )
		{			
			status = false;
			String sql = "UPDATE producto_proveedor SET estado=0 WHERE prod_prov_id=" + id + ";";
			transaction.addSql( sql );
			return true;
		}
		else
		{
			return false;
		}
	}
	
	
	
	
	
	/**
	 * @return Returns the activePrinciple.
	 */
	public String getActivePrinciple()
        {
		return activePrinciple;
	}
	/**
	 * @param activePrinciple The activePrinciple to set.
	 */
	public void setActivePrinciple(String activePrinciple) {
		this.activePrinciple = activePrinciple.toUpperCase();
	}
	/**
	 * @return Returns the brand.
	 */
	public String getBrand() {
		return brand;
	}
	/**
	 * @param brand The brand to set.
	 */
	public void setBrand(String brand)
        {
		this.brand = brand.toUpperCase();
	}
	/**
	 * @return Returns the category.
	 */
	public int getCategory() {
		return category;
	}
	/**
	 * @param category The category to set.
	 */
	public void setCategory(int category) {
		this.category = category;
	}
	/**
	 * @return Returns the categoryName.
	 */
	public String getCategoryName() {
		return categoryName;
	}
	/**
	 * @param categoryName The categoryName to set.
	 */
	public void setCategoryName(String categoryName) {
		this.categoryName = categoryName.toUpperCase();
	}
	/**
	 * @return Returns the code.
	 */
	public String getCode() {
		return code;
	}
	/**
	 * @param code The code to set.
	 */
	public void setCode(String code)
	{
		this.code = code;
		image = "/images/products/" + code + ".jpg";
	}
	/**
	 * @return Returns the codeSupplier.
	 */
	public String getCodeSupplier() {
		return codeSupplier;
	}
	/**
	 * @param codeSupplier The codeSupplier to set.
	 */
	public void setCodeSupplier(String codeSupplier) {
		this.codeSupplier = codeSupplier;
	}
	/**
	 * @return Returns the color.
	 */
	public String getColor() {
		return color;
	}
	/**
	 * @param color The color to set.
	 */
	public void setColor(String color) {
		this.color = color.toUpperCase();
	}
	/**
	 * @return Returns the completeLayers.
	 */
	public int getCompleteLayers() {
		return completeLayers;
	}
	/**
	 * @param completeLayers The completeLayers to set.
	 */
	public void setCompleteLayers(int completeLayers) {
		this.completeLayers = completeLayers;
	}
	/**
	 * @return Returns the consumerUnit.
	 */
	public boolean isConsumerUnit() {
		return consumerUnit;
	}
	/**
	 * @param consumerUnit The consumerUnit to set.
	 */
	public void setConsumerUnit(boolean consumerUnit) {
		this.consumerUnit = consumerUnit;
	}
	/**
	 * @return Returns the depth.
	 */
	public float getDepth() {
		return depth;
	}
	/**
	 * @param depth The depth to set.
	 */
	public void setDepth(float depth) {
		this.depth = depth;
	}
	/**
	 * @return Returns the depthUnit.
	 */
	public String getDepthUnit() {
		return depthUnit;
	}
	/**
	 * @param depthUnit The depthUnit to set.
	 */
	public void setDepthUnit(String depthUnit) {
		this.depthUnit = depthUnit.toUpperCase();
	}
	/**
	 * @return Returns the despatchUnit.
	 */
	public boolean isDespatchUnit() {
		return despatchUnit;
	}
	/**
	 * @param despatchUnit The despatchUnit to set.
	 */
	public void setDespatchUnit(boolean despatchUnit) {
		this.despatchUnit = despatchUnit;
	}
	/**
	 * @return Returns the functionalName.
	 */
	public String getFunctionalName() {
		return functionalName;
	}
	/**
	 * @param functionalName The functionalName to set.
	 */
	public void setFunctionalName(String functionalName) {
		this.functionalName = functionalName.toUpperCase();
	}
	/**
	 * @return Returns the grossWeight.
	 */
	public float getGrossWeight() {
		return grossWeight;
	}
	/**
	 * @param grossWeight The grossWeight to set.
	 */
	public void setGrossWeight(float grossWeight) {
		this.grossWeight = grossWeight;
	}
	/**
	 * @return Returns the grossWeightUnit.
	 */
	public String getGrossWeightUnit() {
		return grossWeightUnit;
	}
	/**
	 * @param grossWeightUnit The grossWeightUnit to set.
	 */
	public void setGrossWeightUnit(String grossWeightUnit) {
		this.grossWeightUnit = grossWeightUnit.toUpperCase();
	}
	/**
	 * @return Returns the height.
	 */
	public float getHeight() {
		return height;
	}
	/**
	 * @param height The height to set.
	 */
	public void setHeight(float height) {
		this.height = height;
	}
	/**
	 * @return Returns the heightUnit.
	 */
	public String getHeightUnit() {
		return heightUnit;
	}
	/**
	 * @param heightUnit The heightUnit to set.
	 */
	public void setHeightUnit(String heightUnit) {
		this.heightUnit = heightUnit.toUpperCase();
	}
	/**
	 * @return Returns the id.
	 */
	public int getId() {
		return id;
	}
	/**
	 * @param id The id to set.
	 */
	public void setId(int id) {
		this.id = id;
	}
	/**
	 * @return Returns the invoiceUnit.
	 */
	public boolean isInvoiceUnit() {
		return invoiceUnit;
	}
	/**
	 * @param invoiceUnit The invoiceUnit to set.
	 */
	public void setInvoiceUnit(boolean invoiceUnit) {
		this.invoiceUnit = invoiceUnit;
	}
	/**
	 * @return Returns the itemsContainedInALayer.
	 */
	public int getItemsContainedInALayer() {
		return itemsContainedInALayer;
	}
	/**
	 * @param itemsContainedInALayer The itemsContainedInALayer to set.
	 */
	public void setItemsContainedInALayer(int itemsContainedInALayer) {
		this.itemsContainedInALayer = itemsContainedInALayer;
	}
	/**
	 * @return Returns the longDescription.
	 */
	public String getLongDescription() {
		return longDescription;
	}
	/**
	 * @param longDescription The longDescription to set.
	 */
	public void setLongDescription(String longDescription) {
		this.longDescription = longDescription.toUpperCase();
	}
	/**
	 * @return Returns the manufacturerName.
	 */
	public String getManufacturerName() {
		return manufacturerName;
	}
	/**
	 * @param manufacturerName The manufacturerName to set.
	 */
	public void setManufacturerName(String manufacturarName) {
		this.manufacturerName = manufacturarName.toUpperCase();
	}
	/**
	 * @return Returns the maximumTemperature.
	 */
	public float getMaximumTemperature() {
		return maximumTemperature;
	}
	/**
	 * @param maximumTemperature The maximumTemperature to set.
	 */
	public void setMaximumTemperature(float maximumTemperature) {
		this.maximumTemperature = maximumTemperature;
	}
	/**
	 * @return Returns the minimumTemperature.
	 */
	public float getMinimumTemperature() {
		return minimumTemperature;
	}
	/**
	 * @param minimumTemperature The minimumTemperature to set.
	 */
	public void setMinimumTemperature(float minimumTemperature) {
		this.minimumTemperature = minimumTemperature;
	}
	/**
	 * @return Returns the netContent.
	 */
	public float getNetContent() {
		return netContent;
	}
	/**
	 * @param netContent The netContent to set.
	 */
	public void setNetContent(float netContent) {
		this.netContent = netContent;
	}
	/**
	 * @return Returns the netContentUnit.
	 */
	public String getNetContentUnit() {
		return netContentUnit;
	}
	/**
	 * @param netContentUnit The netContentUnit to set.
	 */
	public void setNetContentUnit(String netContentUnit) {
		this.netContentUnit = netContentUnit.toUpperCase();
	}
	/**
	 * @return Returns the netWeight.
	 */
	public float getNetWeight() {
		return netWeight;
	}
	/**
	 * @param netWeight The netWeight to set.
	 */
	public void setNetWeight(float netWeight) {
		this.netWeight = netWeight;
	}
	/**
	 * @return Returns the netWeightUnit.
	 */
	public String getNetWeightUnit() {
		return netWeightUnit;
	}
	/**
	 * @param netWeightUnit The netWeightUnit to set.
	 */
	public void setNetWeightUnit(String netWeightUnit) {
		this.netWeightUnit = netWeightUnit.toUpperCase();
	}
	/**
	 * @return Returns the packagingType.
	 */
	public String getPackagingType() {
		return packagingType;
	}
	/**
	 * @param packagingType The packagingType to set.
	 */
	public void setPackagingType(String packagingType) {
		this.packagingType = packagingType.toUpperCase();
	}
	/**
	 * @return Returns the pharmaceuticalForm.
	 */
	public String getPharmaceuticalForm() {
		return pharmaceuticalForm;
	}
	/**
	 * @param pharmaceuticalForm The pharmaceuticalForm to set.
	 */
	public void setPharmaceuticalForm(String pharmaceuticalForm) {
		this.pharmaceuticalForm = pharmaceuticalForm.toUpperCase();
	}
	/**
	 * @return Returns the pieces.
	 */
	public int getPieces() {
		return pieces;
	}
	/**
	 * @param pieces The pieces to set.
	 */
	public void setPieces(int pieces) {
		this.pieces = pieces;
	}
	/**
	 * @return Returns the sanitaryRegistry.
	 */
	public String getSanitaryRegistry() {
		return sanitaryRegistry;
	}
	/**
	 * @param sanitaryRegistry The sanitaryRegistry to set.
	 */
	public void setSanitaryRegistry(String sanitaryRegistry) {
		this.sanitaryRegistry = sanitaryRegistry;
	}
	/**
	 * @return Returns the sanitaryRegistryDate.
	 */
	public Date getSanitaryRegistryDate() {
		return sanitaryRegistryDate;
	}
	/**
	 * @param sanitaryRegistryDate The sanitaryRegistryDate to set.
	 */
	public void setSanitaryRegistryDate(Date sanitaryRegistryDate) {
		this.sanitaryRegistryDate = sanitaryRegistryDate;
	}
	/**
	 * @return Returns the shortDescription.
	 */
	public String getShortDescription() {
		return shortDescription;
	}
	/**
	 * @param shortDescription The shortDescription to set.
	 */
	public void setShortDescription(String shortDescription) {
		this.shortDescription = shortDescription.toUpperCase();
	}
	/**
	 * @return Returns the size.
	 */
	public String getSize() {
		return size;
	}
	/**
	 * @param size The size to set.
	 */
	public void setSize(String size) {
		this.size = size.toUpperCase();
	}
	/**
	 * @return Returns the stackingWeightMaximum.
	 */
	public int getStackingWeightMaximum() {
		return stackingWeightMaximum;
	}
	/**
	 * @param stackingWeightMaximum The stackingWeightMaximum to set.
	 */
	public void setStackingWeightMaximum(int stackingWeightMaximum) {
		this.stackingWeightMaximum = stackingWeightMaximum;
	}
	/**
	 * @return Returns the style.
	 */
	public String getStyle() {
		return style;
	}
	/**
	 * @param style The style to set.
	 */
	public void setStyle(String style) {
		this.style = style.toUpperCase();
	}
	/**
	 * @return Returns the supplierGLN.
	 */
	public String getSupplierGLN() {
		return supplierGLN;
	}
	/**
	 * @param supplierGLN The supplierGLN to set.
	 */
	public void setSupplierGLN(String supplierGLN) {
		this.supplierGLN = supplierGLN;
	}
	/**
	 * @return Returns the tax.
	 */
	public float getTax() {
		return tax;
	}
	/**
	 * @param tax The tax to set.
	 */
	public void setTax(float tax) {
		this.tax = tax;
	}
	/**
	 * @return Returns the temperatureUnit.
	 */
	public String getTemperatureUnit() {
		return temperatureUnit;
	}
	/**
	 * @param temperatureUnit The temperatureUnit to set.
	 */
	public void setTemperatureUnit(String temperatureUnit) {
		this.temperatureUnit = temperatureUnit.toUpperCase();
	}

	/**
	 * @return Returns the variant.
	 */
	public String getVariant() {
		return variant;
	}
	/**
	 * @param variant The variant to set.
	 */
	public void setVariant(String variant) {
		this.variant = variant.toUpperCase();
	}
	/**
	 * @return Returns the width.
	 */
	public float getWidth() {
		return width;
	}
	/**
	 * @param width The width to set.
	 */
	public void setWidth(float width) {
		this.width = width;
	}
	/**
	 * @return Returns the widthUnit.
	 */
	public String getWidthUnit() {
		return widthUnit;
	}
	/**
	 * @param widthUnit The widthUnit to set.
	 */
	public void setWidthUnit(String widthUnit) {
		this.widthUnit = widthUnit.toUpperCase();
	}
	/**
	 * @return Returns the suplierId.
	 */
	public int getSupplierId() {
		return supplierId;
	}
	/**
	 * @param suplierId The suplierId to set.
	 */
	public void setSupplierId(int suplierId) {
		this.supplierId = suplierId;
	}
	/**
	 * @return Returns the image.
	 */
	public String getImage() {
		return image;
	}
	/**
	 * @param image The image to set.
	 */
	public void setImage(String image) {
		this.image = image;
	}
	/**
	 * @return Returns the status.
	 */
	public boolean isStatus() {
		return status;
	}
	/**
	 * @param estado The status to set.
	 */
	public void setStatus(boolean estado) {
		this.status = estado;
	}
	/**
	 * @return Returns the nurit.
	 */
	public boolean isNurit() {
		return nurit;
	}
	/**
	 * @param nurit The nurit to set.
	 */
	public void setNurit(boolean nurit) {
		this.nurit = nurit;
	}
        
       
        
        public static void main( String[] args )
        {
            SupplierProduct prod = new SupplierProduct();
            
            prod.setActivePrinciple( "milo" );
            prod.setBrand( "nestle" );
            prod.setCategory( 1 );
            prod.setCode( "7702345145211" );
            prod.setCodeSupplier( "654321" );
            prod.setColor( "cafe" );
            prod.setCompleteLayers( 1 );
            prod.setConsumerUnit( true );
            prod.setDepth( 12.5F );
            prod.setDepthUnit( "milimetro" );
            prod.setDespatchUnit( true );
            prod.setFunctionalName( "chocolate" );
            prod.setGrossWeight( 300 );
            prod.setGrossWeightUnit( "gramos" );
            prod.setHeight( 18 );
            prod.setHeightUnit( "centimet" );
            prod.setImage( "imagenes/7702345145211.jpg" );
            prod.setInvoiceUnit( false );
            prod.setItemsContainedInALayer( 1 );
            prod.setLongDescription( "bebida de chocolate en polvo" );
            prod.setManufacturerName( "nestle" );
            prod.setMaximumTemperature( 50 );
            prod.setMinimumTemperature( 5 );
            prod.setNetContent( 350 );
            prod.setNetContentUnit( "ml" );
            prod.setNetWeight( 250 );
            prod.setNetWeightUnit( "gramos" );
            prod.setNurit( true );
            prod.setPackagingType( "tarro" );
            prod.setPieces( 1 );
            prod.setSanitaryRegistry( "555555555" );
            prod.setSanitaryRegistryDate( new Date( new java.util.Date().getTime() ) );
            prod.setShortDescription( "milo" );
            prod.setStackingWeightMaximum( 5 );
            prod.setStatus( true );
            prod.setSupplierGLN( "7676" );
            prod.setSupplierId( 3 );
            prod.setTax( 16 );
            prod.setTemperatureUnit( "ºC" );
            prod.setVariant( "" );
            prod.setWidth( 50 );
            prod.setWidthUnit( "milimetr" );
            
            Transaction t = new Transaction();
            prod.saveData( t );
            System.out.println( t.execute() );
            System.exit( 0 );
            
        }
        
        /**
         * Retorna el hashcode que se usará como llave primaria en la tabla
         */
        /*public int hashCode()
        {
            return ( int )( code.hashCode() + supplierGLN.hashCode() );
        }*/
        
        /**
         * Getter for property supplierName.
         * @return Value of property supplierName.
         */
        public java.lang.String getSupplierName() {
            return supplierName;
        }        
        
        /**
         * Setter for property supplierName.
         * @param supplierName New value of property supplierName.
         */
        public void setSupplierName(java.lang.String supplierName) {
            this.supplierName = supplierName.toUpperCase();
        }        
        
        public static boolean changeStatus(Transaction t,int supplierProductId, int newStatus){
            boolean response = true;
            String sql = "UPDATE producto_proveedor SET prod_prov_estado ="+newStatus+" WHERE prod_prov_id="+supplierProductId+";";
            t.addSql(sql);  
            return response;    
        }
        
        
        
        
        public static int getSupplierFromProduct( int prodId )
        {
            int provId = 0;
            String sql = "SELECT empr_id FROM producto_proveedor WHERE "
                        + "prod_prov_id=" + prodId + ";";
            try
            {
                Vector res = SQLUtilities.query(sql);
                Hashtable data = ( Hashtable )res.elementAt( 0 );
                provId = ( ( Integer )data.get( "empr_id" ) ).intValue();
            }
            catch( Exception e )
            {
                System.out.println( "Error buscando el proveedor del producto" );
            }
            return provId;
        }
        
        public static String getProductName( int prodId )
        {
            String name = "Producto";
            String sql = "SELECT prod_prov_descripcion_corta FROM producto_proveedor "
                        + "WHERE prod_prov_id=" + prodId + ";";
            try
            {
                Vector res = SQLUtilities.query(sql);
                Hashtable data = ( Hashtable )res.elementAt( 0 );
                name = ( String )data.get( "prod_prov_descripcion_corta" );
            }
            catch( Exception e )
            {
                System.out.println( "Error buscando nombre del producto --> " + e );
            }
            return name;
        }
}