Fixed Qty

This commit is contained in:
Christian Anetzberger
2022-04-04 19:54:30 +02:00
parent 7c77d040da
commit 47b4c5d49b
4 changed files with 39 additions and 24 deletions

View File

@@ -1,20 +1,24 @@
from __future__ import unicode_literals
import frappe, os
import frappe
import os
import json
from frappe import _
from frappe.utils.pdf import get_pdf,cleanup
from frappe.utils.pdf import get_pdf, cleanup
from frappe.core.doctype.access_log.access_log import make_access_log
from PyPDF2 import PdfFileWriter
from frappe.utils.jinja import render_template
@frappe.whitelist()
def print_label(values):
values = json.loads(values)
printer_setting = frappe.db.get_single_value('Label Printer Settings', 'label_printer'),
printer_setting = frappe.db.get_single_value(
'Label Printer Settings', 'label_printer'),
print_format = frappe.db.get_single_value(
'Label Printer Settings', 'label_print_format')
for label in values["labels"]:
doc = frappe.new_doc('Label')
@@ -28,24 +32,27 @@ def print_label(values):
doc.customer = values["customer"]
if "batch" in values:
doc.batch = values["batch"]
if "qty" in label:
if "item_qty" in label:
doc.qty = label["item_qty"]
if "information" in label:
doc.information = label["information"]
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)
# TODO comment in
# print_label_by_server(
# "Label", newdoc.name, label["label_qty"], printer_setting[0], print_format, 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-width': '{0}mm'.format(frappe.db.get_single_value('Label Printer Settings', 'label_width')),
'page-height': '{0}mm'.format(frappe.db.get_single_value('Label Printer Settings', 'label_height')),
'page-width': '{0}mm'.format(frappe.db.get_single_value('Label Printer Settings', 'label_width')),
'page-height': '{0}mm'.format(frappe.db.get_single_value('Label Printer Settings', 'label_height')),
}
print_settings = frappe.get_doc("Network Printer Settings", printer_setting)
print_settings = frappe.get_doc(
"Network Printer Settings", printer_setting)
try:
import cups
except ImportError:
@@ -56,17 +63,19 @@ def print_label_by_server(doctype, name, qty, printer_setting, print_format=None
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)
output = frappe.get_print(doctype, name, print_format, doc=doc,
no_letterhead=no_letterhead, as_pdf=True, output=output, pdf_options=pdf_options)
if not file_path:
file_path = os.path.join("/", "tmp", "frappe-pdf-{0}.pdf".format(frappe.generate_hash()))
output.write(open(file_path,"wb"))
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, {})
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):
or "RemoteHostClosedError" in e.message):
frappe.throw(_("PDF generation failed"))
except cups.IPPError:
frappe.throw(_("Printing failed"))
@@ -76,4 +85,4 @@ def print_label_by_server(doctype, name, qty, printer_setting, print_format=None
@frappe.whitelist()
def get_associated_stockentry(workorder):
return frappe.get_last_doc('Stock Entry', filters = {"work_order": workorder})
return frappe.get_last_doc('Stock Entry', filters={"work_order": workorder})