-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPLSQL
More file actions
19382 lines (17466 loc) · 785 KB
/
PLSQL
File metadata and controls
19382 lines (17466 loc) · 785 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
CREATE OR REPLACE PROCEDURE AFF_MESS
(
p_typ IN varchar2,
p_num IN NUMBER,
p_prog IN varchar2,
p_chaine1 varchar2 := NULL,
p_chaine2 varchar2 := NULL,
p_chaine3 varchar2 := NULL
) IS
---------------------------------------------------------------------------------------
-- Nom : AFF_MESS
-- Date creation : --/--/2000
-- Creee par : - (SEMA GROUP)
-- Role : Extraction, formatage et affichage d'un message d'erreur
-- Parametres :
-- p_typ - Type du message d'erreur a afficher
-- p_num - Numero du message
-- p_prog - Nom du programme appelant
-- p_chaine1 - Premier parametre eventuel (parametre optionnel)
-- p_chaine2 - Second parametre eventuel (parametre optionnel)
-- p_chaine3 - Troisieme parametre eventuel (parametre optionnel)
--
-- Valeurs retournees
-- - Message formate (brut) affichable a l'utilisateur (sans information
-- sur le type ou la gravité du message ni la date de l'evenement generateur
-- Version : 2.1-1.1
-- Historique : @(#) v1.0 : --/--/2000 : Creation
-- Historique : @(#) v1.1 : 28/08/2001 : SNE - Simplification du code
---------------------------------------------------------------------------------------
/* def variables standards */
s_nomsql varchar2(40) ;
/* def variables locales */
v_sysdate VARCHAR2(30);
v_libl sr_mess_err.libl%TYPE;
v_cod_typ_err sr_mess_err.cod_typ_err%TYPE;
pos1 number;
pos2 number;
pos3 number;
taille number;
BEGIN
/* recuperation de la date du traitement */
IF p_typ IN ('I','E','F')
THEN
s_nomsql := 'SR_MESS_ERR';
/* affichage du message */
dbms_output.put_line('#'||p_typ||'#'||p_prog||EXT_MESS(p_num, p_chaine1, p_chaine2, p_chaine3));
ELSE
dbms_output.put_line('#E#'||p_prog||'('||v_sysdate||') : Le type doit être ''E'', ''F'' ou ''I''');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_libl := 'Message numéro '||p_num||' non trouve';
dbms_output.put_line('#E#'||p_prog||'('||v_sysdate||') : '||v_libl);
WHEN OTHERS THEN
dbms_output.put_line('exception ordre SQL : '||s_nomsql);
dbms_output.put_line('exception code : '||sqlcode);
dbms_output.put_line('exception mess : '||sqlerrm);
END AFF_MESS;
/
CREATE OR REPLACE PROCEDURE AFF_TRACE(p_nom_programme IN VARCHAR2
, p_niveau_trace IN NUMBER := 3
, p_num_mess in number := NULL
, p_param1 in varchar2 := null
, p_param2 in varchar2 := null
, p_param3 in varchar2 := null
, p_fichier_trace IN VARCHAR2 := GLOBAL.fichier_trace
, p_type_trace IN VARCHAR2 := 'I'
) IS
/*
---------------------------------------------------------------------------------------
-- Nom : AFF_TRACE
-- ---------------------------------------------------------------------------
-- Auteur : SNE
-- Date creation : 20/04/2001
-- ---------------------------------------------------------------------------
-- Role : Sortie de trace a partir de la procédure en cours
--
-- Parametres :
-- 1 - p_fichier_trace - Nom du fichier de trace
-- 2 - p_niveau_trace - niveau de trace en cours d'affichage
-- 3 - p_type_trace - type de trace (E : erreur, I = Information, A = Avertissement)
-- 4 - p_num_mess - Numero du message d'erreur a affichier
-- 5 - p_chaine1 - Premier parametre eventuel (parametre optionnel)
-- 6 - p_chaine2 - Second parametre eventuel
-- 7 - p_chaine3 - Troisieme parametre eventuel
--
-- Remarques importantes:
-- Si le numero du message d'erreur n'est pas fourni alors le premier parametre doit correspondre
-- a un message sous la forma de texte libre a afficher. On peut ainsi constituer les fichier de
-- debogage de l'application
--
-- Valeurs retournees
-- - Message formate affichable a l'utilisateur
-- - Si le message commence par la balise '#E#' alors une erreur est survenue
-- Appels : PIAF_ecrit_fichier (librairie externe PIAF_system)
-- ---------------------------------------------------------------------------
-- Version : @(#) AFF_TRACE.sql version 3.0-1.2
-- ---------------------------------------------------------------------------
--
-- --------------------------------------------------------------------
-- Fonction |Date |Initiales |Commentaires
-- --------------------------------------------------------------------
-- @(#) AFF_TRACE.sql 2.1-1.0 |21/04/2001 | SNE | Création
-- @(#) AFF_TRACE.sql 3.0-1.1 |16/04/2002 | SNE | Bug/taille de la zone de formattage du texte à afficher
-- @(#) AFF_TRACE.sql 3.0-1.2 |27/08/2002 | SNE | Suppression de l'affichage systématique a l'écran (cf. code)
---------------------------------------------------------------------------------------
*/
v_libl_mess varchar2(1000);
v_ret number;
v_exc_err_appel exception;
v_niveau_trace_global number := NVL(GLOBAL.niveau_trace, 0);
BEGIN
IF (p_num_mess IS NOT NULL OR p_param1 IS NOT NULL) THEN
IF p_num_mess IS NOT NULL THEN
v_libl_mess := SUBSTR(p_nom_programme ||' : '||EXT_MESS(p_num_mess, p_param1 , p_param2 , p_param3), 1, 1000);
ELSE
v_libl_mess := SUBSTR(p_nom_programme ||' : '||'(' || to_char(sysdate, Get_DateTime_Format) ||') : ' || p_param1, 1, 1000);
END IF;
/*
-- SNE, 27/08/2002 : Suppression de l'affichage systématique a l'écran par ajout d'un "else"
-- Cela evite de surcharger le buffer de dbms_output surtout sir la trace se trouve dans un fichier
*/
IF v_niveau_trace_global >= p_niveau_trace THEN
IF p_fichier_trace IS NOT NULL THEN
v_ret := PIAF_ecrit_fichier(v_libl_mess, p_fichier_trace, 'at+', 'F', p_type_trace);
ELSE
dbms_output.put_line('#'||p_type_trace || '# ' || v_libl_mess);
END IF;
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
/
CREATE OR REPLACE PROCEDURE ASTER_DDL(p_ordre IN VARCHAR2) IS
/*
---------------------------------------------------------------------------------------
-- Nom : ASTER_DDL
-- ---------------------------------------------------------------------------
-- Auteur : SNE
-- Date creation : 10/08/2001
-- ---------------------------------------------------------------------------
-- Role : Execute des ordres de type DDL (ou autre) dans un bloc PL/SQL
--
-- Parametres :
-- 1 - p_ordre : Ordre SQL à exécuter
--
-- Valeur retournee : Aucun
--
-- Appels : PACKAGE DBMS_SQL
-- ---------------------------------------------------------------------------
-- Version : @(#) ASTER_DDL.sql version 2.1-1.0 : SNE : 10/08/2001
-- ---------------------------------------------------------------------------
--
-- --------------------------------------------------------------------
-- Fonction |Date |Initiales |Commentaires
-- --------------------------------------------------------------------
-- @(#) ASTER_DDL.sql 2.1-1.0 |10/08/2001 | SNE | Création
-- @(#) ASTER_DDL.sql 2.1-1.1 |13/09/2001 | SNE | Correction ano./normes
---------------------------------------------------------------------------------------
*/
v_curseur INTEGER;
v_ret INTEGER;
BEGIN
v_curseur := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(v_curseur, p_ordre, DBMS_SQL.native);
v_ret := DBMS_SQL.EXECUTE(v_curseur);
DBMS_SQL.CLOSE_CURSOR(v_curseur);
END;
/
CREATE OR REPLACE PROCEDURE Build_Select(
p_mt IN PE_PAR_CGE.ide_champ%TYPE, p_flg_where OUT BOOLEAN,
v_mt_cad_car_mtdeg IN VARCHAR2, --ISA modif du 16/10/2006
v_mt_cad_car_mtdhb IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtdsb IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtehb IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mteng IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtesb IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mthbo IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtmvt IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtoah IN VARCHAR2, --ISA modif du 16/10/2006
v_mt_cad_car_mtoas IN VARCHAR2, --ISA modif du 16/10/2006
v_mt_cad_car_mtod IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtoda IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtohb IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtor IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtora IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtorh IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtors IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtosb IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtrct IN VARCHAR2, --ISA modif du 16/10/2006
v_mt_cad_car_mtsbo IN VARCHAR2, --ISA modif du 16/10/2006
v_mt_cge_mt IN VARCHAR2, --ISA modif du 16/10/2006
v_mt_cge_mtdbc IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cge_mtecr IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cge_mtedb IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cge_mtscr IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cge_mtsdb IN VARCHAR2,--ISA modif du 16/10/2006
v_mt_cad_car_mtror IN VARCHAR2,--ISA modif du 16/10/2006
v_type_mvt_c IN VARCHAR2,--ISA modif du 16/10/2006
v_type_mvt_i IN VARCHAR2,--ISA modif du 16/10/2006
v_type_mvt_d IN VARCHAR2,--ISA modif du 16/10/2006
v_type_piece_or IN VARCHAR2,--ISA modif du 16/10/2006
v_type_piece_ar IN VARCHAR2,--ISA modif du 16/10/2006
v_type_piece_od IN VARCHAR2,--ISA modif du 16/10/2006
v_type_piece_ad IN VARCHAR2,--ISA modif du 16/10/2006
v_oui_non_oui IN VARCHAR2,--ISA modif du 16/10/2006
v_sens_c IN VARCHAR2,--ISA modif du 16/10/2006
v_sens_d IN VARCHAR2,--ISA modif du 16/10/2006
v_oui_non_non IN VARCHAR2,--ISA modif du 16/10/2006
v_statut_piece_v IN VARCHAR2,--ISA modif du 16/10/2006
v_statut_mess_tr IN VARCHAR2,--ISA modif du 16/10/2006
v_flg_replace OUT BOOLEAN,--ISA modif du 16/10/2006
v_clause_select OUT VARCHAR2,--ISA modif du 16/10/2006
v_clause_from OUT VARCHAR2,--ISA modif du 16/10/2006
v_clause_joint OUT VARCHAR2--ISA modif du 16/10/2006
)
IS
BEGIN
p_flg_where := TRUE;
IF p_mt = v_mt_cad_car_mtdeg THEN
v_clause_select := 'SUM(t1.mt)';
v_clause_from := 'FROM fb_ligne_eng t1, fb_eng t2';
v_clause_joint := 'WHERE t1.ide_poste = t2.ide_poste'
|| ' AND t1.ide_gest = t2.ide_gest AND t1.ide_ordo = t2.ide_ordo'
|| ' AND t1.cod_bud = t2.cod_bud AND t1.ide_eng = t2.ide_eng'
--LSA-20061010-D
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || ''''
--LSA-20061010-F
|| ' AND t2.cod_typ_mvt = ''' || v_type_mvt_d || '''';
ELSIF p_mt = v_mt_cad_car_mtdhb THEN
v_clause_select := 'SUM(t1.mt - t1.mt_bud)';
v_clause_from := 'FROM fb_ligne_eng t1, fb_eng t2';
v_clause_joint := 'WHERE t1.ide_poste = t2.ide_poste'
|| ' AND t1.ide_gest = t2.ide_gest AND t1.ide_ordo = t2.ide_ordo'
|| ' AND t1.cod_bud = t2.cod_bud AND t1.ide_eng = t2.ide_eng'
--LSA-20061010-D
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || ''''
--LSA-20061010-F
|| ' AND t2.cod_typ_mvt = ''' || v_type_mvt_d || '''';
ELSIF p_mt = v_mt_cad_car_mtdsb THEN
v_clause_select := 'SUM(t1.mt_bud)';
v_clause_from := 'FROM fb_ligne_eng t1, fb_eng t2';
v_clause_joint := 'WHERE t1.ide_poste = t2.ide_poste'
|| ' AND t1.ide_gest = t2.ide_gest AND t1.ide_ordo = t2.ide_ordo'
|| ' AND t1.cod_bud = t2.cod_bud AND t1.ide_eng = t2.ide_eng'
--LSA-20061010-D
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || ''''
--LSA-20061010-F
|| ' AND t2.cod_typ_mvt = ''' || v_type_mvt_d || '''';
ELSIF p_mt = v_mt_cad_car_mtehb THEN
v_clause_select := 'SUM(t1.mt - t1.mt_bud)';
v_clause_from := 'FROM fb_ligne_eng t1, fb_eng t2';
v_clause_joint := 'WHERE t1.ide_poste = t2.ide_poste'
|| ' AND t1.ide_gest = t2.ide_gest AND t1.ide_ordo = t2.ide_ordo'
|| ' AND t1.cod_bud = t2.cod_bud AND t1.ide_eng = t2.ide_eng'
--LSA-20061010-D
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || ''''
--LSA-20061010-F
|| ' AND t2.cod_typ_mvt IN (''' || v_type_mvt_i || ''', ''' || v_type_mvt_c || ''')';
ELSIF p_mt = v_mt_cad_car_mteng THEN
v_clause_select := 'SUM(t1.mt)';
v_clause_from := 'FROM fb_ligne_eng t1, fb_eng t2';
v_clause_joint := 'WHERE t1.ide_poste = t2.ide_poste'
|| ' AND t1.ide_gest = t2.ide_gest AND t1.ide_ordo = t2.ide_ordo'
|| ' AND t1.cod_bud = t2.cod_bud AND t1.ide_eng = t2.ide_eng'
--LSA-20061010-D
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || ''''
--LSA-20061010-F
|| ' AND t2.cod_typ_mvt IN (''' || v_type_mvt_i || ''', ''' || v_type_mvt_c || ''')';
ELSIF p_mt = v_mt_cad_car_mtesb THEN
v_clause_select := 'SUM(t1.mt_bud)';
v_clause_from := 'FROM fb_ligne_eng t1, fb_eng t2';
v_clause_joint := 'WHERE t1.ide_poste = t2.ide_poste'
|| ' AND t1.ide_gest = t2.ide_gest AND t1.ide_ordo = t2.ide_ordo'
|| ' AND t1.cod_bud = t2.cod_bud AND t1.ide_eng = t2.ide_eng'
--LSA-20061010-D
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || ''''
--LSA-20061010-F
|| ' AND t2.cod_typ_mvt IN (''' || v_type_mvt_i || ''', ''' || v_type_mvt_c || ''')';
ELSIF p_mt = v_mt_cad_car_mthbo THEN
v_clause_select := 'SUM(t1.mt - t1.mt_bud)';
--LSA-20061010-D
-- v_clause_from := 'FROM fb_ligne_piece t1';
-- v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_od || '''';
v_clause_from := 'FROM fb_ligne_piece t1, fb_piece t2';
v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_od || ''''
|| ' AND t1.ide_poste = t2.ide_poste AND t1.ide_gest = t2.ide_gest'
|| ' AND t1.ide_ordo = t2.ide_ordo AND t1.cod_bud = t2.cod_bud'
|| ' AND t1.ide_piece = t2.ide_piece AND t1.cod_typ_piece = t2.cod_typ_piece'
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cad_car_mtmvt THEN
v_clause_select := 'SUM(t1.mt)';
--LSA-20061204-D
-- v_clause_from := 'FROM fb_mvt_bud t1';
-- p_flg_where := FALSE;
v_clause_from := 'FROM fb_mvt_bud t1, fm_rnl_me t2';
v_clause_joint := 'WHERE t1.ide_poste = t2.ide_nd_dest'
|| ' AND t1.cod_typ_nd_emet = t2.cod_typ_nd_emet AND t1.ide_nd_emet = t2.ide_nd_emet'
|| ' AND t1.ide_mess = t2.ide_mess AND t1.flg_emis_recu = t2.flg_emis_recu'
|| ' AND t2.cod_statut = ''' || v_statut_mess_tr || '''';
--LSA-20061204-F
ELSIF p_mt = v_mt_cad_car_mtoah THEN
v_clause_select := 'SUM(t1.mt - t1.mt_bud)';
--LSA-20061010-D
-- v_clause_from := 'FROM fb_ligne_piece t1';
-- v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_ad || '''';
v_clause_from := 'FROM fb_ligne_piece t1, fb_piece t2';
v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_ad || ''''
|| ' AND t1.ide_poste = t2.ide_poste AND t1.ide_gest = t2.ide_gest'
|| ' AND t1.ide_ordo = t2.ide_ordo AND t1.cod_bud = t2.cod_bud'
|| ' AND t1.ide_piece = t2.ide_piece AND t1.cod_typ_piece = t2.cod_typ_piece'
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cad_car_mtoas THEN
v_clause_select := 'SUM(t1.mt_bud)';
--LSA-20061010-D
-- v_clause_from := 'FROM fb_ligne_piece t1';
-- v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_ad || '''';
v_clause_from := 'FROM fb_ligne_piece t1, fb_piece t2';
v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_ad || ''''
|| ' AND t1.ide_poste = t2.ide_poste AND t1.ide_gest = t2.ide_gest'
|| ' AND t1.ide_ordo = t2.ide_ordo AND t1.cod_bud = t2.cod_bud'
|| ' AND t1.ide_piece = t2.ide_piece AND t1.cod_typ_piece = t2.cod_typ_piece'
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cad_car_mtod THEN
v_clause_select := 'SUM(t1.mt)';
--LSA-20061010-D
-- v_clause_from := 'FROM fb_ligne_piece t1';
-- v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_od || '''';
v_clause_from := 'FROM fb_ligne_piece t1, fb_piece t2';
v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_od || ''''
|| ' AND t1.ide_poste = t2.ide_poste AND t1.ide_gest = t2.ide_gest'
|| ' AND t1.ide_ordo = t2.ide_ordo AND t1.cod_bud = t2.cod_bud'
|| ' AND t1.ide_piece = t2.ide_piece AND t1.cod_typ_piece = t2.cod_typ_piece'
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cad_car_mtoda THEN
v_clause_select := 'SUM(t1.mt)';
--LSA-20061010-D
-- v_clause_from := 'FROM fb_ligne_piece t1';
-- v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_ad || '''';
v_clause_from := 'FROM fb_ligne_piece t1, fb_piece t2';
v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_ad || ''''
|| ' AND t1.ide_poste = t2.ide_poste AND t1.ide_gest = t2.ide_gest'
|| ' AND t1.ide_ordo = t2.ide_ordo AND t1.cod_bud = t2.cod_bud'
|| ' AND t1.ide_piece = t2.ide_piece AND t1.cod_typ_piece = t2.cod_typ_piece'
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cad_car_mtohb THEN
v_clause_select := 'SUM(t1.mt - t1.mt_bud)';
--LSA-20061010-D
-- v_clause_from := 'FROM fb_ligne_piece t1';
-- v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_ar || '''';
v_clause_from := 'FROM fb_ligne_piece t1, fb_piece t2';
v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_ar || ''''
|| ' AND t1.ide_poste = t2.ide_poste AND t1.ide_gest = t2.ide_gest'
|| ' AND t1.ide_ordo = t2.ide_ordo AND t1.cod_bud = t2.cod_bud'
|| ' AND t1.ide_piece = t2.ide_piece AND t1.cod_typ_piece = t2.cod_typ_piece'
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cad_car_mtor THEN
v_clause_select := 'SUM(t1.mt)';
--LSA-20061010-D
-- v_clause_from := 'FROM fb_ligne_piece t1';
-- v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_or || '''';
v_clause_from := 'FROM fb_ligne_piece t1, fb_piece t2';
v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_or || ''''
|| ' AND t1.ide_poste = t2.ide_poste AND t1.ide_gest = t2.ide_gest'
|| ' AND t1.ide_ordo = t2.ide_ordo AND t1.cod_bud = t2.cod_bud'
|| ' AND t1.ide_piece = t2.ide_piece AND t1.cod_typ_piece = t2.cod_typ_piece'
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cad_car_mtora THEN
v_clause_select := 'SUM(t1.mt)';
--LSA-20061010-D
-- v_clause_from := 'FROM fb_ligne_piece t1';
-- v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_ar || '''';
v_clause_from := 'FROM fb_ligne_piece t1, fb_piece t2';
v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_ar || ''''
|| ' AND t1.ide_poste = t2.ide_poste AND t1.ide_gest = t2.ide_gest'
|| ' AND t1.ide_ordo = t2.ide_ordo AND t1.cod_bud = t2.cod_bud'
|| ' AND t1.ide_piece = t2.ide_piece AND t1.cod_typ_piece = t2.cod_typ_piece'
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cad_car_mtorh THEN
v_clause_select := 'SUM(t1.mt - t1.mt_bud)';
--LSA-20061010-D
-- v_clause_from := 'FROM fb_ligne_piece t1';
-- v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_or || '''';
v_clause_from := 'FROM fb_ligne_piece t1, fb_piece t2';
v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_or || ''''
|| ' AND t1.ide_poste = t2.ide_poste AND t1.ide_gest = t2.ide_gest'
|| ' AND t1.ide_ordo = t2.ide_ordo AND t1.cod_bud = t2.cod_bud'
|| ' AND t1.ide_piece = t2.ide_piece AND t1.cod_typ_piece = t2.cod_typ_piece'
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cad_car_mtors THEN
v_clause_select := 'SUM(t1.mt)';
--LSA-20061010-D
-- v_clause_from := 'FROM fb_ligne_piece t1';
-- v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_or || '''';
v_clause_from := 'FROM fb_ligne_piece t1, fb_piece t2';
v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_or || ''''
|| ' AND t1.ide_poste = t2.ide_poste AND t1.ide_gest = t2.ide_gest'
|| ' AND t1.ide_ordo = t2.ide_ordo AND t1.cod_bud = t2.cod_bud'
|| ' AND t1.ide_piece = t2.ide_piece AND t1.cod_typ_piece = t2.cod_typ_piece'
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cad_car_mtosb THEN
v_clause_select := 'SUM(t1.mt_bud)';
--LSA-20061010-D
-- v_clause_from := 'FROM fb_ligne_piece t1';
-- v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_ar || '''';
v_clause_from := 'FROM fb_ligne_piece t1, fb_piece t2';
v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_ar || ''''
|| ' AND t1.ide_poste = t2.ide_poste AND t1.ide_gest = t2.ide_gest'
|| ' AND t1.ide_ordo = t2.ide_ordo AND t1.cod_bud = t2.cod_bud'
|| ' AND t1.ide_piece = t2.ide_piece AND t1.cod_typ_piece = t2.cod_typ_piece'
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cad_car_mtrct THEN
v_clause_select := 'SUM(t1.mt_encaiss)';
v_clause_from := 'FROM fb_encaissement t1';
v_clause_joint := 'WHERE t1.flg_rec_comptant = ''' || v_oui_non_oui || '''';
ELSIF p_mt = v_mt_cad_car_mtror THEN
v_clause_select := 'SUM(t1.mt_encaiss)';
v_clause_from := 'FROM fb_encaissement t1';
v_clause_joint := 'WHERE t1.flg_rec_comptant = ''' || v_oui_non_non || '''';
ELSIF p_mt = v_mt_cad_car_mtsbo THEN
v_clause_select := 'SUM(t1.mt_bud)';
--LSA-20061010-D
-- v_clause_from := 'FROM fb_ligne_piece t1';
-- v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_od || '''';
v_clause_from := 'FROM fb_ligne_piece t1, fb_piece t2';
v_clause_joint := 'WHERE t1.cod_typ_piece = ''' || v_type_piece_od || ''''
|| ' AND t1.ide_poste = t2.ide_poste AND t1.ide_gest = t2.ide_gest'
|| ' AND t1.ide_ordo = t2.ide_ordo AND t1.cod_bud = t2.cod_bud'
|| ' AND t1.ide_piece = t2.ide_piece AND t1.cod_typ_piece = t2.cod_typ_piece'
|| ' AND t2.cod_statut = ''' || v_statut_piece_v || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cge_mt THEN
v_clause_select := 'SUM(t1.mt)';
v_clause_from := 'FROM fc_ligne t1';
--LSA-20061010-D
-- p_flg_where := FALSE;
v_clause_joint := 'WHERE t1.flg_cptab = ''' || v_oui_non_oui || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cge_mtdbc THEN
v_clause_select := 'SUM(t1.mt)';
v_clause_from := 'FROM fc_ligne t1';
--LSA-20061010-D
-- v_clause_joint := 'WHERE t1.cod_sens = ''@TO_REPLACE@''';
v_clause_joint := 'WHERE t1.cod_sens = ''@TO_REPLACE@'''
|| ' AND t1.flg_cptab = ''' || v_oui_non_oui || '''';
--LSA-20061010-F
v_flg_replace := TRUE;
ELSIF p_mt = v_mt_cge_mtecr THEN
v_clause_select := 'SUM(t1.mt)';
v_clause_from := 'FROM fc_ligne t1';
--LSA-20061010-D
-- v_clause_joint := 'WHERE t1.cod_sens = ''' || v_sens_c || '''';
v_clause_joint := 'WHERE t1.cod_sens = ''' || v_sens_c || ''''
|| ' AND t1.flg_cptab = ''' || v_oui_non_oui || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cge_mtedb THEN
v_clause_select := 'SUM(t1.mt)';
v_clause_from := 'FROM fc_ligne t1';
--LSA-20061010-D
-- v_clause_joint := 'WHERE t1.cod_sens = ''' || v_sens_d || '''';
v_clause_joint := 'WHERE t1.cod_sens = ''' || v_sens_d || ''''
|| ' AND t1.flg_cptab = ''' || v_oui_non_oui || '''';
--LSA-20061010-F
ELSIF p_mt = v_mt_cge_mtscr THEN
v_clause_select := 'SUM(t1.mt)';
v_clause_from := 'FROM fc_ligne t1';
--LSA-20061010-D
-- v_clause_joint := 'WHERE t1.cod_sens = ''@TO_REPLACE@''';
v_clause_joint := 'WHERE t1.cod_sens = ''@TO_REPLACE@'''
|| ' AND t1.flg_cptab = ''' || v_oui_non_oui || '''';
--LSA-20061010-F
v_flg_replace := TRUE;
ELSIF p_mt = v_mt_cge_mtsdb THEN
v_clause_select := 'SUM(t1.mt)';
v_clause_from := 'FROM fc_ligne t1';
--LSA-20061010-D
-- v_clause_joint := 'WHERE t1.cod_sens = ''@TO_REPLACE@''';
v_clause_joint := 'WHERE t1.cod_sens = ''@TO_REPLACE@'''
|| ' AND t1.flg_cptab = ''' || v_oui_non_oui || '''';
--LSA-20061010-F
v_flg_replace := TRUE;
END IF;
-- MODIF SGN FCT38 ajout d une trace de debug
--trace('Dans Build select : select:'||v_clause_select||' from:'||v_clause_from||' joint:'||v_clause_joint);
-- Fin modif sgn
EXCEPTION
WHEN OTHERS THEN
RAISE;
END Build_Select;
/
CREATE OR REPLACE PROCEDURE CAL_Autpro ( p_ide_poste IN rm_poste.ide_poste%TYPE,
p_ide_ordo IN rb_ordo.ide_ordo%TYPE,
p_cod_bud IN fb_autpro.cod_bud%TYPE,
p_ide_lig_prev IN fb_autpro.ide_lig_prev%TYPE,
p_ouv_ap OUT fb_autpro.mt%TYPE,
p_deleg_e OUT fb_autpro.mt%TYPE,
p_dispo_ap OUT fb_autpro.mt%TYPE,
p_reserv OUT fb_autpro.mt%TYPE,
p_dispo_res OUT fb_autpro.mt%TYPE,
p_retour OUT NUMBER ) IS
/* Paramètres en entrée : */
/* p_ide_poste : poste comptable */
/* p_ide_ordo : ordonnateur */
/* p_cod_bud : code budget */
/* p_ide_lig_prev : ligne budgétaire de prévision */
/* Paramètres en sortie : */
/* p_ouv_ap : montant des AP ouvertes */
/* p_deleg_e : montant des délégations émises */
/* p_dispo_ap : montant des AP disponibles */
/* p_reserv : montant des AP reservees */
/* p_eng : montant des engagements */
/* p_dispo_res : montant disponible pour reserver */
/* p_retour : code retour de la procédure : 1 si OK */
/* 0 si pas trouve */
/* -1 si KO */
/* Declaration et initialisation des variables de sortie */
v_ouv_ap fb_autpro.mt%TYPE := 0 ;
v_deleg_e fb_autpro.mt%TYPE := 0;
v_dispo_ap fb_autpro.mt%TYPE := 0;
v_reserv fb_autpro.mt%TYPE := 0;
v_dispo_res fb_autpro.mt%TYPE := 0;
/* Declaration du curseur de parcours de la table fb_autpro */
CURSOR c_autpro IS
SELECT a.cod_mt, a.mt
FROM fb_autpro A
WHERE
A.ide_poste = p_ide_poste
AND A.ide_ordo = p_ide_ordo
AND A.cod_bud = p_cod_bud
AND A.ide_lig_prev = p_ide_lig_prev;
BEGIN
p_retour := 0;
FOR v_autpro IN c_autpro LOOP
/* Le curseur a ramene au moins un enregistrement */
p_retour := 1;
IF v_autpro.cod_mt = 'OUVER' OR v_autpro.cod_mt = 'VIRAPR' OR v_autpro.cod_mt = 'DEREC' THEN
v_ouv_ap := v_ouv_ap + v_autpro.mt;
v_dispo_ap := v_dispo_ap + v_autpro.mt;
v_dispo_res := v_dispo_res + v_autpro.mt;
ELSIF v_autpro.cod_mt = 'VIRAPE' THEN
v_ouv_ap := v_ouv_ap - v_autpro.mt;
v_dispo_ap := v_dispo_ap - v_autpro.mt;
v_dispo_res := v_dispo_res - v_autpro.mt;
ELSIF v_autpro.cod_mt = 'DEEMI' THEN
v_deleg_e := v_deleg_e + v_autpro.mt;
v_dispo_ap := v_dispo_ap - v_autpro.mt;
v_dispo_res := v_dispo_res - v_autpro.mt;
ELSIF v_autpro.cod_mt = 'RESERE' THEN
v_reserv := v_reserv + v_autpro.mt;
v_dispo_res := v_dispo_res - v_autpro.mt;
ELSE
Null;
END IF;
END LOOP;
/* Affectation des paramètres de sortie */
p_ouv_ap := v_ouv_ap;
p_dispo_ap := v_dispo_ap;
p_dispo_res := v_dispo_res;
p_deleg_e := v_deleg_e;
p_reserv := v_reserv ;
EXCEPTION
WHEN OTHERS THEN
/* en cas d'erreur les montants retournés sont tous égaux à zéro */
p_ouv_ap := 0;
p_dispo_ap := 0;
p_dispo_res := 0;
p_deleg_e := 0;
p_reserv := 0;
p_retour := -1;
END CAL_Autpro;
/
CREATE OR REPLACE PROCEDURE CAL_Credi (
p_ide_poste IN rm_poste.ide_poste%TYPE,
p_ide_ordo IN rb_ordo.ide_ordo%TYPE,
p_cod_bud IN fb_crepa.cod_bud%TYPE,
p_var_bud IN fb_crepa.var_bud%TYPE,
p_ide_lig_prev IN fb_crepa.ide_lig_prev%TYPE,
p_ide_gest IN fb_crepa.ide_gest%TYPE,
p_ouv_cr OUT fb_credi.mt%TYPE,
p_autor_cr OUT fb_credi.mt%TYPE,
p_deleg_e OUT fb_credi.mt%TYPE,
p_dispo_cr OUT fb_credi.mt%TYPE,
p_eng OUT fb_credi.mt%TYPE,
p_sdeleg_eng OUT fb_credi.mt%TYPE,
p_deleg_eng OUT fb_credi.mt%TYPE,
p_dispo_eng OUT fb_credi.mt%TYPE,
p_ordo OUT fb_credi.mt%TYPE,
p_dso OUT fb_credi.mt%TYPE,
p_dispo_ordo OUT fb_credi.mt%TYPE,
p_tx_autor OUT fn_ligne_bud_prev.tx_autor%TYPE,
p_deleng_r OUT fb_credi.mt%TYPE,
p_retour OUT NUMBER ) IS
/* Paramètres en entrée : */
/* p_ide_poste : poste comptable */
/* p_ide_ordo : ordonnateur */
/* p_cod_bud : code budget */
/* p_var_bud : variation budgetaire */
/* p_ide_lig_prev : ligne budgétaire de prévision */
/* p_ide_gest : gestion */
/* Paramètres en sortie : */
/* p_ouv_cr : montant des ouvertures de credit */
/* p_autor_cr : montant des credits autorisés */
/* p_deleg_e : montant des délégations émises */
/* p_dispo_cr : montant des credits disponibles */
/* p_eng : montant des engagements */
/* p_sdeleg_eng : montant des engagements sur delegation */
/* p_deleg_eng : montant des engagements delegues */
/* p_dispo_eng : montant disponible pour engager */
/* p_ordo : montant des ordonnances */
/* p_dso : montant DSO */
/* p_dispo_ordo : montant disponible pour ordonnancer */
/* p_tx_autor : taux d'autorisation */
/* p_deleng_r : montant des délégations de crédits engagés recus*/
/* p_retour : code retour de la procédure : 1 si OK */
/* 0 si pas trouve */
/* -1 si KO */
/* Déclaration des variables locales */
v_tx_autor NUMBER(7,4);
err_tx_autor EXCEPTION;
/* Declaration et initialisation des variables de sortie */
v_ouv_cr fb_credi.mt%TYPE := 0;
v_autor_cr fb_credi.mt%TYPE := 0;
v_deleg_e fb_credi.mt%TYPE := 0;
v_dispo_cr fb_credi.mt%TYPE := 0;
v_eng fb_credi.mt%TYPE := 0;
v_sdeleg_eng fb_credi.mt%TYPE := 0;
v_deleg_eng fb_credi.mt%TYPE := 0;
v_dispo_eng fb_credi.mt%TYPE := 0;
v_ordo fb_credi.mt%TYPE := 0;
v_dso fb_credi.mt%TYPE := 0;
v_dispo_ordo fb_credi.mt%TYPE := 0;
v_deleng_r fb_credi.mt%TYPE := 0;
/* Declaration du curseur de parcours de la table fb_credi */
CURSOR c_credi IS
SELECT A.cod_mt, A.mt, A.cod_ss_code
FROM fb_credi A
WHERE
A.ide_poste = p_ide_poste
AND A.ide_ordo = p_ide_ordo
AND A.cod_bud = p_cod_bud
AND A.ide_lig_prev = p_ide_lig_prev
AND A.ide_gest = p_ide_gest;
BEGIN
p_retour := 0;
/* Recherche du taux d'autorisation dans la table fn_ligne_bud_prev */
BEGIN
SELECT (B.tx_autor/100) INTO v_tx_autor
FROM fn_ligne_bud_prev B
WHERE
B.var_bud = p_var_bud
AND B.ide_lig_prev = p_ide_lig_prev;
IF v_tx_autor IS NULL THEN
/* si le taux d'autorisation n'est pas renseigné on interrompt le traitement */
RAISE err_tx_autor;
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE err_tx_autor;
END;
FOR v_credi IN c_credi LOOP
/* Le curseur a ramene au moins un enregistrement */
p_retour := 1;
IF v_credi.cod_mt = 'DOTAT' OR v_credi.cod_mt = 'VIRCRR' THEN
v_ouv_cr := v_ouv_cr + v_credi.mt;
v_autor_cr := v_autor_cr + ( v_credi.mt * v_tx_autor );
v_dispo_cr := v_dispo_cr + ( v_credi.mt * v_tx_autor );
v_dispo_eng := v_dispo_eng + ( v_credi.mt * v_tx_autor );
ELSIF v_credi.cod_mt = 'DEREC' THEN
v_ouv_cr := v_ouv_cr + v_credi.mt;
v_autor_cr := v_autor_cr + v_credi.mt;
v_dispo_cr := v_dispo_cr + v_credi.mt;
v_dispo_eng := v_dispo_eng + v_credi.mt;
ELSIF v_credi.cod_mt = 'VIRCRE' THEN
v_ouv_cr := v_ouv_cr - v_credi.mt;
v_autor_cr := v_autor_cr - ( v_credi.mt * v_tx_autor );
v_dispo_cr := v_dispo_cr - ( v_credi.mt * v_tx_autor );
v_dispo_eng := v_dispo_eng - ( v_credi.mt * v_tx_autor );
ELSIF v_credi.cod_mt = 'DENGR' THEN
IF v_credi.cod_ss_code = 'E' THEN
v_ouv_cr := v_ouv_cr + v_credi.mt;
v_autor_cr := v_autor_cr + v_credi.mt;
v_dispo_cr := v_dispo_cr + v_credi.mt;
v_dispo_eng := v_dispo_eng + v_credi.mt;
v_deleng_r := v_deleng_r + v_credi.mt;
END IF;
ELSIF v_credi.cod_mt = 'ENGAG' THEN
v_eng := v_eng + v_credi.mt;
v_dispo_eng := v_dispo_eng - v_credi.mt;
v_dispo_ordo := v_dispo_ordo + v_credi.mt;
ELSIF v_credi.cod_mt = 'ENGAD' THEN
v_dispo_eng := v_dispo_eng - v_credi.mt;
v_deleg_eng := v_deleg_eng + v_credi.mt;
ELSIF v_credi.cod_mt = 'ENGASD' THEN
IF v_credi.cod_ss_code = 'E' THEN
v_sdeleg_eng := v_sdeleg_eng + v_credi.mt;
END IF;
v_dispo_eng := v_dispo_eng - v_credi.mt;
v_dispo_ordo := v_dispo_ordo + v_credi.mt;
ELSIF v_credi.cod_mt = 'DEEMI' THEN
v_deleg_e := v_deleg_e + v_credi.mt;
v_dispo_cr := v_dispo_cr - v_credi.mt;
v_dispo_eng := v_dispo_eng - v_credi.mt;
ELSIF v_credi.cod_mt = 'ORDON' THEN
v_ordo := v_ordo + v_credi.mt;
v_dispo_ordo := v_dispo_ordo - v_credi.mt;
ELSIF v_credi.cod_mt = 'DSO' THEN
v_dso := v_dso + v_credi.mt;
v_dispo_ordo := v_dispo_ordo - v_credi.mt;
-- MODIF SGN ANOVA 13,14,36 : ajout des nouveaux codes
ELSIF v_credi.cod_mt = 'RESCRE' THEN
v_dispo_eng := v_dispo_eng + v_credi.mt;
ELSIF v_credi.cod_mt = 'ORDSE' THEN
v_dispo_eng := v_dispo_eng - v_credi.mt;
v_ordo := v_ordo + v_credi.mt;
-- fin modif sgn
ELSE
Null;
END IF;
END LOOP;
/* Affectation des paramètres de sortie */
p_ouv_cr := v_ouv_cr;
p_autor_cr := v_autor_cr;
p_deleg_e := v_deleg_e;
p_dispo_cr := v_dispo_cr;
p_eng := v_eng;
p_sdeleg_eng := v_sdeleg_eng;
p_deleg_eng := v_deleg_eng;
p_dispo_eng := v_dispo_eng;
p_ordo := v_ordo;
p_dso := v_dso;
p_dispo_ordo := v_dispo_ordo;
p_tx_autor := v_tx_autor;
p_deleng_r := v_deleng_r;
EXCEPTION
WHEN err_tx_autor THEN
/* Si le traitement est interrompu en raison d'un problème */
/* lors de la recuperation du taux d'autorisation, les montants */
/* retournés sont tous egaux a zero et le code retour vaut -1 */
p_ouv_cr := 0;
p_autor_cr := 0;
p_deleg_e := 0;
p_dispo_cr := 0;
p_eng := 0;
p_sdeleg_eng := 0;
p_deleg_eng := 0;
p_dispo_eng := 0;
p_ordo := 0;
p_dso := 0;
p_dispo_ordo := 0;
p_tx_autor := 0;
p_deleng_r := 0;
p_retour := -1;
WHEN OTHERS THEN
/* en cas d'erreur les montants retournés sont tous égaux à zéro */
p_ouv_cr := 0;
p_autor_cr := 0;
p_deleg_e := 0;
p_dispo_cr := 0;
p_eng := 0;
p_sdeleg_eng := 0;
p_deleg_eng := 0;
p_dispo_eng := 0;
p_ordo := 0;
p_dso := 0;
p_dispo_ordo := 0;
p_tx_autor := 0;
p_deleng_r := 0;
p_retour := -1;
END CAL_Credi;
/
CREATE OR REPLACE PROCEDURE CAL_Crepa (
p_ide_poste IN rm_poste.ide_poste%TYPE,
p_ide_ordo IN rb_ordo.ide_ordo%TYPE,
p_cod_bud IN fb_crepa.cod_bud%TYPE,
p_var_bud IN fb_crepa.var_bud%TYPE,
p_ide_lig_prev IN fb_crepa.ide_lig_prev%TYPE,
p_ide_gest IN fb_crepa.ide_gest%TYPE,
p_ouv_cp OUT fb_crepa.mt%TYPE,
p_autor_cp OUT fb_crepa.mt%TYPE,
p_deleg_e OUT fb_crepa.mt%TYPE,
p_dispo_cp OUT fb_crepa.mt%TYPE,
p_ordo OUT fb_crepa.mt%TYPE,
p_dispo_ordo OUT fb_crepa.mt%TYPE,
p_tx_autor OUT NUMBER,
p_retour OUT NUMBER ) IS
/* Paramètres en entrée : */
/* p_ide_poste : poste comptable */
/* p_ide_ordo : ordonnateur */
/* p_cod_bud : code budget */
/* p_var_bud : variation budgetaire */
/* p_ide_lig_prev : ligne budgétaire de prévision */
/* p_ide_gest : gestion */
/* Paramètres en sortie : */
/* p_ouv_cp : montant des ouvertures de CP */
/* p_autor_cp : montant des CP autorisés */
/* p_deleg_e : montant des délégations émises */
/* p_dispo_cp : montant des CP disponibles */
/* p_ordo : montant des ordonnances */
/* p_dispo_ordo : montant disponible pour ordonnancer */
/* p_tx_autor : taux d'autorisation */
/* p_retour : code retour de la procédure : 1 si OK */
/* 0 si pas trouve */
/* -1 si KO */
/* @(#) CAL_Crepa.sql 02/01/2001 MMA modifications anomalie 150 */
/* Déclaration des variables locales */
v_tx_autor NUMBER(7,4);
err_tx_autor EXCEPTION;
/* Declaration et initialisation des variables de sortie */
v_ouv_cp fb_crepa.mt%TYPE := 0;
v_autor_cp fb_crepa.mt%TYPE := 0;
v_deleg_e fb_crepa.mt%TYPE := 0;
v_dispo_cp fb_crepa.mt%TYPE := 0;
v_ordo fb_crepa.mt%TYPE := 0;
v_dispo_ordo fb_crepa.mt%TYPE := 0;
/* Declaration du curseur de parcours de la table fb_crepa */
CURSOR c_crepa IS
SELECT A.cod_mt, A.mt
FROM fb_crepa A
WHERE
A.ide_poste = p_ide_poste
AND A.ide_ordo = p_ide_ordo
AND A.cod_bud = p_cod_bud
AND A.ide_lig_prev = p_ide_lig_prev
AND A.ide_gest = p_ide_gest;
BEGIN
p_retour := 0;
/* Recherche du taux d'autorisation dans la table fn_ligne_bud_prev */
BEGIN
SELECT (B.tx_autor/100) INTO v_tx_autor
FROM fn_ligne_bud_prev B
WHERE
B.var_bud = p_var_bud
AND B.ide_lig_prev = p_ide_lig_prev;
IF v_tx_autor IS NULL THEN
/* si le taux d'autorisation n'est pas renseigné on interrompt le traitement */
RAISE err_tx_autor;
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE err_tx_autor;
END;
FOR v_crepa IN c_crepa LOOP
/* Le curseur a ramene au moins un enregistrement */
p_retour := 1;
IF v_crepa.cod_mt = 'DOTAT' OR v_crepa.cod_mt = 'VIRCPR' THEN
v_ouv_cp := v_ouv_cp + v_crepa.mt;
v_autor_cp := v_autor_cp + ( v_crepa.mt * v_tx_autor );
v_dispo_cp := v_dispo_cp + ( v_crepa.mt * v_tx_autor );
v_dispo_ordo := v_dispo_ordo + ( v_crepa.mt * v_tx_autor );
ELSIF v_crepa.cod_mt = 'DEREC' THEN
v_ouv_cp := v_ouv_cp + v_crepa.mt;
v_autor_cp := v_autor_cp + v_crepa.mt;
v_dispo_cp := v_dispo_cp + v_crepa.mt;
v_dispo_ordo := v_dispo_ordo + v_crepa.mt;
ELSIF v_crepa.cod_mt = 'VIRCPE' THEN
v_ouv_cp := v_ouv_cp - v_crepa.mt;
v_autor_cp := v_autor_cp - ( v_crepa.mt * v_tx_autor );
v_dispo_cp := v_dispo_cp - ( v_crepa.mt * v_tx_autor );
v_dispo_ordo := v_dispo_ordo - ( v_crepa.mt * v_tx_autor );
ELSIF v_crepa.cod_mt = 'ORDON' THEN
v_ordo := v_ordo + v_crepa.mt;
v_dispo_ordo := v_dispo_ordo - v_crepa.mt;
ELSIF v_crepa.cod_mt = 'DEEMI' THEN
v_deleg_e := v_deleg_e + v_crepa.mt;
v_dispo_cp := v_dispo_cp - v_crepa.mt;
v_dispo_ordo := v_dispo_ordo - v_crepa.mt;
ELSE
Null;
END IF;
END LOOP;
/* Affectation des paramètres de sortie */
p_ouv_cp := v_ouv_cp;
p_autor_cp := v_autor_cp;
p_deleg_e := v_deleg_e;
p_dispo_cp := v_dispo_cp;
p_ordo := v_ordo;
p_dispo_ordo := v_dispo_ordo;
p_tx_autor := v_tx_autor;
EXCEPTION
WHEN err_tx_autor THEN
/* Si le traitement est interrompu en raison d'un problème */
/* lors de la recuperation du taux d'autorisation, les montants */
/* retournés sont tous egaux a zero et le code retour vaut -1 */
p_ouv_cp := 0;
p_autor_cp := 0;
p_deleg_e := 0;
p_dispo_cp := 0;
p_ordo := 0;
p_dispo_ordo := 0;
p_tx_autor := 0;
p_retour := -1;
WHEN OTHERS THEN
/* en cas d'erreur les montants retournés sont tous égaux à zéro */
p_ouv_cp := 0;
p_autor_cp := 0;
p_deleg_e := 0;
p_dispo_cp := 0;
p_ordo := 0;
p_dispo_ordo := 0;
p_tx_autor := 0;
p_retour := -1;
END CAL_Crepa;
/
CREATE OR REPLACE PROCEDURE CAL_Dephb ( p_ide_poste IN rm_poste.ide_poste%TYPE,
p_ide_ordo IN rb_ordo.ide_ordo%TYPE,
p_cod_bud IN fb_dephb.cod_bud%TYPE,
p_ide_ope IN fb_dephb.ide_ope%TYPE,
p_finan OUT fb_dephb.mt%TYPE,
p_deleg_e OUT fb_dephb.mt%TYPE,
p_dispo_finan OUT fb_dephb.mt%TYPE,
p_eng_vise OUT fb_dephb.mt%TYPE,
p_eng OUT fb_dephb.mt%TYPE,
p_eng_deleg OUT fb_dephb.mt%TYPE,
p_dispo_eng OUT fb_dephb.mt%TYPE,
p_sdeleg_eng OUT fb_dephb.mt%TYPE,
p_ordo OUT fb_dephb.mt%TYPE,
p_dispo_ordo OUT fb_dephb.mt%TYPE,
p_deleng_r OUT fb_dephb.mt%TYPE,
p_retour OUT NUMBER ) IS
/* Paramètres en entrée : */
/* p_ide_poste : poste comptable */
/* p_ide_ordo : ordonnateur */
/* p_cod_bud : code budget */
/* p_ide_ope : code opération */
/* Paramètres en sortie : */
/* p_finan : montant des financements */
/* p_deleg_e : montant des délégations émises */
/* p_dispo_finan : montant des financements disponibles */