我正在创建自定义,只需点击一下按钮,我就需要为特定的采购订单/发票日记帐分配费用。
从前端开始,我会按照采购订单生命周期并开具发票来完成此操作。然后我会在PO的发票标签下,点击发票日记 - >费用 - >调整。这将打开我想要的表格,我将在其中选择收费代码,收费值,货币和类别,然后我将点击“确定”并让系统处理剩余的流程。
表单名称: MarkupAllocation_VendInvoiceTrans
父表单名称: VendInvoiceJournal
您可以看到使用一些参数(如发票编号)调用子表单,显然需要该链接。如果我在表格下进入AOT,我右键单击并打开VendInvoiceJournal,但我无法打开MarkupAllocation_VendInvoiceTrans,因为它需要参数。
目标:
答:通过代码打开MarkupAllocation_VendInvoiceTrans,我手动传递这些参数以链接到父表。我会提供发票号码等。目标是跳过打开父表并手动进入调整。我想直接打开该表单并将其链接到我指定的任何记录。
B:我需要能够传递一个_ChargesValue参数并为我预先填充它。我不知道这是否可行,所以我想问一下。理想情况下,我应该可以单击自定义表单上的按钮,并为指定的发票直接打开MarkupAllocation_VendInvoiceTrans表单,并在行上预先填充值。
我知道我应该一步一步解决这个问题,所以步骤A是第一优先。
我可以相对轻松地打开父表单,但我不能对子表单执行相同的操作。显然,同一时间的方法不起作用,因为我需要在打开之前指定父表的关系。
private void allocateMarkup()
{
Object formRun;
Args args = new Args();
VendInvoiceJour jourTable;
;
select * from jourTable where jourTable.PurchId == 'PO000001191';
args.name(formstr(VendInvoiceJournal));
args.record(jourTable);
formRun = ClassFactory.formRunClass(args);
formRun.init();
formRun.run();
formRun.wait();
}
我怎么能这样做?
(旁注,我知道如果以编程方式执行所有事务而不是让开箱即用的功能处理它,可以避免整个表单调用,但标记和分配逻辑是它自己的野兽,对我来说似乎比这更复杂。如果有人以这种手动方式完成,那么对此的任何帮助都将非常受欢迎)
答案 0 :(得分:1)
如果我正确阅读您的帖子,您只需打开特定发票的费用>调整。这是一个简单的方法:
MarkupAdjustment markupAdjustment = new MarkupAdjustment();
markupAdjustment.vendInvoiceJour(VendInvoiceJour::findFromPurchId('PO 120079'));
markupAdjustment.run();