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.
...
try{ //Attempt to read the placement first to see if it already exists IntimeServiceV2_0Stub.GetPlacementByExternalId getPlacementRequest=new IntimeServiceV2_0Stub.GetPlacementByExternalId(); getPlacementRequest.setId("WEB-PLC-001"); getPlacementRequest.setToken(ticket); GetPlacementByExternalIdResponse placementResponse=stub.getPlacementByExternalId(getPlacementRequest); IntimeServiceV2_0Stub.Placement placement=placementResponse.get_return(); if (placement == null) { //placement does not exist placement = new IntimeServiceV2_0Stub.Placement(); placement.setExternalId("WEB-PLC-001"); } //Consultant IntimeServiceV2_0Stub.Consultant consultant= new IntimeServiceV2_0Stub.Consultant(); IntimeServiceV2_0Stub.GetConsultantsByExternalId getConsultantRequest=new IntimeServiceV2_0Stub.GetConsultantsByExternalId(); getConsultantRequest.setId("WEB-CON01"); getConsultantRequest.setToken(ticket); //from authenticate call GetConsultantsByExternalIdResponse consultantResponse=stub.getConsultantsByExternalId(getConsultantRequest); IntimeServiceV2_0Stub.Consultant[] cons=consultantResponse.get_return();IntimeServiceV2_0Stub.Consultant consultant= new IntimeServiceV2_0Stub.Consultant(); if (cons== null || cons.size() < 1) { //consultant did not exist consultant.setExternalId("WEB-CON01"); consultant.setFirstname("Web"); consultant.setLastname("Consultant"); consultant.setEmail("C@c.com"); IntimeServiceV2_0Stub.CreateOrUpdateConsultant createConsultantRequest = new IntimeServiceV2_0Stub.CreateOrUpdateConsultant(); createConsultantRequest.setToken(ticket); createConsultantRequest.setConsultant(consultant); IntimeServiceV2_0Stub.CreateOrUpdateConsultantResponse createConsultantResult=stub.createOrUpdateConsultant(createConsultantRequest); if (result createConsultantResult != null) { System.out.println("Created/updated Placement Consultant with ID:" + resultcreateConsultantResult.get_return()); } } else { consultant = cons[0]; } placement.setConsultant(consultant); //Client IntimeServiceV2_0Stub.Consultant consultant Client client = new IntimeServiceV2_0Stub.ConsultantClient(); consultant.setExternalId("CONS_001"); consultant.setEmail("y@y.com"); consultant.setFirstname("WebIntimeServiceV2_0Stub.GetClientsByExternalId getClientRequest=new IntimeServiceV2_0Stub.GetClientsByExternalId(); getClientRequest.setId("WEB-CLI01");consultant getClientRequest.setLastnamesetToken("Consultant"ticket);placement.setConsultant(consultant //from authenticate call GetClientsByExternalIdResponse clientResponse=stub.getClientsByExternalId(getClientRequest); IntimeServiceV2_0Stub.Client client = new IntimeServiceV2_0Stub.Client(); client.setExternalId("CLIENT_001"); client.setName("Web Client 001"); client.setTermsTemplateName("Default Charge Terms"); placement.setClient(client); IntimeServiceV2_0Stub.Manager manager = new IntimeServiceV2_0Stub.Manager(); manager.setExternalId("MGR_001"); manager.setEmail("z@z.com"); manager.setFirstname("Web"); manager.setLastname("Manager"); manager.setClientExternalId("CLIENT_001"); placement.setManager(manager); placement[] clients=clientResponse.get_return(); if (clients== null || clients.size() < 1) { //client did not exist client.setExternalId("WEB-CLI01"); client.setName("Web Client 001"); client.setTermsTemplateName("Default Charge Terms"); //populate other fields IntimeServiceV2_0Stub.CreateOrUpdateClient createClientRequest = new IntimeServiceV2_0Stub.CreateOrUpdateClient(); createClientRequest.setToken(ticket); createClientRequest.setClient(client); IntimeServiceV2_0Stub.CreateOrUpdateClientResponse createClientResult=stub.createOrUpdateClient(createClientRequest); if (createClientResult != null) { System.out.println("Created/updated Client with ID:" + createClientResult.get_return()); } } else { client = clients[0]; } placement.setClient(client); //Manager IntimeServiceV2_0Stub.Manager manager = new IntimeServiceV2_0Stub.Manager(); IntimeServiceV2_0Stub.GetManagersByExternalId getManagerRequest=new IntimeServiceV2_0Stub.GetManagersByExternalId(); //Worker IntimeServiceV2_0Stub.GetWorkersByExternalId getWorkerRequest=new IntimeServiceV2_0Stub.GetWorkersByExternalId();
//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(20172021, 3, 1, 0, 0, 0); placement.setStart(cal1); Calendar cal2 = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT")); cal2.set(20192023, 3, 1, 0, 0, 0); placement.setEnd(cal2); IntimeServiceV2_0Stub.Rate[] rates = new IntimeServiceV2_0Stub.Rate[1]; IntimeServiceV2_0Stub.Rate rate1 = new IntimeServiceV2_0Stub.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); IntimeServiceV2_0Stub.CreateOrUpdatePlacement request = new IntimeServiceV2_0Stub.CreateOrUpdatePlacement(); request.setToken(ticket); request.setPlacement(placement); IntimeServiceV2_0Stub.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); } |
---|
...
Field | Constant | Comment | Notes |
---|---|---|---|
Client | |||
invoice period | 0 | Weekly | |
1 | Two-Weekly | ||
2 | Four-Weekly | ||
3 | Calendar Monthly | ||
4 | 4-4-5 | ||
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 specify the umbrella against the worker, otherwise the worker will appear as LTD. | |
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 | ||
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 | |
gender | M | ||
F | |||
U | Unkown | ||
LTD invoice period | 0 | Weekly | |
1 | Two-Weekly | ||
2 | Four-Weekly | ||
3 | Calendar Monthly | ||
4 | 4-4-5 | ||
Payment Method | bacs | ||
cheque | |||
cash | |||
chaps | |||
ach | |||
international | |||
building society | |||
Placement | |||
layout | standard | See Maintaining Placements | |
calendar | |||
timesheetDateCalculator | weekly | See Maintaining Placements. You can see all possible values for this in the ui. | |
monthly | |||
<many more> | See UI for all options. | ||
Rates | |||
period | 60 | For hourly rates entered in hours format (hours only or start, break, finish). | |
1440 | 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 hours, 480 for a day). | |
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 |