-
+
+
+
+
+
+
+
Revision History
+
Employer revisions must be deleted in order, validation rules will prevent revisions being deleted if they invalidate an existing payrun.
+
+
+
+ | Revision |
+ Effective Date |
+ |
+
+
+
+
+ | ${revision.Revision} |
+ ${revision.EffectiveDate} |
+
+ Delete
+ |
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/src/employee/elements/employee-form.js b/src/employee/elements/employee-form.js
new file mode 100644
index 0000000..0138006
--- /dev/null
+++ b/src/employee/elements/employee-form.js
@@ -0,0 +1,160 @@
+import { bindable, inject, customElement } from "aurelia-framework";
+import { EventAggregator } from "aurelia-event-aggregator";
+import { HttpClient } from "aurelia-http-client";
+import { ValidationControllerFactory, ValidationRules } from "aurelia-validation";
+import { DialogService } from "aurelia-dialog";
+import { Confirm } from "../../dialogs/confirm";
+
+@customElement("employee-form")
+@inject(EventAggregator, ValidationControllerFactory, DialogService)
+export class EmployeeForm {
+ constructor(EventAggregator, controllerFactory, dialogService) {
+ this.ea = EventAggregator;
+ this.paySchedules = null;
+ this.client = new HttpClient();
+ this.validationController = controllerFactory.createForCurrentScope();
+ this.dialogService = dialogService;
+ this.showSaveButton = true;
+ }
+
+ @bindable employee = null;
+
+ attached() {
+ this.setupTabEvents();
+ this.setupValidationRules();
+ }
+
+ detached() {
+ }
+
+ save() {
+ this.validationController.validate().then(result => {
+ if (result.valid) {
+ let url = `/api/employer/${this.employee.EmployerId}/employee`;
+ let data = this.employee;
+
+ this.ea.publish("request:processing");
+
+ this.client.post(url, data).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.status = parsedResponse.status;
+ this.employee.Id = parsedResponse.employeeId;
+
+ this.ea.publish("employee:reload", {
+ employerId: this.employee.EmployerId,
+ employeeId: parsedResponse.employeeId
+ });
+ });
+ }
+ else {
+ $("html, body, ux-dialog-container, ux-dialog, ux-dialog-body").animate({
+ scrollTop: 0
+ }, 500);
+ }
+ });
+ }
+
+ employeeChanged() {
+ if (!this.employee.HoursPerWeek) {
+ this.employee.HoursPerWeek = 40;
+ }
+
+ if (!this.employee.EmployeePartner) {
+ this.employee.EmployeePartner = {
+ Title: "",
+ FirstName: "",
+ Initials: "",
+ MiddleName: "",
+ LastName: "",
+ NiNumber: ""
+ };
+ }
+
+ if (!this.paySchedules) {
+ let employerId = this.employee.EmployerId;
+
+ this.ea.publish("request:processing");
+
+ this.client.get(`/api/employer/${employerId}/pay-schedules`).then(res => {
+ this.ea.publish("request:complete");
+
+ this.paySchedules = JSON.parse(res.response);
+ });
+ }
+ }
+
+ setupTabEvents() {
+ $("a[data-toggle='tab']").on("shown.bs.tab", (e) => {
+ this.showSaveButton = e.target.id !== "revisions-tab";
+ });
+ }
+
+ setupValidationRules() {
+ ValidationRules
+ .ensure("LastName").required().withMessage("Last name is required")
+ .ensure("Code").required().withMessage("Code is required")
+ .ensure("EffectiveDate").required().withMessage("Effective date is required")
+ .ensure("DateOfBirth").required().withMessage("Date of birth is required")
+ .ensure("Gender").required().withMessage("Gender is required")
+ .ensure("StarterDeclaration").required().withMessage("Starter declaration is required")
+ .ensure("Territory").required().withMessage("Territory is required")
+ .ensure("Region").required().withMessage("Region is required")
+ .ensure("HoursPerWeek").required().withMessage("Hours per week is required")
+ .ensure("AEAssessmentOverride").required().withMessage("AEAssessment override is required")
+ .on(this.employee);
+ }
+
+ deleteRevision(revision) {
+ let opts = {
+ viewModel: Confirm,
+ model: {
+ title: "Are you sure?",
+ message: "Are you sure you want to delete this revision?"
+ }
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ let employerId = this.employee.EmployerId;
+ let employeeId = this.employee.Id;
+ let effectiveDate = revision.EffectiveDate;
+ let url = `/api/employer/${employerId}/employee/${employeeId}/revision/${effectiveDate}`;
+
+ this.ea.publish("request:processing");
+
+ this.client.delete(url).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.status = parsedResponse.status;
+ this.employer.Revisions = this.employee.Revisions.filter(rev => rev.Revision !== revision.Revision);
+
+ this.ea.publish("employee:reload", {
+ employerId: employerId,
+ employeeId: employeeId
+ });
+ });
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/employee/elements/p45-pay-instruction.html b/src/employee/elements/p45-pay-instruction.html
new file mode 100644
index 0000000..c3cc1d3
--- /dev/null
+++ b/src/employee/elements/p45-pay-instruction.html
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/employee/elements/p45-pay-instruction.js b/src/employee/elements/p45-pay-instruction.js
new file mode 100644
index 0000000..1f5101f
--- /dev/null
+++ b/src/employee/elements/p45-pay-instruction.js
@@ -0,0 +1,127 @@
+import { bindable, inject, customElement } from "aurelia-framework";
+import { EventAggregator } from "aurelia-event-aggregator";
+import { DialogService } from "aurelia-dialog";
+import { ValidationControllerFactory, ValidationRules } from "aurelia-validation";
+import { HttpClient } from "aurelia-http-client";
+import { Confirm } from "../../dialogs/confirm";
+
+@customElement("p45-pay-instruction")
+@inject(EventAggregator, ValidationControllerFactory, DialogService)
+export class P45PayInstruction {
+ constructor(EventAggregator, controllerFactory, dialogService) {
+ this.ea = EventAggregator;
+ this.validationController = controllerFactory.createForCurrentScope();
+ this.dialogService = dialogService;
+ this.client = new HttpClient();
+ }
+
+ @bindable employerid = null;
+ @bindable employeeid = null;
+ @bindable p45payinstruction = null;
+
+ setupValidationRules() {
+ ValidationRules
+ .ensure("StartDate").required().withMessage("Start date is required")
+ .ensure("TaxablePay").required().withMessage("Taxable pay is required")
+ .ensure("TaxPaid").required().withMessage("Tax paid is required")
+ .ensure("TaxCode").required().withMessage("Tax code is required")
+ .ensure("LeavingDate").required().withMessage("Leaving date is required")
+ .on(this.p45payinstruction);
+ }
+
+ add() {
+ this.p45payinstruction = {
+ TaxBasis: "Cumulative",
+ StudentLoan: "Off",
+ PayFrequency: "Weekly"
+ };
+ }
+
+ save() {
+ this.validationController.validate().then(result => {
+ if (result.valid) {
+ let data = {
+ StartDate: this.p45payinstruction.StartDate,
+ EndDate: this.p45payinstruction.EndDate,
+ Description: this.p45payinstruction.Description,
+ TaxablePay: this.p45payinstruction.TaxablePay,
+ TaxPaid: this.p45payinstruction.TaxPaid,
+ TaxCode: this.p45payinstruction.TaxCode,
+ TaxBasis: this.p45payinstruction.TaxBasis,
+ StudentLoan: this.p45payinstruction.StudentLoan,
+ PayFrequency: this.p45payinstruction.PayFrequency,
+ LeavingDate: this.p45payinstruction.LeavingDate,
+ PreviousEmployerPayeRef: this.p45payinstruction.PreviousEmployerPayeRef
+ };
+ let url = `/api/employer/${this.employerid}/Employee/${this.employeeid}/P45Instruction`;
+
+ this.ea.publish("request:processing");
+
+ this.client.post(url, data).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.status = parsedResponse.status;
+ });
+ }
+ else {
+ $("html, body, ux-dialog-container, ux-dialog, ux-dialog-body").animate({
+ scrollTop: 0
+ }, 500);
+ }
+ });
+ }
+
+ delete() {
+ let opts = {
+ viewModel: Confirm,
+ model: {
+ title: "Are you sure?",
+ message: "Are you sure you want to delete this pay instruction?"
+ }
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ let employerId = this.employerid;
+ let employeeId = this.employeeid;
+ let payInstructionId = this.p45payinstruction.Id;
+ let url = `/api/employer/${employerId}/employee/${employeeId}/payInstruction/${payInstructionId}`;
+
+ this.ea.publish("request:processing");
+
+ this.client.delete(url).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.p45payinstruction = null;
+ this.status = parsedResponse.status;
+ });
+ }
+ });
+ }
+
+ p45payinstructionChanged() {
+ if (this.p45payinstruction) {
+ this.setupValidationRules();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/employee/employee.html b/src/employee/employee.html
new file mode 100644
index 0000000..d58815e
--- /dev/null
+++ b/src/employee/employee.html
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/employee/employee.js b/src/employee/employee.js
new file mode 100644
index 0000000..62e46d5
--- /dev/null
+++ b/src/employee/employee.js
@@ -0,0 +1,193 @@
+import { inject } from "aurelia-framework";
+import { EventAggregator } from "aurelia-event-aggregator";
+import { HttpClient } from "aurelia-http-client";
+import { DialogService } from "aurelia-dialog";
+import { Router } from "aurelia-router";
+import { Confirm } from "../dialogs/confirm";
+import { PayInstructionModal } from "../pay-instruction/pay-instruction-modal";
+import { BaseViewModel } from "../base-view-model";
+
+@inject(EventAggregator, DialogService, Router)
+export class Employee extends BaseViewModel {
+ constructor(eventAggregator, dialogService, router) {
+ super(router);
+
+ this.employee = null;
+ this.ea = eventAggregator;
+ this.dialogService = dialogService;
+ this.client = new HttpClient();
+
+ this.typesOfPayInstruction = [
+ "AoePayInstruction",
+ "BenefitPayInstruction",
+ "NiAdjustmentPayInstruction",
+ "NiPayInstruction",
+ "PensionPayInstruction",
+ "PrimitivePayInstruction",
+ "RatePayInstruction",
+ "SalaryPayInstruction",
+ "ShppPayInstruction",
+ "SspPayInstruction",
+ "StudentLoanPayInstruction",
+ "TaxPayInstruction"
+ ];
+
+ this.typesOfYTDPayInstruction = [
+ "NiYtdPayInstruction",
+ "PensionYtdPayInstruction",
+ "PrimitiveYtdPayInstruction",
+ "SapYtdPayInstruction",
+ "ShppYtdPayInstruction",
+ "SmpYtdPayInstruction",
+ "SppYtdPayInstruction",
+ "SspYtdPayInstruction",
+ "StudentLoanYtdPayInstruction",
+ "TaxYtdPayInstruction"
+ ];
+ }
+
+ activate(params) {
+ this.getPayInstructionTypes();
+
+ $("html, body, ux-dialog-container, ux-dialog, ux-dialog-body").animate({
+ scrollTop: 0
+ }, 100);
+
+ if (params && params.employerId && params.employeeId) {
+ return this.getEmployeeDetails(params.employerId, params.employeeId);
+ }
+ else {
+ this.employee = {
+ EmployerId: params.employerId
+ };
+ }
+ }
+
+ attached() {
+ if (this.employee) {
+ super.setTitle(this.employee.Code);
+ }
+ else {
+ super.setTitle("New Employee");
+ }
+ }
+
+ deactivate() {
+ if (this.reloadEmployeeSubscriber) {
+ this.reloadEmployeeSubscriber.dispose();
+ }
+ }
+
+ getEmployeeDetails(employerId, employeeId) {
+ return new Promise(resolve => {
+ this.ea.publish("request:processing");
+
+ this.client.get(`/api/employer/${employerId}/employee/${employeeId}`).then(res => {
+ this.ea.publish("request:complete");
+
+ this.employee = JSON.parse(res.response);
+
+ this.employee.EmployerId = employerId;
+
+ resolve();
+ });
+ });
+ }
+
+ getPayInstructionTypes() {
+ return new Promise(resolve => {
+ this.ea.publish("request:processing");
+
+ this.client.get("/api/pay-instructions").then(res => {
+ this.ea.publish("request:complete");
+
+ let response = JSON.parse(res.response);
+
+ this.typesOfPayInstruction = response.filter(pi => pi.group === "normal");
+ this.typesOfYTDPayInstruction = response.filter(pi => pi.group === "year-to-date");
+
+ resolve();
+ });
+ });
+ }
+
+ openAddPayInstructionModal(piType) {
+ let employerId = this.employee.EmployerId;
+ let employeeId = this.employee.Id;
+ let opts = {
+ viewModel: PayInstructionModal,
+ model: {
+ type: piType,
+ employerId: employerId,
+ employeeId: employeeId
+ }
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ this.status = response.output;
+
+ this.getEmployeeDetails(employerId, employeeId);
+ }
+ });
+ }
+
+ openEditPayInstructionModal(pi) {
+ let employerId = this.employee.EmployerId;
+ let employeeId = this.employee.Id;
+ let opts = {
+ viewModel: PayInstructionModal,
+ model: {
+ id: pi.Id,
+ employerId: employerId,
+ employeeId: employeeId
+ }
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ this.status = response.output;
+
+ this.getEmployeeDetails(employerId, employeeId);
+ }
+ });
+ }
+
+ deleteInstruction(pi) {
+ let opts = {
+ viewModel: Confirm,
+ model: {
+ title: "Are you sure?",
+ message: "Are you sure you want to delete this pay instruction?"
+ }
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ let employerId = this.employee.EmployerId;
+ let employeeId = this.employee.Id;
+ let payInstructionId = pi.Id;
+ let url = `/api/employer/${employerId}/employee/${employeeId}/payInstruction/${payInstructionId}`;
+
+ this.ea.publish("request:processing");
+
+ this.client.delete(url).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.status = parsedResponse.status;
+ this.getEmployeeDetails(employerId, employeeId);
+ });
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/employer/employer-form.html b/src/employer/employer-form.html
new file mode 100644
index 0000000..cb80e46
--- /dev/null
+++ b/src/employer/employer-form.html
@@ -0,0 +1,442 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/employer/employer-form.js b/src/employer/employer-form.js
new file mode 100644
index 0000000..fb241d0
--- /dev/null
+++ b/src/employer/employer-form.js
@@ -0,0 +1,123 @@
+import { bindable, inject, customElement } from "aurelia-framework";
+import { EventAggregator } from "aurelia-event-aggregator";
+import { HttpClient } from "aurelia-http-client";
+import { ValidationControllerFactory, ValidationRules } from "aurelia-validation";
+import { DialogService } from "aurelia-dialog";
+import { Confirm } from "../dialogs/confirm";
+
+@customElement("employer-form")
+@inject(EventAggregator, ValidationControllerFactory, DialogService)
+export class EmployerForm {
+ constructor(EventAggregator, controllerFactory, dialogService) {
+ this.validationSetup = false;
+
+ this.ea = EventAggregator;
+ this.client = new HttpClient();
+ this.validationController = controllerFactory.createForCurrentScope();
+ this.dialogService = dialogService;
+ this.showSaveButton = true;
+ }
+
+ @bindable employer = null;
+
+ attached() {
+ if (!this.employer) {
+ this.employer = {
+ Territory: "UnitedKingdom",
+ Region: "NotSet",
+
+ };
+ }
+
+ this.setupTabEvents();
+ this.setupValidationRules();
+ }
+
+ detached() {
+ }
+
+ save() {
+ this.validationController.validate().then(result => {
+ if (result.valid) {
+ this.ea.publish("request:processing");
+
+ this.client.post("/api/Employer", this.employer).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.status = parsedResponse.status;
+
+ this.ea.publish("employer:reload", {
+ employerId: parsedResponse.employerId
+ });
+ });
+ }
+ else {
+ $("html, body, ux-dialog-container, ux-dialog, ux-dialog-body").animate({
+ scrollTop: 0
+ }, 500);
+ }
+ });
+ }
+
+ setupTabEvents() {
+ $("a[data-toggle='tab']").on("shown.bs.tab", (e) => {
+ this.showSaveButton = e.target.id !== "revisions-tab";
+ });
+ }
+
+ setupValidationRules() {
+ ValidationRules
+ .ensure("Name").required().withMessage("Details > Name is required")
+ .ensure("EffectiveDate").required().withMessage("Details > Effective date is required")
+ .on(this.employer);
+ }
+
+ deleteRevision(revision) {
+ let opts = {
+ viewModel: Confirm,
+ model: {
+ title: "Are you sure?",
+ message: "Are you sure you want to delete this revision?"
+ }
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ let employerId = this.employer.Id;
+ let effectiveDate = revision.EffectiveDate;
+ let url = `/api/employer/${employerId}/revision/${effectiveDate}`;
+
+ this.ea.publish("request:processing");
+
+ this.client.delete(url).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.status = parsedResponse.status;
+ this.employer.Revisions = this.employer.Revisions.filter(rev => rev.Revision !== revision.Revision);
+
+ this.ea.publish("employer:reload", { employerId: employerId });
+ });
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/employer/employer.html b/src/employer/employer.html
new file mode 100644
index 0000000..697d6bf
--- /dev/null
+++ b/src/employer/employer.html
@@ -0,0 +1,343 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Code |
+ Name |
+ |
+
+
+
+
+ |
+
+ ${employee.Code}
+
+ |
+ ${employee | employeeName} |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+ | Id |
+ Name |
+ Frequency |
+ Employees |
+ Last Pay Day |
+ Next Pay Day |
+ |
+
+
+
+
+ |
+
+ ${schedule.Key}
+
+ |
+ ${schedule.Name} |
+ ${schedule.PayFrequency} |
+ ${schedule.EmployeeCount} |
+
+ ${schedule.LastPayDay}
+
+
+ Never
+
+ |
+
+ ${schedule.NextPayDay}
+
+ -
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ Add a Pay Schedule and an Employee before starting a pay run.
+
+
+
+
+
+
+
+
+
+
+ | Payment Date |
+ Tax Period |
+ Pay Period |
+ Supplementary |
+
+
+ |
+
+
+
+
+ |
+
+ ${payrun.PaymentDate | shortDate}
+
+ |
+ ${payrun.TaxYear}/${payrun.TaxPeriod} |
+ ${payrun.PeriodStart | shortDate} - ${payrun.PeriodEnd | shortDate} |
+ ${payrun.IsSupplementary} |
+
+
+
+
+
+ |
+
+
+
+
+
+ There are currently no payruns for this pay schedule.
+
+ Add PayRun
+
+
+
+
+
+
+
+
+
+
+
+ | Id |
+ Scheme |
+ Provider |
+ Provider Employer Ref |
+ |
+
+
+
+
+ |
+
+ ${pension.Id}
+
+ |
+ ${pension.SchemeName} |
+ ${pension.ProviderName} |
+ ${pension.ProviderEmployerRef} |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+ | Code |
+ Description |
+ Type |
+ |
+
+
+
+
+ |
+
+ ${code.Code}
+
+ |
+ ${code.Description} |
+ ${code.Type} |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Start a new Pay Run before creating an RTI submission.
+
+
+
+
+
+
+
+ | Id |
+ Tax Year |
+ Transmission Date |
+ Transaction Status |
+
+
+
+
+ |
+
+ ${transaction.Id}
+
+ |
+ ${transaction.TaxYear} |
+ ${transaction.TransmissionDate | longDateTime} |
+ ${transaction.TransactionStatus} |
+
+
+
+
+
+
+
+
Coming soon!
+
Check soon to see this functionality wired up with the API
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/employer/employer.js b/src/employer/employer.js
new file mode 100644
index 0000000..0233a6a
--- /dev/null
+++ b/src/employer/employer.js
@@ -0,0 +1,471 @@
+import { inject } from "aurelia-framework";
+import { EventAggregator } from "aurelia-event-aggregator";
+import { HttpClient } from "aurelia-http-client";
+import { DialogService } from "aurelia-dialog";
+import { Router } from "aurelia-router";
+import { PayScheduleModal } from "../pay-schedule/pay-schedule-modal";
+import { PensionModal } from "../pension/pension-modal";
+import { PayCodeModal } from "../pay-code/pay-code-modal";
+import { InfoModal } from "../pay-run/info-modal";
+import { NewPayRunModal } from "../pay-run/new-pay-run-modal";
+import { RtiTransactionModal } from "../rti-transaction/rti-transaction-modal";
+import { Confirm } from "../dialogs/confirm";
+import { BaseViewModel } from "../base-view-model";
+
+@inject(EventAggregator, DialogService, Router)
+export class Employer extends BaseViewModel {
+ constructor(eventAggregator, dialogService, router) {
+ super(router);
+
+ this.employer = null;
+ this.ea = eventAggregator;
+ this.dialogService = dialogService;
+ this.client = new HttpClient();
+ }
+
+ activate(params) {
+ this.params = params;
+
+ this.reloadEmployerSubscriber = this.ea.subscribe("employer:reload", state => {
+ this.getEmployerDetails(state.employerId);
+ });
+
+ $("html, body, ux-dialog-container, ux-dialog, ux-dialog-body").animate({
+ scrollTop: 0
+ }, 100);
+
+ if (params && params.id) {
+ return this.getEmployerDetails(params.id);
+ }
+ }
+
+ attached() {
+ super.setParams(this.params);
+
+ if (this.employer) {
+ super.setTitle(this.employer.Name);
+ }
+ else {
+ super.setTitle("New Employer");
+ }
+ }
+
+ deactivate() {
+ if (this.reloadEmployerSubscriber) {
+ this.reloadEmployerSubscriber.dispose();
+ }
+
+ if (this.getPaySchedulesTimeout) {
+ window.clearTimeout(this.getPaySchedulesTimeout);
+ }
+
+ if (this.getRtiSubmissionsTimeout) {
+ window.clearTimeout(this.getRtiSubmissionsTimeout);
+ }
+ }
+
+ getEmployerDetails(employerId) {
+ return new Promise((resolve) => {
+ this.ea.publish("request:processing");
+
+ this.client.get(`/api/employer/${employerId}`).then(data => {
+ this.ea.publish("request:complete");
+
+ this.employer = JSON.parse(data.response);
+
+ this.createPaySchedulesTimer();
+ this.createRtiSubmissionsTimer();
+
+ resolve();
+ });
+ });
+ }
+
+ getPaySchedules() {
+ this.ea.publish("request:processing");
+
+ this.client.get(`/api/employer/${this.employer.Id}/pay-schedules`).then(data => {
+ this.ea.publish("request:complete");
+
+ this.employer.PaySchedules = JSON.parse(data.response);
+
+ this.createPaySchedulesTimer();
+ });
+ }
+
+ createPaySchedulesTimer() {
+ this.getPaySchedulesTimeout = window.setTimeout(() => this.getPaySchedules(), 15000);
+ }
+
+ getRtiSubmissions() {
+ this.ea.publish("request:processing");
+
+ this.client.get(`/api/employer/${this.employer.Id}/rti-submissions`).then(data => {
+ this.ea.publish("request:complete");
+
+ this.employer.RTITransactions = JSON.parse(data.response);
+
+ this.createRtiSubmissionsTimer();
+ });
+ }
+
+ createRtiSubmissionsTimer() {
+ this.getRtiSubmissionsTimeout = window.setTimeout(() => this.getRtiSubmissions(), 15000);
+ }
+
+ canAddPayRun(context) {
+ return context.Employees.length > 0 && context.PaySchedules && context.PaySchedules.length > 0;
+ }
+
+ addAPaySchedule() {
+ this.openPayScheduleModal({});
+ }
+
+ editPaySchedule(schedule) {
+ this.openPayScheduleModal(schedule);
+ }
+
+ deletePaySchedule(schedule) {
+ let opts = {
+ viewModel: Confirm,
+ model: {
+ title: "Are you sure?",
+ message: "Are you sure you want to delete this pay schedule?"
+ }
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ this.ea.publish("request:processing");
+
+ this.client.post(`/api/employer/${this.employer.Id}/paySchedule/${schedule.Key}/delete/`).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.status = parsedResponse.status;
+ this.getEmployerDetails(this.employer.Id);
+ });
+ }
+ });
+ }
+
+ openPayScheduleModal(schedule) {
+ schedule.employerId = this.employer.Id;
+
+ let opts = {
+ viewModel: PayScheduleModal,
+ model: JSON.parse(JSON.stringify(schedule))
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ this.status = response.output;
+
+ this.getEmployerDetails(this.employer.Id);
+ }
+ });
+ }
+
+ addAPayCode() {
+ this.openPayCodeModal({
+ Niable: false,
+ Taxable: false
+ });
+ }
+
+ editPayCode(payCode) {
+ this.openPayCodeModal(payCode);
+ }
+
+ deletePayCode(employerId, payCodeId) {
+ this.ea.publish("request:processing");
+
+ this.client.delete(`/api/employer/${employerId}/payCode/${payCodeId}`).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.status = parsedResponse.status;
+ this.getEmployerDetails(employerId);
+ });
+ }
+
+ openPayCodeModal(payCode) {
+ payCode.employerId = this.employer.Id;
+
+ let model = {
+ payCode: JSON.parse(JSON.stringify(payCode)),
+ nominalCodes: this.employer.NominalCodes
+ };
+ let opts = {
+ viewModel: PayCodeModal,
+ model: model
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ this.status = response.output;
+
+ this.getEmployerDetails(this.employer.Id);
+ }
+ });
+ }
+
+ addAPension() {
+ this.openPensionModal({});
+ }
+
+ editPension(pension) {
+ this.openPensionModal(pension);
+ }
+
+ defaultPensionForAE(employerId, pensionId) {
+ this.ea.publish("request:processing");
+
+ this.client.patch(`/api/employer/${employerId}/pension/${pensionId}`).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.status = parsedResponse.status;
+ this.getEmployerDetails(employerId);
+ });
+ }
+
+ deletePension(employerId, pensionId) {
+ this.ea.publish("request:processing");
+
+ this.client.delete(`/api/employer/${employerId}/pension/${pensionId}`).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.status = parsedResponse.status;
+ this.getEmployerDetails(employerId);
+ });
+ }
+
+ openPensionModal(pension) {
+ pension.employerId = this.employer.Id;
+
+ let opts = {
+ viewModel: PensionModal,
+ model: JSON.parse(JSON.stringify(pension))
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ this.status = response.output;
+
+ this.getEmployerDetails(this.employer.Id);
+ }
+ });
+ }
+
+ openPayRunInfoModal(employerId, payScheduleId, payRunId) {
+ let url = `api/employer/${employerId}/paySchedule/${payScheduleId}/payRun/${payRunId}`;
+
+ this.ea.publish("request:processing");
+
+ this.client.get(url).then(res => {
+ this.ea.publish("request:complete");
+
+ let payRun = JSON.parse(res.response);
+
+ payRun.EmployerId = this.employer.Id;
+
+ let opts = {
+ viewModel: InfoModal,
+ model: payRun
+ };
+
+ this.dialogService.open(opts);
+ });
+ }
+
+ openAddPayRunModal(employerId, payScheduleId) {
+ let url = `/api/employer/${employerId}/paySchedule/${payScheduleId}/next-pay-run`;
+
+ this.ea.publish("request:processing");
+
+ this.client.get(url).then(res => {
+ this.ea.publish("request:complete");
+
+ let nextPayRun = JSON.parse(res.response);
+
+ let state = {
+ Title: "Create PayRun",
+ EmployerId: employerId,
+ PayScheduleId: payScheduleId,
+ PaymentDate: nextPayRun.paymentDate,
+ StartDate: nextPayRun.periodStart,
+ EndDate: nextPayRun.periodEnd,
+ PaySchedules: []
+ };
+
+ let opts = {
+ viewModel: NewPayRunModal,
+ model: state
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ this.status = response.output;
+
+ this.getEmployerDetails(this.employer.Id);
+ }
+ });
+ });
+ }
+
+ openRerunPayRunModal(employerId, payScheduleId, payRun) {
+ let state = {
+ Title: "Rerun PayRun",
+ Instruction: "Re-running will delete the previous run.",
+ EmployerId: employerId,
+ PayScheduleId: payScheduleId,
+ PaymentDate: payRun.PaymentDate,
+ StartDate: payRun.PeriodStart,
+ EndDate: payRun.PeriodEnd,
+ PaySchedules: []
+ };
+
+ let opts = {
+ viewModel: NewPayRunModal,
+ model: state
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ this.status = response.output;
+
+ this.getEmployerDetails(this.employer.Id);
+ }
+ });
+ }
+
+ deletePayRun(employerId, payScheduleId, payRunId) {
+ let opts = {
+ viewModel: Confirm,
+ model: {
+ title: "Are you sure?",
+ message: "Are you sure you want to delete this pay run?"
+ }
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ this.ea.publish("request:processing");
+
+ this.client.delete(`/api/employer/${employerId}/paySchedule/${payScheduleId}/payRun/${payRunId}`).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.status = parsedResponse.status;
+ this.getEmployerDetails(employerId);
+ });
+ }
+ });
+ }
+
+ openAddRtiSubmissionModal(employerId) {
+ this.ea.publish("request:processing");
+
+ this.client.get(`/api/employer/${employerId}/payRuns`).then(res => {
+ this.ea.publish("request:complete");
+
+ let payRuns = JSON.parse(res.response);
+
+ let opts = {
+ viewModel: RtiTransactionModal,
+ model: {
+ employerId: employerId,
+ payRuns: payRuns
+ }
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ this.status = response.output;
+
+ this.getEmployerDetails(this.employer.Id);
+ }
+ });
+ });
+ }
+
+ deleteEmployee(employerId, employeeId) {
+ let opts = {
+ viewModel: Confirm,
+ model: {
+ title: "Are you sure?",
+ message: "Are you sure you want to delete this employee?"
+ }
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ this.ea.publish("request:processing");
+
+ this.client.delete(`/api/employer/${employerId}/employee/${employeeId}`).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.status = parsedResponse.status;
+ this.getEmployerDetails(employerId);
+ });
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/employer/list.html b/src/employer/list.html
new file mode 100644
index 0000000..923d4e4
--- /dev/null
+++ b/src/employer/list.html
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ | Name |
+ PAYE Ref |
+ Pay Schedules
+
+ |
+ |
+
+
+
+
+ |
+
+ ${employer.Name}
+
+ |
+ ${employer.TaxOfficeNumber}/${employer.TaxOfficeReference} |
+
+
+
+
+
+ ${paySchedule.Name}
+
+
+ ${paySchedule.PayFrequency}
+
+
+ ${paySchedule.EmployeeCount}
+
+
+ ${paySchedule.LastPayDay}
+
+ Never
+
+
+
+ ${paySchedule.NextPayDay}
+ -
+
+
+
+
+
+ Add a Pay Schedule
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/employer/list.js b/src/employer/list.js
new file mode 100644
index 0000000..4558842
--- /dev/null
+++ b/src/employer/list.js
@@ -0,0 +1,65 @@
+import { inject } from "aurelia-framework";
+import { HttpClient } from "aurelia-http-client";
+import { DialogService } from "aurelia-dialog";
+import { EventAggregator } from "aurelia-event-aggregator";
+import { Confirm } from "../dialogs/confirm";
+
+@inject(DialogService, EventAggregator)
+export class List {
+ constructor(dialogService, eventAggregator) {
+ this.dialogService = dialogService;
+ this.ea = eventAggregator;
+ this.client = new HttpClient();
+ }
+
+ activate() {
+ return this.getEmployers();
+ }
+
+ getEmployers() {
+ return new Promise(resolve => {
+ this.ea.publish("request:processing");
+
+ this.client.get("/api/employers").then(data => {
+ this.ea.publish("request:complete");
+
+ this.employers = JSON.parse(data.response);
+
+ resolve();
+ });
+ });
+ }
+
+ deleteEmployer(id) {
+ let opts = {
+ viewModel: Confirm,
+ model: {
+ title: "Are you sure?",
+ message: "Are you sure you want to delete this employer?"
+ }
+ };
+
+ this.dialogService.open(opts).whenClosed(response => {
+ if (!response.wasCancelled) {
+ this.ea.publish("request:processing");
+
+ this.client.delete(`/api/employer/${id}`).then(res => {
+ this.ea.publish("request:complete");
+
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+ this.status = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.status = parsedResponse.status;
+ this.getEmployers();
+ });
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/environment.js b/src/environment.js
new file mode 100644
index 0000000..3495e9a
--- /dev/null
+++ b/src/environment.js
@@ -0,0 +1,4 @@
+export default {
+ debug: true,
+ testing: true
+};
diff --git a/src/footer/footer.html b/src/footer/footer.html
new file mode 100644
index 0000000..b500861
--- /dev/null
+++ b/src/footer/footer.html
@@ -0,0 +1,17 @@
+
+
+
\ No newline at end of file
diff --git a/src/footer/footer.js b/src/footer/footer.js
new file mode 100644
index 0000000..dc61beb
--- /dev/null
+++ b/src/footer/footer.js
@@ -0,0 +1,28 @@
+import { inject } from "aurelia-framework";
+import { HttpClient } from "aurelia-http-client";
+import { Router } from "aurelia-router";
+
+@inject(Router)
+export class Footer {
+ constructor(router) {
+ this.router = router;
+ }
+
+ attached() {
+ this.showVersionInfo = this.router.currentInstruction.config.auth;
+
+ var GitHubButtons = require("github-buttons");
+
+ GitHubButtons.render();
+
+ return new Promise(resolve => {
+ let client = new HttpClient();
+
+ client.get("/api/version").then(data => {
+ this.state = JSON.parse(data.response);
+
+ resolve();
+ });
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/header/header.html b/src/header/header.html
new file mode 100644
index 0000000..084f90e
--- /dev/null
+++ b/src/header/header.html
@@ -0,0 +1,17 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/header/header.js b/src/header/header.js
new file mode 100644
index 0000000..86bc7b0
--- /dev/null
+++ b/src/header/header.js
@@ -0,0 +1,19 @@
+import { inject } from "aurelia-framework";
+import { EventAggregator } from "aurelia-event-aggregator";
+import { Router } from "aurelia-router";
+
+@inject(EventAggregator, Router)
+export class Header {
+ constructor(EventAggregator, router) {
+ this.ea = EventAggregator;
+ this.router = router;
+ }
+
+ attached() {
+ this.showApiCallsButton = this.router.currentInstruction.config.auth;
+ }
+
+ toggleAPICalls() {
+ this.ea.publish("toggleAPICalls");
+ }
+}
\ No newline at end of file
diff --git a/src/job/job-details-modal.html b/src/job/job-details-modal.html
new file mode 100644
index 0000000..9e279af
--- /dev/null
+++ b/src/job/job-details-modal.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ This job contains the following errors:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Status
+
+
+
+ ${state.JobStatus}
+
+
+
+
+
+ Job Id
+
+
+
+ ${state.JobId}
+
+
+
+
+
+
+
+ Last updated on
+
+
+
+ ${state.LastUpdated | longDateTime}
+
+
+
+
+
+ Created on
+
+
+
+ ${state.Created | longDateTime}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/job/job-details-modal.js b/src/job/job-details-modal.js
new file mode 100644
index 0000000..932f4b7
--- /dev/null
+++ b/src/job/job-details-modal.js
@@ -0,0 +1,31 @@
+import { inject } from "aurelia-framework";
+import { DialogController } from "aurelia-dialog";
+import { HttpClient } from "aurelia-http-client";
+
+@inject(DialogController)
+export class JobDetailsModal {
+ constructor(dialogController) {
+ this.dialogController = dialogController;
+ this.client = new HttpClient();
+ }
+
+ activate(job) {
+ this.job = job;
+
+ return this.getJobInfo();
+ }
+
+ getJobInfo() {
+ return new Promise((resolve) => {
+ let url = `/api/job/${this.job.id}/${this.job.type}`;
+
+ this.client.get(url).then(data => {
+ this.state = JSON.parse(data.response);
+
+ window.setTimeout(() => this.getJobInfo(), 500);
+
+ resolve();
+ });
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..8873ea2
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,23 @@
+import { PLATFORM } from "aurelia-pal";
+import environment from "./environment";
+
+export function configure(aurelia) {
+ aurelia.use
+ .standardConfiguration()
+ .plugin("aurelia-validation")
+ .plugin(PLATFORM.moduleName("aurelia-dialog"), config => {
+ config.useDefaults();
+ config.settings.centerHorizontalOnly = true;
+ })
+ .feature("resources");
+
+ if (environment.debug) {
+ aurelia.use.developmentLogging();
+ }
+
+ if (environment.testing) {
+ aurelia.use.plugin("aurelia-testing");
+ }
+
+ return aurelia.start().then(() => aurelia.setRoot());
+}
diff --git a/src/pay-code/pay-code-modal.html b/src/pay-code/pay-code-modal.html
new file mode 100644
index 0000000..802d767
--- /dev/null
+++ b/src/pay-code/pay-code-modal.html
@@ -0,0 +1,259 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-code/pay-code-modal.js b/src/pay-code/pay-code-modal.js
new file mode 100644
index 0000000..5e73538
--- /dev/null
+++ b/src/pay-code/pay-code-modal.js
@@ -0,0 +1,58 @@
+import { inject } from "aurelia-framework";
+import { DialogController } from "aurelia-dialog";
+import { ValidationControllerFactory, ValidationRules } from "aurelia-validation";
+import { HttpClient } from "aurelia-http-client";
+
+@inject(ValidationControllerFactory, DialogController)
+export class PayCodeModal {
+ constructor(controllerFactory, dialogController) {
+ this.dialogController = dialogController;
+ this.validationController = controllerFactory.createForCurrentScope();
+ this.client = new HttpClient();
+ }
+
+ activate(state) {
+ this.state = state.payCode;
+
+ this.nominalCodes = state.nominalCodes;
+
+ this.territories = [
+ { value: "UnitedKingdom", text: "United Kingdom" }
+ ];
+
+ this.regions = [
+ { value: "NotSet", text: "Not set" },
+ { value: "England", text: "England" },
+ { value: "Scotland", text: "Scotland" }
+ ];
+
+ this.types = [
+ { value: "Payment", text: "Payment" },
+ { value: "Deduction", text: "Deduction" }
+ ];
+ }
+
+ save() {
+ this.validationController.validate().then(result => {
+ if (result.valid) {
+ this.client.post(`/api/employer/${this.state.employerId}/payCode`, this.state).then(res => {
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.dialogController.ok(parsedResponse.status);
+ });
+ }
+ else {
+ $("html, body, ux-dialog-container, ux-dialog, ux-dialog-body").animate({
+ scrollTop: 0
+ }, 500);
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instruction-modal.html b/src/pay-instruction/pay-instruction-modal.html
new file mode 100644
index 0000000..3aa23dd
--- /dev/null
+++ b/src/pay-instruction/pay-instruction-modal.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instruction-modal.js b/src/pay-instruction/pay-instruction-modal.js
new file mode 100644
index 0000000..dd4fe46
--- /dev/null
+++ b/src/pay-instruction/pay-instruction-modal.js
@@ -0,0 +1,58 @@
+import { inject } from "aurelia-framework";
+import { DialogController } from "aurelia-dialog";
+import { HttpClient } from "aurelia-http-client";
+
+@inject(DialogController)
+export class PayInstructionModal {
+ constructor(dialogController) {
+ this.dialogController = dialogController;
+ this.client = new HttpClient();
+ }
+
+ activate(state) {
+ this.state = state;
+
+ return new Promise(resolve => {
+ let apiUrl;
+
+ if (state.id) {
+ apiUrl = `/api/employer/${state.employerId}/employee/${state.employeeId}/payInstruction/${state.id}`;
+ }
+ else {
+ apiUrl = `/api/employer/${state.employerId}/employee/${state.employeeId}/${state.type}`;
+ }
+
+ this.client.get(apiUrl).then(res => {
+ this.pi = JSON.parse(res.response);
+
+ resolve();
+ });
+ });
+ }
+
+ save() {
+ let data = this.pi;
+ let url = `/api/employer/${this.state.employerId}/employee/${this.state.employeeId}/payInstruction`;
+
+ this.client.post(url, data).then(res => {
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.dialogController.ok(parsedResponse.status);
+ });
+ }
+
+ getPayInstructionPartial(pi) {
+ if (pi.InstructionType.trim().toLowerCase().indexOf("ytd") != -1) {
+ return `./ytd-pay-instructions/forms/${pi.InstructionType}.html`;
+ }
+
+ return `./pay-instructions/forms/${pi.InstructionType}.html`;
+ }
+}
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/AoePayInstruction.html b/src/pay-instruction/pay-instructions/forms/AoePayInstruction.html
new file mode 100644
index 0000000..c570076
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/AoePayInstruction.html
@@ -0,0 +1,211 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/BenefitPayInstruction.html b/src/pay-instruction/pay-instructions/forms/BenefitPayInstruction.html
new file mode 100644
index 0000000..e5213d9
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/BenefitPayInstruction.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+ The amount the employee contributes towards the benefit for the rest of the financial year.
+
+
+
+
+
+
+
+
+ The per period cash equivalent value of the benefit.
+ [Optional] used to override the calculated cash equivilent value.
+
+
+
+
+
+
+
+
+
+ The accounting method used to report the benefit to HMRC.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/NiAdjustmentPayInstruction.html b/src/pay-instruction/pay-instructions/forms/NiAdjustmentPayInstruction.html
new file mode 100644
index 0000000..5ddba46
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/NiAdjustmentPayInstruction.html
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+ The affected periods the adjustment applies to as a comma separated list.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ An optional description for reasons why the adjustment was made.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/NiPayInstruction.html b/src/pay-instruction/pay-instructions/forms/NiPayInstruction.html
new file mode 100644
index 0000000..4cf3992
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/NiPayInstruction.html
@@ -0,0 +1,47 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/PensionPayInstruction.html b/src/pay-instruction/pay-instructions/forms/PensionPayInstruction.html
new file mode 100644
index 0000000..3fe4234
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/PensionPayInstruction.html
@@ -0,0 +1,223 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/PrimitivePayInstruction.html b/src/pay-instruction/pay-instructions/forms/PrimitivePayInstruction.html
new file mode 100644
index 0000000..7c580bd
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/PrimitivePayInstruction.html
@@ -0,0 +1,39 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/RatePayInstruction.html b/src/pay-instruction/pay-instructions/forms/RatePayInstruction.html
new file mode 100644
index 0000000..8135fc2
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/RatePayInstruction.html
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/SalaryPayInstruction.html b/src/pay-instruction/pay-instructions/forms/SalaryPayInstruction.html
new file mode 100644
index 0000000..d3bbba5
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/SalaryPayInstruction.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/ShppPayInstruction.html b/src/pay-instruction/pay-instructions/forms/ShppPayInstruction.html
new file mode 100644
index 0000000..454aee2
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/ShppPayInstruction.html
@@ -0,0 +1,128 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/SmpPayInstruction.html b/src/pay-instruction/pay-instructions/forms/SmpPayInstruction.html
new file mode 100644
index 0000000..6b7bc10
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/SmpPayInstruction.html
@@ -0,0 +1,11 @@
+
+
+
+
+
Coming soon!
+
+
Check soon to see this functionality wired up with the API
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/SspPayInstruction.html b/src/pay-instruction/pay-instructions/forms/SspPayInstruction.html
new file mode 100644
index 0000000..ccbdfd7
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/SspPayInstruction.html
@@ -0,0 +1,67 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/StudentLoanPayInstruction.html b/src/pay-instruction/pay-instructions/forms/StudentLoanPayInstruction.html
new file mode 100644
index 0000000..5e5cb46
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/StudentLoanPayInstruction.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/TaxPayInstruction.html b/src/pay-instruction/pay-instructions/forms/TaxPayInstruction.html
new file mode 100644
index 0000000..415af36
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/TaxPayInstruction.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+ The tax basis to be used for the employee's tax calculations.
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/forms/pay-instruction.html b/src/pay-instruction/pay-instructions/forms/pay-instruction.html
new file mode 100644
index 0000000..463dfcf
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/forms/pay-instruction.html
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ If specified, the PayLineTag value is used to decorate all child pay lines generated by the instruction.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/lists/AoePayInstruction.html b/src/pay-instruction/pay-instructions/lists/AoePayInstruction.html
new file mode 100644
index 0000000..b8ea71c
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/lists/AoePayInstruction.html
@@ -0,0 +1,46 @@
+
+
+
+
+ | Id |
+ Case Number |
+ Type |
+ Start Date |
+ End Date |
+ Description |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.CaseNumber}
+ |
+
+ {item.Code}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+ ${item.Description}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/lists/BenefitPayInstruction.html b/src/pay-instruction/pay-instructions/lists/BenefitPayInstruction.html
new file mode 100644
index 0000000..92d0e2c
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/lists/BenefitPayInstruction.html
@@ -0,0 +1,46 @@
+
+
+
+
+ | Id |
+ Code |
+ Total Cost |
+ Employee Contribution |
+ Start Date |
+ End Date |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.Code}
+ |
+
+ ${item.TotalCost | formatSalary}
+ |
+
+ ${item.EmployeeContribution | formatSalary}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/lists/NiAdjustmentPayInstruction.html b/src/pay-instruction/pay-instructions/lists/NiAdjustmentPayInstruction.html
new file mode 100644
index 0000000..c3efaa9
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/lists/NiAdjustmentPayInstruction.html
@@ -0,0 +1,46 @@
+
+
+
+
+ | Id |
+ Periods |
+ NI Letter |
+ Start Date |
+ End Date |
+ Description |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.Periods}
+ |
+
+ ${item.NiLetter}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+ ${item.Description}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/lists/NiPayInstruction.html b/src/pay-instruction/pay-instructions/lists/NiPayInstruction.html
new file mode 100644
index 0000000..d95c1d6
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/lists/NiPayInstruction.html
@@ -0,0 +1,42 @@
+
+
+
+
+ | Id |
+ NI Table |
+ Start Date |
+ End Date |
+ Description |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.NiLetter}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+ ${item.Description}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/lists/PensionPayInstruction.html b/src/pay-instruction/pay-instructions/lists/PensionPayInstruction.html
new file mode 100644
index 0000000..b6ea5ec
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/lists/PensionPayInstruction.html
@@ -0,0 +1,50 @@
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/lists/PrimitivePayInstruction.html b/src/pay-instruction/pay-instructions/lists/PrimitivePayInstruction.html
new file mode 100644
index 0000000..65bb320
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/lists/PrimitivePayInstruction.html
@@ -0,0 +1,46 @@
+
+
+
+
+ | Id |
+ Code |
+ Value |
+ Start Date |
+ End Date |
+ Description |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.Code}
+ |
+
+ ${item.Value | formatSalary}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+ ${item.Description}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/lists/RatePayInstruction.html b/src/pay-instruction/pay-instructions/lists/RatePayInstruction.html
new file mode 100644
index 0000000..20dcda4
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/lists/RatePayInstruction.html
@@ -0,0 +1,46 @@
+
+
+
+
+ | Id |
+ Rate |
+ Units |
+ Start Date |
+ End Date |
+ Description |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.Rate | formatSalary}
+ |
+
+ ${item.Units | formatSalary}
+ |
+
+ ${item.StartDate | formatSalary}
+ |
+
+ ${item.EndDate}
+ |
+
+ ${item.Description}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/lists/SalaryPayInstruction.html b/src/pay-instruction/pay-instructions/lists/SalaryPayInstruction.html
new file mode 100644
index 0000000..7cc0478
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/lists/SalaryPayInstruction.html
@@ -0,0 +1,42 @@
+
+
+
+
+ | Id |
+ Salary |
+ Start Date |
+ End Date |
+ Description |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.AnnualSalary | formatSalary}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+ ${item.Description}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/lists/ShppPayInstruction.html b/src/pay-instruction/pay-instructions/lists/ShppPayInstruction.html
new file mode 100644
index 0000000..cceb155
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/lists/ShppPayInstruction.html
@@ -0,0 +1,46 @@
+
+
+
+
+ | Id |
+ Due Date |
+ Born Date |
+ Absence Start |
+ Absence End |
+ Statutory Offset? |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.BabyDueDate}
+ |
+
+ ${item.BabyBornDate}
+ |
+
+ ${item.AbsenceStart}
+ |
+
+ ${item.AbsenceEnd}
+ |
+
+ ${item.StatutoryOffset}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/lists/SspPayInstruction.html b/src/pay-instruction/pay-instructions/lists/SspPayInstruction.html
new file mode 100644
index 0000000..f2de70f
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/lists/SspPayInstruction.html
@@ -0,0 +1,38 @@
+
+
+
+
+ | Id |
+ Absence Start |
+ Absence End |
+ Statutory Offset? |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.AbsenceStart}
+ |
+
+ ${item.AbsenceEnd}
+ |
+
+ ${item.StatutoryOffset}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/lists/StudentLoanPayInstruction.html b/src/pay-instruction/pay-instructions/lists/StudentLoanPayInstruction.html
new file mode 100644
index 0000000..d79afb1
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/lists/StudentLoanPayInstruction.html
@@ -0,0 +1,42 @@
+
+
+
+
+ | Id |
+ Calculation Method |
+ Start Date |
+ End Date |
+ Description |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.StudentLoanCalculationMethod}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+ ${item.Description}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/pay-instructions/lists/TaxPayInstruction.html b/src/pay-instruction/pay-instructions/lists/TaxPayInstruction.html
new file mode 100644
index 0000000..6558200
--- /dev/null
+++ b/src/pay-instruction/pay-instructions/lists/TaxPayInstruction.html
@@ -0,0 +1,42 @@
+
+
+
+
+ | Id |
+ Tax code |
+ Start Date |
+ End Date |
+ Description |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.TaxCode}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+ ${item.Description}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/forms/NiYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/forms/NiYtdPayInstruction.html
new file mode 100644
index 0000000..e2dbf3a
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/forms/NiYtdPayInstruction.html
@@ -0,0 +1,237 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/forms/PensionYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/forms/PensionYtdPayInstruction.html
new file mode 100644
index 0000000..e36282e
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/forms/PensionYtdPayInstruction.html
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+ The employer contribution amount.
+
+
+
+
+
+
+
+
+
+ The code that represents the pension payment code.
+
+
+
+
+
+
+
+
+
+ The related pension scheme.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/forms/PrimitiveYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/forms/PrimitiveYtdPayInstruction.html
new file mode 100644
index 0000000..3024d2e
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/forms/PrimitiveYtdPayInstruction.html
@@ -0,0 +1,37 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/forms/SapYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/forms/SapYtdPayInstruction.html
new file mode 100644
index 0000000..c37f7d1
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/forms/SapYtdPayInstruction.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/forms/ShppYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/forms/ShppYtdPayInstruction.html
new file mode 100644
index 0000000..d51cc98
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/forms/ShppYtdPayInstruction.html
@@ -0,0 +1,78 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/forms/SmpYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/forms/SmpYtdPayInstruction.html
new file mode 100644
index 0000000..3ffecae
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/forms/SmpYtdPayInstruction.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/forms/SppYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/forms/SppYtdPayInstruction.html
new file mode 100644
index 0000000..d51cc98
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/forms/SppYtdPayInstruction.html
@@ -0,0 +1,78 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/forms/SspYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/forms/SspYtdPayInstruction.html
new file mode 100644
index 0000000..35d79a7
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/forms/SspYtdPayInstruction.html
@@ -0,0 +1,106 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/forms/StudentLoanYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/forms/StudentLoanYtdPayInstruction.html
new file mode 100644
index 0000000..f82d148
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/forms/StudentLoanYtdPayInstruction.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/forms/TaxYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/forms/TaxYtdPayInstruction.html
new file mode 100644
index 0000000..72248a4
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/forms/TaxYtdPayInstruction.html
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/forms/ytd-pay-instruction.html b/src/pay-instruction/ytd-pay-instructions/forms/ytd-pay-instruction.html
new file mode 100644
index 0000000..6760bdf
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/forms/ytd-pay-instruction.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Indicates if the instruction is an adjustment. Pay lines
+ generated from adjustment YTD instructions appear on the employee pay slip.
+
+
+
+
+
+
+
+
+
+
+
+ If specified, the PayLineTag value is used to decorate all child pay lines generated by the instruction.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/lists/NiYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/lists/NiYtdPayInstruction.html
new file mode 100644
index 0000000..dead7a4
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/lists/NiYtdPayInstruction.html
@@ -0,0 +1,50 @@
+
+
+
+
+ | Id |
+ Value |
+ Employer NI |
+ Niable Pay |
+ NI Letter |
+ Start Date |
+ End Date |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.Value | formatSalary}
+ |
+
+ ${item.EmployerNI | formatSalary}
+ |
+
+ ${item.NiablePay | formatSalary}
+ |
+
+ ${item.NiLetter}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/lists/PensionYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/lists/PensionYtdPayInstruction.html
new file mode 100644
index 0000000..432e0d3
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/lists/PensionYtdPayInstruction.html
@@ -0,0 +1,46 @@
+
+
+
+
+ | Id |
+ Pensionable Pay |
+ Employer Contribution |
+ Code |
+ Start Date |
+ End Date |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.PensionablePay | formatSalary}
+ |
+
+ ${item.EmployerContribution | formatSalary}
+ |
+
+ ${item.Code}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/lists/PrimitiveYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/lists/PrimitiveYtdPayInstruction.html
new file mode 100644
index 0000000..fe737a8
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/lists/PrimitiveYtdPayInstruction.html
@@ -0,0 +1,38 @@
+
+
+
+
+ | Id |
+ Value |
+ Start Date |
+ End Date |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.Value | formatSalary}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/lists/SapYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/lists/SapYtdPayInstruction.html
new file mode 100644
index 0000000..0b9679b
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/lists/SapYtdPayInstruction.html
@@ -0,0 +1,46 @@
+
+
+
+
+ | Id |
+ Value |
+ Absence Start |
+ Absence End |
+ Start Date |
+ End Date |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.Value | formatSalary}
+ |
+
+ ${item.AbsenceStart}
+ |
+
+ ${item.AbsenceEnd}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/lists/ShppYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/lists/ShppYtdPayInstruction.html
new file mode 100644
index 0000000..494e73e
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/lists/ShppYtdPayInstruction.html
@@ -0,0 +1,46 @@
+
+
+
+
+ | Id |
+ Value |
+ Absence Start |
+ Absence End |
+ Start Date |
+ End Date |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.Value | formatSalary}
+ |
+
+ ${item.AbsenceStart}
+ |
+
+ ${item.AbsenceEnd}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/lists/SmpYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/lists/SmpYtdPayInstruction.html
new file mode 100644
index 0000000..1ad8b87
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/lists/SmpYtdPayInstruction.html
@@ -0,0 +1,46 @@
+
+
+
+
+ | Id |
+ Value |
+ Absence Start |
+ Absence End |
+ Start Date |
+ End Date |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.Value | formatSalary}
+ |
+
+ ${item.AbsenceStart}
+ |
+
+ ${item.AbsenceEnd}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/lists/SppYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/lists/SppYtdPayInstruction.html
new file mode 100644
index 0000000..e20e383
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/lists/SppYtdPayInstruction.html
@@ -0,0 +1,46 @@
+
+
+
+
+ | Id |
+ Value |
+ Absence Start |
+ Absence End |
+ Start Date |
+ End Date |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.Value | formatSalary}
+ |
+
+ ${item.AbsenceStart}
+ |
+
+ ${item.AbsenceEnd}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/lists/SspYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/lists/SspYtdPayInstruction.html
new file mode 100644
index 0000000..95b94b0
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/lists/SspYtdPayInstruction.html
@@ -0,0 +1,46 @@
+
+
+
+
+ | Id |
+ Value |
+ Absence Start |
+ Absence End |
+ Start Date |
+ End Date |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.Value | formatSalary}
+ |
+
+ ${item.AbsenceStart}
+ |
+
+ ${item.AbsenceEnd}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/lists/StudentLoanYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/lists/StudentLoanYtdPayInstruction.html
new file mode 100644
index 0000000..27ec6ef
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/lists/StudentLoanYtdPayInstruction.html
@@ -0,0 +1,42 @@
+
+
+
+
+ | Id |
+ Value |
+ Calculation Method |
+ Start Date |
+ End Date |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.Value | formatSalary}
+ |
+
+ ${item.StudentLoanCalculationMethod}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-instruction/ytd-pay-instructions/lists/TaxYtdPayInstruction.html b/src/pay-instruction/ytd-pay-instructions/lists/TaxYtdPayInstruction.html
new file mode 100644
index 0000000..3637a35
--- /dev/null
+++ b/src/pay-instruction/ytd-pay-instructions/lists/TaxYtdPayInstruction.html
@@ -0,0 +1,46 @@
+
+
+
+
+ | Id |
+ Value |
+ Taxable Pay |
+ Tax Code |
+ Start Date |
+ End Date |
+ |
+
+
+
+
+ |
+
+ ${item.Id}
+
+ |
+
+ ${item.Value | formatSalary}
+ |
+
+ ${item.TaxablePay | formatSalary}
+ |
+
+ ${item.TaxCode}
+ |
+
+ ${item.StartDate}
+ |
+
+ ${item.EndDate}
+ |
+
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-run/info-modal.html b/src/pay-run/info-modal.html
new file mode 100644
index 0000000..694a0bc
--- /dev/null
+++ b/src/pay-run/info-modal.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Pay Schedule
+
+
+
+ ${state.PaySchedule}
+
+
+
+
+
+ Pay Frequency
+
+
+
+ ${state.PayFrequency}
+
+
+
+
+
+
+
+ Payment Date
+
+
+
+ ${state.PaymentDate}
+
+
+
+
+
+ Tax Year / Period
+
+
+
+ ${state.TaxYear}/${state.TaxPeriod}
+
+
+
+
+
+
+
+ Period start
+
+
+
+ ${state.PeriodStart}
+
+
+
+
+
+ Period end
+
+
+
+ ${state.PeriodEnd}
+
+
+
+
+
+
+
+
Employees
+
+
+
+
+ | Name |
+ Payments |
+ Tax |
+ EE NI |
+ ER NI |
+ Other Deducs |
+ Net Pay |
+ |
+
+
+
+
+ |
+ ${employee.Name}
+ |
+ ${employee.PAYMENTS} |
+ ${employee.TAX} |
+ ${employee.EE_NI} |
+ ${employee.ER_NI} |
+ ${employee.OTHERDEDNS} |
+ ${employee.NETPAY} |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-run/info-modal.js b/src/pay-run/info-modal.js
new file mode 100644
index 0000000..1f668eb
--- /dev/null
+++ b/src/pay-run/info-modal.js
@@ -0,0 +1,24 @@
+import { inject } from "aurelia-framework";
+import { DialogController } from "aurelia-dialog";
+import { Router } from "aurelia-router";
+
+@inject(DialogController, Router)
+export class InfoModal {
+ constructor(dialogController, router) {
+ this.dialogController = dialogController;
+ this.router = router;
+ }
+
+ activate(state) {
+ this.state = state;
+ }
+
+ viewEmployee(employerId, employeeId) {
+ this.router.navigateToRoute("employee", {
+ employerId: employerId,
+ employeeId: employeeId
+ });
+
+ this.dialogController.ok();
+ }
+}
\ No newline at end of file
diff --git a/src/pay-run/new-pay-run-modal.html b/src/pay-run/new-pay-run-modal.html
new file mode 100644
index 0000000..6836ba8
--- /dev/null
+++ b/src/pay-run/new-pay-run-modal.html
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-run/new-pay-run-modal.js b/src/pay-run/new-pay-run-modal.js
new file mode 100644
index 0000000..0cb6f09
--- /dev/null
+++ b/src/pay-run/new-pay-run-modal.js
@@ -0,0 +1,59 @@
+import { inject } from "aurelia-framework";
+import { DialogController } from "aurelia-dialog";
+import { ValidationControllerFactory, ValidationRules } from "aurelia-validation";
+import { HttpClient } from "aurelia-http-client";
+
+@inject(ValidationControllerFactory, DialogController)
+export class NewPayRunModal {
+ constructor(controllerFactory, dialogController) {
+ this.dialogController = dialogController;
+ this.validationController = controllerFactory.createForCurrentScope();
+ this.client = new HttpClient();
+ }
+
+ activate(state) {
+ this.state = state;
+
+ this.setupValidationRules();
+ }
+
+ setupValidationRules() {
+ ValidationRules
+ .ensure("PayScheduleId").required().withMessage("Pay Schedule is required")
+ .ensure("PaymentDate").required().withMessage("Payment Date is required")
+ .ensure("StartDate").required().withMessage("Pay Period Start is required")
+ .ensure("EndDate").required().withMessage("Pay Period End is required")
+ .on(this.state);
+ }
+
+ save() {
+ let data = {
+ PayScheduleId: this.state.PayScheduleId,
+ PaymentDate: this.state.PaymentDate,
+ StartDate: this.state.StartDate,
+ EndDate: this.state.EndDate
+ };
+
+ this.validationController.validate().then(result => {
+ if (result.valid) {
+ this.client.post(`/api/employer/${this.state.EmployerId}/payRun`, data).then(res => {
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.dialogController.ok(parsedResponse.status);
+ });
+ }
+ else {
+ $("html, body, ux-dialog-container, ux-dialog, ux-dialog-body").animate({
+ scrollTop: 0
+ }, 500);
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/pay-schedule/pay-schedule-modal.html b/src/pay-schedule/pay-schedule-modal.html
new file mode 100644
index 0000000..2709d74
--- /dev/null
+++ b/src/pay-schedule/pay-schedule-modal.html
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pay-schedule/pay-schedule-modal.js b/src/pay-schedule/pay-schedule-modal.js
new file mode 100644
index 0000000..dd4c51b
--- /dev/null
+++ b/src/pay-schedule/pay-schedule-modal.js
@@ -0,0 +1,62 @@
+import { inject } from "aurelia-framework";
+import { DialogController } from "aurelia-dialog";
+import { ValidationControllerFactory, ValidationRules } from "aurelia-validation";
+import { HttpClient } from "aurelia-http-client";
+
+@inject(ValidationControllerFactory, DialogController)
+export class PayScheduleModal {
+ constructor(controllerFactory, dialogController) {
+ this.dialogController = dialogController;
+ this.validationController = controllerFactory.createForCurrentScope();
+ this.client = new HttpClient();
+ }
+
+ activate(state) {
+ this.state = state;
+ this.frequencies = [
+ { text: "Weekly", value: "Weekly" },
+ { text: "Monthly", value: "Monthly" },
+ { text: "Two weekly", value: "TwoWeekly" },
+ { text: "Four weekly", value: "FourWeekly" }
+ ];
+
+ this.setupValidationRules();
+ }
+
+ setupValidationRules() {
+ ValidationRules
+ .ensure("Name").required().withMessage("Name is required")
+ .ensure("PayFrequency").required().withMessage("Pay Frequency is required")
+ .on(this.state);
+ }
+
+ save() {
+ let data = {
+ Id: this.state.Key,
+ Name: this.state.Name,
+ PayFrequency: this.state.PayFrequency
+ };
+
+ this.validationController.validate().then(result => {
+ if (result.valid) {
+ this.client.post(`/api/employer/${this.state.employerId}/paySchedule`, data).then(res => {
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.dialogController.ok(parsedResponse.status);
+ });
+ }
+ else {
+ $("html, body, ux-dialog-container, ux-dialog, ux-dialog-body").animate({
+ scrollTop: 0
+ }, 500);
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/pension/pension-modal.html b/src/pension/pension-modal.html
new file mode 100644
index 0000000..0e838b6
--- /dev/null
+++ b/src/pension/pension-modal.html
@@ -0,0 +1,335 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pension/pension-modal.js b/src/pension/pension-modal.js
new file mode 100644
index 0000000..4d12f62
--- /dev/null
+++ b/src/pension/pension-modal.js
@@ -0,0 +1,67 @@
+import { inject } from "aurelia-framework";
+import { DialogController } from "aurelia-dialog";
+import { ValidationControllerFactory, ValidationRules } from "aurelia-validation";
+import { HttpClient } from "aurelia-http-client";
+
+@inject(ValidationControllerFactory, DialogController)
+export class PensionModal {
+ constructor(controllerFactory, dialogController) {
+ this.dialogController = dialogController;
+ this.validationController = controllerFactory.createForCurrentScope();
+ this.client = new HttpClient();
+ }
+
+ activate(state) {
+ this.state = state;
+
+ this.proRataMethods = [
+ { value: "NotSet", text: "Not set" },
+ { value: "Annual260Days", text: "Annual 260 days" },
+ { value: "Annual365Days", text: "Annual 365 days" },
+ { value: "AnnualQualifyingDays", text: "Annual qualifying days" },
+ { value: "DaysPerCalenderMonth", text: "Days per calender month" },
+ { value: "DaysPerTaxPeriod", text: "Days per tax period" },
+ ];
+
+ this.taxationMethods = [
+ { value: "NotSet", text: "Not set" },
+ { value: "NetBased", text: "Net based" },
+ { value: "ReliefAtSource", text: "Relief at source" }
+ ];
+
+ this.setupValidationRules();
+ }
+
+ setupValidationRules() {
+ ValidationRules
+ .ensure("SchemeName").required().withMessage("Scheme name is required")
+ .ensure("ProviderName").required().withMessage("Provider name is required")
+ .ensure("ProviderEmployerRef").required().withMessage("Provider employer ref is required")
+ .ensure("EffectiveDate").required().withMessage("Effective date is required")
+ .on(this.state);
+ }
+
+ save() {
+ this.validationController.validate().then(result => {
+ if (result.valid) {
+ this.client.post(`/api/employer/${this.state.employerId}/pension`, this.state).then(res => {
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.dialogController.ok(parsedResponse.status);
+ });
+ }
+ else {
+ $("html, body, ux-dialog-container, ux-dialog, ux-dialog-body").animate({
+ scrollTop: 0
+ }, 500);
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/resources/elements/address-form/address-form.html b/src/resources/elements/address-form/address-form.html
new file mode 100644
index 0000000..9f4ec56
--- /dev/null
+++ b/src/resources/elements/address-form/address-form.html
@@ -0,0 +1,78 @@
+
+ Address
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/elements/address-form/address-form.js b/src/resources/elements/address-form/address-form.js
new file mode 100644
index 0000000..23370a6
--- /dev/null
+++ b/src/resources/elements/address-form/address-form.js
@@ -0,0 +1,16 @@
+import { bindable, customElement } from "aurelia-framework";
+
+@customElement("address-form")
+export class AddressForm {
+ @bindable address = null;
+
+ addressChanged() {
+ if (!this.address) {
+ this.address = {};
+ }
+
+ if (!this.address.Country) {
+ this.address.Country = "United Kingdom";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/resources/elements/api-errors/api-errors.html b/src/resources/elements/api-errors/api-errors.html
new file mode 100644
index 0000000..ed6fc18
--- /dev/null
+++ b/src/resources/elements/api-errors/api-errors.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ The PayRun api has returned the following errors:
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/elements/api-errors/api-errors.js b/src/resources/elements/api-errors/api-errors.js
new file mode 100644
index 0000000..f5cf246
--- /dev/null
+++ b/src/resources/elements/api-errors/api-errors.js
@@ -0,0 +1,14 @@
+import { bindable, customElement } from "aurelia-framework";
+
+@customElement("api-errors")
+export class ApiErrors {
+ @bindable errors = null;
+
+ errorsChanged() {
+ if (this.errors) {
+ $("html, body, ux-dialog-container, ux-dialog, ux-dialog-body").animate({
+ scrollTop: 0
+ }, 500);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/resources/elements/bank-account-form/bank-account-form.html b/src/resources/elements/bank-account-form/bank-account-form.html
new file mode 100644
index 0000000..c668cc0
--- /dev/null
+++ b/src/resources/elements/bank-account-form/bank-account-form.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/elements/bank-account-form/bank-account-form.js b/src/resources/elements/bank-account-form/bank-account-form.js
new file mode 100644
index 0000000..8c3a8f2
--- /dev/null
+++ b/src/resources/elements/bank-account-form/bank-account-form.js
@@ -0,0 +1,6 @@
+import { bindable, customElement } from "aurelia-framework";
+
+@customElement("bank-account-form")
+export class BankAccountForm {
+ @bindable bankaccount = null;
+}
\ No newline at end of file
diff --git a/src/resources/elements/breadcrumbs/breadcrumbs.html b/src/resources/elements/breadcrumbs/breadcrumbs.html
new file mode 100644
index 0000000..083b034
--- /dev/null
+++ b/src/resources/elements/breadcrumbs/breadcrumbs.html
@@ -0,0 +1,17 @@
+
+
+
\ No newline at end of file
diff --git a/src/resources/elements/breadcrumbs/breadcrumbs.js b/src/resources/elements/breadcrumbs/breadcrumbs.js
new file mode 100644
index 0000000..481f0b1
--- /dev/null
+++ b/src/resources/elements/breadcrumbs/breadcrumbs.js
@@ -0,0 +1,58 @@
+import { inject, customElement } from "aurelia-framework";
+import { EventAggregator } from "aurelia-event-aggregator";
+import { Router } from "aurelia-router";
+
+@customElement("breadcrumbs")
+@inject(EventAggregator, Router)
+export class Breadcrumbs {
+ constructor(eventAggregator, router) {
+ this.ea = eventAggregator;
+ this.router = router;
+ }
+
+ attached() {
+ this.navigationSubscriber = this.ea.subscribe("router:navigation:success", () => {
+ this.loadInstructions();
+ });
+
+ this.loadInstructions();
+ }
+
+ detached() {
+ if (this.navigationSubscriber) {
+ this.navigationSubscriber.dispose();
+ }
+ }
+
+ loadInstructions() {
+ let parentInstructions = this.getParentInstructions(this.router.currentInstruction);
+
+ this.instructions = parentInstructions
+ .slice(0, parentInstructions.length - 1)
+ .concat(this.router.currentInstruction.getAllInstructions())
+ .filter(instruction => instruction.config.includeInBreadcrumbs && instruction.config.title);
+ }
+
+ navigateToRoute(instruction) {
+ this.router.navigateToRoute(instruction.config.name, instruction.params);
+ }
+
+ getParentInstructions(instruction) {
+ let arr = [instruction];
+
+ if (!instruction.config.previousInstruction) {
+ return arr;
+ }
+
+ let routes = this.router.routes;
+ let previousInstruction = routes.find(e => e.name === instruction.config.previousInstruction);
+
+ if (!previousInstruction) {
+ return arr;
+ }
+
+ previousInstruction.config = previousInstruction;
+
+ return this.getParentInstructions(previousInstruction).concat(arr);
+ }
+}
\ No newline at end of file
diff --git a/src/resources/elements/coming-soon/coming-soon.html b/src/resources/elements/coming-soon/coming-soon.html
new file mode 100644
index 0000000..6ab6764
--- /dev/null
+++ b/src/resources/elements/coming-soon/coming-soon.html
@@ -0,0 +1,7 @@
+
+
+
Coming soon!
+
+
Check soon to see this functionality wired up with the API
+
+
\ No newline at end of file
diff --git a/src/resources/elements/coming-soon/coming-soon.js b/src/resources/elements/coming-soon/coming-soon.js
new file mode 100644
index 0000000..3453044
--- /dev/null
+++ b/src/resources/elements/coming-soon/coming-soon.js
@@ -0,0 +1,5 @@
+import { customElement } from "aurelia-framework";
+
+@customElement("coming-soon")
+export class ComingSoon {
+}
\ No newline at end of file
diff --git a/src/resources/elements/pay-schedule-dropdown/pay-schedule-dropdown.html b/src/resources/elements/pay-schedule-dropdown/pay-schedule-dropdown.html
new file mode 100644
index 0000000..8308f33
--- /dev/null
+++ b/src/resources/elements/pay-schedule-dropdown/pay-schedule-dropdown.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/elements/pay-schedule-dropdown/pay-schedule-dropdown.js b/src/resources/elements/pay-schedule-dropdown/pay-schedule-dropdown.js
new file mode 100644
index 0000000..4358617
--- /dev/null
+++ b/src/resources/elements/pay-schedule-dropdown/pay-schedule-dropdown.js
@@ -0,0 +1,7 @@
+import { bindable, customElement } from "aurelia-framework";
+
+@customElement("pay-schedule-dropdown")
+export class PayScheduleDropdown {
+ @bindable payschedule = null;
+ @bindable payschedules = null;
+}
\ No newline at end of file
diff --git a/src/resources/elements/request-indicator/request-indicator.html b/src/resources/elements/request-indicator/request-indicator.html
new file mode 100644
index 0000000..4d47272
--- /dev/null
+++ b/src/resources/elements/request-indicator/request-indicator.html
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/src/resources/elements/request-indicator/request-indicator.js b/src/resources/elements/request-indicator/request-indicator.js
new file mode 100644
index 0000000..dbbefbf
--- /dev/null
+++ b/src/resources/elements/request-indicator/request-indicator.js
@@ -0,0 +1,26 @@
+import { inject, customElement } from "aurelia-framework";
+import { EventAggregator } from "aurelia-event-aggregator";
+
+@customElement("request-indicator")
+@inject(EventAggregator)
+export class RequestIndicator {
+ constructor(EventAggregator) {
+ this.ea = EventAggregator;
+ this.visible = false;
+ }
+
+ attached() {
+ this.processingSubscriber = this.ea.subscribe("request:processing", () => {
+ this.visible = true;
+ });
+
+ this.completeSubscriber = this.ea.subscribe("request:complete", () => {
+ this.visible = false;
+ });
+ }
+
+ detached() {
+ this.processingSubscriber.dispose();
+ this.completeSubscriber.dispose();
+ }
+}
\ No newline at end of file
diff --git a/src/resources/elements/router-progress-indicator/router-progress-indicator.html b/src/resources/elements/router-progress-indicator/router-progress-indicator.html
new file mode 100644
index 0000000..41a40c8
--- /dev/null
+++ b/src/resources/elements/router-progress-indicator/router-progress-indicator.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/resources/elements/router-progress-indicator/router-progress-indicator.js b/src/resources/elements/router-progress-indicator/router-progress-indicator.js
new file mode 100644
index 0000000..25ec834
--- /dev/null
+++ b/src/resources/elements/router-progress-indicator/router-progress-indicator.js
@@ -0,0 +1,26 @@
+import { inject, customElement } from "aurelia-framework";
+import { EventAggregator } from "aurelia-event-aggregator";
+import * as nprogress from "nprogress";
+
+@customElement("router-progress-indicator")
+@inject(EventAggregator)
+export class RouterProgressIndicator {
+ constructor(EventAggregator) {
+ this.ea = EventAggregator;
+ }
+
+ attached() {
+ this.processingSubscriber = this.ea.subscribe("router:navigation:processing", () => {
+ nprogress.start();
+ });
+
+ this.completeSubscriber = this.ea.subscribe("router:navigation:complete", () => {
+ nprogress.done();
+ });
+ }
+
+ detached() {
+ this.processingSubscriber.dispose();
+ this.completeSubscriber.dispose();
+ }
+}
\ No newline at end of file
diff --git a/src/resources/elements/rule-exclusions/rule-exclusions.html b/src/resources/elements/rule-exclusions/rule-exclusions.html
new file mode 100644
index 0000000..cb78324
--- /dev/null
+++ b/src/resources/elements/rule-exclusions/rule-exclusions.html
@@ -0,0 +1,32 @@
+
+
+
\ No newline at end of file
diff --git a/src/resources/elements/rule-exclusions/rule-exclusions.js b/src/resources/elements/rule-exclusions/rule-exclusions.js
new file mode 100644
index 0000000..e5d70a0
--- /dev/null
+++ b/src/resources/elements/rule-exclusions/rule-exclusions.js
@@ -0,0 +1,6 @@
+import { bindable, customElement } from "aurelia-framework";
+
+@customElement("rule-exclusions")
+export class RuleExclusions {
+ @bindable ruleexclusions = null;
+}
\ No newline at end of file
diff --git a/src/resources/elements/status/status.html b/src/resources/elements/status/status.html
new file mode 100644
index 0000000..a949878
--- /dev/null
+++ b/src/resources/elements/status/status.html
@@ -0,0 +1,13 @@
+
+
+
+ ${status.message}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/elements/status/status.js b/src/resources/elements/status/status.js
new file mode 100644
index 0000000..bc8c4b0
--- /dev/null
+++ b/src/resources/elements/status/status.js
@@ -0,0 +1,26 @@
+import { inject, bindable, customElement } from "aurelia-framework";
+import { EventAggregator } from "aurelia-event-aggregator";
+
+@customElement("status")
+@inject(EventAggregator)
+export class Status {
+ constructor(eventAggregator) {
+ this.ea = eventAggregator;
+ }
+
+ @bindable status = null;
+
+ viewJob() {
+ this.ea.publish("app:view-job", this.status.job);
+ }
+
+ statusChanged() {
+ if (this.status) {
+ $("#status").fadeIn();
+
+ $("html, body, ux-dialog-container, ux-dialog, ux-dialog-body").animate({
+ scrollTop: 0
+ }, 500);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/resources/elements/validation-errors/validation-errors.html b/src/resources/elements/validation-errors/validation-errors.html
new file mode 100644
index 0000000..ee1420a
--- /dev/null
+++ b/src/resources/elements/validation-errors/validation-errors.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Please fix the below errors:
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/elements/validation-errors/validation-errors.js b/src/resources/elements/validation-errors/validation-errors.js
new file mode 100644
index 0000000..4750e0b
--- /dev/null
+++ b/src/resources/elements/validation-errors/validation-errors.js
@@ -0,0 +1,14 @@
+import { bindable, customElement } from "aurelia-framework";
+
+@customElement("validation-errors")
+export class ValidationErrors {
+ @bindable errors = null;
+
+ errorsChanged() {
+ if (this.errors && this.errors.length > 0) {
+ $("html, body, ux-dialog-container, ux-dialog, ux-dialog-body").animate({
+ scrollTop: 0
+ }, 500);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/resources/index.js b/src/resources/index.js
new file mode 100644
index 0000000..6b131cf
--- /dev/null
+++ b/src/resources/index.js
@@ -0,0 +1,12 @@
+export function configure(config) {
+ config.globalResources([
+ "./value-converters/address",
+ "./value-converters/bank-account",
+ "./value-converters/employee-name",
+ "./value-converters/extract-href",
+ "./value-converters/extract-id-from-link",
+ "./value-converters/format-salary",
+ "./value-converters/long-date-time",
+ "./value-converters/short-date",
+ ]);
+}
diff --git a/src/resources/value-converters/address.js b/src/resources/value-converters/address.js
new file mode 100644
index 0000000..57a4435
--- /dev/null
+++ b/src/resources/value-converters/address.js
@@ -0,0 +1,18 @@
+export class AddressValueConverter {
+ toView(address) {
+ if (address) {
+ let parts = [
+ address.Address1,
+ address.Address2,
+ address.Address3,
+ address.Address4,
+ address.Country,
+ address.Postcode
+ ].filter(part => part !== null && part !== undefined && part.trim().length > 0);
+
+ return parts.join("
");
+ }
+
+ return "";
+ }
+}
\ No newline at end of file
diff --git a/src/resources/value-converters/bank-account.js b/src/resources/value-converters/bank-account.js
new file mode 100644
index 0000000..c6e1529
--- /dev/null
+++ b/src/resources/value-converters/bank-account.js
@@ -0,0 +1,15 @@
+export class BankAccountValueConverter {
+ toView(account) {
+ if (account) {
+ let parts = [
+ account.AccountName,
+ account.AccountNumber,
+ account.SortCode
+ ].filter(part => part !== null && part !== undefined && part.trim().length > 0);
+
+ return parts.join("
");
+ }
+
+ return "";
+ }
+}
\ No newline at end of file
diff --git a/src/resources/value-converters/employee-name.js b/src/resources/value-converters/employee-name.js
new file mode 100644
index 0000000..9e5fd0d
--- /dev/null
+++ b/src/resources/value-converters/employee-name.js
@@ -0,0 +1,13 @@
+export class EmployeeNameValueConverter {
+ toView(employee) {
+ let firstname = employee.FirstName || employee.Initials;
+
+ let parts = [
+ employee.Title,
+ firstname,
+ employee.LastName
+ ].filter(part => part !== undefined && part !== null && part.trim().length > 0);
+
+ return parts.join(" ");
+ }
+}
\ No newline at end of file
diff --git a/src/resources/value-converters/extract-href.js b/src/resources/value-converters/extract-href.js
new file mode 100644
index 0000000..6092b99
--- /dev/null
+++ b/src/resources/value-converters/extract-href.js
@@ -0,0 +1,5 @@
+export class ExtractHrefValueConverter {
+ toView(obj) {
+ return obj["@href"];
+ }
+}
\ No newline at end of file
diff --git a/src/resources/value-converters/extract-id-from-link.js b/src/resources/value-converters/extract-id-from-link.js
new file mode 100644
index 0000000..97bb577
--- /dev/null
+++ b/src/resources/value-converters/extract-id-from-link.js
@@ -0,0 +1,8 @@
+export class ExtractIdFromLinkValueConverter {
+ toView(obj) {
+ let href = obj["@href"];
+ let parts = href.split("/");
+
+ return parts[parts.length - 1];
+ }
+}
\ No newline at end of file
diff --git a/src/resources/value-converters/format-salary.js b/src/resources/value-converters/format-salary.js
new file mode 100644
index 0000000..b93f919
--- /dev/null
+++ b/src/resources/value-converters/format-salary.js
@@ -0,0 +1,9 @@
+export class FormatSalaryValueConverter {
+ toView(obj) {
+ if (obj) {
+ return parseFloat(obj).toFixed(2);
+ }
+
+ return "";
+ }
+}
\ No newline at end of file
diff --git a/src/resources/value-converters/long-date-time.js b/src/resources/value-converters/long-date-time.js
new file mode 100644
index 0000000..ebb7480
--- /dev/null
+++ b/src/resources/value-converters/long-date-time.js
@@ -0,0 +1,11 @@
+const moment = require("moment");
+
+export class LongDateTimeValueConverter {
+ toView(value) {
+ if (value) {
+ return moment(value).format("YYYY-MM-DD HH:mm:ss");
+ }
+
+ return "";
+ }
+}
\ No newline at end of file
diff --git a/src/resources/value-converters/short-date.js b/src/resources/value-converters/short-date.js
new file mode 100644
index 0000000..462d9ad
--- /dev/null
+++ b/src/resources/value-converters/short-date.js
@@ -0,0 +1,11 @@
+const moment = require("moment");
+
+export class ShortDateValueConverter {
+ toView(value) {
+ if (value) {
+ return moment(value).format("YYYY-MM-DD");
+ }
+
+ return "";
+ }
+}
\ No newline at end of file
diff --git a/src/rti-transaction/rti-transaction-modal.html b/src/rti-transaction/rti-transaction-modal.html
new file mode 100644
index 0000000..510835c
--- /dev/null
+++ b/src/rti-transaction/rti-transaction-modal.html
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/rti-transaction/rti-transaction-modal.js b/src/rti-transaction/rti-transaction-modal.js
new file mode 100644
index 0000000..ca5dac2
--- /dev/null
+++ b/src/rti-transaction/rti-transaction-modal.js
@@ -0,0 +1,45 @@
+import { inject } from "aurelia-framework";
+import { DialogController } from "aurelia-dialog";
+import { HttpClient } from "aurelia-http-client";
+
+@inject(DialogController)
+export class RtiTransactionModal {
+ constructor(dialogController) {
+ this.dialogController = dialogController;
+ this.client = new HttpClient();
+ }
+
+ activate(state) {
+ this.state = state;
+ this.state.PayRun = state.payRuns[0];
+ this.state.LateReason = "";
+ }
+
+ save() {
+ let data = {
+ Generate: true,
+ Transmit: true,
+ PayScheduleId: this.state.PayRun.PayScheduleKey,
+ PayRunId: this.state.PayRun.PayRunKey,
+ HoldingDate: this.state.HoldingDate,
+ LateReason: this.state.LateReason
+ };
+
+ this.client.post(`/api/employer/${this.state.employerId}/rtiTransaction`, data).then(res => {
+ let parsedResponse = JSON.parse(res.response);
+
+ this.apiErrors = null;
+
+ if (parsedResponse.errors) {
+ this.apiErrors = parsedResponse.errors;
+ return;
+ }
+
+ this.dialogController.ok(parsedResponse.status);
+ });
+ }
+
+ onLateReasonSelected(newValue) {
+ this.state.LateReason = newValue;
+ }
+}
\ No newline at end of file
diff --git a/views/setup.hbs b/src/welcome/setup.html
similarity index 64%
rename from views/setup.hbs
rename to src/welcome/setup.html
index 66e6642..fd3dc6e 100644
--- a/views/setup.hbs
+++ b/src/welcome/setup.html
@@ -1,9 +1,9 @@
-
\ No newline at end of file
diff --git a/views/employee.hbs b/views/employee.hbs
deleted file mode 100644
index 9bc83da..0000000
--- a/views/employee.hbs
+++ /dev/null
@@ -1,150 +0,0 @@
-{{>breadcrumbs}}
-
-{{>status}}
-
-{{>validationErrors}}
-
-{{#if ShowTabs}}
-
-
-
-
- {{>employeeForm}}
-
-
-
-
-
- {{#each GroupedPayInstructions}}
-
-
-
-
-
- {{payInstructionListPartial this ../this}}
-
-
-
-
- {{/each}}
-
-
-
- {{>p45PayInstruction}}
-
-
-
-
-
- {{#each GroupedYTDPayInstructions}}
-
-
-
-
-
- {{payInstructionListPartial this ../this}}
-
-
-
-
- {{/each}}
-
-
-{{else}}
- {{>employeeForm}}
-{{/if}}
-
-
\ No newline at end of file
diff --git a/views/employeeLeaveDetails.hbs b/views/employeeLeaveDetails.hbs
deleted file mode 100644
index e69de29..0000000
diff --git a/views/employer.hbs b/views/employer.hbs
deleted file mode 100644
index df2541c..0000000
--- a/views/employer.hbs
+++ /dev/null
@@ -1,352 +0,0 @@
-{{>breadcrumbs}}
-
-{{>status}}
-
-{{>validationErrors}}
-
-{{#if ShowTabs}}
-
-
-
-
- {{>employerForm}}
-
-
-
-
-
- {{#if Employees}}
-
- {{/if}}
-
-
-
-
-
- {{#if PaySchedules.PaySchedulesTable.PaySchedule}}
-
-
-
- | Id |
- Name |
- Frequency |
- Employees |
- Last Pay Day |
- Next Pay Day |
- |
-
-
-
- {{#each PaySchedules.PaySchedulesTable.PaySchedule}}
-
- |
-
- {{this.Key}}
-
- |
- {{this.Name}} |
- {{this.PayFrequency}} |
- {{this.EmployeeCount}} |
-
- {{#if this.LastPayDay}}
- {{this.LastPayDay}}
- {{else}}
- Never
- {{/if}}
- |
-
- {{#if this.NextPayDay}}
- {{this.NextPayDay}}
- {{else}}
- -
- {{/if}}
- |
-
-
- |
-
- {{/each}}
-
-
- {{/if}}
-
-
-
- {{#canAddPayRun this}}
- {{!--
--}}
- {{else}}
-
-
-
-
- Add a Pay Schedule and an Employee before starting a pay run.
-
-
-
- {{/canAddPayRun}}
-
-
-
- {{#each PaySchedules.PaySchedulesTable.PaySchedule}}
-
-
-
- {{#if this.PayRuns}}
-
-
-
- | Payment Date |
- Tax Period |
- Pay Period |
- Supplementary |
-
- Add PayRun
- |
-
-
-
- {{#each this.PayRuns}}
-
- |
-
- {{formatDate this.PaymentDate}}
-
- |
- {{this.TaxYear}}/{{this.TaxPeriod}} |
- {{formatDate this.PeriodStart}} - {{formatDate this.PeriodEnd}} |
- {{this.IsSupplementary}} |
-
- {{#ifCond ../HeadSequence this.Sequence this}}
-
-
- {{/ifCond}}
- |
-
- {{/each}}
-
-
- {{else}}
-
- There are currently no payruns for this pay schedule.
- Add PayRun
-
- {{/if}}
-
-
- {{/each}}
-
-
-
-
-
- {{#if Pensions}}
-
-
-
- | Id |
- Scheme |
- Provider |
- Provider Employer Ref |
- |
-
-
-
- {{#each Pensions}}
-
- |
-
- {{this.Id}}
-
- |
- {{this.SchemeName}} |
- {{this.ProviderName}} |
- {{this.ProviderEmployerRef}} |
-
- {{#unless this.UseForAutoEnrolment}}
-
- {{/unless}}
-
-
- |
-
- {{/each}}
-
-
- {{/if}}
-
-
-
- {{#if PayRuns}}
-
- {{else}}
-
-
-
-
- Start a new Pay Run before creating an RTI submission.
-
-
-
- {{/if}}
-
- {{#if RTITransactions}}
-
-
-
- | Id |
- Tax Year |
- Transmission Date |
- Transaction Status |
-
-
-
- {{#each RTITransactions}}
-
- |
-
- {{this.Id}}
-
- |
- {{TaxYear}} |
- {{longDateTime TransmissionDate}} |
- {{TransactionStatus}} |
-
- {{/each}}
-
-
- {{/if}}
-
-
-
-
-
Coming soon!
-
Check soon to see this functionality wired up with the API
-
-
-
-
-{{else}}
- {{>employerForm}}
-{{/if}}
-
-
-
-
\ No newline at end of file
diff --git a/views/employers.hbs b/views/employers.hbs
deleted file mode 100644
index 2b44020..0000000
--- a/views/employers.hbs
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-{{#if employers}}
-
-
-
- | Name |
- PAYE Ref |
- Pay Schedules
-
- |
-
-
-
- {{#each employers.EmployerTable.Employer}}
-
- |
-
- {{this.Name}}
-
- |
- {{this.TaxOfficeNumber}}/{{this.TaxOfficeReference}} |
-
- {{#if this.PaySchedule}}
- {{#each this.PaySchedule}}
-
-
-
-
- {{Name}}
-
-
- {{PayFrequency}}
-
-
- {{EmployeeCount}}
-
-
- {{#if this.LastPayDay}}
- {{this.LastPayDay}}
- {{else}}
- Never
- {{/if}}
-
-
- {{#if this.NextPayDay}}
- {{this.NextPayDay}}
- {{else}}
- -
- {{/if}}
-
-
-
-
- {{/each}}
- {{else}}
- Add a Pay Schedule
- {{/if}}
- |
-
- {{/each}}
-
-
-{{/if}}
\ No newline at end of file
diff --git a/views/job-details.hbs b/views/job-details.hbs
deleted file mode 100644
index 8119f50..0000000
--- a/views/job-details.hbs
+++ /dev/null
@@ -1,79 +0,0 @@
-{{>breadcrumbs}}
-
-
- {{#if Errors}}
-
-
-
-
This job contains the following errors:
-
-
- {{#each Errors.Error}}
- - {{this}}
- {{/each}}
-
-
-
-
- {{/if}}
-
-
-
-
-
-
-
- Status
-
-
-
- {{JobStatus}}
-
-
-
-
-
- Job Id
-
-
-
- {{JobId}}
-
-
-
-
-
-
-
- Last updated on
-
-
-
- {{longDateTime LastUpdated}}
-
-
-
-
-
- Created on
-
-
-
- {{longDateTime Created}}
-
-
-
-
-
\ No newline at end of file
diff --git a/views/layouts/main.hbs b/views/layouts/main.hbs
deleted file mode 100644
index c090c37..0000000
--- a/views/layouts/main.hbs
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-
-
{{title}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- API calls
-
-
-
-
-
-
-
-
-
-
-
-
- {{>modal}}
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/layouts/modal.hbs b/views/layouts/modal.hbs
deleted file mode 100644
index af14dc2..0000000
--- a/views/layouts/modal.hbs
+++ /dev/null
@@ -1 +0,0 @@
-{{{content}}}
diff --git a/views/partials/addressForm.hbs b/views/partials/addressForm.hbs
deleted file mode 100644
index 7686455..0000000
--- a/views/partials/addressForm.hbs
+++ /dev/null
@@ -1,79 +0,0 @@
-
Address
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/views/partials/apiCalls.hbs b/views/partials/apiCalls.hbs
deleted file mode 100644
index 24b7e07..0000000
--- a/views/partials/apiCalls.hbs
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/views/partials/bankAccountForm.hbs b/views/partials/bankAccountForm.hbs
deleted file mode 100644
index 10023ec..0000000
--- a/views/partials/bankAccountForm.hbs
+++ /dev/null
@@ -1,47 +0,0 @@
-
Bank Account
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/views/partials/breadcrumbs.hbs b/views/partials/breadcrumbs.hbs
deleted file mode 100644
index 952b9fb..0000000
--- a/views/partials/breadcrumbs.hbs
+++ /dev/null
@@ -1,13 +0,0 @@
-
\ No newline at end of file
diff --git a/views/partials/comingSoon.hbs b/views/partials/comingSoon.hbs
deleted file mode 100644
index 22a09e6..0000000
--- a/views/partials/comingSoon.hbs
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
Coming soon!
-
-
Check soon to see this functionality wired up with the API
-
\ No newline at end of file
diff --git a/views/partials/employerForm.hbs b/views/partials/employerForm.hbs
deleted file mode 100644
index 1cab65f..0000000
--- a/views/partials/employerForm.hbs
+++ /dev/null
@@ -1,421 +0,0 @@
-{{#if Id}}
-
\ No newline at end of file
diff --git a/views/partials/modal.hbs b/views/partials/modal.hbs
deleted file mode 100644
index 9315008..0000000
--- a/views/partials/modal.hbs
+++ /dev/null
@@ -1,17 +0,0 @@
-
\ No newline at end of file
diff --git a/views/partials/p45PayInstruction.hbs b/views/partials/p45PayInstruction.hbs
deleted file mode 100644
index 813eb45..0000000
--- a/views/partials/p45PayInstruction.hbs
+++ /dev/null
@@ -1,200 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/AoePayInstruction.hbs b/views/partials/payInstructions/forms/AoePayInstruction.hbs
deleted file mode 100644
index ede6bde..0000000
--- a/views/partials/payInstructions/forms/AoePayInstruction.hbs
+++ /dev/null
@@ -1,258 +0,0 @@
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/BenefitPayInstruction.hbs b/views/partials/payInstructions/forms/BenefitPayInstruction.hbs
deleted file mode 100644
index 1e6254d..0000000
--- a/views/partials/payInstructions/forms/BenefitPayInstruction.hbs
+++ /dev/null
@@ -1,139 +0,0 @@
-
-
-
-
-
-
-
-
-
- The amount the employee contributes towards the benefit for the rest of the financial year.
-
-
-
-
-
-
-
-
- The per period cash equivalent value of the benefit.
- [Optional] used to override the calculated cash equivilent value.
-
-
-
-
-
-
- {{#select AccountingMethod}}
-
- {{/select}}
-
-
- The accounting method used to report the benefit to HMRC.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/NiAdjustmentPayInstruction.hbs b/views/partials/payInstructions/forms/NiAdjustmentPayInstruction.hbs
deleted file mode 100644
index 20afb5b..0000000
--- a/views/partials/payInstructions/forms/NiAdjustmentPayInstruction.hbs
+++ /dev/null
@@ -1,146 +0,0 @@
-
-
-
-
-
-
-
-
- The date the instruction will come into effect.
-
-
-
-
-
-
-
-
-
- The date the instruction will end, open ended instructions will run forever.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The affected periods the adjustment applies to as a comma separated list.
-
-
-
-
-
-
- {{#select TaxYear}}
-
- {{/select}}
-
-
-
-
-
-
-
-
- An optional description for reasons why the adjustment was made.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/NiPayInstruction.hbs b/views/partials/payInstructions/forms/NiPayInstruction.hbs
deleted file mode 100644
index 0926985..0000000
--- a/views/partials/payInstructions/forms/NiPayInstruction.hbs
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
-
-
-
-
- The date the instruction will come into effect.
-
-
-
-
-
-
-
-
-
- The date the instruction will end, open ended instructions will run forever.
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/PensionPayInstruction.hbs b/views/partials/payInstructions/forms/PensionPayInstruction.hbs
deleted file mode 100644
index dcafef1..0000000
--- a/views/partials/payInstructions/forms/PensionPayInstruction.hbs
+++ /dev/null
@@ -1,273 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- The employee additional voluntary cash contribution amount.
-
-
-
-
-
-
-
-
-
- The employee additional voluntary contribution percentage amount.
-
-
-
-
-
-
-
-
-
- The lower contribution cut off threshold. If specified; contributions will
- only be calculated on pensionable pay exceeding the thresh hold. If omitted;
- use value defined in pension scheme.
-
-
-
-
-
-
-
-
-
- The upper contribution cut off threshold. If specified; contributions will only
- be calculated on pensionable pay below the thresh hold. If omitted; use value
- defined in pension scheme.
-
-
-
-
-
-
-
-
-
- Determines if the contributions are calculated using the salary sacrifice method. If omitted; use value defined in pension scheme.
-
-
-
-
-
-
- {{#select TaxationMethod}}
-
- {{/select}}
-
-
- The pension calculation taxation method override. If omitted; use value defined in pension scheme.
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/PrimitivePayInstruction.hbs b/views/partials/payInstructions/forms/PrimitivePayInstruction.hbs
deleted file mode 100644
index 917efb0..0000000
--- a/views/partials/payInstructions/forms/PrimitivePayInstruction.hbs
+++ /dev/null
@@ -1,87 +0,0 @@
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/RatePayInstruction.hbs b/views/partials/payInstructions/forms/RatePayInstruction.hbs
deleted file mode 100644
index 755fd48..0000000
--- a/views/partials/payInstructions/forms/RatePayInstruction.hbs
+++ /dev/null
@@ -1,116 +0,0 @@
-
-
-
-
-
-
-
- {{#select RateUoM}}
-
- {{/select}}
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/SalaryPayInstruction.hbs b/views/partials/payInstructions/forms/SalaryPayInstruction.hbs
deleted file mode 100644
index e7613a6..0000000
--- a/views/partials/payInstructions/forms/SalaryPayInstruction.hbs
+++ /dev/null
@@ -1,89 +0,0 @@
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/ShppPayInstruction.hbs b/views/partials/payInstructions/forms/ShppPayInstruction.hbs
deleted file mode 100644
index d82d64d..0000000
--- a/views/partials/payInstructions/forms/ShppPayInstruction.hbs
+++ /dev/null
@@ -1,170 +0,0 @@
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/SmpPayInstruction.hbs b/views/partials/payInstructions/forms/SmpPayInstruction.hbs
deleted file mode 100644
index 5042992..0000000
--- a/views/partials/payInstructions/forms/SmpPayInstruction.hbs
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
Coming soon!
-
-
Check soon to see this functionality wired up with the API
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/SspPayInstruction.hbs b/views/partials/payInstructions/forms/SspPayInstruction.hbs
deleted file mode 100644
index d63df10..0000000
--- a/views/partials/payInstructions/forms/SspPayInstruction.hbs
+++ /dev/null
@@ -1,109 +0,0 @@
-
-
-
-
-
-
-
-
-
- The end date of the employee absence, leave blank if the absence is long-term and the end date is not known.
-
-
-
-
-
-
-
-
-
- Flag to indicate if the statutory payment should be offset.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/StudentLoanPayInstruction.hbs b/views/partials/payInstructions/forms/StudentLoanPayInstruction.hbs
deleted file mode 100644
index 02fd679..0000000
--- a/views/partials/payInstructions/forms/StudentLoanPayInstruction.hbs
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
- {{#select StudentLoanCalculationMethod}}
-
- {{/select}}
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/TaxPayInstruction.hbs b/views/partials/payInstructions/forms/TaxPayInstruction.hbs
deleted file mode 100644
index 0ec01a7..0000000
--- a/views/partials/payInstructions/forms/TaxPayInstruction.hbs
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
-
-
-
-
-
- The date the instruction will come into effect.
-
-
-
-
-
-
-
-
-
- The date the instruction will end, open ended instructions will run forever.
-
-
-
-
-
-
- {{#select ProRataMethod}}
-
- {{/select}}
-
-
- The tax basis to be used for the employee's tax calculations.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/yearToDate/NiYtdPayInstruction.hbs b/views/partials/payInstructions/forms/yearToDate/NiYtdPayInstruction.hbs
deleted file mode 100644
index db1e12a..0000000
--- a/views/partials/payInstructions/forms/yearToDate/NiYtdPayInstruction.hbs
+++ /dev/null
@@ -1,300 +0,0 @@
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/yearToDate/PensionYtdPayInstruction.hbs b/views/partials/payInstructions/forms/yearToDate/PensionYtdPayInstruction.hbs
deleted file mode 100644
index 15e2940..0000000
--- a/views/partials/payInstructions/forms/yearToDate/PensionYtdPayInstruction.hbs
+++ /dev/null
@@ -1,164 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- The employer contribution amount.
-
-
-
-
-
-
-
-
-
- The code that represents the pension payment code.
-
-
-
-
-
-
-
-
-
- The related pension scheme.
-
-
-
-
-
-
-
-
-
- Indicates if the instruction is an adjustment. Pay lines
- generated from adjustment YTD instructions appear on the employee pay slip.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/yearToDate/PrimitiveYtdPayInstruction.hbs b/views/partials/payInstructions/forms/yearToDate/PrimitiveYtdPayInstruction.hbs
deleted file mode 100644
index b5f6f78..0000000
--- a/views/partials/payInstructions/forms/yearToDate/PrimitiveYtdPayInstruction.hbs
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Indicates if the instruction is an adjustment. Pay lines
- generated from adjustment YTD instructions appear on the employee pay slip.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/yearToDate/SapYtdPayInstruction.hbs b/views/partials/payInstructions/forms/yearToDate/SapYtdPayInstruction.hbs
deleted file mode 100644
index 1d4ac01..0000000
--- a/views/partials/payInstructions/forms/yearToDate/SapYtdPayInstruction.hbs
+++ /dev/null
@@ -1,163 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/yearToDate/ShppYtdPayInstruction.hbs b/views/partials/payInstructions/forms/yearToDate/ShppYtdPayInstruction.hbs
deleted file mode 100644
index 5ef9dd2..0000000
--- a/views/partials/payInstructions/forms/yearToDate/ShppYtdPayInstruction.hbs
+++ /dev/null
@@ -1,141 +0,0 @@
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/yearToDate/SmpYtdPayInstruction.hbs b/views/partials/payInstructions/forms/yearToDate/SmpYtdPayInstruction.hbs
deleted file mode 100644
index 1d4ac01..0000000
--- a/views/partials/payInstructions/forms/yearToDate/SmpYtdPayInstruction.hbs
+++ /dev/null
@@ -1,163 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/yearToDate/SppYtdPayInstruction.hbs b/views/partials/payInstructions/forms/yearToDate/SppYtdPayInstruction.hbs
deleted file mode 100644
index 3106907..0000000
--- a/views/partials/payInstructions/forms/yearToDate/SppYtdPayInstruction.hbs
+++ /dev/null
@@ -1,141 +0,0 @@
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/yearToDate/SspYtdPayInstruction.hbs b/views/partials/payInstructions/forms/yearToDate/SspYtdPayInstruction.hbs
deleted file mode 100644
index 204c3b8..0000000
--- a/views/partials/payInstructions/forms/yearToDate/SspYtdPayInstruction.hbs
+++ /dev/null
@@ -1,169 +0,0 @@
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/yearToDate/StudentLoanYtdPayInstruction.hbs b/views/partials/payInstructions/forms/yearToDate/StudentLoanYtdPayInstruction.hbs
deleted file mode 100644
index ce8cb8a..0000000
--- a/views/partials/payInstructions/forms/yearToDate/StudentLoanYtdPayInstruction.hbs
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-
-
-
-
-
-
- The date the instruction will come into effect.
-
-
-
-
-
-
-
-
-
- The date the instruction will end, open ended instructions will run forever.
-
-
-
-
-
-
-
-
-
-
-
-
- {{#select StudentLoanCalculationMethod}}
-
- {{/select}}
-
-
-
-
-
-
-
-
-
-
- Indicates if the instruction is an adjustment. Pay lines
- generated from adjustment YTD instructions appear on the employee pay slip.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/forms/yearToDate/TaxYtdPayInstruction.hbs b/views/partials/payInstructions/forms/yearToDate/TaxYtdPayInstruction.hbs
deleted file mode 100644
index 51b1c03..0000000
--- a/views/partials/payInstructions/forms/yearToDate/TaxYtdPayInstruction.hbs
+++ /dev/null
@@ -1,131 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{#select TaxBasis}}
-
- {{/select}}
-
-
-
-
-
-
-
-
- Indicates if the instruction is an adjustment. Pay lines
- generated from adjustment YTD instructions appear on the employee pay slip.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/AoePayInstruction.hbs b/views/partials/payInstructions/lists/AoePayInstruction.hbs
deleted file mode 100644
index 6f7bcd8..0000000
--- a/views/partials/payInstructions/lists/AoePayInstruction.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- | Id |
- Case Number |
- Type |
- Start Date |
- End Date |
- Description |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{this.CaseNumber}}
- |
-
- {{this.Code}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
- {{this.Description}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/BenefitPayInstruction.hbs b/views/partials/payInstructions/lists/BenefitPayInstruction.hbs
deleted file mode 100644
index 1899e90..0000000
--- a/views/partials/payInstructions/lists/BenefitPayInstruction.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- | Id |
- Code |
- Total Cost |
- Employee Contribution |
- Start Date |
- End Date |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{this.Code}}
- |
-
- {{fixedDecimal this.TotalCost 2}}
- |
-
- {{fixedDecimal this.EmployeeContribution 2}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/NiAdjustmentPayInstruction.hbs b/views/partials/payInstructions/lists/NiAdjustmentPayInstruction.hbs
deleted file mode 100644
index 3503754..0000000
--- a/views/partials/payInstructions/lists/NiAdjustmentPayInstruction.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- | Id |
- Periods |
- NI Letter |
- Start Date |
- End Date |
- Description |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{this.Periods}}
- |
-
- {{this.NiLetter}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
- {{this.Description}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/NiPayInstruction.hbs b/views/partials/payInstructions/lists/NiPayInstruction.hbs
deleted file mode 100644
index 1b6eed5..0000000
--- a/views/partials/payInstructions/lists/NiPayInstruction.hbs
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
- | Id |
- NI Table |
- Start Date |
- End Date |
- Description |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{this.NiLetter}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
- {{this.Description}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/PensionPayInstruction.hbs b/views/partials/payInstructions/lists/PensionPayInstruction.hbs
deleted file mode 100644
index 011ea9d..0000000
--- a/views/partials/payInstructions/lists/PensionPayInstruction.hbs
+++ /dev/null
@@ -1,53 +0,0 @@
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/PrimitivePayInstruction.hbs b/views/partials/payInstructions/lists/PrimitivePayInstruction.hbs
deleted file mode 100644
index 088cdf6..0000000
--- a/views/partials/payInstructions/lists/PrimitivePayInstruction.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- | Id |
- Code |
- Value |
- Start Date |
- End Date |
- Description |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{this.Code}}
- |
-
- {{fixedDecimal this.Value 2}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
- {{this.Description}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/RatePayInstruction.hbs b/views/partials/payInstructions/lists/RatePayInstruction.hbs
deleted file mode 100644
index 0d1c211..0000000
--- a/views/partials/payInstructions/lists/RatePayInstruction.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- | Id |
- Rate |
- Units |
- Start Date |
- End Date |
- Description |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{fixedDecimal this.Rate 2}}
- |
-
- {{fixedDecimal this.Units 2}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
- {{this.Description}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/SalaryPayInstruction.hbs b/views/partials/payInstructions/lists/SalaryPayInstruction.hbs
deleted file mode 100644
index de181b2..0000000
--- a/views/partials/payInstructions/lists/SalaryPayInstruction.hbs
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
- | Id |
- Salary |
- Start Date |
- End Date |
- Description |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{formatSalary this.AnnualSalary}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
- {{this.Description}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/ShppPayInstruction.hbs b/views/partials/payInstructions/lists/ShppPayInstruction.hbs
deleted file mode 100644
index 26e5835..0000000
--- a/views/partials/payInstructions/lists/ShppPayInstruction.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- | Id |
- Due Date |
- Born Date |
- Absence Start |
- Absence End |
- Statutory Offset? |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{this.BabyDueDate}}
- |
-
- {{this.BabyBornDate}}
- |
-
- {{this.AbsenceStart}}
- |
-
- {{this.AbsenceEnd}}
- |
-
- {{this.StatutoryOffset}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/SspPayInstruction.hbs b/views/partials/payInstructions/lists/SspPayInstruction.hbs
deleted file mode 100644
index a1bb41f..0000000
--- a/views/partials/payInstructions/lists/SspPayInstruction.hbs
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
- | Id |
- Absence Start |
- Absence End |
- Statutory Offset? |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{this.AbsenceStart}}
- |
-
- {{this.AbsenceEnd}}
- |
-
- {{this.StatutoryOffset}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/StudentLoanPayInstruction.hbs b/views/partials/payInstructions/lists/StudentLoanPayInstruction.hbs
deleted file mode 100644
index fc5cc07..0000000
--- a/views/partials/payInstructions/lists/StudentLoanPayInstruction.hbs
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
- | Id |
- Calculation Method |
- Start Date |
- End Date |
- Description |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{this.StudentLoanCalculationMethod}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
- {{this.Description}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/TaxPayInstruction.hbs b/views/partials/payInstructions/lists/TaxPayInstruction.hbs
deleted file mode 100644
index 70e8b09..0000000
--- a/views/partials/payInstructions/lists/TaxPayInstruction.hbs
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
- | Id |
- Tax code |
- Start Date |
- End Date |
- Description |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{this.TaxCode}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
- {{this.Description}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/yearToDate/NiYtdPayInstruction.hbs b/views/partials/payInstructions/lists/yearToDate/NiYtdPayInstruction.hbs
deleted file mode 100644
index 4e2dad0..0000000
--- a/views/partials/payInstructions/lists/yearToDate/NiYtdPayInstruction.hbs
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
- | Id |
- Value |
- Employer NI |
- Niable Pay |
- NI Letter |
- Start Date |
- End Date |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{formatSalary this.Value}}
- |
-
- {{formatSalary this.EmployerNI}}
- |
-
- {{formatSalary this.NiablePay}}
- |
-
- {{this.NiLetter}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/yearToDate/PensionYtdPayInstruction.hbs b/views/partials/payInstructions/lists/yearToDate/PensionYtdPayInstruction.hbs
deleted file mode 100644
index 16edd91..0000000
--- a/views/partials/payInstructions/lists/yearToDate/PensionYtdPayInstruction.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- | Id |
- Pensionable Pay |
- Employer Contribution |
- Code |
- Start Date |
- End Date |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{formatSalary this.PensionablePay}}
- |
-
- {{formatSalary this.EmployerContribution}}
- |
-
- {{this.Code}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/yearToDate/PrimitiveYtdPayInstruction.hbs b/views/partials/payInstructions/lists/yearToDate/PrimitiveYtdPayInstruction.hbs
deleted file mode 100644
index 8826d6b..0000000
--- a/views/partials/payInstructions/lists/yearToDate/PrimitiveYtdPayInstruction.hbs
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
- | Id |
- Value |
- Start Date |
- End Date |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{formatSalary this.Value}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/yearToDate/SapYtdPayInstruction.hbs b/views/partials/payInstructions/lists/yearToDate/SapYtdPayInstruction.hbs
deleted file mode 100644
index 6fb50dc..0000000
--- a/views/partials/payInstructions/lists/yearToDate/SapYtdPayInstruction.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- | Id |
- Value |
- Absence Start |
- Absence End |
- Start Date |
- End Date |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{formatSalary this.Value}}
- |
-
- {{this.AbsenceStart}}
- |
-
- {{this.AbsenceEnd}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/yearToDate/ShppYtdPayInstruction.hbs b/views/partials/payInstructions/lists/yearToDate/ShppYtdPayInstruction.hbs
deleted file mode 100644
index 5941099..0000000
--- a/views/partials/payInstructions/lists/yearToDate/ShppYtdPayInstruction.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- | Id |
- Value |
- Absence Start |
- Absence End |
- Start Date |
- End Date |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{formatSalary this.Value}}
- |
-
- {{this.AbsenceStart}}
- |
-
- {{this.AbsenceEnd}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/yearToDate/SmpYtdPayInstruction.hbs b/views/partials/payInstructions/lists/yearToDate/SmpYtdPayInstruction.hbs
deleted file mode 100644
index 802b269..0000000
--- a/views/partials/payInstructions/lists/yearToDate/SmpYtdPayInstruction.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- | Id |
- Value |
- Absence Start |
- Absence End |
- Start Date |
- End Date |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{formatSalary this.Value}}
- |
-
- {{this.AbsenceStart}}
- |
-
- {{this.AbsenceEnd}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/yearToDate/SppYtdPayInstruction.hbs b/views/partials/payInstructions/lists/yearToDate/SppYtdPayInstruction.hbs
deleted file mode 100644
index 7c4a15c..0000000
--- a/views/partials/payInstructions/lists/yearToDate/SppYtdPayInstruction.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- | Id |
- Value |
- Absence Start |
- Absence End |
- Start Date |
- End Date |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{formatSalary this.Value}}
- |
-
- {{this.AbsenceStart}}
- |
-
- {{this.AbsenceEnd}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/yearToDate/SspYtdPayInstruction.hbs b/views/partials/payInstructions/lists/yearToDate/SspYtdPayInstruction.hbs
deleted file mode 100644
index c48138c..0000000
--- a/views/partials/payInstructions/lists/yearToDate/SspYtdPayInstruction.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- | Id |
- Value |
- Absence Start |
- Absence End |
- Start Date |
- End Date |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{formatSalary this.Value}}
- |
-
- {{this.AbsenceStart}}
- |
-
- {{this.AbsenceEnd}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/yearToDate/StudentLoanYtdPayInstruction.hbs b/views/partials/payInstructions/lists/yearToDate/StudentLoanYtdPayInstruction.hbs
deleted file mode 100644
index 06b573f..0000000
--- a/views/partials/payInstructions/lists/yearToDate/StudentLoanYtdPayInstruction.hbs
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
- | Id |
- Value |
- Calculation Method |
- Start Date |
- End Date |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{formatSalary this.Value}}
- |
-
- {{this.StudentLoanCalculationMethod}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payInstructions/lists/yearToDate/TaxYtdPayInstruction.hbs b/views/partials/payInstructions/lists/yearToDate/TaxYtdPayInstruction.hbs
deleted file mode 100644
index ca846c3..0000000
--- a/views/partials/payInstructions/lists/yearToDate/TaxYtdPayInstruction.hbs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- | Id |
- Value |
- Taxable Pay |
- Tax Code |
- Start Date |
- End Date |
- |
-
-
-
- {{#each Instructions}}
-
- |
-
- {{this.Id}}
-
- |
-
- {{formatSalary this.Value}}
- |
-
- {{formatSalary this.TaxablePay}}
- |
-
- {{this.TaxCode}}
- |
-
- {{this.StartDate}}
- |
-
- {{this.EndDate}}
- |
-
-
- |
-
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/partials/payScheduleDropdown.hbs b/views/partials/payScheduleDropdown.hbs
deleted file mode 100644
index 595fe37..0000000
--- a/views/partials/payScheduleDropdown.hbs
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/views/partials/ruleExclusions.hbs b/views/partials/ruleExclusions.hbs
deleted file mode 100644
index afbfb17..0000000
--- a/views/partials/ruleExclusions.hbs
+++ /dev/null
@@ -1,27 +0,0 @@
-
\ No newline at end of file
diff --git a/views/partials/status.hbs b/views/partials/status.hbs
deleted file mode 100644
index bdcfc4f..0000000
--- a/views/partials/status.hbs
+++ /dev/null
@@ -1,7 +0,0 @@
-
- {{Status.Message}}
-
-
-
\ No newline at end of file
diff --git a/views/partials/validationErrors.hbs b/views/partials/validationErrors.hbs
deleted file mode 100644
index 5382d63..0000000
--- a/views/partials/validationErrors.hbs
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
- Please fix the below errors:
-
-
-
-
- {{#each errors}}
- - {{this}}
- {{/each}}
-
-
\ No newline at end of file
diff --git a/views/pay-instruction.hbs b/views/pay-instruction.hbs
deleted file mode 100644
index fe151ba..0000000
--- a/views/pay-instruction.hbs
+++ /dev/null
@@ -1,27 +0,0 @@
-{{#if Id}}
-
-
-
\ No newline at end of file
diff --git a/views/pay-run-creation.hbs b/views/pay-run-creation.hbs
deleted file mode 100644
index f485d92..0000000
--- a/views/pay-run-creation.hbs
+++ /dev/null
@@ -1,68 +0,0 @@
-
\ No newline at end of file
diff --git a/views/pay-run.hbs b/views/pay-run.hbs
deleted file mode 100644
index 952437a..0000000
--- a/views/pay-run.hbs
+++ /dev/null
@@ -1,118 +0,0 @@
-{{>breadcrumbs}}
-
-
-
-
-
-
- Pay Schedule
-
-
-
- {{PaySchedule.Name}}
-
-
-
-
-
- Pay Frequency
-
-
-
- {{PaySchedule.PayFrequency}}
-
-
-
-
-
-
-
- Payment Date
-
-
-
- {{PaymentDate}}
-
-
-
-
-
- Tax Year / Period
-
-
-
- {{TaxYear}}/{{TaxPeriod}}
-
-
-
-
-
-
-
- Period start
-
-
-
- {{PeriodStart}}
-
-
-
-
-
- Period end
-
-
-
- {{PeriodEnd}}
-
-
-
-
-
-
-
- {{#if Employees}}
-
Employees
-
-
-
-
- | Name |
- Payments |
- Tax |
- EE NI |
- ER NI |
- Other Deducs |
- Net Pay |
- |
-
-
-
- {{#each Employees}}
-
- |
- {{Name}}
- |
- {{PAYMENTS}} |
- {{TAX}} |
- {{EE_NI}} |
- {{ER_NI}} |
- {{OTHERDEDNS}} |
- {{NETPAY}} |
-
- Payslip
- |
- {{#if Commentary}}
- Commentary
- {{/if}}
- |
-
- {{/each}}
-
-
- {{/if}}
-
-
-
\ No newline at end of file
diff --git a/views/pay-schedule.hbs b/views/pay-schedule.hbs
deleted file mode 100644
index fffaafb..0000000
--- a/views/pay-schedule.hbs
+++ /dev/null
@@ -1,42 +0,0 @@
-{{#if Id}}
-
\ No newline at end of file
diff --git a/views/pension.hbs b/views/pension.hbs
deleted file mode 100644
index cf6310b..0000000
--- a/views/pension.hbs
+++ /dev/null
@@ -1,314 +0,0 @@
-{{#if Id}}
-
-
-