From 0a8a4872307ba2f76eb97192f1066b2ad4cf9e6a Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 10 Apr 2012 16:50:23 +0530 Subject: [PATCH 1/3] Update erpnext/stock/doctype/item/item.js --- erpnext/stock/doctype/item/item.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js index 59235ab032..f60a5f0e23 100644 --- a/erpnext/stock/doctype/item/item.js +++ b/erpnext/stock/doctype/item/item.js @@ -41,13 +41,13 @@ cur_frm.fields_dict['default_bom'].get_query = function(doc) { // Expense Account // --------------------------------- cur_frm.fields_dict['purchase_account'].get_query = function(doc){ - return 'SELECT DISTINCT `tabAccount`.`name` FROM `tabAccount` WHERE `tabAccount`.`debit_or_credit`="Debit" AND `tabAccount`.`group_or_ledger`="Ledger" AND `tabAccount`.`docstatus`!=2 AND `tabAccount`.`is_pl_account` = "Yes" AND `tabAccount`.%(key)s LIKE "%s" ORDER BY `tabAccount`.`name` LIMIT 50' + return 'SELECT DISTINCT `tabAccount`.`name` FROM `tabAccount` WHERE `tabAccount`.`debit_or_credit`="Debit" AND `tabAccount`.`group_or_ledger`="Ledger" AND `tabAccount`.`docstatus`!=2 AND `tabAccount`.%(key)s LIKE "%s" ORDER BY `tabAccount`.`name` LIMIT 50' } // Income Account // -------------------------------- cur_frm.fields_dict['default_income_account'].get_query = function(doc) { - return 'SELECT DISTINCT `tabAccount`.`name` FROM `tabAccount` WHERE `tabAccount`.`debit_or_credit`="Credit" AND `tabAccount`.`group_or_ledger`="Ledger" AND `tabAccount`.`is_pl_account` = "Yes" AND `tabAccount`.`docstatus`!=2 AND `tabAccount`.`account_type` ="Income Account" AND `tabAccount`.%(key)s LIKE "%s" ORDER BY `tabAccount`.`name` LIMIT 50' + return 'SELECT DISTINCT `tabAccount`.`name` FROM `tabAccount` WHERE `tabAccount`.`debit_or_credit`="Credit" AND `tabAccount`.`group_or_ledger`="Ledger" AND `tabAccount`.`docstatus`!=2 AND `tabAccount`.`account_type` ="Income Account" AND `tabAccount`.%(key)s LIKE "%s" ORDER BY `tabAccount`.`name` LIMIT 50' } From af094b9daf37b3fe43aae8ba78941a98b35a8541 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 10 Apr 2012 18:07:36 +0530 Subject: [PATCH 2/3] ledger balance export report in new format --- .../ledger_balance_export.py | 122 ++++++++++++++---- 1 file changed, 94 insertions(+), 28 deletions(-) diff --git a/erpnext/accounts/doctype/ledger_balance_export/ledger_balance_export.py b/erpnext/accounts/doctype/ledger_balance_export/ledger_balance_export.py index b790d066d4..88a31f2226 100755 --- a/erpnext/accounts/doctype/ledger_balance_export/ledger_balance_export.py +++ b/erpnext/accounts/doctype/ledger_balance_export/ledger_balance_export.py @@ -35,45 +35,111 @@ class DocType: yr = sql("select name from `tabFiscal Year` where %s between year_start_date and date_sub(date_add(year_start_date,interval 1 year), interval 1 day)",dt) return yr and yr[0][0] or '' - # Get gl entries for the period and account - def get_gl_entries(self, lft, rgt): - gle = sql("select t1.posting_date, t1.voucher_type, t1.voucher_no, t1.debit, t1.credit, t1.remarks from `tabGL Entry` t1, `tabAccount` t2 WHERE t1.posting_date >= %s AND t1.posting_date <= %s and ifnull(t1.is_opening, 'No') = 'No' AND t1.account = t2.name AND t2.lft >= %s AND t2.rgt <= %s and ifnull(t1.is_cancelled, 'No') = 'No'", (self.doc.from_date, self.doc.to_date, lft, rgt), as_dict=1) + + def validate_date(self): + """check for from date and to date within same year""" + if not sql("select name from `tabFiscal Year` where %s between year_start_date and date_sub(date_add(year_start_date,interval 1 year), interval 1 day) and %s between year_start_date and date_sub(date_add(year_start_date,interval 1 year), interval 1 day)",(self.doc.from_date, self.doc.to_date)): + msgprint("From Date and To Date must be within same year") + raise Exception + + if not self.doc.from_date or not self.doc.to_date: + msgprint("From Date and To Date is mandatory") + raise Exception + + + def add_header(self): + title = 'Ledger Balances Between ' + getdate(self.doc.from_date).strftime('%d-%m-%Y') + ' and ' + getdate(self.doc.to_date).strftime('%d-%m-%Y') + return [[title], ['Account', 'Opening(Dr)', 'Opening (Cr)', 'Debit', 'Credit', 'Closing(Dr)', 'Closing(Cr)'], ['', '', '', '', '', '', '', 'Posting Date', 'Voucher Type', 'Voucher No', 'Debit', 'Credit', 'Remarks']] + + + + def get_account_subtree(self, acc): + return sql(""" + SELECT + CONCAT(REPEAT(' ', COUNT(parent.name) - (sub_tree.depth + 1)), node.name) as account, + node.lft AS lft, node.rgt AS rgt, + node.debit_or_credit as dr_or_cr, node.group_or_ledger as group_or_ledger, node.is_pl_account as is_pl_account + FROM tabAccount AS node, + tabAccount AS parent, + tabAccount AS sub_parent, + ( + SELECT node.name, (COUNT(parent.name) - 1) AS depth + FROM tabAccount AS node, tabAccount AS parent + WHERE node.lft BETWEEN parent.lft AND parent.rgt + AND node.name = %s + GROUP BY node.name + ORDER BY node.lft + )AS sub_tree + WHERE node.lft BETWEEN parent.lft AND parent.rgt + AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt + AND sub_parent.name = sub_tree.name + GROUP BY node.name + ORDER BY node.lft""", acc, as_dict = 1) + + + + def show_acc_summary(self, glc, acc_det): + from_date_year = self.get_year(add_days(self.doc.from_date, -1)) + to_date_year = self.get_year(self.doc.to_date) + acc = acc_det['account'].strip() + + if from_date_year == to_date_year: + debit_on_fromdate, credit_on_fromdate, opening = glc.get_as_on_balance(acc, from_date_year, add_days(self.doc.from_date, -1), acc_det['dr_or_cr'], acc_det['lft'], acc_det['rgt']) # opening = closing of prev_date + elif acc_det['is_pl_account'] == 'No': # if there is no previous year in system and not pl account + opening = sql("select opening from `tabAccount Balance` where account = %s and period = %s", (acc, to_date_year)) + debit_on_fromdate, credit_on_fromdate, opening = 0, 0, flt(opening[0][0]) + else: # if pl account and there is no previous year in system + debit_on_fromdate, credit_on_fromdate, opening = 0,0,0 + + # closing balance + #-------------------------------- + debit_on_todate, credit_on_todate, closing = glc.get_as_on_balance(acc, to_date_year, self.doc.to_date, acc_det['dr_or_cr'], acc_det['lft'], acc_det['rgt']) + + # transaction betn the period + #---------------------------------------- + debit = flt(debit_on_todate) - flt(debit_on_fromdate) + credit = flt(credit_on_todate) - flt(credit_on_fromdate) + + # Debit / Credit + if acc_det['dr_or_cr'] == 'Credit': + opening, closing = -1*opening, -1*closing + + return [acc_det['account'], flt(opening>0 and opening or 0), flt(opening<0 and -opening or 0), + debit, credit, flt(closing>0.01 and closing or 0), flt(closing<-0.01 and -closing or 0)] + + + def show_gl_entries(self, acc): + """Get gl entries for the period and account""" + gle = sql("select posting_date, voucher_type, voucher_no, debit, credit, remarks from `tabGL Entry` WHERE account = %s and posting_date >= %s AND posting_date <= %s and ifnull(is_opening, 'No') = 'No' and ifnull(is_cancelled, 'No') = 'No'", (acc, self.doc.from_date, self.doc.to_date), as_dict=1) entries, dr, cr = [], 0, 0 for d in gle: - dr, cr = dr + flt(d['debit']), cr + flt(d['credit']) - entries.append(['', d['posting_date'], d['voucher_type'], d['voucher_no'], d['debit'], d['credit'], d['remarks']]) - return entries, dr, cr + entries.append(['', '', '', '', '', '', '', d['posting_date'], d['voucher_type'], d['voucher_no'], d['debit'], d['credit'], d['remarks']]) + return entries + + + # Get Report Data def get_report_data(self): - from_date_year = self.get_year(add_days(self.doc.from_date, -1)) - to_date_year = self.get_year(self.doc.to_date) + self.validate_date() + + res = [] + res += self.add_header() - # result initiatlization - header = 'Ledger Balances Between ' + getdate(self.doc.from_date).strftime('%d-%m-%Y') + ' and ' + getdate(self.doc.to_date).strftime('%d-%m-%Y') - res = [[header], ['Account', 'Posting Date', 'Voucher Type', 'Voucher No', 'Debit', 'Credit', 'Remarks']] glc = get_obj('GL Control') for d in getlist(self.doclist, 'ledger_details'): # Fetch acc details - acc_det = sql("select debit_or_credit, is_pl_account, lft, rgt from tabAccount where name = '%s'" % d.account, as_dict=1)[0] + sub_tree = self.get_account_subtree(d.account) - # Opening - opening = glc.get_as_on_balance(d.account, from_date_year, add_days(self.doc.from_date, -1), acc_det['debit_or_credit'], acc_det['lft'], acc_det['rgt'])[2] - if acc_det['debit_or_credit'] == 'Credit': - opening = -1*opening + for acc_det in sub_tree: + acc_summary = self.show_acc_summary(glc, acc_det) + res.append(acc_summary) + + # Show gl entries if account is ledger + if acc_det['group_or_ledger'] == 'Ledger' and (acc_summary[3] or acc_summary[4]): + gle = self.show_gl_entries(acc_det['account'].strip()) + res += gle - # GL Entries - gle, debit, credit = self.get_gl_entries(acc_det['lft'], acc_det['rgt']) - - # Closing - closing = opening + debit - credit - - # Append to result - res.append([d.account]) - res += gle - res.append(['', '', '', 'Total Debit/Credit', debit, credit]) - res.append(['', '', '', 'Opening Balance', opening]) - res.append(['', '', '', 'Closing Balance', closing]) return res From b09b3bc253858d28db0d100c85311c4832cc1118 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 13 Apr 2012 14:13:02 +0530 Subject: [PATCH 3/3] all fields visible if any other custom purpose in stock entry --- .../stock/doctype/stock_entry/stock_entry.js | 6 +- .../stock/doctype/stock_entry/stock_entry.py | 11 +- .../stock/doctype/stock_entry/stock_entry.txt | 140 +++++++++++------- 3 files changed, 96 insertions(+), 61 deletions(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js index 07e83edc14..55e7b41236 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.js +++ b/erpnext/stock/doctype/stock_entry/stock_entry.js @@ -23,7 +23,10 @@ cur_frm.cscript.onload = function(doc, cdt, cdn) { var cfn_set_fields = function(doc, cdt, cdn) { lst = ['supplier','supplier_name','supplier_address','customer','customer_name','customer_address']; - hide_field(lst); + if (in_list(['Material Issue', 'Material Transfer', 'Material Receipt', 'Production Order', 'Subcontracting', 'Other'], doc.purpose)) { + hide_field(lst); + } else unhide_field(lst); + if (doc.purpose == 'Production Order' || doc.purpose == 'Other'){ unhide_field('Get Items'); @@ -52,6 +55,7 @@ var cfn_set_fields = function(doc, cdt, cdn) { if(doc.purpose == 'Purchase Return'){ doc.customer=doc.customer_name = doc.customer_address=doc.delivery_note_no=doc.sales_invoice_no=''; unhide_field(['supplier','supplier_name','supplier_address','purchase_receipt_no']); + } else if(doc.purpose == 'Sales Return'){ doc.supplier=doc.supplier_name = doc.supplier_address=doc.purchase_receipt_no=''; diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 96642d0dc2..a6fbba02b0 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -31,8 +31,9 @@ in_transaction = webnotes.conn.in_transaction convert_to_lists = webnotes.conn.convert_to_lists # ----------------------------------------------------------------------------------------- +from utilities.transaction_base import TransactionBase -class DocType: +class DocType(TransactionBase): def __init__(self, doc, doclist=[]): self.doc = doc self.doclist = doclist @@ -510,10 +511,11 @@ class DocType: def get_cust_addr(self): - res = sql("select customer_name,address from `tabCustomer` where name = '%s'"%self.doc.customer) + res = sql("select customer_name from `tabCustomer` where name = '%s'"%self.doc.customer) + addr = self.get_address_text(customer = self.doc.customer) ret = { 'customer_name' : res and res[0][0] or '', - 'customer_address' : res and res[0][1] or ''} + 'customer_address' : addr and addr[0] or ''} return ret @@ -530,7 +532,8 @@ class DocType: def get_supp_addr(self): res = sql("select supplier_name,address from `tabSupplier` where name = '%s'"%self.doc.supplier) + addr = self.get_address_text(supplier = self.doc.supplier) ret = { 'supplier_name' : res and res[0][0] or '', - 'supplier_address' : res and res[0][1] or ''} + 'supplier_address' : addr and addr[0] or ''} return ret diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.txt b/erpnext/stock/doctype/stock_entry/stock_entry.txt index 9792fc91c5..54053b74fa 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.txt +++ b/erpnext/stock/doctype/stock_entry/stock_entry.txt @@ -3,16 +3,16 @@ # These values are common in all dictionaries { - 'creation': '2010-08-08 17:09:25', + 'creation': '2009-05-12 16:46:45', 'docstatus': 0, - 'modified': '2012-03-21 11:00:48', + 'modified': '2012-04-13 14:12:02', 'modified_by': u'Administrator', 'owner': u'Administrator' }, # These values are common for all DocType { - '_last_update': u'1332233897', + '_last_update': u'1334303911', 'allow_attach': 0, 'allow_copy': 0, 'allow_email': 0, @@ -41,7 +41,7 @@ 'subject': u'%(remarks)s', 'tag_fields': u'purpose', 'use_template': 0, - 'version': 259 + 'version': 263 }, # These values are common for all DocField @@ -71,26 +71,26 @@ # DocPerm { - 'amend': 0, - 'cancel': 0, - 'create': 0, + 'amend': 1, + 'cancel': 1, + 'create': 1, 'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Material Manager', - 'submit': 0, - 'write': 0 - }, - - # DocPerm - { - 'amend': 0, - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 1, + 'permlevel': 0, 'role': u'Material User', - 'submit': 0, - 'write': 0 + 'submit': 1, + 'write': 1 + }, + + # DocPerm + { + 'amend': 1, + 'cancel': 1, + 'create': 1, + 'doctype': u'DocPerm', + 'permlevel': 0, + 'role': u'Material Manager', + 'submit': 1, + 'write': 1 }, # DocPerm @@ -105,30 +105,6 @@ 'write': 1 }, - # DocPerm - { - 'amend': 0, - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Production User', - 'submit': 0, - 'write': 0 - }, - - # DocPerm - { - 'amend': 0, - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 2, - 'role': u'Production User', - 'submit': 0, - 'write': 1 - }, - # DocPerm { 'amend': 1, @@ -148,20 +124,25 @@ 'create': 0, 'doctype': u'DocPerm', 'permlevel': 1, - 'role': u'Production Manager', + 'role': u'All', 'submit': 0, 'write': 0 }, # DocPerm { - 'amend': 0, - 'cancel': 0, 'create': 0, + 'doctype': u'DocPerm', + 'permlevel': 2, + 'role': u'Production User', + 'write': 1 + }, + + # DocPerm + { 'doctype': u'DocPerm', 'permlevel': 2, 'role': u'Production Manager', - 'submit': 0, 'write': 1 }, @@ -191,12 +172,13 @@ 'doctype': u'DocField', 'fieldname': u'naming_series', 'fieldtype': u'Select', + 'hidden': 0, 'in_filter': 0, 'label': u'Series', 'no_copy': 1, 'oldfieldname': u'naming_series', 'oldfieldtype': u'Select', - 'options': u'STE', + 'options': u'\nSTE', 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, @@ -211,6 +193,7 @@ 'doctype': u'DocField', 'fieldname': u'amendment_date', 'fieldtype': u'Date', + 'hidden': 0, 'in_filter': 0, 'label': u'Amendment Date', 'no_copy': 1, @@ -219,6 +202,7 @@ 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 0 }, @@ -229,6 +213,7 @@ 'doctype': u'DocField', 'fieldname': u'purpose', 'fieldtype': u'Select', + 'hidden': 0, 'in_filter': 1, 'label': u'Purpose', 'no_copy': 0, @@ -236,6 +221,7 @@ 'oldfieldtype': u'Select', 'options': u'Material Issue\nMaterial Receipt\nMaterial Transfer\nSales Return\nPurchase Return\nSubcontracting\nProduction Order\nOther', 'permlevel': 0, + 'print_hide': 0, 'report_hide': 0, 'reqd': 1, 'search_index': 0, @@ -259,6 +245,7 @@ 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 1, 'trigger': u'Client' }, @@ -280,6 +267,7 @@ 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 1, 'trigger': u'Client' }, @@ -303,7 +291,7 @@ 'doctype': u'DocField', 'fieldname': u'supplier', 'fieldtype': u'Link', - 'hidden': 1, + 'hidden': 0, 'in_filter': 0, 'label': u'Supplier', 'no_copy': 0, @@ -313,6 +301,7 @@ 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 0, 'trigger': u'Client' }, @@ -323,13 +312,16 @@ 'doctype': u'DocField', 'fieldname': u'supplier_name', 'fieldtype': u'Data', + 'hidden': 0, 'in_filter': 0, 'label': u'Supplier Name', 'no_copy': 0, 'oldfieldname': u'supplier_name', 'oldfieldtype': u'Data', 'permlevel': 1, + 'print_hide': 0, 'report_hide': 0, + 'reqd': 0, 'search_index': 0 }, @@ -340,14 +332,16 @@ 'doctype': u'DocField', 'fieldname': u'supplier_address', 'fieldtype': u'Small Text', - 'hidden': 1, + 'hidden': 0, 'in_filter': 0, 'label': u'Supplier Address', 'no_copy': 0, 'oldfieldname': u'supplier_address', 'oldfieldtype': u'Small Text', 'permlevel': 0, + 'print_hide': 0, 'report_hide': 0, + 'reqd': 0, 'search_index': 0, 'trigger': u'Client' }, @@ -359,7 +353,7 @@ 'doctype': u'DocField', 'fieldname': u'customer', 'fieldtype': u'Link', - 'hidden': 1, + 'hidden': 0, 'in_filter': 0, 'label': u'Customer', 'no_copy': 0, @@ -369,6 +363,7 @@ 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 0, 'trigger': u'Client' }, @@ -379,14 +374,16 @@ 'doctype': u'DocField', 'fieldname': u'customer_name', 'fieldtype': u'Data', - 'hidden': 1, + 'hidden': 0, 'in_filter': 0, 'label': u'Customer Name', 'no_copy': 0, 'oldfieldname': u'customer_name', 'oldfieldtype': u'Data', 'permlevel': 1, + 'print_hide': 0, 'report_hide': 0, + 'reqd': 0, 'search_index': 0 }, @@ -396,14 +393,16 @@ 'doctype': u'DocField', 'fieldname': u'customer_address', 'fieldtype': u'Small Text', - 'hidden': 1, + 'hidden': 0, 'in_filter': 0, 'label': u'Customer Address', 'no_copy': 0, 'oldfieldname': u'customer_address', 'oldfieldtype': u'Small Text', 'permlevel': 0, + 'print_hide': 0, 'report_hide': 0, + 'reqd': 0, 'search_index': 0 }, @@ -424,6 +423,7 @@ 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 0, 'trigger': u'Client' }, @@ -445,6 +445,7 @@ 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 1, 'trigger': u'Client' }, @@ -479,6 +480,7 @@ 'doctype': u'DocField', 'fieldname': u'fg_completed_qty', 'fieldtype': u'Currency', + 'hidden': 0, 'in_filter': 0, 'label': u'FG Completed Qty', 'no_copy': 0, @@ -487,6 +489,7 @@ 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 0, 'trigger': u'Client' }, @@ -511,6 +514,7 @@ 'doctype': u'DocField', 'fieldname': u'from_warehouse', 'fieldtype': u'Link', + 'hidden': 0, 'in_filter': 0, 'label': u'Source Warehouse', 'no_copy': 0, @@ -533,6 +537,7 @@ 'doctype': u'DocField', 'fieldname': u'to_warehouse', 'fieldtype': u'Link', + 'hidden': 0, 'in_filter': 0, 'label': u'Target Warehouse', 'no_copy': 0, @@ -576,6 +581,7 @@ 'doctype': u'DocField', 'fieldname': u'transfer_date', 'fieldtype': u'Date', + 'hidden': 0, 'in_filter': 1, 'label': u'Transfer Date', 'no_copy': 1, @@ -595,6 +601,7 @@ 'doctype': u'DocField', 'fieldname': u'posting_date', 'fieldtype': u'Date', + 'hidden': 0, 'in_filter': 1, 'label': u'Posting Date', 'no_copy': 1, @@ -613,6 +620,7 @@ 'doctype': u'DocField', 'fieldname': u'posting_time', 'fieldtype': u'Time', + 'hidden': 0, 'in_filter': 0, 'label': u'Posting Time', 'no_copy': 1, @@ -631,6 +639,7 @@ 'doctype': u'DocField', 'fieldname': u'amended_from', 'fieldtype': u'Link', + 'hidden': 0, 'in_filter': 0, 'label': u'Amended From', 'no_copy': 1, @@ -640,6 +649,7 @@ 'permlevel': 1, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 0 }, @@ -649,6 +659,7 @@ 'doctype': u'DocField', 'fieldname': u'transporter', 'fieldtype': u'Data', + 'hidden': 0, 'in_filter': 0, 'label': u'Transporter', 'no_copy': 0, @@ -657,6 +668,7 @@ 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 0 }, @@ -666,6 +678,7 @@ 'doctype': u'DocField', 'fieldname': u'is_excisable_goods', 'fieldtype': u'Select', + 'hidden': 0, 'in_filter': 0, 'label': u'Is Excisable Goods', 'no_copy': 0, @@ -675,6 +688,7 @@ 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 0 }, @@ -684,6 +698,7 @@ 'doctype': u'DocField', 'fieldname': u'excisable_goods', 'fieldtype': u'Select', + 'hidden': 0, 'in_filter': 0, 'label': u'Excisable Goods', 'no_copy': 0, @@ -693,6 +708,7 @@ 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 0 }, @@ -712,6 +728,7 @@ 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 0 }, @@ -721,6 +738,7 @@ 'doctype': u'DocField', 'fieldname': u'remarks', 'fieldtype': u'Text', + 'hidden': 0, 'in_filter': 0, 'label': u'Remarks', 'no_copy': 1, @@ -795,6 +813,7 @@ 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 0 }, @@ -814,6 +833,7 @@ 'doctype': u'DocField', 'fieldname': u'mtn_details', 'fieldtype': u'Table', + 'hidden': 0, 'in_filter': 0, 'label': u'MTN Details', 'no_copy': 0, @@ -823,6 +843,7 @@ 'permlevel': 0, 'print_hide': 0, 'report_hide': 0, + 'reqd': 0, 'search_index': 0 }, @@ -832,6 +853,7 @@ 'doctype': u'DocField', 'fieldname': u'total_amount', 'fieldtype': u'Currency', + 'hidden': 0, 'in_filter': 0, 'label': u'Total Amount', 'no_copy': 0, @@ -840,6 +862,7 @@ 'permlevel': 1, 'print_hide': 1, 'report_hide': 0, + 'reqd': 0, 'search_index': 0 }, @@ -858,6 +881,7 @@ 'doctype': u'DocField', 'fieldname': u'company', 'fieldtype': u'Link', + 'hidden': 0, 'in_filter': 1, 'label': u'Company', 'no_copy': 0, @@ -877,6 +901,7 @@ 'doctype': u'DocField', 'fieldname': u'fiscal_year', 'fieldtype': u'Select', + 'hidden': 0, 'in_filter': 0, 'label': u'Fiscal Year', 'no_copy': 0, @@ -896,6 +921,7 @@ 'doctype': u'DocField', 'fieldname': u'select_print_heading', 'fieldtype': u'Link', + 'hidden': 0, 'in_filter': 0, 'label': u'Select Print Heading', 'no_copy': 0, @@ -903,7 +929,9 @@ 'oldfieldtype': u'Link', 'options': u'Print Heading', 'permlevel': 0, + 'print_hide': 0, 'report_hide': 0, + 'reqd': 0, 'search_index': 0 } ] \ No newline at end of file