From 9b2382a1a8d43a35b2be77494a4c29247e95b584 Mon Sep 17 00:00:00 2001 From: Isaac GC Date: Tue, 30 Jan 2024 21:12:33 -0800 Subject: [PATCH] UTC Datetime inconsistency for LedgerPostings/Reports --- models/Transactional/LedgerPosting.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/models/Transactional/LedgerPosting.ts b/models/Transactional/LedgerPosting.ts index 1af625963..f1c80cdaa 100644 --- a/models/Transactional/LedgerPosting.ts +++ b/models/Transactional/LedgerPosting.ts @@ -90,12 +90,28 @@ export class LedgerPosting { return map[account]; } + // Timezone inconsistency fix (very ugly code for now) + let entryDateTime = this.refDoc.date as string | Date; + let dateTimeValue: Date; + if (typeof entryDateTime === 'string' || entryDateTime instanceof String) { + dateTimeValue = new Date(entryDateTime); + } else { + dateTimeValue = entryDateTime; + } + let dtFixedValue = dateTimeValue; + let dtMinutes = dtFixedValue.getTimezoneOffset() % 60; + let dtHours = (dtFixedValue.getTimezoneOffset() - dtMinutes) / 60; + dtFixedValue.setHours(dtFixedValue.getHours() - dtHours); + dtFixedValue.setMinutes(dtFixedValue.getMinutes() - dtMinutes); + + // end ugly timezone fix code + const ledgerEntry = this.fyo.doc.getNewDoc( ModelNameEnum.AccountingLedgerEntry, { account: account, party: (this.refDoc.party as string) ?? '', - date: this.refDoc.date as string | Date, + date: dtFixedValue, referenceType: this.refDoc.schemaName, referenceName: this.refDoc.name!, reverted: this.reverted,