Friday, 17 May 2019
Thursday, 16 May 2019
Open posted Ledger Journals(Expense Journal) from listpage in ax 2012
Open posted Ledger Journals(Expense Journal) from listpage in ax 2012
void clicked()
{
#define.NewButton('NewButton')
#define.AllOpenPostedButton('AllOpenPostedField')
FormRun formRun;
FormDataSource formDataSource;
QueryBuildDataSource queryBuildDataSource;
FormControl formControlPosted, formControlNew;
super();
formRun = new MenuFunction(menuitemDisplayStr(LedgerJournalTable),MenuItemType::Display).create();
formdatasource = formrun.datasource();
querybuilddatasource = formdatasource.query().datasourcetable(tablenum(ledgerjournaltable));
querybuilddatasource.addrange(fieldnum(ledgerjournaltable, ale_projid)).value(projtable.projid);
querybuilddatasource.addrange(fieldnum(ledgerjournaltable, Posted)).value(SysQuery::value(1));
formControlPosted = formRun.design().controlName(#AllOpenPostedButton);
formControlPosted.visible(false);
formControlNew = formRun.design().controlName(#NewButton);
formControlNew.visible(false);
formRun.run();
}
Wednesday, 1 May 2019
create ledger Dimension for the new values(which are not available in DAVcombination table)
create ledger Dimension for the new values(which are not available in DAVcombination table)
if(ledgerDimensionvalueCombination.recid != 0)
{
ledgerJournalTrans.ledgerDimension = ledgerDimensionvalueCombination.recid;
}
else
{
recId = DimensionStorage::getDynamicAccount(_projForecastUnion.ProjId, 3, 129);
davc = DimensionAttributeValueCombination::find(recId);
ledgerJournalTrans.DefaultDimension = davc.RecId;
}
Ledger Offset Account Update in Expense journals.
MainAccount must.
ledgerJournalTrans.OffsetLedgerDimension = DimensionDefaultingService::serviceCreateLedgerDimension( projPosting.LedgerDimension,ledgerJournalTrans.DefaultDimension,defaultDimensionView.DefaultDimension,defaultDimension);
////////////////////////////////////////////////////////////////////////////
public static str Tri_WorkerPersonelNo(DimensionDefault _defaultDimension)
{
DimensionAttributeValueSet DimensionAttributeValueSet;
DimensionAttributeValueSetItem DimensionAttributeValueSetItem;
DimensionAttributeValue DimensionAttributeValue;
DimensionAttribute DimensionAttribute;
Name dimvalue,worker,workername;
select DimensionAttributeValueSet
where DimensionAttributeValueSet.RecId == _defaultDimension
join RecId, DisplayValue from DimensionAttributeValueSetItem
where DimensionAttributeValueSetItem.DimensionAttributeValueSet == DimensionAttributeValueSet.RecId
join RecId from DimensionAttributeValue
where DimensionAttributeValue.RecId == DimensionAttributeValueSetItem.DimensionAttributeValue
join RecId, Name from DimensionAttribute
where DimensionAttribute.RecId == DimensionAttributeValue.DimensionAttribute && DimensionAttribute.Name == "Worker";
worker = DimensionAttributeValueSetItem.DisplayValue;
//workername = HcmWorker::findByPersonnelNumber(worker).name();
return worker;
}
................................................................................................
if(ledgerDimensionvalueCombination.recid != 0)
{
ledgerJournalTrans.ledgerDimension = ledgerDimensionvalueCombination.recid;
}
else
{
recId = DimensionStorage::getDynamicAccount(_projForecastUnion.ProjId, 3, 129);
davc = DimensionAttributeValueCombination::find(recId);
ledgerJournalTrans.DefaultDimension = davc.RecId;
}
Ledger Offset Account Update in Expense journals.
MainAccount must.
ledgerJournalTrans.OffsetLedgerDimension = DimensionDefaultingService::serviceCreateLedgerDimension( projPosting.LedgerDimension,ledgerJournalTrans.DefaultDimension,defaultDimensionView.DefaultDimension,defaultDimension);
////////////////////////////////////////////////////////////////////////////
public static str Tri_WorkerPersonelNo(DimensionDefault _defaultDimension)
{
DimensionAttributeValueSet DimensionAttributeValueSet;
DimensionAttributeValueSetItem DimensionAttributeValueSetItem;
DimensionAttributeValue DimensionAttributeValue;
DimensionAttribute DimensionAttribute;
Name dimvalue,worker,workername;
select DimensionAttributeValueSet
where DimensionAttributeValueSet.RecId == _defaultDimension
join RecId, DisplayValue from DimensionAttributeValueSetItem
where DimensionAttributeValueSetItem.DimensionAttributeValueSet == DimensionAttributeValueSet.RecId
join RecId from DimensionAttributeValue
where DimensionAttributeValue.RecId == DimensionAttributeValueSetItem.DimensionAttributeValue
join RecId, Name from DimensionAttribute
where DimensionAttribute.RecId == DimensionAttributeValue.DimensionAttribute && DimensionAttribute.Name == "Worker";
worker = DimensionAttributeValueSetItem.DisplayValue;
//workername = HcmWorker::findByPersonnelNumber(worker).name();
return worker;
}
................................................................................................
Tuesday, 30 April 2019
Create default dimensions
Create default dimensions
private void createDefaultDimensions(ProjForecastUnion _projForecastUnion)
{
DimensionAttributeValueSetStorage dimStorage;
ProjTable ProjTable;
Counter i;
DimensionAttribute dimensionAttribute;
DimensionAttributeValue dimensionAttributeValue;
DimensionAttributeValueSetItem dimensionAttributeValueSetItem;
DimensionAttributeValueSetStorage valueSetStorage = new DimensionAttributeValueSetStorage();
DimensionDefault defaultDim;
container conAttribute, conAttributeValue;
DimensionValue BusinessLine, BusinessUnit, Department, Project, ProjectcategoryItem,
Projectpurpose, Purpose, Region, Site, Vehicle, Worker;
dimStorage = DimensionAttributeValueSetStorage::find(ProjForecastCost::find(_projForecastUnion.TransId).DefaultDimension);
for (i=0 ; i<= dimStorage.elements() ; i++)
{
if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "BusinessLine")
{
BusinessLine = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "BusinessUnit")
{
BusinessUnit = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Department")
{
Department = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Project")
{
Project = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "ProjectcategoryItem")
{
ProjectcategoryItem = dimStorage.getDisplayValueByIndex(i);
if(ProjectcategoryItem == '')
{
ProjectcategoryItem = _projForecastUnion.CategoryId;
}
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Projectpurpose")
{
Projectpurpose = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Purpose")
{
Purpose = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Region")
{
Region = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Site")
{
Site = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Vehicle")
{
Vehicle = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Worker")
{
Worker = dimStorage.getDisplayValueByIndex(i);
}
}
conAttribute = conNull();
conAttributeValue = conNull();
conAttribute = conIns(conAttribute,1,'BusinessLine');
conAttributeValue = conIns(conAttributeValue, 1, BusinessLine);
conAttribute = conIns(conAttribute,2,'BusinessUnit');
conAttributeValue = conIns(conAttributeValue, 2, BusinessUnit);
conAttribute = conIns(conAttribute,3,'Department');
conAttributeValue = conIns(conAttributeValue, 3, Department);
conAttribute = conIns(conAttribute,4,'Project');
conAttributeValue = conIns(conAttributeValue, 4, Project);
conAttribute = conIns(conAttribute,5,'ProjectcategoryItem');
conAttributeValue = conIns(conAttributeValue, 5, ProjectcategoryItem);
conAttribute = conIns(conAttribute,6,'Projectpurpose');
conAttributeValue = conIns(conAttributeValue, 6, Projectpurpose);
conAttribute = conIns(conAttribute,7,'Purpose');
conAttributeValue = conIns(conAttributeValue, 7, Purpose);
conAttribute = conIns(conAttribute,8,'Region');
conAttributeValue = conIns(conAttributeValue, 8, Region);
conAttribute = conIns(conAttribute,9,'Site');
conAttributeValue = conIns(conAttributeValue, 9, Site);
conAttribute = conIns(conAttribute,10,'Vehicle');
conAttributeValue = conIns(conAttributeValue, 10, Vehicle);
conAttribute = conIns(conAttribute,11,'Worker');
conAttributeValue = conIns(conAttributeValue, 11, Worker);
for (i = 1; i <= conLen(conAttribute); i++)
{
dimensionAttribute = dimensionAttribute::findByName(conPeek(conAttribute,i));
if (dimensionAttribute.RecId == 0)
{
continue;
}
if (conPeek(conAttributeValue,i) != "")
{
dimensionAttributeValue = dimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute,conPeek(conAttributeValue,i),false,true);
valueSetStorage.addItem(dimensionAttributeValue);
}
defaultDimension = valueSetStorage.save();
}
}
private void createDefaultDimensions(ProjForecastUnion _projForecastUnion)
{
DimensionAttributeValueSetStorage dimStorage;
ProjTable ProjTable;
Counter i;
DimensionAttribute dimensionAttribute;
DimensionAttributeValue dimensionAttributeValue;
DimensionAttributeValueSetItem dimensionAttributeValueSetItem;
DimensionAttributeValueSetStorage valueSetStorage = new DimensionAttributeValueSetStorage();
DimensionDefault defaultDim;
container conAttribute, conAttributeValue;
DimensionValue BusinessLine, BusinessUnit, Department, Project, ProjectcategoryItem,
Projectpurpose, Purpose, Region, Site, Vehicle, Worker;
dimStorage = DimensionAttributeValueSetStorage::find(ProjForecastCost::find(_projForecastUnion.TransId).DefaultDimension);
for (i=0 ; i<= dimStorage.elements() ; i++)
{
if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "BusinessLine")
{
BusinessLine = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "BusinessUnit")
{
BusinessUnit = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Department")
{
Department = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Project")
{
Project = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "ProjectcategoryItem")
{
ProjectcategoryItem = dimStorage.getDisplayValueByIndex(i);
if(ProjectcategoryItem == '')
{
ProjectcategoryItem = _projForecastUnion.CategoryId;
}
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Projectpurpose")
{
Projectpurpose = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Purpose")
{
Purpose = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Region")
{
Region = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Site")
{
Site = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Vehicle")
{
Vehicle = dimStorage.getDisplayValueByIndex(i);
}
else if (DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == "Worker")
{
Worker = dimStorage.getDisplayValueByIndex(i);
}
}
conAttribute = conNull();
conAttributeValue = conNull();
conAttribute = conIns(conAttribute,1,'BusinessLine');
conAttributeValue = conIns(conAttributeValue, 1, BusinessLine);
conAttribute = conIns(conAttribute,2,'BusinessUnit');
conAttributeValue = conIns(conAttributeValue, 2, BusinessUnit);
conAttribute = conIns(conAttribute,3,'Department');
conAttributeValue = conIns(conAttributeValue, 3, Department);
conAttribute = conIns(conAttribute,4,'Project');
conAttributeValue = conIns(conAttributeValue, 4, Project);
conAttribute = conIns(conAttribute,5,'ProjectcategoryItem');
conAttributeValue = conIns(conAttributeValue, 5, ProjectcategoryItem);
conAttribute = conIns(conAttribute,6,'Projectpurpose');
conAttributeValue = conIns(conAttributeValue, 6, Projectpurpose);
conAttribute = conIns(conAttribute,7,'Purpose');
conAttributeValue = conIns(conAttributeValue, 7, Purpose);
conAttribute = conIns(conAttribute,8,'Region');
conAttributeValue = conIns(conAttributeValue, 8, Region);
conAttribute = conIns(conAttribute,9,'Site');
conAttributeValue = conIns(conAttributeValue, 9, Site);
conAttribute = conIns(conAttribute,10,'Vehicle');
conAttributeValue = conIns(conAttributeValue, 10, Vehicle);
conAttribute = conIns(conAttribute,11,'Worker');
conAttributeValue = conIns(conAttributeValue, 11, Worker);
for (i = 1; i <= conLen(conAttribute); i++)
{
dimensionAttribute = dimensionAttribute::findByName(conPeek(conAttribute,i));
if (dimensionAttribute.RecId == 0)
{
continue;
}
if (conPeek(conAttributeValue,i) != "")
{
dimensionAttributeValue = dimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute,conPeek(conAttributeValue,i),false,true);
valueSetStorage.addItem(dimensionAttributeValue);
}
defaultDimension = valueSetStorage.save();
}
}
Thursday, 25 April 2019
Generate expense Journal Lines in Proj Module
Generate expense Journal Lines in Proj Module
class ALE_GenerateExpenseJournalLines extends RunBase
{
int recordsCount;
TransDate fromDate,toDate;
ProjId projId;
Name peroid;
LedgerJournalId journalId,journalIdLoc;
DialogField dlgPeriod;
DialogField dlgProjId;
#define.CurrentVersion(1)
#localmacro.CurrentList
peroid,
projId
#endmacro
}
//////////////////////////////////////////////////
public static void main(Args args)
{
JournalId journalId;
LedgerJournalTable ledgerJournalTable;
ALE_GenerateExpenseJournalLines generateExpenseJournalLines = new ALE_GenerateExpenseJournalLines();
ledgerJournalTable = args.record();
journalId = ledgerJournalTable.JournalNum;
generateExpenseJournalLines.getJournalId(journalId);
if(generateExpenseJournalLines.prompt())
{
generateExpenseJournalLines.run();
}
}
.................................................................................
protected Object dialog()
{
Dialog dialog;
FormStringControl controlPeriodName;
dialog = super();
dialog.caption('Generate Expense Journal lines');
dlgPeriod = dialog.addFieldValue(extendedTypeStr(Name),peroid);
dlgProjId = dialog.addFieldValue(extendedTypeStr(ProjId),projId);
controlPeriodName = dlgPeriod.control();
controlPeriodName.registerOverrideMethod(methodStr(FormStringControl, lookup),methodStr(ALE_GenerateJournalLines,lookupPeriodName), this);
return dialog;
}
.................................................................................................
public boolean getFromDialog()
{
boolean ret;
ret = super();
peroid = dlgPeriod.value();
projId = dlgProjId.value();
return ret;
}
...............................................................................................
public void getJournalId(JournalId journalIdB)
{
journalId = journalIdB;
}
....................................................................
public void lookupPeriodName(FormStringControl _control)
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(Ale_PeriodMaster),_control);
sysTableLookup.addLookupField(fieldNum(Ale_PeriodMaster, Name));
queryBuildDataSource = query.addDataSource(tableNum(Ale_PeriodMaster));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
...............................................................................
public container pack()
{
return [#CurrentVersion,#CurrentList];
}
...........................................................................
public void run()
{
ProjForecastUnion projForecastUnion;
LedgerJournalTable ledgerJournalTableLoc;
Ale_VehicleUploader vehicleUploader;
Ale_PeriodMaster periodMaster;
TransDate periodFromDate,periodToDate;
ALE_GenerateExpenseJournalLines generareJournalLines = new ALE_GenerateExpenseJournalLines();
journalIdLoc = journalId;
select StartDate,Enddate from periodMaster where periodMaster.Name == peroid;
periodFromDate = periodMaster.StartDate;
periodToDate = periodMaster.Enddate;
try
{
ttsBegin;
ledgerJournalTableLoc = LedgerJournalTable::find(journalIdLoc);
if(LedgerJournalName::find(LedgerJournalTable::find(journalIdLoc).JournalName).Ale_VehiclePrice != NoYes::Yes)
{
while select projForecastUnion group by ProjId,CategoryId,Ale_Period where projForecastUnion.ProjId == projId
&& projForecastUnion.Ale_Period == peroid
&& projForecastUnion.ProjTransType == ProjTransType::Cost
{
recordsCount++;
generareJournalLines.createExpenseJournals(projForecastUnion,journalIdLoc);
}
}
info(strFmt('%1 journals has been created',recordsCount));
ttsCommit;
}
catch(Exception::Deadlock)
{
error('Caught an exception');
retry;
}
}
..............................................................................
public boolean unpack(container packedClass)
{
Integer version = conPeek(packedClass,1);
switch (version)
{
case #CurrentVersion :
[version,#CurrentList] = packedClass;
break;
default :
return false;
}
return true;
}
......................................................................./////////////////////////???????????????????
private void createExpenseJournals(ProjForecastUnion _projForecastUnion,LedgerJournalId _journalId)
{
ProjPosting projPosting;
ProjSalesAmount salesAmount;
int64 recId,ledgerDim;
AmountMST expenseAssesableValue;
//ProjForecastUnion projForecastUnionTransId;
AxLedgerJournalTable axLedgerJournalTable = new AxLedgerJournalTable();
AxLedgerJournalTrans axLedgerJournalTrans = new AxLedgerJournalTrans();
ProjForecastUnion projForecastUnionLoc,projForecastUnionCat;
ProjBudgetLineDetail projBudgetLineDetail;
ProjForecastCost projForecastCost;
LedgerJournalTable ledgerJournalTable,ledgerJournalTableLoc;
LedgerJournalTrans ledgerJournalTrans;
NumberSequenceTable numberSequenceTable;
LedgerJournalTrans_Project ledgerJournalTrans_Project;
LedgerJournalTrans_ProjectTaxExtensionIN ledgerJournalTrans_ProjectTaxExtensionIN;
DefaultDimensionView defaultDimensionView;
DimensionAttributeValueCombination ledgerDimensionvalueCombination;
DimensionAttributeValueCombination davc;
ProjTable projTable;
projForecastUnionLoc.clear();
select Worker,CurrencyId,Qty,LinePropertyId,TransId from projForecastUnionLoc where projForecastUnionLoc.ProjId == _projForecastUnion.ProjId
&& projForecastUnionLoc.CategoryId == _projForecastUnion.CategoryId
&& projForecastUnionLoc.Ale_PositionId == _projForecastUnion.Ale_PositionId
&& projForecastUnionLoc.Ale_Period == _projForecastUnion.Ale_Period;
ledgerJournalTable = LedgerJournalTable::find(_journalId);
ledgerJournalTrans.JournalNum = axLedgerJournalTable.LedgerJournalTable().JournalNum;
//ledgerJournalTrans.DefaultDimension = DimensionDefault;
ledgerJournalTrans.AccountType = LedgerJournalACTypE::Project;
numberSequenceTable = NumberSequenceTable::find(LedgerJournalName::find(ledgerJournalTable.JournalName).NumberSequenceTable);
ledgerJournalTrans.Voucher = NumberSeq::newGetVoucherFromCode(numberSequenceTable.NumberSequence).voucher();
select firstonly ProjId from projTable join RecId from ledgerDimensionvalueCombination where ledgerDimensionvalueCombination.DisplayValue == projTable.ProjId
&& projTable.ProjId == _projForecastUnion.ProjId;
select LedgerDimension from projPosting where projPosting.ProjCategoryRelation == _projForecastUnion.CategoryId
&& projPosting.CategoryCode == TableGroupAll::Table;
select DefaultDimension from defaultDimensionView where defaultDimensionView.DisplayValue == HcmWorker::find(ProjForecastCost::find(projForecastUnionLoc.TransId).Worker).PersonnelNumber;
ledgerJournalTrans.JournalNum = ledgerJournalTable.JournalNum;
ledgerJournalTrans.Company = curext();
ledgerJournalTrans.CurrencyCode = projForecastUnionLoc.CurrencyId;//ProjTable::find(_projForecastUnion.ProjId).DefaultDimension
ledgerJournalTrans.DefaultDimension = DimensionDefaultingService::serviceMergeDefaultDimensions(ProjForecastCost::find(projForecastUnionLoc.TransId).DefaultDimension,defaultDimensionView.DefaultDimension);
ledgerJournalTrans.Qty = projForecastUnionLoc.Qty;
ledgerJournalTrans.TransDate = systemDateGet();
this.createDefaultDimensions(_projForecastUnion,projForecastUnionLoc);
if(HcmWorker::find(ProjForecastCost::find(projForecastUnionLoc.TransId).Worker).PersonnelNumber)
{
//ledgerDim = DimensionDefaultingService::serviceCreateLedgerDimension(projPosting.LedgerDimension);//,ledgerJournalTrans.DefaultDimension,defaultDimensionView.DefaultDimension
//ledgerJournalTrans.OffsetLedgerDimension = DimensionDefaultingService::serviceMergeDefaultDimensions(ledgerDim,defaultDimensionView.DefaultDimension);
ledgerJournalTrans.OffsetLedgerDimension = DimensionDefaultingService::serviceCreateLedgerDimension(projPosting.LedgerDimension,ledgerJournalTrans.DefaultDimension,defaultDimension);
}
else
{
select DefaultDimension from defaultDimensionView where defaultDimensionView.DisplayValue == 'Blank';
ledgerJournalTrans.OffsetLedgerDimension = DimensionDefaultingService::serviceCreateLedgerDimension( projPosting.LedgerDimension,ledgerJournalTrans.DefaultDimension,defaultDimensionView.DefaultDimension,defaultDimension);
}
if(ledgerDimensionvalueCombination.recid != 0)
{
ledgerJournalTrans.ledgerDimension = ledgerDimensionvalueCombination.recid;
}
else
{
recId = DimensionStorage::getDynamicAccount(_projForecastUnion.ProjId, 3, 129);
davc = DimensionAttributeValueCombination::find(recId);
ledgerJournalTrans.DefaultDimension = davc.RecId;
}
ledgerJournalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
ledgerJournalTrans.insert();
// Strat by somendra
if(ledgerJournalTrans.recid)
{
select forUpdate ledgerJournalTableLoc where ledgerJournalTableLoc.JournalNum == ledgerJournalTrans.JournalNum;
ledgerJournalTableLoc.ALE_ProjId = _projForecastUnion.ProjId;//projTable.ProjId;//projId;
ledgerJournalTableLoc.Ale_Period = _projForecastUnion.Ale_Period;
ledgerJournalTableLoc.update();
}
//End by somendra
salesAmount = 0;
while select TransId from projForecastUnionCat where projForecastUnionCat.ProjId == _projForecastUnion.ProjId
&& projForecastUnionCat.CategoryId == _projForecastUnion.CategoryId
&& projForecastUnionCat.Ale_Period == _projForecastUnion.Ale_Period
&& projForecastUnionCat.ProjTransType == ProjTransType::Cost
{
//select SalesPrice from projBudgetLineDetail where projBudgetLineDetail.Ale_TransactionID == projForecastUnionCat.TransId; //
//salesAmount += projBudgetLineDetail.SalesPrice;
while select SalesPrice from projForecastCost where projForecastCost.TransId == projForecastUnionCat.TransId
{
salesAmount += projForecastCost.SalesPrice;
}
}
expenseAssesableValue = 0;
ledgerJournalTrans_Project.CategoryId = _projForecastUnion.CategoryId;
ledgerJournalTrans_Project.Qty = projForecastUnionLoc.Qty;
ledgerJournalTrans_Project.ALE_PeriodName = _projForecastUnion.Ale_Period;
ledgerJournalTrans_Project.ProjTransDate = systemDateGet();
ledgerJournalTrans_Project.SalesPrice = salesAmount;
ledgerJournalTrans_Project.SalesCurrencyId = projForecastUnionLoc.CurrencyId;
ledgerJournalTrans_Project.PositionId = _projForecastUnion.Ale_PositionId;
ledgerJournalTrans_Project.LinePropertyId = projForecastUnionLoc.LinePropertyId;
ledgerJournalTrans_Project.ProjId = _projForecastUnion.ProjId;
ledgerJournalTrans_Project.RefRecId = ledgerJournalTrans.RecId;
expenseAssesableValue = ledgerJournalTrans_Project.Qty * ledgerJournalTrans_Project.SalesPrice;
ledgerJournalTrans_Project.Worker = ProjForecastCost::find(projForecastUnionLoc.TransId).Worker;
ledgerJournalTrans_Project.insert();
ledgerJournalTrans_ProjectTaxExtensionIN.LedgerJournalTrans_Project = ledgerJournalTrans_Project.RecId;
ledgerJournalTrans_ProjectTaxExtensionIN.AssessableValue = expenseAssesableValue;
ledgerJournalTrans_ProjectTaxExtensionIN.insert();
ledgerJournalTrans_Project.clear();
ledgerJournalTrans.clear();
}
........................................................................................
class ALE_GenerateExpenseJournalLines extends RunBase
{
int recordsCount;
TransDate fromDate,toDate;
ProjId projId;
Name peroid;
LedgerJournalId journalId,journalIdLoc;
DialogField dlgPeriod;
DialogField dlgProjId;
#define.CurrentVersion(1)
#localmacro.CurrentList
peroid,
projId
#endmacro
}
//////////////////////////////////////////////////
public static void main(Args args)
{
JournalId journalId;
LedgerJournalTable ledgerJournalTable;
ALE_GenerateExpenseJournalLines generateExpenseJournalLines = new ALE_GenerateExpenseJournalLines();
ledgerJournalTable = args.record();
journalId = ledgerJournalTable.JournalNum;
generateExpenseJournalLines.getJournalId(journalId);
if(generateExpenseJournalLines.prompt())
{
generateExpenseJournalLines.run();
}
}
.................................................................................
protected Object dialog()
{
Dialog dialog;
FormStringControl controlPeriodName;
dialog = super();
dialog.caption('Generate Expense Journal lines');
dlgPeriod = dialog.addFieldValue(extendedTypeStr(Name),peroid);
dlgProjId = dialog.addFieldValue(extendedTypeStr(ProjId),projId);
controlPeriodName = dlgPeriod.control();
controlPeriodName.registerOverrideMethod(methodStr(FormStringControl, lookup),methodStr(ALE_GenerateJournalLines,lookupPeriodName), this);
return dialog;
}
.................................................................................................
public boolean getFromDialog()
{
boolean ret;
ret = super();
peroid = dlgPeriod.value();
projId = dlgProjId.value();
return ret;
}
...............................................................................................
public void getJournalId(JournalId journalIdB)
{
journalId = journalIdB;
}
....................................................................
public void lookupPeriodName(FormStringControl _control)
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(Ale_PeriodMaster),_control);
sysTableLookup.addLookupField(fieldNum(Ale_PeriodMaster, Name));
queryBuildDataSource = query.addDataSource(tableNum(Ale_PeriodMaster));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
...............................................................................
public container pack()
{
return [#CurrentVersion,#CurrentList];
}
...........................................................................
public void run()
{
ProjForecastUnion projForecastUnion;
LedgerJournalTable ledgerJournalTableLoc;
Ale_VehicleUploader vehicleUploader;
Ale_PeriodMaster periodMaster;
TransDate periodFromDate,periodToDate;
ALE_GenerateExpenseJournalLines generareJournalLines = new ALE_GenerateExpenseJournalLines();
journalIdLoc = journalId;
select StartDate,Enddate from periodMaster where periodMaster.Name == peroid;
periodFromDate = periodMaster.StartDate;
periodToDate = periodMaster.Enddate;
try
{
ttsBegin;
ledgerJournalTableLoc = LedgerJournalTable::find(journalIdLoc);
if(LedgerJournalName::find(LedgerJournalTable::find(journalIdLoc).JournalName).Ale_VehiclePrice != NoYes::Yes)
{
while select projForecastUnion group by ProjId,CategoryId,Ale_Period where projForecastUnion.ProjId == projId
&& projForecastUnion.Ale_Period == peroid
&& projForecastUnion.ProjTransType == ProjTransType::Cost
{
recordsCount++;
generareJournalLines.createExpenseJournals(projForecastUnion,journalIdLoc);
}
}
info(strFmt('%1 journals has been created',recordsCount));
ttsCommit;
}
catch(Exception::Deadlock)
{
error('Caught an exception');
retry;
}
}
..............................................................................
public boolean unpack(container packedClass)
{
Integer version = conPeek(packedClass,1);
switch (version)
{
case #CurrentVersion :
[version,#CurrentList] = packedClass;
break;
default :
return false;
}
return true;
}
......................................................................./////////////////////////???????????????????
private void createExpenseJournals(ProjForecastUnion _projForecastUnion,LedgerJournalId _journalId)
{
ProjPosting projPosting;
ProjSalesAmount salesAmount;
int64 recId,ledgerDim;
AmountMST expenseAssesableValue;
//ProjForecastUnion projForecastUnionTransId;
AxLedgerJournalTable axLedgerJournalTable = new AxLedgerJournalTable();
AxLedgerJournalTrans axLedgerJournalTrans = new AxLedgerJournalTrans();
ProjForecastUnion projForecastUnionLoc,projForecastUnionCat;
ProjBudgetLineDetail projBudgetLineDetail;
ProjForecastCost projForecastCost;
LedgerJournalTable ledgerJournalTable,ledgerJournalTableLoc;
LedgerJournalTrans ledgerJournalTrans;
NumberSequenceTable numberSequenceTable;
LedgerJournalTrans_Project ledgerJournalTrans_Project;
LedgerJournalTrans_ProjectTaxExtensionIN ledgerJournalTrans_ProjectTaxExtensionIN;
DefaultDimensionView defaultDimensionView;
DimensionAttributeValueCombination ledgerDimensionvalueCombination;
DimensionAttributeValueCombination davc;
ProjTable projTable;
projForecastUnionLoc.clear();
select Worker,CurrencyId,Qty,LinePropertyId,TransId from projForecastUnionLoc where projForecastUnionLoc.ProjId == _projForecastUnion.ProjId
&& projForecastUnionLoc.CategoryId == _projForecastUnion.CategoryId
&& projForecastUnionLoc.Ale_PositionId == _projForecastUnion.Ale_PositionId
&& projForecastUnionLoc.Ale_Period == _projForecastUnion.Ale_Period;
ledgerJournalTable = LedgerJournalTable::find(_journalId);
ledgerJournalTrans.JournalNum = axLedgerJournalTable.LedgerJournalTable().JournalNum;
//ledgerJournalTrans.DefaultDimension = DimensionDefault;
ledgerJournalTrans.AccountType = LedgerJournalACTypE::Project;
numberSequenceTable = NumberSequenceTable::find(LedgerJournalName::find(ledgerJournalTable.JournalName).NumberSequenceTable);
ledgerJournalTrans.Voucher = NumberSeq::newGetVoucherFromCode(numberSequenceTable.NumberSequence).voucher();
select firstonly ProjId from projTable join RecId from ledgerDimensionvalueCombination where ledgerDimensionvalueCombination.DisplayValue == projTable.ProjId
&& projTable.ProjId == _projForecastUnion.ProjId;
select LedgerDimension from projPosting where projPosting.ProjCategoryRelation == _projForecastUnion.CategoryId
&& projPosting.CategoryCode == TableGroupAll::Table;
select DefaultDimension from defaultDimensionView where defaultDimensionView.DisplayValue == HcmWorker::find(ProjForecastCost::find(projForecastUnionLoc.TransId).Worker).PersonnelNumber;
ledgerJournalTrans.JournalNum = ledgerJournalTable.JournalNum;
ledgerJournalTrans.Company = curext();
ledgerJournalTrans.CurrencyCode = projForecastUnionLoc.CurrencyId;//ProjTable::find(_projForecastUnion.ProjId).DefaultDimension
ledgerJournalTrans.DefaultDimension = DimensionDefaultingService::serviceMergeDefaultDimensions(ProjForecastCost::find(projForecastUnionLoc.TransId).DefaultDimension,defaultDimensionView.DefaultDimension);
ledgerJournalTrans.Qty = projForecastUnionLoc.Qty;
ledgerJournalTrans.TransDate = systemDateGet();
this.createDefaultDimensions(_projForecastUnion,projForecastUnionLoc);
if(HcmWorker::find(ProjForecastCost::find(projForecastUnionLoc.TransId).Worker).PersonnelNumber)
{
//ledgerDim = DimensionDefaultingService::serviceCreateLedgerDimension(projPosting.LedgerDimension);//,ledgerJournalTrans.DefaultDimension,defaultDimensionView.DefaultDimension
//ledgerJournalTrans.OffsetLedgerDimension = DimensionDefaultingService::serviceMergeDefaultDimensions(ledgerDim,defaultDimensionView.DefaultDimension);
ledgerJournalTrans.OffsetLedgerDimension = DimensionDefaultingService::serviceCreateLedgerDimension(projPosting.LedgerDimension,ledgerJournalTrans.DefaultDimension,defaultDimension);
}
else
{
select DefaultDimension from defaultDimensionView where defaultDimensionView.DisplayValue == 'Blank';
ledgerJournalTrans.OffsetLedgerDimension = DimensionDefaultingService::serviceCreateLedgerDimension( projPosting.LedgerDimension,ledgerJournalTrans.DefaultDimension,defaultDimensionView.DefaultDimension,defaultDimension);
}
if(ledgerDimensionvalueCombination.recid != 0)
{
ledgerJournalTrans.ledgerDimension = ledgerDimensionvalueCombination.recid;
}
else
{
recId = DimensionStorage::getDynamicAccount(_projForecastUnion.ProjId, 3, 129);
davc = DimensionAttributeValueCombination::find(recId);
ledgerJournalTrans.DefaultDimension = davc.RecId;
}
ledgerJournalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
ledgerJournalTrans.insert();
// Strat by somendra
if(ledgerJournalTrans.recid)
{
select forUpdate ledgerJournalTableLoc where ledgerJournalTableLoc.JournalNum == ledgerJournalTrans.JournalNum;
ledgerJournalTableLoc.ALE_ProjId = _projForecastUnion.ProjId;//projTable.ProjId;//projId;
ledgerJournalTableLoc.Ale_Period = _projForecastUnion.Ale_Period;
ledgerJournalTableLoc.update();
}
//End by somendra
salesAmount = 0;
while select TransId from projForecastUnionCat where projForecastUnionCat.ProjId == _projForecastUnion.ProjId
&& projForecastUnionCat.CategoryId == _projForecastUnion.CategoryId
&& projForecastUnionCat.Ale_Period == _projForecastUnion.Ale_Period
&& projForecastUnionCat.ProjTransType == ProjTransType::Cost
{
//select SalesPrice from projBudgetLineDetail where projBudgetLineDetail.Ale_TransactionID == projForecastUnionCat.TransId; //
//salesAmount += projBudgetLineDetail.SalesPrice;
while select SalesPrice from projForecastCost where projForecastCost.TransId == projForecastUnionCat.TransId
{
salesAmount += projForecastCost.SalesPrice;
}
}
expenseAssesableValue = 0;
ledgerJournalTrans_Project.CategoryId = _projForecastUnion.CategoryId;
ledgerJournalTrans_Project.Qty = projForecastUnionLoc.Qty;
ledgerJournalTrans_Project.ALE_PeriodName = _projForecastUnion.Ale_Period;
ledgerJournalTrans_Project.ProjTransDate = systemDateGet();
ledgerJournalTrans_Project.SalesPrice = salesAmount;
ledgerJournalTrans_Project.SalesCurrencyId = projForecastUnionLoc.CurrencyId;
ledgerJournalTrans_Project.PositionId = _projForecastUnion.Ale_PositionId;
ledgerJournalTrans_Project.LinePropertyId = projForecastUnionLoc.LinePropertyId;
ledgerJournalTrans_Project.ProjId = _projForecastUnion.ProjId;
ledgerJournalTrans_Project.RefRecId = ledgerJournalTrans.RecId;
expenseAssesableValue = ledgerJournalTrans_Project.Qty * ledgerJournalTrans_Project.SalesPrice;
ledgerJournalTrans_Project.Worker = ProjForecastCost::find(projForecastUnionLoc.TransId).Worker;
ledgerJournalTrans_Project.insert();
ledgerJournalTrans_ProjectTaxExtensionIN.LedgerJournalTrans_Project = ledgerJournalTrans_Project.RecId;
ledgerJournalTrans_ProjectTaxExtensionIN.AssessableValue = expenseAssesableValue;
ledgerJournalTrans_ProjectTaxExtensionIN.insert();
ledgerJournalTrans_Project.clear();
ledgerJournalTrans.clear();
}
........................................................................................
Number to textINR
Number to textINR
static TempStr numeralsToTxtINR(real _num)
{
int numOfPennies = (decround(frac(_num), 2) * 100) mod 100;
real test = _num - frac(_num);
int numOfTenths;
str 20 ones[19], tenths[9], hundreds, thousands, lakhs, crores;
int64 temp;
str 200 returntxt;
str 200 pennytxt;
int penny;
real modOperator(real a1, real a2)
{
int tmpi;
real tmp1, tmp2;
tmp1 = a1 / a2;
tmpi = real2int(tmp1);
tmp2 = tmpi;
return (tmp1 - tmp2)*a2;
}
real checkPower(real _test, int64 _power)
{
int64 numOfPower;
if (_test >= _power)
{
numOfPower = _test div _power;
if (numOfPower >= 100)
{
temp = numOfPower div 100;
returntxt = returntxt + ' ' + ones[temp] + ' ' + hundreds;
numOfPower = numOfPower mod 100;
}
if (numOfPower >= 20)
{
temp = numOfPower div 10;
returntxt = returntxt + ' ' + tenths[temp];
numOfPower = numOfPower mod 10;
}
if (numOfPower >= 1)
{
returntxt = returntxt + ' ' + ones[numOfPower];
numOfPower = numOfPower mod 10;
}
switch(_power)
{
case 10000000 :
{
returntxt = returntxt + ' ' + Crores;
_test = modOperator(_test, 10000000);
break;
}
case 100000 :
{
returntxt = returntxt + ' ' + lakhs;
_test = modOperator(_test, 100000);
break;
}
case 1000 :
{
returntxt = returntxt + ' ' + thousands;
_test = modOperator(_test, 1000);
break;
}
case 100 :
{
returntxt = returntxt + ' ' + hundreds;
_test = modOperator(_test, 100);
break;
}
}
}
return _test;
}
#Define.text_1('One')
#Define.text_2('Two')
#Define.text_3('Three')
#Define.text_4('Four')
#Define.text_5('Five')
#Define.text_6('Six')
#Define.text_7('Seven')
#Define.text_8('Eight')
#Define.text_9('Nine')
#Define.text_10('Ten')
#Define.text_11('Eleven')
#Define.text_12('Twelve')
#Define.text_13('Thirteen')
#Define.text_14('Fourteen')
#Define.text_15('Fifteen')
#Define.text_16('Sixteen')
#Define.text_17('Seventeen')
#Define.text_18('Eighteen')
#Define.text_19('Nineteen')
#Define.text_20('Twenty')
#Define.text_30('Thirty')
#Define.text_40('Forty')
#Define.text_50('Fifty')
#Define.text_60('Sixty')
#Define.text_70('Seventy')
#Define.text_80('Eighty')
#Define.text_90('Ninety')
#Define.text_100('Hundred')
#Define.text_1000('Thousand')
#Define.text_100000('Lakh')
#Define.text_10000000('Crore')
#Define.text_and('Rupees and')
#Define.text_paise('Paise Only')
#Define.text_ruppe('Rupees Only')
ones[1] = #text_1;
ones[2] = #text_2;
ones[3] = #text_3;
ones[4] = #text_4;
ones[5] = #text_5;
ones[6] = #text_6;
ones[7] = #text_7;
ones[8] = #text_8;
ones[9] = #text_9;
ones[10] = #text_10;
ones[11] = #text_11;
ones[12] = #text_12;
ones[13] = #text_13;
ones[14] = #text_14;
ones[15] = #text_15;
ones[16] = #text_16;
ones[17] = #text_17;
ones[18] = #text_18;
ones[19] = #text_19;
tenths[1] = 'Not used';
tenths[2] = #text_20;
tenths[3] = #text_30;
tenths[4] = #text_40;
tenths[5] = #text_50;
tenths[6] = #text_60;
tenths[7] = #text_70;
tenths[8] = #text_80;
tenths[9] = #text_90;
hundreds = #text_100;
thousands = #text_1000;
lakhs = #text_100000;
crores = #text_10000000;
test = checkPower(test, 10000000);
test = checkPower(test, 100000);
test = checkPower(test, 1000);
test = checkPower(test, 100);
if (test >= 20)
{
numOfTenths = test div 10;
returntxt = returntxt + ' ' + tenths[numofTenths];
numOfTenths = numOfTenths mod 10;
test = test mod 10;
}
if (test >= 1)
{
numOfTenths = real2int(test);
returntxt = returntxt + ' ' + ones[numOfTenths];
}
if (numOfPennies)
{
if (numOfPennies >= 20)
{
penny = numOfPennies div 10;
pennytxt = tenths[penny];
numOfPennies = numOfPennies mod 10;
}
if (numOfPennies >= 1)
{
pennytxt = pennytxt + ' ' + ones[numOfPennies];
}
returntxt = returntxt + ' ' + #text_and + ' ' + pennytxt + ' ' +#text_paise;
}
else
{
returntxt = returntxt + ' ' + #text_ruppe;
}
return strFmt("%1 %2",returntxt,"******");
}
static TempStr numeralsToTxtINR(real _num)
{
int numOfPennies = (decround(frac(_num), 2) * 100) mod 100;
real test = _num - frac(_num);
int numOfTenths;
str 20 ones[19], tenths[9], hundreds, thousands, lakhs, crores;
int64 temp;
str 200 returntxt;
str 200 pennytxt;
int penny;
real modOperator(real a1, real a2)
{
int tmpi;
real tmp1, tmp2;
tmp1 = a1 / a2;
tmpi = real2int(tmp1);
tmp2 = tmpi;
return (tmp1 - tmp2)*a2;
}
real checkPower(real _test, int64 _power)
{
int64 numOfPower;
if (_test >= _power)
{
numOfPower = _test div _power;
if (numOfPower >= 100)
{
temp = numOfPower div 100;
returntxt = returntxt + ' ' + ones[temp] + ' ' + hundreds;
numOfPower = numOfPower mod 100;
}
if (numOfPower >= 20)
{
temp = numOfPower div 10;
returntxt = returntxt + ' ' + tenths[temp];
numOfPower = numOfPower mod 10;
}
if (numOfPower >= 1)
{
returntxt = returntxt + ' ' + ones[numOfPower];
numOfPower = numOfPower mod 10;
}
switch(_power)
{
case 10000000 :
{
returntxt = returntxt + ' ' + Crores;
_test = modOperator(_test, 10000000);
break;
}
case 100000 :
{
returntxt = returntxt + ' ' + lakhs;
_test = modOperator(_test, 100000);
break;
}
case 1000 :
{
returntxt = returntxt + ' ' + thousands;
_test = modOperator(_test, 1000);
break;
}
case 100 :
{
returntxt = returntxt + ' ' + hundreds;
_test = modOperator(_test, 100);
break;
}
}
}
return _test;
}
#Define.text_1('One')
#Define.text_2('Two')
#Define.text_3('Three')
#Define.text_4('Four')
#Define.text_5('Five')
#Define.text_6('Six')
#Define.text_7('Seven')
#Define.text_8('Eight')
#Define.text_9('Nine')
#Define.text_10('Ten')
#Define.text_11('Eleven')
#Define.text_12('Twelve')
#Define.text_13('Thirteen')
#Define.text_14('Fourteen')
#Define.text_15('Fifteen')
#Define.text_16('Sixteen')
#Define.text_17('Seventeen')
#Define.text_18('Eighteen')
#Define.text_19('Nineteen')
#Define.text_20('Twenty')
#Define.text_30('Thirty')
#Define.text_40('Forty')
#Define.text_50('Fifty')
#Define.text_60('Sixty')
#Define.text_70('Seventy')
#Define.text_80('Eighty')
#Define.text_90('Ninety')
#Define.text_100('Hundred')
#Define.text_1000('Thousand')
#Define.text_100000('Lakh')
#Define.text_10000000('Crore')
#Define.text_and('Rupees and')
#Define.text_paise('Paise Only')
#Define.text_ruppe('Rupees Only')
ones[1] = #text_1;
ones[2] = #text_2;
ones[3] = #text_3;
ones[4] = #text_4;
ones[5] = #text_5;
ones[6] = #text_6;
ones[7] = #text_7;
ones[8] = #text_8;
ones[9] = #text_9;
ones[10] = #text_10;
ones[11] = #text_11;
ones[12] = #text_12;
ones[13] = #text_13;
ones[14] = #text_14;
ones[15] = #text_15;
ones[16] = #text_16;
ones[17] = #text_17;
ones[18] = #text_18;
ones[19] = #text_19;
tenths[1] = 'Not used';
tenths[2] = #text_20;
tenths[3] = #text_30;
tenths[4] = #text_40;
tenths[5] = #text_50;
tenths[6] = #text_60;
tenths[7] = #text_70;
tenths[8] = #text_80;
tenths[9] = #text_90;
hundreds = #text_100;
thousands = #text_1000;
lakhs = #text_100000;
crores = #text_10000000;
test = checkPower(test, 10000000);
test = checkPower(test, 100000);
test = checkPower(test, 1000);
test = checkPower(test, 100);
if (test >= 20)
{
numOfTenths = test div 10;
returntxt = returntxt + ' ' + tenths[numofTenths];
numOfTenths = numOfTenths mod 10;
test = test mod 10;
}
if (test >= 1)
{
numOfTenths = real2int(test);
returntxt = returntxt + ' ' + ones[numOfTenths];
}
if (numOfPennies)
{
if (numOfPennies >= 20)
{
penny = numOfPennies div 10;
pennytxt = tenths[penny];
numOfPennies = numOfPennies mod 10;
}
if (numOfPennies >= 1)
{
pennytxt = pennytxt + ' ' + ones[numOfPennies];
}
returntxt = returntxt + ' ' + #text_and + ' ' + pennytxt + ' ' +#text_paise;
}
else
{
returntxt = returntxt + ' ' + #text_ruppe;
}
return strFmt("%1 %2",returntxt,"******");
}
Thursday, 21 March 2019
Generate Proj Hours Journal Lines
Generate Proj Hours Journal Lines
public class ALE_GenerareJournalLines extends RunBase
{
TransDate fromDate,toDate;
ProjId projId;
Name peroid;
JournalId journalId;
ProjCategoryId projCategoryId;
HcmPersonnelNumberId worker;
DialogField dlgPeriod;
DialogField dlgProjId;
DialogField dlgWorker;
DialogField dlgProjCategoryId;
#define.CurrentVersion(1)
#localmacro.CurrentList
peroid,
projId,
worker,
projCategoryId
#endmacro
}
.................................................................................
protected Object dialog()
{
Dialog dialog;
FormStringControl control,controlPeriodName;
dialog = super();
dialog.caption('Generate Journal lines');
dlgPeriod = dialog.addFieldValue(extendedTypeStr(Name),peroid);
dlgProjId = dialog.addFieldValue(extendedTypeStr(ProjId),projId);
dlgWorker = dialog.addFieldValue(extendedTypeStr(HcmPersonnelNumberId),worker);
dlgProjCategoryId = dialog.addFieldValue(extendedTypeStr(ProjCategoryId),projCategoryId);
control = dlgWorker.control();
controlPeriodName = dlgPeriod.control();
control.registerOverrideMethod(methodStr(FormStringControl, lookup),methodStr(ALE_GenerareJournalLines,lookupCategoryId), this);
controlPeriodName.registerOverrideMethod(methodStr(FormStringControl, lookup),methodStr(ALE_GenerareJournalLines,lookupPeriodName), this);
return dialog;
}
......................................................................................
public boolean getFromDialog()
{
boolean ret;
ret = super();
peroid = dlgPeriod.value();
projId = dlgProjId.value();
worker = dlgWorker.value();
projCategoryId = dlgProjCategoryId.value();
return ret;
}
.................................................................................................
public container pack()
{
return [#CurrentVersion,#CurrentList];
}
.......................................................................................................
public boolean unpack(container packedClass)
{
Integer version = conPeek(packedClass,1);
switch (version)
{
case #CurrentVersion :
[version,#CurrentList] = packedClass;
break;
default :
return false;
}
return true;
}
.....................................................................................................
public static void main(Args args)
{
JournalId journalId;
ProjJournalTable projJournalTable;
ALE_GenerareJournalLines generareJournalLines = new ALE_GenerareJournalLines();
projJournalTable = args.record();
journalId = projJournalTable.JournalId;
generareJournalLines.getJournalId(journalId);
if(generareJournalLines.prompt())
{
generareJournalLines.run();
}
}
...................................................................................
public void lookupCategoryId(FormStringControl _control)
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(HcmWorker),
_control);
sysTableLookup.addLookupField(fieldNum(HcmWorker, PersonnelNumber));
sysTableLookup.addLookupField(fieldNum(HcmWorker, Person));
// Setup query
queryBuildDataSource = query.addDataSource(tableNum(HcmWorker));
sysTableLookup.parmQuery(query);
// Perform lookup
sysTableLookup.performFormLookup();
}
.........................................................................................
public void lookupPeriodName(FormStringControl _control)
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(Ale_PeriodMaster),_control);
sysTableLookup.addLookupField(fieldNum(Ale_PeriodMaster, Name));
queryBuildDataSource = query.addDataSource(tableNum(Ale_PeriodMaster));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
............................................................................................
public void getJournalId(JournalId journalIdB)
{
journalId = journalIdB;
}
.......................................................................................................
public void run()
{
int linescount;
Hours totalHours;
JournalId journalIdLoc;
ALE_STG_AttendanceData attendanceData,attendanceDataLoc,attendanceDataLoc1;
Ale_PeriodMaster periodMaster;
ProjJournalTrans projJournalTrans;
ProjJournalTable projJournalTableLoc,projJournalTableLoc1;
ProjJournalTableData projJournalTableData;
ProjJournalTransData projJournalTransData;
TransDate periodFromDate,periodToDate;
select StartDate,Enddate from periodMaster where periodMaster.Name == peroid;
periodFromDate = periodMaster.StartDate;
periodToDate = periodMaster.Enddate;
journalIdLoc = journalId;
ttsBegin;
projJournalTableLoc = ProjJournalTable::find(journalIdLoc);
if(projId && peroid && projCategoryId == "" && worker == "" )
{
projJournalTableData = JournalTableData::newTable(projJournalTableLoc);
projJournalTransData = projJournalTableData.journalStatic().newJournalTransData(projJournalTrans,projJournalTableData);
while select attendanceData group by EmployeeID,ProjectId where attendanceData.ProjectId == projId
&& attendanceData.AttendanceDate >= periodFromDate
&& attendanceData.AttendanceDate <= periodToDate
{
select sum(Hours) from attendanceDataLoc where attendanceDataLoc.ProjectId == attendanceData.ProjectId
&& attendanceDataLoc.EmployeeID == attendanceData.EmployeeID
&& attendanceDataLoc.AttendanceDate >= periodFromDate
&& attendanceDataLoc.AttendanceDate <= periodToDate;//&& attendanceDataLoc.CategoryId == attendanceData.CategoryId
select EmployeeID,CategoryId from attendanceDataLoc1 where attendanceDataLoc1.ProjectId == attendanceData.ProjectId
&& attendanceDataLoc1.EmployeeID == attendanceData.EmployeeID
&& attendanceDataLoc1.AttendanceDate >= periodFromDate
&& attendanceDataLoc1.AttendanceDate <= periodToDate;
projJournalTrans.JournalId = journalIdLoc;
projJournalTrans.initValue();
projJournalTrans.ProjId = projId;
projJournalTrans.initFromProjTable( ProjTable::find(projId));
projJournalTrans.TransDate = systemDateGet();
projJournalTrans.LinePropertyId = 'CHRG';
projJournalTrans.ProjTransDate = projJournalTrans.TransDate;
projJournalTrans.CategoryId = attendanceDataLoc1.CategoryId;
projJournalTrans.TaxItemGroupId = ProjCategory::find(projCategoryId).TaxItemGroupId;
projJournalTrans.Worker = HcmWorker::findByPersonnelNumber(attendanceDataLoc1.EmployeeID).RecId;//HcmWorker::findByPersonnelNumber(worker).RecId;
projJournalTrans.Txt = 'Create hours journal';
projJournalTrans.Qty = attendanceDataLoc.Hours;
projJournalTrans.setHourCostPrice();
projJournalTrans.setHourSalesPrice();
linescount++;
totalHours += attendanceDataLoc.Hours;
projJournalTransData.create();
//projJournalTrans.insert();
}
}
select forUpdate projJournalTableLoc1 where projJournalTableLoc1.JournalId == journalIdLoc;
projJournalTableLoc1.ProjQty = projJournalTableLoc.ProjQty ;
projJournalTableLoc1.NumOfLines = projJournalTableLoc.NumOfLines ;
projJournalTableLoc1.update();
ttsCommit;
info(strFmt('%1 Journal lines has been created',linescount));
}
public class ALE_GenerareJournalLines extends RunBase
{
TransDate fromDate,toDate;
ProjId projId;
Name peroid;
JournalId journalId;
ProjCategoryId projCategoryId;
HcmPersonnelNumberId worker;
DialogField dlgPeriod;
DialogField dlgProjId;
DialogField dlgWorker;
DialogField dlgProjCategoryId;
#define.CurrentVersion(1)
#localmacro.CurrentList
peroid,
projId,
worker,
projCategoryId
#endmacro
}
.................................................................................
protected Object dialog()
{
Dialog dialog;
FormStringControl control,controlPeriodName;
dialog = super();
dialog.caption('Generate Journal lines');
dlgPeriod = dialog.addFieldValue(extendedTypeStr(Name),peroid);
dlgProjId = dialog.addFieldValue(extendedTypeStr(ProjId),projId);
dlgWorker = dialog.addFieldValue(extendedTypeStr(HcmPersonnelNumberId),worker);
dlgProjCategoryId = dialog.addFieldValue(extendedTypeStr(ProjCategoryId),projCategoryId);
control = dlgWorker.control();
controlPeriodName = dlgPeriod.control();
control.registerOverrideMethod(methodStr(FormStringControl, lookup),methodStr(ALE_GenerareJournalLines,lookupCategoryId), this);
controlPeriodName.registerOverrideMethod(methodStr(FormStringControl, lookup),methodStr(ALE_GenerareJournalLines,lookupPeriodName), this);
return dialog;
}
......................................................................................
public boolean getFromDialog()
{
boolean ret;
ret = super();
peroid = dlgPeriod.value();
projId = dlgProjId.value();
worker = dlgWorker.value();
projCategoryId = dlgProjCategoryId.value();
return ret;
}
.................................................................................................
public container pack()
{
return [#CurrentVersion,#CurrentList];
}
.......................................................................................................
public boolean unpack(container packedClass)
{
Integer version = conPeek(packedClass,1);
switch (version)
{
case #CurrentVersion :
[version,#CurrentList] = packedClass;
break;
default :
return false;
}
return true;
}
.....................................................................................................
public static void main(Args args)
{
JournalId journalId;
ProjJournalTable projJournalTable;
ALE_GenerareJournalLines generareJournalLines = new ALE_GenerareJournalLines();
projJournalTable = args.record();
journalId = projJournalTable.JournalId;
generareJournalLines.getJournalId(journalId);
if(generareJournalLines.prompt())
{
generareJournalLines.run();
}
}
...................................................................................
public void lookupCategoryId(FormStringControl _control)
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(HcmWorker),
_control);
sysTableLookup.addLookupField(fieldNum(HcmWorker, PersonnelNumber));
sysTableLookup.addLookupField(fieldNum(HcmWorker, Person));
// Setup query
queryBuildDataSource = query.addDataSource(tableNum(HcmWorker));
sysTableLookup.parmQuery(query);
// Perform lookup
sysTableLookup.performFormLookup();
}
.........................................................................................
public void lookupPeriodName(FormStringControl _control)
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(Ale_PeriodMaster),_control);
sysTableLookup.addLookupField(fieldNum(Ale_PeriodMaster, Name));
queryBuildDataSource = query.addDataSource(tableNum(Ale_PeriodMaster));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
............................................................................................
public void getJournalId(JournalId journalIdB)
{
journalId = journalIdB;
}
.......................................................................................................
public void run()
{
int linescount;
Hours totalHours;
JournalId journalIdLoc;
ALE_STG_AttendanceData attendanceData,attendanceDataLoc,attendanceDataLoc1;
Ale_PeriodMaster periodMaster;
ProjJournalTrans projJournalTrans;
ProjJournalTable projJournalTableLoc,projJournalTableLoc1;
ProjJournalTableData projJournalTableData;
ProjJournalTransData projJournalTransData;
TransDate periodFromDate,periodToDate;
select StartDate,Enddate from periodMaster where periodMaster.Name == peroid;
periodFromDate = periodMaster.StartDate;
periodToDate = periodMaster.Enddate;
journalIdLoc = journalId;
ttsBegin;
projJournalTableLoc = ProjJournalTable::find(journalIdLoc);
if(projId && peroid && projCategoryId == "" && worker == "" )
{
projJournalTableData = JournalTableData::newTable(projJournalTableLoc);
projJournalTransData = projJournalTableData.journalStatic().newJournalTransData(projJournalTrans,projJournalTableData);
while select attendanceData group by EmployeeID,ProjectId where attendanceData.ProjectId == projId
&& attendanceData.AttendanceDate >= periodFromDate
&& attendanceData.AttendanceDate <= periodToDate
{
select sum(Hours) from attendanceDataLoc where attendanceDataLoc.ProjectId == attendanceData.ProjectId
&& attendanceDataLoc.EmployeeID == attendanceData.EmployeeID
&& attendanceDataLoc.AttendanceDate >= periodFromDate
&& attendanceDataLoc.AttendanceDate <= periodToDate;//&& attendanceDataLoc.CategoryId == attendanceData.CategoryId
select EmployeeID,CategoryId from attendanceDataLoc1 where attendanceDataLoc1.ProjectId == attendanceData.ProjectId
&& attendanceDataLoc1.EmployeeID == attendanceData.EmployeeID
&& attendanceDataLoc1.AttendanceDate >= periodFromDate
&& attendanceDataLoc1.AttendanceDate <= periodToDate;
projJournalTrans.JournalId = journalIdLoc;
projJournalTrans.initValue();
projJournalTrans.ProjId = projId;
projJournalTrans.initFromProjTable( ProjTable::find(projId));
projJournalTrans.TransDate = systemDateGet();
projJournalTrans.LinePropertyId = 'CHRG';
projJournalTrans.ProjTransDate = projJournalTrans.TransDate;
projJournalTrans.CategoryId = attendanceDataLoc1.CategoryId;
projJournalTrans.TaxItemGroupId = ProjCategory::find(projCategoryId).TaxItemGroupId;
projJournalTrans.Worker = HcmWorker::findByPersonnelNumber(attendanceDataLoc1.EmployeeID).RecId;//HcmWorker::findByPersonnelNumber(worker).RecId;
projJournalTrans.Txt = 'Create hours journal';
projJournalTrans.Qty = attendanceDataLoc.Hours;
projJournalTrans.setHourCostPrice();
projJournalTrans.setHourSalesPrice();
linescount++;
totalHours += attendanceDataLoc.Hours;
projJournalTransData.create();
//projJournalTrans.insert();
}
}
select forUpdate projJournalTableLoc1 where projJournalTableLoc1.JournalId == journalIdLoc;
projJournalTableLoc1.ProjQty = projJournalTableLoc.ProjQty ;
projJournalTableLoc1.NumOfLines = projJournalTableLoc.NumOfLines ;
projJournalTableLoc1.update();
ttsCommit;
info(strFmt('%1 Journal lines has been created',linescount));
}
Subscribe to:
Posts (Atom)