From 9eaa4971d8b4f103690d6ee0ddc030ff427ab6c2 Mon Sep 17 00:00:00 2001 From: Gadha2311 Date: Fri, 27 Feb 2026 15:56:51 +0530 Subject: [PATCH] fix: resolved the sheduler error --- main/initSheduler.ts | 2 +- .../ERPNextSyncSettings.ts | 6 ++++ models/baseModels/Payment/Payment.ts | 14 +++++++-- src/App.vue | 31 +++++++++++++++++++ 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/main/initSheduler.ts b/main/initSheduler.ts index ea80c2a0..b59c98bb 100644 --- a/main/initSheduler.ts +++ b/main/initSheduler.ts @@ -26,7 +26,7 @@ export async function initScheduler(interval: string) { }, { name: 'checkLoyaltyProgramExpiry', - interval: '0 1 * * *', + interval: '24 hours', worker: { workerData: { useTsNode: true, diff --git a/models/baseModels/ERPNextSyncSettings/ERPNextSyncSettings.ts b/models/baseModels/ERPNextSyncSettings/ERPNextSyncSettings.ts index 329b64f7..20125d4a 100644 --- a/models/baseModels/ERPNextSyncSettings/ERPNextSyncSettings.ts +++ b/models/baseModels/ERPNextSyncSettings/ERPNextSyncSettings.ts @@ -41,6 +41,12 @@ export class ERPNextSyncSettings extends Doc { batchSyncType: () => { return !this.fyo.singles.InventorySettings?.enableBatches; }, + syncDataFromServer: () => { + return !this.deviceID; + }, + syncDataToServer: () => { + return !this.deviceID; + }, }; async change(ch: ChangeArg) { diff --git a/models/baseModels/Payment/Payment.ts b/models/baseModels/Payment/Payment.ts index b790c941..26240bb0 100644 --- a/models/baseModels/Payment/Payment.ts +++ b/models/baseModels/Payment/Payment.ts @@ -462,9 +462,17 @@ export class Payment extends Transactional { const previousOutstandingAmount = referenceDoc.outstandingAmount as Money; const isReturnInvoice = (referenceDoc as Invoice).isReturn; - const outstandingAmount = isReturnInvoice - ? previousOutstandingAmount.add(row.amount!) - : previousOutstandingAmount.sub(row.amount!); + + let outstandingAmount: Money; + + if (isReturnInvoice) { + const paymentAmount = row.amount!.abs(); + const previous = previousOutstandingAmount.abs(); + + outstandingAmount = previous.sub(paymentAmount); + } else { + outstandingAmount = previousOutstandingAmount.sub(row.amount!); + } await referenceDoc.setAndSync({ outstandingAmount }); } } diff --git a/src/App.vue b/src/App.vue index ab64f907..c76f8dc9 100644 --- a/src/App.vue +++ b/src/App.vue @@ -75,6 +75,7 @@ import { updateERPNSyncSettings, } from './utils/erpnextSync'; import { ERPNextSyncSettings } from 'models/baseModels/ERPNextSyncSettings/ERPNextSyncSettings'; +import { ErrorLogEnum } from 'fyo/telemetry/types'; enum Screen { Desk = 'Desk', @@ -247,6 +248,36 @@ export default defineComponent({ `${fyo.singles.ERPNextSyncSettings?.dataSyncInterval as string}m` ); } catch (error) { + const errorMessage = + error instanceof Error ? error.message : String(error); + + try { + const existing = await fyo.db.getAll( + ErrorLogEnum.IntegrationErrorLog, + { + filters: { + error: errorMessage, + }, + limit: 1, + } + ); + + if (!existing.length) { + await fyo.doc + .getNewDoc(ErrorLogEnum.IntegrationErrorLog, { + error: errorMessage, + data: JSON.stringify({ + instance: fyo.singles.ERPNextSyncSettings?.deviceID, + operation: 'register_instance', + trigger: 'showSetupWizardOrDesk', + baseURL: baseURL, + }), + }) + .sync(); + } + } catch (logError) { + throw logError; + } showToast({ message: 'Connection Failed', type: 'error' }); } }