├── .gitignore ├── MANIFEST.in ├── README.md ├── barcode_shrdc ├── __init__.py ├── barcode_shrdc │ ├── __init__.py │ └── doctype │ │ ├── __init__.py │ │ ├── barcode_configuration │ │ ├── __init__.py │ │ ├── barcode_configuration.js │ │ ├── barcode_configuration.json │ │ ├── barcode_configuration.py │ │ └── test_barcode_configuration.py │ │ ├── barcode_generator_items │ │ ├── __init__.py │ │ ├── barcode_generator_items.json │ │ └── barcode_generator_items.py │ │ ├── barcode_printing │ │ ├── __init__.py │ │ ├── barcode_printing.js │ │ ├── barcode_printing.json │ │ ├── barcode_printing.py │ │ └── test_barcode_printing.py │ │ └── qr_code_configuration │ │ ├── __init__.py │ │ ├── qr_code_configuration.js │ │ ├── qr_code_configuration.json │ │ ├── qr_code_configuration.py │ │ └── test_qr_code_configuration.py ├── config │ ├── __init__.py │ ├── barcode_shrdc.py │ ├── desktop.py │ └── docs.py ├── fixtures │ ├── custom_field.json │ ├── custom_script.json │ ├── print_format.json │ ├── property_setter.json │ ├── report.json │ ├── role.json │ ├── role_profile.json │ ├── workflow.json │ ├── workflow_action.json │ └── workflow_state.json ├── hooks.py ├── modules.txt ├── patches.txt ├── public │ └── hi.txt ├── templates │ ├── __init__.py │ ├── item_qr │ │ └── item_qr.css │ └── pages │ │ └── __init__.py └── www │ ├── item_qr.html │ └── item_qr.py ├── license.txt ├── requirements.txt └── setup.py /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.pyc 3 | *.egg-info 4 | *.swp 5 | tags 6 | barcode_shrdc/docs/current -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include MANIFEST.in 2 | include requirements.txt 3 | include *.json 4 | include *.md 5 | include *.py 6 | include *.txt 7 | recursive-include barcode_shrdc *.css 8 | recursive-include barcode_shrdc *.csv 9 | recursive-include barcode_shrdc *.html 10 | recursive-include barcode_shrdc *.ico 11 | recursive-include barcode_shrdc *.js 12 | recursive-include barcode_shrdc *.json 13 | recursive-include barcode_shrdc *.md 14 | recursive-include barcode_shrdc *.png 15 | recursive-include barcode_shrdc *.py 16 | recursive-include barcode_shrdc *.svg 17 | recursive-include barcode_shrdc *.txt 18 | recursive-exclude barcode_shrdc *.pyc -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## ERPNext Barcode Integration 2 | 3 | ERPNext Custom App to Generate barcode for items 4 | 5 | #### License 6 | 7 | MIT 8 | 9 | ## Contributors 10 | 1. [Lee Xin Yue](https://github.com/leexy0) 11 | 12 | 13 | ## License 14 | This software is licensed under the [GNU GPLv3 LICENSE](/LICENSE) © [Selangor Human Resource Development Centre](http://www.shrdc.org.my/). 2021. All Rights Reserved. 15 | -------------------------------------------------------------------------------- /barcode_shrdc/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | __version__ = '0.0.1' 5 | 6 | -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msf4-0/ERPNext-Barcode-Integration/e88597092387f4c4a0b62d6bde006517a75fdef9/barcode_shrdc/barcode_shrdc/__init__.py -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msf4-0/ERPNext-Barcode-Integration/e88597092387f4c4a0b62d6bde006517a75fdef9/barcode_shrdc/barcode_shrdc/doctype/__init__.py -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/barcode_configuration/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msf4-0/ERPNext-Barcode-Integration/e88597092387f4c4a0b62d6bde006517a75fdef9/barcode_shrdc/barcode_shrdc/doctype/barcode_configuration/__init__.py -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/barcode_configuration/barcode_configuration.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022, lxy and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on('Barcode Configuration', { 5 | // refresh: function(frm) { 6 | 7 | // } 8 | }); 9 | -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/barcode_configuration/barcode_configuration.json: -------------------------------------------------------------------------------- 1 | { 2 | "creation": "2022-01-07 14:47:51.157446", 3 | "doctype": "DocType", 4 | "editable_grid": 1, 5 | "engine": "InnoDB", 6 | "field_order": [ 7 | "barcode_section", 8 | "width", 9 | "height", 10 | "display_value", 11 | "text", 12 | "font", 13 | "fontoptions", 14 | "text_align", 15 | "text_position", 16 | "font_size", 17 | "background", 18 | "line", 19 | "texts_section", 20 | "show_item_code", 21 | "item_code_font_size", 22 | "show_item_name", 23 | "item_name_font_size", 24 | "show_item_price", 25 | "item_price_font_size" 26 | ], 27 | "fields": [ 28 | { 29 | "default": "2", 30 | "fieldname": "width", 31 | "fieldtype": "Int", 32 | "label": "Width" 33 | }, 34 | { 35 | "default": "100", 36 | "fieldname": "height", 37 | "fieldtype": "Int", 38 | "label": "Height" 39 | }, 40 | { 41 | "default": "1", 42 | "fieldname": "display_value", 43 | "fieldtype": "Check", 44 | "label": "Display Value" 45 | }, 46 | { 47 | "description": "Override barcode value\n\n", 48 | "fieldname": "text", 49 | "fieldtype": "Small Text", 50 | "label": "Text" 51 | }, 52 | { 53 | "fieldname": "fontoptions", 54 | "fieldtype": "Select", 55 | "label": "Font Options", 56 | "options": "\nbold\nitalic" 57 | }, 58 | { 59 | "default": "monospace", 60 | "description": "any default font or a font defined by a @font-face rule.", 61 | "fieldname": "font", 62 | "fieldtype": "Data", 63 | "label": "Font" 64 | }, 65 | { 66 | "fieldname": "text_align", 67 | "fieldtype": "Select", 68 | "label": "Text Align", 69 | "options": "Center\nLeft\nRight" 70 | }, 71 | { 72 | "fieldname": "text_position", 73 | "fieldtype": "Select", 74 | "label": "Text Position", 75 | "options": "Bottom\nTop" 76 | }, 77 | { 78 | "default": "20", 79 | "fieldname": "font_size", 80 | "fieldtype": "Int", 81 | "label": "Font Size" 82 | }, 83 | { 84 | "default": "#ffffff", 85 | "fieldname": "background", 86 | "fieldtype": "Color", 87 | "label": "Background" 88 | }, 89 | { 90 | "default": "#000000", 91 | "fieldname": "line", 92 | "fieldtype": "Color", 93 | "label": "Line" 94 | }, 95 | { 96 | "default": "1.3", 97 | "depends_on": "show_item_code", 98 | "fieldname": "item_code_font_size", 99 | "fieldtype": "Float", 100 | "label": "Item Code Font Size" 101 | }, 102 | { 103 | "default": "1.1", 104 | "depends_on": "show_item_name", 105 | "fieldname": "item_name_font_size", 106 | "fieldtype": "Float", 107 | "label": "Item Name Font Size" 108 | }, 109 | { 110 | "default": "1.1", 111 | "depends_on": "show_item_price", 112 | "fieldname": "item_price_font_size", 113 | "fieldtype": "Float", 114 | "label": "Item Price Font Size" 115 | }, 116 | { 117 | "description": "(in em)", 118 | "fieldname": "texts_section", 119 | "fieldtype": "Section Break", 120 | "label": "Texts" 121 | }, 122 | { 123 | "fieldname": "barcode_section", 124 | "fieldtype": "Section Break", 125 | "label": "Barcode" 126 | }, 127 | { 128 | "default": "1", 129 | "fieldname": "show_item_code", 130 | "fieldtype": "Check", 131 | "label": "Show Item Code" 132 | }, 133 | { 134 | "default": "1", 135 | "fieldname": "show_item_name", 136 | "fieldtype": "Check", 137 | "label": "Show Item Name" 138 | }, 139 | { 140 | "default": "1", 141 | "fieldname": "show_item_price", 142 | "fieldtype": "Check", 143 | "label": "Show Item Price" 144 | } 145 | ], 146 | "issingle": 1, 147 | "modified": "2022-02-16 15:59:10.745222", 148 | "modified_by": "Administrator", 149 | "module": "Barcode Shrdc", 150 | "name": "Barcode Configuration", 151 | "owner": "Administrator", 152 | "permissions": [ 153 | { 154 | "create": 1, 155 | "delete": 1, 156 | "email": 1, 157 | "print": 1, 158 | "read": 1, 159 | "role": "System Manager", 160 | "share": 1, 161 | "write": 1 162 | } 163 | ], 164 | "quick_entry": 1, 165 | "sort_field": "modified", 166 | "sort_order": "DESC", 167 | "track_changes": 1 168 | } -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/barcode_configuration/barcode_configuration.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright (c) 2022, lxy and contributors 3 | # For license information, please see license.txt 4 | 5 | from __future__ import unicode_literals 6 | # import frappe 7 | from frappe.model.document import Document 8 | 9 | class BarcodeConfiguration(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/barcode_configuration/test_barcode_configuration.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright (c) 2022, lxy and Contributors 3 | # See license.txt 4 | from __future__ import unicode_literals 5 | 6 | # import frappe 7 | import unittest 8 | 9 | class TestBarcodeConfiguration(unittest.TestCase): 10 | pass 11 | -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/barcode_generator_items/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msf4-0/ERPNext-Barcode-Integration/e88597092387f4c4a0b62d6bde006517a75fdef9/barcode_shrdc/barcode_shrdc/doctype/barcode_generator_items/__init__.py -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/barcode_generator_items/barcode_generator_items.json: -------------------------------------------------------------------------------- 1 | { 2 | "autoname": "hash", 3 | "creation": "2021-12-27 11:53:26.903695", 4 | "doctype": "DocType", 5 | "document_type": "Other", 6 | "editable_grid": 1, 7 | "engine": "InnoDB", 8 | "field_order": [ 9 | "barcode", 10 | "col_barcode_column", 11 | "barcode_type", 12 | "section_break_2", 13 | "warehouse", 14 | "sec_break1", 15 | "item_code", 16 | "item_group", 17 | "col_break2", 18 | "item_name", 19 | "subcontracted_item", 20 | "section_break_8", 21 | "description", 22 | "column_break_10", 23 | "image", 24 | "image_view", 25 | "quantity_and_rate", 26 | "set_basic_rate_manually", 27 | "qty", 28 | "basic_rate", 29 | "additional_cost", 30 | "rate", 31 | "col_break3", 32 | "uom", 33 | "conversion_factor", 34 | "retain_sample", 35 | "sample_quantity", 36 | "serial_no_batch", 37 | "serial_no", 38 | "batch_no", 39 | "quality_inspection", 40 | "reference_section", 41 | "ref_pr", 42 | "column_break_51", 43 | "ref_se" 44 | ], 45 | "fields": [ 46 | { 47 | "columns": 2, 48 | "fieldname": "barcode", 49 | "fieldtype": "Data", 50 | "in_list_view": 1, 51 | "label": "Barcode" 52 | }, 53 | { 54 | "fieldname": "col_barcode_column", 55 | "fieldtype": "Column Break" 56 | }, 57 | { 58 | "fieldname": "barcode_type", 59 | "fieldtype": "Select", 60 | "label": "Barcode Type", 61 | "options": "\nCODE128\nEAN13\nEAN8\nUPC\nCODE39" 62 | }, 63 | { 64 | "fieldname": "section_break_2", 65 | "fieldtype": "Section Break" 66 | }, 67 | { 68 | "fieldname": "warehouse", 69 | "fieldtype": "Link", 70 | "label": "Warehouse", 71 | "options": "Warehouse" 72 | }, 73 | { 74 | "fieldname": "sec_break1", 75 | "fieldtype": "Section Break" 76 | }, 77 | { 78 | "bold": 1, 79 | "columns": 3, 80 | "fieldname": "item_code", 81 | "fieldtype": "Link", 82 | "in_global_search": 1, 83 | "in_list_view": 1, 84 | "label": "Item Code", 85 | "oldfieldname": "item_code", 86 | "oldfieldtype": "Link", 87 | "options": "Item", 88 | "reqd": 1, 89 | "search_index": 1 90 | }, 91 | { 92 | "fetch_from": "item_code.item_group", 93 | "fieldname": "item_group", 94 | "fieldtype": "Data", 95 | "in_list_view": 1, 96 | "label": "Item Group" 97 | }, 98 | { 99 | "fieldname": "col_break2", 100 | "fieldtype": "Column Break" 101 | }, 102 | { 103 | "fetch_from": "item_code.item_name", 104 | "fieldname": "item_name", 105 | "fieldtype": "Data", 106 | "in_global_search": 1, 107 | "label": "Item Name", 108 | "print_hide": 1 109 | }, 110 | { 111 | "depends_on": "eval:parent.purpose == 'Send to Subcontractor'", 112 | "fieldname": "subcontracted_item", 113 | "fieldtype": "Link", 114 | "label": "Subcontracted Item", 115 | "options": "Item" 116 | }, 117 | { 118 | "collapsible": 1, 119 | "fieldname": "section_break_8", 120 | "fieldtype": "Section Break", 121 | "label": "Description" 122 | }, 123 | { 124 | "fetch_from": "item_code.description", 125 | "fieldname": "description", 126 | "fieldtype": "Text Editor", 127 | "label": "Description", 128 | "oldfieldname": "description", 129 | "oldfieldtype": "Text", 130 | "print_width": "300px", 131 | "width": "300px" 132 | }, 133 | { 134 | "fieldname": "column_break_10", 135 | "fieldtype": "Column Break" 136 | }, 137 | { 138 | "fieldname": "image", 139 | "fieldtype": "Attach", 140 | "hidden": 1, 141 | "label": "Image" 142 | }, 143 | { 144 | "fieldname": "image_view", 145 | "fieldtype": "Image", 146 | "label": "Image View", 147 | "options": "image", 148 | "print_hide": 1 149 | }, 150 | { 151 | "fieldname": "quantity_and_rate", 152 | "fieldtype": "Section Break", 153 | "label": "Quantity and Rate" 154 | }, 155 | { 156 | "default": "0", 157 | "depends_on": "eval:in_list([\"Repack\", \"Manufacture\"], parent.purpose) && doc.t_warehouse", 158 | "fieldname": "set_basic_rate_manually", 159 | "fieldtype": "Check", 160 | "label": "Set Basic Rate Manually" 161 | }, 162 | { 163 | "bold": 1, 164 | "columns": 1, 165 | "fieldname": "qty", 166 | "fieldtype": "Float", 167 | "in_list_view": 1, 168 | "label": "Qty", 169 | "oldfieldname": "qty", 170 | "oldfieldtype": "Currency", 171 | "reqd": 1 172 | }, 173 | { 174 | "bold": 1, 175 | "fieldname": "basic_rate", 176 | "fieldtype": "Currency", 177 | "label": "Basic Rate (as per Stock UOM)", 178 | "oldfieldname": "incoming_rate", 179 | "oldfieldtype": "Currency", 180 | "options": "Company:company:default_currency", 181 | "print_hide": 1 182 | }, 183 | { 184 | "fieldname": "additional_cost", 185 | "fieldtype": "Currency", 186 | "label": "Additional Cost", 187 | "options": "Company:company:default_currency", 188 | "print_hide": 1, 189 | "read_only": 1 190 | }, 191 | { 192 | "columns": 2, 193 | "fieldname": "rate", 194 | "fieldtype": "Currency", 195 | "in_list_view": 1, 196 | "label": "Rate", 197 | "options": "Company:company:default_currency" 198 | }, 199 | { 200 | "fieldname": "col_break3", 201 | "fieldtype": "Column Break" 202 | }, 203 | { 204 | "fieldname": "uom", 205 | "fieldtype": "Link", 206 | "label": "UOM", 207 | "oldfieldname": "uom", 208 | "oldfieldtype": "Link", 209 | "options": "UOM" 210 | }, 211 | { 212 | "fieldname": "conversion_factor", 213 | "fieldtype": "Float", 214 | "label": "Conversion Factor", 215 | "oldfieldname": "conversion_factor", 216 | "oldfieldtype": "Currency", 217 | "print_hide": 1 218 | }, 219 | { 220 | "default": "0", 221 | "fetch_from": "item_code.retain_sample", 222 | "fieldname": "retain_sample", 223 | "fieldtype": "Check", 224 | "label": "Retain Sample", 225 | "read_only": 1 226 | }, 227 | { 228 | "depends_on": "retain_sample", 229 | "fieldname": "sample_quantity", 230 | "fieldtype": "Int", 231 | "label": "Sample Quantity" 232 | }, 233 | { 234 | "fieldname": "serial_no_batch", 235 | "fieldtype": "Section Break", 236 | "label": "Serial No / Batch", 237 | "no_copy": 1 238 | }, 239 | { 240 | "fieldname": "serial_no", 241 | "fieldtype": "Small Text", 242 | "label": "Serial No", 243 | "no_copy": 1, 244 | "oldfieldname": "serial_no", 245 | "oldfieldtype": "Text" 246 | }, 247 | { 248 | "fieldname": "batch_no", 249 | "fieldtype": "Link", 250 | "label": "Batch No", 251 | "no_copy": 1, 252 | "oldfieldname": "batch_no", 253 | "oldfieldtype": "Link", 254 | "options": "Batch" 255 | }, 256 | { 257 | "depends_on": "eval:parent.inspection_required && doc.t_warehouse", 258 | "fieldname": "quality_inspection", 259 | "fieldtype": "Link", 260 | "label": "Quality Inspection", 261 | "options": "Quality Inspection" 262 | }, 263 | { 264 | "fieldname": "reference_section", 265 | "fieldtype": "Section Break", 266 | "label": "Reference" 267 | }, 268 | { 269 | "fieldname": "ref_pr", 270 | "fieldtype": "Link", 271 | "label": " Purchase Receipt", 272 | "options": "Purchase Receipt", 273 | "read_only": 1 274 | }, 275 | { 276 | "fieldname": "column_break_51", 277 | "fieldtype": "Column Break" 278 | }, 279 | { 280 | "fieldname": "ref_se", 281 | "fieldtype": "Link", 282 | "label": "Reference Stock Entry", 283 | "options": "Stock Entry", 284 | "read_only": 1 285 | } 286 | ], 287 | "istable": 1, 288 | "modified": "2022-02-19 15:36:31.685090", 289 | "modified_by": "Administrator", 290 | "module": "Barcode Shrdc", 291 | "name": "Barcode Generator Items", 292 | "owner": "Administrator", 293 | "permissions": [], 294 | "sort_field": "modified", 295 | "sort_order": "ASC" 296 | } -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/barcode_generator_items/barcode_generator_items.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright (c) 2022, lxy and contributors 3 | # For license information, please see license.txt 4 | 5 | from __future__ import unicode_literals 6 | # import frappe 7 | from frappe.model.document import Document 8 | 9 | class BarcodeGeneratorItems(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/barcode_printing/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msf4-0/ERPNext-Barcode-Integration/e88597092387f4c4a0b62d6bde006517a75fdef9/barcode_shrdc/barcode_shrdc/doctype/barcode_printing/__init__.py -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/barcode_printing/barcode_printing.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021, lxy and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on('Barcode Printing', { 5 | setup: function(frm){ 6 | frm.set_value("show_sku",0); 7 | frm.set_value("show_serial_no",0); 8 | frm.set_value("show_batch_no",0); 9 | }, 10 | refresh: function(frm) { 11 | frm.add_custom_button(__('Purchase Receipt'), function() { 12 | erpnext.utils.map_current_doc({ 13 | method: "barcode_shrdc.barcode_shrdc.doctype.barcode_printing.barcode_printing.pr_make_barcode", 14 | source_doctype: "Purchase Receipt", 15 | target: frm, 16 | date_field: "posting_date", 17 | setters: { 18 | supplier: frm.doc.supplier || undefined, 19 | }, 20 | get_query_filters: { 21 | docstatus: 1 22 | } 23 | }) 24 | 25 | }, __("Get items from")); 26 | 27 | frm.add_custom_button(__('Stock Entry'), function() { 28 | erpnext.utils.map_current_doc({ 29 | method: "barcode_shrdc.barcode_shrdc.doctype.barcode_printing.barcode_printing.se_make_barcode", 30 | source_doctype: "Stock Entry", 31 | target: frm, 32 | date_field: "posting_date", 33 | setters: { 34 | stock_entry_type: frm.doc.stock_entry_type, 35 | }, 36 | get_query_filters: { 37 | docstatus: 1 38 | } 39 | }) 40 | 41 | 42 | }, __("Get items from")); 43 | }, 44 | validate: function(frm) 45 | { 46 | for(let item of frm.doc.items) 47 | { 48 | if (item.serial_no) 49 | { 50 | var serial_numbers = item.serial_no.split("\n"); 51 | if (serial_numbers[serial_numbers.length-1]=='') 52 | { 53 | serial_numbers.pop(); 54 | } 55 | console.log(serial_numbers); 56 | var qty = item.qty; 57 | if (serial_numbers.length != qty || qty ==0) 58 | { 59 | frappe.validated = false; 60 | frappe.msgprint({ 61 | title: __('Warning'), 62 | indicator: 'red', 63 | message: __('{0}: serial no. does not match the number of qty.',[item.item_code]), 64 | }); 65 | } 66 | } 67 | 68 | 69 | 70 | } 71 | 72 | 73 | }, 74 | get_barcode: function(frm) 75 | { 76 | frm.doc.items.forEach(d => 77 | { 78 | if (d.item_code) 79 | { 80 | console.log("HELLO"); 81 | frappe.call({ 82 | method: "barcode_shrdc.barcode_shrdc.doctype.barcode_printing.barcode_printing.search_item_serial_or_batch_or_barcode_number", 83 | args: { 84 | search_value:1, 85 | item:d 86 | }, 87 | callback: function(r) { 88 | console.log(r); 89 | var barcode_val = r.message.barcode; 90 | var barcode_type = r.message.barcode_type; 91 | frappe.model.set_value(d.doctype,d.name,"barcode",barcode_val); 92 | frappe.model.set_value(d.doctype,d.name,"barcode_type",barcode_type); 93 | } 94 | }) 95 | } 96 | 97 | }) 98 | }, 99 | show_sku: function(frm) { 100 | frm.trigger("show_sku_barcode"); 101 | }, 102 | show_batch_no: function(frm) { 103 | frm.trigger("show_batch_no_barcode"); 104 | }, 105 | batch_barcode_type: function(frm) { 106 | frm.trigger("show_batch_no_barcode"); 107 | }, 108 | show_serial_no: function(frm) { 109 | frm.trigger("show_serial_no_barcode"); 110 | }, 111 | serial_barcode_type: function(frm) { 112 | frm.trigger("show_serial_no_barcode"); 113 | }, 114 | create_qr: function(frm) 115 | { 116 | frappe.call({ 117 | method: "barcode_shrdc.barcode_shrdc.doctype.barcode_printing.barcode_printing.make_qrcode", 118 | args: { 119 | doc:frm.doc, 120 | route: frappe.urllib.get_base_url() 121 | 122 | }, 123 | callback: function(r) { 124 | console.log(r.message); 125 | frm.set_value("qrcodes",r.message); 126 | frm.set_value("qr_created",1); 127 | $(frm.fields_dict['qrcodes'].$wrapper).html(r.message) 128 | } 129 | }) 130 | 131 | }, 132 | show_sku_barcode: function(frm) { 133 | if(frm.doc.show_sku) 134 | { 135 | // var barcodes_html = document.querySelectorAll(`[data-fieldname='${"barcodes"}']`)[0]; 136 | // var sku_html = barcodes_html.getElementsByClassName("dashboard-section"); 137 | // if (!sku_html.length) 138 | // { 139 | $.getScript("https://cdn.jsdelivr.net/npm/jsbarcode@3.11.0/dist/JsBarcode.all.min.js", function( data, textStatus, jqxhr ) { 140 | var sku_content = '
'; 141 | var items = frm.doc.items; 142 | var i = 1; 143 | for (const item of items) 144 | { 145 | 146 | var barcode_format = item.barcode_type; 147 | var barcode = item.barcode; 148 | var item_code = item.item_code; 149 | var item_name = item.item_name; 150 | var item_price = item.rate; 151 | var qty = item.qty 152 | sku_content += '
'; 153 | 154 | 155 | sku_content += '
'; 156 | if (barcode && barcode_format) 157 | { 158 | sku_content += '
'; 159 | sku_content+= '
'; 160 | sku_content += '
'; 161 | sku_content +=item_code +': ' +item_name + '
'; 162 | sku_content+= '
RM '+item_price.toFixed(2); 163 | sku_content += '
x'+ qty+'

'; 164 | } 165 | 166 | else 167 | { 168 | // sku_content+='
'+item_code + '

'; 169 | } 170 | 171 | 172 | sku_content +='
'; 173 | i++; 174 | } 175 | sku_content +=''; 176 | $(frm.fields_dict['barcodes'].$wrapper).html(sku_content) 177 | .css({"margin-left": "20px", "margin-top": "10px", "font-family":"monospace"}); 178 | i=1; 179 | for (const item of items) 180 | { 181 | var barcode_format = item.barcode_type; 182 | var barcode = item.barcode; 183 | if (barcode && barcode_format) 184 | { 185 | JsBarcode(".barcode"+i,barcode, { 186 | background: "#FFFFFF", 187 | format: barcode_format, 188 | width:2, 189 | height:40, 190 | }); 191 | } 192 | i++; 193 | } 194 | }); 195 | // } 196 | } 197 | }, 198 | show_serial_no_barcode: function(frm) { 199 | if(frm.doc.show_serial_no) 200 | { 201 | // var barcodes_html = document.querySelectorAll(`[data-fieldname='${"serials"}']`)[0]; 202 | // var sku_html = barcodes_html.getElementsByClassName("dashboard-section"); 203 | // if (!sku_html.length) 204 | // { 205 | $.getScript("https://cdn.jsdelivr.net/npm/jsbarcode@3.11.0/dist/JsBarcode.all.min.js", function( data, textStatus, jqxhr ) { 206 | var sku_content = '
'; 207 | var items = frm.doc.items; 208 | var i = 1; 209 | var barcode_format = frm.doc.serial_barcode_type; 210 | var serial; 211 | 212 | for (const item of items) 213 | { 214 | 215 | var serials = item.serial_no; 216 | var item_code = item.item_code; 217 | var item_name = item.item_name; 218 | var item_price = item.rate; 219 | sku_content += '
'; 220 | 221 | sku_content += '
'; 222 | if (serials && barcode_format) 223 | { 224 | serials = serials.split("\n"); 225 | if (serials[serials.length-1]=='') 226 | { 227 | serials.pop(); 228 | } 229 | for(const serial of serials) 230 | { 231 | sku_content += '
'; 232 | sku_content+= '
'; 233 | sku_content += '
'; 234 | sku_content +=item_code +': ' +item_name + '
'; 235 | // sku_content+= '
RM '+item_price.toFixed(2); 236 | // sku_content += '

'; 237 | sku_content += "
"; 238 | } 239 | 240 | } 241 | sku_content +='
'; 242 | i++; 243 | } 244 | sku_content +=''; 245 | $(frm.fields_dict['serials'].$wrapper).html(sku_content) 246 | .css({"margin-left": "20px", "margin-top": "10px", "font-family":"monospace"}); 247 | i=1; 248 | for (const item of items) 249 | { 250 | var serials = item.serial_no; 251 | if (serials && barcode_format) 252 | { 253 | serials = serials.split("\n"); 254 | if (serials[serials.length-1]=='') 255 | { 256 | serials.pop(); 257 | } 258 | for(const serial of serials) 259 | { 260 | JsBarcode(".serial"+i,serial, { 261 | background: "#FFFFFF", 262 | format: barcode_format, 263 | width:2, 264 | height:40, 265 | }); 266 | } 267 | } 268 | i++; 269 | } 270 | }); 271 | // } 272 | } 273 | }, 274 | show_batch_no_barcode: function(frm) { 275 | if(frm.doc.show_batch_no) 276 | { 277 | $.getScript("https://cdn.jsdelivr.net/npm/jsbarcode@3.11.0/dist/JsBarcode.all.min.js", function( data, textStatus, jqxhr ) { 278 | var sku_content = '
'; 279 | var items = frm.doc.items; 280 | var i = 1; 281 | var barcode_format = frm.doc.batch_barcode_type; 282 | 283 | for (const item of items) 284 | { 285 | 286 | var batch = item.batch_no; 287 | var item_code = item.item_code; 288 | var item_name = item.item_name; 289 | var item_price = item.rate; 290 | var qty = item.qty; 291 | sku_content += '
'; 292 | 293 | sku_content += '
'; 294 | if (batch && barcode_format) 295 | { 296 | sku_content += '
'; 297 | sku_content+= '
'; 298 | sku_content += '
'; 299 | sku_content += item_code +': ' +item_name + '
'; 300 | // sku_content+= '
RM '+item_price.toFixed(2); 301 | // sku_content += '

'; 302 | sku_content += '
x'+ qty+'

'; 303 | } 304 | sku_content +='
'; 305 | i++; 306 | } 307 | sku_content +=''; 308 | $(frm.fields_dict['batchs'].$wrapper).html(sku_content) 309 | .css({"margin-left": "20px", "margin-top": "10px", "font-family":"monospace"}); 310 | i=1; 311 | for (const item of items) 312 | { 313 | var batch = item.batch_no; 314 | if (batch && barcode_format) 315 | { 316 | JsBarcode(".batch"+i,batch, { 317 | background: "#FFFFFF", 318 | format: barcode_format, 319 | width:2, 320 | height:40, 321 | }); 322 | 323 | } 324 | i++; 325 | } 326 | }); 327 | } 328 | }, 329 | set_serial_no: function(frm, cdt, cdn, callback) { 330 | var d = frappe.model.get_doc(cdt, cdn); 331 | if(!d.item_code && !d.s_warehouse && !d.qty) return; 332 | var args = { 333 | 'item_code' : d.item_code, 334 | 'warehouse' : cstr(d.s_warehouse), 335 | 'stock_qty' : d.transfer_qty 336 | }; 337 | frappe.call({ 338 | method: "erpnext.stock.get_item_details.get_serial_no", 339 | args: {"args": args}, 340 | callback: function(r) { 341 | if (!r.exe && r.message) { 342 | frappe.model.set_value(cdt, cdn, "serial_no", r.message); 343 | 344 | if (callback) { 345 | callback(); 346 | } 347 | } 348 | } 349 | }); 350 | }, 351 | set_basic_rate: function(frm, cdt, cdn) { 352 | const item = locals[cdt][cdn]; 353 | item.transfer_qty = flt(item.qty) * flt(item.conversion_factor); 354 | 355 | const args = { 356 | 'item_code' : item.item_code, 357 | 'posting_date' : frm.doc.posting_date, 358 | 'posting_time' : frm.doc.posting_time, 359 | 'warehouse' : cstr(item.s_warehouse) || cstr(item.t_warehouse), 360 | 'serial_no' : item.serial_no, 361 | 'company' : frm.doc.company, 362 | 'qty' : item.s_warehouse ? -1*flt(item.transfer_qty) : flt(item.transfer_qty), 363 | 'voucher_type' : frm.doc.doctype, 364 | 'voucher_no' : item.name, 365 | 'allow_zero_valuation': 1, 366 | }; 367 | 368 | if (item.item_code || item.serial_no) { 369 | frappe.call({ 370 | method: "erpnext.stock.utils.get_incoming_rate", 371 | args: { 372 | args: args 373 | }, 374 | callback: function(r) { 375 | frappe.model.set_value(cdt, cdn, 'basic_rate', (r.message || 0.0)); 376 | } 377 | }); 378 | } 379 | }, 380 | items_on_form_rendered: function(doc, grid_row) { 381 | erpnext.setup_serial_no(); 382 | }, 383 | 384 | }); 385 | 386 | frappe.ui.form.on('Barcode Generator Items', { 387 | qty: function(frm, cdt, cdn) { 388 | frm.events.set_serial_no(frm, cdt, cdn, () => { 389 | frm.events.set_basic_rate(frm, cdt, cdn); 390 | }); 391 | }, 392 | 393 | conversion_factor: function(frm, cdt, cdn) { 394 | frm.events.set_basic_rate(frm, cdt, cdn); 395 | }, 396 | 397 | s_warehouse: function(frm, cdt, cdn) { 398 | frm.events.set_serial_no(frm, cdt, cdn, () => { 399 | frm.events.get_warehouse_details(frm, cdt, cdn); 400 | }); 401 | }, 402 | 403 | t_warehouse: function(frm, cdt, cdn) { 404 | frm.events.get_warehouse_details(frm, cdt, cdn); 405 | }, 406 | 407 | barcode: function(doc, cdt, cdn) { 408 | frm.set_value("qr_created",0); 409 | frm.set_value("show_sku",0); 410 | 411 | var d = locals[cdt][cdn]; 412 | if (d.barcode) { 413 | frappe.call({ 414 | method: "erpnext.stock.get_item_details.get_item_code", 415 | args: {"barcode": d.barcode }, 416 | callback: function(r) { 417 | if (!r.exe){ 418 | frappe.model.set_value(cdt, cdn, "item_code", r.message); 419 | } 420 | } 421 | }); 422 | } 423 | }, 424 | 425 | uom: function(doc, cdt, cdn) { 426 | var d = locals[cdt][cdn]; 427 | if(d.uom && d.item_code){ 428 | return frappe.call({ 429 | method: "erpnext.stock.doctype.stock_entry.stock_entry.get_uom_details", 430 | args: { 431 | item_code: d.item_code, 432 | uom: d.uom, 433 | qty: d.qty 434 | }, 435 | callback: function(r) { 436 | if(r.message) { 437 | frappe.model.set_value(cdt, cdn, r.message); 438 | } 439 | } 440 | }); 441 | } 442 | }, 443 | serial_no(frm){ 444 | frm.set_value("qr_created",0); 445 | frm.set_value("show_serial_no",0); 446 | }, 447 | batch_no(frm){ 448 | frm.set_value("qr_created",0); 449 | frm.set_value("show_batch_no",0); 450 | }, 451 | items_add: function(frm){ 452 | frm.set_value("qr_created",0); 453 | frm.set_value("show_sku",0); 454 | frm.set_value("show_serial_no",0); 455 | frm.set_value("show_batch_no",0); 456 | 457 | }, 458 | items_remove:function(frm){ 459 | frm.set_value("qr_created",0); 460 | frm.set_value("show_sku",0); 461 | frm.set_value("show_serial_no",0); 462 | frm.set_value("show_batch_no",0); 463 | 464 | }, 465 | item_code: function(frm, cdt, cdn) { 466 | frm.set_value("qr_created",0); 467 | frm.set_value("show_sku",0); 468 | frm.set_value("show_serial_no",0); 469 | frm.set_value("show_batch_no",0); 470 | var d = locals[cdt][cdn]; 471 | if(d.item_code) { 472 | var args = { 473 | 'item_code' : d.item_code, 474 | 'warehouse' : cstr(d.s_warehouse) || cstr(d.t_warehouse), 475 | 'serial_no' : d.serial_no, 476 | 'bom_no' : d.bom_no, 477 | 'expense_account' : d.expense_account, 478 | 'cost_center' : d.cost_center, 479 | 'company' : frm.doc.company, 480 | 'qty' : d.qty, 481 | 'voucher_type' : frm.doc.doctype, 482 | 'voucher_no' : d.name, 483 | 'allow_zero_valuation': 1, 484 | }; 485 | 486 | return frappe.call({ 487 | doc: frm.doc, 488 | method: "get_item_details", 489 | args: args, 490 | callback: function(r) { 491 | if(r.message) { 492 | var d = locals[cdt][cdn]; 493 | $.each(r.message, function(k, v) { 494 | if (v) { 495 | frappe.model.set_value(cdt, cdn, k, v); // qty and it's subsequent fields weren't triggered 496 | } 497 | }); 498 | frm.refresh_field("items"); 499 | 500 | if (!d.serial_no) { 501 | erpnext.stock.select_batch_and_serial_no(frm, d); 502 | } 503 | } 504 | } 505 | }); 506 | } 507 | } 508 | }); 509 | 510 | $.extend(cur_frm.cscript, new erpnext.stock.StockController({frm: cur_frm})); 511 | 512 | erpnext.stock.select_batch_and_serial_no = (frm, item) => { 513 | let get_warehouse_type_and_name = (item) => { 514 | let value = ''; 515 | if(frm.fields_dict.from_warehouse.disp_status === "Write") { 516 | value = cstr(item.s_warehouse) || ''; 517 | return { 518 | type: 'Source Warehouse', 519 | name: value 520 | }; 521 | } else { 522 | value = cstr(item.t_warehouse) || ''; 523 | return { 524 | type: 'Target Warehouse', 525 | name: value 526 | }; 527 | } 528 | } 529 | 530 | if(item && !item.has_serial_no && !item.has_batch_no) return; 531 | if (frm.doc.purpose === 'Material Receipt') return; 532 | 533 | frappe.require("assets/erpnext/js/utils/serial_no_batch_selector.js", function() { 534 | new erpnext.SerialNoBatchSelector({ 535 | frm: frm, 536 | item: item, 537 | warehouse_details: get_warehouse_type_and_name(item), 538 | }); 539 | }); 540 | 541 | } -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/barcode_printing/barcode_printing.json: -------------------------------------------------------------------------------- 1 | { 2 | "autoname": "naming_series:", 3 | "creation": "2021-12-27 15:21:02.662532", 4 | "doctype": "DocType", 5 | "document_type": "Document", 6 | "engine": "InnoDB", 7 | "field_order": [ 8 | "naming_series", 9 | "company", 10 | "column_break1", 11 | "filters", 12 | "item_code", 13 | "work_order", 14 | "warehouse", 15 | "supplier", 16 | "column_break2", 17 | "stock_entry_type", 18 | "from_date", 19 | "to_date", 20 | "items_section", 21 | "items", 22 | "get_barcode", 23 | "section_break_23", 24 | "show_sku", 25 | "column_break_24", 26 | "show_batch_no", 27 | "column_break_26", 28 | "show_serial_no", 29 | "section_break_22", 30 | "create_qr", 31 | "qr_created", 32 | "barcode_section", 33 | "barcodes", 34 | "serial_section", 35 | "serial_barcode_type", 36 | "serials", 37 | "batch_section", 38 | "batch_barcode_type", 39 | "batchs", 40 | "qr_section", 41 | "qrcodes", 42 | "doc_info", 43 | "amended_from" 44 | ], 45 | "fields": [ 46 | { 47 | "fieldname": "naming_series", 48 | "fieldtype": "Select", 49 | "label": "Naming Series", 50 | "options": "BP-.YYYY.-.MM.-.DD.-", 51 | "reqd": 1 52 | }, 53 | { 54 | "fieldname": "company", 55 | "fieldtype": "Link", 56 | "in_list_view": 1, 57 | "label": "Company", 58 | "options": "Company", 59 | "reqd": 1 60 | }, 61 | { 62 | "fieldname": "column_break1", 63 | "fieldtype": "Column Break" 64 | }, 65 | { 66 | "collapsible": 1, 67 | "collapsible_depends_on": "eval: doc.__islocal", 68 | "depends_on": "eval: doc.get_items_from", 69 | "fieldname": "filters", 70 | "fieldtype": "Section Break", 71 | "hidden": 1, 72 | "label": "Filters" 73 | }, 74 | { 75 | "fieldname": "item_code", 76 | "fieldtype": "Link", 77 | "hidden": 1, 78 | "in_list_view": 1, 79 | "label": "Item Code", 80 | "options": "Item" 81 | }, 82 | { 83 | "depends_on": "//eval: doc.get_items_from == \"Stock Entry\"", 84 | "fieldname": "work_order", 85 | "fieldtype": "Link", 86 | "hidden": 1, 87 | "in_list_view": 1, 88 | "label": "Work Order", 89 | "options": "Work Order" 90 | }, 91 | { 92 | "fieldname": "warehouse", 93 | "fieldtype": "Link", 94 | "label": "Warehouse", 95 | "options": "Warehouse" 96 | }, 97 | { 98 | "depends_on": "//eval: doc.get_items_from == \"Stock Entry\"", 99 | "fieldname": "stock_entry_type", 100 | "fieldtype": "Link", 101 | "hidden": 1, 102 | "label": "Stock Entry Type", 103 | "options": "Stock Entry Type" 104 | }, 105 | { 106 | "fieldname": "column_break2", 107 | "fieldtype": "Column Break", 108 | "hidden": 1, 109 | "width": "50%" 110 | }, 111 | { 112 | "fieldname": "from_date", 113 | "fieldtype": "Date", 114 | "hidden": 1, 115 | "label": "From Date" 116 | }, 117 | { 118 | "fieldname": "to_date", 119 | "fieldtype": "Date", 120 | "hidden": 1, 121 | "label": "To Date" 122 | }, 123 | { 124 | "fieldname": "amended_from", 125 | "fieldtype": "Link", 126 | "label": "Amended From", 127 | "no_copy": 1, 128 | "options": "Barcode Printing", 129 | "print_hide": 1, 130 | "read_only": 1 131 | }, 132 | { 133 | "depends_on": "eval: doc.get_items_from == \"Purchase Receipt\"", 134 | "fieldname": "supplier", 135 | "fieldtype": "Data", 136 | "label": "Supplier", 137 | "options": "Supplier" 138 | }, 139 | { 140 | "fieldname": "items", 141 | "fieldtype": "Table", 142 | "no_copy": 1, 143 | "options": "Barcode Generator Items", 144 | "reqd": 1 145 | }, 146 | { 147 | "fieldname": "doc_info", 148 | "fieldtype": "Section Break", 149 | "label": "DocType Info" 150 | }, 151 | { 152 | "default": "\n\n", 153 | "fieldname": "barcodes", 154 | "fieldtype": "HTML", 155 | "label": "Barcode" 156 | }, 157 | { 158 | "default": "0", 159 | "fieldname": "show_serial_no", 160 | "fieldtype": "Check", 161 | "label": "Print Serial No. Barcode" 162 | }, 163 | { 164 | "default": "0", 165 | "fieldname": "show_batch_no", 166 | "fieldtype": "Check", 167 | "label": "Print Batch No. Barcode" 168 | }, 169 | { 170 | "fieldname": "column_break_24", 171 | "fieldtype": "Column Break" 172 | }, 173 | { 174 | "fieldname": "column_break_26", 175 | "fieldtype": "Column Break" 176 | }, 177 | { 178 | "fieldname": "section_break_23", 179 | "fieldtype": "Section Break" 180 | }, 181 | { 182 | "collapsible": 1, 183 | "depends_on": "eval:doc.show_serial_no== 1", 184 | "fieldname": "serial_section", 185 | "fieldtype": "Section Break", 186 | "label": "Preview: Serial No. Barcode" 187 | }, 188 | { 189 | "fieldname": "serials", 190 | "fieldtype": "HTML", 191 | "label": "Serial No. Barcode" 192 | }, 193 | { 194 | "default": "CODE128", 195 | "fieldname": "serial_barcode_type", 196 | "fieldtype": "Select", 197 | "label": "Barcode Type", 198 | "options": "CODE128\nEAN13\nEAN8\nUPC\nCODE39" 199 | }, 200 | { 201 | "collapsible": 1, 202 | "depends_on": "eval:doc.show_batch_no== 1", 203 | "fieldname": "batch_section", 204 | "fieldtype": "Section Break", 205 | "label": "Preview: Batch No. Barcode" 206 | }, 207 | { 208 | "default": "CODE128", 209 | "fieldname": "batch_barcode_type", 210 | "fieldtype": "Select", 211 | "label": "Barcode Type", 212 | "options": "CODE128\nEAN13\nEAN8\nUPC\nCODE39" 213 | }, 214 | { 215 | "fieldname": "batchs", 216 | "fieldtype": "HTML", 217 | "label": "Serial No. Barcode" 218 | }, 219 | { 220 | "fieldname": "get_barcode", 221 | "fieldtype": "Button", 222 | "label": "Get Items Barcode" 223 | }, 224 | { 225 | "fieldname": "items_section", 226 | "fieldtype": "Section Break", 227 | "label": "Items" 228 | }, 229 | { 230 | "collapsible": 1, 231 | "fieldname": "qr_section", 232 | "fieldtype": "Section Break", 233 | "label": "Preview: QR Code" 234 | }, 235 | { 236 | "fieldname": "qrcodes", 237 | "fieldtype": "Code", 238 | "hidden": 1, 239 | "label": "QR Codes" 240 | }, 241 | { 242 | "fieldname": "section_break_22", 243 | "fieldtype": "Section Break" 244 | }, 245 | { 246 | "default": "0", 247 | "description": "Please save before creating QR code for printing", 248 | "fieldname": "create_qr", 249 | "fieldtype": "Button", 250 | "label": "Get QR Code" 251 | }, 252 | { 253 | "default": "0", 254 | "fieldname": "qr_created", 255 | "fieldtype": "Check", 256 | "label": "QR Code Created", 257 | "read_only": 1 258 | }, 259 | { 260 | "collapsible": 1, 261 | "depends_on": "eval:doc.show_sku == 1", 262 | "fieldname": "barcode_section", 263 | "fieldtype": "Section Break", 264 | "label": "Preview: Barcode" 265 | }, 266 | { 267 | "default": "0", 268 | "fieldname": "show_sku", 269 | "fieldtype": "Check", 270 | "label": "Print Barcode" 271 | } 272 | ], 273 | "icon": "fa fa-print", 274 | "modified": "2022-02-09 17:42:09.727320", 275 | "modified_by": "Administrator", 276 | "module": "Barcode Shrdc", 277 | "name": "Barcode Printing", 278 | "owner": "Administrator", 279 | "permissions": [ 280 | { 281 | "create": 1, 282 | "delete": 1, 283 | "email": 1, 284 | "export": 1, 285 | "print": 1, 286 | "read": 1, 287 | "report": 1, 288 | "role": "All", 289 | "share": 1, 290 | "write": 1 291 | } 292 | ], 293 | "sort_field": "modified", 294 | "sort_order": "ASC" 295 | } -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/barcode_printing/barcode_printing.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright (c) 2021, lxy and contributors 3 | # For license information, please see license.txt 4 | 5 | from __future__ import unicode_literals 6 | import frappe, json, urllib 7 | from frappe.model.document import Document 8 | from frappe.model.mapper import get_mapped_doc 9 | from frappe import msgprint, _ 10 | from six import string_types, iteritems 11 | import qrcode, io, os 12 | from io import BytesIO 13 | import base64 14 | from frappe.integrations.utils import make_get_request, make_post_request, create_request_log 15 | from frappe.utils import cstr, flt, cint, nowdate, add_days, comma_and, now_datetime, ceil, get_url 16 | from erpnext.manufacturing.doctype.work_order.work_order import get_item_details 17 | import requests 18 | from PIL import Image 19 | 20 | 21 | 22 | 23 | class BarcodePrinting(Document): 24 | pass 25 | # def get_open_purchase_receipt(self): 26 | # """ Pull Purchase Receipt based on criteria selected""" 27 | # open_pr = get_purchase_receipts(self) 28 | 29 | # if open_pr: 30 | # self.add_pr_in_table(open_pr) 31 | # else: 32 | # frappe.msgprint(_("Purchase Order not available")) 33 | 34 | # def add_pr_in_table(self, open_pr): 35 | # """ Add sales orders in the table""" 36 | # self.set('purchase_receipt', []) 37 | 38 | # for data in open_pr: 39 | # self.append('purchase_receipts', { 40 | # 'purchase_receipt': data.name, 41 | # 'pr_date': data.posting_date, 42 | # 'supplier': data.supplier, 43 | # 'grand_total': data.total 44 | # }) 45 | 46 | # def get_items(self): 47 | # if self.get_items_from == "Purchase Receipt": 48 | # self.get_pr_items() 49 | # elif self.get_items_from == "Stock Entry": 50 | # self.get_se_items() 51 | 52 | # def get_pr_se_list(self, field, table): 53 | # """Returns a list of Purchase Orders or Stock Entries from the respective tables""" 54 | # pr_se_list = [d.get(field) for d in self.get(table) if d.get(field)] 55 | # return pr_se_list 56 | 57 | # def get_pr_items(self): 58 | # # Check for empty table or empty rows 59 | # if not self.get("purchase_receipts") or not self.get_pr_se_list("purchase_receipt", "purchase_receipts"): 60 | # frappe.throw(_("Please fill the Purchase Receipt table"), title=_("Purchase Receipt Required")) 61 | 62 | # pr_list = self.get_pr_se_list("purchase_receipt", "purchase_receipts") 63 | 64 | # item_condition = "" 65 | # if self.item_code: 66 | # item_condition = ' and pr_item.item_code = {0}'.format(frappe.db.escape(self.item_code)) 67 | # items = frappe.db.sql("""select distinct pr_item.parent, pr_item.item_code, pr_item.warehouse, 68 | # pr_item.qty, pr_item.description, pr_item.name, pr_item.uom, pr.supplier, pr_item.barcode, 69 | # pr_item.serial_no, pr_item.batch_no, 70 | # item.barcode 71 | # from `tabPurchase Receipt Item` pr_item , `tabPurchase Receipt` pr, `tabItem Barcode` item 72 | # where pr_item.parent in (%s) and pr_item.docstatus = 1 and item.parent = %s""" % \ 73 | # (", ".join(["%s"] * len(pr_list))),self.item_code, tuple(pr_list), as_dict=1) 74 | 75 | # if self.item_code: 76 | # item_condition = ' and so_item.item_code = {0}'.format(frappe.db.escape(self.item_code)) 77 | 78 | # self.add_items(items) 79 | 80 | # def add_items(self, items): 81 | # self.set('items', []) 82 | # for data in items: 83 | # pi = self.append('items', { 84 | # 'warehouse': data.warehouse, 85 | # 'item_code': data.item_code, 86 | 87 | # 'description': data.description, 88 | # 'qty': data.qty, 89 | # 'supplier': data.supplier, 90 | # 'uom': data.uom, 91 | # 'barcode': data.barcode, 92 | # 'serial_no': data.serial_no, 93 | # 'batch_no': data.batch_no 94 | # }) 95 | 96 | # if self.get_items_from == "Purchase Receipt": 97 | # pi.ref_pr = data.parent 98 | # pi.description = data.description 99 | 100 | # elif self.get_items_from == "Stock Entry": 101 | # pi.ref_se = data.parent 102 | # pi.description = data.description 103 | 104 | # def get_item_barcode(self): 105 | # print(self.items) 106 | # item = frappe.db.sql("""select barcode, barcode_type 107 | # from `tabItem Barcode` 108 | # where parent=%s""", 109 | # "ITM-001", as_dict = 1) 110 | 111 | # if not item: 112 | # frappe.throw(_("Item {0} is not active or end of life has been reached")) 113 | 114 | # item = item[0] 115 | 116 | # return item 117 | 118 | def get_item_details(self, args=None, for_update=False): 119 | item = frappe.db.sql("""select i.name, i.stock_uom, i.description, i.image, i.item_name, i.item_group, 120 | i.has_batch_no, i.sample_quantity, i.has_serial_no, i.allow_alternative_item, 121 | id.expense_account, id.buying_cost_center 122 | from `tabItem` i LEFT JOIN `tabItem Default` id ON i.name=id.parent and id.company=%s 123 | where i.name=%s 124 | and i.disabled=0 125 | and (i.end_of_life is null or i.end_of_life='0000-00-00' or i.end_of_life > %s)""", 126 | (self.company, args.get('item_code'), nowdate()), as_dict = 1) 127 | 128 | if not item: 129 | frappe.throw(_("Item {0} is not active or end of life has been reached").format(args.get("item_code"))) 130 | 131 | item = item[0] 132 | 133 | ret = frappe._dict({ 134 | 'uom' : item.stock_uom, 135 | 'stock_uom' : item.stock_uom, 136 | 'description' : item.description, 137 | 'image' : item.image, 138 | 'item_name' : item.item_name, 139 | 'qty' : args.get("qty"), 140 | 'conversion_factor' : 1, 141 | 'batch_no' : '', 142 | 'actual_qty' : 0, 143 | 'basic_rate' : 0, 144 | 'serial_no' : '', 145 | 'has_serial_no' : item.has_serial_no, 146 | 'has_batch_no' : item.has_batch_no, 147 | 'sample_quantity' : item.sample_quantity 148 | }) 149 | 150 | return ret 151 | 152 | 153 | 154 | 155 | # def get_purchase_receipts(self): 156 | # pr_filter = item_filter = "" 157 | # if self.from_date: 158 | # pr_filter += " and pr.posting_date >= %(from_date)s" 159 | # if self.to_date: 160 | # pr_filter += " and pr.posting_date <= %(to_date)s" 161 | # if self.warehouse: 162 | # pr_filter += " and pr.set_warehouse = %(warehouse)s" 163 | # if self.supplier: 164 | # pr_filter += " and pr.supplier = %(supplier)s" 165 | 166 | # if self.item_code: 167 | # item_filter += " and pr_item.item_code = %(item)s" 168 | 169 | # open_pr = frappe.db.sql(""" 170 | # select distinct pr.name, pr.posting_date, pr.supplier, pr.base_grand_total 171 | # from `tabPurchase Receipt` pr, `tabPurchase Receipt Item` pr_item 172 | # where pr_item.parent = pr.name 173 | # and pr.docstatus = 1 and pr.status not in ("Stopped", "Closed") 174 | # and pr.company = %(company)s 175 | # """.format(pr_filter, item_filter), { 176 | # "from_date": self.from_date, 177 | # "to_date": self.to_date, 178 | # "supplier": self.supplier, 179 | # "set_warehouse": self.warehouse, 180 | # "item": self.item_code, 181 | # "company": self.company 182 | # }, as_dict=1) 183 | # return open_pr 184 | 185 | 186 | 187 | 188 | @frappe.whitelist() 189 | def pr_make_barcode(source_name, target_doc=None): 190 | doc = get_mapped_doc("Purchase Receipt", source_name, { 191 | "Purchase Receipt": { 192 | "doctype": "Barcode Printing", 193 | "validation": { 194 | "docstatus": ["=", 1] 195 | } 196 | }, 197 | "Purchase Receipt Item": { 198 | "doctype": "Barcode Generator Items", 199 | "field_map": { 200 | "stock_qty": "qty", 201 | "batch_no": "batch_no", 202 | "parent": "ref_pr", 203 | "price_list_rate":"basic_rate", 204 | "serial_no":"serial_no", 205 | "batch_no":"batch_no", 206 | "set_warehouse":"warehouse" 207 | }, 208 | } 209 | }, target_doc) 210 | 211 | return doc 212 | 213 | @frappe.whitelist() 214 | def se_make_barcode(source_name, target_doc=None): 215 | 216 | def check_manufacturing(d): 217 | if frappe.get_doc("Stock Entry",d.parent).stock_entry_type == "Manufacture": 218 | return (d.t_warehouse != None) 219 | return 1 220 | 221 | doclist = get_mapped_doc("Stock Entry", source_name, { 222 | "Stock Entry": { 223 | "doctype": "Barcode Printing", 224 | "validation": { 225 | "docstatus": ["=", 1], 226 | }, 227 | "field_map": { 228 | "get_items_from" :"doctype" 229 | } 230 | }, 231 | "Stock Entry Detail": { 232 | "doctype": "Barcode Generator Items", 233 | "field_map": { 234 | "valuation_rate":"rate", 235 | "qty": "qty", 236 | "uom": "uom", 237 | "parent": "ref_se", 238 | "serial_no":"serial_no", 239 | "batch_no":"batch_no", 240 | "additional_cost":"additional_cost" , 241 | "t_warehouse":"warehouse" 242 | }, 243 | "condition":check_manufacturing 244 | } 245 | }, target_doc) 246 | 247 | return doclist 248 | 249 | @frappe.whitelist() 250 | def search_item_serial_or_batch_or_barcode_number(search_value,item): 251 | # search barcode no 252 | item = json.loads(item) 253 | barcode_data = frappe.db.get_value('Item Barcode', {'parent': item["item_code"]}, ['barcode', 'barcode_type', 'parent as item_code'], as_dict=True) 254 | if barcode_data: 255 | if barcode_data.barcode_type == "EAN": 256 | barcode_data.barcode_type = "EAN13" 257 | elif barcode_data.barcode_type == "UPC-A": 258 | barcode_data.barcode_type = "UPC" 259 | return barcode_data 260 | 261 | # search serial no 262 | serial_no_data = frappe.db.get_value('Serial No', search_value, ['name as serial_no', 'item_code'], as_dict=True) 263 | if serial_no_data: 264 | return serial_no_data 265 | 266 | # search batch no 267 | batch_no_data = frappe.db.get_value('Batch', search_value, ['name as batch_no', 'item as item_code'], as_dict=True) 268 | if batch_no_data: 269 | return batch_no_data 270 | 271 | return {} 272 | 273 | @frappe.whitelist() 274 | def get_item_details(frm): 275 | items = frm.doc.items 276 | item_code_list = [d.get("item_code") for d in items if d.get("item_code")] 277 | item = frappe.db.sql("""select barcode, barcode_type 278 | from `tabItem Barcode` 279 | where i.parent=%s""", 280 | format(frappe.db.escape(frm.item_code)), as_dict = 1) 281 | 282 | if not item: 283 | frappe.throw(_("Item {0} is not active or end of life has been reached")) 284 | 285 | item = item[0] 286 | 287 | return item 288 | 289 | @frappe.whitelist() 290 | def create_barcode_printing(throw_if_missing, se_id,pr_id): 291 | bp = frappe.new_doc('Barcode Printing') 292 | 293 | if(se_id): 294 | se = frappe.get_doc("Stock Entry", se_id) 295 | for item in se.items: 296 | if item.t_warehouse != None: 297 | row = bp.append('items', {}) 298 | row.item_code = item.item_code 299 | row.qty = item.qty 300 | row.basic_rate = item.basic_rate 301 | row.rate = item.valuation_rate 302 | row.uom = item.uom 303 | row.additional_cost = item.additional_cost 304 | row.conversion_factor = item.conversion_factor 305 | row.serial_no = item.serial_no 306 | row.batch_no = item.batch_no 307 | row.ref_se = se_id 308 | 309 | if(pr_id): 310 | pr = frappe.get_doc("Purchase Receipt",pr_id) 311 | for item in pr.items: 312 | row = bp.append('items', {}) 313 | row.item_code = item.item_code 314 | row.qty = item.qty 315 | row.basic_rate = item.price_list_rate 316 | row.rate = item.rate 317 | row.uom = item.uom 318 | row.serial_no = item.serial_no 319 | row.batch_no = item.batch_no 320 | row.ref_pr = pr_id 321 | row.warehouse = pr.set_warehouse 322 | 323 | bp.insert( 324 | ignore_mandatory=True 325 | ) 326 | 327 | if not frappe.db.exists(bp.doctype, bp.name): 328 | if throw_if_missing: 329 | frappe.throw('Linked document (Stock Entry / Purchase Receipt) not found') 330 | return frappe.get_doc(bp.doctype, bp.name) 331 | 332 | @frappe.whitelist() 333 | def make_qrcode(doc, route): 334 | qr_html = '' 335 | barcode_doc = frappe.get_doc("Barcode Printing", json.loads(doc)["name"]) 336 | items = barcode_doc.items 337 | for item in items: 338 | if item.get("qty")!= 0: 339 | if item.get("serial_no"): 340 | serials = item.get("serial_no").split("\n") 341 | if serials[-1] == '': 342 | serials.pop() 343 | for serial in serials: 344 | uri = "item_qr?" 345 | if item.get("item_code"): uri += "item_code=" + urllib.parse.quote(item.get_formatted("item_code")) 346 | if item.get("barcode"): uri += "&barcode=" + urllib.parse.quote(item.get_formatted("barcode")) 347 | if serial: uri += "&serial_no=" + urllib.parse.quote(serial) 348 | if item.get("batch_no"): uri += "&batch_no=" + urllib.parse.quote(item.get_formatted("batch_no")) 349 | # if item.get("rate"): uri += "&rate=" + urllib.parse.quote(item.get_formatted("rate")) 350 | img_str = qr_code_img(uri,route) 351 | qr_html += '
' 352 | else: 353 | uri = "item_qr?" 354 | if item.get("item_code"): uri += "item_code=" + urllib.parse.quote(item.get_formatted("item_code")) 355 | if item.get("barcode"): uri += "&barcode=" + urllib.parse.quote(item.get_formatted("barcode")) 356 | if item.get("batch_no"): uri += "&batch_no=" + urllib.parse.quote(item.get_formatted("batch_no")) 357 | # if item.get("rate"): uri += "&rate=" + urllib.parse.quote(item.get_formatted("rate")) 358 | img_str = qr_code_img(uri,route) 359 | qr_html += '
' 360 | return qr_html 361 | 362 | def qr_code_img(uri,route): 363 | qr_config = frappe.get_doc("QR Code Configuration") 364 | qr = qrcode.QRCode( 365 | border=qr_config.border, 366 | error_correction=qrcode.constants.ERROR_CORRECT_H, 367 | ) 368 | url = route + "/" + uri 369 | qr.add_data(url) 370 | qr.make(fit=True) 371 | logo = qr_config.logo 372 | 373 | img = qr.make_image(fill_color = qr_config.fill, back_color = qr_config.background) 374 | w,h = img.size 375 | if logo: 376 | logo = Image.open(requests.get(get_url(logo,None), stream=True).raw).resize((w//4, h//4)) 377 | pos = ((img.size[0] - logo.size[0]) // 2, (img.size[1] - logo.size[1]) // 2) 378 | img.paste(logo, pos) 379 | 380 | buffered = BytesIO() 381 | img.save(buffered, format="PNG") 382 | buffered.seek(0) 383 | img_str = base64.b64encode(buffered.read()) 384 | return img_str 385 | 386 | 387 | -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/barcode_printing/test_barcode_printing.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright (c) 2021, lxy and Contributors 3 | # See license.txt 4 | from __future__ import unicode_literals 5 | 6 | # import frappe 7 | import unittest 8 | 9 | class TestBarcodePrinting(unittest.TestCase): 10 | pass 11 | -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/qr_code_configuration/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msf4-0/ERPNext-Barcode-Integration/e88597092387f4c4a0b62d6bde006517a75fdef9/barcode_shrdc/barcode_shrdc/doctype/qr_code_configuration/__init__.py -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/qr_code_configuration/qr_code_configuration.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022, lxy and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on('QR Code Configuration', { 5 | // refresh: function(frm) { 6 | 7 | // } 8 | }); 9 | -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/qr_code_configuration/qr_code_configuration.json: -------------------------------------------------------------------------------- 1 | { 2 | "creation": "2022-01-14 16:07:24.890783", 3 | "doctype": "DocType", 4 | "editable_grid": 1, 5 | "engine": "InnoDB", 6 | "field_order": [ 7 | "qr_section", 8 | "border", 9 | "background", 10 | "fill", 11 | "logo", 12 | "texts_section", 13 | "show_item_code", 14 | "item_code_font_size", 15 | "show_item_name", 16 | "item_name_font_size", 17 | "show_item_price", 18 | "item_price_font_size" 19 | ], 20 | "fields": [ 21 | { 22 | "default": "#ffffff", 23 | "fieldname": "background", 24 | "fieldtype": "Color", 25 | "label": "Background" 26 | }, 27 | { 28 | "description": "(in em)", 29 | "fieldname": "texts_section", 30 | "fieldtype": "Section Break", 31 | "label": "Texts font size " 32 | }, 33 | { 34 | "default": "1.3", 35 | "depends_on": "show_item_code", 36 | "fieldname": "item_code_font_size", 37 | "fieldtype": "Float", 38 | "label": "Item Code Font Size" 39 | }, 40 | { 41 | "default": "1.1", 42 | "depends_on": "show_item_name", 43 | "fieldname": "item_name_font_size", 44 | "fieldtype": "Float", 45 | "label": "Item Name Font Size" 46 | }, 47 | { 48 | "default": "1.1", 49 | "depends_on": "show_item_price", 50 | "fieldname": "item_price_font_size", 51 | "fieldtype": "Float", 52 | "label": "Item Price Font Size" 53 | }, 54 | { 55 | "fieldname": "qr_section", 56 | "fieldtype": "Section Break", 57 | "label": "QR Code" 58 | }, 59 | { 60 | "default": "#000000", 61 | "fieldname": "fill", 62 | "fieldtype": "Color", 63 | "label": "Fill" 64 | }, 65 | { 66 | "default": "2", 67 | "fieldname": "border", 68 | "fieldtype": "Int", 69 | "label": "Border" 70 | }, 71 | { 72 | "fieldname": "logo", 73 | "fieldtype": "Attach Image", 74 | "label": "Logo" 75 | }, 76 | { 77 | "default": "1", 78 | "fieldname": "show_item_code", 79 | "fieldtype": "Check", 80 | "label": "Show Item Code" 81 | }, 82 | { 83 | "default": "1", 84 | "fieldname": "show_item_name", 85 | "fieldtype": "Check", 86 | "label": "Show Item Name" 87 | }, 88 | { 89 | "default": "1", 90 | "fieldname": "show_item_price", 91 | "fieldtype": "Check", 92 | "label": "Show Item Price" 93 | } 94 | ], 95 | "issingle": 1, 96 | "modified": "2022-02-26 11:54:50.873318", 97 | "modified_by": "Administrator", 98 | "module": "Barcode Shrdc", 99 | "name": "QR Code Configuration", 100 | "owner": "Administrator", 101 | "permissions": [ 102 | { 103 | "create": 1, 104 | "delete": 1, 105 | "email": 1, 106 | "print": 1, 107 | "read": 1, 108 | "role": "System Manager", 109 | "share": 1, 110 | "write": 1 111 | } 112 | ], 113 | "quick_entry": 1, 114 | "sort_field": "modified", 115 | "sort_order": "DESC", 116 | "track_changes": 1 117 | } -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/qr_code_configuration/qr_code_configuration.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright (c) 2022, lxy and contributors 3 | # For license information, please see license.txt 4 | 5 | from __future__ import unicode_literals 6 | # import frappe 7 | from frappe.model.document import Document 8 | 9 | class QRCodeConfiguration(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /barcode_shrdc/barcode_shrdc/doctype/qr_code_configuration/test_qr_code_configuration.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright (c) 2022, lxy and Contributors 3 | # See license.txt 4 | from __future__ import unicode_literals 5 | 6 | # import frappe 7 | import unittest 8 | 9 | class TestQRCodeConfiguration(unittest.TestCase): 10 | pass 11 | -------------------------------------------------------------------------------- /barcode_shrdc/config/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msf4-0/ERPNext-Barcode-Integration/e88597092387f4c4a0b62d6bde006517a75fdef9/barcode_shrdc/config/__init__.py -------------------------------------------------------------------------------- /barcode_shrdc/config/barcode_shrdc.py: -------------------------------------------------------------------------------- 1 | from __future__ import unicode_literals 2 | from frappe import _ 3 | def get_data(): 4 | config = [ 5 | { 6 | "label": _("Barcode Printing"), 7 | "items": [ 8 | { 9 | "type": "doctype", 10 | "name": "Barcode Printing", 11 | "onboard": 1, 12 | } 13 | ] 14 | }, 15 | { 16 | "label": _("Barcode Settings"), 17 | "items": [ 18 | { 19 | "type": "doctype", 20 | "name": "Barcode Configuration", 21 | "onboard": 1, 22 | }, 23 | { 24 | "type": "doctype", 25 | "name": "QR Code Configuration", 26 | "onboard": 1, 27 | } 28 | ] 29 | } 30 | ] 31 | return config -------------------------------------------------------------------------------- /barcode_shrdc/config/desktop.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | from frappe import _ 4 | 5 | def get_data(): 6 | return [ 7 | { 8 | "module_name": "Barcode Shrdc", 9 | "category": "Modules", 10 | "color": "grey", 11 | "icon": "fa fa-barcode", 12 | "type": "module", 13 | "label": _("Barcode Scanning System") 14 | } 15 | ] 16 | -------------------------------------------------------------------------------- /barcode_shrdc/config/docs.py: -------------------------------------------------------------------------------- 1 | """ 2 | Configuration for docs 3 | """ 4 | 5 | # source_link = "https://github.com/[org_name]/barcode_shrdc" 6 | # docs_base_url = "https://[org_name].github.io/barcode_shrdc" 7 | # headline = "App that does everything" 8 | # sub_heading = "Yes, you got that right the first time, everything" 9 | 10 | def get_context(context): 11 | context.brand_html = "Barcode Shrdc" 12 | -------------------------------------------------------------------------------- /barcode_shrdc/fixtures/custom_field.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "allow_in_quick_entry": 0, 4 | "allow_on_submit": 0, 5 | "bold": 0, 6 | "collapsible": 0, 7 | "collapsible_depends_on": null, 8 | "columns": 0, 9 | "default": null, 10 | "depends_on": null, 11 | "description": null, 12 | "docstatus": 0, 13 | "doctype": "Custom Field", 14 | "dt": "Project", 15 | "fetch_from": null, 16 | "fetch_if_empty": 0, 17 | "fieldname": "github_sync_id", 18 | "fieldtype": "Data", 19 | "hidden": 1, 20 | "ignore_user_permissions": 0, 21 | "ignore_xss_filter": 0, 22 | "in_global_search": 0, 23 | "in_list_view": 0, 24 | "in_standard_filter": 0, 25 | "insert_after": null, 26 | "label": "GitHub Sync ID", 27 | "length": 0, 28 | "modified": "2021-12-22 11:46:23.931381", 29 | "name": "Project-github_sync_id", 30 | "no_copy": 1, 31 | "options": null, 32 | "parent": null, 33 | "parentfield": null, 34 | "parenttype": null, 35 | "permlevel": 0, 36 | "precision": null, 37 | "print_hide": 0, 38 | "print_hide_if_no_value": 0, 39 | "print_width": null, 40 | "read_only": 1, 41 | "report_hide": 0, 42 | "reqd": 0, 43 | "search_index": 0, 44 | "translatable": 0, 45 | "unique": 1, 46 | "width": null 47 | }, 48 | { 49 | "allow_in_quick_entry": 0, 50 | "allow_on_submit": 0, 51 | "bold": 0, 52 | "collapsible": 0, 53 | "collapsible_depends_on": null, 54 | "columns": 0, 55 | "default": null, 56 | "depends_on": null, 57 | "description": null, 58 | "docstatus": 0, 59 | "doctype": "Custom Field", 60 | "dt": "Task", 61 | "fetch_from": null, 62 | "fetch_if_empty": 0, 63 | "fieldname": "github_sync_id", 64 | "fieldtype": "Data", 65 | "hidden": 1, 66 | "ignore_user_permissions": 0, 67 | "ignore_xss_filter": 0, 68 | "in_global_search": 0, 69 | "in_list_view": 0, 70 | "in_standard_filter": 0, 71 | "insert_after": null, 72 | "label": "GitHub Sync ID", 73 | "length": 0, 74 | "modified": "2021-12-22 11:46:24.446568", 75 | "name": "Task-github_sync_id", 76 | "no_copy": 1, 77 | "options": null, 78 | "parent": null, 79 | "parentfield": null, 80 | "parenttype": null, 81 | "permlevel": 0, 82 | "precision": null, 83 | "print_hide": 0, 84 | "print_hide_if_no_value": 0, 85 | "print_width": null, 86 | "read_only": 1, 87 | "report_hide": 0, 88 | "reqd": 0, 89 | "search_index": 0, 90 | "translatable": 0, 91 | "unique": 1, 92 | "width": null 93 | }, 94 | { 95 | "allow_in_quick_entry": 0, 96 | "allow_on_submit": 0, 97 | "bold": 0, 98 | "collapsible": 0, 99 | "collapsible_depends_on": null, 100 | "columns": 0, 101 | "default": null, 102 | "depends_on": null, 103 | "description": null, 104 | "docstatus": 0, 105 | "doctype": "Custom Field", 106 | "dt": "Deleted Document", 107 | "fetch_from": null, 108 | "fetch_if_empty": 0, 109 | "fieldname": "github_sync_id", 110 | "fieldtype": "Data", 111 | "hidden": 1, 112 | "ignore_user_permissions": 0, 113 | "ignore_xss_filter": 0, 114 | "in_global_search": 0, 115 | "in_list_view": 0, 116 | "in_standard_filter": 0, 117 | "insert_after": null, 118 | "label": "GitHub Sync ID", 119 | "length": 0, 120 | "modified": "2021-12-22 11:46:24.834922", 121 | "name": "Deleted Document-github_sync_id", 122 | "no_copy": 1, 123 | "options": null, 124 | "parent": null, 125 | "parentfield": null, 126 | "parenttype": null, 127 | "permlevel": 0, 128 | "precision": null, 129 | "print_hide": 0, 130 | "print_hide_if_no_value": 0, 131 | "print_width": null, 132 | "read_only": 1, 133 | "report_hide": 0, 134 | "reqd": 0, 135 | "search_index": 0, 136 | "translatable": 0, 137 | "unique": 1, 138 | "width": null 139 | }, 140 | { 141 | "allow_in_quick_entry": 0, 142 | "allow_on_submit": 0, 143 | "bold": 0, 144 | "collapsible": 0, 145 | "collapsible_depends_on": null, 146 | "columns": 0, 147 | "default": null, 148 | "depends_on": null, 149 | "description": null, 150 | "docstatus": 0, 151 | "doctype": "Custom Field", 152 | "dt": "Item", 153 | "fetch_from": null, 154 | "fetch_if_empty": 0, 155 | "fieldname": "hub_sync_id", 156 | "fieldtype": "Data", 157 | "hidden": 1, 158 | "ignore_user_permissions": 0, 159 | "ignore_xss_filter": 0, 160 | "in_global_search": 0, 161 | "in_list_view": 0, 162 | "in_standard_filter": 0, 163 | "insert_after": null, 164 | "label": "Hub Sync ID", 165 | "length": 0, 166 | "modified": "2021-12-22 11:46:32.564898", 167 | "name": "Item-hub_sync_id", 168 | "no_copy": 1, 169 | "options": null, 170 | "parent": null, 171 | "parentfield": null, 172 | "parenttype": null, 173 | "permlevel": 0, 174 | "precision": null, 175 | "print_hide": 0, 176 | "print_hide_if_no_value": 0, 177 | "print_width": null, 178 | "read_only": 1, 179 | "report_hide": 0, 180 | "reqd": 0, 181 | "search_index": 0, 182 | "translatable": 0, 183 | "unique": 1, 184 | "width": null 185 | }, 186 | { 187 | "allow_in_quick_entry": 0, 188 | "allow_on_submit": 0, 189 | "bold": 0, 190 | "collapsible": 0, 191 | "collapsible_depends_on": null, 192 | "columns": 0, 193 | "default": null, 194 | "depends_on": null, 195 | "description": null, 196 | "docstatus": 0, 197 | "doctype": "Custom Field", 198 | "dt": "Deleted Document", 199 | "fetch_from": null, 200 | "fetch_if_empty": 0, 201 | "fieldname": "hub_sync_id", 202 | "fieldtype": "Data", 203 | "hidden": 1, 204 | "ignore_user_permissions": 0, 205 | "ignore_xss_filter": 0, 206 | "in_global_search": 0, 207 | "in_list_view": 0, 208 | "in_standard_filter": 0, 209 | "insert_after": null, 210 | "label": "Hub Sync ID", 211 | "length": 0, 212 | "modified": "2021-12-22 11:46:33.181412", 213 | "name": "Deleted Document-hub_sync_id", 214 | "no_copy": 1, 215 | "options": null, 216 | "parent": null, 217 | "parentfield": null, 218 | "parenttype": null, 219 | "permlevel": 0, 220 | "precision": null, 221 | "print_hide": 0, 222 | "print_hide_if_no_value": 0, 223 | "print_width": null, 224 | "read_only": 1, 225 | "report_hide": 0, 226 | "reqd": 0, 227 | "search_index": 0, 228 | "translatable": 0, 229 | "unique": 1, 230 | "width": null 231 | }, 232 | { 233 | "allow_in_quick_entry": 0, 234 | "allow_on_submit": 1, 235 | "bold": 0, 236 | "collapsible": 0, 237 | "collapsible_depends_on": null, 238 | "columns": 0, 239 | "default": null, 240 | "depends_on": null, 241 | "description": null, 242 | "docstatus": 0, 243 | "doctype": "Custom Field", 244 | "dt": "Material Request", 245 | "fetch_from": null, 246 | "fetch_if_empty": 0, 247 | "fieldname": "workflow_state", 248 | "fieldtype": "Link", 249 | "hidden": 1, 250 | "ignore_user_permissions": 0, 251 | "ignore_xss_filter": 0, 252 | "in_global_search": 0, 253 | "in_list_view": 0, 254 | "in_standard_filter": 0, 255 | "insert_after": null, 256 | "label": "Workflow State", 257 | "length": 0, 258 | "modified": "2022-02-08 15:59:28.057911", 259 | "name": "Material Request-workflow_state", 260 | "no_copy": 1, 261 | "options": "Workflow State", 262 | "parent": null, 263 | "parentfield": null, 264 | "parenttype": null, 265 | "permlevel": 0, 266 | "precision": "", 267 | "print_hide": 0, 268 | "print_hide_if_no_value": 0, 269 | "print_width": null, 270 | "read_only": 0, 271 | "report_hide": 0, 272 | "reqd": 0, 273 | "search_index": 0, 274 | "translatable": 0, 275 | "unique": 0, 276 | "width": null 277 | }, 278 | { 279 | "allow_in_quick_entry": 0, 280 | "allow_on_submit": 0, 281 | "bold": 0, 282 | "collapsible": 0, 283 | "collapsible_depends_on": null, 284 | "columns": 0, 285 | "default": null, 286 | "depends_on": null, 287 | "description": null, 288 | "docstatus": 0, 289 | "doctype": "Custom Field", 290 | "dt": "Sales Invoice", 291 | "fetch_from": null, 292 | "fetch_if_empty": 0, 293 | "fieldname": "patient", 294 | "fieldtype": "Link", 295 | "hidden": 0, 296 | "ignore_user_permissions": 0, 297 | "ignore_xss_filter": 0, 298 | "in_global_search": 0, 299 | "in_list_view": 0, 300 | "in_standard_filter": 0, 301 | "insert_after": "naming_series", 302 | "label": "Patient", 303 | "length": 0, 304 | "modified": "2021-12-22 14:48:45.937009", 305 | "name": "Sales Invoice-patient", 306 | "no_copy": 0, 307 | "options": "Patient", 308 | "parent": null, 309 | "parentfield": null, 310 | "parenttype": null, 311 | "permlevel": 0, 312 | "precision": "", 313 | "print_hide": 0, 314 | "print_hide_if_no_value": 0, 315 | "print_width": null, 316 | "read_only": 0, 317 | "report_hide": 0, 318 | "reqd": 0, 319 | "search_index": 0, 320 | "translatable": 0, 321 | "unique": 0, 322 | "width": null 323 | }, 324 | { 325 | "allow_in_quick_entry": 0, 326 | "allow_on_submit": 0, 327 | "bold": 0, 328 | "collapsible": 0, 329 | "collapsible_depends_on": null, 330 | "columns": 0, 331 | "default": null, 332 | "depends_on": null, 333 | "description": null, 334 | "docstatus": 0, 335 | "doctype": "Custom Field", 336 | "dt": "Sales Invoice", 337 | "fetch_from": "patient.patient_name", 338 | "fetch_if_empty": 0, 339 | "fieldname": "patient_name", 340 | "fieldtype": "Data", 341 | "hidden": 0, 342 | "ignore_user_permissions": 0, 343 | "ignore_xss_filter": 0, 344 | "in_global_search": 0, 345 | "in_list_view": 0, 346 | "in_standard_filter": 0, 347 | "insert_after": "patient", 348 | "label": "Patient Name", 349 | "length": 0, 350 | "modified": "2021-12-22 14:48:47.976351", 351 | "name": "Sales Invoice-patient_name", 352 | "no_copy": 0, 353 | "options": null, 354 | "parent": null, 355 | "parentfield": null, 356 | "parenttype": null, 357 | "permlevel": 0, 358 | "precision": "", 359 | "print_hide": 0, 360 | "print_hide_if_no_value": 0, 361 | "print_width": null, 362 | "read_only": 1, 363 | "report_hide": 0, 364 | "reqd": 0, 365 | "search_index": 0, 366 | "translatable": 1, 367 | "unique": 0, 368 | "width": null 369 | }, 370 | { 371 | "allow_in_quick_entry": 0, 372 | "allow_on_submit": 0, 373 | "bold": 0, 374 | "collapsible": 0, 375 | "collapsible_depends_on": null, 376 | "columns": 0, 377 | "default": "0", 378 | "depends_on": "eval:doc.purpose == 'Receive at Warehouse'", 379 | "description": null, 380 | "docstatus": 0, 381 | "doctype": "Custom Field", 382 | "dt": "Stock Entry", 383 | "fetch_from": null, 384 | "fetch_if_empty": 0, 385 | "fieldname": "scan_stock_entry_barcode", 386 | "fieldtype": "Check", 387 | "hidden": 0, 388 | "ignore_user_permissions": 0, 389 | "ignore_xss_filter": 0, 390 | "in_global_search": 0, 391 | "in_list_view": 0, 392 | "in_standard_filter": 0, 393 | "insert_after": "stock_entry_type", 394 | "label": "Scan Stock Entry Barcode", 395 | "length": 0, 396 | "modified": "2022-02-11 12:58:14.721149", 397 | "name": "Stock Entry-scan_stock_entry_barcode", 398 | "no_copy": 0, 399 | "options": null, 400 | "parent": null, 401 | "parentfield": null, 402 | "parenttype": null, 403 | "permlevel": 0, 404 | "precision": "", 405 | "print_hide": 0, 406 | "print_hide_if_no_value": 0, 407 | "print_width": null, 408 | "read_only": 0, 409 | "report_hide": 0, 410 | "reqd": 0, 411 | "search_index": 0, 412 | "translatable": 0, 413 | "unique": 0, 414 | "width": null 415 | }, 416 | { 417 | "allow_in_quick_entry": 0, 418 | "allow_on_submit": 0, 419 | "bold": 0, 420 | "collapsible": 0, 421 | "collapsible_depends_on": null, 422 | "columns": 0, 423 | "default": null, 424 | "depends_on": "eval:doc.purpose == 'Receive at Warehouse' && doc.scan_stock_entry_barcode==1", 425 | "description": null, 426 | "docstatus": 0, 427 | "doctype": "Custom Field", 428 | "dt": "Stock Entry", 429 | "fetch_from": null, 430 | "fetch_if_empty": 0, 431 | "fieldname": "stock_entry_outward_git", 432 | "fieldtype": "Data", 433 | "hidden": 0, 434 | "ignore_user_permissions": 0, 435 | "ignore_xss_filter": 0, 436 | "in_global_search": 0, 437 | "in_list_view": 0, 438 | "in_standard_filter": 0, 439 | "insert_after": "scan_stock_entry_barcode", 440 | "label": "Stock Entry Outward GIT", 441 | "length": 0, 442 | "modified": "2022-02-11 14:49:04.966650", 443 | "name": "Stock Entry-stock_entry_outward_git", 444 | "no_copy": 0, 445 | "options": null, 446 | "parent": null, 447 | "parentfield": null, 448 | "parenttype": null, 449 | "permlevel": 0, 450 | "precision": "", 451 | "print_hide": 0, 452 | "print_hide_if_no_value": 0, 453 | "print_width": null, 454 | "read_only": 0, 455 | "report_hide": 0, 456 | "reqd": 0, 457 | "search_index": 0, 458 | "translatable": 1, 459 | "unique": 0, 460 | "width": null 461 | }, 462 | { 463 | "allow_in_quick_entry": 0, 464 | "allow_on_submit": 0, 465 | "bold": 0, 466 | "collapsible": 0, 467 | "collapsible_depends_on": null, 468 | "columns": 0, 469 | "default": null, 470 | "depends_on": null, 471 | "description": null, 472 | "docstatus": 0, 473 | "doctype": "Custom Field", 474 | "dt": "Sales Invoice", 475 | "fetch_from": null, 476 | "fetch_if_empty": 0, 477 | "fieldname": "ref_practitioner", 478 | "fieldtype": "Link", 479 | "hidden": 0, 480 | "ignore_user_permissions": 0, 481 | "ignore_xss_filter": 0, 482 | "in_global_search": 0, 483 | "in_list_view": 0, 484 | "in_standard_filter": 0, 485 | "insert_after": "customer", 486 | "label": "Referring Practitioner", 487 | "length": 0, 488 | "modified": "2021-12-22 14:48:48.737087", 489 | "name": "Sales Invoice-ref_practitioner", 490 | "no_copy": 0, 491 | "options": "Healthcare Practitioner", 492 | "parent": null, 493 | "parentfield": null, 494 | "parenttype": null, 495 | "permlevel": 0, 496 | "precision": "", 497 | "print_hide": 0, 498 | "print_hide_if_no_value": 0, 499 | "print_width": null, 500 | "read_only": 0, 501 | "report_hide": 0, 502 | "reqd": 0, 503 | "search_index": 0, 504 | "translatable": 0, 505 | "unique": 0, 506 | "width": null 507 | }, 508 | { 509 | "allow_in_quick_entry": 0, 510 | "allow_on_submit": 0, 511 | "bold": 0, 512 | "collapsible": 0, 513 | "collapsible_depends_on": null, 514 | "columns": 0, 515 | "default": "1", 516 | "depends_on": null, 517 | "description": null, 518 | "docstatus": 0, 519 | "doctype": "Custom Field", 520 | "dt": "Print Settings", 521 | "fetch_from": null, 522 | "fetch_if_empty": 0, 523 | "fieldname": "compact_item_print", 524 | "fieldtype": "Check", 525 | "hidden": 0, 526 | "ignore_user_permissions": 0, 527 | "ignore_xss_filter": 0, 528 | "in_global_search": 0, 529 | "in_list_view": 0, 530 | "in_standard_filter": 0, 531 | "insert_after": "with_letterhead", 532 | "label": "Compact Item Print", 533 | "length": 0, 534 | "modified": "2021-12-22 11:47:05.456698", 535 | "name": "Print Settings-compact_item_print", 536 | "no_copy": 0, 537 | "options": null, 538 | "parent": null, 539 | "parentfield": null, 540 | "parenttype": null, 541 | "permlevel": 0, 542 | "precision": "", 543 | "print_hide": 0, 544 | "print_hide_if_no_value": 0, 545 | "print_width": null, 546 | "read_only": 0, 547 | "report_hide": 0, 548 | "reqd": 0, 549 | "search_index": 0, 550 | "translatable": 0, 551 | "unique": 0, 552 | "width": null 553 | }, 554 | { 555 | "allow_in_quick_entry": 0, 556 | "allow_on_submit": 0, 557 | "bold": 0, 558 | "collapsible": 0, 559 | "collapsible_depends_on": null, 560 | "columns": 0, 561 | "default": null, 562 | "depends_on": null, 563 | "description": null, 564 | "docstatus": 0, 565 | "doctype": "Custom Field", 566 | "dt": "Address", 567 | "fetch_from": null, 568 | "fetch_if_empty": 0, 569 | "fieldname": "tax_category", 570 | "fieldtype": "Link", 571 | "hidden": 0, 572 | "ignore_user_permissions": 0, 573 | "ignore_xss_filter": 0, 574 | "in_global_search": 0, 575 | "in_list_view": 0, 576 | "in_standard_filter": 0, 577 | "insert_after": "fax", 578 | "label": "Tax Category", 579 | "length": 0, 580 | "modified": "2018-12-28 22:29:21.828090", 581 | "name": "Address-tax_category", 582 | "no_copy": 0, 583 | "options": "Tax Category", 584 | "parent": null, 585 | "parentfield": null, 586 | "parenttype": null, 587 | "permlevel": 0, 588 | "precision": "", 589 | "print_hide": 0, 590 | "print_hide_if_no_value": 0, 591 | "print_width": null, 592 | "read_only": 0, 593 | "report_hide": 0, 594 | "reqd": 0, 595 | "search_index": 0, 596 | "translatable": 0, 597 | "unique": 0, 598 | "width": null 599 | }, 600 | { 601 | "allow_in_quick_entry": 0, 602 | "allow_on_submit": 0, 603 | "bold": 0, 604 | "collapsible": 0, 605 | "collapsible_depends_on": null, 606 | "columns": 0, 607 | "default": "0", 608 | "depends_on": null, 609 | "description": null, 610 | "docstatus": 0, 611 | "doctype": "Custom Field", 612 | "dt": "Print Settings", 613 | "fetch_from": null, 614 | "fetch_if_empty": 0, 615 | "fieldname": "print_taxes_with_zero_amount", 616 | "fieldtype": "Check", 617 | "hidden": 0, 618 | "ignore_user_permissions": 0, 619 | "ignore_xss_filter": 0, 620 | "in_global_search": 0, 621 | "in_list_view": 0, 622 | "in_standard_filter": 0, 623 | "insert_after": "allow_print_for_cancelled", 624 | "label": "Print taxes with zero amount", 625 | "length": 0, 626 | "modified": "2021-12-22 11:47:05.593967", 627 | "name": "Print Settings-print_taxes_with_zero_amount", 628 | "no_copy": 0, 629 | "options": null, 630 | "parent": null, 631 | "parentfield": null, 632 | "parenttype": null, 633 | "permlevel": 0, 634 | "precision": "", 635 | "print_hide": 0, 636 | "print_hide_if_no_value": 0, 637 | "print_width": null, 638 | "read_only": 0, 639 | "report_hide": 0, 640 | "reqd": 0, 641 | "search_index": 0, 642 | "translatable": 0, 643 | "unique": 0, 644 | "width": null 645 | }, 646 | { 647 | "allow_in_quick_entry": 0, 648 | "allow_on_submit": 0, 649 | "bold": 1, 650 | "collapsible": 0, 651 | "collapsible_depends_on": null, 652 | "columns": 1, 653 | "default": null, 654 | "depends_on": "eval:parent.barcode_validation == 1", 655 | "description": null, 656 | "docstatus": 0, 657 | "doctype": "Custom Field", 658 | "dt": "Delivery Note Item", 659 | "fetch_from": null, 660 | "fetch_if_empty": 0, 661 | "fieldname": "checking_qty", 662 | "fieldtype": "Float", 663 | "hidden": 0, 664 | "ignore_user_permissions": 0, 665 | "ignore_xss_filter": 0, 666 | "in_global_search": 0, 667 | "in_list_view": 1, 668 | "in_standard_filter": 0, 669 | "insert_after": "qty", 670 | "label": "Checking Qty", 671 | "length": 0, 672 | "modified": "2021-12-23 01:06:56.874184", 673 | "name": "Delivery Note Item-checking_qty", 674 | "no_copy": 0, 675 | "options": null, 676 | "parent": null, 677 | "parentfield": null, 678 | "parenttype": null, 679 | "permlevel": 0, 680 | "precision": "", 681 | "print_hide": 1, 682 | "print_hide_if_no_value": 0, 683 | "print_width": null, 684 | "read_only": 0, 685 | "report_hide": 0, 686 | "reqd": 1, 687 | "search_index": 0, 688 | "translatable": 0, 689 | "unique": 0, 690 | "width": null 691 | }, 692 | { 693 | "allow_in_quick_entry": 0, 694 | "allow_on_submit": 0, 695 | "bold": 0, 696 | "collapsible": 0, 697 | "collapsible_depends_on": null, 698 | "columns": 0, 699 | "default": null, 700 | "depends_on": null, 701 | "description": null, 702 | "docstatus": 0, 703 | "doctype": "Custom Field", 704 | "dt": "Frepple Item Distribution", 705 | "fetch_from": null, 706 | "fetch_if_empty": 0, 707 | "fieldname": "absd", 708 | "fieldtype": "Button", 709 | "hidden": 0, 710 | "ignore_user_permissions": 0, 711 | "ignore_xss_filter": 0, 712 | "in_global_search": 0, 713 | "in_list_view": 0, 714 | "in_standard_filter": 0, 715 | "insert_after": "resource_quantity", 716 | "label": "absd", 717 | "length": 0, 718 | "modified": "2022-02-11 16:50:46.853619", 719 | "name": "Frepple Item Distribution-absd", 720 | "no_copy": 0, 721 | "options": null, 722 | "parent": null, 723 | "parentfield": null, 724 | "parenttype": null, 725 | "permlevel": 0, 726 | "precision": "", 727 | "print_hide": 0, 728 | "print_hide_if_no_value": 0, 729 | "print_width": null, 730 | "read_only": 0, 731 | "report_hide": 0, 732 | "reqd": 0, 733 | "search_index": 0, 734 | "translatable": 0, 735 | "unique": 0, 736 | "width": null 737 | }, 738 | { 739 | "allow_in_quick_entry": 0, 740 | "allow_on_submit": 0, 741 | "bold": 1, 742 | "collapsible": 0, 743 | "collapsible_depends_on": null, 744 | "columns": 1, 745 | "default": null, 746 | "depends_on": "eval:parent.stock_check ==1", 747 | "description": null, 748 | "docstatus": 0, 749 | "doctype": "Custom Field", 750 | "dt": "Stock Entry Detail", 751 | "fetch_from": null, 752 | "fetch_if_empty": 0, 753 | "fieldname": "checking_qty", 754 | "fieldtype": "Float", 755 | "hidden": 0, 756 | "ignore_user_permissions": 0, 757 | "ignore_xss_filter": 0, 758 | "in_global_search": 0, 759 | "in_list_view": 1, 760 | "in_standard_filter": 0, 761 | "insert_after": "qty", 762 | "label": "Checking Qty", 763 | "length": 0, 764 | "modified": "2021-12-22 15:33:52.407124", 765 | "name": "Stock Entry Detail-checking_qty", 766 | "no_copy": 0, 767 | "options": null, 768 | "parent": null, 769 | "parentfield": null, 770 | "parenttype": null, 771 | "permlevel": 0, 772 | "precision": "", 773 | "print_hide": 0, 774 | "print_hide_if_no_value": 0, 775 | "print_width": null, 776 | "read_only": 0, 777 | "report_hide": 0, 778 | "reqd": 0, 779 | "search_index": 0, 780 | "translatable": 0, 781 | "unique": 0, 782 | "width": null 783 | }, 784 | { 785 | "allow_in_quick_entry": 0, 786 | "allow_on_submit": 0, 787 | "bold": 0, 788 | "collapsible": 0, 789 | "collapsible_depends_on": null, 790 | "columns": 0, 791 | "default": null, 792 | "depends_on": "eval:(doc.stock_entry_type == \"Material Transfer for Manufacture\" || doc.stock_entry_type == \"Receive at Warehouse\")", 793 | "description": "Scan Serial Number for serialized items", 794 | "docstatus": 0, 795 | "doctype": "Custom Field", 796 | "dt": "Stock Entry", 797 | "fetch_from": null, 798 | "fetch_if_empty": 0, 799 | "fieldname": "stock_check", 800 | "fieldtype": "Check", 801 | "hidden": 0, 802 | "ignore_user_permissions": 0, 803 | "ignore_xss_filter": 0, 804 | "in_global_search": 0, 805 | "in_list_view": 0, 806 | "in_standard_filter": 0, 807 | "insert_after": "scan_barcode", 808 | "label": "Barcode Scanning Validation", 809 | "length": 0, 810 | "modified": "2021-12-22 15:43:16.852725", 811 | "name": "Stock Entry-stock_check", 812 | "no_copy": 0, 813 | "options": null, 814 | "parent": null, 815 | "parentfield": null, 816 | "parenttype": null, 817 | "permlevel": 0, 818 | "precision": "", 819 | "print_hide": 0, 820 | "print_hide_if_no_value": 0, 821 | "print_width": null, 822 | "read_only": 0, 823 | "report_hide": 0, 824 | "reqd": 0, 825 | "search_index": 0, 826 | "translatable": 0, 827 | "unique": 0, 828 | "width": null 829 | }, 830 | { 831 | "allow_in_quick_entry": 0, 832 | "allow_on_submit": 0, 833 | "bold": 0, 834 | "collapsible": 0, 835 | "collapsible_depends_on": null, 836 | "columns": 0, 837 | "default": null, 838 | "depends_on": "eval:doc.stock_entry_type == \"Material Transfer for Manufacture\" || \"Receive at Warehouse\"", 839 | "description": null, 840 | "docstatus": 0, 841 | "doctype": "Custom Field", 842 | "dt": "Delivery Note", 843 | "fetch_from": null, 844 | "fetch_if_empty": 0, 845 | "fieldname": "barcode_validation", 846 | "fieldtype": "Check", 847 | "hidden": 0, 848 | "ignore_user_permissions": 0, 849 | "ignore_xss_filter": 0, 850 | "in_global_search": 0, 851 | "in_list_view": 1, 852 | "in_standard_filter": 0, 853 | "insert_after": "scan_barcode", 854 | "label": "Barcode Scanning Validation", 855 | "length": 0, 856 | "modified": "2021-12-23 01:09:51.371341", 857 | "name": "Delivery Note-barcode_validation", 858 | "no_copy": 0, 859 | "options": null, 860 | "parent": null, 861 | "parentfield": null, 862 | "parenttype": null, 863 | "permlevel": 0, 864 | "precision": "", 865 | "print_hide": 0, 866 | "print_hide_if_no_value": 0, 867 | "print_width": null, 868 | "read_only": 0, 869 | "report_hide": 0, 870 | "reqd": 0, 871 | "search_index": 0, 872 | "translatable": 0, 873 | "unique": 0, 874 | "width": null 875 | }, 876 | { 877 | "allow_in_quick_entry": 0, 878 | "allow_on_submit": 0, 879 | "bold": 0, 880 | "collapsible": 0, 881 | "collapsible_depends_on": null, 882 | "columns": 0, 883 | "default": null, 884 | "depends_on": null, 885 | "description": null, 886 | "docstatus": 0, 887 | "doctype": "Custom Field", 888 | "dt": "Sales Invoice Item", 889 | "fetch_from": null, 890 | "fetch_if_empty": 0, 891 | "fieldname": "reference_dt", 892 | "fieldtype": "Link", 893 | "hidden": 0, 894 | "ignore_user_permissions": 0, 895 | "ignore_xss_filter": 0, 896 | "in_global_search": 0, 897 | "in_list_view": 0, 898 | "in_standard_filter": 0, 899 | "insert_after": "edit_references", 900 | "label": "Reference DocType", 901 | "length": 0, 902 | "modified": "2021-12-22 14:48:49.433370", 903 | "name": "Sales Invoice Item-reference_dt", 904 | "no_copy": 0, 905 | "options": "DocType", 906 | "parent": null, 907 | "parentfield": null, 908 | "parenttype": null, 909 | "permlevel": 0, 910 | "precision": "", 911 | "print_hide": 0, 912 | "print_hide_if_no_value": 0, 913 | "print_width": null, 914 | "read_only": 0, 915 | "report_hide": 0, 916 | "reqd": 0, 917 | "search_index": 0, 918 | "translatable": 0, 919 | "unique": 0, 920 | "width": null 921 | }, 922 | { 923 | "allow_in_quick_entry": 0, 924 | "allow_on_submit": 0, 925 | "bold": 0, 926 | "collapsible": 0, 927 | "collapsible_depends_on": null, 928 | "columns": 0, 929 | "default": null, 930 | "depends_on": null, 931 | "description": null, 932 | "docstatus": 0, 933 | "doctype": "Custom Field", 934 | "dt": "Sales Invoice Item", 935 | "fetch_from": null, 936 | "fetch_if_empty": 0, 937 | "fieldname": "reference_dn", 938 | "fieldtype": "Dynamic Link", 939 | "hidden": 0, 940 | "ignore_user_permissions": 0, 941 | "ignore_xss_filter": 0, 942 | "in_global_search": 0, 943 | "in_list_view": 0, 944 | "in_standard_filter": 0, 945 | "insert_after": "reference_dt", 946 | "label": "Reference Name", 947 | "length": 0, 948 | "modified": "2021-12-22 14:48:50.063352", 949 | "name": "Sales Invoice Item-reference_dn", 950 | "no_copy": 0, 951 | "options": "reference_dt", 952 | "parent": null, 953 | "parentfield": null, 954 | "parenttype": null, 955 | "permlevel": 0, 956 | "precision": "", 957 | "print_hide": 0, 958 | "print_hide_if_no_value": 0, 959 | "print_width": null, 960 | "read_only": 0, 961 | "report_hide": 0, 962 | "reqd": 0, 963 | "search_index": 0, 964 | "translatable": 0, 965 | "unique": 0, 966 | "width": null 967 | } 968 | ] -------------------------------------------------------------------------------- /barcode_shrdc/fixtures/custom_script.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "docstatus": 0, 4 | "doctype": "Custom Script", 5 | "dt": "Stock Entry", 6 | "modified": "2022-02-16 13:16:48.302398", 7 | "name": "Stock Entry-Client", 8 | "parent": null, 9 | "parentfield": null, 10 | "parenttype": null, 11 | "script": "frappe.ui.form.on('Stock Entry', {\n\trefresh(frm) {\n frm.fields_dict.items.grid.toggle_enable(\"qty\",!frm.doc.stock_check);\n frm.fields_dict.items.grid.toggle_display(\"checking_qty\",frm.doc.stock_check);\n frm.fields_dict.items.grid.set_column_disp(\"checking_qty\",frm.doc.stock_check);\n if(frm.doc.docstatus===1 && frm.doc.stock_entry_type == \"Manufacture\") {\n\t\t\tfrm.add_custom_button(__(\"Barcode Printing\"), function() {\n frappe.call({\n method:'barcode_shrdc.barcode_shrdc.doctype.barcode_printing.barcode_printing.create_barcode_printing',\n args:{ throw_if_missing: true, \n se_id: frm.doc.name,\n pr_id: null}\n \n })\n\t\t\t\t.then(r => {\n\t\t\t\t\tif (r.message) {\n\t\t\t\t\t\tlet new_bp_doc = r.message;\t// new barcode printing request\n\t\t\t\t\t\tfrappe.set_route(\"Form\", new_bp_doc.doctype, new_bp_doc.name);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}, __(\"Create\"));\n\t\t\tfrm.page.set_inner_btn_group_as_primary(__('Create'));\n\n\t\t}\n\t},\n\tonload(frm) {\n frm.fields_dict.items.grid.toggle_enable(\"qty\",!frm.doc.stock_check);\n frm.fields_dict.items.grid.toggle_display(\"checking_qty\",frm.doc.stock_check);\n frm.fields_dict.items.grid.set_column_disp(\"checking_qty\",frm.doc.stock_check);\n\t},\n\tscan_barcode: function(frm){\n\t let scan_barcode_field = frm.fields_dict[\"scan_barcode\"];\n\n\t\tlet show_description = function(idx, exist = null) {\n\t\t\tif (exist) {\n\t\t\t\tscan_barcode_field.set_new_description(__('Row #{0}: Qty increased by 1', [idx]));\n\t\t\t} else {\n\t\t\t\tscan_barcode_field.set_new_description(__('Row #{0}: Item added', [idx]));\n\t\t\t}\n\t\t};\n\n\t\tif(frm.doc.scan_barcode) {\n\t\t\tfrappe.call({\n\t\t\t\tmethod: \"erpnext.selling.page.point_of_sale.point_of_sale.search_serial_or_batch_or_barcode_number\",\n\t\t\t\targs: { search_value: frm.doc.scan_barcode }\n\t\t\t}).then(r => {\n\t\t\t\tconst data = r && r.message;\n\t\t\t\tif (!data || Object.keys(data).length === 0) {\n\t\t\t\t\tscan_barcode_field.set_new_description(__('Cannot find Item with this barcode'));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet cur_grid = frm.fields_dict.items.grid;\n\n\t\t\t\tlet row_to_modify = null;\n\t\t\t\tconst existing_item_row = frm.doc.items.find(d => d.item_code === data.item_code);\n\t\t\t\tconst blank_item_row = frm.doc.items.find(d => !d.item_code);\n\n\t\t\t\tif (existing_item_row) {\n\t\t\t\t\trow_to_modify = existing_item_row;\n\t\t\t\t} else if (blank_item_row) {\n\t\t\t\t\trow_to_modify = blank_item_row;\n\t\t\t\t}\n\t\t\t\tif (!row_to_modify) {\n\t\t\t\t\t// add new row\n\t\t\t\t\trow_to_modify = frappe.model.add_child(frm.doc, cur_grid.doctype, 'items');\n\t\t\t\t\tfrappe.msgprint({\n title: __('Alert'),\n indicator: 'orange',\n message: __('New Item is added')\n });\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t if(data[\"batch_no\"]&& frappe.meta.has_field(row_to_modify.doctype, \"batch_no\")){\n\t\t\t\t if(frm.doc.items.find(d => d.item_code === data.item_code))\n\t\t\t\t {\n\t\t\t\t if(!frm.doc.items.find(d => d.batch_no === data.batch_no)){\n \t\t\t\t row_to_modify = frappe.model.add_child(frm.doc, cur_grid.doctype, 'items');\n \t\t\t\t }\n\t\t\t\t }\n\t\t\t\t }\n\t\t\t\t}\n\n\n\t\t\t\tshow_description(row_to_modify.idx, row_to_modify.item_code);\n\n\t\t\t\tfrm.from_barcode = true;\n\t\t\t\tfrappe.model.set_value(row_to_modify.doctype, row_to_modify.name, {\n\t\t\t\t\titem_code: data.item_code,\n\t\t\t\t\tchecking_qty: (frm.doc.stock_check)?(row_to_modify.checking_qty || 0) + 1 : row_to_modify.checking_qty,\n\t\t\t\t\tqty: (!frm.doc.stock_check)?(row_to_modify.qty || 0) + 1 : row_to_modify.qty\n\t\t\t\t});\n\n\t\t\t\t['serial_no', 'batch_no', 'barcode'].forEach(field => {\n\t\t\t\t\tif (data[field] && frappe.meta.has_field(row_to_modify.doctype, field)) {\n\n\t\t\t\t\t\tlet value = (row_to_modify[field] && field === \"serial_no\")\n\t\t\t\t\t\t\t? row_to_modify[field] + '\\n' + data[field] : data[field];\n\n\t\t\t\t\t\tfrappe.model.set_value(row_to_modify.doctype,\n\t\t\t\t\t\t\trow_to_modify.name, field, value);\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tscan_barcode_field.set_value('');\n\t\t\t\trefresh_field(\"items\");\n\t\t\t});\n\t\t}\n\t},\n\tstock_check: function(frm)\n\t{\n frm.fields_dict.items.grid.toggle_enable(\"qty\",!frm.doc.stock_check);\n frm.fields_dict.items.grid.toggle_display(\"checking_qty\",frm.doc.stock_check);\n frm.fields_dict.items.grid.set_column_disp(\"checking_qty\",frm.doc.stock_check);\n if (frm.doc.stock_entry_type == \"Receive at Warehouse\")\n {\n if(frm.doc.stock_check)\n {\n frm.doc.items.forEach(function(d){\n d.serial_no = \"\"\n })\n }\n else\n {\n frappe.call({\n \t\t\tdoc: frm.doc,\n \t\t\tmethod: \"set_items_for_stock_in\",\n \t\t\tcallback: function() {\n \t\t\t\trefresh_field('items');\n \t\t\t}\n \t\t}); \n }\n\n }\n\t},\n\tbefore_submit: function(frm,cdt,cdn){\n\t\tconst item = locals[cdt][cdn];\n\t\tif(frm.doc.stock_check)\n\t\t{\n\t\t frm.doc.items.forEach(function(d)\n {\n \t\t if(d.qty !== d.checking_qty) \n \t\t {\n \t\t frappe.validated = false;\n frappe.msgprint({\n title: __('Warning'),\n indicator: 'red',\n message: __('Checking Qty and Required Qty of Items row {0} does not matched.',[d.idx])\n });\n \t\t }\n \t\t if (frm.doc.stock_entry_type==\"Receive at Warehouse\")\n \t\t {\n \t\t frappe.call({\n \t\t\targs: {name:frm.doc.outgoing_stock_entry},\n \t\t\tmethod: \"get_stock_entry\",\n \t\t\tcallback: function(r) {\n \t\t\t\tvar send_doc = r.message;\n \t\t\t\t var send_item = send_doc.items.find(send => send.item_code === d.item_code);\n \t\t var send_serials = send_item.serial_no.split(\"\\n\");\n \t\t var serials = d.serial_no.split(\"\\n\");\n \t\t if (serials[serials.length-1]=='')\n \t\t {\n \t\t serials.pop();\n \t\t }\n \t\t const containsAll = serials.every(element => {\n return send_serials.includes(element);\n });\n\n \t\t if (!containsAll)\n \t\t {\n frappe.validated = false;\n frappe.msgprint({\n title: __('Warning'),\n indicator: 'red',\n message: __('Serial No. of Items row {0} does not match with Stock Entry (Outward GIT) {1}.',[d.idx, frm.doc.outgoing_stock_entry])\n });\n \t\t }\n \t\t\t}\n \t\t}); \n \t\t \n \t\t }\n });\n\t\t}\n\t},\n\tbefore_save(frm)\n\t{\n\t\tif(!frm.doc.stock_check)\n\t\t{\n \t\tfrm.doc.items.forEach(function(d)\n {\n frappe.model.set_value(d.doctype,d.name,'checking_qty',0);\n }\n );\n\t\t}\n\t},\n\tstock_entry_outward_git(frm){\n\t frm.set_value(\"outgoing_stock_entry\",frm.doc.stock_entry_outward_git);\n\t},\n// \twork_order: function(frm) {\n// \t\tfrm.cscript.toggle_enable_bom();\n// \t\tif(!frm.doc.work_order || frm.doc.job_card) {\n// \t\t\treturn;\n// \t\t}\n// var fg_completed_qty;\n// \t\treturn frappe.call({\n// \t\t\tmethod: \"get_work_order_details2\",\n// \t\t\targs: {\n// \t\t\t\twork_order: frm.doc.work_order,\n// \t\t\t\tcompany: frm.doc.company\n// \t\t\t},\n// \t\t\tcallback: function(r) {\n// \t\t\t\tif (!r.exc) {\n// \t\t\t\t\t$.each([\"from_bom\", \"bom_no\", \"fg_completed_qty\", \"use_multi_level_bom\"], function(i, field) {\n// \t\t\t\t\t\tfrm.set_value(field, r.message[field]);\n// \t\t\t\t\t});\n// \t\t\t fg_completed_qty = r.message.fg_completed_qty;\n\n// \t\t\t\t\tif (frm.doc.purpose == \"Material Transfer for Manufacture\" && !frm.doc.to_warehouse)\n// \t\t\t\t\t\tfrm.set_value(\"to_warehouse\", r.message.wip_warehouse);\n\n\n// \t\t\t\t\tif (frm.doc.purpose == \"Manufacture\" || frm.doc.purpose == \"Material Consumption for Manufacture\" ) {\n// \t\t\t\t\t\tif (frm.doc.purpose == \"Manufacture\") {\n// \t\t\t\t\t\t\tif (!frm.doc.to_warehouse) frm.set_value(\"to_warehouse\", r.message.fg_warehouse);\n// \t\t\t\t\t\t}\n// \t\t\t\t\t\tif (!frm.doc.from_warehouse) frm.set_value(\"from_warehouse\", r.message.wip_warehouse);\n// \t\t\t\t\t}\n// frm.cscript.get_items();\n// \t\t\t\t}\n// \t\t\t}\n// \t\t});\n// \t}\n\n});\n" 12 | }, 13 | { 14 | "docstatus": 0, 15 | "doctype": "Custom Script", 16 | "dt": "Delivery Note", 17 | "modified": "2022-02-16 13:17:26.477860", 18 | "name": "Delivery Note-Client", 19 | "parent": null, 20 | "parentfield": null, 21 | "parenttype": null, 22 | "script": "frappe.ui.form.on('Delivery Note', {\n\trefresh(frm) {\n frm.fields_dict.items.grid.toggle_enable(\"qty\",!frm.doc.barcode_validation);\n frm.fields_dict.items.grid.toggle_display(\"checking_qty\",frm.doc.barcode_validation);\n frm.fields_dict.items.grid.set_column_disp(\"checking_qty\",frm.doc.barcode_validation);\n\t},\n\tonload(frm) {\n frm.fields_dict.items.grid.toggle_enable(\"qty\",!frm.doc.barcode_validation);\n frm.fields_dict.items.grid.toggle_display(\"checking_qty\",frm.doc.barcode_validation);\n frm.fields_dict.items.grid.set_column_disp(\"checking_qty\",frm.doc.barcode_validation);\n\t},\n\tscan_barcode: function(frm){\n\t let scan_barcode_field = frm.fields_dict[\"scan_barcode\"];\n\n\t\tlet show_description = function(idx, exist = null) {\n\t\t\tif (exist) {\n\t\t\t\tscan_barcode_field.set_new_description(__('Row #{0}: Qty increased by 1', [idx]));\n\t\t\t} else {\n\t\t\t\tscan_barcode_field.set_new_description(__('Row #{0}: Item added', [idx]));\n\t\t\t}\n\t\t};\n\n\t\tif(frm.doc.scan_barcode) {\n\t\t\tfrappe.call({\n\t\t\t\tmethod: \"erpnext.selling.page.point_of_sale.point_of_sale.search_serial_or_batch_or_barcode_number\",\n\t\t\t\targs: { search_value: frm.doc.scan_barcode }\n\t\t\t}).then(r => {\n\t\t\t\tconst data = r && r.message;\n\t\t\t\tif (!data || Object.keys(data).length === 0) {\n\t\t\t\t\tscan_barcode_field.set_new_description(__('Cannot find Item with this barcode'));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet cur_grid = frm.fields_dict.items.grid;\n\n\t\t\t\tlet row_to_modify = null;\n\t\t\t\tconst existing_item_row = frm.doc.items.find(d => d.item_code === data.item_code);\n\t\t\t\tconst blank_item_row = frm.doc.items.find(d => !d.item_code);\n\n\t\t\t\tif (existing_item_row) {\n\t\t\t\t\trow_to_modify = existing_item_row;\n\t\t\t\t} else if (blank_item_row) {\n\t\t\t\t\trow_to_modify = blank_item_row;\n\t\t\t\t}\n\t\t\t\tif (!row_to_modify) {\n\t\t\t\t\t// add new row\n\t\t\t\t\trow_to_modify = frappe.model.add_child(frm.doc, cur_grid.doctype, 'items');\n\t\t\t\t\tfrappe.msgprint({\n title: __('Alert'),\n indicator: 'orange',\n message: __('New Item is added')\n });\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t if(data[\"batch_no\"]&& frappe.meta.has_field(row_to_modify.doctype, \"batch_no\")){\n\t\t\t\t if(frm.doc.items.find(d => d.item_code === data.item_code))\n\t\t\t\t {\n\t\t\t\t if(!frm.doc.items.find(d => d.batch_no === data.batch_no)){\n \t\t\t\t row_to_modify = frappe.model.add_child(frm.doc, cur_grid.doctype, 'items');\n \t\t\t\t }\n\t\t\t\t }\n\t\t\t\t }\n\t\t\t\t}\n\n\t\t\t\tshow_description(row_to_modify.idx, row_to_modify.item_code);\n\n\t\t\t\tfrm.from_barcode = true;\n\t\t\t\tfrappe.model.set_value(row_to_modify.doctype, row_to_modify.name, {\n\t\t\t\t\titem_code: data.item_code,\n\t\t\t\t\tchecking_qty: (frm.doc.barcode_validation)?(row_to_modify.checking_qty || 0) + 1 : row_to_modify.checking_qty,\n\t\t\t\t\tqty: (!frm.doc.barcode_validation)?(row_to_modify.qty || 0) + 1 : row_to_modify.qty\n\t\t\t\t});\n\n\t\t\t\t['serial_no', 'batch_no', 'barcode'].forEach(field => {\n\t\t\t\t\tif (data[field] && frappe.meta.has_field(row_to_modify.doctype, field)) {\n\n\t\t\t\t\t\tlet value = (row_to_modify[field] && field === \"serial_no\")\n\t\t\t\t\t\t\t? row_to_modify[field] + '\\n' + data[field] : data[field];\n\n\t\t\t\t\t\tfrappe.model.set_value(row_to_modify.doctype,\n\t\t\t\t\t\t\trow_to_modify.name, field, value);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tscan_barcode_field.set_value('');\n\t\t\t\trefresh_field(\"items\");\n\t\t\t});\n\t\t}\n\t},\n\tbarcode_validation: function(frm)\n\t{\n frm.fields_dict.items.grid.toggle_enable(\"qty\",!frm.doc.barcode_validation);\n frm.fields_dict.items.grid.toggle_display(\"checking_qty\",frm.doc.barcode_validation);\n frm.fields_dict.items.grid.set_column_disp(\"checking_qty\",frm.doc.barcode_validation);\n\t},\n\tbefore_submit: function(frm,cdt,cdn){\n\t\tconst item = locals[cdt][cdn];\n\t\tif(frm.doc.barcode_validation)\n\t\t{\n\t\t frm.doc.items.forEach(function(d)\n {\n \t\t if(d.qty !== d.checking_qty) \n \t\t {\n \t\t frappe.validated = false;\n frappe.msgprint({\n title: __('Warning'),\n indicator: 'red',\n message: __('Checking Qty and Required Qty of Items row {0} does not matched.',[d.idx])\n });\n \t\t }\n });\n\t\t}\n\t},\n\tbefore_save(frm)\n\t{\n\t\tif(!frm.doc.barcode_validation)\n\t\t{\n \t\tfrm.doc.items.forEach(function(d)\n {\n frappe.model.set_value(d.doctype,d.name,'checking_qty',0);\n }\n );\n\t\t}\n\t}\n\n});" 23 | }, 24 | { 25 | "docstatus": 0, 26 | "doctype": "Custom Script", 27 | "dt": "Purchase Receipt", 28 | "modified": "2022-02-16 13:17:47.738530", 29 | "name": "Purchase Receipt-Client", 30 | "parent": null, 31 | "parentfield": null, 32 | "parenttype": null, 33 | "script": "frappe.ui.form.on('Purchase Receipt', {\n\trefresh(frm) {\n\t\tif(frm.doc.docstatus===1) {\n\t\t\tfrm.add_custom_button(__(\"Barcode Printing\"), function() {\n frappe.call({\n method:'barcode_shrdc.barcode_shrdc.doctype.barcode_printing.barcode_printing.create_barcode_printing',\n args:{ throw_if_missing: true, \n se_id: null,\n pr_id: frm.doc.name}\n \n })\n\t\t\t\t.then(r => {\n\t\t\t\t\tif (r.message) {\n\t\t\t\t\t\tlet new_bp_doc = r.message;\t// new barcode printing request\n\t\t\t\t\t\tfrappe.set_route(\"Form\", new_bp_doc.doctype, new_bp_doc.name);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}, __(\"Create\"));\n\t\t\tfrm.page.set_inner_btn_group_as_primary(__('Create'));\n\n\t\t}\n\t}\n})" 34 | }, 35 | { 36 | "docstatus": 0, 37 | "doctype": "Custom Script", 38 | "dt": "Work Order", 39 | "modified": "2022-02-07 16:13:45.255786", 40 | "name": "Work Order-Client", 41 | "parent": null, 42 | "parentfield": null, 43 | "parenttype": null, 44 | "script": "frappe.ui.form.on('Work Order', {\n\tsetup(frm) {\n\t\t// your code here\n\t\tfrm.trigger(\"production_item\")\n\t}\n})" 45 | } 46 | ] -------------------------------------------------------------------------------- /barcode_shrdc/fixtures/property_setter.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "default_value": null, 4 | "doc_type": "Frepple Item", 5 | "docstatus": 0, 6 | "doctype": "Property Setter", 7 | "doctype_or_field": "DocField", 8 | "field_name": "description", 9 | "modified": "2022-02-10 18:18:59.643820", 10 | "name": "Frepple Item-description-unique", 11 | "parent": null, 12 | "parentfield": null, 13 | "parenttype": null, 14 | "property": "unique", 15 | "property_type": "Check", 16 | "value": "0" 17 | }, 18 | { 19 | "default_value": null, 20 | "doc_type": "Stock Entry", 21 | "docstatus": 0, 22 | "doctype": "Property Setter", 23 | "doctype_or_field": "DocField", 24 | "field_name": "outgoing_stock_entry", 25 | "modified": "2022-02-11 14:22:45.124215", 26 | "name": "Stock Entry-outgoing_stock_entry-depends_on", 27 | "parent": null, 28 | "parentfield": null, 29 | "parenttype": null, 30 | "property": "depends_on", 31 | "property_type": "Data", 32 | "value": "eval:doc.purpose == 'Receive at Warehouse' && doc.scan_stock_entry_barcode==0" 33 | }, 34 | { 35 | "default_value": null, 36 | "doc_type": "Stock Entry", 37 | "docstatus": 0, 38 | "doctype": "Property Setter", 39 | "doctype_or_field": "DocField", 40 | "field_name": "outgoing_stock_entry", 41 | "modified": "2022-02-11 14:49:26.654850", 42 | "name": "Stock Entry-outgoing_stock_entry-fetch_from", 43 | "parent": null, 44 | "parentfield": null, 45 | "parenttype": null, 46 | "property": "fetch_from", 47 | "property_type": "Small Text", 48 | "value": "stock_entry_outward_git" 49 | }, 50 | { 51 | "default_value": null, 52 | "doc_type": "Sales Order", 53 | "docstatus": 0, 54 | "doctype": "Property Setter", 55 | "doctype_or_field": "DocField", 56 | "field_name": "due_date", 57 | "modified": "2021-12-22 11:46:56.277600", 58 | "name": "Sales Order-due_date-print_hide", 59 | "parent": null, 60 | "parentfield": null, 61 | "parenttype": null, 62 | "property": "print_hide", 63 | "property_type": "Check", 64 | "value": "0" 65 | }, 66 | { 67 | "default_value": null, 68 | "doc_type": "Sales Order", 69 | "docstatus": 0, 70 | "doctype": "Property Setter", 71 | "doctype_or_field": "DocField", 72 | "field_name": "payment_schedule", 73 | "modified": "2021-12-22 11:46:56.488497", 74 | "name": "Sales Order-payment_schedule-print_hide", 75 | "parent": null, 76 | "parentfield": null, 77 | "parenttype": null, 78 | "property": "print_hide", 79 | "property_type": "Check", 80 | "value": "1" 81 | }, 82 | { 83 | "default_value": null, 84 | "doc_type": "Sales Invoice", 85 | "docstatus": 0, 86 | "doctype": "Property Setter", 87 | "doctype_or_field": "DocField", 88 | "field_name": "due_date", 89 | "modified": "2021-12-22 11:46:56.692258", 90 | "name": "Sales Invoice-due_date-print_hide", 91 | "parent": null, 92 | "parentfield": null, 93 | "parenttype": null, 94 | "property": "print_hide", 95 | "property_type": "Check", 96 | "value": "0" 97 | }, 98 | { 99 | "default_value": null, 100 | "doc_type": "Sales Invoice", 101 | "docstatus": 0, 102 | "doctype": "Property Setter", 103 | "doctype_or_field": "DocField", 104 | "field_name": "payment_schedule", 105 | "modified": "2021-12-22 11:46:56.940554", 106 | "name": "Sales Invoice-payment_schedule-print_hide", 107 | "parent": null, 108 | "parentfield": null, 109 | "parenttype": null, 110 | "property": "print_hide", 111 | "property_type": "Check", 112 | "value": "1" 113 | }, 114 | { 115 | "default_value": null, 116 | "doc_type": "Purchase Order", 117 | "docstatus": 0, 118 | "doctype": "Property Setter", 119 | "doctype_or_field": "DocField", 120 | "field_name": "due_date", 121 | "modified": "2021-12-22 11:46:57.189739", 122 | "name": "Purchase Order-due_date-print_hide", 123 | "parent": null, 124 | "parentfield": null, 125 | "parenttype": null, 126 | "property": "print_hide", 127 | "property_type": "Check", 128 | "value": "0" 129 | }, 130 | { 131 | "default_value": null, 132 | "doc_type": "Purchase Order", 133 | "docstatus": 0, 134 | "doctype": "Property Setter", 135 | "doctype_or_field": "DocField", 136 | "field_name": "payment_schedule", 137 | "modified": "2021-12-22 11:46:57.384481", 138 | "name": "Purchase Order-payment_schedule-print_hide", 139 | "parent": null, 140 | "parentfield": null, 141 | "parenttype": null, 142 | "property": "print_hide", 143 | "property_type": "Check", 144 | "value": "1" 145 | }, 146 | { 147 | "default_value": null, 148 | "doc_type": "Purchase Invoice", 149 | "docstatus": 0, 150 | "doctype": "Property Setter", 151 | "doctype_or_field": "DocField", 152 | "field_name": "due_date", 153 | "modified": "2021-12-22 11:46:57.575127", 154 | "name": "Purchase Invoice-due_date-print_hide", 155 | "parent": null, 156 | "parentfield": null, 157 | "parenttype": null, 158 | "property": "print_hide", 159 | "property_type": "Check", 160 | "value": "0" 161 | }, 162 | { 163 | "default_value": null, 164 | "doc_type": "Purchase Invoice", 165 | "docstatus": 0, 166 | "doctype": "Property Setter", 167 | "doctype_or_field": "DocField", 168 | "field_name": "payment_schedule", 169 | "modified": "2021-12-22 11:46:57.793808", 170 | "name": "Purchase Invoice-payment_schedule-print_hide", 171 | "parent": null, 172 | "parentfield": null, 173 | "parenttype": null, 174 | "property": "print_hide", 175 | "property_type": "Check", 176 | "value": "1" 177 | }, 178 | { 179 | "default_value": null, 180 | "doc_type": "Employee", 181 | "docstatus": 0, 182 | "doctype": "Property Setter", 183 | "doctype_or_field": "DocField", 184 | "field_name": "naming_series", 185 | "modified": "2021-12-22 14:48:02.001104", 186 | "name": "Employee-naming_series-hidden", 187 | "parent": null, 188 | "parentfield": null, 189 | "parenttype": null, 190 | "property": "hidden", 191 | "property_type": "Check", 192 | "value": "0" 193 | }, 194 | { 195 | "default_value": null, 196 | "doc_type": "Employee", 197 | "docstatus": 0, 198 | "doctype": "Property Setter", 199 | "doctype_or_field": "DocField", 200 | "field_name": "naming_series", 201 | "modified": "2021-12-22 14:48:02.182718", 202 | "name": "Employee-naming_series-reqd", 203 | "parent": null, 204 | "parentfield": null, 205 | "parenttype": null, 206 | "property": "reqd", 207 | "property_type": "Check", 208 | "value": "1" 209 | }, 210 | { 211 | "default_value": null, 212 | "doc_type": "Employee", 213 | "docstatus": 0, 214 | "doctype": "Property Setter", 215 | "doctype_or_field": "DocField", 216 | "field_name": "employee_number", 217 | "modified": "2021-12-22 14:48:02.430872", 218 | "name": "Employee-employee_number-reqd", 219 | "parent": null, 220 | "parentfield": null, 221 | "parenttype": null, 222 | "property": "reqd", 223 | "property_type": "Check", 224 | "value": "0" 225 | }, 226 | { 227 | "default_value": null, 228 | "doc_type": "Employee", 229 | "docstatus": 0, 230 | "doctype": "Property Setter", 231 | "doctype_or_field": "DocField", 232 | "field_name": "employee_number", 233 | "modified": "2021-12-22 14:48:02.607554", 234 | "name": "Employee-employee_number-hidden", 235 | "parent": null, 236 | "parentfield": null, 237 | "parenttype": null, 238 | "property": "hidden", 239 | "property_type": "Check", 240 | "value": "1" 241 | }, 242 | { 243 | "default_value": null, 244 | "doc_type": "Salary Slip", 245 | "docstatus": 0, 246 | "doctype": "Property Setter", 247 | "doctype_or_field": "DocField", 248 | "field_name": "rounded_total", 249 | "modified": "2021-12-22 14:48:02.794154", 250 | "name": "Salary Slip-rounded_total-hidden", 251 | "parent": null, 252 | "parentfield": null, 253 | "parenttype": null, 254 | "property": "hidden", 255 | "property_type": "Check", 256 | "value": "0" 257 | }, 258 | { 259 | "default_value": null, 260 | "doc_type": "Salary Slip", 261 | "docstatus": 0, 262 | "doctype": "Property Setter", 263 | "doctype_or_field": "DocField", 264 | "field_name": "rounded_total", 265 | "modified": "2021-12-22 14:48:02.933687", 266 | "name": "Salary Slip-rounded_total-print_hide", 267 | "parent": null, 268 | "parentfield": null, 269 | "parenttype": null, 270 | "property": "print_hide", 271 | "property_type": "Check", 272 | "value": "0" 273 | }, 274 | { 275 | "default_value": null, 276 | "doc_type": "Supplier", 277 | "docstatus": 0, 278 | "doctype": "Property Setter", 279 | "doctype_or_field": "DocField", 280 | "field_name": "naming_series", 281 | "modified": "2021-12-22 14:48:09.558543", 282 | "name": "Supplier-naming_series-reqd", 283 | "parent": null, 284 | "parentfield": null, 285 | "parenttype": null, 286 | "property": "reqd", 287 | "property_type": "Check", 288 | "value": "0" 289 | }, 290 | { 291 | "default_value": null, 292 | "doc_type": "Supplier", 293 | "docstatus": 0, 294 | "doctype": "Property Setter", 295 | "doctype_or_field": "DocField", 296 | "field_name": "naming_series", 297 | "modified": "2021-12-22 14:48:09.712070", 298 | "name": "Supplier-naming_series-hidden", 299 | "parent": null, 300 | "parentfield": null, 301 | "parenttype": null, 302 | "property": "hidden", 303 | "property_type": "Check", 304 | "value": "1" 305 | }, 306 | { 307 | "default_value": null, 308 | "doc_type": "Customer", 309 | "docstatus": 0, 310 | "doctype": "Property Setter", 311 | "doctype_or_field": "DocField", 312 | "field_name": "naming_series", 313 | "modified": "2021-12-22 14:48:10.331601", 314 | "name": "Customer-naming_series-reqd", 315 | "parent": null, 316 | "parentfield": null, 317 | "parenttype": null, 318 | "property": "reqd", 319 | "property_type": "Check", 320 | "value": "0" 321 | }, 322 | { 323 | "default_value": null, 324 | "doc_type": "Customer", 325 | "docstatus": 0, 326 | "doctype": "Property Setter", 327 | "doctype_or_field": "DocField", 328 | "field_name": "naming_series", 329 | "modified": "2021-12-22 14:48:10.499328", 330 | "name": "Customer-naming_series-hidden", 331 | "parent": null, 332 | "parentfield": null, 333 | "parenttype": null, 334 | "property": "hidden", 335 | "property_type": "Check", 336 | "value": "1" 337 | }, 338 | { 339 | "default_value": null, 340 | "doc_type": "Sales Order", 341 | "docstatus": 0, 342 | "doctype": "Property Setter", 343 | "doctype_or_field": "DocField", 344 | "field_name": "tax_id", 345 | "modified": "2021-12-22 14:48:10.658271", 346 | "name": "Sales Order-tax_id-hidden", 347 | "parent": null, 348 | "parentfield": null, 349 | "parenttype": null, 350 | "property": "hidden", 351 | "property_type": "Check", 352 | "value": "0" 353 | }, 354 | { 355 | "default_value": null, 356 | "doc_type": "Sales Order", 357 | "docstatus": 0, 358 | "doctype": "Property Setter", 359 | "doctype_or_field": "DocField", 360 | "field_name": "tax_id", 361 | "modified": "2021-12-22 14:48:10.876982", 362 | "name": "Sales Order-tax_id-print_hide", 363 | "parent": null, 364 | "parentfield": null, 365 | "parenttype": null, 366 | "property": "print_hide", 367 | "property_type": "Check", 368 | "value": "0" 369 | }, 370 | { 371 | "default_value": null, 372 | "doc_type": "Sales Invoice", 373 | "docstatus": 0, 374 | "doctype": "Property Setter", 375 | "doctype_or_field": "DocField", 376 | "field_name": "tax_id", 377 | "modified": "2021-12-22 14:48:11.094999", 378 | "name": "Sales Invoice-tax_id-hidden", 379 | "parent": null, 380 | "parentfield": null, 381 | "parenttype": null, 382 | "property": "hidden", 383 | "property_type": "Check", 384 | "value": "0" 385 | }, 386 | { 387 | "default_value": null, 388 | "doc_type": "Sales Invoice", 389 | "docstatus": 0, 390 | "doctype": "Property Setter", 391 | "doctype_or_field": "DocField", 392 | "field_name": "tax_id", 393 | "modified": "2021-12-22 14:48:11.373511", 394 | "name": "Sales Invoice-tax_id-print_hide", 395 | "parent": null, 396 | "parentfield": null, 397 | "parenttype": null, 398 | "property": "print_hide", 399 | "property_type": "Check", 400 | "value": "0" 401 | }, 402 | { 403 | "default_value": null, 404 | "doc_type": "Delivery Note", 405 | "docstatus": 0, 406 | "doctype": "Property Setter", 407 | "doctype_or_field": "DocField", 408 | "field_name": "tax_id", 409 | "modified": "2021-12-22 14:48:11.638385", 410 | "name": "Delivery Note-tax_id-hidden", 411 | "parent": null, 412 | "parentfield": null, 413 | "parenttype": null, 414 | "property": "hidden", 415 | "property_type": "Check", 416 | "value": "0" 417 | }, 418 | { 419 | "default_value": null, 420 | "doc_type": "Delivery Note", 421 | "docstatus": 0, 422 | "doctype": "Property Setter", 423 | "doctype_or_field": "DocField", 424 | "field_name": "tax_id", 425 | "modified": "2021-12-22 14:48:11.853934", 426 | "name": "Delivery Note-tax_id-print_hide", 427 | "parent": null, 428 | "parentfield": null, 429 | "parenttype": null, 430 | "property": "print_hide", 431 | "property_type": "Check", 432 | "value": "0" 433 | }, 434 | { 435 | "default_value": null, 436 | "doc_type": "Item", 437 | "docstatus": 0, 438 | "doctype": "Property Setter", 439 | "doctype_or_field": "DocField", 440 | "field_name": "manufacturing", 441 | "modified": "2021-12-22 14:48:30.697001", 442 | "name": "Item-manufacturing-collapsible_depends_on", 443 | "parent": null, 444 | "parentfield": null, 445 | "parenttype": null, 446 | "property": "collapsible_depends_on", 447 | "property_type": "Code", 448 | "value": "is_stock_item" 449 | }, 450 | { 451 | "default_value": null, 452 | "doc_type": "Stock Entry", 453 | "docstatus": 0, 454 | "doctype": "Property Setter", 455 | "doctype_or_field": "DocField", 456 | "field_name": "fg_completed_qty", 457 | "modified": "2021-12-22 15:42:41.423771", 458 | "name": "Stock Entry-fg_completed_qty-bold", 459 | "parent": null, 460 | "parentfield": null, 461 | "parenttype": null, 462 | "property": "bold", 463 | "property_type": "Check", 464 | "value": "1" 465 | }, 466 | { 467 | "default_value": null, 468 | "doc_type": "Stock Entry Detail", 469 | "docstatus": 0, 470 | "doctype": "Property Setter", 471 | "doctype_or_field": "DocField", 472 | "field_name": "qty", 473 | "modified": "2021-12-22 15:56:58.745056", 474 | "name": "Stock Entry Detail-qty-columns", 475 | "parent": null, 476 | "parentfield": null, 477 | "parenttype": null, 478 | "property": "columns", 479 | "property_type": "Int", 480 | "value": "1" 481 | }, 482 | { 483 | "default_value": null, 484 | "doc_type": "Delivery Note Item", 485 | "docstatus": 0, 486 | "doctype": "Property Setter", 487 | "doctype_or_field": "DocField", 488 | "field_name": "qty", 489 | "modified": "2021-12-23 01:08:23.002511", 490 | "name": "Delivery Note Item-qty-columns", 491 | "parent": null, 492 | "parentfield": null, 493 | "parenttype": null, 494 | "property": "columns", 495 | "property_type": "Int", 496 | "value": "1" 497 | }, 498 | { 499 | "default_value": null, 500 | "doc_type": "Delivery Note Item", 501 | "docstatus": 0, 502 | "doctype": "Property Setter", 503 | "doctype_or_field": "DocField", 504 | "field_name": "qty", 505 | "modified": "2021-12-23 09:30:49.404263", 506 | "name": "Delivery Note Item-qty-default", 507 | "parent": null, 508 | "parentfield": null, 509 | "parenttype": null, 510 | "property": "default", 511 | "property_type": "Text", 512 | "value": "0" 513 | }, 514 | { 515 | "default_value": null, 516 | "doc_type": "Supplier", 517 | "docstatus": 0, 518 | "doctype": "Property Setter", 519 | "doctype_or_field": "DocField", 520 | "field_name": "naming_series", 521 | "modified": "2021-12-27 01:10:44.167587", 522 | "name": "Supplier-naming_series-options", 523 | "parent": null, 524 | "parentfield": null, 525 | "parenttype": null, 526 | "property": "options", 527 | "property_type": "Text", 528 | "value": "SUP-.YYYY.-" 529 | }, 530 | { 531 | "default_value": null, 532 | "doc_type": "Item Barcode", 533 | "docstatus": 0, 534 | "doctype": "Property Setter", 535 | "doctype_or_field": "DocField", 536 | "field_name": "barcode_type", 537 | "modified": "2021-12-30 11:57:57.015715", 538 | "name": "Item Barcode-barcode_type-options", 539 | "parent": null, 540 | "parentfield": null, 541 | "parenttype": null, 542 | "property": "options", 543 | "property_type": "Text", 544 | "value": "EAN\nUPC-A" 545 | }, 546 | { 547 | "default_value": null, 548 | "doc_type": "Quotation", 549 | "docstatus": 0, 550 | "doctype": "Property Setter", 551 | "doctype_or_field": "DocField", 552 | "field_name": "base_rounded_total", 553 | "modified": "2022-01-03 11:20:39.788073", 554 | "name": "Quotation-base_rounded_total-hidden", 555 | "parent": null, 556 | "parentfield": null, 557 | "parenttype": null, 558 | "property": "hidden", 559 | "property_type": "Check", 560 | "value": "0" 561 | }, 562 | { 563 | "default_value": null, 564 | "doc_type": "Quotation", 565 | "docstatus": 0, 566 | "doctype": "Property Setter", 567 | "doctype_or_field": "DocField", 568 | "field_name": "base_rounded_total", 569 | "modified": "2022-01-03 11:20:39.979247", 570 | "name": "Quotation-base_rounded_total-print_hide", 571 | "parent": null, 572 | "parentfield": null, 573 | "parenttype": null, 574 | "property": "print_hide", 575 | "property_type": "Check", 576 | "value": "1" 577 | }, 578 | { 579 | "default_value": null, 580 | "doc_type": "Quotation", 581 | "docstatus": 0, 582 | "doctype": "Property Setter", 583 | "doctype_or_field": "DocField", 584 | "field_name": "rounded_total", 585 | "modified": "2022-01-03 11:20:40.099973", 586 | "name": "Quotation-rounded_total-hidden", 587 | "parent": null, 588 | "parentfield": null, 589 | "parenttype": null, 590 | "property": "hidden", 591 | "property_type": "Check", 592 | "value": "0" 593 | }, 594 | { 595 | "default_value": null, 596 | "doc_type": "Quotation", 597 | "docstatus": 0, 598 | "doctype": "Property Setter", 599 | "doctype_or_field": "DocField", 600 | "field_name": "rounded_total", 601 | "modified": "2022-01-03 11:20:40.224918", 602 | "name": "Quotation-rounded_total-print_hide", 603 | "parent": null, 604 | "parentfield": null, 605 | "parenttype": null, 606 | "property": "print_hide", 607 | "property_type": "Check", 608 | "value": "0" 609 | }, 610 | { 611 | "default_value": null, 612 | "doc_type": "Sales Order", 613 | "docstatus": 0, 614 | "doctype": "Property Setter", 615 | "doctype_or_field": "DocField", 616 | "field_name": "base_rounded_total", 617 | "modified": "2022-01-03 11:20:40.345892", 618 | "name": "Sales Order-base_rounded_total-hidden", 619 | "parent": null, 620 | "parentfield": null, 621 | "parenttype": null, 622 | "property": "hidden", 623 | "property_type": "Check", 624 | "value": "0" 625 | }, 626 | { 627 | "default_value": null, 628 | "doc_type": "Sales Order", 629 | "docstatus": 0, 630 | "doctype": "Property Setter", 631 | "doctype_or_field": "DocField", 632 | "field_name": "base_rounded_total", 633 | "modified": "2022-01-03 11:20:40.494304", 634 | "name": "Sales Order-base_rounded_total-print_hide", 635 | "parent": null, 636 | "parentfield": null, 637 | "parenttype": null, 638 | "property": "print_hide", 639 | "property_type": "Check", 640 | "value": "1" 641 | }, 642 | { 643 | "default_value": null, 644 | "doc_type": "Sales Order", 645 | "docstatus": 0, 646 | "doctype": "Property Setter", 647 | "doctype_or_field": "DocField", 648 | "field_name": "rounded_total", 649 | "modified": "2022-01-03 11:20:40.637484", 650 | "name": "Sales Order-rounded_total-hidden", 651 | "parent": null, 652 | "parentfield": null, 653 | "parenttype": null, 654 | "property": "hidden", 655 | "property_type": "Check", 656 | "value": "0" 657 | }, 658 | { 659 | "default_value": null, 660 | "doc_type": "Sales Order", 661 | "docstatus": 0, 662 | "doctype": "Property Setter", 663 | "doctype_or_field": "DocField", 664 | "field_name": "rounded_total", 665 | "modified": "2022-01-03 11:20:40.776272", 666 | "name": "Sales Order-rounded_total-print_hide", 667 | "parent": null, 668 | "parentfield": null, 669 | "parenttype": null, 670 | "property": "print_hide", 671 | "property_type": "Check", 672 | "value": "0" 673 | }, 674 | { 675 | "default_value": null, 676 | "doc_type": "Sales Invoice", 677 | "docstatus": 0, 678 | "doctype": "Property Setter", 679 | "doctype_or_field": "DocField", 680 | "field_name": "base_rounded_total", 681 | "modified": "2022-01-03 11:20:40.912717", 682 | "name": "Sales Invoice-base_rounded_total-hidden", 683 | "parent": null, 684 | "parentfield": null, 685 | "parenttype": null, 686 | "property": "hidden", 687 | "property_type": "Check", 688 | "value": "0" 689 | }, 690 | { 691 | "default_value": null, 692 | "doc_type": "Sales Invoice", 693 | "docstatus": 0, 694 | "doctype": "Property Setter", 695 | "doctype_or_field": "DocField", 696 | "field_name": "base_rounded_total", 697 | "modified": "2022-01-03 11:20:41.047462", 698 | "name": "Sales Invoice-base_rounded_total-print_hide", 699 | "parent": null, 700 | "parentfield": null, 701 | "parenttype": null, 702 | "property": "print_hide", 703 | "property_type": "Check", 704 | "value": "1" 705 | }, 706 | { 707 | "default_value": null, 708 | "doc_type": "Sales Invoice", 709 | "docstatus": 0, 710 | "doctype": "Property Setter", 711 | "doctype_or_field": "DocField", 712 | "field_name": "rounded_total", 713 | "modified": "2022-01-03 11:20:41.191926", 714 | "name": "Sales Invoice-rounded_total-hidden", 715 | "parent": null, 716 | "parentfield": null, 717 | "parenttype": null, 718 | "property": "hidden", 719 | "property_type": "Check", 720 | "value": "0" 721 | }, 722 | { 723 | "default_value": null, 724 | "doc_type": "Sales Invoice", 725 | "docstatus": 0, 726 | "doctype": "Property Setter", 727 | "doctype_or_field": "DocField", 728 | "field_name": "rounded_total", 729 | "modified": "2022-01-03 11:20:41.345916", 730 | "name": "Sales Invoice-rounded_total-print_hide", 731 | "parent": null, 732 | "parentfield": null, 733 | "parenttype": null, 734 | "property": "print_hide", 735 | "property_type": "Check", 736 | "value": "0" 737 | }, 738 | { 739 | "default_value": null, 740 | "doc_type": "Delivery Note", 741 | "docstatus": 0, 742 | "doctype": "Property Setter", 743 | "doctype_or_field": "DocField", 744 | "field_name": "base_rounded_total", 745 | "modified": "2022-01-03 11:20:41.492851", 746 | "name": "Delivery Note-base_rounded_total-hidden", 747 | "parent": null, 748 | "parentfield": null, 749 | "parenttype": null, 750 | "property": "hidden", 751 | "property_type": "Check", 752 | "value": "0" 753 | }, 754 | { 755 | "default_value": null, 756 | "doc_type": "Delivery Note", 757 | "docstatus": 0, 758 | "doctype": "Property Setter", 759 | "doctype_or_field": "DocField", 760 | "field_name": "base_rounded_total", 761 | "modified": "2022-01-03 11:20:41.609954", 762 | "name": "Delivery Note-base_rounded_total-print_hide", 763 | "parent": null, 764 | "parentfield": null, 765 | "parenttype": null, 766 | "property": "print_hide", 767 | "property_type": "Check", 768 | "value": "1" 769 | }, 770 | { 771 | "default_value": null, 772 | "doc_type": "Delivery Note", 773 | "docstatus": 0, 774 | "doctype": "Property Setter", 775 | "doctype_or_field": "DocField", 776 | "field_name": "rounded_total", 777 | "modified": "2022-01-03 11:20:41.724499", 778 | "name": "Delivery Note-rounded_total-hidden", 779 | "parent": null, 780 | "parentfield": null, 781 | "parenttype": null, 782 | "property": "hidden", 783 | "property_type": "Check", 784 | "value": "0" 785 | }, 786 | { 787 | "default_value": null, 788 | "doc_type": "Delivery Note", 789 | "docstatus": 0, 790 | "doctype": "Property Setter", 791 | "doctype_or_field": "DocField", 792 | "field_name": "rounded_total", 793 | "modified": "2022-01-03 11:20:41.837964", 794 | "name": "Delivery Note-rounded_total-print_hide", 795 | "parent": null, 796 | "parentfield": null, 797 | "parenttype": null, 798 | "property": "print_hide", 799 | "property_type": "Check", 800 | "value": "0" 801 | }, 802 | { 803 | "default_value": null, 804 | "doc_type": "Supplier Quotation", 805 | "docstatus": 0, 806 | "doctype": "Property Setter", 807 | "doctype_or_field": "DocField", 808 | "field_name": "base_rounded_total", 809 | "modified": "2022-01-03 11:20:41.968151", 810 | "name": "Supplier Quotation-base_rounded_total-hidden", 811 | "parent": null, 812 | "parentfield": null, 813 | "parenttype": null, 814 | "property": "hidden", 815 | "property_type": "Check", 816 | "value": "0" 817 | }, 818 | { 819 | "default_value": null, 820 | "doc_type": "Supplier Quotation", 821 | "docstatus": 0, 822 | "doctype": "Property Setter", 823 | "doctype_or_field": "DocField", 824 | "field_name": "base_rounded_total", 825 | "modified": "2022-01-03 11:20:42.113305", 826 | "name": "Supplier Quotation-base_rounded_total-print_hide", 827 | "parent": null, 828 | "parentfield": null, 829 | "parenttype": null, 830 | "property": "print_hide", 831 | "property_type": "Check", 832 | "value": "1" 833 | }, 834 | { 835 | "default_value": null, 836 | "doc_type": "Supplier Quotation", 837 | "docstatus": 0, 838 | "doctype": "Property Setter", 839 | "doctype_or_field": "DocField", 840 | "field_name": "rounded_total", 841 | "modified": "2022-01-03 11:20:42.225257", 842 | "name": "Supplier Quotation-rounded_total-hidden", 843 | "parent": null, 844 | "parentfield": null, 845 | "parenttype": null, 846 | "property": "hidden", 847 | "property_type": "Check", 848 | "value": "0" 849 | }, 850 | { 851 | "default_value": null, 852 | "doc_type": "Supplier Quotation", 853 | "docstatus": 0, 854 | "doctype": "Property Setter", 855 | "doctype_or_field": "DocField", 856 | "field_name": "rounded_total", 857 | "modified": "2022-01-03 11:20:42.327165", 858 | "name": "Supplier Quotation-rounded_total-print_hide", 859 | "parent": null, 860 | "parentfield": null, 861 | "parenttype": null, 862 | "property": "print_hide", 863 | "property_type": "Check", 864 | "value": "0" 865 | }, 866 | { 867 | "default_value": null, 868 | "doc_type": "Purchase Order", 869 | "docstatus": 0, 870 | "doctype": "Property Setter", 871 | "doctype_or_field": "DocField", 872 | "field_name": "base_rounded_total", 873 | "modified": "2022-01-03 11:20:42.446378", 874 | "name": "Purchase Order-base_rounded_total-hidden", 875 | "parent": null, 876 | "parentfield": null, 877 | "parenttype": null, 878 | "property": "hidden", 879 | "property_type": "Check", 880 | "value": "0" 881 | }, 882 | { 883 | "default_value": null, 884 | "doc_type": "Purchase Order", 885 | "docstatus": 0, 886 | "doctype": "Property Setter", 887 | "doctype_or_field": "DocField", 888 | "field_name": "base_rounded_total", 889 | "modified": "2022-01-03 11:20:42.582594", 890 | "name": "Purchase Order-base_rounded_total-print_hide", 891 | "parent": null, 892 | "parentfield": null, 893 | "parenttype": null, 894 | "property": "print_hide", 895 | "property_type": "Check", 896 | "value": "1" 897 | }, 898 | { 899 | "default_value": null, 900 | "doc_type": "Purchase Order", 901 | "docstatus": 0, 902 | "doctype": "Property Setter", 903 | "doctype_or_field": "DocField", 904 | "field_name": "rounded_total", 905 | "modified": "2022-01-03 11:20:42.725940", 906 | "name": "Purchase Order-rounded_total-hidden", 907 | "parent": null, 908 | "parentfield": null, 909 | "parenttype": null, 910 | "property": "hidden", 911 | "property_type": "Check", 912 | "value": "0" 913 | }, 914 | { 915 | "default_value": null, 916 | "doc_type": "Purchase Order", 917 | "docstatus": 0, 918 | "doctype": "Property Setter", 919 | "doctype_or_field": "DocField", 920 | "field_name": "rounded_total", 921 | "modified": "2022-01-03 11:20:42.862922", 922 | "name": "Purchase Order-rounded_total-print_hide", 923 | "parent": null, 924 | "parentfield": null, 925 | "parenttype": null, 926 | "property": "print_hide", 927 | "property_type": "Check", 928 | "value": "0" 929 | }, 930 | { 931 | "default_value": null, 932 | "doc_type": "Purchase Invoice", 933 | "docstatus": 0, 934 | "doctype": "Property Setter", 935 | "doctype_or_field": "DocField", 936 | "field_name": "base_rounded_total", 937 | "modified": "2022-01-03 11:20:43.001563", 938 | "name": "Purchase Invoice-base_rounded_total-hidden", 939 | "parent": null, 940 | "parentfield": null, 941 | "parenttype": null, 942 | "property": "hidden", 943 | "property_type": "Check", 944 | "value": "0" 945 | }, 946 | { 947 | "default_value": null, 948 | "doc_type": "Purchase Invoice", 949 | "docstatus": 0, 950 | "doctype": "Property Setter", 951 | "doctype_or_field": "DocField", 952 | "field_name": "base_rounded_total", 953 | "modified": "2022-01-03 11:20:43.153435", 954 | "name": "Purchase Invoice-base_rounded_total-print_hide", 955 | "parent": null, 956 | "parentfield": null, 957 | "parenttype": null, 958 | "property": "print_hide", 959 | "property_type": "Check", 960 | "value": "1" 961 | }, 962 | { 963 | "default_value": null, 964 | "doc_type": "Purchase Invoice", 965 | "docstatus": 0, 966 | "doctype": "Property Setter", 967 | "doctype_or_field": "DocField", 968 | "field_name": "rounded_total", 969 | "modified": "2022-01-03 11:20:43.311603", 970 | "name": "Purchase Invoice-rounded_total-hidden", 971 | "parent": null, 972 | "parentfield": null, 973 | "parenttype": null, 974 | "property": "hidden", 975 | "property_type": "Check", 976 | "value": "0" 977 | }, 978 | { 979 | "default_value": null, 980 | "doc_type": "Purchase Invoice", 981 | "docstatus": 0, 982 | "doctype": "Property Setter", 983 | "doctype_or_field": "DocField", 984 | "field_name": "rounded_total", 985 | "modified": "2022-01-03 11:20:43.480861", 986 | "name": "Purchase Invoice-rounded_total-print_hide", 987 | "parent": null, 988 | "parentfield": null, 989 | "parenttype": null, 990 | "property": "print_hide", 991 | "property_type": "Check", 992 | "value": "0" 993 | }, 994 | { 995 | "default_value": null, 996 | "doc_type": "Quotation", 997 | "docstatus": 0, 998 | "doctype": "Property Setter", 999 | "doctype_or_field": "DocField", 1000 | "field_name": "in_words", 1001 | "modified": "2022-01-03 11:20:43.641511", 1002 | "name": "Quotation-in_words-hidden", 1003 | "parent": null, 1004 | "parentfield": null, 1005 | "parenttype": null, 1006 | "property": "hidden", 1007 | "property_type": "Check", 1008 | "value": "0" 1009 | }, 1010 | { 1011 | "default_value": null, 1012 | "doc_type": "Quotation", 1013 | "docstatus": 0, 1014 | "doctype": "Property Setter", 1015 | "doctype_or_field": "DocField", 1016 | "field_name": "in_words", 1017 | "modified": "2022-01-03 11:20:43.779748", 1018 | "name": "Quotation-in_words-print_hide", 1019 | "parent": null, 1020 | "parentfield": null, 1021 | "parenttype": null, 1022 | "property": "print_hide", 1023 | "property_type": "Check", 1024 | "value": "0" 1025 | }, 1026 | { 1027 | "default_value": null, 1028 | "doc_type": "Sales Order", 1029 | "docstatus": 0, 1030 | "doctype": "Property Setter", 1031 | "doctype_or_field": "DocField", 1032 | "field_name": "in_words", 1033 | "modified": "2022-01-03 11:20:43.913267", 1034 | "name": "Sales Order-in_words-hidden", 1035 | "parent": null, 1036 | "parentfield": null, 1037 | "parenttype": null, 1038 | "property": "hidden", 1039 | "property_type": "Check", 1040 | "value": "0" 1041 | }, 1042 | { 1043 | "default_value": null, 1044 | "doc_type": "Sales Order", 1045 | "docstatus": 0, 1046 | "doctype": "Property Setter", 1047 | "doctype_or_field": "DocField", 1048 | "field_name": "in_words", 1049 | "modified": "2022-01-03 11:20:44.062242", 1050 | "name": "Sales Order-in_words-print_hide", 1051 | "parent": null, 1052 | "parentfield": null, 1053 | "parenttype": null, 1054 | "property": "print_hide", 1055 | "property_type": "Check", 1056 | "value": "0" 1057 | }, 1058 | { 1059 | "default_value": null, 1060 | "doc_type": "Sales Invoice", 1061 | "docstatus": 0, 1062 | "doctype": "Property Setter", 1063 | "doctype_or_field": "DocField", 1064 | "field_name": "in_words", 1065 | "modified": "2022-01-03 11:20:44.214741", 1066 | "name": "Sales Invoice-in_words-hidden", 1067 | "parent": null, 1068 | "parentfield": null, 1069 | "parenttype": null, 1070 | "property": "hidden", 1071 | "property_type": "Check", 1072 | "value": "0" 1073 | }, 1074 | { 1075 | "default_value": null, 1076 | "doc_type": "Sales Invoice", 1077 | "docstatus": 0, 1078 | "doctype": "Property Setter", 1079 | "doctype_or_field": "DocField", 1080 | "field_name": "in_words", 1081 | "modified": "2022-01-03 11:20:44.399595", 1082 | "name": "Sales Invoice-in_words-print_hide", 1083 | "parent": null, 1084 | "parentfield": null, 1085 | "parenttype": null, 1086 | "property": "print_hide", 1087 | "property_type": "Check", 1088 | "value": "0" 1089 | }, 1090 | { 1091 | "default_value": null, 1092 | "doc_type": "Delivery Note", 1093 | "docstatus": 0, 1094 | "doctype": "Property Setter", 1095 | "doctype_or_field": "DocField", 1096 | "field_name": "in_words", 1097 | "modified": "2022-01-03 11:20:44.584465", 1098 | "name": "Delivery Note-in_words-hidden", 1099 | "parent": null, 1100 | "parentfield": null, 1101 | "parenttype": null, 1102 | "property": "hidden", 1103 | "property_type": "Check", 1104 | "value": "0" 1105 | }, 1106 | { 1107 | "default_value": null, 1108 | "doc_type": "Delivery Note", 1109 | "docstatus": 0, 1110 | "doctype": "Property Setter", 1111 | "doctype_or_field": "DocField", 1112 | "field_name": "in_words", 1113 | "modified": "2022-01-03 11:20:44.737767", 1114 | "name": "Delivery Note-in_words-print_hide", 1115 | "parent": null, 1116 | "parentfield": null, 1117 | "parenttype": null, 1118 | "property": "print_hide", 1119 | "property_type": "Check", 1120 | "value": "0" 1121 | }, 1122 | { 1123 | "default_value": null, 1124 | "doc_type": "Supplier Quotation", 1125 | "docstatus": 0, 1126 | "doctype": "Property Setter", 1127 | "doctype_or_field": "DocField", 1128 | "field_name": "in_words", 1129 | "modified": "2022-01-03 11:20:44.891264", 1130 | "name": "Supplier Quotation-in_words-hidden", 1131 | "parent": null, 1132 | "parentfield": null, 1133 | "parenttype": null, 1134 | "property": "hidden", 1135 | "property_type": "Check", 1136 | "value": "0" 1137 | }, 1138 | { 1139 | "default_value": null, 1140 | "doc_type": "Supplier Quotation", 1141 | "docstatus": 0, 1142 | "doctype": "Property Setter", 1143 | "doctype_or_field": "DocField", 1144 | "field_name": "in_words", 1145 | "modified": "2022-01-03 11:20:45.003147", 1146 | "name": "Supplier Quotation-in_words-print_hide", 1147 | "parent": null, 1148 | "parentfield": null, 1149 | "parenttype": null, 1150 | "property": "print_hide", 1151 | "property_type": "Check", 1152 | "value": "0" 1153 | }, 1154 | { 1155 | "default_value": null, 1156 | "doc_type": "Purchase Order", 1157 | "docstatus": 0, 1158 | "doctype": "Property Setter", 1159 | "doctype_or_field": "DocField", 1160 | "field_name": "in_words", 1161 | "modified": "2022-01-03 11:20:45.118249", 1162 | "name": "Purchase Order-in_words-hidden", 1163 | "parent": null, 1164 | "parentfield": null, 1165 | "parenttype": null, 1166 | "property": "hidden", 1167 | "property_type": "Check", 1168 | "value": "0" 1169 | }, 1170 | { 1171 | "default_value": null, 1172 | "doc_type": "Purchase Order", 1173 | "docstatus": 0, 1174 | "doctype": "Property Setter", 1175 | "doctype_or_field": "DocField", 1176 | "field_name": "in_words", 1177 | "modified": "2022-01-03 11:20:45.249898", 1178 | "name": "Purchase Order-in_words-print_hide", 1179 | "parent": null, 1180 | "parentfield": null, 1181 | "parenttype": null, 1182 | "property": "print_hide", 1183 | "property_type": "Check", 1184 | "value": "0" 1185 | }, 1186 | { 1187 | "default_value": null, 1188 | "doc_type": "Purchase Invoice", 1189 | "docstatus": 0, 1190 | "doctype": "Property Setter", 1191 | "doctype_or_field": "DocField", 1192 | "field_name": "in_words", 1193 | "modified": "2022-01-03 11:20:45.384445", 1194 | "name": "Purchase Invoice-in_words-hidden", 1195 | "parent": null, 1196 | "parentfield": null, 1197 | "parenttype": null, 1198 | "property": "hidden", 1199 | "property_type": "Check", 1200 | "value": "0" 1201 | }, 1202 | { 1203 | "default_value": null, 1204 | "doc_type": "Purchase Invoice", 1205 | "docstatus": 0, 1206 | "doctype": "Property Setter", 1207 | "doctype_or_field": "DocField", 1208 | "field_name": "in_words", 1209 | "modified": "2022-01-03 11:20:45.549208", 1210 | "name": "Purchase Invoice-in_words-print_hide", 1211 | "parent": null, 1212 | "parentfield": null, 1213 | "parenttype": null, 1214 | "property": "print_hide", 1215 | "property_type": "Check", 1216 | "value": "0" 1217 | }, 1218 | { 1219 | "default_value": null, 1220 | "doc_type": "Purchase Receipt", 1221 | "docstatus": 0, 1222 | "doctype": "Property Setter", 1223 | "doctype_or_field": "DocField", 1224 | "field_name": "in_words", 1225 | "modified": "2022-01-03 11:20:45.702163", 1226 | "name": "Purchase Receipt-in_words-hidden", 1227 | "parent": null, 1228 | "parentfield": null, 1229 | "parenttype": null, 1230 | "property": "hidden", 1231 | "property_type": "Check", 1232 | "value": "0" 1233 | }, 1234 | { 1235 | "default_value": null, 1236 | "doc_type": "Purchase Receipt", 1237 | "docstatus": 0, 1238 | "doctype": "Property Setter", 1239 | "doctype_or_field": "DocField", 1240 | "field_name": "in_words", 1241 | "modified": "2022-01-03 11:20:45.825837", 1242 | "name": "Purchase Receipt-in_words-print_hide", 1243 | "parent": null, 1244 | "parentfield": null, 1245 | "parenttype": null, 1246 | "property": "print_hide", 1247 | "property_type": "Check", 1248 | "value": "0" 1249 | }, 1250 | { 1251 | "default_value": null, 1252 | "doc_type": "Stock Entry Detail", 1253 | "docstatus": 0, 1254 | "doctype": "Property Setter", 1255 | "doctype_or_field": "DocField", 1256 | "field_name": "s_warehouse", 1257 | "modified": "2022-01-07 11:34:13.360678", 1258 | "name": "Stock Entry Detail-s_warehouse-columns", 1259 | "parent": null, 1260 | "parentfield": null, 1261 | "parenttype": null, 1262 | "property": "columns", 1263 | "property_type": "Int", 1264 | "value": "2" 1265 | }, 1266 | { 1267 | "default_value": null, 1268 | "doc_type": "Barcode Printing", 1269 | "docstatus": 0, 1270 | "doctype": "Property Setter", 1271 | "doctype_or_field": "DocField", 1272 | "field_name": "naming_series", 1273 | "modified": "2022-01-11 16:33:42.311224", 1274 | "name": "Barcode Printing-naming_series-options", 1275 | "parent": null, 1276 | "parentfield": null, 1277 | "parenttype": null, 1278 | "property": "options", 1279 | "property_type": "Text", 1280 | "value": "BP-.YYYY.-.MM.-.DD.-" 1281 | }, 1282 | { 1283 | "default_value": null, 1284 | "doc_type": "Item", 1285 | "docstatus": 0, 1286 | "doctype": "Property Setter", 1287 | "doctype_or_field": "DocField", 1288 | "field_name": "naming_series", 1289 | "modified": "2022-02-09 16:33:06.032091", 1290 | "name": "Item-naming_series-reqd", 1291 | "parent": null, 1292 | "parentfield": null, 1293 | "parenttype": null, 1294 | "property": "reqd", 1295 | "property_type": "Check", 1296 | "value": "0" 1297 | }, 1298 | { 1299 | "default_value": null, 1300 | "doc_type": "Item", 1301 | "docstatus": 0, 1302 | "doctype": "Property Setter", 1303 | "doctype_or_field": "DocField", 1304 | "field_name": "naming_series", 1305 | "modified": "2022-02-09 16:33:06.230986", 1306 | "name": "Item-naming_series-hidden", 1307 | "parent": null, 1308 | "parentfield": null, 1309 | "parenttype": null, 1310 | "property": "hidden", 1311 | "property_type": "Check", 1312 | "value": "1" 1313 | }, 1314 | { 1315 | "default_value": null, 1316 | "doc_type": "Item", 1317 | "docstatus": 0, 1318 | "doctype": "Property Setter", 1319 | "doctype_or_field": "DocField", 1320 | "field_name": "item_code", 1321 | "modified": "2022-02-09 16:33:06.377814", 1322 | "name": "Item-item_code-hidden", 1323 | "parent": null, 1324 | "parentfield": null, 1325 | "parenttype": null, 1326 | "property": "hidden", 1327 | "property_type": "Check", 1328 | "value": "0" 1329 | }, 1330 | { 1331 | "default_value": null, 1332 | "doc_type": "Item", 1333 | "docstatus": 0, 1334 | "doctype": "Property Setter", 1335 | "doctype_or_field": "DocField", 1336 | "field_name": "item_code", 1337 | "modified": "2022-02-09 16:33:06.535667", 1338 | "name": "Item-item_code-reqd", 1339 | "parent": null, 1340 | "parentfield": null, 1341 | "parenttype": null, 1342 | "property": "reqd", 1343 | "property_type": "Check", 1344 | "value": "1" 1345 | }, 1346 | { 1347 | "default_value": null, 1348 | "doc_type": "Stock Entry Detail", 1349 | "docstatus": 0, 1350 | "doctype": "Property Setter", 1351 | "doctype_or_field": "DocField", 1352 | "field_name": "barcode", 1353 | "modified": "2022-02-09 16:33:06.691016", 1354 | "name": "Stock Entry Detail-barcode-hidden", 1355 | "parent": null, 1356 | "parentfield": null, 1357 | "parenttype": null, 1358 | "property": "hidden", 1359 | "property_type": "Check", 1360 | "value": "0" 1361 | }, 1362 | { 1363 | "default_value": null, 1364 | "doc_type": "Stock Reconciliation Item", 1365 | "docstatus": 0, 1366 | "doctype": "Property Setter", 1367 | "doctype_or_field": "DocField", 1368 | "field_name": "barcode", 1369 | "modified": "2022-02-09 16:33:06.794195", 1370 | "name": "Stock Reconciliation Item-barcode-hidden", 1371 | "parent": null, 1372 | "parentfield": null, 1373 | "parenttype": null, 1374 | "property": "hidden", 1375 | "property_type": "Check", 1376 | "value": "0" 1377 | }, 1378 | { 1379 | "default_value": null, 1380 | "doc_type": "Purchase Receipt Item", 1381 | "docstatus": 0, 1382 | "doctype": "Property Setter", 1383 | "doctype_or_field": "DocField", 1384 | "field_name": "barcode", 1385 | "modified": "2022-02-09 16:33:06.872652", 1386 | "name": "Purchase Receipt Item-barcode-hidden", 1387 | "parent": null, 1388 | "parentfield": null, 1389 | "parenttype": null, 1390 | "property": "hidden", 1391 | "property_type": "Check", 1392 | "value": "0" 1393 | }, 1394 | { 1395 | "default_value": null, 1396 | "doc_type": "Delivery Note Item", 1397 | "docstatus": 0, 1398 | "doctype": "Property Setter", 1399 | "doctype_or_field": "DocField", 1400 | "field_name": "barcode", 1401 | "modified": "2022-02-09 16:33:06.989244", 1402 | "name": "Delivery Note Item-barcode-hidden", 1403 | "parent": null, 1404 | "parentfield": null, 1405 | "parenttype": null, 1406 | "property": "hidden", 1407 | "property_type": "Check", 1408 | "value": "0" 1409 | }, 1410 | { 1411 | "default_value": null, 1412 | "doc_type": "Item Barcode", 1413 | "docstatus": 0, 1414 | "doctype": "Property Setter", 1415 | "doctype_or_field": "DocField", 1416 | "field_name": "barcode", 1417 | "modified": "2022-02-09 16:33:07.102590", 1418 | "name": "Item Barcode-barcode-hidden", 1419 | "parent": null, 1420 | "parentfield": null, 1421 | "parenttype": null, 1422 | "property": "hidden", 1423 | "property_type": "Check", 1424 | "value": "0" 1425 | }, 1426 | { 1427 | "default_value": null, 1428 | "doc_type": "Barcode Generator Items", 1429 | "docstatus": 0, 1430 | "doctype": "Property Setter", 1431 | "doctype_or_field": "DocField", 1432 | "field_name": "barcode", 1433 | "modified": "2022-02-09 16:33:07.186599", 1434 | "name": "Barcode Generator Items-barcode-hidden", 1435 | "parent": null, 1436 | "parentfield": null, 1437 | "parenttype": null, 1438 | "property": "hidden", 1439 | "property_type": "Check", 1440 | "value": "0" 1441 | }, 1442 | { 1443 | "default_value": null, 1444 | "doc_type": "Clinical Procedure Item", 1445 | "docstatus": 0, 1446 | "doctype": "Property Setter", 1447 | "doctype_or_field": "DocField", 1448 | "field_name": "barcode", 1449 | "modified": "2022-02-09 16:33:07.275937", 1450 | "name": "Clinical Procedure Item-barcode-hidden", 1451 | "parent": null, 1452 | "parentfield": null, 1453 | "parenttype": null, 1454 | "property": "hidden", 1455 | "property_type": "Check", 1456 | "value": "0" 1457 | }, 1458 | { 1459 | "default_value": null, 1460 | "doc_type": "Sales Invoice Item", 1461 | "docstatus": 0, 1462 | "doctype": "Property Setter", 1463 | "doctype_or_field": "DocField", 1464 | "field_name": "barcode", 1465 | "modified": "2022-02-09 16:33:07.345162", 1466 | "name": "Sales Invoice Item-barcode-hidden", 1467 | "parent": null, 1468 | "parentfield": null, 1469 | "parenttype": null, 1470 | "property": "hidden", 1471 | "property_type": "Check", 1472 | "value": "0" 1473 | }, 1474 | { 1475 | "default_value": null, 1476 | "doc_type": "Job Card", 1477 | "docstatus": 0, 1478 | "doctype": "Property Setter", 1479 | "doctype_or_field": "DocField", 1480 | "field_name": "barcode", 1481 | "modified": "2022-02-09 16:33:07.540886", 1482 | "name": "Job Card-barcode-hidden", 1483 | "parent": null, 1484 | "parentfield": null, 1485 | "parenttype": null, 1486 | "property": "hidden", 1487 | "property_type": "Check", 1488 | "value": "0" 1489 | }, 1490 | { 1491 | "default_value": null, 1492 | "doc_type": "Item", 1493 | "docstatus": 0, 1494 | "doctype": "Property Setter", 1495 | "doctype_or_field": "DocField", 1496 | "field_name": "barcodes", 1497 | "modified": "2022-02-09 16:33:07.624556", 1498 | "name": "Item-barcodes-hidden", 1499 | "parent": null, 1500 | "parentfield": null, 1501 | "parenttype": null, 1502 | "property": "hidden", 1503 | "property_type": "Check", 1504 | "value": "0" 1505 | }, 1506 | { 1507 | "default_value": null, 1508 | "doc_type": "Barcode Printing", 1509 | "docstatus": 0, 1510 | "doctype": "Property Setter", 1511 | "doctype_or_field": "DocField", 1512 | "field_name": "barcodes", 1513 | "modified": "2022-02-09 16:33:07.763074", 1514 | "name": "Barcode Printing-barcodes-hidden", 1515 | "parent": null, 1516 | "parentfield": null, 1517 | "parenttype": null, 1518 | "property": "hidden", 1519 | "property_type": "Check", 1520 | "value": "0" 1521 | }, 1522 | { 1523 | "default_value": null, 1524 | "doc_type": "Material Request", 1525 | "docstatus": 0, 1526 | "doctype": "Property Setter", 1527 | "doctype_or_field": "DocField", 1528 | "field_name": "scan_barcode", 1529 | "modified": "2022-02-09 16:33:07.842416", 1530 | "name": "Material Request-scan_barcode-hidden", 1531 | "parent": null, 1532 | "parentfield": null, 1533 | "parenttype": null, 1534 | "property": "hidden", 1535 | "property_type": "Check", 1536 | "value": "0" 1537 | }, 1538 | { 1539 | "default_value": null, 1540 | "doc_type": "Sales Order", 1541 | "docstatus": 0, 1542 | "doctype": "Property Setter", 1543 | "doctype_or_field": "DocField", 1544 | "field_name": "scan_barcode", 1545 | "modified": "2022-02-09 16:33:07.917408", 1546 | "name": "Sales Order-scan_barcode-hidden", 1547 | "parent": null, 1548 | "parentfield": null, 1549 | "parenttype": null, 1550 | "property": "hidden", 1551 | "property_type": "Check", 1552 | "value": "0" 1553 | }, 1554 | { 1555 | "default_value": null, 1556 | "doc_type": "Delivery Note", 1557 | "docstatus": 0, 1558 | "doctype": "Property Setter", 1559 | "doctype_or_field": "DocField", 1560 | "field_name": "scan_barcode", 1561 | "modified": "2022-02-09 16:33:08.050344", 1562 | "name": "Delivery Note-scan_barcode-hidden", 1563 | "parent": null, 1564 | "parentfield": null, 1565 | "parenttype": null, 1566 | "property": "hidden", 1567 | "property_type": "Check", 1568 | "value": "0" 1569 | }, 1570 | { 1571 | "default_value": null, 1572 | "doc_type": "Sales Invoice", 1573 | "docstatus": 0, 1574 | "doctype": "Property Setter", 1575 | "doctype_or_field": "DocField", 1576 | "field_name": "scan_barcode", 1577 | "modified": "2022-02-09 16:33:08.219774", 1578 | "name": "Sales Invoice-scan_barcode-hidden", 1579 | "parent": null, 1580 | "parentfield": null, 1581 | "parenttype": null, 1582 | "property": "hidden", 1583 | "property_type": "Check", 1584 | "value": "0" 1585 | }, 1586 | { 1587 | "default_value": null, 1588 | "doc_type": "Stock Entry", 1589 | "docstatus": 0, 1590 | "doctype": "Property Setter", 1591 | "doctype_or_field": "DocField", 1592 | "field_name": "scan_barcode", 1593 | "modified": "2022-02-09 16:33:08.385153", 1594 | "name": "Stock Entry-scan_barcode-hidden", 1595 | "parent": null, 1596 | "parentfield": null, 1597 | "parenttype": null, 1598 | "property": "hidden", 1599 | "property_type": "Check", 1600 | "value": "0" 1601 | }, 1602 | { 1603 | "default_value": null, 1604 | "doc_type": "Purchase Invoice", 1605 | "docstatus": 0, 1606 | "doctype": "Property Setter", 1607 | "doctype_or_field": "DocField", 1608 | "field_name": "scan_barcode", 1609 | "modified": "2022-02-09 16:33:08.495374", 1610 | "name": "Purchase Invoice-scan_barcode-hidden", 1611 | "parent": null, 1612 | "parentfield": null, 1613 | "parenttype": null, 1614 | "property": "hidden", 1615 | "property_type": "Check", 1616 | "value": "0" 1617 | }, 1618 | { 1619 | "default_value": null, 1620 | "doc_type": "Purchase Receipt", 1621 | "docstatus": 0, 1622 | "doctype": "Property Setter", 1623 | "doctype_or_field": "DocField", 1624 | "field_name": "scan_barcode", 1625 | "modified": "2022-02-09 16:33:08.649548", 1626 | "name": "Purchase Receipt-scan_barcode-hidden", 1627 | "parent": null, 1628 | "parentfield": null, 1629 | "parenttype": null, 1630 | "property": "hidden", 1631 | "property_type": "Check", 1632 | "value": "0" 1633 | }, 1634 | { 1635 | "default_value": null, 1636 | "doc_type": "Purchase Order", 1637 | "docstatus": 0, 1638 | "doctype": "Property Setter", 1639 | "doctype_or_field": "DocField", 1640 | "field_name": "scan_barcode", 1641 | "modified": "2022-02-09 16:33:08.785006", 1642 | "name": "Purchase Order-scan_barcode-hidden", 1643 | "parent": null, 1644 | "parentfield": null, 1645 | "parenttype": null, 1646 | "property": "hidden", 1647 | "property_type": "Check", 1648 | "value": "0" 1649 | } 1650 | ] -------------------------------------------------------------------------------- /barcode_shrdc/fixtures/role.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "desk_access": 1, 4 | "disabled": 0, 5 | "docstatus": 0, 6 | "doctype": "Role", 7 | "modified": "2021-12-22 11:16:56.287165", 8 | "name": "Administrator", 9 | "parent": null, 10 | "parentfield": null, 11 | "parenttype": null, 12 | "restrict_to_domain": null, 13 | "role_name": "Administrator", 14 | "two_factor_auth": 0 15 | }, 16 | { 17 | "desk_access": 1, 18 | "disabled": 0, 19 | "docstatus": 0, 20 | "doctype": "Role", 21 | "modified": "2021-12-22 11:16:56.289891", 22 | "name": "System Manager", 23 | "parent": null, 24 | "parentfield": null, 25 | "parenttype": null, 26 | "restrict_to_domain": null, 27 | "role_name": "System Manager", 28 | "two_factor_auth": 0 29 | }, 30 | { 31 | "desk_access": 1, 32 | "disabled": 0, 33 | "docstatus": 0, 34 | "doctype": "Role", 35 | "modified": "2021-12-22 11:16:56.292380", 36 | "name": "Guest", 37 | "parent": null, 38 | "parentfield": null, 39 | "parenttype": null, 40 | "restrict_to_domain": null, 41 | "role_name": "Guest", 42 | "two_factor_auth": 0 43 | }, 44 | { 45 | "desk_access": 1, 46 | "disabled": 0, 47 | "docstatus": 0, 48 | "doctype": "Role", 49 | "modified": "2021-12-22 11:16:56.294830", 50 | "name": "All", 51 | "parent": null, 52 | "parentfield": null, 53 | "parenttype": null, 54 | "restrict_to_domain": null, 55 | "role_name": "All", 56 | "two_factor_auth": 0 57 | }, 58 | { 59 | "desk_access": 1, 60 | "disabled": 0, 61 | "docstatus": 0, 62 | "doctype": "Role", 63 | "modified": "2021-12-22 11:16:57.332675", 64 | "name": "Website Manager", 65 | "parent": null, 66 | "parentfield": null, 67 | "parenttype": null, 68 | "restrict_to_domain": null, 69 | "role_name": "Website Manager", 70 | "two_factor_auth": 0 71 | }, 72 | { 73 | "desk_access": 1, 74 | "disabled": 0, 75 | "docstatus": 0, 76 | "doctype": "Role", 77 | "modified": "2021-12-22 11:17:00.079831", 78 | "name": "Inbox User", 79 | "parent": null, 80 | "parentfield": null, 81 | "parenttype": null, 82 | "restrict_to_domain": null, 83 | "role_name": "Inbox User", 84 | "two_factor_auth": 0 85 | }, 86 | { 87 | "desk_access": 1, 88 | "disabled": 0, 89 | "docstatus": 0, 90 | "doctype": "Role", 91 | "modified": "2021-12-22 11:17:05.683053", 92 | "name": "Report Manager", 93 | "parent": null, 94 | "parentfield": null, 95 | "parenttype": null, 96 | "restrict_to_domain": null, 97 | "role_name": "Report Manager", 98 | "two_factor_auth": 0 99 | }, 100 | { 101 | "desk_access": 1, 102 | "disabled": 0, 103 | "docstatus": 0, 104 | "doctype": "Role", 105 | "modified": "2021-12-22 11:17:06.254886", 106 | "name": "Script Manager", 107 | "parent": null, 108 | "parentfield": null, 109 | "parenttype": null, 110 | "restrict_to_domain": null, 111 | "role_name": "Script Manager", 112 | "two_factor_auth": 0 113 | }, 114 | { 115 | "desk_access": 1, 116 | "disabled": 0, 117 | "docstatus": 0, 118 | "doctype": "Role", 119 | "modified": "2021-12-22 11:17:09.769550", 120 | "name": "Blogger", 121 | "parent": null, 122 | "parentfield": null, 123 | "parenttype": null, 124 | "restrict_to_domain": null, 125 | "role_name": "Blogger", 126 | "two_factor_auth": 0 127 | }, 128 | { 129 | "desk_access": 1, 130 | "disabled": 0, 131 | "docstatus": 0, 132 | "doctype": "Role", 133 | "modified": "2021-12-22 11:17:11.061597", 134 | "name": "Knowledge Base Editor", 135 | "parent": null, 136 | "parentfield": null, 137 | "parenttype": null, 138 | "restrict_to_domain": null, 139 | "role_name": "Knowledge Base Editor", 140 | "two_factor_auth": 0 141 | }, 142 | { 143 | "desk_access": 1, 144 | "disabled": 0, 145 | "docstatus": 0, 146 | "doctype": "Role", 147 | "modified": "2021-12-22 11:17:11.064882", 148 | "name": "Knowledge Base Contributor", 149 | "parent": null, 150 | "parentfield": null, 151 | "parenttype": null, 152 | "restrict_to_domain": null, 153 | "role_name": "Knowledge Base Contributor", 154 | "two_factor_auth": 0 155 | }, 156 | { 157 | "desk_access": 1, 158 | "disabled": 0, 159 | "docstatus": 0, 160 | "doctype": "Role", 161 | "modified": "2021-12-22 11:17:16.939228", 162 | "name": "Newsletter Manager", 163 | "parent": null, 164 | "parentfield": null, 165 | "parenttype": null, 166 | "restrict_to_domain": null, 167 | "role_name": "Newsletter Manager", 168 | "two_factor_auth": 0 169 | }, 170 | { 171 | "desk_access": 1, 172 | "disabled": 0, 173 | "docstatus": 0, 174 | "doctype": "Role", 175 | "modified": "2021-12-22 11:17:20.507685", 176 | "name": "Purchase User", 177 | "parent": null, 178 | "parentfield": null, 179 | "parenttype": null, 180 | "restrict_to_domain": null, 181 | "role_name": "Purchase User", 182 | "two_factor_auth": 0 183 | }, 184 | { 185 | "desk_access": 1, 186 | "disabled": 0, 187 | "docstatus": 0, 188 | "doctype": "Role", 189 | "modified": "2021-12-22 11:17:20.511431", 190 | "name": "Accounts User", 191 | "parent": null, 192 | "parentfield": null, 193 | "parenttype": null, 194 | "restrict_to_domain": null, 195 | "role_name": "Accounts User", 196 | "two_factor_auth": 0 197 | }, 198 | { 199 | "desk_access": 1, 200 | "disabled": 0, 201 | "docstatus": 0, 202 | "doctype": "Role", 203 | "modified": "2021-12-22 11:17:20.513861", 204 | "name": "Sales User", 205 | "parent": null, 206 | "parentfield": null, 207 | "parenttype": null, 208 | "restrict_to_domain": null, 209 | "role_name": "Sales User", 210 | "two_factor_auth": 0 211 | }, 212 | { 213 | "desk_access": 1, 214 | "disabled": 0, 215 | "docstatus": 0, 216 | "doctype": "Role", 217 | "modified": "2021-12-22 11:17:35.543112", 218 | "name": "Maintenance User", 219 | "parent": null, 220 | "parentfield": null, 221 | "parenttype": null, 222 | "restrict_to_domain": null, 223 | "role_name": "Maintenance User", 224 | "two_factor_auth": 0 225 | }, 226 | { 227 | "desk_access": 1, 228 | "disabled": 0, 229 | "docstatus": 0, 230 | "doctype": "Role", 231 | "modified": "2021-12-22 11:17:36.005112", 232 | "name": "Purchase Master Manager", 233 | "parent": null, 234 | "parentfield": null, 235 | "parenttype": null, 236 | "restrict_to_domain": null, 237 | "role_name": "Purchase Master Manager", 238 | "two_factor_auth": 0 239 | }, 240 | { 241 | "desk_access": 1, 242 | "disabled": 0, 243 | "docstatus": 0, 244 | "doctype": "Role", 245 | "modified": "2021-12-22 11:17:36.007981", 246 | "name": "Purchase Manager", 247 | "parent": null, 248 | "parentfield": null, 249 | "parenttype": null, 250 | "restrict_to_domain": null, 251 | "role_name": "Purchase Manager", 252 | "two_factor_auth": 0 253 | }, 254 | { 255 | "desk_access": 1, 256 | "disabled": 0, 257 | "docstatus": 0, 258 | "doctype": "Role", 259 | "modified": "2021-12-22 11:17:36.011669", 260 | "name": "Sales Manager", 261 | "parent": null, 262 | "parentfield": null, 263 | "parenttype": null, 264 | "restrict_to_domain": null, 265 | "role_name": "Sales Manager", 266 | "two_factor_auth": 0 267 | }, 268 | { 269 | "desk_access": 1, 270 | "disabled": 0, 271 | "docstatus": 0, 272 | "doctype": "Role", 273 | "modified": "2021-12-22 11:17:36.014131", 274 | "name": "Maintenance Manager", 275 | "parent": null, 276 | "parentfield": null, 277 | "parenttype": null, 278 | "restrict_to_domain": null, 279 | "role_name": "Maintenance Manager", 280 | "two_factor_auth": 0 281 | }, 282 | { 283 | "desk_access": 1, 284 | "disabled": 0, 285 | "docstatus": 0, 286 | "doctype": "Role", 287 | "modified": "2021-12-22 11:17:36.017422", 288 | "name": "Accounts Manager", 289 | "parent": null, 290 | "parentfield": null, 291 | "parenttype": null, 292 | "restrict_to_domain": null, 293 | "role_name": "Accounts Manager", 294 | "two_factor_auth": 0 295 | }, 296 | { 297 | "desk_access": 1, 298 | "disabled": 0, 299 | "docstatus": 0, 300 | "doctype": "Role", 301 | "modified": "2021-12-22 11:17:36.020283", 302 | "name": "Sales Master Manager", 303 | "parent": null, 304 | "parentfield": null, 305 | "parenttype": null, 306 | "restrict_to_domain": null, 307 | "role_name": "Sales Master Manager", 308 | "two_factor_auth": 0 309 | }, 310 | { 311 | "desk_access": 1, 312 | "disabled": 0, 313 | "docstatus": 0, 314 | "doctype": "Role", 315 | "modified": "2021-12-22 11:17:45.075103", 316 | "name": "Translator", 317 | "parent": null, 318 | "parentfield": null, 319 | "parenttype": null, 320 | "restrict_to_domain": null, 321 | "role_name": "Translator", 322 | "two_factor_auth": 0 323 | }, 324 | { 325 | "desk_access": 1, 326 | "disabled": 0, 327 | "docstatus": 0, 328 | "doctype": "Role", 329 | "modified": "2021-12-22 11:43:32.776693", 330 | "name": "Auditor", 331 | "parent": null, 332 | "parentfield": null, 333 | "parenttype": null, 334 | "restrict_to_domain": null, 335 | "role_name": "Auditor", 336 | "two_factor_auth": 0 337 | }, 338 | { 339 | "desk_access": 1, 340 | "disabled": 0, 341 | "docstatus": 0, 342 | "doctype": "Role", 343 | "modified": "2021-12-22 11:43:46.719176", 344 | "name": "Employee", 345 | "parent": null, 346 | "parentfield": null, 347 | "parenttype": null, 348 | "restrict_to_domain": null, 349 | "role_name": "Employee", 350 | "two_factor_auth": 0 351 | }, 352 | { 353 | "desk_access": 1, 354 | "disabled": 0, 355 | "docstatus": 0, 356 | "doctype": "Role", 357 | "modified": "2021-12-22 11:43:46.724339", 358 | "name": "Stock User", 359 | "parent": null, 360 | "parentfield": null, 361 | "parenttype": null, 362 | "restrict_to_domain": null, 363 | "role_name": "Stock User", 364 | "two_factor_auth": 0 365 | }, 366 | { 367 | "desk_access": 1, 368 | "disabled": 0, 369 | "docstatus": 0, 370 | "doctype": "Role", 371 | "modified": "2021-12-22 11:44:09.263328", 372 | "name": "HR Manager", 373 | "parent": null, 374 | "parentfield": null, 375 | "parenttype": null, 376 | "restrict_to_domain": null, 377 | "role_name": "HR Manager", 378 | "two_factor_auth": 0 379 | }, 380 | { 381 | "desk_access": 1, 382 | "disabled": 0, 383 | "docstatus": 0, 384 | "doctype": "Role", 385 | "modified": "2021-12-22 11:44:15.146185", 386 | "name": "Manufacturing Manager", 387 | "parent": null, 388 | "parentfield": null, 389 | "parenttype": null, 390 | "restrict_to_domain": null, 391 | "role_name": "Manufacturing Manager", 392 | "two_factor_auth": 0 393 | }, 394 | { 395 | "desk_access": 1, 396 | "disabled": 0, 397 | "docstatus": 0, 398 | "doctype": "Role", 399 | "modified": "2021-12-22 11:44:16.228032", 400 | "name": "Stock Manager", 401 | "parent": null, 402 | "parentfield": null, 403 | "parenttype": null, 404 | "restrict_to_domain": null, 405 | "role_name": "Stock Manager", 406 | "two_factor_auth": 0 407 | }, 408 | { 409 | "desk_access": 1, 410 | "disabled": 0, 411 | "docstatus": 0, 412 | "doctype": "Role", 413 | "modified": "2021-12-22 11:44:19.202171", 414 | "name": "Projects User", 415 | "parent": null, 416 | "parentfield": null, 417 | "parenttype": null, 418 | "restrict_to_domain": null, 419 | "role_name": "Projects User", 420 | "two_factor_auth": 0 421 | }, 422 | { 423 | "desk_access": 1, 424 | "disabled": 0, 425 | "docstatus": 0, 426 | "doctype": "Role", 427 | "modified": "2021-12-22 11:44:19.948195", 428 | "name": "Projects Manager", 429 | "parent": null, 430 | "parentfield": null, 431 | "parenttype": null, 432 | "restrict_to_domain": null, 433 | "role_name": "Projects Manager", 434 | "two_factor_auth": 0 435 | }, 436 | { 437 | "desk_access": 1, 438 | "disabled": 0, 439 | "docstatus": 0, 440 | "doctype": "Role", 441 | "modified": "2021-12-22 11:44:22.405235", 442 | "name": "HR User", 443 | "parent": null, 444 | "parentfield": null, 445 | "parenttype": null, 446 | "restrict_to_domain": null, 447 | "role_name": "HR User", 448 | "two_factor_auth": 0 449 | }, 450 | { 451 | "desk_access": 1, 452 | "disabled": 0, 453 | "docstatus": 0, 454 | "doctype": "Role", 455 | "modified": "2021-12-22 11:44:22.408618", 456 | "name": "Manufacturing User", 457 | "parent": null, 458 | "parentfield": null, 459 | "parenttype": null, 460 | "restrict_to_domain": null, 461 | "role_name": "Manufacturing User", 462 | "two_factor_auth": 0 463 | }, 464 | { 465 | "desk_access": 1, 466 | "disabled": 0, 467 | "docstatus": 0, 468 | "doctype": "Role", 469 | "modified": "2021-12-22 11:44:30.091734", 470 | "name": "Item Manager", 471 | "parent": null, 472 | "parentfield": null, 473 | "parenttype": null, 474 | "restrict_to_domain": null, 475 | "role_name": "Item Manager", 476 | "two_factor_auth": 0 477 | }, 478 | { 479 | "desk_access": 1, 480 | "disabled": 0, 481 | "docstatus": 0, 482 | "doctype": "Role", 483 | "modified": "2021-12-22 14:48:52.965688", 484 | "name": "Academics User", 485 | "parent": null, 486 | "parentfield": null, 487 | "parenttype": null, 488 | "restrict_to_domain": "Education", 489 | "role_name": "Academics User", 490 | "two_factor_auth": 0 491 | }, 492 | { 493 | "desk_access": 1, 494 | "disabled": 0, 495 | "docstatus": 0, 496 | "doctype": "Role", 497 | "modified": "2021-12-22 11:44:38.938827", 498 | "name": "Fleet Manager", 499 | "parent": null, 500 | "parentfield": null, 501 | "parenttype": null, 502 | "restrict_to_domain": null, 503 | "role_name": "Fleet Manager", 504 | "two_factor_auth": 0 505 | }, 506 | { 507 | "desk_access": 1, 508 | "disabled": 0, 509 | "docstatus": 0, 510 | "doctype": "Role", 511 | "modified": "2021-12-22 11:44:39.783520", 512 | "name": "Expense Approver", 513 | "parent": null, 514 | "parentfield": null, 515 | "parenttype": null, 516 | "restrict_to_domain": null, 517 | "role_name": "Expense Approver", 518 | "two_factor_auth": 0 519 | }, 520 | { 521 | "desk_access": 1, 522 | "disabled": 0, 523 | "docstatus": 0, 524 | "doctype": "Role", 525 | "modified": "2021-12-22 11:44:52.521146", 526 | "name": "Leave Approver", 527 | "parent": null, 528 | "parentfield": null, 529 | "parenttype": null, 530 | "restrict_to_domain": null, 531 | "role_name": "Leave Approver", 532 | "two_factor_auth": 0 533 | }, 534 | { 535 | "desk_access": 1, 536 | "disabled": 0, 537 | "docstatus": 0, 538 | "doctype": "Role", 539 | "modified": "2021-12-22 11:45:12.918747", 540 | "name": "Fulfillment User", 541 | "parent": null, 542 | "parentfield": null, 543 | "parenttype": null, 544 | "restrict_to_domain": null, 545 | "role_name": "Fulfillment User", 546 | "two_factor_auth": 0 547 | }, 548 | { 549 | "desk_access": 1, 550 | "disabled": 0, 551 | "docstatus": 0, 552 | "doctype": "Role", 553 | "modified": "2021-12-22 11:45:21.495307", 554 | "name": "Quality Manager", 555 | "parent": null, 556 | "parentfield": null, 557 | "parenttype": null, 558 | "restrict_to_domain": null, 559 | "role_name": "Quality Manager", 560 | "two_factor_auth": 0 561 | }, 562 | { 563 | "desk_access": 1, 564 | "disabled": 0, 565 | "docstatus": 0, 566 | "doctype": "Role", 567 | "modified": "2021-12-22 11:45:26.884395", 568 | "name": "Support Team", 569 | "parent": null, 570 | "parentfield": null, 571 | "parenttype": null, 572 | "restrict_to_domain": null, 573 | "role_name": "Support Team", 574 | "two_factor_auth": 0 575 | }, 576 | { 577 | "desk_access": 1, 578 | "disabled": 0, 579 | "docstatus": 0, 580 | "doctype": "Role", 581 | "modified": "2021-12-22 14:48:52.943769", 582 | "name": "Agriculture User", 583 | "parent": null, 584 | "parentfield": null, 585 | "parenttype": null, 586 | "restrict_to_domain": "Agriculture", 587 | "role_name": "Agriculture User", 588 | "two_factor_auth": 0 589 | }, 590 | { 591 | "desk_access": 1, 592 | "disabled": 0, 593 | "docstatus": 0, 594 | "doctype": "Role", 595 | "modified": "2021-12-22 14:48:52.942827", 596 | "name": "Agriculture Manager", 597 | "parent": null, 598 | "parentfield": null, 599 | "parenttype": null, 600 | "restrict_to_domain": "Agriculture", 601 | "role_name": "Agriculture Manager", 602 | "two_factor_auth": 0 603 | }, 604 | { 605 | "desk_access": 1, 606 | "disabled": 0, 607 | "docstatus": 0, 608 | "doctype": "Role", 609 | "modified": "2021-12-22 11:45:37.777591", 610 | "name": "LMS User", 611 | "parent": null, 612 | "parentfield": null, 613 | "parenttype": null, 614 | "restrict_to_domain": null, 615 | "role_name": "LMS User", 616 | "two_factor_auth": 0 617 | }, 618 | { 619 | "desk_access": 1, 620 | "disabled": 0, 621 | "docstatus": 0, 622 | "doctype": "Role", 623 | "modified": "2021-12-22 14:48:52.964767", 624 | "name": "Instructor", 625 | "parent": null, 626 | "parentfield": null, 627 | "parenttype": null, 628 | "restrict_to_domain": "Education", 629 | "role_name": "Instructor", 630 | "two_factor_auth": 0 631 | }, 632 | { 633 | "desk_access": 1, 634 | "disabled": 0, 635 | "docstatus": 0, 636 | "doctype": "Role", 637 | "modified": "2021-12-22 14:48:52.966827", 638 | "name": "Education Manager", 639 | "parent": null, 640 | "parentfield": null, 641 | "parenttype": null, 642 | "restrict_to_domain": "Education", 643 | "role_name": "Education Manager", 644 | "two_factor_auth": 0 645 | }, 646 | { 647 | "desk_access": 0, 648 | "disabled": 0, 649 | "docstatus": 0, 650 | "doctype": "Role", 651 | "modified": "2021-12-22 14:48:52.963859", 652 | "name": "Student", 653 | "parent": null, 654 | "parentfield": null, 655 | "parenttype": null, 656 | "restrict_to_domain": "Education", 657 | "role_name": "Student", 658 | "two_factor_auth": 0 659 | }, 660 | { 661 | "desk_access": 1, 662 | "disabled": 0, 663 | "docstatus": 0, 664 | "doctype": "Role", 665 | "modified": "2021-12-22 14:48:52.979329", 666 | "name": "Healthcare Administrator", 667 | "parent": null, 668 | "parentfield": null, 669 | "parenttype": null, 670 | "restrict_to_domain": "Healthcare", 671 | "role_name": "Healthcare Administrator", 672 | "two_factor_auth": 0 673 | }, 674 | { 675 | "desk_access": 1, 676 | "disabled": 0, 677 | "docstatus": 0, 678 | "doctype": "Role", 679 | "modified": "2021-12-22 14:48:52.981763", 680 | "name": "Laboratory User", 681 | "parent": null, 682 | "parentfield": null, 683 | "parenttype": null, 684 | "restrict_to_domain": "Healthcare", 685 | "role_name": "Laboratory User", 686 | "two_factor_auth": 0 687 | }, 688 | { 689 | "desk_access": 1, 690 | "disabled": 0, 691 | "docstatus": 0, 692 | "doctype": "Role", 693 | "modified": "2021-12-22 14:48:52.984013", 694 | "name": "Physician", 695 | "parent": null, 696 | "parentfield": null, 697 | "parenttype": null, 698 | "restrict_to_domain": "Healthcare", 699 | "role_name": "Physician", 700 | "two_factor_auth": 0 701 | }, 702 | { 703 | "desk_access": 1, 704 | "disabled": 0, 705 | "docstatus": 0, 706 | "doctype": "Role", 707 | "modified": "2021-12-22 14:48:52.982915", 708 | "name": "Nursing User", 709 | "parent": null, 710 | "parentfield": null, 711 | "parenttype": null, 712 | "restrict_to_domain": "Healthcare", 713 | "role_name": "Nursing User", 714 | "two_factor_auth": 0 715 | }, 716 | { 717 | "desk_access": 1, 718 | "disabled": 0, 719 | "docstatus": 0, 720 | "doctype": "Role", 721 | "modified": "2021-12-22 14:48:52.980601", 722 | "name": "LabTest Approver", 723 | "parent": null, 724 | "parentfield": null, 725 | "parenttype": null, 726 | "restrict_to_domain": "Healthcare", 727 | "role_name": "LabTest Approver", 728 | "two_factor_auth": 0 729 | }, 730 | { 731 | "desk_access": 1, 732 | "disabled": 1, 733 | "docstatus": 0, 734 | "doctype": "Role", 735 | "modified": "2021-12-22 14:48:53.031798", 736 | "name": "Restaurant Manager", 737 | "parent": null, 738 | "parentfield": null, 739 | "parenttype": null, 740 | "restrict_to_domain": "Hospitality", 741 | "role_name": "Restaurant Manager", 742 | "two_factor_auth": 0 743 | }, 744 | { 745 | "desk_access": 1, 746 | "disabled": 0, 747 | "docstatus": 0, 748 | "doctype": "Role", 749 | "modified": "2021-12-22 14:48:53.291998", 750 | "name": "Non Profit Manager", 751 | "parent": null, 752 | "parentfield": null, 753 | "parenttype": null, 754 | "restrict_to_domain": "Non Profit", 755 | "role_name": "Non Profit Manager", 756 | "two_factor_auth": 0 757 | }, 758 | { 759 | "desk_access": 1, 760 | "disabled": 0, 761 | "docstatus": 0, 762 | "doctype": "Role", 763 | "modified": "2021-12-22 14:48:53.293105", 764 | "name": "Non Profit Member", 765 | "parent": null, 766 | "parentfield": null, 767 | "parenttype": null, 768 | "restrict_to_domain": "Non Profit", 769 | "role_name": "Non Profit Member", 770 | "two_factor_auth": 0 771 | }, 772 | { 773 | "desk_access": 1, 774 | "disabled": 1, 775 | "docstatus": 0, 776 | "doctype": "Role", 777 | "modified": "2021-12-22 14:48:53.107214", 778 | "name": "Hotel Manager", 779 | "parent": null, 780 | "parentfield": null, 781 | "parenttype": null, 782 | "restrict_to_domain": "Hospitality", 783 | "role_name": "Hotel Manager", 784 | "two_factor_auth": 0 785 | }, 786 | { 787 | "desk_access": 1, 788 | "disabled": 1, 789 | "docstatus": 0, 790 | "doctype": "Role", 791 | "modified": "2021-12-22 14:48:53.182666", 792 | "name": "Hotel Reservation User", 793 | "parent": null, 794 | "parentfield": null, 795 | "parenttype": null, 796 | "restrict_to_domain": "Hospitality", 797 | "role_name": "Hotel Reservation User", 798 | "two_factor_auth": 0 799 | }, 800 | { 801 | "desk_access": 0, 802 | "disabled": 0, 803 | "docstatus": 0, 804 | "doctype": "Role", 805 | "modified": "2021-12-22 14:48:52.985338", 806 | "name": "Patient", 807 | "parent": null, 808 | "parentfield": null, 809 | "parenttype": null, 810 | "restrict_to_domain": "Healthcare", 811 | "role_name": "Patient", 812 | "two_factor_auth": 0 813 | }, 814 | { 815 | "desk_access": 0, 816 | "disabled": 0, 817 | "docstatus": 0, 818 | "doctype": "Role", 819 | "modified": "2021-12-22 11:46:53.439168", 820 | "name": "Supplier", 821 | "parent": null, 822 | "parentfield": null, 823 | "parenttype": null, 824 | "restrict_to_domain": null, 825 | "role_name": "Supplier", 826 | "two_factor_auth": 0 827 | }, 828 | { 829 | "desk_access": 0, 830 | "disabled": 0, 831 | "docstatus": 0, 832 | "doctype": "Role", 833 | "modified": "2021-12-22 11:46:53.443758", 834 | "name": "Customer", 835 | "parent": null, 836 | "parentfield": null, 837 | "parenttype": null, 838 | "restrict_to_domain": null, 839 | "role_name": "Customer", 840 | "two_factor_auth": 0 841 | }, 842 | { 843 | "desk_access": 0, 844 | "disabled": 0, 845 | "docstatus": 0, 846 | "doctype": "Role", 847 | "modified": "2021-12-22 14:48:53.294173", 848 | "name": "Non Profit Portal User", 849 | "parent": null, 850 | "parentfield": null, 851 | "parenttype": null, 852 | "restrict_to_domain": "Non Profit", 853 | "role_name": "Non Profit Portal User", 854 | "two_factor_auth": 0 855 | }, 856 | { 857 | "desk_access": 1, 858 | "disabled": 0, 859 | "docstatus": 0, 860 | "doctype": "Role", 861 | "modified": "2021-12-22 11:46:56.217321", 862 | "name": "Analytics", 863 | "parent": null, 864 | "parentfield": null, 865 | "parenttype": null, 866 | "restrict_to_domain": null, 867 | "role_name": "Analytics", 868 | "two_factor_auth": 0 869 | } 870 | ] -------------------------------------------------------------------------------- /barcode_shrdc/fixtures/role_profile.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /barcode_shrdc/fixtures/workflow.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /barcode_shrdc/fixtures/workflow_action.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /barcode_shrdc/fixtures/workflow_state.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "docstatus": 0, 4 | "doctype": "Workflow State", 5 | "icon": "question-sign", 6 | "modified": "2021-12-22 11:17:45.094428", 7 | "name": "Pending", 8 | "parent": null, 9 | "parentfield": null, 10 | "parenttype": null, 11 | "style": "", 12 | "workflow_state_name": "Pending" 13 | }, 14 | { 15 | "docstatus": 0, 16 | "doctype": "Workflow State", 17 | "icon": "ok-sign", 18 | "modified": "2021-12-22 11:17:45.097460", 19 | "name": "Approved", 20 | "parent": null, 21 | "parentfield": null, 22 | "parenttype": null, 23 | "style": "Success", 24 | "workflow_state_name": "Approved" 25 | }, 26 | { 27 | "docstatus": 0, 28 | "doctype": "Workflow State", 29 | "icon": "remove", 30 | "modified": "2021-12-22 11:17:45.099924", 31 | "name": "Rejected", 32 | "parent": null, 33 | "parentfield": null, 34 | "parenttype": null, 35 | "style": "Danger", 36 | "workflow_state_name": "Rejected" 37 | } 38 | ] -------------------------------------------------------------------------------- /barcode_shrdc/hooks.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | from . import __version__ as app_version 4 | 5 | app_name = "barcode_shrdc" 6 | app_title = "Barcode Shrdc" 7 | app_publisher = "lxy" 8 | app_description = "Generate barcode for items" 9 | app_icon = "octicon octicon-file-directory" 10 | app_color = "grey" 11 | app_email = "xlee0008@student.monash.edu" 12 | app_license = "MIT" 13 | 14 | # Includes in 15 | # ------------------ 16 | 17 | # include js, css files in header of desk.html 18 | # app_include_css = "/assets/barcode_shrdc/css/barcode_shrdc.css" 19 | # app_include_js = "/assets/barcode_shrdc/js/barcode_shrdc.js" 20 | 21 | # include js, css files in header of web template 22 | # web_include_css = "/assets/barcode_shrdc/css/barcode_shrdc.css" 23 | # web_include_js = "/assets/barcode_shrdc/js/barcode_shrdc.js" 24 | 25 | # include js in page 26 | # page_js = {"page" : "public/js/file.js"} 27 | 28 | # include js in doctype views 29 | # doctype_js = {"doctype" : "public/js/doctype.js"} 30 | # doctype_list_js = {"doctype" : "public/js/doctype_list.js"} 31 | # doctype_tree_js = {"doctype" : "public/js/doctype_tree.js"} 32 | # doctype_calendar_js = {"doctype" : "public/js/doctype_calendar.js"} 33 | 34 | # Home Pages 35 | # ---------- 36 | 37 | # application home page (will override Website Settings) 38 | # home_page = "login" 39 | 40 | # website user home page (by Role) 41 | # role_home_page = { 42 | # "Role": "home_page" 43 | # } 44 | 45 | # Website user home page (by function) 46 | # get_website_user_home_page = "barcode_shrdc.utils.get_home_page" 47 | 48 | # Generators 49 | # ---------- 50 | 51 | # automatically create page for each record of this doctype 52 | # website_generators = ["Web Page"] 53 | 54 | # Installation 55 | # ------------ 56 | 57 | # before_install = "barcode_shrdc.install.before_install" 58 | # after_install = "barcode_shrdc.install.after_install" 59 | 60 | # Desk Notifications 61 | # ------------------ 62 | # See frappe.core.notifications.get_notification_config 63 | 64 | # notification_config = "barcode_shrdc.notifications.get_notification_config" 65 | 66 | # Permissions 67 | # ----------- 68 | # Permissions evaluated in scripted ways 69 | 70 | # permission_query_conditions = { 71 | # "Event": "frappe.desk.doctype.event.event.get_permission_query_conditions", 72 | # } 73 | # 74 | # has_permission = { 75 | # "Event": "frappe.desk.doctype.event.event.has_permission", 76 | # } 77 | 78 | # Document Events 79 | # --------------- 80 | # Hook on document methods and events 81 | 82 | # doc_events = { 83 | # "*": { 84 | # "on_update": "method", 85 | # "on_cancel": "method", 86 | # "on_trash": "method" 87 | # } 88 | # } 89 | 90 | # Scheduled Tasks 91 | # --------------- 92 | 93 | # scheduler_events = { 94 | # "all": [ 95 | # "barcode_shrdc.tasks.all" 96 | # ], 97 | # "daily": [ 98 | # "barcode_shrdc.tasks.daily" 99 | # ], 100 | # "hourly": [ 101 | # "barcode_shrdc.tasks.hourly" 102 | # ], 103 | # "weekly": [ 104 | # "barcode_shrdc.tasks.weekly" 105 | # ] 106 | # "monthly": [ 107 | # "barcode_shrdc.tasks.monthly" 108 | # ] 109 | # } 110 | 111 | # Testing 112 | # ------- 113 | 114 | # before_tests = "barcode_shrdc.install.before_tests" 115 | 116 | # Overriding Methods 117 | # ------------------------------ 118 | # 119 | # override_whitelisted_methods = { 120 | # "frappe.desk.doctype.event.event.get_events": "barcode_shrdc.event.get_events" 121 | # } 122 | # 123 | # each overriding function accepts a `data` argument; 124 | # generated from the base implementation of the doctype dashboard, 125 | # along with any modifications made in other Frappe apps 126 | # override_doctype_dashboards = { 127 | # "Task": "barcode_shrdc.task.get_dashboard_data" 128 | # } 129 | 130 | # fixtures 131 | fixtures = ['Print Format','Report', 'Role Profile', 'Role', 'Custom Field', 'Custom Script', 'Property Setter', 'Workflow', 'Workflow State', 'Workflow Action'] 132 | 133 | # javascript 134 | # doctype_js = { 135 | # 'Item':'public/js/....' 136 | # } 137 | # # will extend 138 | 139 | # # python 140 | # override_whitelisted_methods ={ 141 | # "":"" 142 | # } 143 | # write in events -------------------------------------------------------------------------------- /barcode_shrdc/modules.txt: -------------------------------------------------------------------------------- 1 | Barcode Shrdc -------------------------------------------------------------------------------- /barcode_shrdc/patches.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msf4-0/ERPNext-Barcode-Integration/e88597092387f4c4a0b62d6bde006517a75fdef9/barcode_shrdc/patches.txt -------------------------------------------------------------------------------- /barcode_shrdc/public/hi.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msf4-0/ERPNext-Barcode-Integration/e88597092387f4c4a0b62d6bde006517a75fdef9/barcode_shrdc/public/hi.txt -------------------------------------------------------------------------------- /barcode_shrdc/templates/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msf4-0/ERPNext-Barcode-Integration/e88597092387f4c4a0b62d6bde006517a75fdef9/barcode_shrdc/templates/__init__.py -------------------------------------------------------------------------------- /barcode_shrdc/templates/item_qr/item_qr.css: -------------------------------------------------------------------------------- 1 | .card { 2 | box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); 3 | max-width: 1200px; 4 | margin: auto; 5 | /*text-align: center;*/ 6 | font-family: arial; 7 | display: inline-block; 8 | resize: both; 9 | overflow: auto; 10 | } 11 | 12 | .image{ 13 | float:none; 14 | margin:auto; 15 | width:50% 16 | } 17 | .details{ 18 | padding: 30px; 19 | } 20 | .name { 21 | font-weight:bold; 22 | text-align: center; 23 | font-size: 30px; 24 | margin-top: 10px; 25 | } 26 | .card button { 27 | border: none; 28 | outline: 0; 29 | padding: 12px; 30 | color: white; 31 | background-color: #000; 32 | text-align: center; 33 | cursor: pointer; 34 | width: 100%; 35 | font-size: 18px; 36 | } 37 | 38 | .card button:hover { 39 | opacity: 0.7; 40 | } 41 | 42 | p{ 43 | font-size: 19px; 44 | } 45 | .table table{ 46 | border-collapse: collapse; 47 | /* width: 100%; */ 48 | border: 1px solid #ddd; 49 | 50 | } 51 | .table td { 52 | text-align: center; 53 | } 54 | th, td{ 55 | padding: 16px; 56 | font-size: 17px; 57 | 58 | } 59 | .table p{ 60 | font-weight: bold; 61 | } 62 | .details td{ 63 | column-width: 30%; 64 | } -------------------------------------------------------------------------------- /barcode_shrdc/templates/pages/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msf4-0/ERPNext-Barcode-Integration/e88597092387f4c4a0b62d6bde006517a75fdef9/barcode_shrdc/templates/pages/__init__.py -------------------------------------------------------------------------------- /barcode_shrdc/www/item_qr.html: -------------------------------------------------------------------------------- 1 | {% extends "templates/web.html" %} 2 | 3 | {% block title %}{{ _('Item Details (QR Code Scanning)') }}{% endblock %} 4 | {% block header %} 5 |

Item Details (QR Code Scanning)

6 | {% endblock header %} 7 | {% block page_content %} 8 | 11 | 12 | 13 |
14 |
Image Not Found
15 | 16 |

{{item_code}} : {{item_name}}

17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 |
Barcode: {{barcode}}
Serial No.:: {{serial_no}}
Batch No.: {{batch_no}}
Manufacturing Date: {{mfg_date}}
Expiry Date: {{exp_date}}
Warranty Expiry Date: {{warranty_exp_date}}
AMC Expiry Date: {{amc_exp_date}}
Creation Document No.: {{creation_doc}}
Creation Date: {{creation_date}}
Delivery Document No.: {{delivery_doc}}
Delivery Date: {{delivery_date}}
65 |
66 |

Quantity of items in each warehouse:

67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | {{warehouse_table}} 76 |
WarehouseActual Quantity
77 |
78 |
79 |
80 |

Serial No. Tracking Table:

81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | {{serial_tracking_table}} 93 |
DatetimeWarehouseQuantityIncoming RateVoucher TypeVoucher No.
94 |
95 |
96 |
97 |

98 |
99 | {% endblock %} 100 | 101 | 102 | -------------------------------------------------------------------------------- /barcode_shrdc/www/item_qr.py: -------------------------------------------------------------------------------- 1 | from __future__ import unicode_literals 2 | from dataclasses import asdict 3 | from locale import currency 4 | import frappe, json, urllib 5 | from erpnext.stock.report.stock_projected_qty.stock_projected_qty import get_bin_list 6 | from frappe.utils import cstr, flt, cint, nowdate, add_days, comma_and, now_datetime, ceil, get_url 7 | no_cache = 1 8 | 9 | def get_context(context): 10 | barcode = frappe.form_dict.barcode 11 | item_code = frappe.form_dict.item_code 12 | item = frappe.get_doc("Item",item_code) 13 | item_name = item.item_name 14 | image = item.image if item.image else "/files/No-Image-Placeholder.png" 15 | serial_no = frappe.form_dict.serial_no 16 | batch_no = frappe.form_dict.batch_no 17 | # rate = rate_doc[0]#.get_formatted("price_list_rate") 18 | 19 | if batch_no: 20 | batch_doc = frappe.get_doc("Batch",batch_no) 21 | mfg_date = batch_doc.manufacturing_date 22 | exp_date = batch_doc.expiry_date 23 | else: 24 | mfg_date = None 25 | exp_date = None 26 | 27 | if serial_no: 28 | serial_doc = frappe.get_doc("Serial No",serial_no) 29 | warranty_exp_date = serial_doc.warranty_expiry_date 30 | amc_exp_date = serial_doc.amc_expiry_date 31 | serial_purchase_doc= serial_doc.purchase_document_no 32 | serial_purchase_date= serial_doc.purchase_date 33 | delivery_doc= serial_doc.delivery_document_no 34 | delivery_date= serial_doc.delivery_date 35 | serial_tracking_table = get_serial_tracking_table(item_code, serial_no) 36 | 37 | else: 38 | warranty_exp_date = None 39 | amc_exp_date = None 40 | serial_purchase_doc= None 41 | serial_purchase_date= None 42 | delivery_doc= None 43 | delivery_date= None 44 | serial_tracking_table = "" 45 | 46 | warehouse_table = get_warehouse_table(item_code) 47 | route = frappe.utils.get_url( "/desk#Form/Item/"+urllib.parse.quote(item_code),None) 48 | return { 49 | "item_name": item_name, 50 | "item_code": item_code, 51 | "barcode": barcode, 52 | "serial_no": serial_no, 53 | "batch_no": batch_no, 54 | "image": image, 55 | "mfg_date": mfg_date, 56 | "exp_date": exp_date, 57 | "warranty_exp_date": warranty_exp_date, 58 | "amc_exp_date": amc_exp_date, 59 | "creation_doc": serial_purchase_doc, 60 | "creation_date": serial_purchase_date, 61 | "delivery_doc": delivery_doc, 62 | "delivery_date": delivery_date, 63 | "warehouse_table": warehouse_table, 64 | "serial_tracking_table": serial_tracking_table, 65 | "route": route 66 | } 67 | 68 | def get_warehouse_table(item_code): 69 | filters = frappe._dict({"item_code":item_code}) 70 | bin_list = get_bin_list(filters) 71 | warehouse_table = "" 72 | for bin in bin_list: 73 | warehouse_table += ""+bin.warehouse+""+str(bin.actual_qty)+"" 74 | return warehouse_table 75 | 76 | def get_serial_tracking_table(item_code, serial_no): 77 | sle_list = frappe.db.sql("""select timestamp(posting_date, posting_time) as "timestamp", 78 | warehouse, actual_qty, incoming_rate, voucher_type, voucher_no 79 | from `tabStock Ledger Entry` 80 | where item_code = %s and ifnull(is_cancelled, 'No')='No' 81 | and (serial_no = %s 82 | or serial_no like %s 83 | or serial_no like %s 84 | or serial_no like %s 85 | ) 86 | and warehouse not like "In Transit%%" 87 | order by timestamp(posting_date, posting_time) """, 88 | (item_code, serial_no, serial_no+'\n%', '%\n'+serial_no, '%\n'+serial_no+'\n%'), as_dict = 1) 89 | serial_tracking_table = "" 90 | for sle in sle_list: 91 | if(sle.voucher_type == "Stock Entry"): 92 | company = frappe.get_doc(sle.voucher_type,sle.voucher_no).company 93 | currency_pre = frappe.get_doc("Currency", frappe.get_doc("Company", company).default_currency).symbol 94 | else: 95 | currency = frappe.get_doc(sle.voucher_type,sle.voucher_no).currency 96 | currency_pre = frappe.get_doc("Currency", currency).symbol 97 | serial_tracking_table += "" + str(sle.timestamp) +"" 98 | serial_tracking_table += ""+ sle.warehouse +"" 99 | serial_tracking_table += ""+ str(sle.actual_qty) +"" 100 | serial_tracking_table += ""+ currency_pre+" "+ str(sle.incoming_rate) +"" 101 | serial_tracking_table += ""+ sle.voucher_type +"" 102 | serial_tracking_table += "{1}".format(sle.voucher_type, sle.voucher_no, get_url()) 103 | return serial_tracking_table 104 | 105 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | License: MIT -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | frappe 2 | qrcode -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from setuptools import setup, find_packages 3 | 4 | with open("requirements.txt") as f: 5 | install_requires = f.read().strip().split("\n") 6 | 7 | # get version from __version__ variable in barcode_shrdc/__init__.py 8 | from barcode_shrdc import __version__ as version 9 | 10 | setup( 11 | name="barcode_shrdc", 12 | version=version, 13 | description="Generate barcode for items", 14 | author="lxy", 15 | author_email="xlee0008@student.monash.edu", 16 | packages=find_packages(), 17 | zip_safe=False, 18 | include_package_data=True, 19 | install_requires=install_requires 20 | ) 21 | --------------------------------------------------------------------------------