Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.  

...

The 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_12?wsdl

Java Example

This example was written using the WSDL file for version 3.0 2 of the web services on our demo system: 

https://demo.in-time.co.uk/services/IntimeServiceV3_12?wsdl

Various tools are available for building the stub code. wsdl2java in the axis 2 package works well for java development:

...

/axis2-1.6.2/bin/wsdl2java.sh -or -uri "https://demo.in-time.co.uk/services/IntimeServiceV3_12?wsdl"

This will produce the following files:

/src/uk/co/in_time/IntimeServiceV3_0Stub2Stub.java

/src/uk/co/in_time/IntimeServiceV3_0CallbackHandler2CallbackHandler.java

/src/uk/co/in_time/IntimeServiceV3_0IntimeWebServiceException2IntimeWebServiceException.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.

...

try {

//Create an instance of the stub

IntimeServiceV3_0Stub 2Stub stub = new IntimeServiceV3_0Stub2Stub("https://demo.in-time.co.uk/services/IntimeServiceV3_12?wsdl");


//Get an authentication token

IntimeServiceV3_0Stub2Stub.Authenticate auth=new IntimeServiceV3_0Stub2Stub.Authenticate();

auth.setAgencyRefCode("<supplied_credentials>");

auth.setUsername("<supplied_credentials>");

auth.setPassword("<supplied_credentials>");

IntimeServiceV3_0Stub2Stub.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_0Stub2Stub.GetPlacementByExternalId request=new IntimeServiceV3_0Stub2Stub.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());

System.out.println("Chargeable Expense Approval Route: " + placement.getChargeableExpenseApprovalRoute());

System.out.println("Non-Chargeable Expense Approval Route: " + placement.getNonChargeableExpenseApprovalRoute());

System.out.println("ContractedHours: " + placement.getContractedHours());

System.out.println("JobDescription :" + placement.getJobDescription());

System.out.println("JobTitle: " + placement.getJobTitle());

System.out.println("NoCommunications: " + placement.getNoCommunications());

System.out.println("PurchaseOrderNum: " + placement.getPurchaseOrderNum());

System.out.println("SalesProject: " + placement.getSalesProject());

System.out.println("PurchaseBranch: " + placement.getPurchaseBranch());

System.out.println("CurrencyForCharge: " + placement.getCurrencyForCharge());

System.out.println("CurrencyForPayExpenses: " + placement.getCurrencyForPayExpenses());

System.out.println("CurrencyForPayTimesheets: " + placement.getCurrencyForPayTimesheets());

System.out.println("Perm: " + placement.getPerm());

System.out.println("TimesheetEmailApproval: " + placement.getTimesheetEmailApproval());

System.out.println("Timesheet layout: " + placement.getLayout());

System.out.println("Internal Agency Comments: " + placement.getInternalAgencyComments());

System.out.println("Holiday Accural Rate: " + placement.getHolidayAccuralRate());

System.out.println("Expenses Template: " + placement.getExpenseTemplate());

System.out.println("Charge Tax Code Override: " + placement.getChargeTaxCodeOverride());

System.out.println("Self Bill Tax Code Override: " + placement.getSelfBillTaxCodeOverride());

System.out.println("PAYEDeductionsOnLtd: " + placement.getPAYEDeductionsOnLtd());

if (placement.getInvoiceContactOverride() != null) {

Contact contact = placement.getInvoiceContactOverride();

Address address = contact.getAddress();

System.out.println("Placement charge invoice contact override: ");

System.out.println(" Firstname: " + contact.getFirstname());

System.out.println(" Lastname: " + contact.getLastname());

System.out.println(" Email: " + contact.getEmail());

System.out.println(" Phone: " + contact.getPhone());

System.out.println(" Fax: " + contact.getFax());

System.out.println(" Mobile: " + contact.getMobile());

System.out.println("Address:");

System.out.println(" Line 1:" + address.getLine1());

System.out.println(" Line 2:" + address.getLine2());

System.out.println(" Town:" + address.getTown());

System.out.println(" County:" + address.getCounty());

System.out.println(" Postcode: " + address.getPostcode());

System.out.println(" Country:" + address.getCountry());

System.out.println(" Country Code:" + address.getCountryCode());

}

if (placement.getRates() != null) {

for (Rate rate : placement.getRates()) {

System.out.println("Rate Name:" + rate.getName());

System.out.println("Pay:" + rate.getPay());

System.out.println("Charge:" + rate.getCharge());

System.out.println("Priority:" + rate.getPriorityOrder());

System.out.println("ID:" + rate.getId());

System.out.println("Period:" + rate.getPeriod());

System.out.println("PeriodDuration:" + rate.getPeriodDuration());

System.out.println("SelectableByWorkers:" + rate.getSelectableByWorkers());

System.out.println("TimePattern:" + rate.getTimePattern());

System.out.println("TimesheetFields:" + rate.getTimesheetFields());

System.out.println("PayElementCode:" + rate.getPayElementCode());

System.out.println("Payable:" + rate.getPayable());

System.out.println("Chargeable:" + rate.getChargeable());

System.out.println("Taxable:" + rate.getTaxable());

System.out.println("RefCode:" + rate.getRefCode());

}

}

if (placement.getSplitCommissions() != null) {

for (SplitCommission split : placement.getSplitCommissions()) {

System.out.println("\nCommission UserID:"+split.getUserId()+" Percentage:"+split.getWeight());

}

}

if (placement.getAlternativeManagers() != null) {

for (User altMan : placement.getAlternativeManagers()) {

System.out.println("Alternative Manager:" + altMan.getFirstname() + " " + altMan.getLastname());

System.out.println("External Id: " + altMan.getExternalId() + " Internal ID:" + altMan.getId());

}

}

}

} catch (java.lang.Exception e) {

System.out.println("Exception occurred: " + e);

}

Read a Timesheet including any invoices

try {

IntimeServiceV3_0Stub2Stub.GetTimesheetById request=new IntimeServiceV3_0Stub2Stub.GetTimesheetById();

request.setId(<timesheet_id>);

request.setToken(ticket);   //from authenticate call

GetTimesheetByIdResponse timesheetResp=stub.getTimesheetById(request);

Timesheet timesheet = timesheetResp.get_return();


System.out.println("Read Timesheet ID:" + timesheet.getId());

System.out.println("Status:" + timesheet.getStatus());

System.out.println("Placement:" + timesheet.getPlacementId());

if (timesheet.getPeriodEndDate() != null) System.out.println("End Date:" + timesheet.getPeriodEndDate());

if (timesheet.getCreated() != null) System.out.println("Created:" + timesheet.getCreated().getTime());

if (timesheet.getModified() != null) System.out.println("Modified:" + timesheet.getModified().getTime());

if (timesheet.getSubmitted() != null) System.out.println("Submitted:" + timesheet.getSubmitted().getTime());

if (timesheet.getApproved() != null) System.out.println("Approved:" + timesheet.getApproved().getTime());


System.out.println("timesheetPay: " + timesheet.getTimesheetPay());

System.out.println("timesheetCharge: " + timesheet.getTimesheetCharge());

System.out.println("ERNI: " + timesheet.getErni());

System.out.println("Pension: " + timesheet.getPension());

System.out.println("Holiday: " + timesheet.getHoliday());

System.out.println("getFullyInvoiced: " + timesheet.getFullyInvoiced());

System.out.println("getPurchaseWrittenOff: " + timesheet.getPurchaseWrittenOff());

System.out.println("getSalesWrittenOff: " + timesheet.getSalesWrittenOff());

System.out.println("Worker:" + timesheet.getWorkerId());

System.out.println("Adjusts:" + timesheet.getAdjustsRefCode());


//Shifts

if (timesheet.getShifts() != null && timesheet.getShifts().length > 0) {

for (Shift shift : timesheet.getShifts()) {

System.out.println("Shift ID:"+shift.getId());

System.out.println("hours:"+shift.getHours());

System.out.println("Decimal:"+shift.getDecimal());

System.out.println("Day:" + new Date(shift.getDay()) + " (" + shift.getDay()+ ")");

System.out.println("PO:" + shift.getPurchaseOrderNumber());

System.out.println("Start:"+new Date(shift.getStartTime()) +" (" + shift.getStartTime()+ ")");

System.out.println("Rate Name:"+shift.getRateName());

System.out.println("Rate Pay:"+shift.getRate().getPay());

System.out.println("Rate Charge:"+shift.getRate().getCharge());

}

}

//Associated Invoices & credits

if (timesheet.getInvoiceInfo() != null) {

for (InvoiceInfo invoice : timesheet.getInvoiceInfo()){

System.out.println("Invoice Number:" + 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);

}

...

try {

//Attempt to read the worker first as it may already exist

IntimeServiceV3_0Stub2Stub.GetWorkerByExternalId getWorkerRequest=new IntimeServiceV3_0Stub2Stub.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_0Stub2Stub.Address address = new IntimeServiceV3_0Stub2Stub.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_0Stub2Stub.CreateOrUpdateWorker request = new IntimeServiceV3_0Stub2Stub.CreateOrUpdateWorker();

request.setToken(ticket);   //from authenticate call

request.setWorker(worker);


IntimeServiceV3_0Stub2Stub.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);


...

try{

//Attempt to read the placement first to check if it already exists

IntimeServiceV3_0Stub2Stub.GetPlacementByExternalId getPlacementRequest=new IntimeServiceV3_0Stub2Stub.GetPlacementByExternalId();

getPlacementRequest.setId("WEB-PLC-001");

getPlacementRequest.setToken(ticket);

GetPlacementByExternalIdResponse placementResponse=stub.getPlacementByExternalId(getPlacementRequest);

IntimeServiceV3_0Stub2Stub.Placement placement=placementResponse.get_return();

if (placement == null) {

    //placement does not exist

    placement = new IntimeServiceV3_0Stub2Stub.Placement();

    placement.setExternalId("WEB-PLC-001");

}


//Consultant

IntimeServiceV3_0Stub2Stub.Consultant consultant= new IntimeServiceV3_0Stub2Stub.Consultant();

IntimeServiceV3_0Stub2Stub.GetConsultantsByExternalId getConsultantRequest=new IntimeServiceV3_0Stub2Stub.GetConsultantsByExternalId();

getConsultantRequest.setId("WEB-CON01");

getConsultantRequest.setToken(ticket);   //from authenticate call

GetConsultantsByExternalIdResponse consultantResponse=stub.getConsultantsByExternalId(getConsultantRequest);

IntimeServiceV3_0Stub2Stub.Consultant[] cons=consultantResponse.get_return();

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");

    IntimeServiceV3_0Stub2Stub.CreateOrUpdateConsultant createConsultantRequest = new IntimeServiceV3_0Stub2Stub.CreateOrUpdateConsultant();

    createConsultantRequest.setToken(ticket);

    createConsultantRequest.setConsultant(consultant);

    IntimeServiceV3_0Stub2Stub.CreateOrUpdateConsultantResponse createConsultantResult=stub.createOrUpdateConsultant(createConsultantRequest);

    if (createConsultantResult != null) {

System.out.println("Created/updated Consultant with ID:" + createConsultantResult.get_return());

    }

} else {

    consultant = cons[0];

}

placement.setConsultant(consultant);


//Client

IntimeServiceV3_0Stub2Stub.Client client = new IntimeServiceV3_0Stub2Stub.Client();

IntimeServiceV3_0Stub2Stub.GetClientsByExternalId getClientRequest=new IntimeServiceV3_0Stub2Stub.GetClientsByExternalId();

getClientRequest.setId("WEB-CLI01");

getClientRequest.setToken(ticket);   //from authenticate call

GetClientsByExternalIdResponse clientResponse=stub.getClientsByExternalId(getClientRequest);

IntimeServiceV3_0Stub2Stub.Client[] 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

    IntimeServiceV3_0Stub2Stub.CreateOrUpdateClient createClientRequest = new IntimeServiceV3_0Stub2Stub.CreateOrUpdateClient();

    createClientRequest.setToken(ticket);

    createClientRequest.setClient(client);

    IntimeServiceV3_0Stub2Stub.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

IntimeServiceV3_0Stub2Stub.Manager manager = new IntimeServiceV3_0Stub2Stub.Manager();

IntimeServiceV3_0Stub2Stub.GetManagersByExternalId getManagerRequest=new IntimeServiceV3_0Stub2Stub.GetManagersByExternalId();
getManagerRequest.setId("WEB-MAN01");
getManagerRequest.setToken(ticket);   //from authenticate call
GetManagersByExternalIdResponse managerResponse=stub.getManagersByExternalId(getManagerRequest);
IntimeServiceV3_0Stub2Stub.Manager[] mgrs=managerResponse.get_return();
if (mgrs== null || mgrs.size() < 1) {
    //manager did not exist    
    manager.setExternalId("WEB-MAN01");
    manager.setFirstname("Web");
    manager.setLastname("Manager");
    manager.setEmail("m@m.com");
    manager.setClient(client);
    IntimeServiceV3_0Stub2Stub.CreateOrUpdateManager createManagerRequest = new IntimeServiceV3_0Stub2Stub.CreateOrUpdateManager();
    createManagerRequest.setToken(ticket);
    createManagerRequest.setManager(manager);
    IntimeServiceV3_0Stub2Stub.CreateOrUpdateManagerResponse createManagerResult=stub.createOrUpdateManager(createManagerRequest);
    if (createManagerResult != null) {
        System.out.println("Created/updated Manager with ID:" + createManagerResult.get_return());
    }
} else {
    manager = mgrs[0];
}
placement.setManager(manager);


//Worker

IntimeServiceV3_0Stub2Stub.GetWorkersByExternalId getWorkerRequest=new IntimeServiceV3_0Stub2Stub.GetWorkersByExternalId();
getWorkerRequest.setId("WEB-WKR01");
getWorkerRequest.setToken(ticket);   //from authenticate call
GetWorkersByExternalIdResponse workerResponse=stub.getWorkersByExternalId(getWorkerRequest);
IntimeServiceV3_0Stub2Stub.Worker[] wkrs=workerResponse.get_return();
if (wkrs== null || wkrs.size() < 1) {
    //worker did not exist    
    worker.setExternalId("WEB-WKR01");
    worker.setFirstname("Web");
    worker.setLastname("Worker");
    worker.setEmail("w@w.com");
    //populate other details


    IntimeServiceV3_0Stub2Stub.CreateOrUpdateWorker createWorkerRequest = new IntimeServiceV3_0Stub2Stub.CreateOrUpdateWorker();
    createWorkerRequest.setToken(ticket);
    createWorkerRequest.setWorker(worker);
    IntimeServiceV3_0Stub2Stub.CreateOrUpdateWorkerResponse createWorkerResult=stub.createOrUpdateWorker(createWorkerRequest);
    if (createWorkerResult != null) {
        System.out.println("Created/updated Worker with ID:" + createWorkerResult.get_return());
    }
} else {
    worker = wkrs[0];
}
placement.setWorker(worker);


//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_0Stub2Stub.Rate[] rates = new IntimeServiceV3_0Stub2Stub.Rate[1];

IntimeServiceV3_0Stub2Stub.Rate rate1 = new IntimeServiceV3_0Stub2Stub.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_0Stub2Stub.CreateOrUpdatePlacement request = new IntimeServiceV3_0Stub2Stub.CreateOrUpdatePlacement();

request.setToken(ticket);

request.setPlacement(placement);


IntimeServiceV3_0Stub2Stub.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);

}


...

try{

//Attempt to read the placement first 

IntimeServiceV3_0Stub2Stub.GetPlacementByExternalId getPlacementRequest=new IntimeServiceV3_0Stub2Stub.GetPlacementByExternalId();

getPlacementRequest.setId("WEB-PLC-001");

getPlacementRequest.setToken(ticket);

GetPlacementByExternalIdResponse placementResponse=stub.getPlacementByExternalId(getPlacementRequest);

IntimeServiceV3_0Stub2Stub.Placement placement=placementResponse.get_return();

if (placement == null) {

    //placement does not exist

    placement = new IntimeServiceV3_0Stub2Stub.Placement();

    //refer to create placement process

}


//Apply any Consultant changes

IntimeServiceV3_0Stub2Stub.Consultant consultant=placement.getConsultant();

consultant.setDepartment("Web testing");


//Apply any Client changes

IntimeServiceV3_0Stub2Stub.Client client=placement.getClient();

client.getInvoicingContact().getAddress().setLine1("123 Test Street");


//Apply any Manager changes

IntimeServiceV3_0Stub2Stub.Manager manager=placement.getManager();
manager.setLastname("Modified");


//Apply any Worker changes

IntimeServiceV3_0Stub2Stub.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_0Stub2Stub.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_0Stub2Stub.CreateOrUpdatePlacement request = new IntimeServiceV3_0Stub2Stub.CreateOrUpdatePlacement();

request.setToken(ticket);

request.setPlacement(placement);

IntimeServiceV3_0Stub2Stub.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);

}

...

try{

//Read the associated placement so we can reference the rates & participants

IntimeServiceV3_0Stub2Stub.GetPlacementByExternalId getPlacementRequest=new IntimeServiceV3_0Stub2Stub.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"));

cal.set(2017,9,1,0,0,0);

cal.set(Calendar.MILLISECOND, 0);


//create a timesheetSubmission

IntimeServiceV3_0Stub2Stub.Timesheet timesheetSubmission = new IntimeServiceV3_0Stub2Stub.Timesheet();

timesheetSubmission.setPlacementExternalRef(placement.getExternalId());

timesheetSubmission.setSubmitterId(placement.getWorker().getId()); //Whoever is creating the Timesheet

timesheetSubmission.setPeriodEndDate(cal.getTime());


//Add the Shifts

IntimeServiceV3_0Stub2Stub.Shift shift = new IntimeServiceV3_0Stub2Stub.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("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 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_0Stub2Stub.UpdateTimesheet updateTimesheetRequest=new IntimeServiceV3_0Stub2Stub.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_0Stub2Stub.SubmitTimesheet submitTimesheetRequest=new IntimeServiceV3_0Stub2Stub.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);

}

...

FieldConstant

Comment

Notes
Client


invoicePeriod0Weekly

1Two-Weekly

2Four-Weekly

3Calendar Monthly

44-4-5




howSendInvoices0PostInvoice delivery method

1Email

2Fax

3Not sent




Worker


workerTypepayeFor PAYE Workers

ltdFor Ltd Company Workers

external-contractorFor Non Ltd Company Workers

cisFor CIS Workers

umbFor Workers operating through an UmbrellaYou must also reference the umbrella against the worker, otherwise the worker will appear as LTD.

ir35For workers inside scope of IR35 (deemed)




cisBusinessTypeSoleTrader


Company


Trust


Partnership





cisPercentage0


20


30





paymentFrequencyweekly


monthly


<InPay Payroll Name>If InPay connected, for PAYE workers, use the InPay Payroll Name




timesheetsOnInvoices0Timesheets On Invoices

1Timesheets Not On Invoices




paperOnInvoices-1Agency Default

0No Attachments

1Attach Paper Timesheets

2Attach Expense Group Paper

4Attach Expense Receipts Paper

<sum of the above>Attach the appropriate paperFor example, 5 to attach timesheets and receipts




genderM


F





LTD invoice period0Weekly

1Two-Weekly

2Four-Weekly

3Calendar Monthly

44-4-5




Payment Methodbacs
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




Placement


layoutstandard
See Maintaining Placements

calendar





timesheetDateCalculatorweekly
See Maintaining Placements. You can see all possible values for this in the ui.

monthly


<many more>See UI for all options.




Rates


period60For hourly rates entered in hours format (hours only or start, break, finish).

1440For 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).




timePatterndefaultWill use the selected default time pattern

<any string>The string should match the name of a time pattern in the system




timesheetFieldsSTART_FINISH_BREAKEnter start, break, finishOnly when period above is 60

HOURSEnter hours onlyOnly when period above is 60

DECIMALEnter time as a decimalOnly when period above is 1440

DAYTickbox only (equivalent to entering decimals as 1.00)Only when period above is 1440

InvoiceAdjustmentSettings

(Company / Worker)




AdjustBy0Fixed Amount

1Percentage
AdjustPer0Per Worker

1Per Timesheet

2Per Invoice
AdjustType0Addition

1Deduction
ExpenseType


EntryMethod

0Gross valuePopulate the GrossValue and optionally the VatAmount field on an ExpenseItem with this entry method

1Net ValuePopulate the NetValue field on an ExpenseItem with this entry method

2Units and Unit netPopulate 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.

3Units and NetPopulate the Unit and Net Value fields on an ExpenseItem with this entry method.
Timesheet


StatusgetTimesheetStatus()getStatus()

-1

DELETED



1

INCOMPLETE



2

SUBMITTED



3

APPROVED



5

COMPLETED



-2

MISSING



-3

REVERTED


InvoiceInfo


Invoice TypegetInvoiceDescription()


Advice Note


Client Invoice


Client Credit Note


Self Bill Invoice


Self Bill Credit Note


Supplier Invoice


Supplier Credit Note