AX 2012 PurchCopying

static void Job63(Args _args)
{
PurchCopying purchCopying = PurchCopying::construct(SalesPurchCopy::CopyAllLines);
TmpFrmVirtual tmpFrmVirtualLines;
TmpFrmVirtual tmpFrmVirtualHeader;

PurchTable purchTableFrom = PurchTable::find('PO-000055');
PurchLine purchLineFrom;

PurchTable purchTableTo = PurchTable::find('PO-000057', true /*not good selectforupdate within transaction, but otherwise standart 2012R2 work with error */);

List tmpFrmVirtualLinesList = new List(Types::Record);
List tmpFrmVirtualHeaderList = new List(Types::Record); 
PurchCopyingPurchTableContract contract;

Qty qtyFactor = 1;
NoYes reverseSign = NoYes::No;
NoYes recalculateAmount = NoYes::No;
NoYes copyMarkup = NoYes::No;
NoYes copyPrecisely = NoYes::No;
NoYes deleteLines = NoYes::No;


void writeTmpFrmVirtual(TmpFrmVirtual _tmpFrmVirtual,
tableId _tableId,
recId _recId,
Num _id,
LineNum _lineNum = 0,
TransDate _transDate = systemdateget(),
Qty _qty = 0)
//\Forms\PurchCopying\Methods\writeTmpFrmVirtual
{
_tmpFrmVirtual.TableNum = _tableId;
_tmpFrmVirtual.RecordNo = _recId;
_tmpFrmVirtual.Id = _id;
_tmpFrmVirtual.LineNum = _lineNum;
_tmpFrmVirtual.TransDate = _transDate;
_tmpFrmVirtual.Qty = _qty;

_tmpFrmVirtual.write();
}
;
// if we want to copy with header.
//writeTmpFrmVirtual(tmpFrmVirtualHeader,
// purchTableFrom.TableId,
// purchTableFrom.RecId,
// purchTableFrom.PurchId);
//tmpFrmVirtualHeaderList.addEnd(tmpFrmVirtualHeader);
while select purchLineFrom
where purchLineFrom.PurchId == purchTableFrom.PurchId
{
tmpFrmVirtualLines.clear();
tmpFrmVirtualLines.initValue();
writeTmpFrmVirtual(tmpFrmVirtualLines,
purchLineFrom.TableId,
purchLineFrom.RecId,
purchLineFrom.PurchId,
purchLineFrom.LineNumber,
systemdateget(),
purchLineFrom.PurchQty);
tmpFrmVirtualLinesList.addEnd(tmpFrmVirtualLines);
}

contract = PurchCopyingPurchTableContract::construct(); 
contract.parmCallingTable(purchTableTo);
contract.parmPackedTmpFrmVirtualLines(tmpFrmVirtualLinesList.pack());
contract.parmPackedTmpFrmVirtualHeader(tmpFrmVirtualHeaderList.pack());
contract.parmQtyFactor(qtyFactor);
contract.parmReverseSign(reverseSign);
contract.parmRecalculateAmount(recalculateAmount);
contract.parmCopyMarkup(copyMarkup);
contract.parmCopyPrecisely(copyPrecisely);
contract.parmDeleteLines(deleteLines);

purchCopying.initParameters(contract);
purchCopying.copy(); // transaction will created inside method
}

转载于:https://www.cnblogs.com/fogfog/p/6077669.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值