Skip to content

Commit

Permalink
Fixed db patch
Browse files Browse the repository at this point in the history
  • Loading branch information
Isaac-GC committed Feb 1, 2024
1 parent d3aa72d commit 0f36a16
Showing 1 changed file with 24 additions and 59 deletions.
83 changes: 24 additions & 59 deletions backend/patches/v0_21_0/fixLedgerDateTime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,67 +2,32 @@ import { DatabaseManager } from '../../database/manager';

/* eslint-disable */
async function execute(dm: DatabaseManager) {
await dm.db!.knex!('AccountingLedgerEntry')
.select('name', 'date', 'referenceName')
.then((trx) => {
trx.forEach(async (entry) => {
await updateDateTimeForEntryType(
'PurchaseInvoice',
entry.name,
entry.referenceName,
dm
);
await updateDateTimeForEntryType(
'SalesInvoice',
entry.name,
entry.referenceName,
dm
);
await updateDateTimeForEntryType(
'JournalEntry',
entry.name,
entry.referenceName,
dm
);
await updateDateTimeForEntryType(
'Payment',
entry.name,
entry.referenceName,
dm
);
await updateDateTimeForEntryType(
'StockMovement',
entry.name,
entry.referenceName,
dm
);
await updateDateTimeForEntryType(
'StockTransfer',
entry.name,
entry.referenceName,
dm
);
});
});
}
await dm.db!.knex!('AccountingLedgerEntry')
.select('name', 'date')
.then((trx: Array<{name: string; date: Date;}> ) => {
trx.forEach(async entry => {
const entryDate = new Date(entry['date']);
const timeZoneOffset = entryDate.getTimezoneOffset();
const offsetMinutes = timeZoneOffset % 60;
const offsetHours = (timeZoneOffset - offsetMinutes) / 60;

let daysToAdd = 0; // If behind or at GMT/Zulu time, don't need to add a day
if (timeZoneOffset < 0) {
// If ahead of GMT/Zulu time, need to advance a day forward first
daysToAdd = 1;
}

async function updateDateTimeForEntryType(
entryTypeTable: any,
entryName: any,
referenceName: String,
dm: DatabaseManager
) {
const refDate: Array<any> = await dm.db!.knex!(entryTypeTable)
.select('name', 'date')
.where({ name: referenceName });
entryDate.setDate(entryDate.getDate() + daysToAdd);
entryDate.setHours(0 - offsetHours);
entryDate.setMinutes(0 - offsetMinutes);
entryDate.setSeconds(0);
entryDate.setMilliseconds(0);

if (refDate.length > 0) {
const newDate = new Date(refDate[0].date);
console.log(entryName, refDate, new Date(refDate[0].date));
dm.db!.knex!('AccountingLedgerEntry')
.where({ name: entryName })
.update({ date: new Date(refDate[0].date) });
}
await dm.db!.knex!('AccountingLedgerEntry')
.where({ name: entry['name'] })
.update({ date: entryDate.toISOString() });
});
});
}

export default { execute, beforeMigrate: true };
Expand Down

0 comments on commit 0f36a16

Please sign in to comment.