Printing done
This commit is contained in:
73
label_printing/api.py
Normal file
73
label_printing/api.py
Normal file
@@ -0,0 +1,73 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import frappe, os
|
||||
import json
|
||||
from frappe import _
|
||||
|
||||
|
||||
from frappe.utils.pdf import get_pdf,cleanup
|
||||
from frappe.core.doctype.access_log.access_log import make_access_log
|
||||
from PyPDF2 import PdfFileWriter
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def print_label(values):
|
||||
values = json.loads(values)
|
||||
printer_setting = frappe.db.get_single_value('Label Printer Settings', 'label_printer'),
|
||||
|
||||
|
||||
for label in values["labels"]:
|
||||
doc = frappe.new_doc('Label')
|
||||
doc.item_code = values["item_code"]
|
||||
doc.item_name = values["item_name"]
|
||||
doc.delivery_date = values["delivery_date"]
|
||||
doc.customer = values["customer"]
|
||||
doc.batch = values["batch"]
|
||||
doc.qty = label["item_qty"]
|
||||
newdoc = doc.insert()
|
||||
|
||||
print_label_by_server("Label", newdoc.name, label["label_qty"], printer_setting[0],"Label", doc=None, no_letterhead=0, file_path=None)
|
||||
|
||||
return 200
|
||||
|
||||
|
||||
def print_label_by_server(doctype, name, qty, printer_setting, print_format=None, doc=None, no_letterhead=0, file_path=None):
|
||||
pdf_options = {
|
||||
'page-height': frappe.db.get_single_value('Label Printer Settings', 'label_height'),
|
||||
'page-width': frappe.db.get_single_value('Label Printer Settings', 'label_width'),
|
||||
}
|
||||
print_settings = frappe.get_doc("Network Printer Settings", printer_setting)
|
||||
try:
|
||||
import cups
|
||||
except ImportError:
|
||||
frappe.throw(_("You need to install pycups to use this feature!"))
|
||||
|
||||
try:
|
||||
cups.setServer(print_settings.server_ip)
|
||||
cups.setPort(print_settings.port)
|
||||
conn = cups.Connection()
|
||||
output = PdfFileWriter()
|
||||
output = frappe.get_print(doctype, name, print_format, doc=doc, no_letterhead=no_letterhead, as_pdf = True, output = output, pdf_options=pdf_options)
|
||||
print("Here")
|
||||
print(output)
|
||||
if not file_path:
|
||||
file_path = os.path.join("/", "tmp", "frappe-pdf-{0}.pdf".format(frappe.generate_hash()))
|
||||
output.write(open(file_path,"wb"))
|
||||
for _ in range(qty):
|
||||
conn.printFile(print_settings.printer_name,file_path , name, {})
|
||||
except IOError as e:
|
||||
if ("ContentNotFoundError" in e.message
|
||||
or "ContentOperationNotPermittedError" in e.message
|
||||
or "UnknownContentError" in e.message
|
||||
or "RemoteHostClosedError" in e.message):
|
||||
frappe.throw(_("PDF generation failed"))
|
||||
except cups.IPPError:
|
||||
frappe.throw(_("Printing failed"))
|
||||
finally:
|
||||
return
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_associated_stockentry(workorder):
|
||||
return frappe.get_last_doc('Stock Entry', filters = {"work_order": "PRO-01530"})
|
||||
|
||||
Reference in New Issue
Block a user