【问题标题】:How to override the tax details when adding a sales order through web service API通过 Web 服务 API 添加销售订单时如何覆盖税务详细信息
【发布时间】:2015-09-10 21:46:25
【问题描述】:

当我尝试通过 Acumatica Web 服务 API 将我们的电子商务订单添加到 Acumatica 时,Acumatica 中始终会根据我从我们的电子商务系统发送到 Acumatica 的产品和客户信息自动计算包括总计在内的税务详细信息。

由于我们的客户已经在我们的电子商务网站上为他们的订单支付了全额付款,包括税款,我想用任何数据覆盖这些与税务相关的信息,例如每件商品的税款总额和税款金额,这是我从电子商务中获得的,以避免电子商务和 Acumatica 之间的潜在冲突(在大多数情况下,两个系统中的税收计算应该完全相同,但有时由于某些配置或系统错误可能会有所不同),但是,我尝试了不同的方法,但都没有奏效。

有人知道怎么做吗?我的部分代码如下:

SO301000Content SO301000 = context.SO301000GetSchema();
context.SO301000Clear();

List<Command> cmds = new List<Command>();

cmds.Add(new Value { Value = "SO", LinkedCommand = SO301000.OrderSummary.OrderType });
cmds.Add(new Value { Value = "<NEW>", LinkedCommand = SO301000.OrderSummary.OrderNbr });
cmds.Add(new Value { Value = "ABCD", LinkedCommand = SO301000.OrderSummary.Customer });
cmds.Add(new Value { Value = "ABCD1234", LinkedCommand = SO301000.OrderSummary.Location }); 

//please note I could add extra tax item as below:
cmds.Add(SO301000.TaxDetails.ServiceCommands.NewRow);
cmds.Add(new Value { Value = "0.5", LinkedCommand = SO301000.TaxDetails.TaxAmount });
cmds.Add(new Value { Value = "ON HST", LinkedCommand = SO301000.TaxDetails.TaxID });
cmds.Add(new Value { Value = "10", LinkedCommand = SO301000.TaxDetails.TaxRate });
cmds.Add(new Value { Value = "289", LinkedCommand = SO301000.TaxDetails.TaxableAmount });

//however when I was trying to add the number for tax total, it doesn't work
cmds.Add(new Value { Value = "1.5", LinkedCommand = SO301000.OrderSummary.TaxTotal });
cmds.Add(new Value { Value = "GST", LinkedCommand = SO301000.TaxDetails.TaxID });
//the two lines above do not work

//add line items
foreach (OrderItem item in orderInfo.OrderItems)
{
    cmds.Add(SO301000.DocumentDetails.ServiceCommands.NewRow);
    cmds.Add(new Value { Value = item.InventoryCD, LinkedCommand = SO301000.DocumentDetails.InventoryID });
    cmds.Add(new Value { Value = item.Quantity.ToString(), LinkedCommand = SO301000.DocumentDetails.Quantity });

}

cmds.Add(SO301000.Actions.Save);
cmds.Add(SO301000.OrderSummary.OrderNbr);

SO301000Content[] SO30100content = context.SO301000Submit(cmds.ToArray());

谢谢。

【问题讨论】:

    标签: acumatica avalara


    【解决方案1】:

    TaxTotal 是基于税表行项目总计的计算字段。如果没有一些自定义工作来启用该字段并删除计算,我认为不可能覆盖计算值。

    我可以看到的几个选项 1) 根据您的行项目的税收总额手动输入所有税行 2)修改行项目以包含税并将税类别设置为“NONTAXABLE”或为“PRETAXED / INCLUDINGTAX”或类似这些行的内容创建一个新类别,因此不会自动计算税。 3) 让 Acumatica 根据税收规则自动计算税收。

    过去,我根据要求倾向于#2 和#3。

    【讨论】:

    • 感谢您的回答 - 虽然它没有给我一个解决方案,但它确实确认没有简单的方法可以“覆盖”这些税收计算,这很有帮助。
    【解决方案2】:

    让我澄清一下 Acumatica 中的工作税计算方式。 Acumatica 会根据客户税区属性表的“财务设置”选项卡计算税金。

    您将如何向税务局报告税款的主要问题,正如 Jeff 所写,您有几个选择。

    如果您只需要文件的全部税额并且您不想控制文件中使用的税款,那么下一个方法适合您:

    1. 使用默认税区和税种创建默认税。
    2. 从过去设置开始日期,税率 = 0
    3. 对于来自电子商务的任何新 SO,请将客户税区设置为默认
    4. 然后当您保存基于税收设置的文档时,acumatica 将在税收详细信息下创建一个税额为 0 的行,以便您对其进行编辑。也许您也可以在 api 调用期间动态创建该行。

    注意:如果您需要更详细的数据,例如从电子商务获取 SO 的所有税款(州税、县税 + 等),您可以使用相同的方法,但您需要动态创建您的税/税区.

    另一种选择可能是使用 Avalara 税务提供商。

    我希望这些信息会有所帮助。

    【讨论】:

    • 是的,这很有帮助 - 我认为设置默认税区以使电子商务订单始终为零税,并在 Acumatica 中使用电子商务的税务数据添加额外的税项是最好的方法.我稍后会尝试。谢谢!
    【解决方案3】:

    这是一篇旧帖子,但我想我会发布适用于 2019 R2 的答案。出于某种原因,Acumatica 不允许您在创建销售订单时更新 TaxDetails 税额字段。使用分配的税区创建销售订单后,只能使用税明细对象 ID 更新“税额”字段。因此,您需要通过使用 ODATA 查询 $expand=TaxDetails

    展开“税务详细信息”来获取销售订单的税务详细信息

    然后使用 PUT 更新销售订单,并使用对象的现有“id”将税额发送到“TaxAmount”键值。根据您编写代码的方式,这将每次都能完美运行。下面是引用 TaxDetails 对象 ID 的屏幕截图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-01
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多