首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Zuora预览即将到来的发票?

如何使用Zuora预览即将到来的发票?
EN

Stack Overflow用户
提问于 2014-08-22 02:58:29
回答 1查看 618关注 0票数 2

通过Zuora用户界面,我可以使用方便的“预览”按钮预览订阅。我希望使用Zuora执行相同的操作,这样我就可以预览即将出现的发票并编写一些测试。

到目前为止,我的理论是使用PreviewOptions.enablePreviewMode=true创建一个空的PreviewOptions.enablePreviewMode=true,以获得预览发票的结果。

相关SOAP文档:

这部分起作用了,但它返回了one 对象,但两个是预期的

代码语言:javascript
复制
public List<InvoiceData> getInvoicePreview(String subscriptionId){

    ID id = new ID();
    id.setID(subscriptionId);

    PreviewOptions previewOptions = new PreviewOptions();
    previewOptions.setEnablePreviewMode(true);
    previewOptions.setPreviewThroughTermEnd(true);

    Calendar forever = new DateTime().plusDays(1000).toCalendar(Locale.getDefault());

    // A null amendment
    Amendment amendment = new Amendment();
    amendment.setName("Draft amendment for preview");
    amendment.setStatus("Draft");
    amendment.setContractEffectiveDate(forever);
    amendment.setSubscriptionId(id);
    amendment.setType("TermsAndConditions");

    AmendOptions amendOptions = new AmendOptions();

    AmendRequest amendRequest = new AmendRequest();
    amendRequest.setAmendments(new Amendment[]{amendment});
    amendRequest.setAmendOptions(amendOptions);
    amendRequest.setPreviewOptions(previewOptions);

    Amend amend = new Amend();
    amend.setRequests(new AmendRequest[]{amendRequest});

    AmendResponse amendResults;


    try {

        ZuoraCredentials creds = credentialProvider.get();
        ZuoraServiceStub stub = new ZuoraServiceStub(creds.zuoraApiEndpoint);
        Login login = new Login();
        login.setUsername(creds.zuoraApiUser);
        login.setPassword(creds.zuoraApiPassword);
        LoginResponse loginResponse = stub.login(login);
        String session = loginResponse.getResult().getSession();
        SessionHeader sessionHeader = new SessionHeader();
        sessionHeader.setSession(session);
        amendResults = stub.amend(amend, sessionHeader);
    } catch (RemoteException e) {
        throw new RuntimeException("Error executing Zuora API.", e);
    } catch (UnexpectedErrorFault e) {
        throw new RuntimeException("Error executing Zuora API.", e);
    } catch (LoginFault e) {
        throw new RuntimeException("Error executing Zuora API.", e);
    }

    AmendResult[] amendResult = amendResults.getResults();

    printOut(amendResult);      

    return new ArrayList<InvoiceData>(Arrays.asList(amendResult[0].getInvoiceDatas()));
}

以下是Zuora中的数据

EN

回答 1

Stack Overflow用户

发布于 2014-09-19 12:15:09

我一直试图在subscribe()电话中实现类似的目标,并最终向Zuora提出了一张罚单。他们说它不被支持,但是你可以通过聚合InvoiceItem记录来达到同样的目的。

我所做的是根据服务期(ServiceStartDate)的开始手动将它们组合在一起,并将总数(例如ChargeAmountTaxAmount)相加。这似乎是正确的计算,你可以得到的总到期在每段时间开始。

我怀疑这将以同样的方式适用于修改,因为InvoiceData记录会以与subscribe()相同的方式返回。

更新

  • 我们现在确实将其用于修正案,而且它的工作方式与订阅呼叫同样有效。
  • 我们发现的一个问题是,您不能在所谓的订阅结束后预览,但是如果需要,我们可以在预览时将术语类型设置为EVERGREEN (即使订阅在创建时是TERMED )。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25438913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档