feat: add Special Handling schema - SH Log, COD, Load Email DocTypes + Load/Pallet fields

This commit is contained in:
vagrant
2026-05-28 04:22:16 +00:00
parent 6fe6d61779
commit d087fc0f22
30 changed files with 953649 additions and 5713 deletions
+66 -66
View File
@@ -1,68 +1,68 @@
[
{
"docstatus": 0,
"doctype": "Client Script",
"dt": "Serial No",
"enabled": 1,
"modified": "2026-05-19 09:16:00.000000",
"module": null,
"name": "Serial No - Price Calculator",
"script": "frappe.ui.form.on('Serial No', {\n grade: function(frm) {\n calculate_recommended_price(frm);\n },\n cpu_test: function(frm) {\n check_hardware_failures(frm);\n },\n ram_test: function(frm) {\n check_hardware_failures(frm);\n },\n refresh: function(frm) {\n // Label change via JS (since fixture label updates need migrate)\n var price_field = frm.get_field('assigned_price');\n if (price_field && price_field.$wrapper) {\n price_field.$wrapper.find('.control-label').text('Recommended Price');\n }\n check_hardware_failures(frm);\n }\n});\n\nfunction check_hardware_failures(frm) {\n var cpu_fail = frm.doc.cpu_test === 'Fail';\n var ram_fail = frm.doc.ram_test === 'Fail';\n \n if (cpu_fail || ram_fail) {\n // Force Flagged grade and dismantle routing (but allow reviewer override)\n if (!frm.doc.grade || frm.doc.grade !== 'Flagged') {\n frm.set_value('grade', 'Flagged');\n }\n frm.set_value('assigned_price', null);\n frm.set_value('pricing_status', 'Dismantle');\n \n var reason = [];\n if (cpu_fail) reason.push('CPU test failed');\n if (ram_fail) reason.push('RAM test failed');\n \n // Show warning banner instead of locking the field\n frm.set_intro(\n '<i class=\"fa fa-exclamation-triangle\"></i> <strong>Hardware Failure:</strong> ' + \n reason.join(', ') + ' \u2014 routed to Dismantle. Change tests to Pass to re-enable pricing.',\n 'red'\n );\n } else {\n // Clear the warning banner\n frm.clear_intro();\n // If grade was Flagged but tests now pass, let user manually change grade\n }\n}\n\nfunction calculate_recommended_price(frm) {\n var grade = frm.doc.grade;\n \n // Flagged = no price, show FLAGGED text\n if (!grade || grade === 'Flagged') {\n frm.set_value('assigned_price', null);\n frm.set_value('pricing_status', grade === 'Flagged' ? 'Flagged' : 'Needs Pricing');\n return;\n }\n \n // Need item reference to get market prices\n if (!frm.doc.item_code) {\n return;\n }\n \n frappe.call({\n method: 'frappe.client.get',\n args: {\n doctype: 'Item',\n name: frm.doc.item_code\n },\n callback: function(r) {\n if (!r.message) return;\n var item = r.message;\n var base_price = 0;\n var price_source = '';\n \n switch(grade) {\n case 'High':\n base_price = item.market_high || item.base_market_price || 0;\n price_source = 'market_high';\n break;\n case 'Med':\n base_price = item.market_median || item.base_market_price || 0;\n price_source = 'market_median';\n break;\n case 'Low':\n base_price = item.market_low || item.base_market_price || 0;\n price_source = 'market_low';\n break;\n }\n \n if (base_price > 0) {\n frm.set_value('assigned_price', Math.round(base_price * 100) / 100);\n frm.set_value('pricing_status', 'Priced');\n frm.set_value('pricing_source', price_source);\n } else {\n frm.set_value('assigned_price', null);\n frm.set_value('pricing_status', 'Needs Pricing');\n }\n }\n });\n}\n",
"view": "Form"
},
{
"docstatus": 0,
"doctype": "Client Script",
"dt": "Pallet",
"enabled": 1,
"modified": "2026-05-17 05:39:15.497479",
"module": null,
"name": "Pallet - View Serials",
"script": "frappe.ui.form.on('Pallet', {\n refresh: function(frm) {\n frm.add_custom_button(__('View Serials'), function() {\n frappe.set_route('List', 'Serial No', {\n 'pallet': frm.doc.pallet_number || frm.doc.name\n });\n }, __('View'));\n \n frm.add_custom_button(__('Serials Spreadsheet'), function() {\n frappe.set_route('query-report', 'Serial Nos by Pallet', {\n 'pallet': frm.doc.pallet_number || frm.doc.name\n });\n }, __('View'));\n }\n});\n",
"view": "Form"
},
{
"docstatus": 0,
"doctype": "Client Script",
"dt": "Load",
"enabled": 1,
"modified": "2026-05-17 05:39:15.577871",
"module": null,
"name": "Load - View Pallets Button",
"script": "frappe.ui.form.on('Load', {\n refresh: function(frm) {\n frm.add_custom_button(__('View Pallets'), function() {\n frappe.set_route('List', 'Pallet', {'load': frm.doc.name});\n }, __('Actions'));\n }\n});\n",
"view": "Form"
},
{
"docstatus": 0,
"doctype": "Client Script",
"dt": "Scheduled Pickup",
"enabled": 1,
"modified": "2026-05-17 05:39:15.588395",
"module": null,
"name": "Scheduled Pickup - Auto Fill",
"script": "frappe.ui.form.on('Scheduled Pickup', {\n customer_number: function(frm) {\n var customer = frm.doc.customer_number;\n if (!customer) {\n clear_supplier_fields(frm);\n return;\n }\n frappe.call({\n method: 'frappe.client.get',\n args: {doctype: 'Supplier', name: customer},\n callback: function(r) {\n if (!r.message) return;\n var s = r.message;\n if (!frm.doc.company_name && s.supplier_name) {\n frm.set_value('company_name', s.supplier_name);\n }\n if (s.supplier_primary_contact) {\n frappe.call({\n method: 'frappe.client.get',\n args: {doctype: 'Contact', name: s.supplier_primary_contact},\n callback: function(cr) {\n if (!cr.message) return;\n var ct = cr.message;\n var full_name = [ct.first_name, ct.last_name].filter(Boolean).join(' ');\n if (!frm.doc.contact_name) frm.set_value('contact_name', full_name);\n if (!frm.doc.contact_phone) frm.set_value('contact_phone', ct.phone || '');\n if (!frm.doc.contact_email) frm.set_value('contact_email', ct.email_id || '');\n }\n });\n }\n if (s.supplier_primary_address) {\n frappe.call({\n method: 'frappe.client.get',\n args: {doctype: 'Address', name: s.supplier_primary_address},\n callback: function(ar) {\n if (!ar.message) return;\n var a = ar.message;\n if (!frm.doc.address_line) frm.set_value('address_line', a.address_line1 || '');\n if (!frm.doc.city) frm.set_value('city', a.city || '');\n if (!frm.doc.state) frm.set_value('state', a.state || '');\n if (!frm.doc.zip_code) frm.set_value('zip_code', a.pincode || '');\n }\n });\n }\n if (s.geocoded && s.latitude && s.longitude) {\n frm.set_value('latitude', s.latitude);\n frm.set_value('longitude', s.longitude);\n frm.set_value('geocoded', 1);\n }\n }\n });\n }\n});\n\nfunction clear_supplier_fields(frm) {\n frm.set_value('company_name', '');\n frm.set_value('contact_name', '');\n frm.set_value('contact_phone', '');\n frm.set_value('contact_email', '');\n frm.set_value('address_line', '');\n frm.set_value('city', '');\n frm.set_value('state', '');\n frm.set_value('zip_code', '');\n frm.set_value('latitude', '');\n frm.set_value('longitude', '');\n frm.set_value('geocoded', 0);\n}\n",
"view": "Form"
},
{
"docstatus": 0,
"doctype": "Client Script",
"dt": "System Pricing",
"enabled": 1,
"modified": "2026-05-17 05:41:31.790905",
"module": null,
"name": "System Pricing - Age Indicators",
"script": "frappe.listview_settings['System Pricing'] = {\n add_fields: [\"scraped_at\", \"days_since_pricing\", \"pricing_status\"],\n get_indicator: function(doc) {\n if (doc.pricing_status === \"Needs Pricing\" || doc.pricing_status === \"Error\") {\n return [__(\"Needs Pricing\"), \"orange\", \"pricing_status,=,Needs Pricing\"];\n }\n if (!doc.scraped_at) {\n return [__(\"No Date\"), \"gray\", \"scraped_at,is,not set\"];\n }\n var days = doc.days_since_pricing || 0;\n if (days < 90) {\n return [__(\"Fresh\"), \"green\", \"days_since_pricing,<,90\"];\n } else if (days < 120) {\n return [__(\"Aging\"), \"yellow\", \"days_since_pricing,<,120\"];\n } else {\n return [__(\"Expired\"), \"red\", \"days_since_pricing,>=,120\"];\n }\n }\n};",
"view": "List"
},
{
"docstatus": 0,
"doctype": "Client Script",
"dt": "System Pricing",
"enabled": 1,
"modified": "2026-05-17 05:41:31.954814",
"module": null,
"name": "System Pricing - Auto Calculate Days",
"script": "frappe.ui.form.on('System Pricing', {\n refresh: function(frm) {\n calculate_days(frm);\n },\n scraped_at: function(frm) {\n calculate_days(frm);\n }\n});\n\nfunction calculate_days(frm) {\n if (frm.doc.scraped_at) {\n var scraped = new Date(frm.doc.scraped_at);\n var now = new Date();\n var diffTime = Math.abs(now - scraped);\n var diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n frm.set_value('days_since_pricing', diffDays);\n } else {\n frm.set_value('days_since_pricing', 0);\n }\n}",
"view": "Form"
}
{
"docstatus": 0,
"doctype": "Client Script",
"dt": "Serial No",
"enabled": 1,
"modified": "2026-05-19 09:16:00",
"module": null,
"name": "Serial No - Price Calculator",
"script": "frappe.ui.form.on('Serial No', {\n grade: function(frm) {\n calculate_recommended_price(frm);\n },\n cpu_test: function(frm) {\n check_hardware_failures(frm);\n },\n ram_test: function(frm) {\n check_hardware_failures(frm);\n },\n refresh: function(frm) {\n // Label change via JS (since fixture label updates need migrate)\n var price_field = frm.get_field('assigned_price');\n if (price_field && price_field.$wrapper) {\n price_field.$wrapper.find('.control-label').text('Recommended Price');\n }\n check_hardware_failures(frm);\n }\n});\n\nfunction check_hardware_failures(frm) {\n var cpu_fail = frm.doc.cpu_test === 'Fail';\n var ram_fail = frm.doc.ram_test === 'Fail';\n \n if (cpu_fail || ram_fail) {\n // Force Flagged grade and dismantle routing (but allow reviewer override)\n if (!frm.doc.grade || frm.doc.grade !== 'Flagged') {\n frm.set_value('grade', 'Flagged');\n }\n frm.set_value('assigned_price', null);\n frm.set_value('pricing_status', 'Dismantle');\n \n var reason = [];\n if (cpu_fail) reason.push('CPU test failed');\n if (ram_fail) reason.push('RAM test failed');\n \n // Show warning banner instead of locking the field\n frm.set_intro(\n '<i class=\"fa fa-exclamation-triangle\"></i> <strong>Hardware Failure:</strong> ' + \n reason.join(', ') + ' routed to Dismantle. Change tests to Pass to re-enable pricing.',\n 'red'\n );\n } else {\n // Clear the warning banner\n frm.clear_intro();\n // If grade was Flagged but tests now pass, let user manually change grade\n }\n}\n\nfunction calculate_recommended_price(frm) {\n var grade = frm.doc.grade;\n \n // Flagged = no price, show FLAGGED text\n if (!grade || grade === 'Flagged') {\n frm.set_value('assigned_price', null);\n frm.set_value('pricing_status', grade === 'Flagged' ? 'Flagged' : 'Needs Pricing');\n return;\n }\n \n // Need item reference to get market prices\n if (!frm.doc.item_code) {\n return;\n }\n \n frappe.call({\n method: 'frappe.client.get',\n args: {\n doctype: 'Item',\n name: frm.doc.item_code\n },\n callback: function(r) {\n if (!r.message) return;\n var item = r.message;\n var base_price = 0;\n var price_source = '';\n \n switch(grade) {\n case 'High':\n base_price = item.market_high || item.base_market_price || 0;\n price_source = 'market_high';\n break;\n case 'Med':\n base_price = item.market_median || item.base_market_price || 0;\n price_source = 'market_median';\n break;\n case 'Low':\n base_price = item.market_low || item.base_market_price || 0;\n price_source = 'market_low';\n break;\n }\n \n if (base_price > 0) {\n frm.set_value('assigned_price', Math.round(base_price * 100) / 100);\n frm.set_value('pricing_status', 'Priced');\n frm.set_value('pricing_source', price_source);\n } else {\n frm.set_value('assigned_price', null);\n frm.set_value('pricing_status', 'Needs Pricing');\n }\n }\n });\n}\n",
"view": "Form"
},
{
"docstatus": 0,
"doctype": "Client Script",
"dt": "Pallet",
"enabled": 1,
"modified": "2026-05-17 05:39:15.497479",
"module": null,
"name": "Pallet - View Serials",
"script": "frappe.ui.form.on('Pallet', {\n refresh: function(frm) {\n frm.add_custom_button(__('View Serials'), function() {\n frappe.set_route('List', 'Serial No', {\n 'pallet': frm.doc.pallet_number || frm.doc.name\n });\n }, __('View'));\n \n frm.add_custom_button(__('Serials Spreadsheet'), function() {\n frappe.set_route('query-report', 'Serial Nos by Pallet', {\n 'pallet': frm.doc.pallet_number || frm.doc.name\n });\n }, __('View'));\n }\n});\n",
"view": "Form"
},
{
"docstatus": 0,
"doctype": "Client Script",
"dt": "Load",
"enabled": 1,
"modified": "2026-05-17 05:39:15.577871",
"module": null,
"name": "Load - View Pallets Button",
"script": "frappe.ui.form.on('Load', {\n refresh: function(frm) {\n frm.add_custom_button(__('View Pallets'), function() {\n frappe.set_route('List', 'Pallet', {'load': frm.doc.name});\n }, __('Actions'));\n }\n});\n",
"view": "Form"
},
{
"docstatus": 0,
"doctype": "Client Script",
"dt": "Scheduled Pickup",
"enabled": 1,
"modified": "2026-05-17 05:39:15.588395",
"module": null,
"name": "Scheduled Pickup - Auto Fill",
"script": "frappe.ui.form.on('Scheduled Pickup', {\n customer_number: function(frm) {\n var customer = frm.doc.customer_number;\n if (!customer) {\n clear_supplier_fields(frm);\n return;\n }\n frappe.call({\n method: 'frappe.client.get',\n args: {doctype: 'Supplier', name: customer},\n callback: function(r) {\n if (!r.message) return;\n var s = r.message;\n if (!frm.doc.company_name && s.supplier_name) {\n frm.set_value('company_name', s.supplier_name);\n }\n if (s.supplier_primary_contact) {\n frappe.call({\n method: 'frappe.client.get',\n args: {doctype: 'Contact', name: s.supplier_primary_contact},\n callback: function(cr) {\n if (!cr.message) return;\n var ct = cr.message;\n var full_name = [ct.first_name, ct.last_name].filter(Boolean).join(' ');\n if (!frm.doc.contact_name) frm.set_value('contact_name', full_name);\n if (!frm.doc.contact_phone) frm.set_value('contact_phone', ct.phone || '');\n if (!frm.doc.contact_email) frm.set_value('contact_email', ct.email_id || '');\n }\n });\n }\n if (s.supplier_primary_address) {\n frappe.call({\n method: 'frappe.client.get',\n args: {doctype: 'Address', name: s.supplier_primary_address},\n callback: function(ar) {\n if (!ar.message) return;\n var a = ar.message;\n if (!frm.doc.address_line) frm.set_value('address_line', a.address_line1 || '');\n if (!frm.doc.city) frm.set_value('city', a.city || '');\n if (!frm.doc.state) frm.set_value('state', a.state || '');\n if (!frm.doc.zip_code) frm.set_value('zip_code', a.pincode || '');\n }\n });\n }\n if (s.geocoded && s.latitude && s.longitude) {\n frm.set_value('latitude', s.latitude);\n frm.set_value('longitude', s.longitude);\n frm.set_value('geocoded', 1);\n }\n }\n });\n }\n});\n\nfunction clear_supplier_fields(frm) {\n frm.set_value('company_name', '');\n frm.set_value('contact_name', '');\n frm.set_value('contact_phone', '');\n frm.set_value('contact_email', '');\n frm.set_value('address_line', '');\n frm.set_value('city', '');\n frm.set_value('state', '');\n frm.set_value('zip_code', '');\n frm.set_value('latitude', '');\n frm.set_value('longitude', '');\n frm.set_value('geocoded', 0);\n}\n",
"view": "Form"
},
{
"docstatus": 0,
"doctype": "Client Script",
"dt": "System Pricing",
"enabled": 1,
"modified": "2026-05-17 05:41:31.790905",
"module": null,
"name": "System Pricing - Age Indicators",
"script": "frappe.listview_settings['System Pricing'] = {\n add_fields: [\"scraped_at\", \"days_since_pricing\", \"pricing_status\"],\n get_indicator: function(doc) {\n if (doc.pricing_status === \"Needs Pricing\" || doc.pricing_status === \"Error\") {\n return [__(\"Needs Pricing\"), \"orange\", \"pricing_status,=,Needs Pricing\"];\n }\n if (!doc.scraped_at) {\n return [__(\"No Date\"), \"gray\", \"scraped_at,is,not set\"];\n }\n var days = doc.days_since_pricing || 0;\n if (days < 90) {\n return [__(\"Fresh\"), \"green\", \"days_since_pricing,<,90\"];\n } else if (days < 120) {\n return [__(\"Aging\"), \"yellow\", \"days_since_pricing,<,120\"];\n } else {\n return [__(\"Expired\"), \"red\", \"days_since_pricing,>=,120\"];\n }\n }\n};",
"view": "List"
},
{
"docstatus": 0,
"doctype": "Client Script",
"dt": "System Pricing",
"enabled": 1,
"modified": "2026-05-17 05:41:31.954814",
"module": null,
"name": "System Pricing - Auto Calculate Days",
"script": "frappe.ui.form.on('System Pricing', {\n refresh: function(frm) {\n calculate_days(frm);\n },\n scraped_at: function(frm) {\n calculate_days(frm);\n }\n});\n\nfunction calculate_days(frm) {\n if (frm.doc.scraped_at) {\n var scraped = new Date(frm.doc.scraped_at);\n var now = new Date();\n var diffTime = Math.abs(now - scraped);\n var diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n frm.set_value('days_since_pricing', diffDays);\n } else {\n frm.set_value('days_since_pricing', 0);\n }\n}",
"view": "Form"
}
]
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+8
View File
@@ -0,0 +1,8 @@
// Copyright (c) 2026, Westech and contributors
// For license information, please see license.txt
// frappe.ui.form.on("COD", {
// refresh(frm) {
// },
// });
File diff suppressed because it is too large Load Diff
+9
View File
@@ -0,0 +1,9 @@
# Copyright (c) 2026, Westech and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class COD(Document):
pass
@@ -0,0 +1,9 @@
# Copyright (c) 2026, Westech and Contributors
# See license.txt
# import frappe
from frappe.tests.utils import FrappeTestCase
class TestCOD(FrappeTestCase):
pass
@@ -0,0 +1,523 @@
{
"name": "HDD Serial Entry",
"creation": "2026-05-27 21:19:10.358742",
"modified": "2026-05-27 21:19:10.358742",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"idx": 0,
"search_fields": null,
"issingle": 0,
"is_virtual": 0,
"is_tree": 0,
"istable": 1,
"editable_grid": 1,
"track_changes": 0,
"module": "Westech R2",
"restrict_to_domain": null,
"app": null,
"autoname": null,
"naming_rule": "",
"title_field": null,
"image_field": null,
"timeline_field": null,
"sort_field": "modified",
"sort_order": "DESC",
"description": null,
"colour": null,
"read_only": 0,
"in_create": 0,
"menu_index": null,
"parent_node": null,
"smallicon": null,
"allow_copy": 0,
"allow_rename": 1,
"allow_import": 0,
"hide_toolbar": 0,
"track_seen": 0,
"max_attachments": 0,
"print_outline": null,
"document_type": "",
"icon": null,
"color": null,
"tag_fields": null,
"subject": null,
"_last_update": null,
"engine": "InnoDB",
"default_print_format": null,
"is_submittable": 0,
"show_name_in_global_search": 0,
"_user_tags": null,
"custom": 1,
"beta": 0,
"has_web_view": 0,
"allow_guest_to_view": 0,
"route": null,
"is_published_field": null,
"website_search_field": null,
"email_append_to": 0,
"subject_field": null,
"sender_field": null,
"show_title_field_in_link": 0,
"migration_hash": "772713464c1b4e77b05b4024ece77935",
"translated_doctype": 0,
"is_calendar_and_gantt": 0,
"quick_entry": 0,
"grid_page_length": 50,
"rows_threshold_for_grid_search": 20,
"track_views": 0,
"queue_in_background": 0,
"documentation": null,
"nsm_parent_field": null,
"allow_events_in_timeline": 0,
"allow_auto_repeat": 0,
"make_attachments_public": 0,
"default_view": null,
"force_re_route_to_default_view": 0,
"show_preview_popup": 0,
"default_email_template": null,
"sender_name_field": null,
"recipient_account_field": null,
"protect_attached_files": 0,
"index_web_pages_for_search": 1,
"row_format": "Dynamic",
"doctype": "DocType",
"states": [],
"fields": [
{
"name": "b6dn4ermf3",
"creation": "2026-05-27 21:19:10.359189",
"modified": "2026-05-27 21:19:10.359189",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "HDD Serial Entry",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 1,
"fieldname": "serial_number",
"label": "Serial Number",
"oldfieldname": null,
"fieldtype": "Data",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 1,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": null,
"description": null,
"in_list_view": 1,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": "",
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "b6d2hhv6s6",
"creation": "2026-05-27 21:19:10.359611",
"modified": "2026-05-27 21:19:10.359611",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "HDD Serial Entry",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 2,
"fieldname": "wiped",
"label": "Wiped",
"oldfieldname": null,
"fieldtype": "Check",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": "0",
"description": null,
"in_list_view": 0,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": "",
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "b6df58aa1r",
"creation": "2026-05-27 21:19:10.360083",
"modified": "2026-05-27 21:19:10.360083",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "HDD Serial Entry",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 3,
"fieldname": "failed_pretest",
"label": "Failed Pretest",
"oldfieldname": null,
"fieldtype": "Check",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": "0",
"description": null,
"in_list_view": 0,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": "",
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "b6dh6uci68",
"creation": "2026-05-27 21:19:10.360508",
"modified": "2026-05-27 21:19:10.360508",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "HDD Serial Entry",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 4,
"fieldname": "degaussed",
"label": "Degaussed",
"oldfieldname": null,
"fieldtype": "Check",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": "0",
"description": null,
"in_list_view": 0,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": "",
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "b6d62sofki",
"creation": "2026-05-27 21:19:10.360943",
"modified": "2026-05-27 21:19:10.360943",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "HDD Serial Entry",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 5,
"fieldname": "shredded",
"label": "Shredded",
"oldfieldname": null,
"fieldtype": "Check",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": "0",
"description": null,
"in_list_view": 0,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": "",
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "b6d21l3cg5",
"creation": "2026-05-27 21:19:10.361358",
"modified": "2026-05-27 21:19:10.361358",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "HDD Serial Entry",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 6,
"fieldname": "final_scan",
"label": "Final Scan Before Wipe/Degauss/Shred",
"oldfieldname": null,
"fieldtype": "Data",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": null,
"description": null,
"in_list_view": 0,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": "",
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
}
],
"links": [],
"permissions": [],
"actions": []
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,8 @@
// Copyright (c) 2026, Westech and contributors
// For license information, please see license.txt
// frappe.ui.form.on("Load Email", {
// refresh(frm) {
// },
// });
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,9 @@
# Copyright (c) 2026, Westech and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class LoadEmail(Document):
pass
@@ -0,0 +1,9 @@
# Copyright (c) 2026, Westech and Contributors
# See license.txt
# import frappe
from frappe.tests.utils import FrappeTestCase
class TestLoadEmail(FrappeTestCase):
pass
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,379 @@
{
"name": "Load Pallet",
"creation": "2026-05-27 21:19:10.422723",
"modified": "2026-05-27 21:19:10.422723",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"idx": 0,
"search_fields": null,
"issingle": 0,
"is_virtual": 0,
"is_tree": 0,
"istable": 1,
"editable_grid": 1,
"track_changes": 0,
"module": "Westech R2",
"restrict_to_domain": null,
"app": null,
"autoname": null,
"naming_rule": "",
"title_field": null,
"image_field": null,
"timeline_field": null,
"sort_field": "modified",
"sort_order": "DESC",
"description": null,
"colour": null,
"read_only": 0,
"in_create": 0,
"menu_index": null,
"parent_node": null,
"smallicon": null,
"allow_copy": 0,
"allow_rename": 1,
"allow_import": 0,
"hide_toolbar": 0,
"track_seen": 0,
"max_attachments": 0,
"print_outline": null,
"document_type": "",
"icon": null,
"color": null,
"tag_fields": null,
"subject": null,
"_last_update": null,
"engine": "InnoDB",
"default_print_format": null,
"is_submittable": 0,
"show_name_in_global_search": 0,
"_user_tags": null,
"custom": 1,
"beta": 0,
"has_web_view": 0,
"allow_guest_to_view": 0,
"route": null,
"is_published_field": null,
"website_search_field": null,
"email_append_to": 0,
"subject_field": null,
"sender_field": null,
"show_title_field_in_link": 0,
"migration_hash": "772713464c1b4e77b05b4024ece77935",
"translated_doctype": 0,
"is_calendar_and_gantt": 0,
"quick_entry": 0,
"grid_page_length": 50,
"rows_threshold_for_grid_search": 20,
"track_views": 0,
"queue_in_background": 0,
"documentation": null,
"nsm_parent_field": null,
"allow_events_in_timeline": 0,
"allow_auto_repeat": 0,
"make_attachments_public": 0,
"default_view": null,
"force_re_route_to_default_view": 0,
"show_preview_popup": 0,
"default_email_template": null,
"sender_name_field": null,
"recipient_account_field": null,
"protect_attached_files": 0,
"index_web_pages_for_search": 1,
"row_format": "Dynamic",
"doctype": "DocType",
"states": [],
"fields": [
{
"name": "c10tnjj24r",
"creation": "2026-05-27 21:19:10.423174",
"modified": "2026-05-27 21:19:10.423174",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "Load Pallet",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 1,
"fieldname": "pallet",
"label": "Pallet",
"oldfieldname": null,
"fieldtype": "Link",
"oldfieldtype": null,
"options": "Pallet",
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 1,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": null,
"description": null,
"in_list_view": 1,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": "",
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "c10jrqhi9n",
"creation": "2026-05-27 21:19:10.423557",
"modified": "2026-05-27 21:19:10.423557",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "Load Pallet",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 2,
"fieldname": "pallet_number",
"label": "Pallet Number",
"oldfieldname": null,
"fieldtype": "Data",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": null,
"description": null,
"in_list_view": 1,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 1,
"precision": "",
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": "pallet.pallet_number",
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "c1045o8sl3",
"creation": "2026-05-27 21:19:10.423966",
"modified": "2026-05-27 21:19:10.423966",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "Load Pallet",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 3,
"fieldname": "status",
"label": "Status",
"oldfieldname": null,
"fieldtype": "Data",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": null,
"description": null,
"in_list_view": 0,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 1,
"precision": "",
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": "pallet.status",
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "c10jt8oh0m",
"creation": "2026-05-27 21:19:10.424351",
"modified": "2026-05-27 21:19:10.424351",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "Load Pallet",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 4,
"fieldname": "total_items",
"label": "Total Items",
"oldfieldname": null,
"fieldtype": "Int",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": null,
"description": null,
"in_list_view": 0,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 1,
"precision": "",
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": "pallet.total_items",
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
}
],
"links": [],
"permissions": [],
"actions": []
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,595 @@
{
"name": "SH Material Entry",
"creation": "2026-05-27 21:18:00.229054",
"modified": "2026-05-27 21:19:08.497693",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"idx": 0,
"search_fields": null,
"issingle": 0,
"is_virtual": 0,
"is_tree": 0,
"istable": 1,
"editable_grid": 1,
"track_changes": 0,
"module": "Westech R2",
"restrict_to_domain": null,
"app": null,
"autoname": null,
"naming_rule": null,
"title_field": null,
"image_field": null,
"timeline_field": null,
"sort_field": "modified",
"sort_order": "DESC",
"description": null,
"colour": null,
"read_only": 0,
"in_create": 0,
"menu_index": null,
"parent_node": null,
"smallicon": null,
"allow_copy": 0,
"allow_rename": 1,
"allow_import": 0,
"hide_toolbar": 0,
"track_seen": 0,
"max_attachments": 0,
"print_outline": null,
"document_type": null,
"icon": null,
"color": null,
"tag_fields": null,
"subject": null,
"_last_update": null,
"engine": "InnoDB",
"default_print_format": null,
"is_submittable": 0,
"show_name_in_global_search": 0,
"_user_tags": null,
"custom": 0,
"beta": 0,
"has_web_view": 0,
"allow_guest_to_view": 0,
"route": null,
"is_published_field": null,
"website_search_field": null,
"email_append_to": 0,
"subject_field": null,
"sender_field": null,
"show_title_field_in_link": 0,
"migration_hash": "56db6508bef12c8983cca3796a0267ae",
"translated_doctype": 0,
"is_calendar_and_gantt": 0,
"quick_entry": 0,
"grid_page_length": 50,
"rows_threshold_for_grid_search": 20,
"track_views": 0,
"queue_in_background": 0,
"documentation": null,
"nsm_parent_field": null,
"allow_events_in_timeline": 0,
"allow_auto_repeat": 0,
"make_attachments_public": 0,
"default_view": null,
"force_re_route_to_default_view": 0,
"show_preview_popup": 0,
"default_email_template": null,
"sender_name_field": null,
"recipient_account_field": null,
"protect_attached_files": 0,
"index_web_pages_for_search": 1,
"row_format": "Dynamic",
"doctype": "DocType",
"states": [],
"fields": [
{
"name": "5isip8scnb",
"creation": "2026-05-27 21:18:00.229054",
"modified": "2026-05-27 21:19:08.447436",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "SH Material Entry",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 1,
"fieldname": "material",
"label": "Material",
"oldfieldname": null,
"fieldtype": "Data",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 2,
"default": null,
"description": null,
"in_list_view": 1,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": null,
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "5isa6kg3n7",
"creation": "2026-05-27 21:18:00.229054",
"modified": "2026-05-27 21:19:08.447436",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "SH Material Entry",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 2,
"fieldname": "pct_of_material",
"label": "% of Material",
"oldfieldname": null,
"fieldtype": "Data",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": null,
"description": null,
"in_list_view": 0,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": null,
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "5is1060l84",
"creation": "2026-05-27 21:18:00.229054",
"modified": "2026-05-27 21:19:08.447436",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "SH Material Entry",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 3,
"fieldname": "weight",
"label": "Weight (lbs)",
"oldfieldname": null,
"fieldtype": "Float",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": null,
"description": null,
"in_list_view": 1,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": null,
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "5iss20871a",
"creation": "2026-05-27 21:18:00.229054",
"modified": "2026-05-27 21:19:08.447436",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "SH Material Entry",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 4,
"fieldname": "hdd_count",
"label": "# Hard Drives",
"oldfieldname": null,
"fieldtype": "Int",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": null,
"description": null,
"in_list_view": 0,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": null,
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "5is30plne8",
"creation": "2026-05-27 21:18:00.229054",
"modified": "2026-05-27 21:19:08.447436",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "SH Material Entry",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 5,
"fieldname": "hdd_scan_sent",
"label": "HDD Scan Sent",
"oldfieldname": null,
"fieldtype": "Check",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": "0",
"description": null,
"in_list_view": 0,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": null,
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "5is1qrata5",
"creation": "2026-05-27 21:18:00.229054",
"modified": "2026-05-27 21:19:08.447436",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "SH Material Entry",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 6,
"fieldname": "sign_off",
"label": "Sign-off Initials",
"oldfieldname": null,
"fieldtype": "Data",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": null,
"description": null,
"in_list_view": 0,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": null,
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
},
{
"name": "5is8ll1b8b",
"creation": "2026-05-27 21:18:00.229054",
"modified": "2026-05-27 21:19:08.447436",
"modified_by": "Administrator",
"owner": "Administrator",
"docstatus": 0,
"parent": "SH Material Entry",
"parentfield": "fields",
"parenttype": "DocType",
"idx": 7,
"fieldname": "date",
"label": "Sign-off Date",
"oldfieldname": null,
"fieldtype": "Date",
"oldfieldtype": null,
"options": null,
"search_index": 0,
"show_dashboard": 0,
"hidden": 0,
"set_only_once": 0,
"allow_in_quick_entry": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"bold": 0,
"in_global_search": 0,
"collapsible": 0,
"unique": 0,
"no_copy": 0,
"allow_on_submit": 0,
"show_preview_popup": 0,
"trigger": null,
"collapsible_depends_on": null,
"mandatory_depends_on": null,
"read_only_depends_on": null,
"depends_on": null,
"permlevel": 0,
"ignore_user_permissions": 0,
"width": null,
"print_width": null,
"columns": 0,
"default": null,
"description": null,
"in_list_view": 0,
"fetch_if_empty": 0,
"in_filter": 0,
"remember_last_selected_value": 0,
"ignore_xss_filter": 0,
"print_hide_if_no_value": 0,
"allow_bulk_edit": 0,
"in_standard_filter": 0,
"in_preview": 0,
"read_only": 0,
"precision": null,
"max_height": null,
"length": 0,
"translatable": 0,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"non_negative": 0,
"is_virtual": 0,
"sort_options": 0,
"link_filters": null,
"fetch_from": null,
"show_on_timeline": 0,
"make_attachment_public": 0,
"documentation_url": null,
"placeholder": null,
"doctype": "DocField"
}
],
"links": [],
"permissions": [],
"actions": []
}
@@ -0,0 +1,9 @@
# Copyright (c) 2026, Westech and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class SHMaterialEntry(Document):
pass
@@ -0,0 +1,8 @@
// Copyright (c) 2026, Westech and contributors
// For license information, please see license.txt
// frappe.ui.form.on("Special Handling Log", {
// refresh(frm) {
// },
// });
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,9 @@
# Copyright (c) 2026, Westech and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class SpecialHandlingLog(Document):
pass
@@ -0,0 +1,9 @@
# Copyright (c) 2026, Westech and Contributors
# See license.txt
# import frappe
from frappe.tests.utils import FrappeTestCase
class TestSpecialHandlingLog(FrappeTestCase):
pass