function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Melanie VOYMANTMelanie VOYMANT 

Update a field after clicking on a button that generates a VF PDF

Good morning all,

I can't seem to figure out what's wrong with my code, could you help me please? I would like in my controller to update a field after generating my pdf. Did I do well?

My code below :
Apex Class :
public with sharing class LC_QuoteController {

    @AuraEnabled
    public static Quote generateQuoteDate(Quote quote, Id recordId) {

        Datetime refNow = System.now();

        Quote updatedQuo = new Quote(
            Id = recordId,
            Devis_edite_le__c = refNow
        );

        update updatedQuo;
        return updatedQuo;
    }

    @AuraEnabled
    public static Id genererPDF(Id idDevis, Boolean showPrices, Boolean isEstimation) {
        List<Quote> quotes = [
            SELECT Id, Name, QuoteNumber, Account.Name, Editer_enUS__c, Devis_edite_le__c
            FROM Quote WHERE Id = :idDevis];

        if(quotes.isEmpty()) {
            throw new AuraHandledException('Aucun devis');
        }

        Quote quote = quotes.get(0);

        // Appellation
        String quoteName = quote.QuoteNumber + ' - ' + quote.Account.Name;
        DocumentPageHelper pageHelper = null;
        if (quote.Editer_enUS__c) {
            pageHelper = new DocumentPageHelper(Page.VF03_QuotePDF_enUS);
        } else {
            pageHelper = new DocumentPageHelper(Page.VF02_DevisPDF);
        }


        Map<String, String> mapParams = new Map<String, String> {
            'id' => String.valueOf(idDevis)
        };
        if (!showPrices) {
            mapParams.put('showPrices', 'false');
        }
        if (isEstimation) {
            mapParams.put('esti', 'true');
        }

        return pageHelper.getDocumentFromPage(mapParams, quoteName, idDevis);
    }
}
Aura component JS :
({
    handleRecordUpdated: function (component, event, helper) {
        var eventParams = event.getParams();
        if (eventParams.changeType === 'LOADED') {
            component.set('v.showSpinner', false);
            var visiteEff = component.get('v.simpleRecord.Date_visite_F_operationnelle__c');
            component.set('v.isEstimation', $A.util.isUndefinedOrNull(visiteEff));
        } else if (eventParams.changeType === 'CHANGED') {
        } else if (eventParams.changeType === 'REMOVED') {
        } else if (eventParams.changeType === 'ERROR') {
            component.set('v.showSpinner', false);
            component.set('v.hasError', true);
            component.set('v.errorCode', 'Erreur Lightning Data Service');
            component.set('v.errorDescription', component.get('v.recordError'));
        }
    },
    confirm: function (component, event, helper) {
        component.set('v.confirmed', true);
        component.set('v.showSpinner', true);
        var action = component.get('c.generateQuoteDate');
        var recordId = component.get('v.recordId');
        action.setParams({
            idDevis: recordId
        });
        helper
            .invokeApexMethod(action)
            .then(function (retour) {
                action = component.get('c.genererPDF');
                var recordId = component.get('v.recordId');
                var showPrices = component.get('v.showPrices');
                var isEstimation = component.get('v.isEstimation');
                action.setParams({
                    idDevis: recordId,
                    showPrices: showPrices,
                    isEstimation: isEstimation
                });
                helper.invokeApexMethod(action).then(function (retour) {
                    component.set('v.showSpinner', false);
                    component.set('v.hasError', false);
                    var navEvt = $A.get('e.force:navigateToSObject');
                    navEvt.setParams({
                        recordId: retour
                    });
                    navEvt.fire();
                });
            })
            ['catch'](function (errors) {
                component.set('v.showSpinner', false);
                component.set('v.hasError', true);
                if (errors) {
                    console.log('errors', errors);
                    if (!$A.util.isUndefinedOrNull(errors[0].message)) {
                        var msg = errors[0].message.split(';');
                        switch (msg[0]) {
                            case 'Aucun devis':
                                component.set('v.errorCode', 'Aucun devis ne correspond.');
                                component.set(
                                    'v.errorDescription',
                                    "Vérifier que le devis ne vient pas d'être supprimé."
                                );
                                break;
                        }
                    } else if (!$A.util.isUndefinedOrNull(errors[0].pageErrors)) {
                        component.set('v.errorCode', errors[0].pageErrors[0].statusCode);
                        component.set('v.errorDescription', errors[0].pageErrors[0].message);
                    }
                }
            });
    }
});
Thank you guys ! 

 
PriyaPriya (Salesforce Developers) 

Hi Melanie,

Please let me know what error you are getting. 

Regards,

Priya Ranjan

Melanie VOYMANTMelanie VOYMANT
Hi !

Thanks for your help, 

I have this :

 User-added image