Added Barcode generation

This commit is contained in:
Christian Anetzberger
2022-03-22 18:23:52 +01:00
parent 6303177d00
commit 9dc7f78cb4
101 changed files with 178 additions and 419 deletions

View File

@@ -14,7 +14,7 @@ app_license = "MIT"
# include js, css files in header of desk.html
# app_include_css = "/assets/label_printing/css/label_printing.css"
app_include_js = "/assets/label_printing/js/label_printing.min.js"
app_include_js = "/assets/js/label_printing.min.js"
# include js, css files in header of web template
# web_include_css = "/assets/label_printing/css/label_printing.css"
@@ -184,4 +184,4 @@ jenv = {
"generateBarcode:label_printing.utils.barcode.generateBarcode",
"get_code128_glyphs:label_printing.utils.barcode.generateBarcodeGlyphs"
]
}
}

View File

@@ -1,5 +1,5 @@
{
"label_printing/js/label_printing.min.js": [
"js/label_printing.min.js": [
"public/js/label_printing_desk.js"
]
}

View File

@@ -1,2 +0,0 @@
!function(){"use strict";function e(e,a){var t;return frappe.call({method:"frappe.client.get",async:!1,args:{doctype:e,name:a},callback:function(e){e.message&&(t=e.message)}}),t}$(document).ready(function(){$(".dropdown-notifications").after('<li id="labels-toolbar" class="nav-item"><a class="nav-link label-printing-icon text-muted"><i class="fa fa-tag fa-lg" aria-hidden="true"></i></a></li>'),$("#labels-toolbar").click(function(a){!function(a){var t=a.view.cur_frm,l={labels:[{item_qty:0,label_qty:1}]};null!==t&&("Work Order"!==t.doctype&&"Item"!==t.doctype||t.docname&&(l.doctype=t.doctype,l.docname=t.docname));var i=new frappe.ui.Dialog({title:__("Print Labels"),fields:[{label:__("Reference Doctype"),options:["Work Order","Item","Label"],fieldname:"doctype",fieldtype:"Select",default:l.doctype},{label:__("Get data"),fieldname:"get_data",fieldtype:"Button",click:function(){n()}},{fieldtype:"Column Break"},{label:__("Reference Docname"),fieldname:"docname",fieldtype:"Data",options:"doctype",default:l.docname},{fieldtype:"Section Break",label:__("Information")},{label:__("Item Code"),fieldname:"item_code",fieldtype:"Data"},{label:__("Item Name"),fieldname:"item_name",fieldtype:"Data"},{label:__("Delivery Date"),fieldname:"delivery_date",fieldtype:"Date"},{fieldtype:"Column Break"},{label:__("Customer"),fieldname:"customer",fieldtype:"Data"},{label:__("Batch"),fieldname:"batch",fieldtype:"Data"},{fieldtype:"Section Break",label:__("Labels")},{fieldname:"labels",fieldtype:"Table",cannot_add_rows:!1,in_place_edit:!0,data:l.labels,get_data:function(){return l.labels},fields:[{fieldtype:"Int",fieldname:"item_qty",in_list_view:1,label:__("Item Qty")},{label:__("Label Qty"),fieldname:"label_qty",in_list_view:1,fieldtype:"Int"},{fieldtype:"Data",fieldname:"information",in_list_view:1,label:__("Information")}]}],primary_action_label:"Print",primary_action:function(e){frappe.call({method:"label_printing.api.print_label",args:{values:e},callback:function(e){200===e.message&&frappe.show_alert("Label printing successful",5)}}),i.hide()}});function n(){if((l=i.get_values()).doctype&&l.docname){var a=e(l.doctype,l.docname);if("Work Order"===l.doctype){var t=e("Item",a.production_item);if(frappe.call({method:"label_printing.api.get_associated_stockentry",async:!1,args:{workorder:l.docname},callback:function(e){e.message&&(l.batch=e.message.items[e.message.items.length-1].batch_no)}}),l.item_code=t.item_code,l.item_name=t.item_name,l.delivery_date=a.expected_delivery_date,l.labels[0].item_qty=a.qty,l.labels[0].label_qty=1,t.associated_company){var n=e("Customer",t.associated_company);n.short_name?l.customer=n.short_name:l.customer=t.associated_company}l.total_amount=a.qty,l.labels[0].qty_per_label=a.qty,i.fields_dict.labels.refresh()}else if("Item"===l.doctype){var o=e("Item",a.item_code);if(l.item_code=a.item_code,l.item_name=a.item_name,o.associated_company){var c=e("Customer",a.associated_company);c.short_name?l.customer=c.short_name:l.customer=a.associated_company}}i.set_values(l)}}n(),i.show(),i.fields_dict.doctype.$input.on("change",function(){i.fields_dict.docname.refresh()})}(a)})})}();
//# sourceMappingURL=label_printing.min.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
/home/frappe/frappe-bench/apps/label_printing/node_modules
/Volumes/development/frappe/frappe-bench/apps/label_printing/node_modules

View File

@@ -1,13 +1,32 @@
import frappe
from io import BytesIO
from barcode import EAN13
from barcode.writer import ImageWriter
@frappe.whitelist()
def generateBarcode(string):
rv = BytesIO()
EAN13(str(100000902922), writer=ImageWriter()).write(rv)
print(rv.decode('UTF-8'))
from barcode import Code128
from barcode.writer import ImageWriter
from io import BytesIO
import base64
file_like_object = BytesIO()
writer = ImageWriter()
value = f'{string}'
options = {
"module_width": 0.1,
"module_height": 1,
"quiet_zone": 0,
"write_text": False,
"text_distance": 1,
}
Code128(value, writer=writer).write(
file_like_object, options)
encoded = base64.b64encode(file_like_object.getvalue()).decode("ascii")
return f'<img src="data:image/png;base64,{encoded}" />'
lookup = {
" ": 0,
@@ -133,4 +152,4 @@ def generateBarcodeGlyphs(data):
# append stop
code += chr(206)
return code
return code