如何在使用代码更新 packingSlip 后关闭采购订单
How to close a purchase order after updating packingSlip with code
如何在使用代码更新 packingSlip 后关闭采购订单?
我知道我可以在 purchLine.receivedNow 中为每个 purchLine 设置不同的数量,我需要 post 装箱单并关闭采购订单,无论交付多少件物品。
我正在尝试通过 AX 2009 中的 x++ post 一个 packingSlip,它工作正常。
但是,我需要同时关闭采购订单。
我基本需要:
purchParmline.closed = true;
关于如何实现这个的任何想法?我搜索并找到了很多不同的方法来 post 采购订单,但没有一个能完全回答我的问题。
void postPackingSlip(purchId _purchId, num _packingSlipId)
{
PurchFormLetter PurchFormLetter;
PurchTable PurchTable;
;
PurchTable = PurchTable::find(_purchId,true);
purchFormLetter = purchFormLetter::construct(DocumentStatus::PackingSlip);
PurchFormLetter.update(PurchTable, _packingSlipId , today(), PurchUpdate::ReceiveNow ,AccountOrder::None,NoYes::No,NoYes::No);
}
我也试过这样做,但没有成功
void postPackingSlipOld(purchId _purchId, num _packingSlipId)
{
PurchFormLetter purchFormLetter;
PurchTable purchTable;
purchparmtable purchParmtable;
ParmId parmId;
PurchLine purchLine;
purchparmline purchparmline;
;
purchTable=PurchTable::find(_purchId);
purchFormLetter = PurchFormLetter::construct(DocumentStatus::PackingSlip);
purchFormLetter.createParmUpdate();
purchParmtable = purchParmtable::find(_purchid, _packingSlipId);
purchFormLetter.createParmTable(purchParmTable,purchTable);
purchParmTable.Num = _packingSlipId;
purchParmTable.insert();
while select purchLine
where purchLine.PurchId == purchTable.purchId
{
purchParmLine.ParmId = purchParmTable.ParmId;
purchParmLine.InitFromPurchLine(purchLine);
purchParmLine.ReceiveNow = PurchLine.PurchReceivedNow;
purchParmLine.TableRefId = purchParmTable.TableRefId ;
purchParmLine.closed = true;
purchParmLine.setQty(DocumentStatus::PackingSlip,false, true);
purchParmLine.setLineAmount();
purchParmLine.insert();
}
purchFormLetter.proforma (false);
purchFormLetter.specQty (PurchUpdate::ReceiveNow);
purchFormLetter.transDate (today());
purchFormLetter.run();
}
我对你的要求有点灰心,但如果它适用于 AX09 并且你想要 "close" 采购订单。我认为这与转到订单行并执行 Functions>Deliver Remainder
并选择 Cancel Quantity
.
相同
如果这就是您想要的,我相信 Cancel Quantity
中的逻辑就是:
PurchLine.RemainPurchPhysical = 0;
PurchLine.RemainInventPhysical = 0;
PurchLine.update();
update()
负责更改状态。
如何在使用代码更新 packingSlip 后关闭采购订单?
我知道我可以在 purchLine.receivedNow 中为每个 purchLine 设置不同的数量,我需要 post 装箱单并关闭采购订单,无论交付多少件物品。
我正在尝试通过 AX 2009 中的 x++ post 一个 packingSlip,它工作正常。 但是,我需要同时关闭采购订单。
我基本需要:
purchParmline.closed = true;
关于如何实现这个的任何想法?我搜索并找到了很多不同的方法来 post 采购订单,但没有一个能完全回答我的问题。
void postPackingSlip(purchId _purchId, num _packingSlipId)
{
PurchFormLetter PurchFormLetter;
PurchTable PurchTable;
;
PurchTable = PurchTable::find(_purchId,true);
purchFormLetter = purchFormLetter::construct(DocumentStatus::PackingSlip);
PurchFormLetter.update(PurchTable, _packingSlipId , today(), PurchUpdate::ReceiveNow ,AccountOrder::None,NoYes::No,NoYes::No);
}
我也试过这样做,但没有成功
void postPackingSlipOld(purchId _purchId, num _packingSlipId)
{
PurchFormLetter purchFormLetter;
PurchTable purchTable;
purchparmtable purchParmtable;
ParmId parmId;
PurchLine purchLine;
purchparmline purchparmline;
;
purchTable=PurchTable::find(_purchId);
purchFormLetter = PurchFormLetter::construct(DocumentStatus::PackingSlip);
purchFormLetter.createParmUpdate();
purchParmtable = purchParmtable::find(_purchid, _packingSlipId);
purchFormLetter.createParmTable(purchParmTable,purchTable);
purchParmTable.Num = _packingSlipId;
purchParmTable.insert();
while select purchLine
where purchLine.PurchId == purchTable.purchId
{
purchParmLine.ParmId = purchParmTable.ParmId;
purchParmLine.InitFromPurchLine(purchLine);
purchParmLine.ReceiveNow = PurchLine.PurchReceivedNow;
purchParmLine.TableRefId = purchParmTable.TableRefId ;
purchParmLine.closed = true;
purchParmLine.setQty(DocumentStatus::PackingSlip,false, true);
purchParmLine.setLineAmount();
purchParmLine.insert();
}
purchFormLetter.proforma (false);
purchFormLetter.specQty (PurchUpdate::ReceiveNow);
purchFormLetter.transDate (today());
purchFormLetter.run();
}
我对你的要求有点灰心,但如果它适用于 AX09 并且你想要 "close" 采购订单。我认为这与转到订单行并执行 Functions>Deliver Remainder
并选择 Cancel Quantity
.
如果这就是您想要的,我相信 Cancel Quantity
中的逻辑就是:
PurchLine.RemainPurchPhysical = 0;
PurchLine.RemainInventPhysical = 0;
PurchLine.update();
update()
负责更改状态。