View source | Discuss this page | Page history | Printable version   

ERP 2.50:Developers Guide/Examples/Report/it

Contents

Introduzione

Questo esempio spiega il 'Report Ordine Fornitore' già presente in Openbravo ERP. Prima di entrare nei dettagli, è possibile verificare il report nel seguente percorso:

Procurement Management > Analysis Tools > Purchase Order Report
Report-example1.png

Obiettivo

L'obiettivo principale di questo documento è di dare, in modo pragmatico, una spiegazione dettagliata su come integrare un modello di JasperReports in Openbravo ERP.

Implementation

Dizionario Applicazione

A seguito di queste operazioni sarete in grado di trovare il report nel Dizionario Applicazione:

Come System Administrator andare su :

Si dovrebbe essere in grado di vedere la definizione del report :

Bulbgraph.png   Si noti che quando si registra un report basato su JasperReport, non selezionate la casella di controllo Report, ma quella Report Jasper . Tali relazioni sono gestite come processi

Parametri

Business Partner

Ora andiamo alla scheda Parameters . Report and Processes > Parameters. Seleziona il parametro Business Partner

Bulbgraph.png   Il Nome colonna DB deve corrispondere esattamente il nome del parametro definito nel modello. E' case sensitive.
Example-report2.png

Valuta, Magazzino, Data d'inizio, Data Fine

Questi parametri seguono lo stesso tipo di definizione utilizzata per il Business Partner. L'unico cambiamento è il Nome colonnaDB, e il riferimento utilizzato da ciascuna di esse.

Tipo di Output

Questo è un parametro speciale che dovrebbe essere presente in tutti i reports Standard UI . È utilizzato per specificare quale output che si desidera utilizzare : PDF, HTML, XLS

Example-report3.png

Pattern Standard UI

La definizione precedente dei parametri verrà tradotto in una finestra pop-up come questa :

Example-report4.png
  1. Definizione Help/Comment del Report
  2. L' Elemento definito per ogni parametro
  3. Il Riferimento definito per ogni parametro

Template JasperReport

Openbravo ERP 2.50 viene fornito con la versione JasperReports 3.0.1 . È necessario utilizzare la stessa versione di iReport.

Example-report5.png

Parametri

Example-report6.png

L'elenco seguente di parametri, corrisponde alla definizione del parametro DB Column Name nel Dizionario Applicazione


Parametri Ausiliari

Questi parametri ausiliari sono utilizzati nella definizione SQL del report per impostare una restrizione aggiuntiva nella clausola WHERE. La logica è semplice, se il parametro è nullo o una stringa vuota, non dobbiamo filtrare, altrimenti si aggiunge una condizione supplementare.

$P{C_BPartner_ID}.equals("") ? " " : " AND C_ORDER.C_BPARTNER_ID = '" + $P{C_BPartner_ID} +"'"
$P{M_Warehouse_ID}.equals("") ? " " : " AND C_ORDER.M_WAREHOUSE_ID = '" + $P{M_Warehouse_ID} + "'"
$P{C_Project_ID}.equals("") ? " " : " AND C_ORDER.C_PROJECT_ID = '" + $P{C_Project_ID} + "'"
($P{DateFrom} == null || $P{DateFrom}.equals("")) ? "" : "AND C_ORDER.DATEORDERED >='" + new java.sql.Date($P{DateFrom}.getTime()).toString() + "'"
($P{DateTo} == null || $P{DateTo}.equals("")) ? "" : "AND C_ORDER.DATEORDERED <='" + new java.sql.Date($P{DateTo}.getTime()) + "'"
Parametri Extra

Ci sono alcuni parametri extra

 
($F{PRICELIST}!=null)?$P{NUMBERFORMAT}.format($F{PRICELIST}):new String(" ")

SQL Query

Questa è l'intera query SQL utilizzata per ottenere i dati :

 
SELECT DOCUMENTNO, DATEORDERED, CLIENT_NAME, SUM(QUANTITYORDER) AS QUANTITYORDER, PRICEACTUAL, CONVPRICEACTUAL,
	SUM(PRICELIST) AS PRICELIST, SUM(CONVPRICELIST) AS CONVPRICELIST, PRODUCT_NAME, UOMNAME,
	C_CURRENCY_SYMBOL(TRANSCURRENCYID, '0', 'Y') AS TRANSSYM,
	C_CURRENCY_SYMBOL($P{C_Currency_ID}, '0', 'Y') AS CONVSYM,
	C_CURRENCY_ISOSYM($P{C_Currency_ID}) AS CONVISOSYM
	FROM (
	SELECT C_ORDER.DOCUMENTNO AS DOCUMENTNO, C_ORDER.DATEORDERED AS DATEORDERED, C_BPARTNER.NAME AS CLIENT_NAME, 
	SUM(C_ORDERLINE.QTYORDERED) AS QUANTITYORDER, C_ORDERLINE.PRICEACTUAL AS PRICEACTUAL,
	C_CURRENCY_CONVERT(C_ORDERLINE.PRICEACTUAL, COALESCE(C_ORDERLINE.C_CURRENCY_ID, C_ORDER.C_CURRENCY_ID), $P{C_Currency_ID},
        TO_DATE(COALESCE(C_ORDERLINE.DATEORDERED, C_ORDER.DATEORDERED, NOW())), NULL, C_ORDERLINE.AD_CLIENT_ID, C_ORDERLINE.AD_ORG_ID) AS CONVPRICEACTUAL,
	SUM(C_ORDERLINE.LINENETAMT) AS PRICELIST, 
	C_CURRENCY_CONVERT(SUM(C_ORDERLINE.LINENETAMT), COALESCE(C_ORDERLINE.C_CURRENCY_ID, C_ORDER.C_CURRENCY_ID), $P{C_Currency_ID},
        TO_DATE(COALESCE(C_ORDERLINE.DATEORDERED, C_ORDER.DATEORDERED, NOW())), NULL, C_ORDERLINE.AD_CLIENT_ID, C_ORDERLINE.AD_ORG_ID) AS CONVPRICELIST,
	M_PRODUCT.NAME AS PRODUCT_NAME, C_UOM.NAME AS UOMNAME,
	COALESCE(C_ORDERLINE.C_CURRENCY_ID, C_ORDER.C_CURRENCY_ID) AS TRANSCURRENCYID,
	TO_DATE(COALESCE(C_ORDERLINE.DATEORDERED, C_ORDER.DATEORDERED, NOW())) AS TRANSDATE,
	C_ORDERLINE.AD_CLIENT_ID AS TRANSCLIENTID, 
	C_ORDERLINE.AD_ORG_ID AS TRANSORGID
	FROM C_ORDER, C_ORDERLINE, C_BPARTNER, M_PRODUCT, C_UOM
	WHERE C_ORDER.C_BPARTNER_ID = C_BPARTNER.C_BPARTNER_ID
  	AND C_ORDER.C_ORDER_ID = C_ORDERLINE.C_ORDER_ID
  	AND C_ORDERLINE.M_PRODUCT_ID = M_PRODUCT.M_PRODUCT_ID
  	AND C_ORDERLINE.C_UOM_ID = C_UOM.C_UOM_ID
  	AND 1=1  
  	$P!{aux_partner}  
  	$P!{aux_warehouse}
  	$P!{aux_project} 
  	$P!{aux_DateFrom} 
  	$P!{aux_DateTo}
  	AND C_ORDER.ISSOTRX = 'N'
	AND C_ORDER.AD_CLIENT_ID IN ($P!{USER_CLIENT})
	AND C_ORDER.AD_ORG_ID IN ($P!{USER_ORG})
	GROUP BY C_BPARTNER.NAME, C_ORDERLINE.PRICEACTUAL, M_PRODUCT.NAME, C_UOM.NAME, C_ORDER.DOCUMENTNO, 
	C_ORDER.DATEORDERED, C_ORDERLINE.DATEORDERED,
	C_ORDERLINE.C_CURRENCY_ID, C_ORDER.C_CURRENCY_ID,
	C_ORDERLINE.AD_CLIENT_ID, C_ORDERLINE.AD_ORG_ID
	) ZZ
	GROUP BY CLIENT_NAME, PRICEACTUAL, CONVPRICEACTUAL, PRODUCT_NAME, UOMNAME, DOCUMENTNO, DATEORDERED,
	TRANSCURRENCYID, TRANSDATE
	ORDER BY CLIENT_NAME, DATEORDERED
L'uso del parametro in una chiamata di funzione
 
	C_CURRENCY_SYMBOL($P{C_Currency_ID}, '0', 'Y') AS CONVSYM,
	C_CURRENCY_ISOSYM($P{C_Currency_ID}) AS CONVISOSYM

Noi usiamo il parametro C_Currency_ID per ottenere il simbolo di valuta

L'uso di parametri ausiliari
 
       WHERE C_ORDER.C_BPARTNER_ID = C_BPARTNER.C_BPARTNER_ID
  	AND C_ORDER.C_ORDER_ID = C_ORDERLINE.C_ORDER_ID
  	AND C_ORDERLINE.M_PRODUCT_ID = M_PRODUCT.M_PRODUCT_ID
  	AND C_ORDERLINE.C_UOM_ID = C_UOM.C_UOM_ID
  	AND 1=1  
  	$P!{aux_partner}  
  	$P!{aux_warehouse}
  	$P!{aux_project} 
  	$P!{aux_DateFrom} 
  	$P!{aux_DateTo}
  	AND C_ORDER.ISSOTRX = 'N'
	AND C_ORDER.AD_CLIENT_ID IN ($P!{USER_CLIENT})
	AND C_ORDER.AD_ORG_ID IN ($P!{USER_ORG})

Come potete vedere ci sono dei parametri * aux_* utilizzati nella clausola WHERE. ad esempio Immaginiamo che l'utente seleziona un partner commerciale con ID 1000000, tale valore verrà passato al modello e la linea:

$P!{aux_partner}

Verrà modificata in:

" AND C_ORDER.C_BPARTNER_ID = '" + $P{C_BPartner_ID} +"'"

E dopo aver valutato il valore del parametro sarà:

" AND C_ORDER.C_BPARTNER_ID = '1000000'"

Quindi il report sarà filtrato da quel Business Partner


Client e Organizzazione

Il report è filtrato anche da Client e Organizzazione

 
	AND C_ORDER.AD_CLIENT_ID IN ($P!{USER_CLIENT})
	AND C_ORDER.AD_ORG_ID IN ($P!{USER_ORG})

P{} vs P!{}

 
  AND C_ORDER.AD_CLIENT_ID IN ($P!{USER_CLIENT}) -- $P!{USER_CLIENT} will be replaced by a string like '10000'
  AND C_ORDER.AD_ORG_ID IN ($P!{USER_ORG})
 
  C_CURRENCY_SYMBOL(TRANSCURRENCYID, '0', 'Y') AS TRANSSYM,
  C_CURRENCY_SYMBOL($P{C_Currency_ID}, '0', 'Y') AS CONVSYM, -- $P{C_Currency_ID} will be a SQL parameter C_CURRENCY_SYMBOL(?, '0', 'Y') AS CONVSYM
  C_CURRENCY_ISOSYM($P{C_Currency_ID}) AS CONVISOSYM

Risultato Finale

Example-report7.png

Retrieved from "http://wiki.openbravo.com/wiki/ERP_2.50:Developers_Guide/Examples/Report/it"

This page has been accessed 4,370 times. This page was last modified on 14 June 2011, at 11:04. Content is available under Creative Commons Attribution-ShareAlike 2.5 Spain License.