RSM InTime provides a SOAP Web Service Interface that allows two-way flow of information to external systems. This enables automated and efficient transfer of data to and from your other systems reducing effort and duplication.
...
updateTimesheet() method will create a new Timesheet or update an existing one if it exists in Draft status. The Timesheet will be saved with Draft status. The Timesheet object you supply to this method must contain all the necessary data which includes a valid Placement reference, the Period End date and one or more Shifts. Each Shift must reference a valid Rate from the Placement, the Time worker or a Decimal value and the Date on which it was worked. It will normally be necessary to retrieve the details of the Placement the Timesheet relates to in order to correctly complete all the required fields.
submitTimesheet() would then be called to submit the Timesheet for approval once it has all the necessary time (Shifts) added to it.
rejectTimesheet() or approveTimesheet() are then used to process the approval.
revertTimesheet() can also be used to revert a Submitted or Approved status Timesheet if required. This has exactly the same result as reverting a Timesheet though the RSM InTime UI.
Single Sign On
getSingleSignOnToken() can be used to log in to RSM InTime using an existing RSM InTime User account. This method returns a token that you can then append to any valid RSM InTime URL and it will allow you to retrieve the page as if you were logged into the system directly. This means you can embed RSM InTime pages within another web site or retrieve other data.
Other methods
The interface also provides various other methods. Some examples:
getMissingTimesheetsForPlacement() identifies any periods within the specified range that do not contain an approved timesheet. The response will include a status that indicates if it is Missing, Draft or Submitted.
getAllPayElements() returns a list of all Pay Elements present in the system.
getURLForContractorsPayslip() retrieves the URL to viewing a workers Payslips. *InPay Linked systems only
Getting started
The RSM InTime Web Service uses the Simple Object Access Protocol (SOAP) interface as opposed to REST. This is a stricter protocol than REST which means you can only call the defined methods available and the return types will be in a fixed format. Normally you would start by building "stub" code against the WSDL file that defines the interface.
LATEST WSDL Version: https://your_system_url.com/services/IntimeServiceV3_3?wsdl
Java Example
This example was written using the WSDL file for version 3.2 of the web services on our demo system:
https://demo.in-time.co.uk/services/IntimeServiceV3_2?wsdl
Various tools are available for building the stub code. wsdl2java in the axis 2 package works well for java development:
From the command line run:
/axis2-1.6.2/bin/wsdl2java.sh -or -uri "https://demo.in-time.co.uk/services/IntimeServiceV3_2?wsdl"
This will produce the following files:
/src/uk/co/in_time/IntimeServiceV3_2Stub.java
/src/uk/co/in_time/IntimeServiceV3_2CallbackHandler.java
/src/uk/co/in_time/IntimeServiceV3_2IntimeWebServiceException.java
Include and reference these files in your application and you will be able to make calls to the Web Services. Some examples are given below.
It is important to enclose your web service calls in try / catch blocks as Exceptions are used as the mechanism for feeding back any issues. For example if you attempt to create a placement without providing an External ID, an exception will be returned from the Web Service call with an appropriate message.
Client Code - Pseudocode examples
RETRIEVING ENTITY DATA FROM A FRONTEND SYSTEM:
...
#Get placements and associated data from frontend system that you require in InTIME
#Consultant
def cons = getConsultantsByExternalID(consultantId);
if(cons>1)"Error"
def con = cons.first();
if(con==null)con = new Consutlant();
con*PopulateFields*
createOrUpdateConsutlant(con);
#Manager Client
def mclients = getClientsByExternalID(mclientId);
if(mclients>1)"Error"
def mclient = mclients.first();
if(mclient==null)mclient = new Client();
mclient*PopulateFields*
createOrUpdateClient(mclient);
#Manager
def mans = getManagersByExternalID(managerId);
if(mans>1)"Error"
def man = mans.first();
if(man==null)man = new Manager();
man.client = mclient
man*PopulateFields*
createOrUpdateManager(man);
#Provider
def provs = getProvidersByExternalID(providerId);
if(provs>1)"Error"
def prov = provs.first();
if(prov==null)prov = new Provider();
prov*PopulateFields*
createOrUpdateProvider(prov);
#Worker
def wkrs = getWorkersByExternalID(workerId);
if(wkrs>1)"Error"
def wkr = wkrs.first();
if(wkr==null)wkr = new Worker();
if(prov!=null)wkr.provider = prov
wkr*PopulateFields*
createOrUpdateWorker(wkr);
#Billing Client
def bclients = getClientsByExternalID(bclientId);
if(pclients>1)"Error"
def bclient = bclients.first();
if(bclient==null)bclient = new Client();
bclient*PopulateFields*
createOrUpdateClient(bclient);
#Placement
def plac = getPlacementByExternalID(placementId);
if(plac==null)plac = new Placement();
plac.consultant = con
plac.client = bclient
plac.manager = man
plac.worker = wkr
plac*PopulateFields*
createOrUpdatePlacement(plc);
RETRIEVING UPDATES FROM RSM InTime:
...
def entityList = getModifiedItemsWithRefCode(java.lang.String token, java.util.Calendar since)
for(entityList){
if(entity.getType()=="Worker")*Read full Worker and action as required*
if(entity.getType()=="Placement")*Read full Placement and action as required*
if(entity.getType()=="Timesheet")*Read full Timesheet and action as required*
if(entity.getType()=="ExpenseItem")*Read full Expense Item and action as required*
if(entity.getType()=="Client")*Read full Client and action as required*
if(entity.getType()=="LtdCoProvider")*Read full Ltd Company Provider and action as required*
if(entity.getType()=="Consultant")*Read full Consultant and action as required*
if(entity.getType()=="Manager")*Read full Manager and action as required*
if(entity.getType()=="LtdCoUser")*Read full Ltd Company User and action as required*
if(entity.getType()=="Reckoning")*Read full Invoice, Credit Note or Advice Note and action as required*
if(entity.getType()=="ContractDocument")*Read full Contract Document and action as required*
if(entity.getType()=="PurchaseOrder")*Read full Purchase Order and action as required*
if(entity.getType()=="PaymentBatch")*Read full Payment Batch and action as required*
if(entity.getType()=="Project")*Read full Project and action as required (WS V2.9+)*
}
RETRIEVING INVOICE LINKS:
...
As of 3.12 there is a "hidden" parameter. This creates the timesheet but keeps it hidden from the UI so it can not be affected by UI processes. This can be used to create a timesheet that should only be invoiced via the web services for example. Hidden timesheets can be updated via this method while they are still in draft status but you must set the hidden parameter of the method call to true. You can unhide the timesheet by changing the "hidden" property of the timesheet to false. Hidden timesheets still have to be approved before they can be invoiced/exported - the forceApproveTimesheet can be used for this which bypasses the approval route. Hidden timesheets are automatically unhidden when first invoiced on either the Sales or Purchase side.
submitTimesheet() would then be called to submit the Timesheet for approval once it has all the necessary time (Shifts) added to it.
rejectTimesheet() or approveTimesheet() are then used to process the approval.
revertTimesheet() can also be used to revert a Submitted or Approved status Timesheet if required. This has exactly the same result as reverting a Timesheet though the RSM InTime UI.
Invoicing
As of 3.12 you can generate invoices using the generateInvoices( ) method. This method requires a SearchCriteria parameter which is used to filter the items to be invoiced. This needs to be populated with appropriate criteria to select only the items you wish to invoice.
Warning: if no criteria are specified all invoiceable items in the system will be invoiced!
It is possible to specify a list of specific timesheet IDs or ExpenseItem IDs that you wish to invoice using SearchCriteria.timesheetIDs or SearchCriteria.expenseItemIDs.
You must specify the type of invoices you wish to generate from: ClientInvoice, SelfBillInvoice or AdviceNote.
You can not credit invoices using this method. However, invoicing net negative items will result in a Credit Note rather than an Invoice.
To invoice "Hidden" timesheets, set the SearchCriteria.includeHidden property to true.
Examples:
request.setInvoiceType("ClientInvoice");
searchCriteria.setIncludeTimesheets(true);
searchCriteria.setIncludeHidden(true);
long[] tsIds = new long[2];
tsIds[0] = 123L;
tsIds[1] = 456L;
searchCriteria.setTimesheetIDs(tsIds);
searchCriteria.setIncludeExpenses(false);
searchCriteria.setExpenseItemIDFrom(3001L);
searchCriteria.setExpenseItemIDTo(3009L);
request.setSearchCriteria(searchCriteria);
Calendar invDate = Calendar.getInstance();
invDate.set(2024,10,1,0,0,0);
request.setInvoiceDate(invDate);
As of 3.12 you can uploadSupplierInvoice() to an AdviceNote and accept it via acceptSupplierInvoice()
Single Sign On
getSingleSignOnToken() can be used to log in to RSM InTime using an existing RSM InTime User account. This method returns a token that you can then append to any valid RSM InTime URL and it will allow you to retrieve the page as if you were logged into the system directly. This means you can embed RSM InTime pages within another web site or retrieve other data.
An example SSO token would look like this:
QS5TbWl0aDoxNjk0NzY3NDI5NTM0Ojg0OThkMGY1ZTQzMzdlYzI0YjRiZjU3YzZhNDg4MDI4
So appending an SSO token for an Admin user to a URL for the summary of a Worker could look like this:
http://demo.in-time.co.uk/summary/worker?id=1&ticket=QS5TbWl0aDoxNjk0NzY3NDI5NTM0Ojg0OThkMGY1ZTQzMzdlYzI0YjRiZjU3YzZhNDg4MDI4
For the Summary screens only you can append "&embed=true" to the URL to hide the menu and footers. This does not apply to other InTime screens.
IMPORTANT: Note that once you have accessed InTime with an SSO token you are logged into InTime as that user and navigation and access rights are determined exactly as if you logged into InTime directly as that user.
Other methods
The interface also provides various other methods. Some examples:
getMissingTimesheetsForPlacement() identifies any periods within the specified range that do not contain an approved timesheet. The response will include a status that indicates if it is Missing, Draft or Submitted.
getAllPayElements() returns a list of all Pay Elements present in the system.
getURLForContractorsPayslip() retrieves the URL to viewing a workers Payslips. *InPay Linked systems only
Getting started
The RSM InTime Web Service uses the Simple Object Access Protocol (SOAP) interface as opposed to REST. This is a stricter protocol than REST which means you can only call the defined methods available and the return types will be in a fixed format. Normally you would start by building "stub" code against the WSDL file that defines the interface.
LATEST WSDL Version: https://your_system_url.com/services/IntimeServiceV3_8?wsdl
Java Example
This example was written using the WSDL file for version 3.2 of the web services on our demo system:
https://demo.in-time.co.uk/services/IntimeServiceV3_2?wsdl
Various tools are available for building the stub code. wsdl2java in the axis 2 package works well for java development:
From the command line run:
/axis2-1.6.2/bin/wsdl2java.sh -or -uri "https://demo.in-time.co.uk/services/IntimeServiceV3_2?wsdl"
This will produce the following files:
/src/uk/co/in_time/IntimeServiceV3_2Stub.java
/src/uk/co/in_time/IntimeServiceV3_2CallbackHandler.java
/src/uk/co/in_time/IntimeServiceV3_2IntimeWebServiceException.java
Include and reference these files in your application and you will be able to make calls to the Web Services. Some examples are given below.
It is important to enclose your web service calls in try / catch blocks as Exceptions are used as the mechanism for feeding back any issues. For example if you attempt to create a placement without providing an External ID, an exception will be returned from the Web Service call with an appropriate message.
Client Code - Pseudocode examples
RETRIEVING ENTITY DATA FROM A FRONTEND SYSTEM:
#Get placements and associated data from frontend system that you require in InTIME#Consultant |
---|
RETRIEVING UPDATES FROM RSM InTime:
def entityList = getModifiedItemsWithRefCode(java.lang.String token, java.util.Calendar since, java.lang.String "Reckoning"):entity |
---|
RETRIEVING INVOICES TO EXPORT:
def needRatePayElementCode = false //Not usually needed but if required change to true def entityList = getModifiedItemsWithRefCodeByType(java.lang.String token, java.util.Calendar since, java.lang.String "Reckoning") for(entityList){ def entityRefCode = entity.getRefCode() def invoiceInfo = getInvoiceByRefCode(java.lang.String token, java.lang.String entityRefCode) def invoicingAccount def accountCode def nominalCode //Note - Nominal codes aren't always stored on the invoicing entity it depends on the accounts system and nominal requirements def entityType = invoiceInfo.getEntityType() def entityRefCode = invoiceInfo.getEntityRefCode() if(entityType="Client"){ invoicingAccount = getClientByRefCode(java.lang.String entityRefCode) accountCode = invoicingAccount.getAccountsRef() nominalCode = invoicingAccount.getNominalCode() { if(entityType="Worker"){ invoicingAccount = getWorkerByRefCode(java.lang.String entityRefCode) accountCode = invoicingAccount.getAccountsReference() nominalCode = invoicingAccount.getNominalCode() } if(entityType="Provider"){ invoicingAccount = getProviderByRefCode(java.lang.String entityRefCode) accountCode = invoicingAccount.getAccountsRef() nominalCode = invoicingAccount.getNominalCode() } //Get any other details from invocing entities requied above to create / update sales or purchase account in accounts package. if(!(invoiceInfo.getExported)){ for(invoiceInfo.getInvoiceLineInfo():InvoiceLineInfo invoiceLineInfo){ def invoiceLineInfoPlacementId = invoiceLineInfo.getPlacementId def invoiceLineInfoTimesheetId = invoiceLineInfo.getTimesheetId def placement = getPlacementById(java.lang.String token, java.lang.Long invoiceLineInfoPlacementId) def timesheet = getTimesheetById(java.lang.String token, java.lang.Long invoiceLineInfoTimesheetId) if(needRatePayElementCode){ def invoiceInfoShiftId = invoiceinfo.getShiftId() def invoiceInfoTimesheetId = invoiceinfo.getTimesheetId() def timesheet = webservice.getTimesheetById(invoiceInfoTimesheetId) def shifts = timesheet.getShifts() def wantedShift for(shifts s where s.id=invoiceInfoShiftId) wantedShift = s if(wantedShift){ def rate = wantedShift.getRate() def payElementCode = rate.getPayElementCode() } } //Collect details from InvoiceInfo, InvoiceLineInfo, Placement, Timesheet, Rate, Pay Element as required for transaction } def exportSuccessful = false; #Attempt to export details to Accounts System and if successfull exportSuccessful=true if(exportSuccessful)markInvoiceAsExported( =="Worker")*Read full Worker and action as required* |
---|
RETRIEVING INVOICE LINKS:
def entityList = getModifiedItemsWithRefCodeByType(java.lang.String token, java.util.Calendar since, java.lang.String "Reckoning") |
---|
RETRIEVING INVOICES TO EXPORT:
def needRatePayElementCode = false //Not usually needed but if required change to trueString entityRefCode, java.lang.String now()) |
---|
RETRIEVING TIMESHEETS:
def entityList = getModifiedItemsWithRefCodeByTypeLong invoiceLineInfoPlacementId), java.util.Calendar since |
---|
Java Code
Authenticate
try {
//Create an instance of the stub
IntimeServiceV3_2Stub stub = new IntimeServiceV3_2Stub("https://demo.in-time.co.uk/services/IntimeServiceV3_2?wsdl");
//Get an authentication token
IntimeServiceV3_2Stub.Authenticate auth=new IntimeServiceV3_2Stub.Authenticate();
auth.setAgencyRefCode("<supplied_credentials>");
auth.setUsername("<supplied_credentials>");
auth.setPassword("<supplied_credentials>");
IntimeServiceV3_2Stub.AuthenticateResponse authResp=stub.authenticate(auth);
String ticket=authResp.get_return();
System.out.println("Authentication token:" + ticket);
//Use this authentication token (ticket) to pass in to any of the other WebService calls
} catch (java.lang.Exception e) {
System.out.println("Exception occurred: " + e);
}
Read a Placement
try { IntimeServiceV3_2Stub.GetPlacementByExternalId request=new IntimeServiceV3_2Stub.GetPlacementByExternalId(); request.setId("WEB-PLC-001"); request.setToken(ticket); //from authenticate call GetPlacementByExternalIdResponse placementResponse=stub.getPlacementByExternalId(request); Placement placement=placementResponse.get_return(); if (placement != null) { System.out.println("Read Placement with External Id: " + placement.getExternalId() + " Internal Id: " + placement.getId()); System.out.println("RefCode: " + placement.getRefCode()); System.out.println("Worker:" + placement.getWorker().getExternalId() + " " + placement.getWorker().getLastname()); System.out.println("Consultant: " + placement.getConsultant().getExternalId() + " " + placement.getConsultant().getLastname()); System.out.println("Manager: " + placement.getManager().getExternalId() + " " + placement.getManager().getLastname()); System.out.println("Client: " + placement.getClient().getExternalId() + " " + placement.getClient().getName()); System.out.println("Start: " + placement.getStart().getTime()); if (placement.getEnd() != null) { System.out.println("End: " + placement.getEnd().getTime()); } System.out.println("Created: " + placement.getCreated().getTime()); System.out.println("Modified: " + placement.getModified().getTime()); System.out.println("TimesheetDateCalculatorName: " + placement.getTimesheetDateCalculatorName()); System.out.println("Timesheeet Approval Route: " + placement.getTimesheetApprovalRoute())wantedShift |
---|
RETRIEVING TIMESHEETS:
def entityList = getModifiedItemsWithRefCodeByType(java.lang.String token, java.util.Calendar since, java.lang.String "Timesheet") |
---|
UPDATING FINANCIAL TAG VALUES:
def fiancialTags = ws.getAllFinancialTags |
---|
UPDATING ONCOSTS ON A PLACEMENT (example below is purchase oncosts but same for sales):
def plc = getPlacementByExternalId(token,xxxxx) – xxxx being unique placement Ref |
---|
Java Code
Authenticate
try { //Create an instance of the stub IntimeServiceV3_2Stub stub = new IntimeServiceV3_2Stub("https://demo.in-time.co.uk/services/IntimeServiceV3_2?wsdl"); //Get an authentication token IntimeServiceV3_2Stub.Authenticate auth=new IntimeServiceV3_2Stub.Authenticate(); auth.setAgencyRefCode("<supplied_credentials>"); auth.setUsername("<supplied_credentials>"); auth.setPassword("<supplied_credentials>"); IntimeServiceV3_2Stub.AuthenticateResponse authResp=stub.authenticate(auth); String ticket=authResp.get_return(); System.out.println(" Chargeable Expense Approval RouteAuthentication token:" + placement.getChargeableExpenseApprovalRoute());System.out.println("Non-Chargeable Expense Approval Route: " + placement.getNonChargeableExpenseApprovalRoute());ticket); //Use this authentication token (ticket) to pass in to any of the other WebService calls } catch (java.lang.Exception e) { System.out.println(" ContractedHoursException occurred: " + placement.getContractedHours(e) ); System.out.println("JobDescription :" + placement.getJobDescription()); System.out.println("JobTitle: " + placement.getJobTitle());} |
---|
Read a Placement
try { IntimeServiceV3_2Stub.GetPlacementByExternalId request=new IntimeServiceV3_2Stub.GetPlacementByExternalId(); request.setId("WEB-PLC-001"); request.setToken(ticket); //from authenticate call GetPlacementByExternalIdResponse placementResponse=stub.getPlacementByExternalId(request); Placement placement=placementResponse.get_return(); if (placement != null) { System.out.println("NoCommunicationsRead Placement with External Id: " + placement.getNoCommunicationsgetExternalId() );System.out.println("PurchaseOrderNum+ " Internal Id: " + placement.getPurchaseOrderNumgetId()); System.out.println("SalesProjectRefCode: " + placement.getSalesProjectgetRefCode()); System.out.println("PurchaseBranchWorker:" + placement.getPurchaseBranchgetWorker());System.out.println("CurrencyForCharge: .getExternalId() + " " + placement.getWorker().getCurrencyForChargegetLastname()); System.out.println("CurrencyForPayExpensesConsultant: " + placement.getCurrencyForPayExpensesgetConsultant());System.out.println("CurrencyForPayTimesheets: .getExternalId() + " " + placement.getCurrencyForPayTimesheetsgetConsultant().getLastname()); System.out.println("PermManager: " + placement.getPermgetManager());System.out.println("TimesheetEmailApproval: .getExternalId() + " " + placement.getTimesheetEmailApprovalgetManager().getLastname()); System.out.println("Timesheet layoutClient: " + placement.getLayoutgetClient());System.out.println("Internal Agency Comments: .getExternalId() + " " + placement.getInternalAgencyCommentsgetClient().getName()); System.out.println("Holiday Accural RateStart: " + placement.getStart().getHolidayAccuralRategetTime()); if (placement.getEnd() != null) { System.out.println(" Expenses TemplateEnd: " + placement. getExpenseTemplategetEnd() );.getTime()); } System.out.println("Charge Tax Code OverrideCreated: " + placement.getCreated().getChargeTaxCodeOverridegetTime()); System.out.println("Self Bill Tax Code OverrideModified: " + placement.getSelfBillTaxCodeOverridegetModified().getTime()); System.out.println("PAYEDeductionsOnLtdTimesheetDateCalculatorName: " + placement.getPAYEDeductionsOnLtdgetTimesheetDateCalculatorName()); if (placement.getInvoiceContactOverride() != null) { Contact contact = placement.getInvoiceContactOverride(); Address address = contact.getAddress(System.out.println("Timesheeet Approval Route: " + placement.getTimesheetApprovalRoute()); System.out.println(" Placement charge invoice contact overrideChargeable Expense Approval Route: " + placement.getChargeableExpenseApprovalRoute()); System.out.println(" FirstnameNon-Chargeable Expense Approval Route: " + contactplacement. getFirstnamegetNonChargeableExpenseApprovalRoute()); System.out.println(" LastnameContractedHours: " + contactplacement. getLastnamegetContractedHours()); System.out.println(" EmailJobDescription :" + contactplacement. getEmailgetJobDescription()); System.out.println(" PhoneJobTitle: " + contactplacement. getPhonegetJobTitle()); System.out.println(" FaxNoCommunications: " + contactplacement. getFaxgetNoCommunications()); System.out.println(" MobilePurchaseOrderNum: " + contactplacement. getMobilegetPurchaseOrderNum()); System.out.println(" AddressSalesProject: " + placement.getSalesProject()); System.out.println(" Line 1PurchaseBranch: " + addressplacement. getLine1getPurchaseBranch()); System.out.println(" Line 2CurrencyForCharge: " + addressplacement. getLine2getCurrencyForCharge()); System.out.println(" TownCurrencyForPayExpenses: " + addressplacement. getTowngetCurrencyForPayExpenses()); System.out.println(" CountyCurrencyForPayTimesheets: " + addressplacement. getCountygetCurrencyForPayTimesheets()); System.out.println(" PostcodePerm: " + addressplacement. getPostcodegetPerm()); System.out.println(" CountryTimesheetEmailApproval: " + addressplacement. getCountrygetTimesheetEmailApproval()); System.out.println(" Country CodeTimesheet layout: " + addressplacement. getCountryCodegetLayout()); } if (placement.getRates() != null) { for (Rate rate : placement.getRates()) {System.out.println("Internal Agency Comments: " + placement.getInternalAgencyComments()); System.out.println("Holiday Accural Rate Name: " + rateplacement. getNamegetHolidayAccuralRate()); System.out.println(" PayExpenses Template: " + rateplacement. getPaygetExpenseTemplate()); System.out.println("Charge Tax Code Override: " + rateplacement. getChargegetChargeTaxCodeOverride()); System.out.println(" PrioritySelf Bill Tax Code Override: " + rateplacement. getPriorityOrdergetSelfBillTaxCodeOverride()); System.out.println(" IDPAYEDeductionsOnLtd: " + rate.getId()placement.getPAYEDeductionsOnLtd()); if (placement.getInvoiceContactOverride() != null) { Contact contact = placement.getInvoiceContactOverride(); Address address = contact.getAddress(); System.out.println(" PeriodPlacement charge invoice contact override: " + rate.getPeriod() ); System.out.println(" PeriodDurationFirstname: " + ratecontact. getPeriodDurationgetFirstname()); System.out.println(" SelectableByWorkersLastname: " + ratecontact. getSelectableByWorkersgetLastname()); System.out.println(" TimePatternEmail: " + ratecontact. getTimePatterngetEmail()); System.out.println(" TimesheetFieldsPhone: " + ratecontact. getTimesheetFieldsgetPhone()); System.out.println(" PayElementCodeFax: " + ratecontact. getPayElementCodegetFax()); System.out.println(" PayableMobile: " + ratecontact. getPayablegetMobile()); System.out.println(" ChargeableAddress:" + rate.getChargeable() ); System.out.println(" TaxableLine 1:" + rateaddress. getTaxablegetLine1()); System.out.println(" RefCodeLine 2:" + rateaddress. getRefCodegetLine2()); } } if (placement.getSplitCommissions() != null) { for (SplitCommission split : placement.getSplitCommissions()) {System.out.println(" Town:" + address.getTown()); System.out.println(" County:" + address.getCounty()); System.out.println(" Postcode: " + address.getPostcode()); System.out.println(" \nCommission UserIDCountry:" + splitaddress. getUserIdgetCountry() +" Percentage); System.out.println(" Country Code:" + splitaddress. getWeightgetCountryCode()); } } if (placement.getAlternativeManagersgetRates() != null) { for (User altMan Rate rate : placement.getAlternativeManagersgetRates()) { System.out.println("Alternative ManagerRate Name:" + altManrate.getFirstnamegetName() + " " + altMan.getLastname()); System.out.println("External IdPay:" + altManrate.getExternalIdgetPay() + " Internal ID)); System.out.println("Charge:" + altManrate.getIdgetCharge()); } } } } catch (java.lang.Exception e) {System.out.println("Priority:" + rate.getPriorityOrder()); System.out.println(" Exception occurredID:" + erate.getId()); } |
---|
Read a Timesheet including any invoices
try { IntimeServiceV3_2Stub.GetTimesheetById request=new IntimeServiceV3_2Stub.GetTimesheetById(); request.setId(<timesheet_id>); request.setToken(ticket); //from authenticate call GetTimesheetByIdResponse timesheetResp=stub.getTimesheetById(request); Timesheet timesheet = timesheetResp.get_return(System.out.println("Period:" + rate.getPeriod()); System.out.println("PeriodDuration:" + rate.getPeriodDuration()); System.out.println("SelectableByWorkers:" + rate.getSelectableByWorkers()); System.out.println(" Read Timesheet IDTimePattern:" + timesheetrate. getIdgetTimePattern()); System.out.println(" StatusTimesheetFields:" + timesheetrate. getStatusgetTimesheetFields()); System.out.println(" PlacementPayElementCode:" + timesheetrate. getPlacementIdgetPayElementCode()); if (timesheet.getPeriodEndDate() != null)System.out.println(" End DatePayable:" + timesheetrate. getPeriodEndDategetPayable()); if (timesheet.getCreated() != null)System.out.println(" CreatedChargeable:" + timesheet.getCreated().getTimerate.getChargeable()); if (timesheet.getModified() != null)System.out.println(" ModifiedTaxable:" + timesheetrate. getModifiedgetTaxable() .getTime() ); if (timesheet.getSubmitted() != null) System.System.out.println(" SubmittedRefCode:" + timesheet.getSubmitted().getTimerate.getRefCode()); } } if ( timesheetplacement. getApprovedgetSplitCommissions() != null) { for (SplitCommission split : placement.getSplitCommissions()) { System.out.println(" Approved\nCommission UserID:"+ timesheetsplit. getApprovedgetUserId() .getTime+" Percentage:"+split.getWeight()); System.out.println("timesheetPay: " + timesheet.getTimesheetPay());} } if (placement.getAlternativeManagers() != null) { for (User altMan : placement.getAlternativeManagers()) { System.out.println(" timesheetChargeAlternative Manager:" + timesheet.getTimesheetChargealtMan.getFirstname() + " " + altMan.getLastname()); System.out.println(" ERNIExternal Id: " + timesheetaltMan. getErnigetExternalId() + " Internal ID:" + altMan.getId()); } } } } catch (java.lang.Exception e) { System.out.println("PensionException occurred: " + timesheet.getPension()e); } |
---|
Read a Timesheet including any invoices
try { IntimeServiceV3_2Stub.GetTimesheetById request=new IntimeServiceV3_2Stub.GetTimesheetById(); request.setId(<timesheet_id>);System.out.println("Holiday: " + timesheet.getHoliday( )request.setToken(ticket); //from authenticate call GetTimesheetByIdResponse timesheetResp=stub.getTimesheetById(request); Timesheet timesheet = timesheetResp.get_return(); System.out.println("getFullyInvoicedRead Timesheet ID:" + timesheet.getFullyInvoicedgetId()); System.out.println("getPurchaseWrittenOffStatus:" + timesheet.getPurchaseWrittenOffgetStatus()); System.out.println("getSalesWrittenOffPlacement:" + timesheet.getSalesWrittenOffgetPlacementId()); if (timesheet.getPeriodEndDate() != null) System.out.println("WorkerEnd Date:" + timesheet.getWorkerIdgetPeriodEndDate()); if (timesheet.getCreated() != null) System.out.println("AdjustsCreated:" + timesheet.getAdjustsRefCodegetCreated().getTime()); //Shifts if (timesheet.getShiftsgetModified() != null && ) System.out.println("Modified:" + timesheet.getShiftsgetModified().length > 0) { for (Shift shift : timesheet.getShifts()) { getTime()); if (timesheet.getSubmitted() != null) System.out.println(" Shift IDSubmitted:" + shift.getIdtimesheet.getSubmitted().getTime()); if (timesheet.getApproved() != null) System.out.println(" hoursApproved:" + shift.getHourstimesheet.getApproved().getTime()); System.out.println(" DecimaltimesheetPay: " + shifttimesheet. getDecimalgetTimesheetPay()); System.out.println(" DaytimesheetCharge: " + new Date(shift.getDaytimesheet.getTimesheetCharge()) + " (; System.out.println("ERNI: " + shifttimesheet. getDaygetErni( )+ ") "); System.out.println(" POPension: " + shifttimesheet. getPurchaseOrderNumbergetPension()); System.out.println(" StartHoliday: " + new Date(shift.getStartTimetimesheet.getHoliday()) +" (; System.out.println("getFullyInvoiced: " + shifttimesheet. getStartTimegetFullyInvoiced() + ")"); System.out.println(" Rate NamegetPurchaseWrittenOff: " + shifttimesheet. getRateNamegetPurchaseWrittenOff()); System.out.println(" Rate PaygetSalesWrittenOff: " + shifttimesheet. getRategetSalesWrittenOff() .getPay); System.out.println("Worker:" + timesheet.getWorkerId()); System.out.println(" Rate ChargeAdjusts:" + shift.getRate().getChargetimesheet.getAdjustsRefCode()); }} //Associated Invoices & creditsShifts if (timesheet.getInvoiceInfogetShifts() != null && timesheet.getShifts().length > 0) { for (InvoiceInfo invoice Shift shift : timesheet.getInvoiceInfogetShifts()) { System.out.println("Invoice NumberShift ID:"+ invoiceshift.getInvoiceNumbergetId()); System.out.println("Invoice datehours:"+ invoiceshift.getInvoiceDategetHours().getTime()); System.out.println("Invoice TypeDecimal:"+ invoiceshift.getInvoiceDescriptiongetDecimal()); System.out.println("Invoice GUIDDay:" + invoice.getInvoiceGUID()) new Date(shift.getDay()) + " (" + shift.getDay()+ ")"); System.out.println("Invoice NetPO:" + invoiceshift.getNetgetPurchaseOrderNumber()); System.out.println("Invoice Gross:" + invoice.getGross()Start:"+new Date(shift.getStartTime()) +" (" + shift.getStartTime()+ ")"); System.out.println("Invoice VATRate Name:"+ invoiceshift.getVatgetRateName()); System.out.println("Invoice CurrencyRate Pay:"+ invoiceshift.getCurrencygetRate());if (invoice.getExportedgetPay() != null) {; System.out.println(" Exported dateRate Charge:"+ invoiceshift. getExportedgetRate(). getTimegetCharge()); } } } } catch (Exception e//Associated Invoices & credits if (timesheet.getInvoiceInfo() != null) { for (InvoiceInfo invoice : timesheet.getInvoiceInfo()){ System.out.println(" Exception occurredInvoice Number:" + e);} |
---|
Create or update a Worker
try {
//Attempt to read the worker first as it may already exist
IntimeServiceV3_2Stub.GetWorkerByExternalId getWorkerRequest=new IntimeServiceV3_2Stub.GetWorkerByExternalId();
getWorkerRequest.setId("WEB-WKR01");
getWorkerRequest.setToken(ticket); //from authenticate call
GetWorkerByExternalIdResponse workerResponse=stub.getWorkerByExternalId(getWorkerRequest);
Worker worker=workerResponse.get_return();
if (worker == null) {
//Worker did not exist
worker.setExternalId("WEB-WKR01");
}
//set or update any fields as required
worker.setFirstname("Ltd");
worker.setLastname("Worker");
worker.setEmail("x@x.com");
worker.setTitle("Mrs");
worker.setWorkerType("ltd");
worker.setGender("F");
worker.setSelfBilling(false);
worker.setAccountsReference("ACC_REF");
worker.setPaymentFrequency("Monthly");
String[] wConsolidation = new String[] { "destination","source","pay-currency","purchase-tax-code","worker" };
worker.setConsolidation(wConsolidation);
String[] wGrouping = new String[] { "sheet-rate" };
worker.setGrouping(wGrouping);
Calendar cal = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT"));
cal.set(1980, 0, 1, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
worker.setDateOfBirth(cal);
Calendar cal2 = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT"));
cal2.set(2017, 0, 1, 0, 0, 0);
cal2.set(Calendar.MILLISECOND, 0);
worker.setDateOfJoining(cal2);
IntimeServiceV3_2Stub.Address address = new IntimeServiceV3_2Stub.Address();
address.setLine1("Address1");
address.setLine2("Add2");
address.setTown("Town");
address.setCounty("County");
address.setCountry("UK");
address.setPostcode("AB1 2CD");
address.setCountryCode("GB");
worker.setAddress(address);
BankAccount bank = new BankAccount();
bank.setAccountName("Ltd Wkr");
bank.setAccountNumber("12345678");
bank.setBank("bank");
bank.setSortCode("11-22-33");
worker.setBankAccount(bank);
Company ltdCompany = new Company();
ltdCompany.setName("Ltd Co Name");
ltdCompany.setCompanyNo("123456789");
ltdCompany.setCompanyVatNo("1234567890");
ltdCompany.setVatCode("T0");
worker.setLimitedCompany(ltdCompany);
IntimeServiceV3_2Stub.CreateOrUpdateWorker request = new IntimeServiceV3_2Stub.CreateOrUpdateWorker();
request.setToken(ticket); //from authenticate call
request.setWorker(worker);
IntimeServiceV3_2Stub.CreateOrUpdateWorkerResponse result=stub.createOrUpdateWorker(request);
if (result != null) {
System.out.println("Created/updated Worker with ID:" + result.get_return());
}
} catch (java.lang.Exception e) {
System.out.println("Exception occurred: " + e);
}
Create a Placement
try{ //Attempt to read the placement first to check if it already exists IntimeServiceV3_2Stub.GetPlacementByExternalId getPlacementRequest=new IntimeServiceV3_2Stub.GetPlacementByExternalId(); getPlacementRequest.setId("WEB-PLC-001"); getPlacementRequest.setToken(ticket); GetPlacementByExternalIdResponse placementResponse=stub.getPlacementByExternalId(getPlacementRequest); IntimeServiceV3_2Stub.Placement placement=placementResponse.get_return(); if (placement == null) { //placement does not exist placement = new IntimeServiceV3_2Stub.Placement(); placement.setExternalId("WEB-PLC-001"); } //Consultant IntimeServiceV3_2Stub.Consultant consultant= new IntimeServiceV3_2Stub.Consultant(); IntimeServiceV3_2Stub.GetConsultantsByExternalId getConsultantRequest=new IntimeServiceV3_2Stub.GetConsultantsByExternalId(); getConsultantRequest.setId("WEB-CON01"); getConsultantRequest.invoice.getInvoiceNumber()); System.out.println("Invoice date:" + invoice.getInvoiceDate().getTime()); System.out.println("Invoice Type:" + invoice.getInvoiceDescription()); System.out.println("Invoice GUID:" + invoice.getInvoiceGUID()); System.out.println("Invoice Net:" + invoice.getNet()); System.out.println("Invoice Gross:" + invoice.getGross()); System.out.println("Invoice VAT:" + invoice.getVat()); System.out.println("Invoice Currency:" + invoice.getCurrency()); if (invoice.getExported() != null) { System.out.println("Exported date:" + invoice.getExported().getTime()); } } } } catch (Exception e) { System.out.println("Exception occurred: " + e); } |
---|
Create or update a Worker
try { //Attempt to read the worker first as it may already exist IntimeServiceV3_2Stub.GetWorkerByExternalId getWorkerRequest=new IntimeServiceV3_2Stub.GetWorkerByExternalId(); getWorkerRequest.setId("WEB-WKR01"); getWorkerRequest.setToken(ticket); //from authenticate call GetWorkerByExternalIdResponse workerResponse=stub.getWorkerByExternalId(getWorkerRequest); Worker worker=workerResponse.get_return(); if (worker == null) { //Worker did not exist worker.setExternalId("WEB-WKR01"); } //set or update any fields as required worker.setFirstname("Ltd"); worker.setLastname("Worker"); worker.setEmail("x@x.com"); worker.setTitle("Mrs"); worker.setWorkerType("ltd"); worker.setGender("F"); worker.setSelfBilling(false); worker.setAccountsReference("ACC_REF"); worker.setPaymentFrequency("Monthly"); String[] wConsolidation = new String[] { "destination","source","pay-currency","purchase-tax-code","worker" }; worker.setConsolidation(wConsolidation); String[] wGrouping = new String[] { "sheet-rate" }; worker.setGrouping(wGrouping); Calendar cal = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT")); cal.set(1980, 0, 1, 0, 0, 0); cal.set(Calendar.MILLISECOND, 0); worker.setDateOfBirth(cal); Calendar cal2 = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT")); cal2.set(2017, 0, 1, 0, 0, 0); cal2.set(Calendar.MILLISECOND, 0); worker.setDateOfJoining(cal2); IntimeServiceV3_2Stub.Address address = new IntimeServiceV3_2Stub.Address(); address.setLine1("Address1"); address.setLine2("Add2"); address.setTown("Town"); address.setCounty("County"); address.setCountry("UK"); address.setPostcode("AB1 2CD"); address.setCountryCode("GB"); worker.setAddress(address); BankAccount bank = new BankAccount(); bank.setAccountName("Ltd Wkr"); bank.setAccountNumber("12345678"); bank.setBank("bank"); bank.setSortCode("11-22-33"); worker.setBankAccount(bank); Company ltdCompany = new Company(); ltdCompany.setName("Ltd Co Name"); ltdCompany.setCompanyNo("123456789"); ltdCompany.setCompanyVatNo("1234567890"); ltdCompany.setVatCode("T0"); worker.setLimitedCompany(ltdCompany); IntimeServiceV3_2Stub.CreateOrUpdateWorker request = new IntimeServiceV3_2Stub.CreateOrUpdateWorker(); request.setToken(ticket); //from authenticate call GetConsultantsByExternalIdResponse consultantResponse=stub.getConsultantsByExternalId(getConsultantRequestrequest.setWorker(worker); IntimeServiceV3_2Stub.Consultant[] cons=consultantResponse.get_return(CreateOrUpdateWorkerResponse result=stub.createOrUpdateWorker(request); if (consresult != = null || cons.size() < 1) { //consultant did not exist consultant.setExternalId("WEB-CON01"); consultant.setFirstname("Web"); consultant.setLastname("Consultant"); consultant.setEmail("C@c.com"); IntimeServiceV3_2Stub.CreateOrUpdateConsultant createConsultantRequestSystem.out.println("Created/updated Worker with ID:" + result.get_return()); } } catch (java.lang.Exception e) { System.out.println("Exception occurred: " + e); } |
---|
Create a Placement
try{ //Attempt to read the placement first to check if it already exists IntimeServiceV3_2Stub.GetPlacementByExternalId getPlacementRequest=new IntimeServiceV3_2Stub.CreateOrUpdateConsultantGetPlacementByExternalId(); createConsultantRequestgetPlacementRequest.setId("WEB-PLC-001"); getPlacementRequest.setToken(ticket); createConsultantRequest.setConsultant (consultantGetPlacementByExternalIdResponse placementResponse=stub.getPlacementByExternalId(getPlacementRequest); IntimeServiceV3_2Stub.CreateOrUpdateConsultantResponse createConsultantResultPlacement placement=stubplacementResponse.createOrUpdateConsultantget_return(createConsultantRequest); if (createConsultantResult !placement == null) { System.out.println("Created/updated Consultant with ID:" + createConsultantResult.get_return()); } } else { consultant = cons[0]; } placement.setConsultant(consultant); //Client //placement does not exist placement = new IntimeServiceV3_2Stub.Placement(); placement.setExternalId("WEB-PLC-001"); } //Consultant IntimeServiceV3_2Stub.Client client Consultant consultant= new IntimeServiceV3_2Stub.ClientConsultant(); IntimeServiceV3_2Stub.GetClientsByExternalId getClientRequestGetConsultantsByExternalId getConsultantRequest=new IntimeServiceV3_2Stub.GetClientsByExternalIdGetConsultantsByExternalId(); getClientRequestgetConsultantRequest.setId("WEB-CLI01CON01"); getClientRequestgetConsultantRequest.setToken(ticket); //from authenticate call GetClientsByExternalIdResponse clientResponseGetConsultantsByExternalIdResponse consultantResponse=stub.getClientsByExternalIdgetConsultantsByExternalId(getClientRequestgetConsultantRequest); IntimeServiceV3_2Stub.ClientConsultant[] clientscons=clientResponseconsultantResponse.get_return(); if (clientscons== null || clientscons.size() < 1) { //client consultant did not exist clientconsultant.setExternalId("WEB-CLI01CON01"); clientconsultant.setNamesetFirstname("Web Client 001"); clientconsultant.setTermsTemplateNamesetLastname("Default Charge TermsConsultant"); //populate other fieldsconsultant.setEmail("C@c.com"); IntimeServiceV3_2Stub.CreateOrUpdateClient createClientRequest CreateOrUpdateConsultant createConsultantRequest = new IntimeServiceV3_2Stub.CreateOrUpdateClientCreateOrUpdateConsultant(); createClientRequestcreateConsultantRequest.setToken(ticket); createClientRequestcreateConsultantRequest.setClientsetConsultant(clientconsultant); IntimeServiceV3_2Stub.CreateOrUpdateClientResponse createClientResultCreateOrUpdateConsultantResponse createConsultantResult=stub.createOrUpdateClientcreateOrUpdateConsultant(createClientRequestcreateConsultantRequest); if (createClientResult createConsultantResult != null) { System.out.println("Created/updated Client Consultant with ID:" + createClientResultcreateConsultantResult.get_return()); } } else { client consultant = clientscons[0]; } placement.setClientsetConsultant(clientconsultant); //ManagerClient IntimeServiceV3_2Stub.Manager manager Client client = new IntimeServiceV3_2Stub.ManagerClient(); IntimeServiceV3_2Stub.GetManagersByExternalId getManagerRequestGetClientsByExternalId getClientRequest=new IntimeServiceV3_2Stub.GetManagersByExternalIdGetClientsByExternalId();getManagerRequest getClientRequest.setId("WEB-MAN01CLI01"); getManagerRequestgetClientRequest.setToken(ticket); //from authenticate callGetManagersByExternalIdResponse managerResponse GetClientsByExternalIdResponse clientResponse=stub.getManagersByExternalIdgetClientsByExternalId(getManagerRequestgetClientRequest); IntimeServiceV3_2Stub.ManagerClient[] mgrsclients=managerResponseclientResponse.get_return(); if (mgrsclients== null || mgrsclients.size() < 1) { //manager client did not exist exist managerclient.setExternalId("WEB-MAN01CLI01"); managerclient.setFirstnamesetName("Web Client 001"); managerclient.setLastnamesetTermsTemplateName("ManagerDefault Charge Terms"); manager.setEmail("m@m.com");//populate other fields manager.setClient(client); createManagerRequestcreateClientRequest.setToken(ticket); createManagerRequestcreateClientRequest.setManagersetClient(managerclient); IntimeServiceV3_2Stub.CreateOrUpdateManagerResponse createManagerResultCreateOrUpdateClientResponse createClientResult=stub.createOrUpdateManagercreateOrUpdateClient(createManagerRequestcreateClientRequest); if (createManagerResult createClientResult != null) { System.out.println("Created/updated ManagerClient with ID:" + createManagerResultcreateClientResult.get_return()); } } else { manager client = mgrsclients[0]; } placement.setManagersetClient(managerclient); //WorkerManager IntimeServiceV3_2Stub.Manager manager = new IntimeServiceV3_2Stub.Manager(); IntimeServiceV3_2Stub.GetWorkersByExternalId getWorkerRequestGetManagersByExternalId getManagerRequest=new IntimeServiceV3_2Stub.GetWorkersByExternalIdGetManagersByExternalId(); //set/update other placement fieldsplacement.setContractedHours(new BigDecimal(37.5)Worker IntimeServiceV3_2Stub.GetWorkersByExternalId getWorkerRequest=new IntimeServiceV3_2Stub.GetWorkersByExternalId(); placement.setCurrencyForPayTimesheets("GBP"); placement.setChargeableExpenseApprovalRoute("Client Manager Approval"); placement.setNonChargeableExpenseApprovalRoute("Auto Approval"); placement.setTimesheetApprovalRoute("Auto Approval"); placement.setExpenseTemplate("Default"); placement.setHolidayAccuralRate(0.12); placement.setJobDescription("Web Placement 1"); placement.setJobTitle("Web Test 001"); placement.setNoCommunications(""); placement.setPurchaseOrderNum("po_num"); placement.setSalesCostCentre("scc"); placement.setTimesheetDateCalculatorName("weekly"); placement.setPerm(false); Calendar cal1 = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT")); cal1.set(2021, 3, 1, 0, 0, 0); placement.setStart(cal1); Calendar cal2 = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT")); cal2.set(2023, 3, 1, 0, 0, 0); placement.setEnd(cal2); IntimeServiceV3_2Stub.Rate[] rates = new IntimeServiceV3_2Stub.Rate[1]; IntimeServiceV3_2Stub.Rate rate1 = new IntimeServiceV3_2Stub.Rate(); rate1.setName("Standard Hours"); rate1.setPay(new BigDecimal(9.99)); rate1.setCharge(new BigDecimal(11.11)); rate1.setPayElementCode("001"); rate1.setPeriod("Hourly"); rate1.setPeriodDuration(60); rate1.setPriorityOrder(0); rate1.setTimePattern("DEFAULT"); rate1.setTimesheetFields("START_FINISH_BREAK"); rate1.setSelectableByWorkers(true); rates[0] = rate1; placement.setRates(rates); IntimeServiceV3_2Stub.CreateOrUpdatePlacement request = new IntimeServiceV3_2Stub.CreateOrUpdatePlacement(); request.setToken(ticket); request.setPlacement(placement); IntimeServiceV3_2Stub.CreateOrUpdatePlacementResponse result=stub.createOrUpdatePlacement(request); if (result != null) { System.out.println("Created/updated Placement with ID:" + result.get_return()); } } catch (java.lang.Exception e) { System.out.println("Exception occurred: " + e); } |
---|
Update a Placement
try{
//Attempt to read the placement first
IntimeServiceV3_2Stub.GetPlacementByExternalId getPlacementRequest=new IntimeServiceV3_2Stub.GetPlacementByExternalId();
getPlacementRequest.setId("WEB-PLC-001");
getPlacementRequest.setToken(ticket);
GetPlacementByExternalIdResponse placementResponse=stub.getPlacementByExternalId(getPlacementRequest);
IntimeServiceV3_2Stub.Placement placement=placementResponse.get_return();
if (placement == null) {
//placement does not exist
placement = new IntimeServiceV3_2Stub.Placement();
//refer to create placement process
}
//Apply any Consultant changes
IntimeServiceV3_2Stub.Consultant consultant=placement.getConsultant();
consultant.setDepartment("Web testing");
//Apply any Client changes
IntimeServiceV3_2Stub.Client client=placement.getClient();
client.getInvoicingContact().getAddress().setLine1("123 Test Street");
//Apply any Manager changes
IntimeServiceV3_2Stub.Manager manager=placement.getManager();
manager.setLastname("Modified");
//Apply any Worker changes
IntimeServiceV3_2Stub.Worker worker=placement.getWorker();
worker.getLimitedCompany().setCompanyVatNo("67896789");
worker.setDefaultPaymentCurrency("GBP");
//set/update other placement fields
placement.setPurchaseOrderNum("po_num 2");
placement.setSalesCostCentre("scc mod");
for (IntimeServiceV3_2Stub.Rate rate : placement.getRates()) {
if(rate.getName() == "Standard Hours") {
//update pay/charge rate
rate1.setPay(new BigDecimal(15));
rate1.setCharge(new BigDecimal(22.50));
}
}
IntimeServiceV3_2Stub.CreateOrUpdatePlacement request = new IntimeServiceV3_2Stub.CreateOrUpdatePlacement();
request.setToken(ticket);
request.setPlacement(placement);
IntimeServiceV3_2Stub.CreateOrUpdatePlacementResponse result=stub.createOrUpdatePlacement(request);
if (result != null) {
System.out.println("Created/updated Placement with ID:" + result.get_return());
}
} catch (java.lang.Exception e) {
System.out.println("Exception occurred: " + e);
}
Create or update a Timesheet
try{ //Read the associated placement so we can reference the rates & participants IntimeServiceV3_2Stub.GetPlacementByExternalId getPlacementRequest=new IntimeServiceV3_2Stub.GetPlacementByExternalId(); getPlacementRequest.setId("WEB-PLC-001"); getPlacementRequest.setToken(ticket); GetPlacementByExternalIdResponse placementResponse=stub.getPlacementByExternalId(getPlacementRequest); Placement placement=placementResponse.get_return(); //identify the required rate Rate rate1 = null; for (ticket); //from authenticate call
//set/update other placement fields placement.setContractedHours(new BigDecimal(37.5)); placement.setCurrencyForCharge("GBP"); placement.setCurrencyForPayExpenses("GBP"); placement.setCurrencyForPayTimesheets("GBP"); placement.setChargeableExpenseApprovalRoute("Client Manager Approval"); placement.setNonChargeableExpenseApprovalRoute("Auto Approval"); placement.setTimesheetApprovalRoute("Auto Approval"); placement.setExpenseTemplate("Default"); placement.setHolidayAccuralRate(0.12); placement.setJobDescription("Web Placement 1"); placement.setJobTitle("Web Test 001"); placement.setNoCommunications(""); placement.setPurchaseOrderNum("po_num"); placement.setSalesCostCentre("scc"); placement.setTimesheetDateCalculatorName("weekly"); placement.setPerm(false); Calendar cal1 = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT")); cal1.set(2021, 3, 1, 0, 0, 0); placement.setStart(cal1); Calendar cal2 = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT")); cal2.set(2023, 3, 1, 0, 0, 0); placement.setEnd(cal2); IntimeServiceV3_2Stub.Rate[] rates = new IntimeServiceV3_2Stub.Rate[1]; IntimeServiceV3_2Stub.Rate rate1 = new IntimeServiceV3_2Stub.Rate(); rate1.setName("Standard Hours"); rate1.setPay(new BigDecimal(9.99)); rate1.setCharge(new BigDecimal(11.11)); rate1.setPayElementCode("001"); rate1.setPeriod("Hourly"); rate1.setPeriodDuration(60); rate1.setPriorityOrder(0); rate1.setTimePattern("DEFAULT"); rate1.setTimesheetFields("START_FINISH_BREAK"); rate1.setSelectableByWorkers(true); rates[0] = rate1; placement.setRates(rates); IntimeServiceV3_2Stub.CreateOrUpdatePlacement request = new IntimeServiceV3_2Stub.CreateOrUpdatePlacement(); request.setToken(ticket); request.setPlacement(placement); IntimeServiceV3_2Stub.CreateOrUpdatePlacementResponse result=stub.createOrUpdatePlacement(request); if (result != null) { System.out.println("Created/updated Placement with ID:" + result.get_return()); } } catch (java.lang.Exception e) { System.out.println("Exception occurred: " + e); } |
---|
Update a Placement
try{ //Attempt to read the placement first IntimeServiceV3_2Stub.GetPlacementByExternalId getPlacementRequest=new IntimeServiceV3_2Stub.GetPlacementByExternalId(); getPlacementRequest.setId("WEB-PLC-001"); getPlacementRequest.setToken(ticket); GetPlacementByExternalIdResponse placementResponse=stub.getPlacementByExternalId(getPlacementRequest); IntimeServiceV3_2Stub.Placement placement=placementResponse.get_return(); if (placement == null) { //placement does not exist placement = new IntimeServiceV3_2Stub.Placement(); //refer to create placement process } //Apply any Consultant changes IntimeServiceV3_2Stub.Consultant consultant=placement.getConsultant(); consultant.setDepartment("Web testing"); //Apply any Client changes IntimeServiceV3_2Stub.Client client=placement.getClient(); client.getInvoicingContact().getAddress().setLine1("123 Test Street"); //Apply any Manager changes IntimeServiceV3_2Stub.Manager manager=placement.getManager(); //Apply any Worker changes IntimeServiceV3_2Stub.Worker worker=placement.getWorker(); worker.getLimitedCompany().setCompanyVatNo("67896789"); worker.setDefaultPaymentCurrency("GBP"); //set/update other placement fields placement.setPurchaseOrderNum("po_num 2"); placement.setSalesCostCentre("scc mod"); for (IntimeServiceV3_2Stub.Rate rate : placement.getRates()) { ifif(rate.getName() .equals(== "Standard Hours") ){ rate1 = rate; } } Calendar cal = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT" //update pay/charge rate rate1.setPay(new BigDecimal(15)); cal.set(2017,9,1,0,0,0); cal.set(Calendar.MILLISECOND, 0); //create a timesheetSubmission rate1.setCharge(new BigDecimal(22.50)); } } IntimeServiceV3_2Stub.Timesheet timesheetSubmission CreateOrUpdatePlacement request = new IntimeServiceV3_2Stub.TimesheetCreateOrUpdatePlacement(); timesheetSubmissionrequest.setPlacementExternalRef(placement.getExternalId()setToken(ticket);timesheetSubmission request.setSubmitterIdsetPlacement(placement.getWorker().getId()); //Whoever is creating the Timesheet timesheetSubmission.setPeriodEndDate(cal.getTime()); //Add the Shifts IntimeServiceV3_2Stub.Shift shift = new IntimeServiceV3_2Stub.Shift(CreateOrUpdatePlacementResponse result=stub.createOrUpdatePlacement(request); shift.setComment("Shift 1 comment"); shift.setDay(cal.getTimeInMillis()); //set the day the shift relates to shift.setRateId(rate1.getId()); if (rate1.getTimesheetFields().equals("START_FINISH_BREAK")) { //This rate requires start, finish and break times entered for the shift Calendar calStart = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT")); calStart.set(2017,9,1,0,0,0); calStart.set(Calendar.MILLISECOND, 0); calStart.set(Calendar.HOUR_OF_DAY, 8); shift.setStartTime(calStart.getTimeInMillis()); Calendar calEndif (result != null) { System.out.println("Created/updated Placement with ID:" + result.get_return()); } } catch (java.lang.Exception e) { System.out.println("Exception occurred: " + e); } |
---|
Create or update a Timesheet
try{ //Read the associated placement so we can reference the rates & participants IntimeServiceV3_2Stub.GetPlacementByExternalId getPlacementRequest=new IntimeServiceV3_2Stub.GetPlacementByExternalId(); getPlacementRequest.setId("WEB-PLC-001"); getPlacementRequest.setToken(ticket); GetPlacementByExternalIdResponse placementResponse=stub.getPlacementByExternalId(getPlacementRequest); Placement placement=placementResponse.get_return(); //identify the required rate Rate rate1 = null; for (Rate rate : placement.getRates()) { if (rate.getName().equals("Standard Hours")) { rate1 = rate; } } Calendar cal = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT")); calEndcal.set(2017,9,1,0,0,0); calStartcal.set(Calendar.MILLISECOND, 0); calEnd.set(Calendar.HOUR_OF_DAY, 17//create a timesheetSubmission IntimeServiceV3_2Stub.Timesheet timesheetSubmission = new IntimeServiceV3_2Stub.Timesheet(); shifttimesheetSubmission. setFinishTimesetPlacementExternalRef( calEndplacement. getTimeInMillisgetExternalId()); shift.setMealBreak(3600000LtimesheetSubmission.setSubmitterId(placement.getWorker().getId()); // 1 hour in milliseconds} else if (rate1.getTimesheetFields().equals("HOURS")) { shift.setHours(8 * 60 * 60 * 1000L); } else Whoever is creating the Timesheet timesheetSubmission.setPeriodEndDate(cal.getTime()); //Add the Shifts IntimeServiceV3_2Stub.Shift shift = new IntimeServiceV3_2Stub.Shift(); shift.setComment("Shift 1 comment"); shift.setDay(cal.getTimeInMillis()); //set the day the shift relates to shift.setRateId(rate1.getId()); if (rate1.getTimesheetFields().equals("DECIMALSTART_FINISH_BREAK")) { //This rate requires start, finish and break times entered for the shift Calendar calStart = Calendar.setDecimal(new BigDecimal(1getInstance(java.util.TimeZone.getTimeZone("GMT")); } else if (rate1.getTimesheetFields().equals("DAY")) { shift.setDecimal(new BigDecimal(1)); } Shift[] shifts = new Shift[1]; shifts[0] = shift; timesheetSubmission.setShifts(shifts); IntimeServiceV3_2Stub.UpdateTimesheet updateTimesheetRequest=new IntimeServiceV3_2Stub.UpdateTimesheet(); updateTimesheetRequest.setToken(ticket); updateTimesheetRequest.setTimesheet(timesheetSubmission); UpdateTimesheetResponse updateTimesheetResponse=stub.updateTimesheet(updateTimesheetRequest); Long timesheetId=updateTimesheetResponse.get_return(); System.out.println("Update Timesheet returned:"+timesheetId); } catch (Exception e) { System.out.println("Exception occurred: " + e); } |
---|
Submit a Timesheet
try { IntimeServiceV3_2Stub.SubmitTimesheet submitTimesheetRequest=new IntimeServiceV3_2Stub.SubmitTimesheet(); submitTimesheetRequestcalStart.set(2017,9,1,0,0,0); calStart.set(Calendar.MILLISECOND, 0); calStart.set(Calendar.HOUR_OF_DAY, 8); shift.setStartTime(calStart.getTimeInMillis()); Calendar calEnd = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT")); calEnd.set(2017,9,1,0,0,0); calStart.set(Calendar.MILLISECOND, 0); calEnd.set(Calendar.HOUR_OF_DAY, 17); shift.setFinishTime(calEnd.getTimeInMillis()); shift.setMealBreak(3600000L); //1 hour in milliseconds } else if (rate1.getTimesheetFields().equals("HOURS")) { shift.setHours(8 * 60 * 60 * 1000L); } else if (rate1.getTimesheetFields().equals("DECIMAL")) { shift.setDecimal(new BigDecimal(1)); } else if (rate1.getTimesheetFields().equals("DAY")) { shift.setDecimal(new BigDecimal(1)); } Shift[] shifts = new Shift[1]; shifts[0] = shift; timesheetSubmission.setShifts(shifts); IntimeServiceV3_2Stub.UpdateTimesheet updateTimesheetRequest=new IntimeServiceV3_2Stub.UpdateTimesheet(); updateTimesheetRequest.setToken(ticket);submitTimesheetRequest .updateTimesheetRequest.setTimesheet(timesheetSubmission); UpdateTimesheetResponse updateTimesheetResponse=stub.updateTimesheet(updateTimesheetRequest); Long timesheetId=updateTimesheetResponse.get_return(); System.out.println("Update Timesheet returned:"+timesheetId); } catch (Exception e) { System.out.println("Exception occurred: " + e); } |
---|
Submit a Timesheet
try { IntimeServiceV3_2Stub.SubmitTimesheet submitTimesheetRequest=new IntimeServiceV3_2Stub.SubmitTimesheet(); submitTimesheetRequest.setToken(ticket); submitTimesheetRequest.setTimesheetId(<timesheet_id>); SubmitTimesheetResponse submitTimesheetResponse=stub.submitTimesheet(submitTimesheetRequest); System.out.println("Submit Timesheet returned: "+submitTimesheetResponse.get_return()); } catch (Exception e) { System.out.println("Exception occurred: " + e); } |
---|
...
The following fields should be read from and updated on the Worker base object: AccountsRef, DefaultPaymentCurrency, NominalCode, ExpensesNominalCode, Consolidation and Grouping.
The VAT Code should be read from and updated via the associated LimitedCompany object.
Version 3.0 as of this version the situation is simplified. There is no LtdCompanyContact object on the worker. The Limited Company Contact details (name, email, address) should be read and updated via the LimitedCompany.InvoiceContact object. All the following fields can only be read from and updated from the Worker base object: AccountsRef, VATCode, DefaultPaymentCurrency, NominalCode, ExpensesNominalCode, Consolidation and Grouping.
Constants
Whilst using the RSM InTime Web Services, some fields have expected values from a range of constants. These are detailed below.
...
Comment
...
, NominalCode, ExpensesNominalCode, Consolidation and Grouping.
The VAT Code should be read from and updated via the associated LimitedCompany object.
Version 3.0 as of this version the situation is simplified. There is no LtdCompanyContact object on the worker. The Limited Company Contact details (name, email, address) should be read and updated via the LimitedCompany.InvoiceContact object. All the following fields can only be read from and updated from the Worker base object: AccountsRef, VATCode, DefaultPaymentCurrency, NominalCode, ExpensesNominalCode, Consolidation and Grouping. Note: Both Worker and LimitedCompany objects have timesheetsOnInvoices field - the one specified in the LimitedCompany will take precedence over Worker.
Constants
Whilst using the RSM InTime Web Services, some fields have expected values from a range of constants. These are detailed below.
Field | Constant | Comment | Notes |
---|---|---|---|
Client | |||
invoicePeriod | 0 | Weekly | |
1 | Two-Weekly | ||
2 | Four-Weekly | ||
3 | Calendar Monthly | ||
4 | 4-4-5 | ||
5 | Other | ||
InvoiceDeliveryMethod (howSendInvoices) | 0 | Post | Invoice delivery method |
1 | |||
2 | Fax | ||
3 | Not sent | ||
timesheetsOnInvoices | 0 | Timesheets On Invoices | |
1 | Timesheets Not On Invoices | ||
paperOnInvoices | -1 | Agency Default | |
0 | No Attachments | ||
1 | Attach Paper Timesheets | ||
2 | Attach Expense Group Paper | ||
4 | Attach Expense Receipts Paper | ||
<sum of the above> | Attach the appropriate paper | For example, 5 to attach timesheets and receipts | |
consolidation | Code Required String[] cConsolidation = new String[] { "charge-payment-term","destination","source","charge-currency","sales-tax-code","client" }; | Everything Goes On One Invoice | |
Code Required String[] cConsolidation = new String[] { "charge-payment-term","destination","source","charge-currency","sales-tax-code","client","sheet-type" }; | Expenses Go On On Invoice And Expenses Go On Another | ||
Code Required String[] cConsolidation = new String[] { "charge-payment-term","destination","source","charge-currency","sales-tax-code","client","placement" }; | Each Placement is Invoiced Separately | ||
Code Required String[] cConsolidation = new String[] { "charge-payment-term","destination","source","charge-currency","sales-tax-code","client","sheet" }; | Each Timesheet Or Expense Item Is Invoiced Separately | ||
Code Required String[] cConsolidation = new String[] { "charge-payment-term","destination","source","charge-currency","sales-tax-code","client",”worker” }; | Each Candidate Is Invoiced Separately | ||
grouping | Code Required String[] cGrouping = new String[] { "sheet-rate" }; client.setGrouping(cGrouping); | Sheet Rate | |
Worker | |||
workerType | paye | For PAYE Workers | |
ltd | For Ltd Company Workers | ||
external-contractor | For Non Ltd Company Workers | ||
cis | For CIS Workers | ||
umb | For Workers operating through an Umbrella | You must also reference the umbrella against the worker, otherwise the worker will appear as LTD. | |
ir35 | For workers inside scope of IR35 (deemed) | ||
cisBusinessType | SoleTrader | ||
Company | |||
Trust | |||
Partnership | |||
cisPercentage | 0 | ||
20 | |||
30 | |||
paymentFrequency | weekly | ||
monthly | |||
<InPay Payroll Name> | If InPay connected, for PAYE workers, use the InPay Payroll Name | ||
limitedCompany.timesheetsOnInvoices | 0 | Timesheets On Invoices | |
1 | Timesheets Not On Invoices | ||
limitedCompany.paperOnInvoices | -1 | Agency Default | |
0 | No Attachments | ||
1 | Attach Paper Timesheets | ||
2 | Attach Expense Group Paper | ||
4 | Attach Expense Receipts Paper | ||
<sum of the above> | Attach the appropriate paper | For example, 5 to attach timesheets and receipts | |
gender | M | ||
F | |||
limitedCompany.invoicePeriod | 0 | Weekly | |
1 | Two-Weekly | ||
2 | Four-Weekly | ||
3 | Calendar Monthly | ||
4 | 4-4-5 | ||
5 | Other | ||
Payment Method | bacs | NOT CASE SENSITIVE | |
cheque | NOT CASE SENSITIVE | ||
cash | NOT CASE SENSITIVE | ||
chaps | NOT CASE SENSITIVE | ||
ach | NOT CASE SENSITIVE | ||
international | NOT CASE SENSITIVE | ||
building society | NOT CASE SENSITIVE | ||
sendLtdCompanyTimesheets | 0 | Do not send a copy of the timesheets to the worker or provider | |
1 | Only send a copy of timesheets to the worker's ltd company email address | ||
2 | Send a copy of timesheets to the worker's provider if they have one, otherwise send it to the worker | ||
3 | Send copies to both the worker and provider | ||
consolidation | Code Required String[] |
wConsolidation = new String[] { |
"destination","source"," |
pay-currency"," |
purchase-tax-code"," |
worker" }; |
worker.setConsolidation( |
wConsolidation); | Everything Goes On One Invoice | |
Code Required String[] |
wConsolidation = new String[] { |
" |
destination","source"," |
pay-currency"," |
purchase-tax-code"," |
worker","sheet-type" }; |
worker.setConsolidation( |
wConsolidation); | Expenses Go On On Invoice And Expenses Go On Another | |
Code Required String[] |
client.setConsolidation(cConsolidation);
Each Placement is Invoiced Separately
Code Required
String[] cConsolidationwConsolidation = new String[] { |
" |
destination","source"," |
pay-currency"," |
purchase-tax-code"," |
worker"," |
placement" }; |
worker.setConsolidation( |
wConsolidation); | Each |
Placement is Invoiced Separately | |
Code Required String[] |
wConsolidation = new String[] { " |
destination","source"," |
pay-currency"," |
purchase-tax-code"," |
worker", |
"sheet" }; |
worker.setConsolidation( |
wConsolidation); | Each |
Timesheet Or Expense Item Is Invoiced Separately | |||
grouping | Code Required String[] |
wGrouping = new String[] |
client.setGrouping(cGrouping);
Do not send a copy of the timesheets to the worker or provider
Code Required
String[] wConsolidation = new String[] { "destination","source","pay-currency","purchase-tax-code","worker" };
worker.setConsolidation(wConsolidation);
Everything Goes On One Invoice
Code Required
String[] wConsolidation = new String[] { "destination","source","pay-currency","purchase-tax-code","worker","sheet-type" };
worker.setConsolidation(wConsolidation);
Expenses Go On On Invoice And Expenses Go On Another
Code Required
String[] pConsolidation = new String[] { "destination","source","pay-currency","purchase-tax-code","worker","placement" };
worker.setConsolidation(pConsolidation);
Each Placement is Invoiced Separately
Code Required
String[] wConsolidation = new String[] { "destination","source","pay-currency","purchase-tax-code","worker","sheet" };
provider.setConsolidation(wConsolidation);
Each Timesheet Or Expense Item Is Invoiced Separately
Code Required
String[] wGrouping = new String[] { "sheet-rate" };
provider.setGrouping(wGrouping);
{ "sheet","sheet-rate" }; worker.setGrouping(wGrouping); | Sheet Rate | ||
statementA | StatementA | Example: "ANN NN" | |
statementD | Always N | N | |
engagementType | None/N,A,B,C,D,E,F,Z | ||
Placement | |||
layout | standard | See Maintaining Placements | |
calendar | |||
timesheetDateCalculator | Usual: weekly (Default: Monday - Sunday) monthly (Calendar: 1st - 28/29/30/31th) Others: weekly_tue-mon weekly_wed-tue weekly_thurs-wed weekly_fri-thurs weekly_sat-fri weekly_sun-sat two-weekly two-weekly_tue-mon two-weekly_wed-tue two-weekly_thurs-wed two-weekly_fri-thurs two-weekly_sat-fri two-weekly_sun-sat two-weekly_timeplan four-weekly half-monthly-16th monthly2nd monthly3rd monthly4th monthly5th monthly6th monthly7th monthly8th monthly9th monthly10th monthly11th monthly12th monthly13th monthly14th monthly15th monthly16th monthly17th monthly18th monthly19th monthly20th monthly21st monthly22th monthly23th monthly24th monthly25th monthly26th monthly27th monthly28th half-monthly-15th four-four-five four-four-five-lastFri-old four-four-five-lastFri weekly-split four-four-five-2ndLastFri weekly_tue-mon-split weekly_wed-tue-split weekly_thurs-wed-split weekly_fri-thurs-split weekly_sat-fri-split weekly_sun-sat-split two-weekly-split two-weekly-alt four-weekly-split two-weekly-split-alt | See Maintaining Placements | |
Rates | |||
period | 60 / H | For hourly rates entered in hours format (hours only or start, break, finish). | |
1440 / F | For fixed rates of a specified duration entered in decimal format (decimal or tickbox) | ||
periodDuration | <any integer> | The duration in minutes for the fixed rate (e.g. 60 for |
hourly rates, 480 for a |
daily rates (if daily rate it worth 8 hours)). | |||
timePattern | default | Will use the selected default time pattern | |
<any string> | The string should match the name of a time pattern in the system | ||
timesheetFields | START_FINISH_BREAK | Enter start, break, finish | Only when period above is 60 |
HOURS | Enter hours only | Only when period above is 60 | |
DECIMAL | Enter time as a decimal | Only when period above is 1440 | |
DAY | Tickbox only (equivalent to entering decimals as 1.00) | Only when period above is 1440 | |
InvoiceAdjustmentSettings (Company / Worker) | |||
AdjustBy | 0 | Fixed Amount | |
1 | Percentage | ||
AdjustPer | 0 | Per Worker | |
1 | Per Timesheet | ||
2 | Per Invoice | ||
AdjustType | 0 | Addition | |
1 | Deduction | ||
ExpenseType | |||
EntryMethod | 0 | Gross value | Populate the GrossValue and optionally the VatAmount field on an ExpenseItem with this entry method |
1 | Net Value | Populate the NetValue field on an ExpenseItem with this entry method | |
2 | Units and Unit net | Populate the Unit and UnitNet fields on an ExpenseItem with this entry method. E.g. Set Unit = 30 and UnitNet = 0.45 to claim 30 miles at 45p per mile. | |
3 | Units and Net | Populate the Unit and Net Value fields on an ExpenseItem with this entry method. | |
Timesheet | |||
Status | getTimesheetStatus() | getStatus() | |
-1 | DELETED | ||
1 | INCOMPLETE | ||
2 | SUBMITTED | ||
3 | APPROVED | ||
5 | COMPLETED | ||
-2 | MISSING | ||
-3 | REVERTED | ||
InvoiceInfo (Invoice) | |||
Invoice Type | getInvoiceDescription() | ||
Advice Note | |||
Client Invoice | |||
Client Credit Note | |||
Self Bill Invoice | |||
Self Bill Credit Note | |||
Supplier Invoice | |||
Supplier Credit Note | |||
Provider | |||
consolidation | Code Required String[] pConsolidation = new String[] { "destination","source","pay-currency","purchase-tax-code","ltd-co-provider" }; | Everything Goes On One Invoice | |
Code Required String[] pConsolidation = new String[] { "destination","source","pay-currency","purchase-tax-code","ltd-co-provider","sheet-type" }; | Expenses Go On On Invoice And Expenses Go On Another | ||
Code Required String[] pConsolidation = new String[] { "destination","source","pay-currency","purchase-tax-code","ltd-co-provider","placement" }; | Each Placement is Invoiced Separately | ||
Code Required String[] pConsolidation = new String[] { "destination","source","pay-currency","purchase-tax-code","ltd-co-provider","sheet" }; | Each Timesheet Or Expense Item Is Invoiced Separately | ||
Code Required String[] pConsolidation = new String[] { "destination","source","pay-currency","purchase-tax-code","ltd-co-provider",”worker” }; | Each Candidate Is Invoiced Separately | ||
grouping | Code Required String[] pGrouping = new String[] { "sheet-rate" }; provider.setGrouping(pGrouping); | Sheet Rate | |
invoicePeriod | 0 | Weekly | |
1 | Two-Weekly | ||
2 | Four-Weekly | ||
3 | Calendar Monthly | ||
4 | 4-4-5 | ||
5 | Other | ||
timesheetsOnInvoices | 0 | Timesheets On Invoices | |
1 | Timesheets Not On Invoices | ||
paperOnInvoices | -1 | Agency Default | |
0 | No Attachments | ||
1 | Attach Paper Timesheets | ||
2 | Attach Expense Group Paper | ||
4 | Attach Expense Receipts Paper | ||
<sum of the above> | Attach the appropriate paper | For example, 5 to attach timesheets and receipts |