202 lines
6.2 KiB
Python
202 lines
6.2 KiB
Python
#!/usr/bin/python
|
|
|
|
# This script is for cleaning up of all data from system including
|
|
# all transactions and masters (excludes default masters).
|
|
# Basically after running this file, system will reset to it's
|
|
# initial state.
|
|
# This script can be executed from lib/wnf.py using
|
|
# lib/wnf.py --cleanup-data
|
|
|
|
import sys
|
|
sys.path.append("lib/py")
|
|
sys.path.append(".")
|
|
sys.path.append("erpnext")
|
|
|
|
import webnotes
|
|
|
|
#--------------------------------
|
|
|
|
def delete_transactions():
|
|
print "Deleting transactions..."
|
|
|
|
trans = ['Timesheet','Task','Support Ticket','Stock Reconciliation', 'Stock Ledger Entry', \
|
|
'Stock Entry','Sales Order','Salary Slip','Sales Invoice','Quotation', 'Quality Inspection', \
|
|
'Purchase Receipt','Purchase Order','Production Order', 'POS Setting','Period Closing Voucher', \
|
|
'Purchase Invoice','Maintenance Visit','Maintenance Schedule','Leave Application', \
|
|
'Leave Allocation', 'Lead', 'Journal Voucher', 'Installation Note','Purchase Request', \
|
|
'GL Entry','Expense Claim','Opportunity','Delivery Note','Customer Issue','Bin', \
|
|
'Authorization Rule','Attendance','Account Balance', 'C-Form', 'Form 16A', 'Lease Agreement', \
|
|
'Lease Installment', 'TDS Payment', 'TDS Return Acknowledgement', 'Appraisal', \
|
|
'Installation Note', 'Communication'
|
|
]
|
|
for d in trans:
|
|
for t in webnotes.conn.sql("select options from tabDocField where parent='%s' and fieldtype='Table'" % d):
|
|
webnotes.conn.sql("delete from `tab%s`" % (t))
|
|
webnotes.conn.sql("delete from `tab%s`" % (d))
|
|
webnotes.conn.sql("COMMIT")
|
|
webnotes.conn.sql("START TRANSACTION")
|
|
print "Deleted " + d
|
|
|
|
|
|
|
|
def delete_masters():
|
|
print "Deleting masters...."
|
|
masters = {
|
|
'Workstation':['Default Workstation'],
|
|
'Warehouse Type':['Default Warehouse Type', 'Fixed Asset', 'Rejected', 'Reserved',
|
|
'Sample', 'Stores', 'WIP Warehouse'],
|
|
'Warehouse':['Default Warehouse'],
|
|
'UOM':['Kg', 'Mtr', 'Box', 'Ltr', 'Nos', 'Ft', 'Pair', 'Set'],
|
|
'Territory':['All Territories', 'Default Territory'],
|
|
'Terms and Conditions':'',
|
|
'Tag':'',
|
|
'Supplier Type':['Default Supplier Type'],
|
|
'Supplier':'',
|
|
'Serial No':'',
|
|
'Sales Person':['All Sales Persons'],
|
|
'Sales Partner':'',
|
|
'Sales BOM':'',
|
|
'Salary Structure':'',
|
|
'Purchase Taxes and Charges Master':'',
|
|
'Project':'',
|
|
'Print Heading':'',
|
|
'Price List':['Default Price List'],
|
|
'Period':'',
|
|
'Sales Taxes and Charges Master':'',
|
|
'Letter Head':'',
|
|
'Leave Type':['Leave Without Pay', 'Privilege Leave', 'Casual Leave', 'PL', 'CL', 'LWP',
|
|
'Compensatory Off', 'Sick Leave'],
|
|
'Landed Cost Master':'',
|
|
'Appraisal Template':'',
|
|
'Item Group':['All Item Groups', 'Default'],
|
|
'Item':'',
|
|
'Holiday List':'',
|
|
'Grade':'',
|
|
'Feed':'',
|
|
'Expense Claim Type':['Travel', 'Medical', 'Calls', 'Food', 'Others'],
|
|
'Event':'',
|
|
'Employment Type':'',
|
|
'Employee':'',
|
|
'Earning Type':['Basic', 'Conveyance', 'House Rent Allowance', 'Dearness Allowance',
|
|
'Medical Allowance', 'Telephone'],
|
|
'Designation':'',
|
|
'Department':'',
|
|
'Deduction Type':['Income Tax', 'Professional Tax', 'Provident Fund', 'Leave Deduction'],
|
|
'Customer Group':['All Customer Groups', 'Default Customer Group'],
|
|
'Customer':'',
|
|
'Cost Center':'',
|
|
'Contact':'',
|
|
'Campaign':'',
|
|
'Budget Distribution':'',
|
|
'Brand':'',
|
|
'Branch':'',
|
|
'Batch':'',
|
|
'Appraisal':'',
|
|
'Account':'',
|
|
'BOM': ''
|
|
}
|
|
for d in masters.keys():
|
|
for t in webnotes.conn.sql("select options from tabDocField where parent='%s' \
|
|
and fieldtype='Table'" % d):
|
|
webnotes.conn.sql("delete from `tab%s`" % (t))
|
|
lst = '"'+'","'.join(masters[d])+ '"'
|
|
webnotes.conn.sql("delete from `tab%s` where name not in (%s)" % (d, lst))
|
|
webnotes.conn.sql("COMMIT")
|
|
webnotes.conn.sql("START TRANSACTION")
|
|
print "Deleted " + d
|
|
|
|
|
|
|
|
def reset_series():
|
|
# Reset series
|
|
webnotes.conn.sql("""update tabSeries set current = 0 where name not in \
|
|
('Ann/', 'BSD', 'DEF', 'DF', 'EV', 'Event Updates/', 'FileData-', \
|
|
'FL', 'FMD/', 'GLM Detail', 'Login Page/', 'MDI', 'MDR', 'MI', 'MIR', \
|
|
'PERM', 'PR', 'SRCH/C/', 'TD', 'TIC/', 'TMD/', 'TW', 'UR', '_FEED', \
|
|
'_SRCH', '_TRIGGER', '__NSO', 'CustomField', 'Letter')
|
|
""")
|
|
print "Series updated"
|
|
|
|
|
|
def delete_main_masters():
|
|
main_masters = ['Fiscal Year','Company', 'DefaultValue']
|
|
for d in main_masters:
|
|
for t in webnotes.conn.sql("select options from tabDocField where parent='%s' and fieldtype='Table'" % d):
|
|
webnotes.conn.sql("delete from `tab%s`" % (t))
|
|
webnotes.conn.sql("delete from `tab%s`" % (d))
|
|
webnotes.conn.sql("COMMIT")
|
|
webnotes.conn.sql("START TRANSACTION")
|
|
print "Deleted " + d
|
|
|
|
|
|
|
|
def reset_global_defaults():
|
|
flds = {
|
|
'default_company': '',
|
|
'default_currency': '',
|
|
'default_currency_format': 'Lacs',
|
|
'default_currency_fraction': '',
|
|
'current_fiscal_year': '',
|
|
'date_format': 'dd-mm-yyyy',
|
|
'sms_sender_name': '',
|
|
'default_item_group': 'Default',
|
|
'default_stock_uom': 'Nos',
|
|
'default_valuation_method': 'FIFO',
|
|
'default_warehouse_type': 'Default Warehouse Type',
|
|
'tolerance': '',
|
|
'acc_frozen_upto': '',
|
|
'bde_auth_role': '',
|
|
'credit_controller': '',
|
|
'default_customer_group': 'Default Customer Group',
|
|
'default_territory': 'Default',
|
|
'default_price_list': 'Standard',
|
|
'default_supplier_type': 'Default Supplier Type'
|
|
}
|
|
|
|
from webnotes.model.code import get_obj
|
|
gd = get_obj('Global Defaults', 'Global Defaults')
|
|
for d in flds:
|
|
gd.doc.fields[d] = flds[d]
|
|
gd.doc.save()
|
|
|
|
webnotes.clear_cache()
|
|
|
|
|
|
def run():
|
|
webnotes.connect()
|
|
|
|
# Confirmation from user
|
|
confirm = ''
|
|
while not confirm:
|
|
confirm = raw_input("Are you sure you want to delete the data from the system (N/Y)?")
|
|
if confirm.lower() != 'y':
|
|
raise Exception
|
|
|
|
cleanup_type = ''
|
|
while cleanup_type not in ['1', '2']:
|
|
cleanup_type = raw_input("""\nWhat type of cleanup you want ot perform?
|
|
1. Only Transactions
|
|
2. Both Masters and Transactions
|
|
|
|
Please enter your choice (1/2):
|
|
""")
|
|
|
|
# delete
|
|
delete_transactions()
|
|
|
|
if cleanup_type == '1':
|
|
print '\n', '*' * 10 + 'NOTE' + '*' * 10, '\n'
|
|
print "To reset series of the transactions go to Setup --> Numbering Series\n"
|
|
else:
|
|
delete_masters()
|
|
reset_series()
|
|
delete_main_masters()
|
|
reset_global_defaults()
|
|
|
|
print "System cleaned up succesfully"
|
|
webnotes.conn.close()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
run()
|