/* SLS : fonction qui va calculer les évenements(lignes) par pages et par facture: TFF 1050 v1.8 */ function CF_CALCUL_REPORTFormula return Number is nbre_max number :=:NB_LIGNES_PAR_PAGE; -- 21/08/2006 MPA nbre_retour_chariot number :=0; Nbre_lignes_OQP number :=1; Num_page number :=1; Event_min1 number :=0; Event_max1 number :=0; Event_min2 number :=0; Event_max2 number :=0; Event_min3 number :=0; Event_max3 number :=0; Event_min4 number :=0; Event_max4 number :=0; Event_min5 number :=0; Event_max5 number :=0; cumul_page1 number :=0; cumul_page2 number :=0; cumul_page3 number :=0; cumul_page4 number :=0; cumul_page5 number :=0; dernier_event number; nb number; result number; CURSOR curseur IS select * from ra_customer_trx_lines_all where customer_trx_id = :customer_trx_id and line_type = 'LINE' order by LINE_NUMBER; recinfo curseur%rowtype; begin select count(*) into dernier_event from ra_customer_trx_lines_all where customer_trx_id = :customer_trx_id and line_type = 'LINE'; --srw.message(120,'DEBUG CF report NBLI/PAGE :'||:NB_LIGNES_PAR_PAGE); FOR recinfo IN curseur LOOP nb:=0; LOOP nb:=nb+1; SELECT INSTR(recinfo.description,CHR(10),1,nb) INTO result FROM dual; IF (result= 0) THEN EXIT; END IF; END LOOP; --srw.message(120,'Nombre de retour-chariot :'||(nb-1)); IF( Nbre_lignes_OQP + (nb-1) > nbre_max) then IF(Num_page = 1) then Event_min1 :=1; Event_max1 := (recinfo.line_number)-1; END IF; IF(Num_page = 2) then Event_min2 :=Event_max1+1; Event_max2 := (recinfo.line_number)-1; END IF; IF(Num_page = 3) then Event_min3 :=Event_max2+1; Event_max3 := (recinfo.line_number)-1; END IF; IF(Num_page = 4) then Event_min4 :=Event_max3+1; Event_max4 := (recinfo.line_number)-1; END IF; IF(Num_page = 5) then Event_min5 :=Event_max4+1; Event_max5 := (recinfo.line_number)-1; END IF; Num_page := Num_page + 1; Nbre_lignes_OQP := nb+2; -- 21/08/2006 MPA ELSE Nbre_lignes_OQP := Nbre_lignes_OQP + (nb-1) + 2;-- 21/08/2006 MPA IF (recinfo.line_number = dernier_event) then IF(Num_page = 1) then Event_min1 :=1; Event_max1 := (recinfo.line_number); END IF; IF(Num_page = 2) then Event_min2 :=Event_max1+1; Event_max2 := (recinfo.line_number); END IF; IF(Num_page = 3) then Event_min3 :=Event_max2+1; Event_max3 := (recinfo.line_number); END IF; IF(Num_page = 4) then Event_min4 :=Event_max3+1; Event_max4 := (recinfo.line_number); END IF; IF(Num_page = 5) then Event_min5 :=Event_max4+1; Event_max5 := (recinfo.line_number); END IF; END IF; END IF; END LOOP; /*srw.message(1100,'Nombre de lignes par page :'||Nbre_lignes_OQP ); srw.message(1200,'Event_min1 :'||Event_min1); srw.message(1200,'Event_max1 :'||Event_max1); srw.message(1200,'Event_min2 :'||Event_min2); srw.message(1200,'Event_max2 :'||Event_max2); srw.message(1200,'Event_min3 :'||Event_min3); srw.message(1200,'Event_max3 :'||Event_max3); srw.message(1200,'Event_min4 :'||Event_min4); srw.message(1200,'Event_max4 :'||Event_max4); srw.message(1200,'Event_min5 :'||Event_min5); srw.message(1200,'Event_max5 :'||Event_max5); */ :CP_CUM_P1 := XXST_CUMUL_PAGES(:customer_trx_id, Event_min1, Event_max1); :CP_CUM_P2 := XXST_CUMUL_PAGES(:customer_trx_id, Event_min2, Event_max2) + :CP_CUM_P1; :CP_CUM_P3 := XXST_CUMUL_PAGES(:customer_trx_id, Event_min3, Event_max3) + :CP_CUM_P2; :CP_CUM_P4 := XXST_CUMUL_PAGES(:customer_trx_id, Event_min4, Event_max4) + :CP_CUM_P3; :CP_CUM_P5 := XXST_CUMUL_PAGES(:customer_trx_id, Event_min5, Event_max5) + :CP_CUM_P4; /*:CP_CUM_P1 := to_char(P1,'99,999,990.99'); :CP_CUM_P2 := to_char(P2,'99,999,990.99'); :CP_CUM_P3 := to_char(P3,'99,999,990.99'); :CP_CUM_P4 := to_char(P4,'99,999,990.99'); :CP_CUM_P5 := to_char(P5,'99,999,990.99'); */ srw.message(1200,'CP_CUM_P1 :'||:CP_CUM_P1); srw.message(1200,'CP_CUM_P2 :'||:CP_CUM_P2); srw.message(1200,'CP_CUM_P3 :'||:CP_CUM_P3); srw.message(1200,'CP_CUM_P4 :'||:CP_CUM_P4); srw.message(1200,'CP_CUM_P5 :'||:CP_CUM_P5); return(0); end;