altocompta/sql/upgrade.sql
Dany De Bontridder 65154ddac1 Tag : gestion
Tag dans document : ajout, enlever
2013-09-23 18:09:12 +00:00

193 lines
No EOL
7.8 KiB
PL/PgSQL

-- si la fiche utilise le code DEPENSE PRIVEE alors ajout dans QP_DEP_PRIV
create or replace view m as
select qp_id, qp_price from quant_purchase join fiche_detail on (qp_fiche=f_id and ad_id=5) where ad_value in (select p_value from parm_code where p_code='DEP_PRIV');
update quant_purchase as e set qp_dep_priv=(select qp_price from m where m.qp_id=e.qp_id);
update quant_purchase as e set qp_dep_priv=(select qp_price from m where m.qp_id=e.qp_id);
update quant_purchase as e set qp_dep_priv=0 where qp_dep_priv is null;
-- évite les valeurs nulles dans quant_purchase
update quant_purchase set qp_dep_priv = 0 where qp_dep_priv is null;
drop view m;
-- update script insert_quant_purchase
CREATE OR REPLACE FUNCTION comptaproc.insert_quant_purchase(
p_internal text,
p_j_id numeric,
p_fiche text,
p_quant numeric,
p_price numeric,
p_vat numeric,
p_vat_code integer,
p_nd_amount numeric,
p_nd_tva numeric,
p_nd_tva_recup numeric,
p_dep_priv numeric,
p_client text,
p_tva_sided numeric)
RETURNS void AS
$BODY$
declare
fid_client integer;
fid_good integer;
account_priv account_type;
fid_good_account account_type;
n_dep_priv numeric;
begin
n_dep_priv := 0;
select p_value into account_priv from parm_code where p_code='DEP_PRIV';
select f_id into fid_client from
fiche_detail where ad_id=23 and ad_value=upper(trim(p_client));
select f_id into fid_good from
fiche_detail where ad_id=23 and ad_value=upper(trim(p_fiche));
select ad_value into fid_good_account from fiche_detail where ad_id=5 and f_id=fid_good;
if strpos( fid_good_account , account_priv ) = 1 then
n_dep_priv=p_price;
end if;
insert into quant_purchase
(qp_internal,
j_id,
qp_fiche,
qp_quantite,
qp_price,
qp_vat,
qp_vat_code,
qp_nd_amount,
qp_nd_tva,
qp_nd_tva_recup,
qp_supplier,
qp_dep_priv,
qp_vat_sided)
values
(p_internal,
p_j_id,
fid_good,
p_quant,
p_price,
p_vat,
p_vat_code,
p_nd_amount,
p_nd_tva,
p_nd_tva_recup,
fid_client,
n_dep_priv,
p_tva_sided);
return;
end;
$BODY$
LANGUAGE plpgsql;
-- ajout code manquant dans parm_code
create or replace function add_parm_code() returns void as
$fct$
declare
country_code text;
begin
select pr_value into country_code from parameter where pr_id='MY_COUNTRY';
if country_code='FR' then
insert into parm_code (p_code,p_comment,p_value) values ('DNA','Dépense non déductible','67');
insert into parm_code (p_code,p_comment,p_value) values ('TVA_DNA','TVA non déductible','');
insert into parm_code (p_code,p_comment,p_value) values ('TVA_DED_IMPOT','TVA déductible à l''impôt','');
insert into parm_code (p_code,p_comment,p_value) values ('COMPTE_COURANT','Poste comptable pour le compte courant','');
insert into parm_code (p_code,p_comment,p_value) values ('COMPTE_TVA','TVA à payer ou à recevoir','');
end if;
end;
$fct$
language plpgsql;
select add_parm_code();
drop function add_parm_code();
update parm_code set p_value='67' where p_value='6740' and p_code='DNA';
alter table menu_ref add me_description_etendue text;
insert into menu_ref(me_code,me_menu,me_file, me_url,me_description,me_parameter,me_javascript,me_type,me_description_etendue)
values
('NAVI','Navigateur',null,null,'Menu simplifié pour retrouver rapidement un menu',null,'ask_navigator(<DOSSIER>)','ME','Le navigateur vous présente une liste de menu auquel vous avez accès et vous permet d''accèder plus rapidement au menu que vous souhaitez rapidement');
insert into profile_menu (me_code,me_code_dep,p_id,p_order, p_type_display,pm_default)
values
('NAVI',null,1,90,'M',0), ('NAVI',null,2,90,'M',0);
insert into menu_ref(me_code,me_menu,me_file, me_url,me_description,me_parameter,me_javascript,me_type,me_description_etendue)
values
('BOOKMARK','Favori',null,null,'Raccourci vers vos menus préférés',null,'show_bookmark(<DOSSIER>)','ME','Ce menu vous présente un menu rapide des menus que vous utilisez le plus souvent');
insert into profile_menu (me_code,me_code_dep,p_id,p_order, p_type_display,pm_default)
values
('BOOKMARK',null,1,85,'M',0), ('BOOKMARK',null,2,85,'M',0);
update menu_ref set me_menu='Impression Journaux' where me_code='PRINTJRN';
update menu_ref set me_description='Impression des journaux' where me_code='PRINTJRN';
update menu_ref set me_menu='Liste Suivi' where me_code='FOLLOW';
update menu_ref set me_description='Document de suivi sous forme de liste' where me_code='FOLLOW';
update menu_ref set me_javascript='popup_recherche(<DOSSIER>)' where me_code='SEARCH';
update menu_ref set me_file=null,me_javascript='set_preference(<DOSSIER>)' , me_description_etendue='Préférence de l''utilisateur, apparence de l''application pour l''utilisateur, période par défaut et mot de passe' where me_code='PREFERENCE';
/*
* Vue montrant toutes les possibilités
*/
CREATE OR REPLACE VIEW v_menu_description AS
WITH t_menu AS (
SELECT mr.me_menu, pm.me_code, pm.me_code_dep, pm.p_type_display, pu.user_name, mr.me_file, mr.me_javascript, mr.me_description, mr.me_description_etendue
FROM profile_menu pm
JOIN profile_user pu ON pu.p_id = pm.p_id
JOIN profile p ON p.p_id = pm.p_id
JOIN menu_ref mr USING (me_code)
)
SELECT DISTINCT (COALESCE(v3.me_code || '/'::text, ''::text) || COALESCE(v2.me_code, ''::text)) ||
CASE
WHEN v2.me_code IS NULL THEN COALESCE(v1.me_code, ''::text)
WHEN v2.me_code IS NOT NULL THEN COALESCE('/'::text || v1.me_code, ''::text)
ELSE NULL::text
END AS code, v1.me_code, v1.me_description, v1.me_description_etendue, v1.me_file, v1.user_name, '> '::text || v1.me_menu AS v1menu,
CASE
WHEN COALESCE(v3.me_menu, ''::text) <> ''::text THEN ' > '::text || v2.me_menu
ELSE v2.me_menu
END AS v2menu, v3.me_menu AS v3menu, v3.p_type_display,
coalesce(v1.me_javascript,coalesce(v2.me_javascript,v3.me_javascript)) as javascript
FROM t_menu v1
LEFT JOIN t_menu v2 ON v1.me_code_dep = v2.me_code
LEFT JOIN t_menu v3 ON v2.me_code_dep = v3.me_code
WHERE v1.p_type_display <> 'P'::text AND (COALESCE(v1.me_file, ''::text) <> ''::text OR COALESCE(v1.me_javascript, ''::text) <> ''::text);
COMMENT ON VIEW v_menu_description
IS 'Description des menus';
CREATE TABLE bookmark
(
b_id serial primary key,
b_order integer default 1,
b_action text,
login text
);
comment on table bookmark is 'Bookmark of the connected user';
create table tags (
t_id serial primary key,
t_tag text not null,
t_description text
);
create table action_tags
(
at_id serial primary key,
t_id integer references tags(t_id) on delete cascade on update cascade,
ag_id integer references action_gestion(ag_id) on delete cascade on update cascade
);
/* Config tag */
insert into menu_ref(me_code,me_menu,me_file, me_url,me_description,me_parameter,me_javascript,me_type,me_description_etendue)
values
('CFGTAG','Configuration dossier','cfgtags.inc.php',null,'Configuration des dossiers',null,null,'ME','Configuration des tags ou dossiers, on l''appele tag ou dossier suivant la façon dont vous utilisez
cette fonctionnalité. Vous pouvez en ajouter, en supprimer ou les modifier');
insert into profile_menu (me_code,me_code_dep,p_id,p_order, p_type_display,pm_default)
values
('CFGTAG','PARAM',1,390,'E',0);