288 lines
7.0 KiB
JavaScript
288 lines
7.0 KiB
JavaScript
$(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 (page) {
|
|
setupLabelsDialog(page);
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
function setupLabelsDialog(page) {
|
|
let cur_frm = page.view.cur_frm
|
|
|
|
let fields = {
|
|
labels: [{
|
|
item_qty: 0,
|
|
label_qty: 1
|
|
}]
|
|
};
|
|
|
|
|
|
if (cur_frm !== null) {
|
|
if (cur_frm.doctype === "Work Order" || cur_frm.doctype === "Item") {
|
|
if (cur_frm.docname) {
|
|
fields.doctype = cur_frm.doctype
|
|
fields.docname = cur_frm.docname
|
|
}
|
|
}
|
|
}
|
|
|
|
let d = new frappe.ui.Dialog({
|
|
title: __("Print Labels"),
|
|
fields: [{
|
|
label: __("Reference Doctype"),
|
|
options: ['Work Order', 'Item', 'Label', 'Stock Entry'],
|
|
fieldname: 'doctype',
|
|
fieldtype: 'Select',
|
|
default: cur_frm.doc.doctype,
|
|
onchange() {
|
|
d.set_df_property('docname', 'options', d.fields_dict.doctype.value);
|
|
}
|
|
},
|
|
{
|
|
label: __("Get data"),
|
|
fieldname: 'get_data',
|
|
fieldtype: 'Button',
|
|
click: () => {
|
|
handleDataFetch()
|
|
}
|
|
},
|
|
{
|
|
fieldtype: 'Column Break'
|
|
},
|
|
{
|
|
label: __("Reference Docname"),
|
|
fieldname: 'docname',
|
|
fieldtype: 'Link',
|
|
options: cur_frm.doc.doctype,
|
|
default: cur_frm.doc.name
|
|
},
|
|
{
|
|
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: __('Printer')
|
|
},
|
|
{
|
|
label: __("Printer Select"),
|
|
options: ['Labeldrucker Werk 1 (Ind. 6)', 'Labeldrucker Werk 2 (Bre. 19)'],
|
|
fieldname: 'printer_select',
|
|
fieldtype: 'Select',
|
|
default: 'Labeldrucker Werk 2 (Bre. 19)'
|
|
},
|
|
{
|
|
fieldtype: 'Section Break',
|
|
label: __('Labels')
|
|
},
|
|
{
|
|
label: __("Add Warehouse Label"),
|
|
fieldname: 'add_warehouse_label',
|
|
fieldtype: 'Button',
|
|
click: () => {
|
|
addWarehouseLabel()
|
|
}
|
|
},
|
|
{
|
|
fieldname: "labels",
|
|
fieldtype: "Table",
|
|
cannot_add_rows: false,
|
|
in_place_edit: true,
|
|
data: fields.labels,
|
|
get_data: () => {
|
|
return fields.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')
|
|
},
|
|
{
|
|
label: __("Is Warehouse Labael"),
|
|
fieldname: 'is_warehouse_label',
|
|
in_list_view: 1,
|
|
fieldtype: 'Check'
|
|
},
|
|
]
|
|
},
|
|
],
|
|
primary_action_label: 'Print',
|
|
primary_action(values) {
|
|
frappe.call({
|
|
method: "label_printing.api.print_label",
|
|
args: {
|
|
values: values
|
|
},
|
|
callback: function (r) {
|
|
if (r.message === 200) {
|
|
frappe.show_alert("Label printing successful", 5);
|
|
}
|
|
},
|
|
});
|
|
|
|
d.hide();
|
|
|
|
}
|
|
});
|
|
handleDataFetch();
|
|
d.show();
|
|
|
|
|
|
// handle dpctype change
|
|
d.fields_dict.doctype.$input.on('change', function () {
|
|
d.fields_dict.docname.refresh();
|
|
});
|
|
|
|
function handleDataFetch() {
|
|
fields = d.get_values()
|
|
if (fields.doctype && fields.docname) {
|
|
let doc = get_doc(fields.doctype, fields.docname)
|
|
if (fields.doctype === "Work Order") {
|
|
let item = get_doc("Item", doc.production_item)
|
|
let se = 1
|
|
frappe.call({
|
|
method: "label_printing.api.get_associated_stockentry",
|
|
async: false,
|
|
args: { workorder: fields.docname },
|
|
callback(r) {
|
|
if (r.message) {
|
|
fields.batch = r.message.items[r.message.items.length - 1].batch_no
|
|
}
|
|
}
|
|
})
|
|
fields.item_code = item.item_code
|
|
fields.item_name = item.item_name
|
|
fields.delivery_date = doc.expected_delivery_date
|
|
fields.labels[0].item_qty = doc.qty
|
|
fields.labels[0].label_qty = 1
|
|
|
|
if (item.associated_company) {
|
|
let customer = get_doc("Customer", item.associated_company)
|
|
if (customer.short_name) {
|
|
fields.customer = customer.short_name
|
|
} else {
|
|
fields.customer = item.associated_company
|
|
}
|
|
}
|
|
|
|
fields.total_amount = doc.qty
|
|
d.fields_dict.labels.refresh();
|
|
|
|
} else if (fields.doctype === "Item") {
|
|
let item = get_doc("Item", doc.item_code)
|
|
|
|
fields.item_code = doc.item_code
|
|
fields.item_name = doc.item_name
|
|
|
|
if (item.associated_company) {
|
|
let customer = get_doc("Customer", doc.associated_company)
|
|
if (customer.short_name) {
|
|
fields.customer = customer.short_name
|
|
} else {
|
|
fields.customer = doc.associated_company
|
|
}
|
|
}
|
|
} else if (fields.doctype === "Stock Entry") {
|
|
let item = get_doc("Item", doc.items.slice(-1)[0].item_code)
|
|
let workorder = get_doc("Work Order", doc.work_order)
|
|
|
|
fields.item_code = item.item_code
|
|
fields.item_name = item.item_name
|
|
fields.delivery_date = workorder.expected_delivery_date
|
|
fields.labels[0].item_qty = workorder.qty
|
|
fields.labels[0].label_qty = 1
|
|
fields.batch = doc.items.slice(-1)[0].batch_no
|
|
|
|
if (item.associated_company) {
|
|
let customer = get_doc("Customer", item.associated_company)
|
|
if (customer.short_name) {
|
|
fields.customer = customer.short_name
|
|
} else {
|
|
fields.customer = item.associated_company
|
|
}
|
|
}
|
|
|
|
fields.total_amount = doc.qty
|
|
d.fields_dict.labels.refresh();
|
|
|
|
}
|
|
d.set_values(fields)
|
|
}
|
|
}
|
|
|
|
function addWarehouseLabel() {
|
|
fields = d.get_values()
|
|
let newRow = {
|
|
item_qty: 0,
|
|
label_qty: 1,
|
|
is_warehouse_label: true,
|
|
}
|
|
let tempValues = d.get_values()
|
|
tempValues.labels.push({ item_qty: 0, label_qty: 0, is_warehouse_label: true })
|
|
console.log(tempValues)
|
|
d.fields_dict.labels.refresh()
|
|
}
|
|
|
|
}
|
|
|
|
function get_doc(doctype, docname) {
|
|
let res;
|
|
frappe.call({
|
|
method: "frappe.client.get",
|
|
async: false,
|
|
args: {
|
|
doctype: doctype,
|
|
name: docname,
|
|
},
|
|
callback(r) {
|
|
if (r.message) {
|
|
res = r.message
|
|
}
|
|
}
|
|
});
|
|
return res;
|
|
}
|