call spQuery_Lista_Unidad_Medida_Factor('','','BAL');

DROP PROCEDURE IF EXISTS spQuery_Lista_Unidad_Medida_Factor;
CREATE PROCEDURE spQuery_Lista_Unidad_Medida_Factor(	
	varCodigo varchar(10),
  varNombre varchar(80),
  varUMOrig varchar(10)
)
BEGIN 
  DECLARE varCadCod, varCadNom  TEXT default '';
  if varCodigo<>'' and varCodigo is not null then
    set varCadCod = CONCAT(" and id_um = '", varCodigo , "' ");
  end if;
  
  if varNombre<>'' and varNombre is not null then
    set varCadNom = CONCAT(" and nombre LIKE '%", varNombre , "%' ");
  end if;
  
  set @sql = CONCAT("select id_um as CUM, nombre as DESCRIPCION ",
                    "from _sv_unid_medida ",
                    "where _estado = 'A' ",
                    "and id_um not in (select id_um_destino ",
                    "                  from _sv_factor_conv ",
                    "                  where _estado='A' ",
                    "                  and id_um_origen = '", varUMOrig, "') ",
                    varCadCod, varCadNom);
  PREPARE s1 FROM @sql;
  EXECUTE s1;
  DEALLOCATE PREPARE s1;
END;