Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt

frappe.ui.form.on("QuickBooks Migrator", {
connect: function (frm) {
// OAuth requires user intervention to provide application access permissionsto requested scope
// Here we open a new window and redirect user to the authorization url.
// After user grants us permission to access. We will set authorization details on this doc which will force refresh.
window.open(frm.doc.authorization_url);
},
fetch_data: function (frm) {
frm.call("migrate");
},
onload: function (frm) {
frm.trigger("set_indicator");
var domain = frappe.urllib.get_base_url();
var redirect_url = `${domain}/api/method/quickbooks_migrator.quickbooks_migrator.doctype.quickbooks_migrator.quickbooks_migrator.callback`;
if (frm.doc.redirect_url != redirect_url) {
frm.set_value("redirect_url", redirect_url);
}
// Instead of changing percentage width and message of single progress bar
// Show a different porgress bar for every action after some time remove the finished progress bar
// Former approach causes the progress bar to dance back and forth.
frm.trigger("set_indicator");
frappe.realtime.on("quickbooks_progress_update", function (data) {
frm.dashboard.show_progress(
data.message,
(data.count / data.total) * 100,
data.message
);
if (data.count == data.total) {
window.setTimeout(
function (message) {
frm.dashboard.hide_progress(message);
},
1500,
data.messsage
);
}
});
},
refresh: function (frm) {
frm.trigger("set_indicator");
if (!frm.doc.access_token) {
// Unset access_token signifies that we don't have enough information to connect to quickbooks api and fetch data
if (frm.doc.authorization_url) {
frm.add_custom_button(__("Connect to Quickbooks"), function () {
frm.trigger("connect");
});
}
}
if (frm.doc.access_token) {
// If we have access_token that means we also have refresh_token we don't need user intervention anymore
// All we need now is a Company from erpnext
frm.remove_custom_button(__("Connect to Quickbooks"));

frm.toggle_display("company_settings", 1);
frm.set_df_property("company", "reqd", 1);
if (frm.doc.company) {
frm.add_custom_button(__("Fetch Data"), function () {
frm.trigger("fetch_data");
});
}
}
},
set_indicator: function (frm) {
var indicator_map = {
"Connecting to QuickBooks": [__("Connecting to QuickBooks"), "orange"],
"Connected to QuickBooks": [__("Connected to QuickBooks"), "green"],
"In Progress": [__("In Progress"), "orange"],
Complete: [__("Complete"), "green"],
Failed: [__("Failed"), "red"],
};
if (frm.doc.status) {
var indicator = indicator_map[frm.doc.status];
var label = indicator[0];
var color = indicator[1];
frm.page.set_indicator(label, color);
}
},
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
{
"beta": 1,
"creation": "2018-07-10 14:48:16.757030",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"status",
"application_settings",
"client_id",
"redirect_url",
"token_endpoint",
"application_column_break",
"client_secret",
"scope",
"api_endpoint",
"authorization_settings",
"authorization_endpoint",
"refresh_token",
"code",
"authorization_column_break",
"authorization_url",
"access_token",
"quickbooks_company_id",
"company_settings",
"company",
"default_shipping_account",
"default_warehouse",
"company_column_break",
"default_cost_center",
"undeposited_funds_account"
],
"fields": [
{
"fieldname": "status",
"fieldtype": "Select",
"hidden": 1,
"label": "Status",
"options": "Connecting to QuickBooks\nConnected to QuickBooks\nIn Progress\nComplete\nFailed"
},
{
"collapsible": 1,
"collapsible_depends_on": "eval:doc.client_id && doc.client_secret && doc.redirect_url",
"fieldname": "application_settings",
"fieldtype": "Section Break",
"label": "Application Settings"
},
{
"fieldname": "client_id",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Client ID",
"reqd": 1
},
{
"fieldname": "redirect_url",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Redirect URL",
"reqd": 1
},
{
"default": "https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer",
"fieldname": "token_endpoint",
"fieldtype": "Data",
"label": "Token Endpoint",
"read_only": 1,
"reqd": 1
},
{
"fieldname": "application_column_break",
"fieldtype": "Column Break"
},
{
"fieldname": "client_secret",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Client Secret",
"reqd": 1
},
{
"default": "com.intuit.quickbooks.accounting",
"fieldname": "scope",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Scope",
"read_only": 1,
"reqd": 1
},
{
"default": "https://quickbooks.api.intuit.com/v3",
"fieldname": "api_endpoint",
"fieldtype": "Data",
"label": "API Endpoint",
"read_only": 1,
"reqd": 1
},
{
"collapsible": 1,
"fieldname": "authorization_settings",
"fieldtype": "Section Break",
"label": "Authorization Settings"
},
{
"default": "https://appcenter.intuit.com/connect/oauth2",
"fieldname": "authorization_endpoint",
"fieldtype": "Data",
"label": "Authorization Endpoint",
"read_only": 1,
"reqd": 1
},
{
"fieldname": "refresh_token",
"fieldtype": "Small Text",
"hidden": 1,
"label": "Refresh Token"
},
{
"fieldname": "code",
"fieldtype": "Data",
"hidden": 1,
"label": "Code"
},
{
"fieldname": "authorization_column_break",
"fieldtype": "Column Break"
},
{
"fieldname": "authorization_url",
"fieldtype": "Data",
"label": "Authorization URL",
"read_only": 1,
"reqd": 1
},
{
"fieldname": "access_token",
"fieldtype": "Small Text",
"hidden": 1,
"label": "Access Token"
},
{
"fieldname": "quickbooks_company_id",
"fieldtype": "Data",
"hidden": 1,
"label": "Quickbooks Company ID"
},
{
"fieldname": "company_settings",
"fieldtype": "Section Break",
"hidden": 1,
"label": "Company Settings"
},
{
"fieldname": "company",
"fieldtype": "Link",
"label": "Company",
"options": "Company"
},
{
"fieldname": "default_shipping_account",
"fieldtype": "Link",
"hidden": 1,
"label": "Default Shipping Account",
"options": "Account"
},
{
"fieldname": "default_warehouse",
"fieldtype": "Link",
"hidden": 1,
"label": "Default Warehouse",
"options": "Warehouse"
},
{
"fieldname": "company_column_break",
"fieldtype": "Column Break"
},
{
"fieldname": "default_cost_center",
"fieldtype": "Link",
"hidden": 1,
"label": "Default Cost Center",
"options": "Cost Center"
},
{
"fieldname": "undeposited_funds_account",
"fieldtype": "Link",
"hidden": 1,
"label": "Undeposited Funds Account",
"options": "Account"
}
],
"issingle": 1,
"modified": "2019-08-07 15:26:00.653433",
"modified_by": "Administrator",
"module": "Quickbooks Migrator",
"name": "QuickBooks Migrator",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"print": 1,
"read": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC"
}
Loading
Loading