"Shipping Charges - <abbr>": Selling, Fixed, posting to a "Shipping Charges" income account under Direct Income (created if the chart lacks it) with the default cost center. Shipping Rule is named by its label, so the company abbreviation keeps one rule per company, as ERPNext names its tax templates. Created on Company save, after install, and by a patch for existing companies. The amount is entered on the transaction, not the rule: ERPNext re-applies the rule on every recalculation and would reset the charge row to the rule's fixed amount. ThaiShippingRule overrides the doctype class so a Fixed rule with no amount only seeds the row and leaves the entered amount alone.
330 lines
8.9 KiB
Python
330 lines
8.9 KiB
Python
app_name = "default_thai_company"
|
|
app_title = "Default Thai Company"
|
|
app_publisher = "kurogeek"
|
|
app_description = "Default Company Settings"
|
|
app_email = "kurogeek@lmvhaus.com"
|
|
app_license = "gpl-3.0"
|
|
|
|
# Apps
|
|
# ------------------
|
|
|
|
required_apps = ["erpnext"]
|
|
|
|
# Each item in the list will be shown as an app in the apps page
|
|
# add_to_apps_screen = [
|
|
# {
|
|
# "name": "default_thai_company",
|
|
# "logo": "/assets/default_thai_company/logo.png",
|
|
# "title": "Default Thai Company",
|
|
# "route": "/default_thai_company",
|
|
# "has_permission": "default_thai_company.api.permission.has_app_permission"
|
|
# }
|
|
# ]
|
|
|
|
# Includes in <head>
|
|
# ------------------
|
|
|
|
# include js, css files in header of desk.html
|
|
# app_include_css = "/assets/default_thai_company/css/default_thai_company.css"
|
|
# app_include_js = "/assets/default_thai_company/js/default_thai_company.js"
|
|
|
|
# include js, css files in header of web template
|
|
# web_include_css = "/assets/default_thai_company/css/default_thai_company.css"
|
|
# web_include_js = "/assets/default_thai_company/js/default_thai_company.js"
|
|
|
|
# include custom scss in every website theme (without file extension ".scss")
|
|
# website_theme_scss = "default_thai_company/public/scss/website"
|
|
|
|
# include js, css files in header of web form
|
|
# webform_include_js = {"doctype": "public/js/doctype.js"}
|
|
# webform_include_css = {"doctype": "public/css/doctype.css"}
|
|
|
|
# include js in page
|
|
# page_js = {"page" : "public/js/file.js"}
|
|
|
|
# include js in doctype views
|
|
doctype_js = {"Payment Entry": "public/js/payment_entry.js"}
|
|
# doctype_list_js = {"doctype" : "public/js/doctype_list.js"}
|
|
# doctype_tree_js = {"doctype" : "public/js/doctype_tree.js"}
|
|
# doctype_calendar_js = {"doctype" : "public/js/doctype_calendar.js"}
|
|
|
|
# Svg Icons
|
|
# ------------------
|
|
# include app icons in desk
|
|
# app_include_icons = "default_thai_company/public/icons.svg"
|
|
|
|
# Home Pages
|
|
# ----------
|
|
|
|
# application home page (will override Website Settings)
|
|
# home_page = "login"
|
|
|
|
# website user home page (by Role)
|
|
# role_home_page = {
|
|
# "Role": "home_page"
|
|
# }
|
|
|
|
# Generators
|
|
# ----------
|
|
|
|
# automatically create page for each record of this doctype
|
|
# website_generators = ["Web Page"]
|
|
|
|
# Jinja
|
|
# ----------
|
|
|
|
# add methods and filters to jinja environment
|
|
jinja = {
|
|
"methods": [
|
|
"default_thai_company.utils.get_letter_head_company",
|
|
"default_thai_company.utils.get_company_bank_account",
|
|
"default_thai_company.utils.get_in_words",
|
|
],
|
|
}
|
|
|
|
# Fixtures
|
|
# --------
|
|
|
|
# Custom Fields and Property Setters live in default_thai_company/custom/*.json
|
|
# (synced in place on install and migrate); fixtures are for whole documents.
|
|
fixtures = [
|
|
{"doctype": "Letter Head", "filters": [["name", "in", ["Default Letter Head"]]]},
|
|
{"doctype": "Address Template", "filters": [["name", "in", ["Thailand"]]]},
|
|
{
|
|
"doctype": "Print Format",
|
|
"filters": [
|
|
[
|
|
"name",
|
|
"in",
|
|
[
|
|
"Default Standard Sales Invoice",
|
|
"Default Standard Tax Invoice/Receipt",
|
|
"Default Standard Quotation",
|
|
],
|
|
]
|
|
],
|
|
},
|
|
{"doctype": "Tax Withholding Category", "filters": [["name", "like", "WHT %"]]},
|
|
{
|
|
"doctype": "Location",
|
|
"filters": [["name", "in", ["All Locations", "Head Office", "Branch Office", "Warehouse"]]],
|
|
},
|
|
{
|
|
"doctype": "Asset Category",
|
|
"filters": [
|
|
[
|
|
"name",
|
|
"in",
|
|
[
|
|
"Land",
|
|
"Buildings",
|
|
"Plant and Machinery",
|
|
"Vehicles",
|
|
"Furniture and Fixtures",
|
|
"Office Equipment",
|
|
"Computers and Electronics",
|
|
"Software",
|
|
"Intangible Assets",
|
|
],
|
|
]
|
|
],
|
|
},
|
|
# HRMS doctypes; skipped by sync_fixtures on sites without hrms
|
|
{"doctype": "Employee Tax Exemption Category"},
|
|
{"doctype": "Employee Tax Exemption Sub Category"},
|
|
{"doctype": "Income Tax Slab", "filters": [["name", "=", "Thailand Personal Income Tax"]]},
|
|
]
|
|
|
|
# Installation
|
|
# ------------
|
|
|
|
# before_install = "default_thai_company.install.before_install"
|
|
# Fixtures are synced before this runs; VAT schemes and Shipping Rules for companies
|
|
# that already exist.
|
|
after_install = [
|
|
"default_thai_company.vat.setup_companies",
|
|
"default_thai_company.shipping.setup_companies",
|
|
]
|
|
# Fixture import re-inserts the Location tree; restore lft/rgt for user-added nodes.
|
|
after_migrate = "default_thai_company.assets.rebuild_locations"
|
|
|
|
# Uninstallation
|
|
# ------------
|
|
|
|
# before_uninstall = "default_thai_company.uninstall.before_uninstall"
|
|
# after_uninstall = "default_thai_company.uninstall.after_uninstall"
|
|
|
|
# Integration Setup
|
|
# ------------------
|
|
# To set up dependencies/integrations with other apps
|
|
# Name of the app being installed is passed as an argument
|
|
|
|
# before_app_install = "default_thai_company.utils.before_app_install"
|
|
# after_app_install = "default_thai_company.utils.after_app_install"
|
|
|
|
# Integration Cleanup
|
|
# -------------------
|
|
# To clean up dependencies/integrations with other apps
|
|
# Name of the app being uninstalled is passed as an argument
|
|
|
|
# before_app_uninstall = "default_thai_company.utils.before_app_uninstall"
|
|
# after_app_uninstall = "default_thai_company.utils.after_app_uninstall"
|
|
|
|
# Desk Notifications
|
|
# ------------------
|
|
# See frappe.core.notifications.get_notification_config
|
|
|
|
# notification_config = "default_thai_company.notifications.get_notification_config"
|
|
|
|
# Permissions
|
|
# -----------
|
|
# Permissions evaluated in scripted ways
|
|
|
|
# permission_query_conditions = {
|
|
# "Event": "frappe.desk.doctype.event.event.get_permission_query_conditions",
|
|
# }
|
|
#
|
|
# has_permission = {
|
|
# "Event": "frappe.desk.doctype.event.event.has_permission",
|
|
# }
|
|
|
|
# DocType Class
|
|
# ---------------
|
|
# Override standard doctype classes
|
|
|
|
override_doctype_class = {
|
|
"Sales Invoice": "default_thai_company.tax_withholding.ThaiSalesInvoice",
|
|
"Payment Entry": "default_thai_company.tax_withholding.ThaiPaymentEntry",
|
|
"Shipping Rule": "default_thai_company.shipping.ThaiShippingRule",
|
|
}
|
|
|
|
# Document Events
|
|
# ---------------
|
|
# Hook on document methods and events
|
|
|
|
doc_events = {
|
|
"Letter Head": {
|
|
"before_import": "default_thai_company.utils.stash_letter_head_source",
|
|
"before_insert": "default_thai_company.utils.restore_letter_head_source",
|
|
},
|
|
"Tax Withholding Category": {
|
|
"before_import": "default_thai_company.tax_withholding.prepare_fixture_accounts",
|
|
},
|
|
"Asset Category": {
|
|
"before_import": "default_thai_company.assets.prepare_fixture_accounts",
|
|
},
|
|
"Company": {
|
|
"on_update": [
|
|
"default_thai_company.tax_withholding.setup_company",
|
|
"default_thai_company.vat.setup_company",
|
|
"default_thai_company.assets.setup_company",
|
|
"default_thai_company.shipping.setup_company",
|
|
],
|
|
},
|
|
"Payment Entry": {
|
|
"validate": "default_thai_company.tax_withholding.set_customer_withholding",
|
|
},
|
|
}
|
|
|
|
# Scheduled Tasks
|
|
# ---------------
|
|
|
|
# scheduler_events = {
|
|
# "all": [
|
|
# "default_thai_company.tasks.all"
|
|
# ],
|
|
# "daily": [
|
|
# "default_thai_company.tasks.daily"
|
|
# ],
|
|
# "hourly": [
|
|
# "default_thai_company.tasks.hourly"
|
|
# ],
|
|
# "weekly": [
|
|
# "default_thai_company.tasks.weekly"
|
|
# ],
|
|
# "monthly": [
|
|
# "default_thai_company.tasks.monthly"
|
|
# ],
|
|
# }
|
|
|
|
# Testing
|
|
# -------
|
|
|
|
# before_tests = "default_thai_company.install.before_tests"
|
|
|
|
# Overriding Methods
|
|
# ------------------------------
|
|
|
|
override_whitelisted_methods = {
|
|
"erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry": "default_thai_company.tax_withholding.get_payment_entry",
|
|
}
|
|
|
|
# each overriding function accepts a `data` argument;
|
|
# generated from the base implementation of the doctype dashboard,
|
|
# along with any modifications made in other Frappe apps
|
|
# override_doctype_dashboards = {
|
|
# "Task": "default_thai_company.task.get_dashboard_data"
|
|
# }
|
|
|
|
# exempt linked doctypes from being automatically cancelled
|
|
#
|
|
# auto_cancel_exempted_doctypes = ["Auto Repeat"]
|
|
|
|
# Ignore links to specified DocTypes when deleting documents
|
|
# -----------------------------------------------------------
|
|
|
|
# ignore_links_on_delete = ["Communication", "ToDo"]
|
|
|
|
# Request Events
|
|
# ----------------
|
|
# before_request = ["default_thai_company.utils.before_request"]
|
|
# after_request = ["default_thai_company.utils.after_request"]
|
|
|
|
# Job Events
|
|
# ----------
|
|
# before_job = ["default_thai_company.utils.before_job"]
|
|
# after_job = ["default_thai_company.utils.after_job"]
|
|
|
|
# User Data Protection
|
|
# --------------------
|
|
|
|
# user_data_fields = [
|
|
# {
|
|
# "doctype": "{doctype_1}",
|
|
# "filter_by": "{filter_by}",
|
|
# "redact_fields": ["{field_1}", "{field_2}"],
|
|
# "partial": 1,
|
|
# },
|
|
# {
|
|
# "doctype": "{doctype_2}",
|
|
# "filter_by": "{filter_by}",
|
|
# "partial": 1,
|
|
# },
|
|
# {
|
|
# "doctype": "{doctype_3}",
|
|
# "strict": False,
|
|
# },
|
|
# {
|
|
# "doctype": "{doctype_4}"
|
|
# }
|
|
# ]
|
|
|
|
# Authentication and authorization
|
|
# --------------------------------
|
|
|
|
# auth_hooks = [
|
|
# "default_thai_company.auth.validate"
|
|
# ]
|
|
|
|
# Automatically update python controller files with type annotations for this app.
|
|
# export_python_type_annotations = True
|
|
|
|
# default_log_clearing_doctypes = {
|
|
# "Logging DocType Name": 30 # days to retain logs
|
|
# }
|
|
|
|
# Translation
|
|
# ------------
|
|
# List of apps whose translatable strings should be excluded from this app's translations.
|
|
# ignore_translatable_strings_from = []
|