2
0
mirror of https://github.com/frappe/books.git synced 2024-09-20 19:29:02 +00:00
books/src/main-electron.js

91 lines
2.2 KiB
JavaScript
Raw Normal View History

2018-10-20 12:32:01 +00:00
// frappejs imports
import frappe from 'frappejs';
2018-10-22 18:02:47 +00:00
import path from 'path';
2018-10-20 12:32:01 +00:00
import SQLite from 'frappejs/backends/sqlite';
import common from 'frappejs/common';
import coreModels from 'frappejs/models';
import models from '../models';
2018-10-22 18:02:47 +00:00
import postStart from '../server/postStart';
import { getSettings, saveSettings } from '../electron/settings';
// vue imports
import Vue from 'vue';
import App from './App';
import router from './router';
import frappeVue from 'frappejs/ui/plugins/frappeVue';
2018-10-21 12:49:33 +00:00
(async () => {
frappe.isServer = true;
2018-10-22 18:02:47 +00:00
frappe.isElectron = true;
2018-10-21 12:49:33 +00:00
frappe.init();
frappe.registerLibs(common);
frappe.registerModels(coreModels);
frappe.registerModels(models);
frappe.fetch = window.fetch.bind();
2018-10-22 18:02:47 +00:00
const electronSettings = getSettings();
if (!electronSettings.dbPath) {
localStorage.showDesk = false;
} else {
await connectToLocalDatabase();
localStorage.showDesk = true;
}
frappe.events.on('SetupWizard:setup-complete', async ({ setupWizardValues }) => {
const {
file,
companyName,
country,
name,
email,
bankName,
fiscalYearStart,
fiscalYearEnd
} = setupWizardValues;
// db init
const dbPath = path.join(file[0].path, 'frappe-accounting.db');
await saveSettings({ dbPath });
await connectToLocalDatabase();
const doc = await frappe.getSingle('AccountingSettings');
await doc.set({
companyName,
country,
fullname: name,
email,
bankName,
fiscalYearStart,
fiscalYearEnd
2018-10-21 12:49:33 +00:00
});
2018-10-22 18:02:47 +00:00
await doc.update();
await frappe.call({ method: 'import-coa' });
frappe.events.trigger('show-desk');
});
async function connectToLocalDatabase() {
const electronSettings = getSettings();
frappe.login('Administrator');
frappe.db = new SQLite({ dbPath: electronSettings.dbPath });
await frappe.db.connect();
await frappe.db.migrate();
frappe.getSingle('SystemSettings');
await postStart();
}
2018-10-21 12:49:33 +00:00
window.frappe = frappe;
Vue.config.productionTip = false;
Vue.use(frappeVue);
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
2018-10-20 12:32:01 +00:00
});
2018-10-21 12:49:33 +00:00
})()