From b0d13f892c83d69df91a8d17c105111cc9352522 Mon Sep 17 00:00:00 2001 From: Sanskar Soni Date: Tue, 10 Jun 2025 17:06:30 +0530 Subject: [PATCH] fix: customizations from json to code --- woocommerce_fusion/fixtures/custom_field.json | 843 ------------------ woocommerce_fusion/hooks.py | 146 +-- woocommerce_fusion/install.py | 222 +++++ 3 files changed, 295 insertions(+), 916 deletions(-) delete mode 100644 woocommerce_fusion/fixtures/custom_field.json create mode 100644 woocommerce_fusion/install.py diff --git a/woocommerce_fusion/fixtures/custom_field.json b/woocommerce_fusion/fixtures/custom_field.json deleted file mode 100644 index 6296dfa..0000000 --- a/woocommerce_fusion/fixtures/custom_field.json +++ /dev/null @@ -1,843 +0,0 @@ -[ - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "woocommerce_identifier", - "fieldtype": "Data", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": null, - "is_system_generated": 1, - "is_virtual": 0, - "label": "Woocommerce Identifier", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-10-09 16:16:13.099596", - "module": "WooCommerce", - "name": "Address-woocommerce_identifier", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": "eval: doc.woocommerce_id", - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Sales Order", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "woocommerce_shipment_tracking_html", - "fieldtype": "HTML", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": null, - "is_system_generated": 1, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2023-10-04 13:33:50.474541", - "module": "WooCommerce", - "name": "Sales Order-woocommerce_shipment_tracking_html", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Customer", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "woocommerce_identifier", - "fieldtype": "Data", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": null, - "is_system_generated": 1, - "is_virtual": 0, - "label": "Woocommerce Identifier", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-10-09 16:16:12.969871", - "module": "WooCommerce", - "name": "Customer-woocommerce_identifier", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": "0", - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Customer", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "woocommerce_is_guest", - "fieldtype": "Check", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": null, - "is_system_generated": 1, - "is_virtual": 0, - "label": "Woocommerce guest user", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-10-09 16:16:12.969871", - "module": "WooCommerce", - "name": "Customer-woocommerce_is_guest", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Customer", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "woocommerce_server", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "woocommerce_site", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Woocommerce Server", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2023-11-15 08:00:37.668678", - "module": "WooCommerce", - "name": "Customer-woocommerce_server", - "no_copy": 0, - "non_negative": 0, - "options": "WooCommerce Server", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Sales Order", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "woocommerce_id", - "fieldtype": "Data", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "woocommerce_site", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Woocommerce ID", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2023-10-09 16:16:12.198269", - "module": "WooCommerce", - "name": "Sales Order-woocommerce_id", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": "", - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Sales Order", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_woocommerce_customer_note", - "fieldtype": "Small Text", - "hidden": 0, - "hide_border": 0, - "hide_days": 1, - "hide_seconds": 1, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "amended_from", - "is_system_generated": 0, - "is_virtual": 0, - "label": "WooCommerce Customer Note", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-23 16:35:15.879546", - "module": "WooCommerce", - "name": "Sales Order-custom_woocommerce_customer_note", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": "100px" - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Item", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_woocommerce_tab", - "fieldtype": "Tab Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "serial_no_series", - "is_system_generated": 0, - "is_virtual": 0, - "label": "WooCommerce", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-06-13 13:14:20.766342", - "module": "WooCommerce", - "name": "Item-custom_woocommerce_tab", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": "To create this item in WooCommerce, leave the WooCommerce ID field blank", - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Item", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "woocommerce_servers", - "fieldtype": "Table", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_woocommerce_tab", - "is_system_generated": 0, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2023-10-04 13:33:49.821771", - "module": "WooCommerce", - "name": "Item-woocommerce_servers", - "no_copy": 0, - "non_negative": 0, - "options": "Item WooCommerce Server", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Sales Order", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "woocommerce_payment_method", - "fieldtype": "Data", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "woocommerce_status", - "is_system_generated": 0, - "is_virtual": 0, - "label": "WooCommerce Payment Method", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2023-11-08 07:32:59.033073", - "module": "WooCommerce", - "name": "Sales Order-woocommerce_payment_method", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Sales Order", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_woocommerce_last_sync_hash", - "fieldtype": "Datetime", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "woocommerce_server", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Last Sync Hash", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-07-12 10:22:27.377454", - "module": "WooCommerce", - "name": "Sales Order-custom_woocommerce_last_sync_hash", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": "", - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Sales Order", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "woocommerce_server", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_attempted_woocommerce_auto_payment_entry", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Woocommerce Server", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2023-11-15 08:01:54.789280", - "module": "WooCommerce", - "name": "Sales Order-woocommerce_server", - "no_copy": 0, - "non_negative": 0, - "options": "WooCommerce Server", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": "Checked if the sync process determined that no Payment Entry will be created for this Order automatically", - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Sales Order", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_attempted_woocommerce_auto_payment_entry", - "fieldtype": "Check", - "hidden": 1, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "woocommerce_payment_entry", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Attempted WooCommerce Auto Payment Entry", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-03-07 13:55:44.730917", - "module": "WooCommerce", - "name": "Sales Order-custom_attempted_woocommerce_auto_payment_entry", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Sales Order", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "woocommerce_payment_entry", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "woocommerce_payment_method", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Woocommerce Payment Entry", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2023-10-19 12:07:27.046696", - "module": "WooCommerce", - "name": "Sales Order-woocommerce_payment_entry", - "no_copy": 0, - "non_negative": 0, - "options": "Payment Entry", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Sales Order", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "woocommerce_status", - "fieldtype": "Select", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "woocommerce_id", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Woocommerce Status", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2023-10-04 13:33:49.531366", - "module": "WooCommerce", - "name": "Sales Order-woocommerce_status", - "no_copy": 0, - "non_negative": 0, - "options": "\nPending Payment\nOn hold\nFailed\nCancelled\nProcessing\nRefunded\nShipped\nReady for Pickup\nPicked up\nDelivered\nProcessing LP\nDraft\nQuote Sent\nTrash\nPartially Shipped", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": "3" - } -] - diff --git a/woocommerce_fusion/hooks.py b/woocommerce_fusion/hooks.py index 2802068..a2f1d75 100644 --- a/woocommerce_fusion/hooks.py +++ b/woocommerce_fusion/hooks.py @@ -62,7 +62,7 @@ # ------------ # before_install = "woocommerce_fusion.install.before_install" -# after_install = "woocommerce_fusion.install.after_install" +after_install = "woocommerce_fusion.install.after_install" # Uninstallation # ------------ @@ -93,7 +93,7 @@ # Override standard doctype classes override_doctype_class = { - "Sales Order": "woocommerce_fusion.overrides.selling.sales_order.CustomSalesOrder", + "Sales Order": "woocommerce_fusion.overrides.selling.sales_order.CustomSalesOrder", } # Document Events @@ -108,55 +108,55 @@ # } # } doc_events = { - "Stock Entry": { - "on_submit": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", - "on_cancel": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", - }, - "Stock Reconciliation": { - "on_submit": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", - "on_cancel": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", - }, - "Sales Invoice": { - "on_submit": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", - "on_cancel": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", - }, - "Delivery Note": { - "on_submit": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", - "on_cancel": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", - }, - "Item Price": { - "on_update": "woocommerce_fusion.tasks.sync_item_prices.update_item_price_for_woocommerce_item_from_hook" - }, - "Sales Order": { - "on_submit": "woocommerce_fusion.tasks.sync_sales_orders.run_sales_order_sync_from_hook" - }, - "Item": { - "on_update": "woocommerce_fusion.tasks.sync_items.run_item_sync_from_hook", - "after_insert": "woocommerce_fusion.tasks.sync_items.run_item_sync_from_hook", - }, + "Stock Entry": { + "on_submit": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", + "on_cancel": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", + }, + "Stock Reconciliation": { + "on_submit": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", + "on_cancel": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", + }, + "Sales Invoice": { + "on_submit": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", + "on_cancel": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", + }, + "Delivery Note": { + "on_submit": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", + "on_cancel": "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_woocommerce_item", + }, + "Item Price": { + "on_update": "woocommerce_fusion.tasks.sync_item_prices.update_item_price_for_woocommerce_item_from_hook" + }, + "Sales Order": { + "on_submit": "woocommerce_fusion.tasks.sync_sales_orders.run_sales_order_sync_from_hook" + }, + "Item": { + "on_update": "woocommerce_fusion.tasks.sync_items.run_item_sync_from_hook", + "after_insert": "woocommerce_fusion.tasks.sync_items.run_item_sync_from_hook", + }, } # Scheduled Tasks # --------------- scheduler_events = { - # "all": [ - # "woocommerce_fusion.tasks.all" - # ], - # "weekly": [ - # "woocommerce_fusion.tasks.daily" - # ], - "hourly_long": [ - "woocommerce_fusion.tasks.sync_sales_orders.sync_woocommerce_orders_modified_since", - "woocommerce_fusion.tasks.sync_items.sync_woocommerce_products_modified_since", - ], - "daily_long": [ - "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_all_enabled_items_in_background", - "woocommerce_fusion.tasks.sync_item_prices.run_item_price_sync_in_background", - ], - # "monthly": [ - # "woocommerce_fusion.tasks.monthly" - # ], + # "all": [ + # "woocommerce_fusion.tasks.all" + # ], + # "weekly": [ + # "woocommerce_fusion.tasks.daily" + # ], + "hourly_long": [ + "woocommerce_fusion.tasks.sync_sales_orders.sync_woocommerce_orders_modified_since", + "woocommerce_fusion.tasks.sync_items.sync_woocommerce_products_modified_since", + ], + "daily_long": [ + "woocommerce_fusion.tasks.stock_update.update_stock_levels_for_all_enabled_items_in_background", + "woocommerce_fusion.tasks.sync_item_prices.run_item_price_sync_in_background", + ], + # "monthly": [ + # "woocommerce_fusion.tasks.monthly" + # ], } # Testing @@ -185,7 +185,7 @@ # ----------------------------------------------------------- ignore_links_on_delete = [ - "WooCommerce Request Log", + "WooCommerce Request Log", ] # Request Events @@ -231,34 +231,34 @@ fixtures = [ - { - "dt": "Custom Field", - "filters": [ - [ - "name", - "in", - ( - "Customer-woocommerce_server", - "Customer-woocommerce_identifier", - "Customer-woocommerce_is_guest", - "Sales Order-woocommerce_id", - "Sales Order-woocommerce_server", - "Sales Order-woocommerce_status", - "Sales Order-woocommerce_payment_method", - "Sales Order-woocommerce_shipment_tracking_html", - "Sales Order-woocommerce_payment_entry", - "Sales Order-custom_attempted_woocommerce_auto_payment_entry", - "Sales Order-custom_woocommerce_last_sync_hash", - "Sales Order-custom_woocommerce_customer_note", - "Address-woocommerce_identifier", - "Item-woocommerce_servers", - "Item-custom_woocommerce_tab", - ), - ] - ], - } + { + "dt": "Custom Field", + "filters": [ + [ + "name", + "in", + ( + "Customer-woocommerce_server", + "Customer-woocommerce_identifier", + "Customer-woocommerce_is_guest", + "Sales Order-woocommerce_id", + "Sales Order-woocommerce_server", + "Sales Order-woocommerce_status", + "Sales Order-woocommerce_payment_method", + "Sales Order-woocommerce_shipment_tracking_html", + "Sales Order-woocommerce_payment_entry", + "Sales Order-custom_attempted_woocommerce_auto_payment_entry", + "Sales Order-custom_woocommerce_last_sync_hash", + "Sales Order-custom_woocommerce_customer_note", + "Address-woocommerce_identifier", + "Item-woocommerce_servers", + "Item-custom_woocommerce_tab", + ), + ] + ], + } ] default_log_clearing_doctypes = { - "WooCommerce Request Log": 7, + "WooCommerce Request Log": 7, } diff --git a/woocommerce_fusion/install.py b/woocommerce_fusion/install.py new file mode 100644 index 0000000..c024a7b --- /dev/null +++ b/woocommerce_fusion/install.py @@ -0,0 +1,222 @@ +import frappe + + +def after_install(): + add_custom_fields_to_address() + add_custom_fields_to_sales_order() + add_custom_fields_to_customer() + add_custom_fields_to_item() + + +def add_custom_fields_to_address(): + custom_fields = [ + { + "doctype": "Custom Field", + "dt": "Address", + "fieldname": "woocommerce_identifier", + "fieldtype": "Data", + "label": "Woocommerce Identifier", + "module": "WooCommerce", + "name": "Address-woocommerce_identifier", + "print_hide": 1, + "read_only": 1, + }, + ] + + add_custom_fields("Address", custom_fields) + + +def add_custom_fields_to_sales_order(): + custom_fields = [ + { + "depends_on": "eval: doc.woocommerce_id", + "doctype": "Custom Field", + "dt": "Sales Order", + "fieldname": "woocommerce_shipment_tracking_html", + "fieldtype": "HTML", + "module": "WooCommerce", + "name": "Sales Order-woocommerce_shipment_tracking_html", + }, + { + "doctype": "Custom Field", + "dt": "Sales Order", + "fieldname": "woocommerce_id", + "fieldtype": "Data", + "insert_after": "woocommerce_site", + "label": "Woocommerce ID", + "module": "WooCommerce", + "name": "Sales Order-woocommerce_id", + "print_hide": 1, + "read_only": 1, + }, + { + "doctype": "Custom Field", + "dt": "Sales Order", + "fieldname": "custom_woocommerce_customer_note", + "fieldtype": "Small Text", + "hide_days": 1, + "hide_seconds": 1, + "insert_after": "amended_from", + "label": "WooCommerce Customer Note", + "module": "WooCommerce", + "name": "Sales Order-custom_woocommerce_customer_note", + "read_only": 1, + "width": "100px", + }, + { + "doctype": "Custom Field", + "dt": "Sales Order", + "fieldname": "woocommerce_payment_method", + "fieldtype": "Data", + "insert_after": "woocommerce_status", + "label": "WooCommerce Payment Method", + "module": "WooCommerce", + "name": "Sales Order-woocommerce_payment_method", + "read_only": 1, + }, + { + "doctype": "Custom Field", + "dt": "Sales Order", + "fieldname": "custom_woocommerce_last_sync_hash", + "fieldtype": "Datetime", + "insert_after": "woocommerce_server", + "label": "Last Sync Hash", + "module": "WooCommerce", + "name": "Sales Order-custom_woocommerce_last_sync_hash", + "read_only": 1, + }, + { + "doctype": "Custom Field", + "dt": "Sales Order", + "fieldname": "woocommerce_server", + "fieldtype": "Link", + "insert_after": "custom_attempted_woocommerce_auto_payment_entry", + "label": "Woocommerce Server", + "modified": "2023-11-15 08:01:54.789280", + "module": "WooCommerce", + "name": "Sales Order-woocommerce_server", + "options": "WooCommerce Server", + "read_only": 1, + }, + { + "allow_on_submit": 1, + "description": "Checked if the sync process determined that no Payment Entry will be created for this Order automatically", + "doctype": "Custom Field", + "dt": "Sales Order", + "fieldname": "custom_attempted_woocommerce_auto_payment_entry", + "fieldtype": "Check", + "hidden": 1, + "insert_after": "woocommerce_payment_entry", + "label": "Attempted WooCommerce Auto Payment Entry", + "module": "WooCommerce", + "name": "Sales Order-custom_attempted_woocommerce_auto_payment_entry", + }, + { + "allow_on_submit": 1, + "doctype": "Custom Field", + "dt": "Sales Order", + "fieldname": "woocommerce_payment_entry", + "fieldtype": "Link", + "insert_after": "woocommerce_payment_method", + "label": "Woocommerce Payment Entry", + "module": "WooCommerce", + "name": "Sales Order-woocommerce_payment_entry", + "options": "Payment Entry", + }, + { + "allow_on_submit": 1, + "doctype": "Custom Field", + "dt": "Sales Order", + "fieldname": "woocommerce_status", + "fieldtype": "Select", + "in_list_view": 1, + "insert_after": "woocommerce_id", + "label": "Woocommerce Status", + "module": "WooCommerce", + "name": "Sales Order-woocommerce_status", + "options": "\nPending Payment\nOn hold\nFailed\nCancelled\nProcessing\nRefunded\nShipped\nReady for Pickup\nPicked up\nDelivered\nProcessing LP\nDraft\nQuote Sent\nTrash\nPartially Shipped", + "width": "3", + }, + ] + + add_custom_fields("Sales Order", custom_fields) + + +def add_custom_fields_to_customer(): + custom_fields = [ + { + "doctype": "Custom Field", + "dt": "Customer", + "fieldname": "woocommerce_identifier", + "fieldtype": "Data", + "in_list_view": 1, + "is_system_generated": 1, + "label": "Woocommerce Identifier", + "module": "WooCommerce", + "name": "Customer-woocommerce_identifier", + "print_hide": 1, + "read_only": 1, + "translatable": 1, + }, + { + "doctype": "Custom Field", + "dt": "Customer", + "fieldname": "woocommerce_is_guest", + "fieldtype": "Check", + "in_list_view": 1, + "is_system_generated": 1, + "label": "Woocommerce guest user", + "module": "WooCommerce", + "name": "Customer-woocommerce_is_guest", + "print_hide": 1, + "read_only": 1, + }, + { + "doctype": "Custom Field", + "dt": "Customer", + "fieldname": "woocommerce_server", + "fieldtype": "Link", + "insert_after": "woocommerce_site", + "label": "Woocommerce Server", + "module": "WooCommerce", + "name": "Customer-woocommerce_server", + "options": "WooCommerce Server", + "read_only": 1, + }, + ] + add_custom_fields("Customer", custom_fields) + + +def add_custom_fields_to_item(): + custom_fields = [ + { + "doctype": "Custom Field", + "dt": "Item", + "fieldname": "custom_woocommerce_tab", + "fieldtype": "Tab Break", + "insert_after": "serial_no_series", + "label": "WooCommerce", + "module": "WooCommerce", + "name": "Item-custom_woocommerce_tab", + }, + { + "description": "To create this item in WooCommerce, leave the WooCommerce ID field blank", + "doctype": "Custom Field", + "dt": "Item", + "fieldname": "woocommerce_servers", + "fieldtype": "Table", + "insert_after": "custom_woocommerce_tab", + "module": "WooCommerce", + "name": "Item-woocommerce_servers", + "options": "Item WooCommerce Server", + }, + ] + add_custom_fields("Item", custom_fields) + + +def add_custom_fields(doctype, fields): + for field in fields: + if not frappe.db.exists("Custom Field", {"dt": doctype, "fieldname": field["fieldname"]}): + new_field = frappe.get_doc({"doctype": "Custom Field", **field}) + new_field.insert() + frappe.db.commit()