mirror of
https://github.com/frappe/books.git
synced 2026-08-24 02:24:17 -05:00
108 lines
3.0 KiB
TypeScript
108 lines
3.0 KiB
TypeScript
import { Doc } from 'fyo/model/doc';
|
|
import { ChangeArg, HiddenMap } from 'fyo/model/types';
|
|
import { initERPNSync, syncDocumentsToERPNext } from 'src/utils/erpnextSync';
|
|
import { ErrorLogEnum } from 'fyo/telemetry/types';
|
|
|
|
export class ERPNextSyncSettings extends Doc {
|
|
deviceID?: string;
|
|
instanceName?: string;
|
|
baseURL?: string;
|
|
authToken?: string;
|
|
integrationAppVersion?: string;
|
|
isEnabled?: boolean;
|
|
initialSyncData?: boolean;
|
|
|
|
dataSyncInterval?: string;
|
|
syncDataFromServer?: boolean;
|
|
syncDataToServer?: boolean;
|
|
|
|
registerInstance?: string;
|
|
syncSettings?: string;
|
|
syncDataToERPNext?: string;
|
|
fetchFromERPNextQueue?: string;
|
|
clearSyncedDocsFromErpNextSyncQueue?: string;
|
|
|
|
hidden: HiddenMap = {
|
|
syncPriceList: () => {
|
|
return !this.fyo.singles.AccountingSettings?.enablePriceList;
|
|
},
|
|
priceListSyncType: () => {
|
|
return !this.fyo.singles.AccountingSettings?.enablePriceList;
|
|
},
|
|
syncSerialNumber: () => {
|
|
return !this.fyo.singles.InventorySettings?.enableSerialNumber;
|
|
},
|
|
serialNumberSyncType: () => {
|
|
return !this.fyo.singles.InventorySettings?.enableSerialNumber;
|
|
},
|
|
syncBatch: () => {
|
|
return !this.fyo.singles.InventorySettings?.enableBatches;
|
|
},
|
|
batchSyncType: () => {
|
|
return !this.fyo.singles.InventorySettings?.enableBatches;
|
|
},
|
|
syncDataFromServer: () => {
|
|
return !this.deviceID;
|
|
},
|
|
syncDataToServer: () => {
|
|
return !this.deviceID;
|
|
},
|
|
};
|
|
|
|
async change(ch: ChangeArg) {
|
|
if (ch.changed === 'syncDataFromServer') {
|
|
try {
|
|
const { showToast } = await import('src/utils/interactive');
|
|
showToast({
|
|
type: 'warning',
|
|
message: 'Fetching data from server.',
|
|
duration: 'very_long',
|
|
});
|
|
await initERPNSync(this.fyo);
|
|
ipc.reloadWindow();
|
|
} catch (error) {
|
|
const errorMessage =
|
|
error instanceof Error ? error.message : String(error);
|
|
|
|
try {
|
|
await this.fyo.doc
|
|
.getNewDoc(ErrorLogEnum.IntegrationErrorLog, {
|
|
error: errorMessage,
|
|
data: JSON.stringify({
|
|
instance: this.deviceID,
|
|
operation: 'sync_data_from_server',
|
|
trigger: 'change_event',
|
|
}),
|
|
})
|
|
.sync();
|
|
} catch (logError) {
|
|
throw logError;
|
|
}
|
|
}
|
|
} else if (ch.changed === 'syncDataToServer') {
|
|
try {
|
|
await syncDocumentsToERPNext(this.fyo);
|
|
ipc.reloadWindow();
|
|
} catch (error) {
|
|
const errorMessage =
|
|
error instanceof Error ? error.message : String(error);
|
|
|
|
try {
|
|
await this.fyo.doc
|
|
.getNewDoc(ErrorLogEnum.IntegrationErrorLog, {
|
|
error: errorMessage,
|
|
data: JSON.stringify({
|
|
instance: this.deviceID,
|
|
operation: 'sync_data_to_server',
|
|
trigger: 'change_event',
|
|
}),
|
|
})
|
|
.sync();
|
|
} catch (logError) {
|
|
throw logError;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|