# Copyright (c) 2017, Frappe and Contributors # License: GNU General Public License v3. See license.txt from __future__ import unicode_literals import frappe def execute(): frappe.reload_doc("stock", "doctype", "item_barcode") if frappe.get_all("Item Barcode", limit=1): return if "barcode" not in frappe.db.get_table_columns("Item"): return items_barcode = frappe.db.sql("select name, barcode from tabItem where barcode is not null", as_dict=True) frappe.reload_doc("stock", "doctype", "item") for item in items_barcode: barcode = item.barcode.strip() if barcode and '<' not in barcode: try: frappe.get_doc({ 'idx': 0, 'doctype': 'Item Barcode', 'barcode': barcode, 'parenttype': 'Item', 'parent': item.name, 'parentfield': 'barcodes' }).insert() except (frappe.DuplicateEntryError, frappe.UniqueValidationError): continue