create work order from lot occupancy
parent
9de9247f34
commit
727346777d
|
|
@ -1,4 +1,4 @@
|
|||
import { getLotOccupantTypes, getLotStatuses, getLotTypes, getOccupancyTypes } from "../../helpers/functions.cache.js";
|
||||
import { getLotOccupantTypes, getLotStatuses, getLotTypes, getOccupancyTypes, getWorkOrderTypes } from "../../helpers/functions.cache.js";
|
||||
import * as configFunctions from "../../helpers/functions.config.js";
|
||||
import { getLotOccupancy } from "../../helpers/lotOccupancyDB/getLotOccupancy.js";
|
||||
import { getMaps } from "../../helpers/lotOccupancyDB/getMaps.js";
|
||||
|
|
@ -13,6 +13,7 @@ export const handler = (request, response) => {
|
|||
const lotTypes = getLotTypes();
|
||||
const lotStatuses = getLotStatuses();
|
||||
const maps = getMaps();
|
||||
const workOrderTypes = getWorkOrderTypes();
|
||||
return response.render("lotOccupancy-edit", {
|
||||
headTitle: configFunctions.getProperty("aliases.lot") +
|
||||
" " +
|
||||
|
|
@ -24,6 +25,7 @@ export const handler = (request, response) => {
|
|||
lotTypes,
|
||||
lotStatuses,
|
||||
maps,
|
||||
workOrderTypes,
|
||||
isCreate: false
|
||||
});
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@ import {
|
|||
getLotOccupantTypes,
|
||||
getLotStatuses,
|
||||
getLotTypes,
|
||||
getOccupancyTypes
|
||||
getOccupancyTypes,
|
||||
getWorkOrderTypes
|
||||
} from "../../helpers/functions.cache.js";
|
||||
|
||||
import * as configFunctions from "../../helpers/functions.config.js";
|
||||
|
|
@ -27,6 +28,7 @@ export const handler: RequestHandler = (request, response) => {
|
|||
const lotTypes = getLotTypes();
|
||||
const lotStatuses = getLotStatuses();
|
||||
const maps = getMaps();
|
||||
const workOrderTypes = getWorkOrderTypes();
|
||||
|
||||
return response.render("lotOccupancy-edit", {
|
||||
headTitle:
|
||||
|
|
@ -41,6 +43,7 @@ export const handler: RequestHandler = (request, response) => {
|
|||
lotTypes,
|
||||
lotStatuses,
|
||||
maps,
|
||||
workOrderTypes,
|
||||
|
||||
isCreate: false
|
||||
});
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ interface AddWorkOrderForm {
|
|||
workOrderDescription: string;
|
||||
workOrderOpenDateString?: string;
|
||||
workOrderCloseDateString?: string;
|
||||
lotOccupancyId?: string;
|
||||
}
|
||||
export declare const addWorkOrder: (workOrderForm: AddWorkOrderForm, requestSession: recordTypes.PartialSession) => number;
|
||||
export default addWorkOrder;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import sqlite from "better-sqlite3";
|
|||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { getNextWorkOrderNumber } from "./getNextWorkOrderNumber.js";
|
||||
import { dateStringToInteger, dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import addWorkOrderLotOccupancy from "./addWorkOrderLotOccupancy.js";
|
||||
export const addWorkOrder = (workOrderForm, requestSession) => {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNow = new Date();
|
||||
|
|
@ -21,7 +22,14 @@ export const addWorkOrder = (workOrderForm, requestSession) => {
|
|||
: dateToInteger(rightNow), workOrderForm.workOrderCloseDateString
|
||||
? dateStringToInteger(workOrderForm.workOrderCloseDateString)
|
||||
: undefined, requestSession.user.userName, rightNow.getTime(), requestSession.user.userName, rightNow.getTime());
|
||||
const workOrderId = result.lastInsertRowid;
|
||||
if (workOrderForm.lotOccupancyId) {
|
||||
addWorkOrderLotOccupancy({
|
||||
workOrderId,
|
||||
lotOccupancyId: workOrderForm.lotOccupancyId
|
||||
}, requestSession, database);
|
||||
}
|
||||
database.close();
|
||||
return result.lastInsertRowid;
|
||||
return workOrderId;
|
||||
};
|
||||
export default addWorkOrder;
|
||||
|
|
|
|||
|
|
@ -4,12 +4,10 @@ import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
|||
|
||||
import { getNextWorkOrderNumber } from "./getNextWorkOrderNumber.js";
|
||||
|
||||
import {
|
||||
dateStringToInteger,
|
||||
dateToInteger
|
||||
} from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import { dateStringToInteger, dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import addWorkOrderLotOccupancy from "./addWorkOrderLotOccupancy.js";
|
||||
|
||||
interface AddWorkOrderForm {
|
||||
workOrderTypeId: number | string;
|
||||
|
|
@ -17,6 +15,7 @@ interface AddWorkOrderForm {
|
|||
workOrderDescription: string;
|
||||
workOrderOpenDateString?: string;
|
||||
workOrderCloseDateString?: string;
|
||||
lotOccupancyId?: string;
|
||||
}
|
||||
|
||||
export const addWorkOrder = (
|
||||
|
|
@ -58,9 +57,22 @@ export const addWorkOrder = (
|
|||
rightNow.getTime()
|
||||
);
|
||||
|
||||
const workOrderId = result.lastInsertRowid as number;
|
||||
|
||||
if (workOrderForm.lotOccupancyId) {
|
||||
addWorkOrderLotOccupancy(
|
||||
{
|
||||
workOrderId,
|
||||
lotOccupancyId: workOrderForm.lotOccupancyId
|
||||
},
|
||||
requestSession,
|
||||
database
|
||||
);
|
||||
}
|
||||
|
||||
database.close();
|
||||
|
||||
return result.lastInsertRowid as number;
|
||||
return workOrderId;
|
||||
};
|
||||
|
||||
export default addWorkOrder;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
interface AddWorkOrderLotOccupancyForm {
|
||||
workOrderId: number | string;
|
||||
lotOccupancyId: number | string;
|
||||
}
|
||||
export declare const addWorkOrderLotOccupancy: (workOrderLotOccupancyForm: AddWorkOrderLotOccupancyForm, requestSession: recordTypes.PartialSession) => boolean;
|
||||
export declare const addWorkOrderLotOccupancy: (workOrderLotOccupancyForm: AddWorkOrderLotOccupancyForm, requestSession: recordTypes.PartialSession, connectedDatabase?: sqlite.Database) => boolean;
|
||||
export default addWorkOrderLotOccupancy;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
export const addWorkOrderLotOccupancy = (workOrderLotOccupancyForm, requestSession) => {
|
||||
const database = sqlite(databasePath);
|
||||
export const addWorkOrderLotOccupancy = (workOrderLotOccupancyForm, requestSession, connectedDatabase) => {
|
||||
const database = connectedDatabase || sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
const row = database
|
||||
.prepare("select recordDelete_timeMillis" +
|
||||
|
|
@ -33,7 +33,9 @@ export const addWorkOrderLotOccupancy = (workOrderLotOccupancyForm, requestSessi
|
|||
" values (?, ?, ?, ?, ?, ?)")
|
||||
.run(workOrderLotOccupancyForm.workOrderId, workOrderLotOccupancyForm.lotOccupancyId, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis);
|
||||
}
|
||||
database.close();
|
||||
if (!connectedDatabase) {
|
||||
database.close();
|
||||
}
|
||||
return true;
|
||||
};
|
||||
export default addWorkOrderLotOccupancy;
|
||||
|
|
|
|||
|
|
@ -11,9 +11,10 @@ interface AddWorkOrderLotOccupancyForm {
|
|||
|
||||
export const addWorkOrderLotOccupancy = (
|
||||
workOrderLotOccupancyForm: AddWorkOrderLotOccupancyForm,
|
||||
requestSession: recordTypes.PartialSession
|
||||
requestSession: recordTypes.PartialSession,
|
||||
connectedDatabase?: sqlite.Database
|
||||
): boolean => {
|
||||
const database = sqlite(databasePath);
|
||||
const database = connectedDatabase || sqlite(databasePath);
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
|
||||
|
|
@ -68,7 +69,9 @@ export const addWorkOrderLotOccupancy = (
|
|||
);
|
||||
}
|
||||
|
||||
database.close();
|
||||
if (!connectedDatabase) {
|
||||
database.close();
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
(() => {
|
||||
var _a, _b, _c;
|
||||
const los = exports.los;
|
||||
const lotOccupancyId = document.querySelector("#lotOccupancy--lotOccupancyId").value;
|
||||
const isCreate = lotOccupancyId === "";
|
||||
|
|
@ -75,7 +76,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
});
|
||||
};
|
||||
document.querySelector("#button--copyLotOccupancy").addEventListener("click", (clickEvent) => {
|
||||
(_a = document
|
||||
.querySelector("#button--copyLotOccupancy")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", (clickEvent) => {
|
||||
clickEvent.preventDefault();
|
||||
if (hasUnsavedChanges) {
|
||||
bulmaJS.alert({
|
||||
|
|
@ -96,7 +98,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
});
|
||||
}
|
||||
});
|
||||
document.querySelector("#button--deleteLotOccupancy").addEventListener("click", (clickEvent) => {
|
||||
(_b = document
|
||||
.querySelector("#button--deleteLotOccupancy")) === null || _b === void 0 ? void 0 : _b.addEventListener("click", (clickEvent) => {
|
||||
clickEvent.preventDefault();
|
||||
const doDelete = () => {
|
||||
cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancy", {
|
||||
|
|
@ -126,6 +129,55 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
});
|
||||
});
|
||||
(_c = document
|
||||
.querySelector("#button--createWorkOrder")) === null || _c === void 0 ? void 0 : _c.addEventListener("click", (clickEvent) => {
|
||||
clickEvent.preventDefault();
|
||||
let createCloseModalFunction;
|
||||
const doCreate = (formEvent) => {
|
||||
formEvent.preventDefault();
|
||||
cityssm.postJSON(los.urlPrefix + "/workOrders/doCreateWorkOrder", formEvent.currentTarget, (responseJSON) => {
|
||||
if (responseJSON.success) {
|
||||
createCloseModalFunction();
|
||||
bulmaJS.confirm({
|
||||
title: "Work Order Created Successfully",
|
||||
message: "Would you like to open the work order now?",
|
||||
contextualColorName: "success",
|
||||
okButton: {
|
||||
text: "Yes, Open the Work Order",
|
||||
callbackFunction: () => {
|
||||
window.location.href = los.urlPrefix + "/workOrders/" + responseJSON.workOrderId + "/edit";
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
bulmaJS.alert({
|
||||
title: "Error Creating Work Order",
|
||||
message: responseJSON.errorMessage,
|
||||
contextualColorName: "danger"
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
cityssm.openHtmlModal("lotOccupancy-createWorkOrder", {
|
||||
onshow: (modalElement) => {
|
||||
modalElement.querySelector("#workOrderCreate--lotOccupancyId").value = lotOccupancyId;
|
||||
modalElement.querySelector("#workOrderCreate--workOrderOpenDateString").value = cityssm.dateToString(new Date());
|
||||
const workOrderTypeSelectElement = modalElement.querySelector("#workOrderCreate--workOrderTypeId");
|
||||
for (const workOrderType of exports.workOrderTypes) {
|
||||
const optionElement = document.createElement("option");
|
||||
optionElement.value = workOrderType.workOrderTypeId.toString();
|
||||
optionElement.textContent = workOrderType.workOrderType;
|
||||
workOrderTypeSelectElement.append(optionElement);
|
||||
}
|
||||
},
|
||||
onshown: (modalElement, closeModalFunction) => {
|
||||
var _a;
|
||||
createCloseModalFunction = closeModalFunction;
|
||||
(_a = modalElement.querySelector("form")) === null || _a === void 0 ? void 0 : _a.addEventListener("submit", doCreate);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
const occupancyTypeIdElement = document.querySelector("#lotOccupancy--occupancyTypeId");
|
||||
if (isCreate) {
|
||||
|
|
|
|||
|
|
@ -86,7 +86,6 @@ declare const bulmaJS: BulmaJS;
|
|||
}
|
||||
|
||||
if (!isCreate) {
|
||||
|
||||
const doCopy = () => {
|
||||
cityssm.postJSON(
|
||||
los.urlPrefix + "/lotOccupancies/doCopyLotOccupancy",
|
||||
|
|
@ -116,12 +115,11 @@ declare const bulmaJS: BulmaJS;
|
|||
);
|
||||
};
|
||||
|
||||
(document.querySelector("#button--copyLotOccupancy") as HTMLAnchorElement).addEventListener(
|
||||
"click",
|
||||
(clickEvent) => {
|
||||
document
|
||||
.querySelector("#button--copyLotOccupancy")
|
||||
?.addEventListener("click", (clickEvent) => {
|
||||
clickEvent.preventDefault();
|
||||
|
||||
|
||||
if (hasUnsavedChanges) {
|
||||
bulmaJS.alert({
|
||||
title: "Unsaved Changes",
|
||||
|
|
@ -139,46 +137,115 @@ declare const bulmaJS: BulmaJS;
|
|||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
(
|
||||
document.querySelector("#button--deleteLotOccupancy") as HTMLAnchorElement
|
||||
).addEventListener("click", (clickEvent) => {
|
||||
clickEvent.preventDefault();
|
||||
document
|
||||
.querySelector("#button--deleteLotOccupancy")
|
||||
?.addEventListener("click", (clickEvent) => {
|
||||
clickEvent.preventDefault();
|
||||
|
||||
const doDelete = () => {
|
||||
cityssm.postJSON(
|
||||
los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancy",
|
||||
{
|
||||
lotOccupancyId
|
||||
},
|
||||
(responseJSON: { success: boolean; errorMessage?: string }) => {
|
||||
if (responseJSON.success) {
|
||||
cityssm.disableNavBlocker();
|
||||
window.location.href =
|
||||
los.urlPrefix + "/lotOccupancies?t=" + Date.now();
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
title: "Error Deleting Record",
|
||||
message: responseJSON.errorMessage || "",
|
||||
contextualColorName: "danger"
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
bulmaJS.confirm({
|
||||
title: "Delete " + exports.aliases.occupancy + " Record",
|
||||
message: "Are you sure you want to delete this record?",
|
||||
contextualColorName: "warning",
|
||||
okButton: {
|
||||
text: "Yes, Delete",
|
||||
callbackFunction: doDelete
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
document
|
||||
.querySelector("#button--createWorkOrder")
|
||||
?.addEventListener("click", (clickEvent) => {
|
||||
clickEvent.preventDefault();
|
||||
|
||||
let createCloseModalFunction: () => void;
|
||||
|
||||
const doCreate = (formEvent: SubmitEvent) => {
|
||||
|
||||
formEvent.preventDefault();
|
||||
|
||||
cityssm.postJSON(los.urlPrefix + "/workOrders/doCreateWorkOrder",
|
||||
formEvent.currentTarget,
|
||||
(responseJSON: {success: boolean; errorMessage?: string; workOrderId?: number}) => {
|
||||
|
||||
const doDelete = () => {
|
||||
cityssm.postJSON(
|
||||
los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancy",
|
||||
{
|
||||
lotOccupancyId
|
||||
},
|
||||
(responseJSON: { success: boolean; errorMessage?: string }) => {
|
||||
if (responseJSON.success) {
|
||||
cityssm.disableNavBlocker();
|
||||
window.location.href =
|
||||
los.urlPrefix + "/lotOccupancies?t=" + Date.now();
|
||||
createCloseModalFunction();
|
||||
|
||||
bulmaJS.confirm({
|
||||
title: "Work Order Created Successfully",
|
||||
message: "Would you like to open the work order now?",
|
||||
contextualColorName: "success",
|
||||
okButton: {
|
||||
text: "Yes, Open the Work Order",
|
||||
callbackFunction: () => {
|
||||
window.location.href = los.urlPrefix + "/workOrders/" + responseJSON.workOrderId + "/edit";
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
title: "Error Deleting Record",
|
||||
message: responseJSON.errorMessage || "",
|
||||
title: "Error Creating Work Order",
|
||||
message: responseJSON.errorMessage as string,
|
||||
contextualColorName: "danger"
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
bulmaJS.confirm({
|
||||
title: "Delete " + exports.aliases.occupancy + " Record",
|
||||
message: "Are you sure you want to delete this record?",
|
||||
contextualColorName: "warning",
|
||||
okButton: {
|
||||
text: "Yes, Delete",
|
||||
callbackFunction: doDelete
|
||||
}
|
||||
cityssm.openHtmlModal("lotOccupancy-createWorkOrder", {
|
||||
onshow: (modalElement) => {
|
||||
(
|
||||
modalElement.querySelector(
|
||||
"#workOrderCreate--lotOccupancyId"
|
||||
) as HTMLInputElement
|
||||
).value = lotOccupancyId;
|
||||
|
||||
(
|
||||
modalElement.querySelector(
|
||||
"#workOrderCreate--workOrderOpenDateString"
|
||||
) as HTMLInputElement
|
||||
).value = cityssm.dateToString(new Date());
|
||||
|
||||
const workOrderTypeSelectElement = modalElement.querySelector("#workOrderCreate--workOrderTypeId") as HTMLSelectElement;
|
||||
|
||||
for (const workOrderType of (exports.workOrderTypes as recordTypes.WorkOrderType[])) {
|
||||
const optionElement = document.createElement("option");
|
||||
optionElement.value = (workOrderType.workOrderTypeId as number).toString();
|
||||
optionElement.textContent = workOrderType.workOrderType as string;
|
||||
workOrderTypeSelectElement.append(optionElement);
|
||||
}
|
||||
},
|
||||
onshown: (modalElement, closeModalFunction) => {
|
||||
createCloseModalFunction = closeModalFunction;
|
||||
|
||||
modalElement.querySelector("form")?.addEventListener("submit", doCreate);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Occupancy Type
|
||||
|
|
|
|||
|
|
@ -0,0 +1,52 @@
|
|||
<div class="modal" role="dialog">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-card">
|
||||
<header class="modal-card-head">
|
||||
<h3 class="modal-card-title">
|
||||
Create a New Work Order
|
||||
</h3>
|
||||
<button class="delete is-close-modal-button" aria-label="close" type="button"></button>
|
||||
</header>
|
||||
<section class="modal-card-body">
|
||||
<form id="form--workOrderCreate">
|
||||
<input id="workOrderCreate--lotOccupancyId" name="lotOccupancyId" type="hidden" value="" />
|
||||
<input id="workOrderCreate--workOrderOpenDateString" name="workOrderOpenDateString" type="hidden" value="" />
|
||||
<label class="label" for="workOrderCreate--workOrderNumber">Work Order Number</label>
|
||||
<div class="field has-addons">
|
||||
<div class="control is-expanded">
|
||||
<input class="input" id="workOrderCreate--workOrderNumber" name="workOrderNumber" maxlength="50" readonly />
|
||||
</div>
|
||||
<div class="control">
|
||||
<button class="button is-unlock-field-button" data-tooltip="Unlock Field" type="button" aria-label="Unlock Field">
|
||||
<i class="fas fa-unlock" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<p class="help mb-2">Leave work order number blank to autopopulate.</p>
|
||||
<div class="field">
|
||||
<label class="label" for="workOrderCreate--workOrderTypeId">Work Order Type</label>
|
||||
<div class="control">
|
||||
<div class="select is-fullwidth">
|
||||
<select id="workOrderCreate--workOrderTypeId" name="workOrderTypeId" required>
|
||||
<option value="">(Select Type)</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="workOrderCreate--workOrderDescription">Description</label>
|
||||
<div class="control">
|
||||
<textarea class="textarea" id="workOrderCreate--workOrderDescription" name="workOrderDescription" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
<footer class="modal-card-foot justify-right">
|
||||
<button class="button is-success" type="submit" form="form--workOrderCreate">
|
||||
<span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span>
|
||||
<span>Create Work Order</span>
|
||||
</button>
|
||||
<button class="button is-close-modal-button" type="button">Cancel</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -282,6 +282,11 @@
|
|||
</div>
|
||||
<div class="dropdown-menu">
|
||||
<div class="dropdown-content">
|
||||
<a class="dropdown-item" id="button--createWorkOrder" href="#">
|
||||
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
|
||||
<span>Create a Work Order</span>
|
||||
</a>
|
||||
<hr class="dropdown-divider" />
|
||||
<a class="dropdown-item" id="button--copyLotOccupancy" href="#">
|
||||
<span class="icon is-small"><i class="far fa-copy" aria-hidden="true"></i></span>
|
||||
<span>Copy <%= configFunctions.getProperty("aliases.occupancy") %> Record as New</span>
|
||||
|
|
@ -406,6 +411,8 @@
|
|||
exports.lotOccupancyComments = <%- JSON.stringify(lotOccupancy.lotOccupancyComments) %>;
|
||||
exports.lotOccupancyFees = <%- JSON.stringify(lotOccupancy.lotOccupancyFees) %>;
|
||||
exports.lotOccupancyTransactions = <%- JSON.stringify(lotOccupancy.lotOccupancyTransactions) %>;
|
||||
|
||||
exports.workOrderTypes = <%- JSON.stringify(workOrderTypes) %>;
|
||||
<% } %>
|
||||
|
||||
<% if (configFunctions.getProperty("settings.lot.lotNamePattern")) { %>
|
||||
|
|
|
|||
Loading…
Reference in New Issue