微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Salesforce apex csv 文件生成

如何解决Salesforce apex csv 文件生成

希望大家都平安。 我正在尝试使用 apex 代码生成一个 csv 文件。从 salesforce 我只想从状态为已付款的支付对象中取出所有付款,然后检查我的付款 api 响应中是否存在 Number 字段的值(来自 salesforce 中的付款对象)。我只想为该记录生成 csv 文件并将其通过电子邮件发送给我自己。 现在在 salesforce 沙箱中,当我测试 csv 时,我得到了很好的结果,所有这些状态为已付款的付款记录都显示在 csv 文件中,但是

当我进入生产环境时,我的 csv 文件中只有 1 条记录。别 知道为什么在沙箱中它运行良好,但在生产中却不是。

public with sharing class EmailCsv {
public static String APIAccessID;
public static String APISecureKey;
public static String orgId;
Public static String Locid;
public static String apiBaseUrl;
public static String finalstr;


@invocableMethod(label=‘Invoke From Flow' description=‘Invokable Method') 
public static void invokeFromFlow() {
    makeCallout();
}


@future(callout=true)
public static void makeCallout() {
    List<String> paymentNo = new List<String>();
    List<Payments__c> paymentQuery= [SELECT Number__c,Status__c FROM Payments__c where Status__c = ‘Paid’];
    for(Payments__c pNo : paymentQuery){
        paymentNo.add(pNo.Number__c);
    }
    string header = 'Order Number,Status,Amount,Received Date,Received Time \n';
    finalstr = header;
    if(Test.isRunningtest()) {
        APIAccessID = '';
        APISecureKey = '';
        orgId = '';
        apiBaseUrl = '';
        Locid = '';
    } else {
         APIAccessID = Email_Csv__c.getInstance('APIAccessID').value__c;
        APISecureKey = Email_Csv__c.getInstance('APISecureKey').value__c;
        orgId = Email_Csv__c.getInstance('orgId').value__c;
        apiBaseUrl = Email_Csv__c.getInstance('apiBaseUrl').value__c;
        Locid = Email_Csv__c.getInstance('Locid').value__c;
        
    }

    String authHeader = 'Basic ' + EncodingUtil.base64Encode(Blob.valueOf(APIAccessID + ':' + APISecureKey));
    String endpoint = apiBaseUrl + '/organizations/' + orgId + '/locations/' + Locid + '/transactions/';
    System.debug('Endpoint is ==> ' +endpoint);
    HTTP http = new HTTP();
    HTTPRequest request = new HTTPRequest();
    request.setEndpoint(endpoint);
    request.setMethod('GET');
    request.setHeader('Accept','application/json');
    request.setHeader('Authorization',authHeader);
    request.setHeader('X-Forte-Auth-Organization-Id',orgId);
    request.setTimeout(5000);
    HttpResponse response = http.send(request);
    if(response.getStatusCode() == 200) {
        EmailCsvWrapper resWrapper = EmailCsvWrapper.parse(response.getBody());
        for(Integer i=0; i<resWrapper.results.size(); i++) {
        EmailCsvWrapper.Results res = resWrapper.results.get(i);
        String s = res.received_date;
        Double authAmount = res.authorization_amount;
        String authAmountConverted = String.valueOf(authAmount);
        String oNumber = res.order_number;
        if(oNumber != null){
        String[] splittedoNumber = oNumber.split(',');
        oNumber = oNumber.contains(',') ? splittedoNumber[0] : oNumber;
        }
            for(String s : paymentNo){
            if(s == oNumber){
                    String cfn = +oNumber + ',' +res.status + ',' +authAmountConverted + ',' +s  + '\n';
                    finalstr = finalstr +cfn;
                    System.debug('CSV => ' +cfn);
            }
            }
    }
        
    List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();
    Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage();
    Messaging.EmailFileAttachment attach = new Messaging.EmailFileAttachment();
    blob csvBlob = blob.valueOf(finalstr);
    attach.setFileName(‘Payments.csv');
    attach.setBody(csvBlob);
    List<String> emailAddresses = new List<String>();
    emailAddresses.addAll((Email_Csv__c.getInstance('EmailAddresses').value__c).split(';'));
    semail.setSubject('Csv File’);  
            semail.setToAddresses(emailAddresses);
    semail.setPlainTextBody(‘Transactions csv file’);
    semail.setFileAttachments(new Messaging.EmailFileAttachment[]{attach});
    emails.add(semail);
    Messaging.sendEmail(emails);
        
    }
    
    
}

}

解决方法

完成了。代码没问题。我只是从 api 的第一页获取数据,这就是我没有获取所有行的原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。