The following is to create the PO for the journals on the button click event for the selected posted journals on ledgerJournalTable form which has TradeAgreement
Step 1 : Created one field TradeAgreement (TradeAgreement is associated with items on its master form) on LedgerJournalTable.
Step 2 : Create one edit method on LedgerJournalTable forms datasource Level to select the journals for PO creation.
The following is the method
Step 1 : Created one field TradeAgreement (TradeAgreement is associated with items on its master form) on LedgerJournalTable.
Step 2 : Create one edit method on LedgerJournalTable forms datasource Level to select the journals for PO creation.
The following is the method
public edit Noyes createPO(boolean _set, LedgerJournalTable _table, NoYes _value)
{
LedgerJournalTable updatePOCreation;
;
LedgerJournalTable_ds. allowEdit(true);
if (_set)
{
if(_table.Posted == Noyes::No)
{
throw error("Please choose posted record");
}
if(_value)
{
setRecordId.add(_table.RecId);
_value = NOYes::Yes;
}
else
{
setRecordId.remove(_table. RecId);
_value = NOYes::Yes;
}
}
return setRecordId.in(_table.RecId);
}
Drag this method on to the Design --> Overview --> Grid
Step 3 : Create a button and call the Class (which has PO Creation code) on its click() for selected journals
void clicked()
{
SS_POCreate creationOfPO;
boolean created;
LedgerJournalTable _ledgerJournalTable;
SetEnumerator setRetention, updateRetention;
SSRetentionReversal RetentionReversal;
;
super();
creationOfPO = new SS_POCreate();
RetentionReversal = SSRetentionReversal:: construct();
setRetention = Set::create(setRecordId.pack() ).getEnumerator();
updateRetention = Set::create(setRecordId.pack() ).getEnumerator();
if(!setRecordId.empty())
{
ttsbegin;
while(setRetention.moveNext())
{
select _ledgerJournalTable where _ledgerJournalTable.RecId == setRetention.current();
creationOfPO.createPO(_ ledgerJournalTable.JournalNum) ;
created = true;
}
ttscommit;
}
if(created)
{
info("PO's created sucessfully");
}
else
{
info("PO's creation failed");
}
}
Step 4 : The PO creation class should be as following
class SS_POCreate
{
PurchId purchaseId;
PurchTable purchaseTable;
PurchLine purchaseLines;
boolean created;
}
Void createPO(LedgerJournalId _journal)
{
SS_TradeAgreementId tradeAgreementId;
PurchTable purchTableCur;
;
tradeAgreementId = LedgerJournalTable::find(_ journal).SS_TradeAgreementId;
select purchaseTable where purchaseTable.SS_JournalNo == _journal;
if(purchaseTable.RecId)
{
throw error (strfmt("PO is already created for the Journal : %1 , so unable to create again for the same",_journal));
}
else
{
ttsbegin;
if(tradeAgreementId)
{
purchaseTable.PurchId = NumberSeq::newGetNumFromCode( NumberSequenceReference::find( extendedTypeNum(purchid)). NumberSequence,true,false). num();
purchaseTable.OrderAccount = SS_CategoryTradeAgreement:: find(tradeAgreementId).Vendor;
purchaseTable.InvoiceAccount = SS_CategoryTradeAgreement:: find(tradeAgreementId).Vendor;
purchaseTable.PurchaseType = PurchaseType::Purch;
purchaseTable.PurchStatus = PurchStatus::Backorder;
purchaseTable.PurchTypeCode = "Stock";
purchaseTable. initFromVendTable(VendTable:: find(SS_ CategoryTradeAgreement::find( tradeAgreementId).Vendor));
purchaseTable.PurchOrderType = PurchOrderType::Regular;
purchaseTable.SS_JournalNo = _journal;
purchaseTable.CurrencyCode = SS_CategoryTradeAgreement:: find(tradeAgreementId). Currency;
purchaseTable.insert();
if(purchaseTable.PurchId)
{
this.createPOLines( purchaseTable.PurchId ,tradeAgreementId);
}
ttscommit;
}
}
}
void createPOLines(PurchId _purchId ,SS_TradeAgreementId _tradeAgreementId)
{
InventDim _inventDim;
InventItemLocation inventItemLocation;
Inventlocation inventLocation;
InventTable inventTable;
;
purchaseLines.clear();
purchaseLines.PurchId = _purchId;
purchaseLines.ItemId = SS_CategoryTradeAgreement:: find(_tradeAgreementId). ItemId;
inventTable = inventTable::find( purchaseLines.ItemId);
purchaseLines.PurchUnit = inventTable.purchUnitId();
purchaseLines.PurchQty = 1;
purchaseLines.PurchPrice = SS_CategoryTradeAgreement:: find(_tradeAgreementId).Rate;
purchaseLines.CurrencyCode = SS_CategoryTradeAgreement:: find(_tradeAgreementId). Currency;
purchaseLines.PurchStatus = PurchStatus::Backorder;
purchaseLines.PurchaseType = PurchaseType::Purch;
purchaseLines.LineAmount = purchaseLines.PurchQty * purchaseLines.PurchPrice;
purchaseLines.LineNum = PurchLine::lastLineNum(_ purchId) + 1.0;
select firstonly InventItemLocation
where InventItemLocation.ItemId == purchaseLines.ItemId
&& InventItemLocation.inventDimId != "AllBlank";
if(InventItemLocation.RecId)
{
_inventDim.InventSiteId = InventLocation::find( InventDim::find( InventItemLocation. inventDimId).InventLocationId) .InventSiteId;
_inventDim.InventLocationId = InventDim::find( InventItemLocation. inventDimId).InventLocationId;
purchaseLines.InventDimId = InventDim::findOrCreate(_ inventDim).inventDimId;
purchaseLines.insert();
}
else
{
throw error(strfmt("Warehouse item setup could not find for the item :%1 ",purchaseLines.ItemId));
}
}
static SS_POCreate construct()
{
return new SS_POCreate();
}
No comments:
Post a Comment