Bienvenue, Invité Connexion

Centre de Support

Regroupement de Lignes de Facture

Dernière mise à jour: Dec 04, 2018 11:20AM CET
Le regroupement de lignes nécessite la création d'un controller APEX qui sera utilisé dans votre page Visualforce de modèle.

Attention : Le code ci-dessous est donné à titre indicatif. Sofacto décline toute responsabilité en cas de mauvaise utilisation de celui-ci. 

Exemple 1, regroupement des lignes de facture selon les offres associées :

 
global with sharing class FacturePdfControllerExtension {
    
    // Identifiant Salesforce.com pour la facture en cours de visualisation
    global final String factureId {get; private set;}
    // Identifiant Salesforce.com pour l'opportunité émettrice de la facture
    global final String oppId {get; private set;}
    // Bibliothèque contenant les IdOffres et l'offre associée
    global Map<Id, Offre__c> mapOffers {get;private set;}
    // Bibliothèque contenant les idOffres et leurs wrappers de lignes de facture
    global Map<ID, wrapper> mapInvoiceLines {get;private set;}
    // Liste des offres liées à l'opportunité émettrice
    global final list<Offre__c> listOffers {get;private set;}
    
    // Constructeur du controlleur extension
    global FacturePdfControllerExtension(ApexPages.StandardController stdController) 
    {
        
        // Liste des lignes de facture liées à l'opportunité émettrice
        list<Ligne_de_Facture__c> listInvoiceLines;
        mapInvoiceLines = new Map<Id, wrapper>();
        
        // Je récupère l'id de la facture
        if (stdController != null) {
            this.factureId = stdController.getRecord().Id;
        } else if (ApexPages.currentPage().getParameters().get('id') != null) {
            this.factureId = ApexPages.currentPage().getParameters().get('id');
        }
        
        // Je récupère l'id de l'opportunité émettrice de la facture
        this.oppId = [SELECT Opportunit__c  FROM Factures_Client__c WHERE Id = :factureId][0].Opportunit__c;
       
        // Je récupère la liste des offres et je crée la map des offres pour la page visualforce
        mapOffers = new Map<Id, Offre__c>([SELECT Id, Name  FROM Offre__c WHERE Opportunite__c = :oppId]);
        listOffers = [SELECT Id FROM Offre__c WHERE Opportunite__c = :oppId];
        
        // Je récupère toutes les lignes de factures liées à l'opportunité émettrice
        listInvoiceLines = [SELECT Id, Poste_d_offre__r.Offre__c, PUHT_precis__c FROM Ligne_de_Facture__c WHERE Facture__c = :factureId];
        // Je traite les lignes de factures pour les grouper par idOffre 
        for(Offre__c idOffre : listOffers)
        {
            // Initialisation du wrapper et du compteur
            Ligne_de_Facture__c p1 = null;
            Ligne_de_Facture__c p2 = null;
            Ligne_de_Facture__c p3 = null;
            integer compteur = 1;
            
            for(integer i = 0; i<listInvoiceLines.size(); i++)
            {
                if(listInvoiceLines[i].Poste_d_offre__r.Offre__c == idOffre.Id)
                {
                    if(compteur == 1){
                        p1 = listInvoiceLines[i];
                        compteur++;
                    } else if(compteur == 2){
                        p2 = listInvoiceLines[i];
                        compteur++;
                    } else if(compteur == 3){
                        p3 = listInvoiceLines[i];
                        compteur++;
                    } 
                }  
            }
            
            wrapper dataWrapper = new wrapper(p1,p2,p3);
            mapInvoiceLines.put(idOffre.Id,dataWrapper);
        }
    }
    
    // Wrapper contenant les trois lignes de facture d'une offre
    public class wrapper {
        public Ligne_de_Facture__c A {get;private set;}
        public Ligne_de_Facture__c B {get;private set;}
        public Ligne_de_Facture__c C {get;private set;}
        
        public wrapper(Ligne_de_Facture__c p1, Ligne_de_Facture__c p2, Ligne_de_Facture__c p3) {
                                 A = p1;
                                 B = p2;
                                 C = p3;            
        } 
    }
}


 

Nous contacter

112119734374cc03bb6cbc87fa8bf90e@bricks.desk-mail.com
http://assets2.desk.com/
false
desk
Chargement
il y a quelques secondes
il y a une minute
il y a quelques minutes
il y a une heure
il y a quelques heures
il y a un jour
il y a quelques jours
à propos de
false
Caractères non valides trouvés
/customer/fr/portal/articles/autocomplete