2013-11-20 12:59:58 +05:30
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
2013-08-05 14:59:54 +05:30
# License: GNU General Public License v3. See license.txt
2013-01-16 17:48:17 +05:30
from __future__ import unicode_literals
2014-02-14 15:47:51 +05:30
import frappe
2013-01-16 17:48:17 +05:30
2013-12-12 19:12:19 +05:30
def after_install ( ) :
2013-01-17 18:22:22 +05:30
import_defaults ( )
import_country_and_currency ( )
2014-02-26 12:35:33 +05:30
frappe . db . set_value ( ' Control Panel ' , None , ' home_page ' , ' setup-wizard ' )
2013-01-17 18:22:22 +05:30
feature_setup ( )
2013-12-12 19:12:19 +05:30
from erpnext . setup . page . setup_wizard . setup_wizard import add_all_roles_to
2013-01-17 18:22:22 +05:30
add_all_roles_to ( " Administrator " )
2014-02-19 20:53:45 +05:30
set_single_defaults ( )
2014-02-26 12:35:33 +05:30
frappe . db . commit ( )
2013-01-17 18:22:22 +05:30
def import_country_and_currency ( ) :
2014-02-14 15:47:51 +05:30
from frappe . country_info import get_all
2013-01-17 18:22:22 +05:30
data = get_all ( )
2013-01-27 17:02:49 +05:30
2013-01-17 18:22:22 +05:30
for name in data :
2014-02-14 15:47:51 +05:30
country = frappe . _dict ( data [ name ] )
frappe . doc ( {
2013-01-17 18:22:22 +05:30
" doctype " : " Country " ,
" country_name " : name ,
" date_format " : country . date_format or " dd-mm-yyyy " ,
" time_zones " : " \n " . join ( country . timezones or [ ] )
} ) . insert ( )
2014-02-26 12:35:33 +05:30
if country . currency and not frappe . db . exists ( " Currency " , country . currency ) :
2014-02-14 15:47:51 +05:30
frappe . doc ( {
2013-01-17 18:22:22 +05:30
" doctype " : " Currency " ,
" currency_name " : country . currency ,
" fraction " : country . currency_fraction ,
" symbol " : country . currency_symbol ,
2013-01-21 10:14:10 +05:30
" fraction_units " : country . currency_fraction_units ,
" number_format " : country . number_format
2013-01-17 18:22:22 +05:30
} ) . insert ( )
def import_defaults ( ) :
2013-01-16 17:48:17 +05:30
records = [
# item group
2013-07-10 18:59:55 +05:30
{ ' doctype ' : ' Item Group ' , ' item_group_name ' : ' All Item Groups ' , ' is_group ' : ' Yes ' , ' parent_item_group ' : ' ' } ,
{ ' doctype ' : ' Item Group ' , ' item_group_name ' : ' Products ' , ' is_group ' : ' No ' , ' parent_item_group ' : ' All Item Groups ' } ,
{ ' doctype ' : ' Item Group ' , ' item_group_name ' : ' Raw Material ' , ' is_group ' : ' No ' , ' parent_item_group ' : ' All Item Groups ' } ,
{ ' doctype ' : ' Item Group ' , ' item_group_name ' : ' Services ' , ' is_group ' : ' No ' , ' parent_item_group ' : ' All Item Groups ' } ,
2013-08-07 17:46:35 +05:30
{ ' doctype ' : ' Item Group ' , ' item_group_name ' : ' Sub Assemblies ' , ' is_group ' : ' No ' , ' parent_item_group ' : ' All Item Groups ' } ,
2013-10-09 16:08:54 +05:30
{ ' doctype ' : ' Item Group ' , ' item_group_name ' : ' Consumable ' , ' is_group ' : ' No ' , ' parent_item_group ' : ' All Item Groups ' } ,
2013-01-16 17:48:17 +05:30
# deduction type
{ ' doctype ' : ' Deduction Type ' , ' name ' : ' Income Tax ' , ' description ' : ' Income Tax ' , ' deduction_name ' : ' Income Tax ' } ,
{ ' doctype ' : ' Deduction Type ' , ' name ' : ' Professional Tax ' , ' description ' : ' Professional Tax ' , ' deduction_name ' : ' Professional Tax ' } ,
{ ' doctype ' : ' Deduction Type ' , ' name ' : ' Provident Fund ' , ' description ' : ' Provident fund ' , ' deduction_name ' : ' Provident Fund ' } ,
# earning type
{ ' doctype ' : ' Earning Type ' , ' name ' : ' Basic ' , ' description ' : ' Basic ' , ' earning_name ' : ' Basic ' , ' taxable ' : ' Yes ' } ,
{ ' doctype ' : ' Earning Type ' , ' name ' : ' House Rent Allowance ' , ' description ' : ' House Rent Allowance ' , ' earning_name ' : ' House Rent Allowance ' , ' taxable ' : ' No ' } ,
# expense claim type
{ ' doctype ' : ' Expense Claim Type ' , ' name ' : ' Calls ' , ' expense_type ' : ' Calls ' } ,
{ ' doctype ' : ' Expense Claim Type ' , ' name ' : ' Food ' , ' expense_type ' : ' Food ' } ,
{ ' doctype ' : ' Expense Claim Type ' , ' name ' : ' Medical ' , ' expense_type ' : ' Medical ' } ,
{ ' doctype ' : ' Expense Claim Type ' , ' name ' : ' Others ' , ' expense_type ' : ' Others ' } ,
{ ' doctype ' : ' Expense Claim Type ' , ' name ' : ' Travel ' , ' expense_type ' : ' Travel ' } ,
# leave type
{ ' doctype ' : ' Leave Type ' , ' leave_type_name ' : ' Casual Leave ' , ' name ' : ' Casual Leave ' , ' is_encash ' : 1 , ' is_carry_forward ' : 1 , ' max_days_allowed ' : ' 3 ' , } ,
{ ' doctype ' : ' Leave Type ' , ' leave_type_name ' : ' Compensatory Off ' , ' name ' : ' Compensatory Off ' , ' is_encash ' : 0 , ' is_carry_forward ' : 0 , } ,
{ ' doctype ' : ' Leave Type ' , ' leave_type_name ' : ' Sick Leave ' , ' name ' : ' Sick Leave ' , ' is_encash ' : 0 , ' is_carry_forward ' : 0 , } ,
{ ' doctype ' : ' Leave Type ' , ' leave_type_name ' : ' Privilege Leave ' , ' name ' : ' Privilege Leave ' , ' is_encash ' : 0 , ' is_carry_forward ' : 0 , } ,
{ ' doctype ' : ' Leave Type ' , ' leave_type_name ' : ' Leave Without Pay ' , ' name ' : ' Leave Without Pay ' , ' is_encash ' : 0 , ' is_carry_forward ' : 0 , ' is_lwp ' : 1 } ,
# territory
{ ' doctype ' : ' Territory ' , ' territory_name ' : ' All Territories ' , ' is_group ' : ' Yes ' , ' name ' : ' All Territories ' , ' parent_territory ' : ' ' } ,
# customer group
{ ' doctype ' : ' Customer Group ' , ' customer_group_name ' : ' All Customer Groups ' , ' is_group ' : ' Yes ' , ' name ' : ' All Customer Groups ' , ' parent_customer_group ' : ' ' } ,
2013-07-10 18:59:55 +05:30
{ ' doctype ' : ' Customer Group ' , ' customer_group_name ' : ' Individual ' , ' is_group ' : ' No ' , ' parent_customer_group ' : ' All Customer Groups ' } ,
{ ' doctype ' : ' Customer Group ' , ' customer_group_name ' : ' Commercial ' , ' is_group ' : ' No ' , ' parent_customer_group ' : ' All Customer Groups ' } ,
{ ' doctype ' : ' Customer Group ' , ' customer_group_name ' : ' Non Profit ' , ' is_group ' : ' No ' , ' parent_customer_group ' : ' All Customer Groups ' } ,
{ ' doctype ' : ' Customer Group ' , ' customer_group_name ' : ' Government ' , ' is_group ' : ' No ' , ' parent_customer_group ' : ' All Customer Groups ' } ,
2013-01-16 17:48:17 +05:30
# supplier type
2013-07-10 18:59:55 +05:30
{ ' doctype ' : ' Supplier Type ' , ' supplier_type ' : ' Services ' } ,
{ ' doctype ' : ' Supplier Type ' , ' supplier_type ' : ' Local ' } ,
{ ' doctype ' : ' Supplier Type ' , ' supplier_type ' : ' Raw Material ' } ,
{ ' doctype ' : ' Supplier Type ' , ' supplier_type ' : ' Electrical ' } ,
{ ' doctype ' : ' Supplier Type ' , ' supplier_type ' : ' Hardware ' } ,
{ ' doctype ' : ' Supplier Type ' , ' supplier_type ' : ' Pharmaceutical ' } ,
{ ' doctype ' : ' Supplier Type ' , ' supplier_type ' : ' Distributor ' } ,
2013-01-16 17:48:17 +05:30
# Sales Person
2013-07-10 18:59:55 +05:30
{ ' doctype ' : ' Sales Person ' , ' sales_person_name ' : ' Sales Team ' , ' is_group ' : " Yes " , " parent_sales_person " : " " } ,
2013-01-16 17:48:17 +05:30
# UOM
2013-07-25 17:45:59 +05:30
{ ' uom_name ' : ' Unit ' , ' doctype ' : ' UOM ' , ' name ' : ' Unit ' , " must_be_whole_number " : 1 } ,
{ ' uom_name ' : ' Box ' , ' doctype ' : ' UOM ' , ' name ' : ' Box ' , " must_be_whole_number " : 1 } ,
2013-01-16 17:48:17 +05:30
{ ' uom_name ' : ' Kg ' , ' doctype ' : ' UOM ' , ' name ' : ' Kg ' } ,
2013-07-25 17:45:59 +05:30
{ ' uom_name ' : ' Nos ' , ' doctype ' : ' UOM ' , ' name ' : ' Nos ' , " must_be_whole_number " : 1 } ,
{ ' uom_name ' : ' Pair ' , ' doctype ' : ' UOM ' , ' name ' : ' Pair ' , " must_be_whole_number " : 1 } ,
{ ' uom_name ' : ' Set ' , ' doctype ' : ' UOM ' , ' name ' : ' Set ' , " must_be_whole_number " : 1 } ,
{ ' uom_name ' : ' Hour ' , ' doctype ' : ' UOM ' , ' name ' : ' Hour ' } ,
2013-01-17 18:22:22 +05:30
{ ' uom_name ' : ' Minute ' , ' doctype ' : ' UOM ' , ' name ' : ' Minute ' } ,
2014-03-06 15:40:22 +05:30
2013-01-16 17:48:17 +05:30
]
2014-02-14 15:47:51 +05:30
from frappe . modules import scrub
2013-01-16 17:48:17 +05:30
for r in records :
2014-02-14 15:47:51 +05:30
bean = frappe . bean ( r )
2013-07-10 20:42:44 +05:30
# ignore mandatory for root
parent_link_field = ( " parent_ " + scrub ( bean . doc . doctype ) )
if parent_link_field in bean . doc . fields and not bean . doc . fields . get ( parent_link_field ) :
bean . ignore_mandatory = True
2013-12-12 19:12:19 +05:30
bean . insert ( )
def feature_setup ( ) :
""" save global defaults and features setup """
2014-02-14 15:47:51 +05:30
bean = frappe . bean ( " Features Setup " , " Features Setup " )
2013-12-12 19:12:19 +05:30
bean . ignore_permissions = True
# store value as 1 for all these fields
flds = [ ' fs_item_serial_nos ' , ' fs_item_batch_nos ' , ' fs_brands ' , ' fs_item_barcode ' ,
' fs_item_advanced ' , ' fs_packing_details ' , ' fs_item_group_in_details ' ,
' fs_exports ' , ' fs_imports ' , ' fs_discounts ' , ' fs_purchase_discounts ' ,
' fs_after_sales_installations ' , ' fs_projects ' , ' fs_sales_extras ' ,
' fs_recurring_invoice ' , ' fs_pos ' , ' fs_manufacturing ' , ' fs_quality ' ,
' fs_page_break ' , ' fs_more_info ' , ' fs_pos_view '
]
bean . doc . fields . update ( dict ( zip ( flds , [ 1 ] * len ( flds ) ) ) )
2014-02-19 20:53:45 +05:30
bean . save ( )
def set_single_defaults ( ) :
sql = " select dt.name, df.fieldname, df.default from `tabDocType` dt, `tabDocField` df where dt.issingle=1 and df.parent=dt.name and ifnull(df.default, ' ' )!= ' ' "
2014-02-26 12:35:33 +05:30
for doctype , field , value in frappe . db . sql ( sql ) :
2014-02-19 20:53:45 +05:30
b = frappe . bean ( doctype , doctype )
try :
setattr ( b . doc . fields , field , value )
b . save ( )
except frappe . MandatoryError :
pass
2014-02-26 12:35:33 +05:30
frappe . db . set_default ( " date_format " , " dd-mm-yyyy " )