├── .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 += '
';
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 += '
';
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 += '
';
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 |
15 |
16 |
{{item_code}} : {{item_name}}
17 |
18 |
19 |
20 | Barcode: |
21 | {{barcode}} |
22 |
23 |
24 | Serial No.:: |
25 | {{serial_no}} |
26 |
27 |
28 | Batch No.: |
29 | {{batch_no}} |
30 |
31 |
32 | Manufacturing Date: |
33 | {{mfg_date}} |
34 |
35 |
36 | Expiry Date: |
37 | {{exp_date}} |
38 |
39 |
40 | Warranty Expiry Date: |
41 | {{warranty_exp_date}} |
42 |
43 |
44 | AMC Expiry Date: |
45 | {{amc_exp_date}} |
46 |
47 |
48 |
49 | Creation Document No.: |
50 | {{creation_doc}} |
51 |
52 |
53 | Creation Date: |
54 | {{creation_date}} |
55 |
56 |
57 | Delivery Document No.: |
58 | {{delivery_doc}} |
59 |
60 |
61 | Delivery Date: |
62 | {{delivery_date}} |
63 |
64 |
65 |
66 |
Quantity of items in each warehouse:
67 |
68 |
69 |
70 |
71 |
72 | Warehouse |
73 | Actual Quantity |
74 |
75 | {{warehouse_table}}
76 |
77 |
78 |
79 |
80 |
Serial No. Tracking Table:
81 |
82 |
83 |
84 |
85 | Datetime |
86 | Warehouse |
87 | Quantity |
88 | Incoming Rate |
89 | Voucher Type |
90 | Voucher No. |
91 |
92 | {{serial_tracking_table}}
93 |
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 |
--------------------------------------------------------------------------------