public final class MDSTimeSheetLineEntityService
{
TSTimesheetLineEntityPSA TSTimesheetLineEntityPSALoc;
MDSTimesheetServiceResponse response=new MDSTimesheetServiceResponse();
[AifCollectionType('record', Types::Class, classStr(MDSTimeSheetLineEntityContract))]
public MDSTimesheetServiceResponse create(list record)
{
MDSTimeSheetLineEntityContract contract = new MDSTimeSheetLineEntityContract();
ListEnumerator IEnum = record.getEnumerator();
try
{
while(IEnum.moveNext())
{
ttsbegin;
contract = IEnum.current();
if(this.checkValidation(contract) == true)
{
changecompany(contract.parmdataAreaId())
{
select forupdate TSTimesheetLineEntityPSALoc
where TSTimesheetLineEntityPSALoc.TimesheetNumber == contract.parmTimesheetnumber()
&& TSTimesheetLineEntityPSALoc.LineNumber == contract.parmLineNumber();
this.getUpload(contract);
if(TSTimesheetLineEntityPSALoc.validateWrite())
{
TSTimesheetLineEntityPSALoc.write();
response.parmOpertionStatus(true);
response.parmErrorMessage('Success');
response.parmTimesheetNumber(TSTimesheetLineEntityPSALoc.TimesheetNumber);
}
else
{
response.parmOpertionStatus(false);
throw Error(response.parmErrorMessage(this.ErrorMsg()));
}
}
}
else
{
throw Error(response.parmErrorMessage());
}
ttscommit;
}
}
catch(Exception::Error)
{
response.parmOpertionStatus(false);
response.parmErrorMessage(this.ErrorMsg());
//throw Exception::Error ;
}
catch(Exception::Deadlock)
{
response.parmOpertionStatus(false);
response.parmErrorMessage(this.ErrorMsg());
}
catch(Exception::UpdateConflict)
{
response.parmOpertionStatus(false);
response.parmErrorMessage(this.ErrorMsg());
}
catch(Exception::DuplicateKeyException)
{
response.parmOpertionStatus(false);
response.parmErrorMessage(this.ErrorMsg() + 'Can not duplicate Line number or Timesheet number,alredy exist');
}
catch(Exception::CLRError)
{
System.Exception ex = CLRInterop::getLastException();
response.parmOpertionStatus(false);
response.parmErrorMessage(ex.Message);
}
catch(Exception::ViewDataSourceValidation)
{
response.parmOpertionStatus(false);
response.parmErrorMessage(this.ErrorMsg());
}
if(response.parmOpertionStatus() == true )
{
this.timeSheetSubmitted(contract);
response.parmOpertionStatus(True);
response.parmErrorMessage('TimeSheet Auto Posted');
}
return response;
}
public void getUpload(MDSTimeSheetLineEntityContract _contract)
{
TSTimesheetLineEntityPSALoc.clear();
TSTimesheetLineEntityPSALoc.TimesheetNumber = _contract.parmTimesheetnumber();
TSTimesheetLineEntityPSALoc.ActivityNumber = _contract.parmActivityNumber();
TSTimesheetLineEntityPSALoc.CategoryId = _contract.parmCategoryId();
TSTimesheetLineEntityPSALoc.DimensionDisplayValue = _contract.parmDimensionDisplayValue();
TSTimesheetLineEntityPSALoc.Hours[0] = _contract.parmHOURS();
TSTimesheetLineEntityPSALoc.Hours[1] = _contract.parmHours2_();
TSTimesheetLineEntityPSALoc.Hours[2] = _contract.parmHours3_();
TSTimesheetLineEntityPSALoc.Hours[3] = _contract.parmHours4_();
TSTimesheetLineEntityPSALoc.Hours[4] = _contract.parmHours5_();
TSTimesheetLineEntityPSALoc.Hours[5]= _contract.parmHours6_();
TSTimesheetLineEntityPSALoc.Hours[6] = _contract.parmHours7_();
TSTimesheetLineEntityPSALoc.ExternalComments[0] = _contract.parmExternalComments();
TSTimesheetLineEntityPSALoc.ExternalComments[1] = _contract.parmExternalComments2_();
TSTimesheetLineEntityPSALoc.ExternalComments[2] = _contract.parmExternalComments3_();
TSTimesheetLineEntityPSALoc.ExternalComments[3] = _contract.parmExternalComments4_();
TSTimesheetLineEntityPSALoc.ExternalComments[4] = _contract.parmExternalComments5_();
TSTimesheetLineEntityPSALoc.ExternalComments[5] = _contract.parmExternalComments6_();
TSTimesheetLineEntityPSALoc.ExternalComments[6] = _contract.parmExternalComments7_();
TSTimesheetLineEntityPSALoc.InternalComments[0] = _contract.parmINTERNALCOMMENTS() ;
TSTimesheetLineEntityPSALoc.InternalComments[1] = _contract.parmInternalComments2_();
TSTimesheetLineEntityPSALoc.InternalComments[2] = _contract.parmInternalComments3_();
TSTimesheetLineEntityPSALoc.InternalComments[3] = _contract.parmInternalComments4_();
TSTimesheetLineEntityPSALoc.InternalComments[4] = _contract.parmInternalComments5_();
TSTimesheetLineEntityPSALoc.InternalComments[5] = _contract.parmInternalComments6_();
TSTimesheetLineEntityPSALoc.InternalComments[6] = _contract.parmInternalComments7_();
TSTimesheetLineEntityPSALoc.Favorites = _contract.parmFavorites();
TSTimesheetLineEntityPSALoc.LegalEntity = _contract.parmLegalEntity();
TSTimesheetLineEntityPSALoc.LineProperty = _contract.parmLineProperty();
TSTimesheetLineEntityPSALoc.LineNumber = _contract.parmLineNumber();
TSTimesheetLineEntityPSALoc.ProjectDataArea = _contract.parmProjectDataArea();
TSTimesheetLineEntityPSALoc.ProjectId = _contract.parmProjectId();
TSTimesheetLineEntityPSALoc.TaxGroupId = _contract.parmTaxGroupId();
TSTimesheetLineEntityPSALoc.TaxItemGroup = _contract.parmTaxItemGroup();
}
public boolean checkValidation(MDSTimeSheetLineEntityContract _contract)
{
boolean check =true;
if(_contract.parmProjectId() ||
_contract.parmProjectDataArea()
|| _contract.parmLineProperty() || _contract.parmLegalEntity()
|| _contract.parmDimensionDisplayValue() || _contract.parmCategoryId()
|| _contract.parmTaxItemGroup())
{
changecompany(_contract.parmProjectDataArea())
{
ProjTable projtable= ProjTable::find(_contract.parmProjectId());
boolean category = ProjValProjCategorySetUp::existDirect( _contract.parmCategoryId(),_contract.parmProjectId());
if(!projtable)
{
response.parmOpertionStatus(false);
response.parmErrorMessage('Project Id is In correct');
check =false;
}
ProjValProjCategorySetUp projValProjCategorySetUp,projValProjCategorySetUploc;
ProjCategory projCategory;
select firstonly projValProjCategorySetUp where projValProjCategorySetUp.ProjId == projtable.ProjId;
select * FROM projCategory join
projValProjCategorySetUploc
where projCategory.CategoryId == projValProjCategorySetUploc.CategoryId
&& projValProjCategorySetUploc.GroupId == projValProjCategorySetUp.GroupId ||
projValProjCategorySetUploc.ProjId == projtable.ProjId
&& projCategory.CategoryId == _contract.parmCategoryId();
if( !projCategory)
{
response.parmOpertionStatus(false);
response.parmErrorMessage('Category Id is In correct');
check =false;
}
if(projCategory.TaxItemGroupId != _contract.parmTaxItemGroup())
{
response.parmOpertionStatus(false);
response.parmErrorMessage('TaxItemGroup Id is In correct or must be filled' );
check =false;
}
if( projtable && projtable.DataAreaId != _contract.parmProjectDataArea() && projtable.ProjId == _contract.parmProjectId())
{
response.parmOpertionStatus(false);
response.parmErrorMessage('Project does not exits current legalEntity');
check =false;
}
if(_contract.parmProjectId()==null)
{
response.parmOpertionStatus(false);
response.parmErrorMessage('Project ID must be filled');
check =false;
}
if( _contract.parmCategoryId() == null )
{
response.parmOpertionStatus(false);
response.parmErrorMessage('CategoryId must be filled');
check =false;
}
if(_contract.parmTimesheetnumber() == null)
{
response.parmOpertionStatus(false);
response.parmErrorMessage('Timesheet must be filled');
check =false;
}
if(!_contract.parmLineNumber())
{
response.parmOpertionStatus(false);
response.parmErrorMessage('Linenumber must be filled');
check =false;
}
if(projtable.RequireActivityHourForecast ==NoYes::No
&& projtable.RequireActivityHourTrx == NoYes::No
&& _contract.parmActivityNumber())
{
response.parmOpertionStatus(false);
response.parmErrorMessage(' ActivityNumber does not exists in related project table ');
check =false;
}
}
}
return check ;
}
public void timeSheetSubmitted(MDSTimeSheetLineEntityContract _contract)
{
changecompany(_contract.parmdataAreaId())
{
WorkflowVersionTable workflowVersionTable;
TSTimeSheetTable timeSheet = TSTimeSheetTable::find(_contract.parmTimesheetnumber(),true);
workflowVersionTable = Workflow::findWorkflowConfigToActivateForType(workFlowTypeStr(TSDocumentTemplate),
timeSheet.RecId,
timeSheet.TableId);
//If workflow is active then submit the workflow.
if (timeSheet.RecId && workflowVersionTable.RecId)
{
//submitting to workflow
Workflow::activateFromWorkflowType(workFlowTypeStr(TSDocumentTemplate),
timeSheet.RecId,
"Timesheet Workflow Auto Approved",
false,
curUserid());
//Update the workflow status to Submitted on the table.
if(timeSheet.RecId)
{
ttsbegin;
timeSheet.ApprovalStatus = TSAppStatus::Pending;
timeSheet.update();
ttscommit;
}
}
/* if(timeSheet.ApprovalStatus == TSAppStatus::Approved)
{
ttsbegin;
timeSheet.ApprovalStatus = TSAppStatus::Ledger;
timeSheet.update();
ttscommit;
} */
}
}
public Log ErrorMsg()
{
Log errorMessage;
SysInfologEnumerator sysInfologEnumerator;
sysInfologEnumerator = SysInfologEnumerator::newData(infolog.infologData());
errorMessage ="";
While(sysInfologEnumerator.moveNext())
{
errorMessage += sysInfologEnumerator.currentMessage();
}
return errorMessage;
}
}
No comments:
Post a Comment