1

I am trying to count Qty_to_invoice in Purchase_Order_Line, but the value of this field is 0 at the very beginning, so I have to initialize it with Purchase Order Line's Quantity field. Problem is when it goes back to 0. How can I mark that all the invoices for this line are received?

I have found 'Finished' field in the Purchase_Order_Line, but I am not sure if I can use it. Can I? Can I? I am not sure what the system will use it for later...

Or just point me to the API documentation, if there is any, please. Something with description of all this fields would be great to read.

//ETDI: I use Web Services(Page) to access NAV.

4

1 回答 1

1

但是这个字段的值一开始是0,所以我要初始化它

我猜不出你到底想用采购线做什么,但是像数量这样的字段。到发票和数量。在大多数情况下接收验证数量时自动填写。两个集合都等于 Quantity。当用户通过调用在表单上或从 C/AL 代码中输入内容时验证触发器PurcaseLine.VALIDATE("Quantyity", number);

问题是当它回到 0 时。如何标记该行的所有发票都已收到?

当您过帐发票时,过帐数量会添加到字段中Qty. Invoiced,而收到的数量会添加到字段中Qty. Received。因此,您随时都知道收到和支付了多少物品。这两个字段对用户都是只读的,因为只有过帐程序才能并且必须更改它们。

所以如果你有数量。= 10,然后您发布其中的 4 个(数量到发票 = 4)和数量。已开票 = 0。您将获得数量。= 10,数量。到发票 = 6,数量。已开票 = 4。数量。在这种情况下,发票是剩余的数量。要开发票。

如果您不知道它们的用途,则不应使用任何字段。例如,“已完成”字段是生产订单功能的一部分,与数量无关。发票。

要找出字段的含义,您可以参考帮助(站在表格中的字段上按 F1)。这并不适用于所有领域。另一种方法(如果您是开发人员并拥有许可证)是使用开发人员工具包(可以在安装 CD 或此处找到)。此实用程序允许搜索导航对象之间的依赖关系。


关于网络服务。不要尝试直接使用这些表。它确实造成了很多麻烦和不便。创建新的操作表。命名它们Purchase Order ImportPurchase Line Import. 为他们创建页面并作为网络服务发布。以任何您喜欢的格式将您的数据导入其中。我的意思是这些表可以是真实表的克隆,或者只是您需要的几个字段。将一些代码放入OnModify页面的触发器中,这些代码将在导入结束时调用或发布代码单元,其功能将创建或更新来自导入表的采购订单和行。毕竟清除导入表。

如果您的任务是根据外部系统的数量部分过帐收据,那么您的步骤将是:

  1. 假设已创建采购订单和行,数量为 100,您需要分批发布此数量
  2. 导入数量通过网络服务发布到采购行导入表通过页面
  3. 将触发页面的 OnModify,将一些代码放入该触发器以更新 Purchase Line 的Qty. to Invoice -或 -通过 Web 服务调用一些代码单元并更新 Purchase Line 的Qty. to Invoice。将所有关于创建和更新采购线的业务逻辑放在此处,而不是在您的外部应用程序中。
  4. 现在您有数量 = 100,发票数量 = 5。
  5. 通过网络服务调用发布代码单元。当然不要发布发布代码单元本身。通过另一个发布的代码单元调用它。
  6. 现在您有 Qty = 100,Qty to Invoice = don't really care,Invoiced Qty = 5,您可以再次重复步骤 2-5。

您不应该关心发票数量,这就是为什么:下次您导入数量的下一部分时,您需要检查的是 Import_Qty < (Qty - Invoiced Qty)。如果是真的你可以发帖,否则你不能。

于 2013-04-12T09:32:50.887 回答