packing slip posting

static void PurchaseorderPostingListen()
{
purchFormLetter purchFormLetter;
purchid PurchId;
PurchTable PurchTable;
purchparmtable purchParmtable;
ParmId parmId;
num packingSlipId;
purchline purchline;
purchparmline purchparmline;
;

packingSlipId=“876000000”;
PurchId= “574990000”;
PurchTable=PurchTable::find(purchid);
purchFormLetter = PurchFormLetter::construct(DocumentStatus::PackingSlip);
parmid=purchFormLetter.parmId(NumberSeq::newGetNum(CompanyInfo::numRefParmId()).num());
parmId= purchFormLetter.parmId();
//purchFormLetter.createParmUpdate(); -----can i replace .createparmupdate with any other method?
purchParmtable= purchParmtable::find(purchid,parmid);
//purchFormLetter.createParmTable(purchParmTable,purchTable);
purchParmTable.Num = packingSlipId;
purchParmTable.insert();
while select purchLine
where purchLine.PurchId == purchTable.purchId
&& (purchLine.RemainPurchPhysical > 0)
{
purchParmLine.ParmId = purchParmTable.ParmId;
purchParmLine.InitFromPurchLine(purchLine);
purchParmLine.ReceiveNow = PurchLine.RemainPurchPhysical;

purchParmLine.setQty(DocumentStatus::PackingSlip,false, true);
purchParmLine.setLineAmount();
purchParmLine.insert();
}
purchFormLetter.proforma (false);
purchFormLetter.printFormLetter(true);
purchFormLetter.specQty (PurchUpdate::All);
purchFormLetter.transDate (today());
purchFormLetter.run();

}