private void CreateExpenseJournal(TransactionID _transId, Ledgerjournaltable _ledgerjournaltable )
{
// LedgerJournalTable ledgerJournaltable;
LedgerJournalTrans ledgerJournalTrans, ledgerJournalTransRef;
LedgerJournalTrans_Project ledgerJournalTrans_Proj, ledgerJournalTrans_Projlocal;
NumberSequenceTable numberSequenceTable;
Voucher voucher;
LedgerJournalTrans_ProjectTaxExtensionIN ledgerJournalTrans_ProjectTaxExtensionIN;
select ledgerJournalTrans_Proj
where ledgerJournalTrans_Proj.TransId == _transId;
select ledgerJournalTransRef
where ledgerJournalTransRef.RecId == ledgerJournalTrans_Proj.RefRecId;
ttsbegin;
ledgerJournalTrans.clear();
ledgerJournalTrans.initValue();
ledgerJournalTrans.initFromLedgerJournalTable_LT(_ledgerjournaltable);
numberSequenceTable = NumberSequenceTable::find(LedgerJournalName::find(_ledgerjournaltable.JournalName).NumberSequenceTable);
voucher = NumberSeq::newGetVoucherFromCode(numberSequenceTable.NumberSequence).voucher();
ledgerJournalTrans.Voucher = voucher;
ledgerJournalTrans.JournalNum = _ledgerjournaltable.JournalNum;
ledgerJournalTrans.DefaultDimension = ledgerJournalTransRef.DefaultDimension;
ledgerJournalTrans.TransDate = ledgerJournalTransRef.TransDate;
ledgerJournalTrans.LedgerDimension = ledgerJournalTransRef.LedgerDimension;
ledgerJournalTrans.Txt = ledgerJournalTransRef.Txt;
ledgerJournalTrans.CurrencyCode = ledgerJournalTransRef.CurrencyCode;
ledgerJournalTrans.OffsetAccountType = ledgerJournalTransRef.OffsetAccountType;
ledgerJournalTrans.OffsetLedgerDimension = ledgerJournalTransRef.OffsetLedgerDimension;
ledgerJournalTrans.AccountType = ledgerJournalTransRef.AccountType;
ledgerJournalTrans.TaxGroup = ledgerJournalTransRef.TaxGroup;
ledgerJournalTrans.TaxItemGroup = ledgerJournalTransRef.TaxItemGroup;
ledgerJournalTrans.Qty = ledgerJournalTransRef.Qty;
ledgerJournalTrans.ExchRate = ledgerJournalTransRef.ExchRate;
ledgerJournalTrans.insert();
ledgerJournalTrans.write();
// ledgerJournalTrans
ledgerJournalTrans_Projlocal.initValue();
ledgerJournalTrans_Projlocal.RefRecId = ledgerJournalTrans.RecId;
ledgerJournalTrans_Projlocal.ProjTransDate = ledgerJournalTrans_Proj.ProjTransDate;
ledgerJournalTrans_Projlocal.ActivityNumber = ledgerJournalTrans_Proj.ActivityNumber;
ledgerJournalTrans_Projlocal.CategoryId = ledgerJournalTrans_Proj.CategoryId;
ledgerJournalTrans_Projlocal.Worker = ledgerJournalTrans_Proj.Worker;
ledgerJournalTrans_Projlocal.Qty = ledgerJournalTrans_Proj.Qty * -1;
ledgerJournalTrans_Projlocal.CostPrice = ledgerJournalTrans_Proj.CostPrice *-1;
ledgerJournalTrans_Projlocal.SalesPrice = ledgerJournalTrans_Proj.SalesPrice * -1;
ledgerJournalTrans_Projlocal.LinePropertyId = ledgerJournalTrans_Proj.LinePropertyId;
// added by kiran
ledgerJournalTrans_Projlocal.SalesCurrencyId = ledgerJournalTransRef.CurrencyCode;
ledgerJournalTrans_Projlocal.ProjId = ledgerJournalTrans_Proj.ProjId;
ledgerJournalTrans_Projlocal.Ale_ProjInvoiceId = ProjInvoiceCost::findTransId(_transId).ProjInvoiceId;
ledgerJournalTrans_Projlocal.PositionId = ledgerJournalTrans_Proj.PositionId;
ledgerJournalTrans_Projlocal.ALE_PeriodName = ledgerJournalTrans_Proj.ALE_PeriodName;
ledgerJournalTrans_Projlocal.insert();
ledgerJournalTrans_Projlocal.write();
ledgerJournalTrans_ProjectTaxExtensionIN.clear();
ledgerJournalTrans_ProjectTaxExtensionIN.AssessableValue = (ledgerJournalTrans_Projlocal.Qty*ledgerJournalTrans_Projlocal.SalesPrice) * -1;
ledgerJournalTrans_ProjectTaxExtensionIN.LedgerJournalTrans_Project = ledgerJournalTrans_Projlocal.RecId;
ledgerJournalTrans_ProjectTaxExtensionIN.insert();
ttscommit;
}
private void CreateHourJournal(TransactionID _transId, projJournalTable _projtable )
{
ProjJournalTable projJournalTable;
ProjJournalTrans projJournalTrans, projJournalTransRef;
ProjInvoiceEmpl projinvoiceempl;
NumberSeq numberSeq;
ProjJournalTransTaxExtensionIN projJournalTransTaxExtensionIN, projJournalTransTaxExtensionINlocal;
// projinvoiceempl = ProjInvoiceEmpl::findRecId(_RefRecId);
select projJournalTransRef
where projJournalTransRef.TransId == _transId;
projJournalTransTaxExtensionIN = ProjJournalTransTaxExtensionIN::findByProjJournalTrans(projJournalTransRef.RecId);
projJournalTrans.clear();
projJournalTrans.initValue();
projJournalTrans.initFromProjJournalTable(_projtable);
projJournalTrans.setTransDate();
projJournalTrans.TransDate = projJournalTransRef.TransDate;
projJournalTrans.CurrencyId = projJournalTransRef.CurrencyId;
projJournalTrans.DefaultDimension= projJournalTransRef.DefaultDimension;
projJournalTrans.TaxGroupId = projJournalTransRef.TaxGroupId;
numberSeq = NumberSeq::newGetVoucherFromId(_projtable.VoucherNumberSequenceTable, false);
projJournalTrans.Voucher = numberSeq.voucher();
projJournalTrans.ProjId = projJournalTransRef.ProjId;
projJournalTrans.SalesPrice = projJournalTransRef.SalesPrice;
projJournalTrans.ActivityNumber = projJournalTransRef.ActivityNumber;
projJournalTrans.CategoryId = projJournalTransRef.CategoryId;
projJournalTrans.Worker = projJournalTransRef.Worker;
projJournalTrans.Txt = projJournalTransRef.Txt;
projJournalTrans.Qty = projJournalTransRef.Qty* -1;
projJournalTrans.ProjTransDate = projJournalTransRef.ProjTransDate;
projJournalTrans.PositionId = projJournalTransRef.PositionId;
//projJournalTrans.ALE_PeriodName = projJournalTransRef.ALE_PeriodName;
projJournalTrans.LinePropertyId =projJournalTransRef.LinePropertyId;
projJournalTrans.ReverseEntry = projJournalTransRef.ReverseEntry;
projJournalTrans.ALE_Absent = projJournalTransRef.ALE_Absent;
projJournalTrans.ALE_Holiday = projJournalTransRef.ALE_Holiday;
projJournalTrans.ALE_PeriodName = projJournalTransRef.ALE_PeriodName;
projJournalTrans.ALE_Present = projJournalTransRef.ALE_Present;
projJournalTrans.Ale_ProjInvoiceId = ProjInvoiceEmpl::findTransId(_transId).ProjInvoiceId;
projJournalTrans.Ale_WorkerName = HcmWorker::find(projJournalTrans.Worker).name();
projJournalTrans.Ale_PositionName = HcmPosition::findByPosition(projJournalTrans.PositionId).description();
projJournalTrans.insert();
//projJournalTransTaxExtensionINlocal.initValue();
select projJournalTransTaxExtensionINlocal where projJournalTransTaxExtensionINlocal.ProjJournalTrans == projJournalTrans.RecId;
if(!projJournalTransTaxExtensionINlocal)
{
projJournalTransTaxExtensionINlocal.clear();
projJournalTransTaxExtensionINlocal.AssessableValue = projJournalTransTaxExtensionIN.AssessableValue * -1;
//projJournalTransTaxExtensionINlocal.CompanyLocation = projJournalTransTaxExtensionIN.CompanyLocation;
projJournalTransTaxExtensionINlocal.ProjJournalTrans = projJournalTrans.RecId;
projJournalTransTaxExtensionINlocal.insert();
}
else
{
ttsbegin;
projJournalTransTaxExtensionINlocal.selectForUpdate(true);
projJournalTransTaxExtensionINlocal.AssessableValue = projJournalTransTaxExtensionIN.AssessableValue * -1;
projJournalTransTaxExtensionINlocal.ProjJournalTrans = projJournalTrans.RecId;
projJournalTransTaxExtensionINlocal.update();
ttscommit;
}
}
void run()
{
ProjJournalTable projJournalTable, projJournalTableLocal, projJournalTableUpdate;
LedgerJournalTable ledgerjournaltable, ledgerjournaltablelocal;
ProjEmplTransSale projEmplTransSalelocal;
ProjJournalTrans projJournalTranshour;
boolean projtranscheck = false, projinvoicecostcheck = false;
ProjInvoiceCostDetail projinvoicecostdetail;
ProjInvoiceCost projInvoiceCost;
ProjCostTransSale ProjCostTransSaleLocal;
ListIterator li = new ListIterator(list);
#ISOCountryRegionCodes
projCreditInvoicing = true;
//ttsBegin;
projJournalTable.clear();
projJournalTable.initValue();
projJournalTable.JournalNameId = "CreditNote";
projJournalTable.JournalType =ProjJournalType::Hour;
projJournalTable.initFromProjJournalName(ProjJournalName::find(projJournalTable.JournalNameId));
projJournalTable.insert();
ledgerjournaltable.clear();
ledgerjournaltable.initValue();
ledgerjournaltable.initFromLedgerJournalName("CreditNote");
ledgerjournaltable.JournalType = LedgerJournalType::Cost;
ledgerjournaltable.JournalName = "CreditNote";
//ledgerjournaltable.initFromLedgerJournalName(ledgerjournaltable.JournalName);
ledgerjournaltable.insert();
li.begin();
while (li.more())
{
tmpFrmVirtual = li.value();
switch (tmpFrmVirtual.TableNum)
{
// project transactions
case tableNum(ProjInvoiceEmplDetail) :
// this.doProjInvoiceEmpl(tmpFrmVirtual.RefRecId);
projEmplTransSalelocal = ProjEmplTransSale::find(tmpFrmVirtual.RefRecId); // to do
if (projEmplTransSalelocal)
{
this.CreateHourJournal(projEmplTransSalelocal.TransId,projJournalTable); // to do
projtranscheck = true;
}
break;
case tableNum(ProjInvoiceCostDetail) :
// this.doProjInvoiceCost(tmpFrmVirtual.RefRecId);
ProjCostTransSaleLocal = ProjCostTransSale::find(tmpFrmVirtual.RefRecId);
if(ProjCostTransSaleLocal)
{
this.CreateExpenseJournal(ProjCostTransSaleLocal.TransId,ledgerjournaltable); // to do
projinvoicecostcheck = true;
}
break;
case tableNum(ProjInvoiceRevenueDetail) :
// this.doProjInvoiceRevenue(tmpFrmVirtual.RefRecId);
break;
case tableNum(ProjInvoiceItemDetail) :
//this.doProjInvoiceItem(tmpFrmVirtual.RefRecId);
break;
case tableNum(ProjInvoiceOnAccDetail) :
// this.doProjInvoiceOnAcc(tmpFrmVirtual.RefRecId);
break;
default:
throw error("@SYS50049");
}
//if (projCreditInvoicing)
//{
// this.doCreditInvoicing(tmpFrmVirtual.RefRecId, tmpFrmVirtual.TableNum);
//}
li.next();
}
if (projtranscheck == false)
{
delete_from projJournalTableLocal
where projJournalTableLocal.RecId == projJournalTable.RecId;
}
else
{
select sum(Qty) from projJournalTranshour
where projJournalTranshour.RecId == projJournalTable.RecId;
projJournalTable.selectForUpdate(true);
projJournalTable.ProjQty = projJournalTranshour.Qty;
projJournalTable.update();
info(strFmt("%1 hour journal has been created", projJournalTable.JournalId));
}
if(projinvoicecostcheck == false)
{
delete_from ledgerjournaltablelocal
where ledgerjournaltablelocal.RecId == ledgerjournaltable.RecId;
}
else
{
info(strFmt("%1 Expense journal has been created", ledgerjournaltable.JournalNum));
}
//ttsCommit;
}
No comments:
Post a Comment