【问题标题】:Associate invoice to a Sales Order将发票关联到销售订单
【发布时间】:2021-01-05 15:50:19
【问题描述】:

我无法在发票上设置“创建自”以通过 SOAP Web 服务引用销售订单记录。我已经尝试直接设置此字段,也可以通过 Initialize API 设置(使用销售订单初始化发票记录,然后将 CreatedFrom 字段从初始化发票复制到正在创建的发票)。

我没有收到任何错误,但尚未在创建的发票记录上设置 Created From 字段。

我正在尝试的代码如下所示:

// initialize invoice from sales order
var initializeRecord = new InitializeRecord()
            {
                type = InitializeType.invoice,
                reference = new InitializeRef() { internalId = "sales-order-internal-id", type = InitializeRefType.salesOrder, typeSpecified = true }
            };            
            var result = Utility.Do(async () => await connector.NetSuiteClient.initializeAsync(initializeRecord));
SuiteTalk.Invoice initializedInvoice = result.record;

// create a invoice and copy over the "createdFrom" field
var invoice = new SuiteTalk.Invoice();
invoice.createdFrom = initializedInvoice.createdFrom;

/* set other fields on the invoice and add some line items
....
...
..
*/

// finally create the invoice
var result = Utility.Do(async () => await connector.NetSuiteClient.addAsync(invoice));

如何在创建此发票时将其与销售订单相关联?

【问题讨论】:

  • 将销售订单转换为发票。请参阅帮助主题:record.transform(options)。但是,添加行等可能会有问题,因为您将尝试为您没有出售的东西开具发票。
  • 感谢@Brian 的回复。转换记录似乎是一个 WF 动作。我正在尝试通过 Web 服务来执行此操作,并且 InitializeRecord 函数似乎与对我不起作用的转换等效。

标签: c# api netsuite suitetalk


【解决方案1】:

您将不得不做的——尽管很痛苦——是使用 netsuite 从initializeRecord 调用中提供给您的转换记录,然后对其进行修改。这很痛苦,因为您在填写记录时必须取消设置几个字段。

问题是标题级别和行级别都有createdFrom 关联,需要填写销售订单到发票关联才能采用。

以下是我必须在发票中取消设置的行字段列表:

行级:

  • quantityRemaining
  • quantityAvailable
  • quantityFulfilled
  • quantityOrdered
  • quantityOnHand
  • costEstimate
  • taxRate1

这里是标题级字段:

  • subTotal
  • total
  • totalCostEstimate
  • estGrossProfit
  • estGrossProfitPercent
  • discountTotal
  • giftCertApplied
  • shippingTax1Rate

【讨论】:

  • 谢谢,有道理。让我试试看
  • 就我而言,我不得不重新设置一些字段才能使其正常工作。由于您的建议,我才走上了这条路,所以再次感谢您!
  • 发票正文中的字段为 altShippingCost、exchangeRate 和 salesTeamList。
【解决方案2】:

谢谢2ps。 就我而言,这段代码就足够了

Invoice invoice = (Invoice)initializeResponse.record;
                    invoice.totalCostEstimateSpecified = false;
                    invoice.estGrossProfitPercentSpecified = false;
                    invoice.discountTotalSpecified = false;
                    invoice.totalSpecified = false;

                    foreach (var item in invoice.itemList?.item)
                    {
                        item.quantityRemainingSpecified = false;
                        item.costEstimateSpecified = false;
                    }

                    var writeResponse = svc2.add(invoice);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多