Skip to main content

Getting window and menu details from table name

hi all, 
            its quite a task in openbravo to find a table associated with a window and to find the window , tab and menu for a given table. I ve written a small function to provide the window name and menu names given a table name.




CREATE OR REPLACE FUNCTION get_details(tab_name character varying)
  RETURNS void AS
$BODY$ DECLARE
window_id varchar(32);
window_name varchar(100);
menu_id varchar(32);
tmp_men varchar(100);
menu_name varchar(100)[];
par_id varchar(32);
i numeric;
j numeric;
Menu varchar(250);
BEGIN
i:=0;
j:=0;
Menu:='Menu : Openbravo';
---- get window corresponding to table
Raise Notice '----------------------Table Details----------------------';
Raise Notice 'Table Name : %',tab_name;
select a.ad_window_id,b.name into window_id,window_name 
from ad_table a,ad_window b where a.tablename=tab_name and a.ad_window_id=b.ad_window_id;
Raise Notice '----------------------Window Details----------------------';
Raise Notice 'Window Id Mapped : %',window_id;
Raise Notice 'Window Mapped : %',window_name;
select ad_menu_id,name into menu_id,tmp_men
from ad_menu where ad_window_id=window_id;
menu_name[i]=tmp_men;
Raise Notice '----------------------Menu Details----------------------';
Raise Notice 'Menu Id : % ',menu_id;
Raise Notice 'Menu Name : % ',menu_name[i];
select parent_id into par_id from ad_treenode where node_id=menu_id;
while not par_id='0' loop
i:=i+1;
Raise Notice '';
Raise Notice '----------------------Parent Menu Details----------------------';
Raise Notice '';
Raise Notice 'Above Parent id %',par_id;
select ad_menu_id,name into menu_id,tmp_men from ad_menu where ad_menu_id=par_id;
menu_name[i]=tmp_men;
Raise Notice 'Level % Menu Name %',i,menu_name[i];
select parent_id into par_id from ad_treenode where node_id=menu_id;
--Raise Notice 'Above Parent id %',par_id;
end loop;
Raise Notice '----------------------Results----------------------';
Raise Notice '';
--Raise Notice 'Level % is the summary level menu and its name is %',i,menu_name[i];
Raise Notice 'Reqiured Menu is %',menu_name[0];
Raise Notice '';
while not i<0 loop
tmp_men:=menu_name[i];
Menu:=Menu||' --> ';
Menu:=Menu||tmp_men;
j:=j+1;
i:=i-1;
end loop;
Raise Notice '%',Menu;
        return;
END;   $BODY$
LANGUAGE 'plpgsql' VOLATILE




provide the table name as argument for the function and run it in pgadmin using select.
eg. select get_details(c_order)

Comments

Popular posts from this blog

My 10 years in Application Development

It's been around 10 years since I started programming. May be a bit more, if I have to include my first attempts at C programming in school. But it would be a grave insult to call remembering ten lines of code and just replicating it to put a star on the screen. I also did a course on Visual basic, but it was more gimmicks that Application development. But it was truly in the year 2007 when I started my Master in Computer Applications that I found a new flare for developing applications. 
I was very late to computers in general and even when I joined my Masters, computers were not really accessible to me. But when I joined my Masters where one is actually expected to hone the skills which they already have, but in case it was were I was learning the skills, initially it was very difficult. I was not sure what computers had for me nor I had a natural flair for programming. But the thing about computers that attracted me was the visual medium it gave. Initially it was just a door t…

Changing Timezone in Postgresql, Ubuntu

Timezone and locale are integral concepts that one should be aware of when implementing a System. For example. if you create a database in PostgreSql, it will use the default System settings for the database. Lets say you have a server in UK and your client is US. If the client tries to retrieve the current date or time, it is going to show the UK time and not the US one.
Today I encountered a different issue in our client place where the Ubuntu timezone and PostgreSql timezone were showing a incorrect values. Instead of Indian Standard Time (IST) it was showing Pacific Daylight Time(PDT). These are the steps that I followed to change the timezone to IST in PostgreSql and Ubuntu.
Changing timezone in Ubuntu:
sudo dpkg-reconfigure tzdataYou will be prompted to choose the continent and then the area. Provided screen shots where we configure the location.
Use TAB key to navigate to the OK button and then press Enter.

The changes will get reflected immediately. To check it you can open a n…

கிறுக்கனின் கிறுக்கல்கள் - அழுகையின் சிறப்பு

அழுகை என்பதை வெறுத்தவன் நான்... என்னை ஒரு நாள் பிரிந்திருக்க முடியாமல் , கைப்பேசியில் நீ சிந்திய உன் கண்ணீர் ஓசை என் காதில் கேட்கும் வரை...

பின்குறிப்பு: கிறுக்கனின் கிறுக்கல்கள் எங்கிருந்தோ தழுவப்பட்டது போல் தோன்றினால் கிறுக்கன் ( நான் உண்மையை ஏற்றுக்கொள்பவன்..:) ) பொறுப்பல்ல. கிறுக்கனின் கிறுக்கல்களில் வரும் கிறுக்கல்கள் யாவும் என் சிறய மூளையில் உதித்ததே ஆகும்.  Inspirations could have been drawn from somewhere else, but its the execution that counts....Isn't it ?