lunedì 2 febbraio 2015

AX 2012 - Cambiare report design dinamicamente

In questo articolo vediamo come cambiare design dinamicamente ai report standard che usano la "gestione stampa". Nel mio caso il report in oggetto è il DDT fornitori (PurchPackingSlip)
I report per cui è disponibile la "gestione stampa" sono memorizzati nella tabella PrintMgmtReportFormat.

Se per questi report proviamo ad impostare via codice  il report tramite il metodo parmReportName() verrà comunque stampato il design standard.

In questo esempio aggiungiamo un nuovo layout al report della fattura che verrà stampato solo se la company è italiana

Ecco quello che occorre fare:

1) Aggiungere al metodo populate() della tabella PrintMgmtReportFormat una nuova entry così

  case #isoIT:
            addAX(PrintMgmtDocumentType::SalesOrderInvoice, #isoIT);
            break;

che aggiunge un nuovo record nella tabella PrintMgmtReportFormat .  Verificare nella nuova riga che il flag "System" sia attivo, se non lo è attivarlo

2) Aggiungere alla classe PrintMgmtDocType metodo getDefaultReportFormat() una nuova entry così: (indivituate il blocco che riguarda la fattura):

if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoIT]))
{
                return ssrsReportStr(SalesInvoice, CustomLayout);
}   

Si consiglia ota di rigenerare la tabella PrintMgmtReportFormat  cancellando prima tutti i record
e poi abdare in

Account receivable -> setup -> form -> form setup

andare sul tab general e cliccare sul pulsante "Print management"

A questo link https://technet.microsoft.com/en-us/library/dd309660.aspx alla sezione "Specify conditional settings for an original or copy record" potete trovare una soluzione alternativa che non richiede codice, ma è necessario che l'utente in fase di stampa del report clicchi sulla voce "Usa gestione stampa":