All pastes #178569 Raw Edit

Sans nom

public text v1 · immutable
#178569 ·published 2006-09-21 11:34 UTC
rendered paste body
/* 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;