update legacy import
parent
3374ec61a4
commit
1113b64025
|
|
@ -5,8 +5,8 @@ import { addOccupancyType } from "./lotOccupancyDB/addOccupancyType.js";
|
||||||
import { addOccupancyTypeField } from "./lotOccupancyDB/addOccupancyTypeField.js";
|
import { addOccupancyTypeField } from "./lotOccupancyDB/addOccupancyTypeField.js";
|
||||||
import { addLotStatus } from "./lotOccupancyDB/addLotStatus.js";
|
import { addLotStatus } from "./lotOccupancyDB/addLotStatus.js";
|
||||||
import { addLotOccupantType } from "./lotOccupancyDB/addLotOccupantType.js";
|
import { addLotOccupantType } from "./lotOccupancyDB/addLotOccupantType.js";
|
||||||
|
import { addFeeCategory } from "./lotOccupancyDB/addFeeCategory.js";
|
||||||
import Debug from "debug";
|
import Debug from "debug";
|
||||||
import addFeeCategory from "./lotOccupancyDB/addFeeCategory.js";
|
|
||||||
const debug = Debug("lot-occupancy-system:initialize");
|
const debug = Debug("lot-occupancy-system:initialize");
|
||||||
const session = {
|
const session = {
|
||||||
user: {
|
user: {
|
||||||
|
|
@ -70,6 +70,10 @@ const initializeCemeteryDatabase = () => {
|
||||||
lotOccupantType: "Preneed Owner",
|
lotOccupantType: "Preneed Owner",
|
||||||
orderNumber: 2
|
orderNumber: 2
|
||||||
}, session);
|
}, session);
|
||||||
|
addLotOccupantType({
|
||||||
|
lotOccupantType: "Arranger",
|
||||||
|
orderNumber: 3
|
||||||
|
}, session);
|
||||||
addOccupancyType({
|
addOccupancyType({
|
||||||
occupancyType: "Preneed",
|
occupancyType: "Preneed",
|
||||||
orderNumber: 1
|
orderNumber: 1
|
||||||
|
|
|
||||||
|
|
@ -26,12 +26,15 @@ import {
|
||||||
addLotOccupantType
|
addLotOccupantType
|
||||||
} from "./lotOccupancyDB/addLotOccupantType.js";
|
} from "./lotOccupancyDB/addLotOccupantType.js";
|
||||||
|
|
||||||
|
import {
|
||||||
|
addFeeCategory
|
||||||
|
} from "./lotOccupancyDB/addFeeCategory.js";
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
PartialSession
|
PartialSession
|
||||||
} from "../types/recordTypes.js";
|
} from "../types/recordTypes.js";
|
||||||
|
|
||||||
import Debug from "debug";
|
import Debug from "debug";
|
||||||
import addFeeCategory from "./lotOccupancyDB/addFeeCategory.js";
|
|
||||||
const debug = Debug("lot-occupancy-system:initialize");
|
const debug = Debug("lot-occupancy-system:initialize");
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -131,6 +134,11 @@ const initializeCemeteryDatabase = () => {
|
||||||
orderNumber: 2
|
orderNumber: 2
|
||||||
}, session);
|
}, session);
|
||||||
|
|
||||||
|
addLotOccupantType({
|
||||||
|
lotOccupantType: "Arranger",
|
||||||
|
orderNumber: 3
|
||||||
|
}, session);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Occupancy Types
|
* Occupancy Types
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
import type * as recordTypes from "../../types/recordTypes";
|
import type * as recordTypes from "../../types/recordTypes";
|
||||||
interface AddLotOccupancyFeeForm {
|
interface AddLotOccupancyFeeForm {
|
||||||
lotOccupancyId: string;
|
lotOccupancyId: number | string;
|
||||||
feeId: string;
|
feeId: number | string;
|
||||||
quantity: number | string;
|
quantity: number | string;
|
||||||
|
feeAmount?: number | string;
|
||||||
|
taxAmount?: number | string;
|
||||||
}
|
}
|
||||||
export declare const addLotOccupancyFee: (lotOccupancyFeeForm: AddLotOccupancyFeeForm, requestSession: recordTypes.PartialSession) => boolean;
|
export declare const addLotOccupancyFee: (lotOccupancyFeeForm: AddLotOccupancyFeeForm, requestSession: recordTypes.PartialSession) => boolean;
|
||||||
export default addLotOccupancyFee;
|
export default addLotOccupancyFee;
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,18 @@ export const addLotOccupancyFee = (lotOccupancyFeeForm, requestSession) => {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const lotOccupancy = getLotOccupancy(lotOccupancyFeeForm.lotOccupancyId);
|
let feeAmount;
|
||||||
const fee = getFee(lotOccupancyFeeForm.feeId);
|
let taxAmount;
|
||||||
const feeAmount = calculateFeeAmount(fee, lotOccupancy);
|
if (lotOccupancyFeeForm.feeAmount) {
|
||||||
const taxAmount = calculateTaxAmount(fee, feeAmount);
|
feeAmount = typeof (lotOccupancyFeeForm.feeAmount) === "string" ? Number.parseFloat(lotOccupancyFeeForm.feeAmount) : feeAmount;
|
||||||
|
taxAmount = typeof (lotOccupancyFeeForm.taxAmount) === "string" ? Number.parseFloat(lotOccupancyFeeForm.taxAmount) : taxAmount;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const lotOccupancy = getLotOccupancy(lotOccupancyFeeForm.lotOccupancyId);
|
||||||
|
const fee = getFee(lotOccupancyFeeForm.feeId);
|
||||||
|
feeAmount = calculateFeeAmount(fee, lotOccupancy);
|
||||||
|
taxAmount = calculateTaxAmount(fee, feeAmount);
|
||||||
|
}
|
||||||
const rightNowMillis = Date.now();
|
const rightNowMillis = Date.now();
|
||||||
const result = database
|
const result = database
|
||||||
.prepare("insert into LotOccupancyFees (" +
|
.prepare("insert into LotOccupancyFees (" +
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,11 @@ import type * as recordTypes from "../../types/recordTypes";
|
||||||
|
|
||||||
|
|
||||||
interface AddLotOccupancyFeeForm {
|
interface AddLotOccupancyFeeForm {
|
||||||
lotOccupancyId: string;
|
lotOccupancyId: number | string;
|
||||||
feeId: string;
|
feeId: number | string;
|
||||||
quantity: number | string;
|
quantity: number | string;
|
||||||
|
feeAmount ? : number | string;
|
||||||
|
taxAmount ? : number | string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -35,7 +37,7 @@ export const addLotOccupancyFee =
|
||||||
// Check if record already exists
|
// Check if record already exists
|
||||||
|
|
||||||
const record: {
|
const record: {
|
||||||
recordDelete_timeMillis?: number
|
recordDelete_timeMillis ? : number
|
||||||
} = database.prepare("select recordDelete_timeMillis" +
|
} = database.prepare("select recordDelete_timeMillis" +
|
||||||
" from LotOccupancyFees" +
|
" from LotOccupancyFees" +
|
||||||
" where lotOccupancyId = ?" +
|
" where lotOccupancyId = ?" +
|
||||||
|
|
@ -58,11 +60,20 @@ export const addLotOccupancyFee =
|
||||||
|
|
||||||
// Create new record
|
// Create new record
|
||||||
|
|
||||||
const lotOccupancy = getLotOccupancy(lotOccupancyFeeForm.lotOccupancyId);
|
let feeAmount: number;
|
||||||
const fee = getFee(lotOccupancyFeeForm.feeId);
|
let taxAmount: number;
|
||||||
|
|
||||||
const feeAmount = calculateFeeAmount(fee, lotOccupancy);
|
if (lotOccupancyFeeForm.feeAmount) {
|
||||||
const taxAmount = calculateTaxAmount(fee, feeAmount);
|
feeAmount = typeof(lotOccupancyFeeForm.feeAmount) === "string" ? Number.parseFloat(lotOccupancyFeeForm.feeAmount) : feeAmount;
|
||||||
|
taxAmount = typeof(lotOccupancyFeeForm.taxAmount) === "string" ? Number.parseFloat(lotOccupancyFeeForm.taxAmount) : taxAmount;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
const lotOccupancy = getLotOccupancy(lotOccupancyFeeForm.lotOccupancyId);
|
||||||
|
const fee = getFee(lotOccupancyFeeForm.feeId);
|
||||||
|
|
||||||
|
feeAmount = calculateFeeAmount(fee, lotOccupancy);
|
||||||
|
taxAmount = calculateTaxAmount(fee, feeAmount);
|
||||||
|
}
|
||||||
|
|
||||||
const rightNowMillis = Date.now();
|
const rightNowMillis = Date.now();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ export const addLotOccupancyTransaction = (lotOccupancyTransactionForm, requestS
|
||||||
if (maxIndexResult) {
|
if (maxIndexResult) {
|
||||||
transactionIndex = maxIndexResult.transactionIndex + 1;
|
transactionIndex = maxIndexResult.transactionIndex + 1;
|
||||||
}
|
}
|
||||||
console.log("transactionIndex = " + transactionIndex);
|
|
||||||
const rightNow = new Date();
|
const rightNow = new Date();
|
||||||
const transactionDate = lotOccupancyTransactionForm.transactionDateString ?
|
const transactionDate = lotOccupancyTransactionForm.transactionDateString ?
|
||||||
dateStringToInteger(lotOccupancyTransactionForm.transactionDateString) :
|
dateStringToInteger(lotOccupancyTransactionForm.transactionDateString) :
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,6 @@ export const addLotOccupancyTransaction =
|
||||||
transactionIndex = maxIndexResult.transactionIndex + 1;
|
transactionIndex = maxIndexResult.transactionIndex + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("transactionIndex = " + transactionIndex);
|
|
||||||
|
|
||||||
const rightNow = new Date();
|
const rightNow = new Date();
|
||||||
|
|
||||||
const transactionDate = lotOccupancyTransactionForm.transactionDateString ?
|
const transactionDate = lotOccupancyTransactionForm.transactionDateString ?
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@ export const getFee = (feeId) => {
|
||||||
" f.feeName, f.feeDescription," +
|
" f.feeName, f.feeDescription," +
|
||||||
" f.occupancyTypeId, o.occupancyType," +
|
" f.occupancyTypeId, o.occupancyType," +
|
||||||
" f.lotTypeId, l.lotType," +
|
" f.lotTypeId, l.lotType," +
|
||||||
" f.feeAmount, f.feeFunction, f.taxAmount, f.taxPercentage," +
|
" ifnull(f.feeAmount, 0) as feeAmount, f.feeFunction," +
|
||||||
|
" f.taxAmount, f.taxPercentage," +
|
||||||
" f.includeQuantity, f.quantityUnit," +
|
" f.includeQuantity, f.quantityUnit," +
|
||||||
" f.isRequired" +
|
" f.isRequired" +
|
||||||
" from Fees f" +
|
" from Fees f" +
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,8 @@ export const getFee = (feeId: number | string): recordTypes.Fee => {
|
||||||
" f.feeName, f.feeDescription," +
|
" f.feeName, f.feeDescription," +
|
||||||
" f.occupancyTypeId, o.occupancyType," +
|
" f.occupancyTypeId, o.occupancyType," +
|
||||||
" f.lotTypeId, l.lotType," +
|
" f.lotTypeId, l.lotType," +
|
||||||
" f.feeAmount, f.feeFunction, f.taxAmount, f.taxPercentage," +
|
" ifnull(f.feeAmount, 0) as feeAmount, f.feeFunction," +
|
||||||
|
" f.taxAmount, f.taxPercentage," +
|
||||||
" f.includeQuantity, f.quantityUnit," +
|
" f.includeQuantity, f.quantityUnit," +
|
||||||
" f.isRequired" +
|
" f.isRequired" +
|
||||||
" from Fees f" +
|
" from Fees f" +
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,8 @@ export const getFeeCategories = (filters, options) => {
|
||||||
sql = "select f.feeId, f.feeName, f.feeDescription," +
|
sql = "select f.feeId, f.feeName, f.feeDescription," +
|
||||||
" f.occupancyTypeId, o.occupancyType," +
|
" f.occupancyTypeId, o.occupancyType," +
|
||||||
" f.lotTypeId, l.lotType," +
|
" f.lotTypeId, l.lotType," +
|
||||||
" f.feeAmount, f.feeFunction, f.taxAmount, f.taxPercentage," +
|
" ifnull(f.feeAmount, 0) as feeAmount, f.feeFunction," +
|
||||||
|
" f.taxAmount, f.taxPercentage," +
|
||||||
" f.includeQuantity, f.quantityUnit," +
|
" f.includeQuantity, f.quantityUnit," +
|
||||||
" f.isRequired" +
|
" f.isRequired" +
|
||||||
" from Fees f" +
|
" from Fees f" +
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,8 @@ export const getFeeCategories = (filters ? : GetFeeCategoriesFilters, options ?
|
||||||
sql = "select f.feeId, f.feeName, f.feeDescription," +
|
sql = "select f.feeId, f.feeName, f.feeDescription," +
|
||||||
" f.occupancyTypeId, o.occupancyType," +
|
" f.occupancyTypeId, o.occupancyType," +
|
||||||
" f.lotTypeId, l.lotType," +
|
" f.lotTypeId, l.lotType," +
|
||||||
" f.feeAmount, f.feeFunction, f.taxAmount, f.taxPercentage," +
|
" ifnull(f.feeAmount, 0) as feeAmount, f.feeFunction," +
|
||||||
|
" f.taxAmount, f.taxPercentage," +
|
||||||
" f.includeQuantity, f.quantityUnit," +
|
" f.includeQuantity, f.quantityUnit," +
|
||||||
" f.isRequired" +
|
" f.isRequired" +
|
||||||
" from Fees f" +
|
" from Fees f" +
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import type * as recordTypes from "../../types/recordTypes";
|
||||||
interface GetLotOccupanciesFilters {
|
interface GetLotOccupanciesFilters {
|
||||||
lotId?: number | string;
|
lotId?: number | string;
|
||||||
occupancyTime?: "" | "past" | "current" | "future";
|
occupancyTime?: "" | "past" | "current" | "future";
|
||||||
|
occupancyStartDateString?: string;
|
||||||
occupantName?: string;
|
occupantName?: string;
|
||||||
occupancyTypeId?: number | string;
|
occupancyTypeId?: number | string;
|
||||||
mapId?: number | string;
|
mapId?: number | string;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { dateIntegerToString, dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
import { dateIntegerToString, dateStringToInteger, dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||||
import sqlite from "better-sqlite3";
|
import sqlite from "better-sqlite3";
|
||||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||||
import { getLotOccupancyOccupants } from "./getLotOccupancyOccupants.js";
|
import { getLotOccupancyOccupants } from "./getLotOccupancyOccupants.js";
|
||||||
|
|
@ -48,6 +48,10 @@ export const getLotOccupancies = (filters, options, connectedDatabase) => {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (filters.occupancyStartDateString) {
|
||||||
|
sqlWhereClause += " and o.occupancyStartDate = ?";
|
||||||
|
sqlParameters.push(dateStringToInteger(filters.occupancyStartDateString));
|
||||||
|
}
|
||||||
if (filters.mapId) {
|
if (filters.mapId) {
|
||||||
sqlWhereClause += " and l.mapId = ?";
|
sqlWhereClause += " and l.mapId = ?";
|
||||||
sqlParameters.push(filters.mapId);
|
sqlParameters.push(filters.mapId);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import {
|
import {
|
||||||
dateIntegerToString,
|
dateIntegerToString,
|
||||||
|
dateStringToInteger,
|
||||||
dateToInteger
|
dateToInteger
|
||||||
} from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
} from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||||
|
|
||||||
|
|
@ -19,6 +20,7 @@ import type * as recordTypes from "../../types/recordTypes";
|
||||||
interface GetLotOccupanciesFilters {
|
interface GetLotOccupanciesFilters {
|
||||||
lotId ? : number | string;
|
lotId ? : number | string;
|
||||||
occupancyTime ? : "" | "past" | "current" | "future";
|
occupancyTime ? : "" | "past" | "current" | "future";
|
||||||
|
occupancyStartDateString?: string;
|
||||||
occupantName ? : string;
|
occupantName ? : string;
|
||||||
occupancyTypeId ? : number | string;
|
occupancyTypeId ? : number | string;
|
||||||
mapId ? : number | string;
|
mapId ? : number | string;
|
||||||
|
|
@ -100,6 +102,11 @@ export const getLotOccupancies = (filters: GetLotOccupanciesFilters,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (filters.occupancyStartDateString) {
|
||||||
|
sqlWhereClause += " and o.occupancyStartDate = ?";
|
||||||
|
sqlParameters.push(dateStringToInteger(filters.occupancyStartDateString));
|
||||||
|
}
|
||||||
|
|
||||||
if (filters.mapId) {
|
if (filters.mapId) {
|
||||||
sqlWhereClause += " and l.mapId = ?";
|
sqlWhereClause += " and l.mapId = ?";
|
||||||
sqlParameters.push(filters.mapId);
|
sqlParameters.push(filters.mapId);
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
"csurf": "^1.11.0",
|
"csurf": "^1.11.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"ejs": "^3.1.8",
|
"ejs": "^3.1.8",
|
||||||
"exit-hook": "^3.0.0",
|
"exit-hook": "^3.1.0",
|
||||||
"express": "^4.18.1",
|
"express": "^4.18.1",
|
||||||
"express-rate-limit": "^6.5.1",
|
"express-rate-limit": "^6.5.1",
|
||||||
"express-session": "^1.17.3",
|
"express-session": "^1.17.3",
|
||||||
|
|
@ -3701,9 +3701,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/exit-hook": {
|
"node_modules/exit-hook": {
|
||||||
"version": "3.0.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-3.1.0.tgz",
|
||||||
"integrity": "sha512-ElRvnoj3dvOc5WjnQx0CF66rS0xehV6eZdcmqZX17uOLPy3me43frl8UD73Frkx5Aq5kgziMDECjDJR2X1oBFQ==",
|
"integrity": "sha512-KiF9SiLZsKhSutx4V9sG2InYb0v1+2sfKlGD18et8/aGg2m4ij6MJbUHy/cnqJf4ncE7rWjqchE2SNIi4Lgg4A==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||||
},
|
},
|
||||||
|
|
@ -13529,9 +13529,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"exit-hook": {
|
"exit-hook": {
|
||||||
"version": "3.0.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-3.1.0.tgz",
|
||||||
"integrity": "sha512-ElRvnoj3dvOc5WjnQx0CF66rS0xehV6eZdcmqZX17uOLPy3me43frl8UD73Frkx5Aq5kgziMDECjDJR2X1oBFQ=="
|
"integrity": "sha512-KiF9SiLZsKhSutx4V9sG2InYb0v1+2sfKlGD18et8/aGg2m4ij6MJbUHy/cnqJf4ncE7rWjqchE2SNIi4Lgg4A=="
|
||||||
},
|
},
|
||||||
"expand-brackets": {
|
"expand-brackets": {
|
||||||
"version": "2.1.4",
|
"version": "2.1.4",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@
|
||||||
"csurf": "^1.11.0",
|
"csurf": "^1.11.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"ejs": "^3.1.8",
|
"ejs": "^3.1.8",
|
||||||
"exit-hook": "^3.0.0",
|
"exit-hook": "^3.1.0",
|
||||||
"express": "^4.18.1",
|
"express": "^4.18.1",
|
||||||
"express-rate-limit": "^6.5.1",
|
"express-rate-limit": "^6.5.1",
|
||||||
"express-session": "^1.17.3",
|
"express-session": "^1.17.3",
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,11 @@ import { addLotOccupancy } from "../helpers/lotOccupancyDB/addLotOccupancy.js";
|
||||||
import { addLotOccupancyOccupant } from "../helpers/lotOccupancyDB/addLotOccupancyOccupant.js";
|
import { addLotOccupancyOccupant } from "../helpers/lotOccupancyDB/addLotOccupancyOccupant.js";
|
||||||
import { addLotOccupancyComment } from "../helpers/lotOccupancyDB/addLotOccupancyComment.js";
|
import { addLotOccupancyComment } from "../helpers/lotOccupancyDB/addLotOccupancyComment.js";
|
||||||
import { addOrUpdateLotOccupancyField } from "../helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.js";
|
import { addOrUpdateLotOccupancyField } from "../helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.js";
|
||||||
|
import { getLot } from "../helpers/lotOccupancyDB/getLot.js";
|
||||||
|
import { getLots } from "../helpers/lotOccupancyDB/getLots.js";
|
||||||
|
import { getLotOccupancies } from "../helpers/lotOccupancyDB/getLotOccupancies.js";
|
||||||
|
import { addLotOccupancyFee } from "../helpers/lotOccupancyDB/addLotOccupancyFee.js";
|
||||||
|
import { addLotOccupancyTransaction } from "../helpers/lotOccupancyDB/addLotOccupancyTransaction.js";
|
||||||
const user = {
|
const user = {
|
||||||
user: {
|
user: {
|
||||||
userName: "import.unix",
|
userName: "import.unix",
|
||||||
|
|
@ -22,6 +27,8 @@ const user = {
|
||||||
};
|
};
|
||||||
function purgeTables() {
|
function purgeTables() {
|
||||||
const database = sqlite(databasePath);
|
const database = sqlite(databasePath);
|
||||||
|
database.prepare("delete from LotOccupancyTransactions").run();
|
||||||
|
database.prepare("delete from LotOccupancyFees").run();
|
||||||
database.prepare("delete from LotOccupancyFields").run();
|
database.prepare("delete from LotOccupancyFields").run();
|
||||||
database.prepare("delete from LotOccupancyComments").run();
|
database.prepare("delete from LotOccupancyComments").run();
|
||||||
database.prepare("delete from LotOccupancyOccupants").run();
|
database.prepare("delete from LotOccupancyOccupants").run();
|
||||||
|
|
@ -66,17 +73,17 @@ const cemeteryToMapName = {
|
||||||
"WK": "West Korah"
|
"WK": "West Korah"
|
||||||
};
|
};
|
||||||
const mapCache = new Map();
|
const mapCache = new Map();
|
||||||
function getMap(masterRow) {
|
function getMap(dataRow) {
|
||||||
const mapCacheKey = masterRow.CM_CEMETERY;
|
const mapCacheKey = dataRow.cemetery;
|
||||||
if (mapCache.has(mapCacheKey)) {
|
if (mapCache.has(mapCacheKey)) {
|
||||||
return mapCache.get(mapCacheKey);
|
return mapCache.get(mapCacheKey);
|
||||||
}
|
}
|
||||||
let map = getMapByMapDescription(mapCacheKey);
|
let map = getMapByMapDescription(mapCacheKey);
|
||||||
if (!map) {
|
if (!map) {
|
||||||
console.log("Creating map: " + masterRow.CM_CEMETERY);
|
console.log("Creating map: " + dataRow.cemetery);
|
||||||
const mapId = addMap({
|
const mapId = addMap({
|
||||||
mapName: cemeteryToMapName[masterRow.CM_CEMETERY] || masterRow.CM_CEMETERY,
|
mapName: cemeteryToMapName[dataRow.cemetery] || dataRow.cemetery,
|
||||||
mapDescription: masterRow.CM_CEMETERY,
|
mapDescription: dataRow.cemetery,
|
||||||
mapSVG: "",
|
mapSVG: "",
|
||||||
mapLatitude: "",
|
mapLatitude: "",
|
||||||
mapLongitude: "",
|
mapLongitude: "",
|
||||||
|
|
@ -92,21 +99,72 @@ function getMap(masterRow) {
|
||||||
mapCache.set(mapCacheKey, map);
|
mapCache.set(mapCacheKey, map);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
function importFromCSV() {
|
const feeCache = new Map();
|
||||||
|
function getFeeIdByFeeDescription(feeDescription) {
|
||||||
|
if (feeCache.keys.length === 0) {
|
||||||
|
const database = sqlite(databasePath, {
|
||||||
|
readonly: true
|
||||||
|
});
|
||||||
|
const records = database
|
||||||
|
.prepare("select feeId, feeDescription from Fees" +
|
||||||
|
" where feeDescription like 'CMPP_FEE_%'")
|
||||||
|
.all();
|
||||||
|
for (const record of records) {
|
||||||
|
feeCache.set(record.feeDescription, record.feeId);
|
||||||
|
}
|
||||||
|
database.close();
|
||||||
|
}
|
||||||
|
return feeCache.get(feeDescription);
|
||||||
|
}
|
||||||
|
function buildLotName(lotNamePieces) {
|
||||||
|
return lotNamePieces.cemetery + "-" +
|
||||||
|
(lotNamePieces.block === "" ? "" : lotNamePieces.block + "-") +
|
||||||
|
(lotNamePieces.range1 === "0" && lotNamePieces.range2 === "" ?
|
||||||
|
"" :
|
||||||
|
(lotNamePieces.range1 + lotNamePieces.range2) + "-") +
|
||||||
|
(lotNamePieces.lot1 === "0" && lotNamePieces.lot2 === "" ?
|
||||||
|
"" :
|
||||||
|
lotNamePieces.lot1 + lotNamePieces.lot2 + "-") +
|
||||||
|
lotNamePieces.grave1 + lotNamePieces.grave2 + "-" +
|
||||||
|
lotNamePieces.interment;
|
||||||
|
}
|
||||||
|
const casketLotType = cacheFunctions.getLotTypesByLotType("Casket Grave");
|
||||||
|
const columbariumLotType = cacheFunctions.getLotTypesByLotType("Columbarium");
|
||||||
|
const crematoriumLotType = cacheFunctions.getLotTypesByLotType("Crematorium");
|
||||||
|
const mausoleumLotType = cacheFunctions.getLotTypesByLotType("Mausoleum");
|
||||||
|
const nicheWallLotType = cacheFunctions.getLotTypesByLotType("Niche Wall");
|
||||||
|
const urnGardenLotType = cacheFunctions.getLotTypesByLotType("Urn Garden");
|
||||||
|
function getLotType(dataRow) {
|
||||||
|
switch (dataRow.cemetery) {
|
||||||
|
case "00": {
|
||||||
|
return crematoriumLotType;
|
||||||
|
}
|
||||||
|
case "GC":
|
||||||
|
case "HC": {
|
||||||
|
return columbariumLotType;
|
||||||
|
}
|
||||||
|
case "MA": {
|
||||||
|
return mausoleumLotType;
|
||||||
|
}
|
||||||
|
case "NW": {
|
||||||
|
return nicheWallLotType;
|
||||||
|
}
|
||||||
|
case "UG": {
|
||||||
|
return urnGardenLotType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return casketLotType;
|
||||||
|
}
|
||||||
|
const availableLotStatus = cacheFunctions.getLotStatusByLotStatus("Available");
|
||||||
|
const reservedLotStatus = cacheFunctions.getLotStatusByLotStatus("Reserved");
|
||||||
|
const takenLotStatus = cacheFunctions.getLotStatusByLotStatus("Taken");
|
||||||
|
const preneedOccupancyType = cacheFunctions.getOccupancyTypeByOccupancyType("Preneed");
|
||||||
|
const deceasedOccupancyType = cacheFunctions.getOccupancyTypeByOccupancyType("Interment");
|
||||||
|
const preneedOwnerLotOccupantType = cacheFunctions.getLotOccupantTypesByLotOccupantType("Preneed Owner");
|
||||||
|
const deceasedLotOccupantType = cacheFunctions.getLotOccupantTypesByLotOccupantType("Deceased");
|
||||||
|
const arrangerLotOccupantType = cacheFunctions.getLotOccupantTypesByLotOccupantType("Arranger");
|
||||||
|
function importFromMasterCSV() {
|
||||||
let masterRow;
|
let masterRow;
|
||||||
const casketLotType = cacheFunctions.getLotTypesByLotType("Casket Grave");
|
|
||||||
const columbariumLotType = cacheFunctions.getLotTypesByLotType("Columbarium");
|
|
||||||
const crematoriumLotType = cacheFunctions.getLotTypesByLotType("Crematorium");
|
|
||||||
const mausoleumLotType = cacheFunctions.getLotTypesByLotType("Mausoleum");
|
|
||||||
const nicheWallLotType = cacheFunctions.getLotTypesByLotType("Niche Wall");
|
|
||||||
const urnGardenLotType = cacheFunctions.getLotTypesByLotType("Urn Garden");
|
|
||||||
const availableLotStatus = cacheFunctions.getLotStatusByLotStatus("Available");
|
|
||||||
const preneedOccupancyType = cacheFunctions.getOccupancyTypeByOccupancyType("Preneed");
|
|
||||||
const preneedOwnerLotOccupantType = cacheFunctions.getLotOccupantTypesByLotOccupantType("Preneed Owner");
|
|
||||||
const reservedLotStatus = cacheFunctions.getLotStatusByLotStatus("Reserved");
|
|
||||||
const deceasedOccupancyType = cacheFunctions.getOccupancyTypeByOccupancyType("Interment");
|
|
||||||
const deceasedLotOccupantType = cacheFunctions.getLotOccupantTypesByLotOccupantType("Deceased");
|
|
||||||
const takenLotStatus = cacheFunctions.getLotStatusByLotStatus("Taken");
|
|
||||||
const rawData = fs.readFileSync("./temp/CMMASTER.csv").toString();
|
const rawData = fs.readFileSync("./temp/CMMASTER.csv").toString();
|
||||||
const cmmaster = papa.parse(rawData, {
|
const cmmaster = papa.parse(rawData, {
|
||||||
delimiter: ",",
|
delimiter: ",",
|
||||||
|
|
@ -118,41 +176,23 @@ function importFromCSV() {
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
for (masterRow of cmmaster.data) {
|
for (masterRow of cmmaster.data) {
|
||||||
const map = getMap(masterRow);
|
const map = getMap({
|
||||||
const lotName = masterRow.CM_CEMETERY + "-" +
|
cemetery: masterRow.CM_CEMETERY
|
||||||
(masterRow.CM_BLOCK === "" ? "" : masterRow.CM_BLOCK + "-") +
|
});
|
||||||
(masterRow.CM_RANGE1 === "0" && masterRow.CM_RANGE2 === "" ?
|
const lotName = buildLotName({
|
||||||
"" :
|
cemetery: masterRow.CM_CEMETERY,
|
||||||
(masterRow.CM_RANGE1 + masterRow.CM_RANGE2) + "-") +
|
block: masterRow.CM_BLOCK,
|
||||||
(masterRow.CM_LOT1 === "0" && masterRow.CM_LOT2 === "" ?
|
range1: masterRow.CM_RANGE1,
|
||||||
"" :
|
range2: masterRow.CM_RANGE2,
|
||||||
masterRow.CM_LOT1 + masterRow.CM_LOT2 + "-") +
|
lot1: masterRow.CM_LOT1,
|
||||||
masterRow.CM_GRAVE1 + masterRow.CM_GRAVE2 + "-" +
|
lot2: masterRow.CM_LOT2,
|
||||||
masterRow.CM_INTERMENT;
|
grave1: masterRow.CM_GRAVE1,
|
||||||
let lotType = casketLotType;
|
grave2: masterRow.CM_GRAVE2,
|
||||||
switch (masterRow.CM_CEMETERY) {
|
interment: masterRow.CM_INTERMENT
|
||||||
case "00": {
|
});
|
||||||
lotType = crematoriumLotType;
|
const lotType = getLotType({
|
||||||
break;
|
cemetery: masterRow.CM_CEMETERY
|
||||||
}
|
});
|
||||||
case "GC":
|
|
||||||
case "HC": {
|
|
||||||
lotType = columbariumLotType;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "MA": {
|
|
||||||
lotType = mausoleumLotType;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "NW": {
|
|
||||||
lotType = nicheWallLotType;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "UG": {
|
|
||||||
lotType = urnGardenLotType;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const lotId = addLot({
|
const lotId = addLot({
|
||||||
lotName: lotName,
|
lotName: lotName,
|
||||||
lotTypeId: lotType.lotTypeId,
|
lotTypeId: lotType.lotTypeId,
|
||||||
|
|
@ -338,6 +378,229 @@ function importFromCSV() {
|
||||||
console.log(masterRow);
|
console.log(masterRow);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function importFromPrepaidCSV() {
|
||||||
|
let prepaidRow;
|
||||||
|
const rawData = fs.readFileSync("./temp/CMPRPAID.csv").toString();
|
||||||
|
const cmprpaid = papa.parse(rawData, {
|
||||||
|
delimiter: ",",
|
||||||
|
header: true,
|
||||||
|
skipEmptyLines: true
|
||||||
|
});
|
||||||
|
for (const parseError of cmprpaid.errors) {
|
||||||
|
console.log(parseError);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
for (prepaidRow of cmprpaid.data) {
|
||||||
|
if (!prepaidRow.CMPP_PREPAID_FOR_NAME) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let lot;
|
||||||
|
if (prepaidRow.CMPP_CEMETERY) {
|
||||||
|
const map = getMap({
|
||||||
|
cemetery: prepaidRow.CMPP_CEMETERY
|
||||||
|
});
|
||||||
|
const lotName = buildLotName({
|
||||||
|
cemetery: prepaidRow.CMPP_CEMETERY,
|
||||||
|
block: prepaidRow.CMPP_BLOCK,
|
||||||
|
range1: prepaidRow.CMPP_RANGE1,
|
||||||
|
range2: prepaidRow.CMPP_RANGE2,
|
||||||
|
lot1: prepaidRow.CMPP_LOT1,
|
||||||
|
lot2: prepaidRow.CMPP_LOT2,
|
||||||
|
grave1: prepaidRow.CMPP_GRAVE1,
|
||||||
|
grave2: prepaidRow.CMPP_GRAVE2,
|
||||||
|
interment: prepaidRow.CMPP_INTERMENT
|
||||||
|
});
|
||||||
|
const possibleLots = getLots({
|
||||||
|
mapId: map.mapId,
|
||||||
|
lotName
|
||||||
|
});
|
||||||
|
if (possibleLots.lots.length > 0) {
|
||||||
|
lot = possibleLots.lots[0];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const lotType = getLotType({
|
||||||
|
cemetery: prepaidRow.CMPP_CEMETERY
|
||||||
|
});
|
||||||
|
const lotId = addLot({
|
||||||
|
lotName: lotName,
|
||||||
|
lotTypeId: lotType.lotTypeId,
|
||||||
|
lotStatusId: reservedLotStatus.lotStatusId,
|
||||||
|
mapId: map.mapId,
|
||||||
|
mapKey: lotName,
|
||||||
|
lotLatitude: "",
|
||||||
|
lotLongitude: ""
|
||||||
|
}, user);
|
||||||
|
lot = getLot(lotId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lot && lot.lotStatusId === availableLotStatus.lotStatusId) {
|
||||||
|
updateLotStatus(lot.lotId, reservedLotStatus.lotStatusId, user);
|
||||||
|
}
|
||||||
|
const occupancyStartDateString = formatDateString(prepaidRow.CMPP_PURCH_YR, prepaidRow.CMPP_PURCH_MON, prepaidRow.CMPP_PURCH_DAY);
|
||||||
|
let lotOccupancyId;
|
||||||
|
if (lot) {
|
||||||
|
const possibleLotOccupancies = getLotOccupancies({
|
||||||
|
lotId: lot.lotId,
|
||||||
|
occupancyTypeId: preneedOccupancyType.occupancyTypeId,
|
||||||
|
occupantName: prepaidRow.CMPP_PREPAID_FOR_NAME,
|
||||||
|
occupancyStartDateString
|
||||||
|
}, {
|
||||||
|
includeOccupants: false,
|
||||||
|
limit: -1,
|
||||||
|
offset: 0
|
||||||
|
});
|
||||||
|
if (possibleLotOccupancies.lotOccupancies.length > 0) {
|
||||||
|
lotOccupancyId = possibleLotOccupancies.lotOccupancies[0].lotOccupancyId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!lotOccupancyId) {
|
||||||
|
lotOccupancyId = addLotOccupancy({
|
||||||
|
lotId: lot ? lot.lotId : "",
|
||||||
|
occupancyTypeId: preneedOccupancyType.occupancyTypeId,
|
||||||
|
occupancyStartDateString,
|
||||||
|
occupancyEndDateString: ""
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
addLotOccupancyOccupant({
|
||||||
|
lotOccupancyId,
|
||||||
|
lotOccupantTypeId: preneedOwnerLotOccupantType.lotOccupantTypeId,
|
||||||
|
occupantName: prepaidRow.CMPP_PREPAID_FOR_NAME,
|
||||||
|
occupantAddress1: prepaidRow.CMPP_ADDRESS,
|
||||||
|
occupantAddress2: "",
|
||||||
|
occupantCity: prepaidRow.CMPP_CITY,
|
||||||
|
occupantProvince: prepaidRow.CMPP_PROV.slice(0, 2),
|
||||||
|
occupantPostalCode: prepaidRow.CMPP_POSTAL1 + " " + prepaidRow.CMPP_POSTAL2,
|
||||||
|
occupantPhoneNumber: ""
|
||||||
|
}, user);
|
||||||
|
if (prepaidRow.CMPP_ARRANGED_BY_NAME) {
|
||||||
|
addLotOccupancyOccupant({
|
||||||
|
lotOccupancyId,
|
||||||
|
lotOccupantTypeId: arrangerLotOccupantType.lotOccupantTypeId,
|
||||||
|
occupantName: prepaidRow.CMPP_ARRANGED_BY_NAME,
|
||||||
|
occupantAddress1: "",
|
||||||
|
occupantAddress2: "",
|
||||||
|
occupantCity: "",
|
||||||
|
occupantProvince: "",
|
||||||
|
occupantPostalCode: "",
|
||||||
|
occupantPhoneNumber: ""
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
if (prepaidRow.CMPP_FEE_GRAV_SD !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_GRAV_SD"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_GRAV_SD,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_GRAV_SD
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
if (prepaidRow.CMPP_FEE_GRAV_DD !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_GRAV_DD"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_GRAV_DD,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_GRAV_DD
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
if (prepaidRow.CMPP_FEE_CHAP_SD !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_CHAP_SD"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_CHAP_SD,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_CHAP_SD
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
if (prepaidRow.CMPP_FEE_CHAP_DD !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_CHAP_DD"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_CHAP_DD,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_CHAP_DD
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
if (prepaidRow.CMPP_FEE_ENTOMBMENT !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_ENTOMBMENT"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_ENTOMBMENT,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_ENTOMBMENT
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
if (prepaidRow.CMPP_FEE_CREM !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_CREM"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_CREM,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_CREM
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
if (prepaidRow.CMPP_FEE_NICHE !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_NICHE"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_NICHE,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_NICHE
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
if (prepaidRow.CMPP_FEE_DISINTERMENT !== "0.0" && prepaidRow.CMPP_FEE_DISINTERMENT !== "20202.02") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_DISINTERMENT"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_DISINTERMENT,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_DISINTERMENT
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
const transactionAmount = Number.parseFloat(prepaidRow.CMPP_FEE_GRAV_SD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_GRAV_SD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_GRAV_DD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_GRAV_DD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_CHAP_SD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_CHAP_SD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_CHAP_DD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_CHAP_DD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_ENTOMBMENT) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_ENTOMBMENT) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_CREM) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_CREM) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_NICHE) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_NICHE) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_DISINTERMENT === "20202.02" ? "0" : prepaidRow.CMPP_FEE_DISINTERMENT) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_DISINTERMENT === "20202.02" ? "0" : prepaidRow.CMPP_GST_DISINTERMENT);
|
||||||
|
addLotOccupancyTransaction({
|
||||||
|
lotOccupancyId,
|
||||||
|
externalReceiptNumber: prepaidRow.CMPP_ORDER_NO,
|
||||||
|
transactionAmount,
|
||||||
|
transactionDateString: occupancyStartDateString,
|
||||||
|
transactionNote: ""
|
||||||
|
}, user);
|
||||||
|
if (prepaidRow.CMPP_REMARK1) {
|
||||||
|
addLotOccupancyComment({
|
||||||
|
lotOccupancyId,
|
||||||
|
lotOccupancyCommentDateString: occupancyStartDateString,
|
||||||
|
lotOccupancyComment: prepaidRow.CMPP_REMARK1
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
if (prepaidRow.CMPP_REMARK2) {
|
||||||
|
addLotOccupancyComment({
|
||||||
|
lotOccupancyId,
|
||||||
|
lotOccupancyCommentDateString: occupancyStartDateString,
|
||||||
|
lotOccupancyComment: prepaidRow.CMPP_REMARK2
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
console.log(prepaidRow);
|
||||||
|
}
|
||||||
|
}
|
||||||
purgeTables();
|
purgeTables();
|
||||||
purgeConfigTables();
|
importFromMasterCSV();
|
||||||
importFromCSV();
|
importFromPrepaidCSV();
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,26 @@ import {
|
||||||
addOrUpdateLotOccupancyField
|
addOrUpdateLotOccupancyField
|
||||||
} from "../helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.js";
|
} from "../helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.js";
|
||||||
|
|
||||||
|
import {
|
||||||
|
getLot
|
||||||
|
} from "../helpers/lotOccupancyDB/getLot.js";
|
||||||
|
|
||||||
|
import {
|
||||||
|
getLots
|
||||||
|
} from "../helpers/lotOccupancyDB/getLots.js";
|
||||||
|
|
||||||
|
import {
|
||||||
|
getLotOccupancies
|
||||||
|
} from "../helpers/lotOccupancyDB/getLotOccupancies.js";
|
||||||
|
|
||||||
|
import {
|
||||||
|
addLotOccupancyFee
|
||||||
|
} from "../helpers/lotOccupancyDB/addLotOccupancyFee.js";
|
||||||
|
|
||||||
|
import {
|
||||||
|
addLotOccupancyTransaction
|
||||||
|
} from "../helpers/lotOccupancyDB/addLotOccupancyTransaction.js";
|
||||||
|
|
||||||
import type * as recordTypes from "../types/recordTypes";
|
import type * as recordTypes from "../types/recordTypes";
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -51,7 +71,7 @@ interface MasterRecord {
|
||||||
CM_RANGE2: string;
|
CM_RANGE2: string;
|
||||||
CM_LOT1: string;
|
CM_LOT1: string;
|
||||||
CM_LOT2: string;
|
CM_LOT2: string;
|
||||||
CM_GRAVE1: number;
|
CM_GRAVE1: string;
|
||||||
CM_GRAVE2: string;
|
CM_GRAVE2: string;
|
||||||
CM_INTERMENT: string;
|
CM_INTERMENT: string;
|
||||||
CM_PRENEED_OWNER: string;
|
CM_PRENEED_OWNER: string;
|
||||||
|
|
@ -93,6 +113,51 @@ interface MasterRecord {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
interface PrepaidRecord {
|
||||||
|
CMPP_SYSREC: string;
|
||||||
|
CMPP_PREPAID_FOR_NAME: string;
|
||||||
|
CMPP_PREPAID_FOR_SEQ: string;
|
||||||
|
CMPP_ADDRESS: string;
|
||||||
|
CMPP_CITY: string;
|
||||||
|
CMPP_PROV: string;
|
||||||
|
CMPP_POSTAL1: string;
|
||||||
|
CMPP_POSTAL2: string;
|
||||||
|
CMPP_ARRANGED_BY_NAME: string;
|
||||||
|
CMPP_ARRANGED_BY_SEQ: string;
|
||||||
|
CMPP_CEMETERY: string;
|
||||||
|
CMPP_BLOCK: string;
|
||||||
|
CMPP_RANGE1: string;
|
||||||
|
CMPP_RANGE2: string;
|
||||||
|
CMPP_LOT1: string;
|
||||||
|
CMPP_LOT2: string;
|
||||||
|
CMPP_GRAVE1: string;
|
||||||
|
CMPP_GRAVE2: string;
|
||||||
|
CMPP_INTERMENT: string;
|
||||||
|
CMPP_ORDER_NO: string;
|
||||||
|
CMPP_PURCH_YR: string;
|
||||||
|
CMPP_PURCH_MON: string;
|
||||||
|
CMPP_PURCH_DAY: string;
|
||||||
|
CMPP_FEE_GRAV_SD: string;
|
||||||
|
CMPP_GST_GRAV_SD: string;
|
||||||
|
CMPP_FEE_GRAV_DD: string;
|
||||||
|
CMPP_GST_GRAV_DD: string;
|
||||||
|
CMPP_FEE_CHAP_SD: string;
|
||||||
|
CMPP_GST_CHAP_SD: string;
|
||||||
|
CMPP_FEE_CHAP_DD: string;
|
||||||
|
CMPP_GST_CHAP_DD: string;
|
||||||
|
CMPP_FEE_ENTOMBMENT: string;
|
||||||
|
CMPP_GST_ENTOMBMENT: string;
|
||||||
|
CMPP_FEE_CREM: string;
|
||||||
|
CMPP_GST_CREM: string;
|
||||||
|
CMPP_FEE_NICHE: string;
|
||||||
|
CMPP_GST_NICHE: string;
|
||||||
|
CMPP_FEE_DISINTERMENT: string;
|
||||||
|
CMPP_GST_DISINTERMENT: string;
|
||||||
|
CMPP_REMARK1: string;
|
||||||
|
CMPP_REMARK2: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const user: recordTypes.PartialSession = {
|
const user: recordTypes.PartialSession = {
|
||||||
user: {
|
user: {
|
||||||
userName: "import.unix",
|
userName: "import.unix",
|
||||||
|
|
@ -106,6 +171,8 @@ const user: recordTypes.PartialSession = {
|
||||||
|
|
||||||
function purgeTables() {
|
function purgeTables() {
|
||||||
const database = sqlite(databasePath);
|
const database = sqlite(databasePath);
|
||||||
|
database.prepare("delete from LotOccupancyTransactions").run();
|
||||||
|
database.prepare("delete from LotOccupancyFees").run();
|
||||||
database.prepare("delete from LotOccupancyFields").run();
|
database.prepare("delete from LotOccupancyFields").run();
|
||||||
database.prepare("delete from LotOccupancyComments").run();
|
database.prepare("delete from LotOccupancyComments").run();
|
||||||
database.prepare("delete from LotOccupancyOccupants").run();
|
database.prepare("delete from LotOccupancyOccupants").run();
|
||||||
|
|
@ -140,6 +207,7 @@ function getMapByMapDescription(mapDescription: string) {
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function formatDateString(year: string, month: string, day: string) {
|
function formatDateString(year: string, month: string, day: string) {
|
||||||
|
|
||||||
return ("0000" + year).slice(-4) + "-" +
|
return ("0000" + year).slice(-4) + "-" +
|
||||||
|
|
@ -165,9 +233,11 @@ const cemeteryToMapName = {
|
||||||
const mapCache: Map < string, recordTypes.Map > = new Map();
|
const mapCache: Map < string, recordTypes.Map > = new Map();
|
||||||
|
|
||||||
|
|
||||||
function getMap(masterRow: MasterRecord): recordTypes.Map {
|
function getMap(dataRow: {
|
||||||
|
cemetery: string;
|
||||||
|
}): recordTypes.Map {
|
||||||
|
|
||||||
const mapCacheKey = masterRow.CM_CEMETERY;
|
const mapCacheKey = dataRow.cemetery;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (masterRow.CM_CEMETERY === "HS" &&
|
if (masterRow.CM_CEMETERY === "HS" &&
|
||||||
|
|
@ -184,11 +254,11 @@ function getMap(masterRow: MasterRecord): recordTypes.Map {
|
||||||
|
|
||||||
if (!map) {
|
if (!map) {
|
||||||
|
|
||||||
console.log("Creating map: " + masterRow.CM_CEMETERY);
|
console.log("Creating map: " + dataRow.cemetery);
|
||||||
|
|
||||||
const mapId = addMap({
|
const mapId = addMap({
|
||||||
mapName: cemeteryToMapName[masterRow.CM_CEMETERY] || masterRow.CM_CEMETERY,
|
mapName: cemeteryToMapName[dataRow.cemetery] || dataRow.cemetery,
|
||||||
mapDescription: masterRow.CM_CEMETERY,
|
mapDescription: dataRow.cemetery,
|
||||||
mapSVG: "",
|
mapSVG: "",
|
||||||
mapLatitude: "",
|
mapLatitude: "",
|
||||||
mapLongitude: "",
|
mapLongitude: "",
|
||||||
|
|
@ -209,28 +279,110 @@ function getMap(masterRow: MasterRecord): recordTypes.Map {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function importFromCSV() {
|
const feeCache: Map < string, number > = new Map();
|
||||||
|
|
||||||
|
|
||||||
|
function getFeeIdByFeeDescription(feeDescription: string) {
|
||||||
|
|
||||||
|
if (feeCache.keys.length === 0) {
|
||||||
|
|
||||||
|
const database = sqlite(databasePath, {
|
||||||
|
readonly: true
|
||||||
|
});
|
||||||
|
|
||||||
|
const records: {
|
||||||
|
feeId: number;feeDescription: string
|
||||||
|
} [] = database
|
||||||
|
.prepare("select feeId, feeDescription from Fees" +
|
||||||
|
" where feeDescription like 'CMPP_FEE_%'")
|
||||||
|
.all();
|
||||||
|
|
||||||
|
for (const record of records) {
|
||||||
|
feeCache.set(record.feeDescription, record.feeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
database.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
return feeCache.get(feeDescription);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function buildLotName(lotNamePieces: {
|
||||||
|
cemetery: string;
|
||||||
|
block: string;
|
||||||
|
range1: string;
|
||||||
|
range2: string;
|
||||||
|
lot1: string;
|
||||||
|
lot2: string;
|
||||||
|
grave1: string;
|
||||||
|
grave2: string;
|
||||||
|
interment: string;
|
||||||
|
}) {
|
||||||
|
return lotNamePieces.cemetery + "-" +
|
||||||
|
(lotNamePieces.block === "" ? "" : lotNamePieces.block + "-") +
|
||||||
|
(lotNamePieces.range1 === "0" && lotNamePieces.range2 === "" ?
|
||||||
|
"" :
|
||||||
|
(lotNamePieces.range1 + lotNamePieces.range2) + "-") +
|
||||||
|
(lotNamePieces.lot1 === "0" && lotNamePieces.lot2 === "" ?
|
||||||
|
"" :
|
||||||
|
lotNamePieces.lot1 + lotNamePieces.lot2 + "-") +
|
||||||
|
lotNamePieces.grave1 + lotNamePieces.grave2 + "-" +
|
||||||
|
lotNamePieces.interment;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const casketLotType = cacheFunctions.getLotTypesByLotType("Casket Grave");
|
||||||
|
const columbariumLotType = cacheFunctions.getLotTypesByLotType("Columbarium");
|
||||||
|
const crematoriumLotType = cacheFunctions.getLotTypesByLotType("Crematorium");
|
||||||
|
const mausoleumLotType = cacheFunctions.getLotTypesByLotType("Mausoleum");
|
||||||
|
const nicheWallLotType = cacheFunctions.getLotTypesByLotType("Niche Wall");
|
||||||
|
const urnGardenLotType = cacheFunctions.getLotTypesByLotType("Urn Garden");
|
||||||
|
|
||||||
|
|
||||||
|
function getLotType(dataRow: {
|
||||||
|
cemetery: string;
|
||||||
|
}) {
|
||||||
|
|
||||||
|
switch (dataRow.cemetery) {
|
||||||
|
case "00": {
|
||||||
|
return crematoriumLotType;
|
||||||
|
}
|
||||||
|
case "GC":
|
||||||
|
case "HC": {
|
||||||
|
return columbariumLotType;
|
||||||
|
}
|
||||||
|
case "MA": {
|
||||||
|
return mausoleumLotType;
|
||||||
|
}
|
||||||
|
case "NW": {
|
||||||
|
return nicheWallLotType;
|
||||||
|
}
|
||||||
|
case "UG": {
|
||||||
|
return urnGardenLotType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return casketLotType;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const availableLotStatus = cacheFunctions.getLotStatusByLotStatus("Available");
|
||||||
|
const reservedLotStatus = cacheFunctions.getLotStatusByLotStatus("Reserved");
|
||||||
|
const takenLotStatus = cacheFunctions.getLotStatusByLotStatus("Taken");
|
||||||
|
|
||||||
|
const preneedOccupancyType = cacheFunctions.getOccupancyTypeByOccupancyType("Preneed");
|
||||||
|
const deceasedOccupancyType = cacheFunctions.getOccupancyTypeByOccupancyType("Interment");
|
||||||
|
|
||||||
|
const preneedOwnerLotOccupantType = cacheFunctions.getLotOccupantTypesByLotOccupantType("Preneed Owner");
|
||||||
|
const deceasedLotOccupantType = cacheFunctions.getLotOccupantTypesByLotOccupantType("Deceased");
|
||||||
|
const arrangerLotOccupantType = cacheFunctions.getLotOccupantTypesByLotOccupantType("Arranger");
|
||||||
|
|
||||||
|
|
||||||
|
function importFromMasterCSV() {
|
||||||
|
|
||||||
let masterRow: MasterRecord;
|
let masterRow: MasterRecord;
|
||||||
|
|
||||||
// Load cached values
|
|
||||||
const casketLotType = cacheFunctions.getLotTypesByLotType("Casket Grave");
|
|
||||||
const columbariumLotType = cacheFunctions.getLotTypesByLotType("Columbarium");
|
|
||||||
const crematoriumLotType = cacheFunctions.getLotTypesByLotType("Crematorium");
|
|
||||||
const mausoleumLotType = cacheFunctions.getLotTypesByLotType("Mausoleum");
|
|
||||||
const nicheWallLotType = cacheFunctions.getLotTypesByLotType("Niche Wall");
|
|
||||||
const urnGardenLotType = cacheFunctions.getLotTypesByLotType("Urn Garden");
|
|
||||||
|
|
||||||
const availableLotStatus = cacheFunctions.getLotStatusByLotStatus("Available");
|
|
||||||
|
|
||||||
const preneedOccupancyType = cacheFunctions.getOccupancyTypeByOccupancyType("Preneed");
|
|
||||||
const preneedOwnerLotOccupantType = cacheFunctions.getLotOccupantTypesByLotOccupantType("Preneed Owner");
|
|
||||||
const reservedLotStatus = cacheFunctions.getLotStatusByLotStatus("Reserved");
|
|
||||||
|
|
||||||
const deceasedOccupancyType = cacheFunctions.getOccupancyTypeByOccupancyType("Interment");
|
|
||||||
const deceasedLotOccupantType = cacheFunctions.getLotOccupantTypesByLotOccupantType("Deceased");
|
|
||||||
const takenLotStatus = cacheFunctions.getLotStatusByLotStatus("Taken");
|
|
||||||
|
|
||||||
const rawData = fs.readFileSync("./temp/CMMASTER.csv").toString();
|
const rawData = fs.readFileSync("./temp/CMMASTER.csv").toString();
|
||||||
|
|
||||||
const cmmaster: papa.ParseResult < MasterRecord > = papa.parse(rawData, {
|
const cmmaster: papa.ParseResult < MasterRecord > = papa.parse(rawData, {
|
||||||
|
|
@ -246,44 +398,25 @@ function importFromCSV() {
|
||||||
try {
|
try {
|
||||||
for (masterRow of cmmaster.data) {
|
for (masterRow of cmmaster.data) {
|
||||||
|
|
||||||
const map = getMap(masterRow);
|
const map = getMap({
|
||||||
|
cemetery: masterRow.CM_CEMETERY
|
||||||
|
});
|
||||||
|
|
||||||
const lotName = masterRow.CM_CEMETERY + "-" +
|
const lotName = buildLotName({
|
||||||
(masterRow.CM_BLOCK === "" ? "" : masterRow.CM_BLOCK + "-") +
|
cemetery: masterRow.CM_CEMETERY,
|
||||||
(masterRow.CM_RANGE1 === "0" && masterRow.CM_RANGE2 === "" ?
|
block: masterRow.CM_BLOCK,
|
||||||
"" :
|
range1: masterRow.CM_RANGE1,
|
||||||
(masterRow.CM_RANGE1 + masterRow.CM_RANGE2) + "-") +
|
range2: masterRow.CM_RANGE2,
|
||||||
(masterRow.CM_LOT1 === "0" && masterRow.CM_LOT2 === "" ?
|
lot1: masterRow.CM_LOT1,
|
||||||
"" :
|
lot2: masterRow.CM_LOT2,
|
||||||
masterRow.CM_LOT1 + masterRow.CM_LOT2 + "-") +
|
grave1: masterRow.CM_GRAVE1,
|
||||||
masterRow.CM_GRAVE1 + masterRow.CM_GRAVE2 + "-" +
|
grave2: masterRow.CM_GRAVE2,
|
||||||
masterRow.CM_INTERMENT;
|
interment: masterRow.CM_INTERMENT
|
||||||
|
});
|
||||||
|
|
||||||
let lotType = casketLotType;
|
const lotType = getLotType({
|
||||||
|
cemetery: masterRow.CM_CEMETERY
|
||||||
switch (masterRow.CM_CEMETERY) {
|
});
|
||||||
case "00": {
|
|
||||||
lotType = crematoriumLotType;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "GC":
|
|
||||||
case "HC": {
|
|
||||||
lotType = columbariumLotType;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "MA": {
|
|
||||||
lotType = mausoleumLotType;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "NW": {
|
|
||||||
lotType = nicheWallLotType;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "UG": {
|
|
||||||
lotType = urnGardenLotType;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const lotId = addLot({
|
const lotId = addLot({
|
||||||
lotName: lotName,
|
lotName: lotName,
|
||||||
|
|
@ -529,6 +662,270 @@ function importFromCSV() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function importFromPrepaidCSV() {
|
||||||
|
|
||||||
|
let prepaidRow: PrepaidRecord;
|
||||||
|
|
||||||
|
const rawData = fs.readFileSync("./temp/CMPRPAID.csv").toString();
|
||||||
|
|
||||||
|
const cmprpaid: papa.ParseResult < PrepaidRecord > = papa.parse(rawData, {
|
||||||
|
delimiter: ",",
|
||||||
|
header: true,
|
||||||
|
skipEmptyLines: true
|
||||||
|
});
|
||||||
|
|
||||||
|
for (const parseError of cmprpaid.errors) {
|
||||||
|
console.log(parseError);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (prepaidRow of cmprpaid.data) {
|
||||||
|
|
||||||
|
if (!prepaidRow.CMPP_PREPAID_FOR_NAME) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let lot: recordTypes.Lot;
|
||||||
|
|
||||||
|
if (prepaidRow.CMPP_CEMETERY) {
|
||||||
|
|
||||||
|
const map = getMap({
|
||||||
|
cemetery: prepaidRow.CMPP_CEMETERY
|
||||||
|
});
|
||||||
|
|
||||||
|
const lotName = buildLotName({
|
||||||
|
cemetery: prepaidRow.CMPP_CEMETERY,
|
||||||
|
block: prepaidRow.CMPP_BLOCK,
|
||||||
|
range1: prepaidRow.CMPP_RANGE1,
|
||||||
|
range2: prepaidRow.CMPP_RANGE2,
|
||||||
|
lot1: prepaidRow.CMPP_LOT1,
|
||||||
|
lot2: prepaidRow.CMPP_LOT2,
|
||||||
|
grave1: prepaidRow.CMPP_GRAVE1,
|
||||||
|
grave2: prepaidRow.CMPP_GRAVE2,
|
||||||
|
interment: prepaidRow.CMPP_INTERMENT
|
||||||
|
});
|
||||||
|
|
||||||
|
const possibleLots = getLots({
|
||||||
|
mapId: map.mapId,
|
||||||
|
lotName
|
||||||
|
});
|
||||||
|
|
||||||
|
if (possibleLots.lots.length > 0) {
|
||||||
|
lot = possibleLots.lots[0];
|
||||||
|
} else {
|
||||||
|
|
||||||
|
const lotType = getLotType({
|
||||||
|
cemetery: prepaidRow.CMPP_CEMETERY
|
||||||
|
});
|
||||||
|
|
||||||
|
const lotId = addLot({
|
||||||
|
lotName: lotName,
|
||||||
|
lotTypeId: lotType.lotTypeId,
|
||||||
|
lotStatusId: reservedLotStatus.lotStatusId,
|
||||||
|
mapId: map.mapId,
|
||||||
|
mapKey: lotName,
|
||||||
|
lotLatitude: "",
|
||||||
|
lotLongitude: ""
|
||||||
|
}, user);
|
||||||
|
|
||||||
|
lot = getLot(lotId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lot && lot.lotStatusId === availableLotStatus.lotStatusId) {
|
||||||
|
updateLotStatus(lot.lotId, reservedLotStatus.lotStatusId, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
const occupancyStartDateString = formatDateString(prepaidRow.CMPP_PURCH_YR,
|
||||||
|
prepaidRow.CMPP_PURCH_MON,
|
||||||
|
prepaidRow.CMPP_PURCH_DAY);
|
||||||
|
|
||||||
|
let lotOccupancyId: number;
|
||||||
|
|
||||||
|
if (lot) {
|
||||||
|
const possibleLotOccupancies = getLotOccupancies({
|
||||||
|
lotId: lot.lotId,
|
||||||
|
occupancyTypeId: preneedOccupancyType.occupancyTypeId,
|
||||||
|
occupantName: prepaidRow.CMPP_PREPAID_FOR_NAME,
|
||||||
|
occupancyStartDateString
|
||||||
|
}, {
|
||||||
|
includeOccupants: false,
|
||||||
|
limit: -1,
|
||||||
|
offset: 0
|
||||||
|
});
|
||||||
|
|
||||||
|
if (possibleLotOccupancies.lotOccupancies.length > 0) {
|
||||||
|
lotOccupancyId = possibleLotOccupancies.lotOccupancies[0].lotOccupancyId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!lotOccupancyId) {
|
||||||
|
lotOccupancyId = addLotOccupancy({
|
||||||
|
lotId: lot ? lot.lotId : "",
|
||||||
|
occupancyTypeId: preneedOccupancyType.occupancyTypeId,
|
||||||
|
occupancyStartDateString,
|
||||||
|
occupancyEndDateString: ""
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
addLotOccupancyOccupant({
|
||||||
|
lotOccupancyId,
|
||||||
|
lotOccupantTypeId: preneedOwnerLotOccupantType.lotOccupantTypeId,
|
||||||
|
occupantName: prepaidRow.CMPP_PREPAID_FOR_NAME,
|
||||||
|
occupantAddress1: prepaidRow.CMPP_ADDRESS,
|
||||||
|
occupantAddress2: "",
|
||||||
|
occupantCity: prepaidRow.CMPP_CITY,
|
||||||
|
occupantProvince: prepaidRow.CMPP_PROV.slice(0, 2),
|
||||||
|
occupantPostalCode: prepaidRow.CMPP_POSTAL1 + " " + prepaidRow.CMPP_POSTAL2,
|
||||||
|
occupantPhoneNumber: ""
|
||||||
|
}, user);
|
||||||
|
|
||||||
|
if (prepaidRow.CMPP_ARRANGED_BY_NAME) {
|
||||||
|
addLotOccupancyOccupant({
|
||||||
|
lotOccupancyId,
|
||||||
|
lotOccupantTypeId: arrangerLotOccupantType.lotOccupantTypeId,
|
||||||
|
occupantName: prepaidRow.CMPP_ARRANGED_BY_NAME,
|
||||||
|
occupantAddress1: "",
|
||||||
|
occupantAddress2: "",
|
||||||
|
occupantCity: "",
|
||||||
|
occupantProvince: "",
|
||||||
|
occupantPostalCode: "",
|
||||||
|
occupantPhoneNumber: ""
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prepaidRow.CMPP_FEE_GRAV_SD !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_GRAV_SD"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_GRAV_SD,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_GRAV_SD
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prepaidRow.CMPP_FEE_GRAV_DD !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_GRAV_DD"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_GRAV_DD,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_GRAV_DD
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prepaidRow.CMPP_FEE_CHAP_SD !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_CHAP_SD"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_CHAP_SD,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_CHAP_SD
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prepaidRow.CMPP_FEE_CHAP_DD !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_CHAP_DD"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_CHAP_DD,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_CHAP_DD
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prepaidRow.CMPP_FEE_ENTOMBMENT !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_ENTOMBMENT"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_ENTOMBMENT,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_ENTOMBMENT
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prepaidRow.CMPP_FEE_CREM !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_CREM"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_CREM,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_CREM
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prepaidRow.CMPP_FEE_NICHE !== "0.0") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_NICHE"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_NICHE,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_NICHE
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prepaidRow.CMPP_FEE_DISINTERMENT !== "0.0" && prepaidRow.CMPP_FEE_DISINTERMENT !== "20202.02") {
|
||||||
|
addLotOccupancyFee({
|
||||||
|
lotOccupancyId,
|
||||||
|
feeId: getFeeIdByFeeDescription("CMPP_FEE_DISINTERMENT"),
|
||||||
|
quantity: 1,
|
||||||
|
feeAmount: prepaidRow.CMPP_FEE_DISINTERMENT,
|
||||||
|
taxAmount: prepaidRow.CMPP_GST_DISINTERMENT
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
const transactionAmount =
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_GRAV_SD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_GRAV_SD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_GRAV_DD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_GRAV_DD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_CHAP_SD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_CHAP_SD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_CHAP_DD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_CHAP_DD) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_ENTOMBMENT) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_ENTOMBMENT) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_CREM) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_CREM) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_NICHE) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_NICHE) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_FEE_DISINTERMENT === "20202.02" ? "0" : prepaidRow.CMPP_FEE_DISINTERMENT) +
|
||||||
|
Number.parseFloat(prepaidRow.CMPP_GST_DISINTERMENT === "20202.02" ? "0" : prepaidRow.CMPP_GST_DISINTERMENT);
|
||||||
|
|
||||||
|
addLotOccupancyTransaction({
|
||||||
|
lotOccupancyId,
|
||||||
|
externalReceiptNumber: prepaidRow.CMPP_ORDER_NO,
|
||||||
|
transactionAmount,
|
||||||
|
transactionDateString: occupancyStartDateString,
|
||||||
|
transactionNote: ""
|
||||||
|
}, user);
|
||||||
|
|
||||||
|
if (prepaidRow.CMPP_REMARK1) {
|
||||||
|
addLotOccupancyComment({
|
||||||
|
lotOccupancyId,
|
||||||
|
lotOccupancyCommentDateString: occupancyStartDateString,
|
||||||
|
lotOccupancyComment: prepaidRow.CMPP_REMARK1
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prepaidRow.CMPP_REMARK2) {
|
||||||
|
addLotOccupancyComment({
|
||||||
|
lotOccupancyId,
|
||||||
|
lotOccupancyCommentDateString: occupancyStartDateString,
|
||||||
|
lotOccupancyComment: prepaidRow.CMPP_REMARK2
|
||||||
|
}, user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
console.log(prepaidRow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
purgeTables();
|
purgeTables();
|
||||||
purgeConfigTables();
|
// purgeConfigTables();
|
||||||
importFromCSV();
|
importFromMasterCSV();
|
||||||
|
importFromPrepaidCSV();
|
||||||
Loading…
Reference in New Issue