/* 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;