2011-10-03 13:32:03 +00:00
# -*- encoding: utf-8 -*-
#################################################################################
# #
# Copyright (C) 2009 Renato Lima - Akretion #
# #
#This program is free software: you can redistribute it and/or modify #
#it under the terms of the GNU Affero General Public License as published by #
#the Free Software Foundation, either version 3 of the License, or #
#(at your option) any later version. #
# #
#This program is distributed in the hope that it will be useful, #
#but WITHOUT ANY WARRANTY; without even the implied warranty of #
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
#GNU General Public License for more details. #
# #
#You should have received a copy of the GNU General Public License #
#along with this program. If not, see <http://www.gnu.org/licenses/>. #
#################################################################################
import time
from datetime import datetime , timedelta
from dateutil . relativedelta import relativedelta
from operator import itemgetter
import netsvc
import pooler
from osv import fields , osv
import decimal_precision as dp
from tools . misc import currency
from tools . translate import _
from tools import config
class account_tax_code_template ( osv . osv ) :
_inherit = ' account.tax.code.template '
_columns = {
' domain ' : fields . char ( ' Domain ' , size = 32 , help = " This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain. " ) ,
' tax_discount ' : fields . boolean ( ' Discount this Tax in Prince ' , help = " Mark it for (ICMS, PIS e etc.). " ) ,
}
account_tax_code_template ( )
class account_tax_code ( osv . osv ) :
_inherit = ' account.tax.code '
_columns = {
' domain ' : fields . char ( ' Domain ' , size = 32 , help = " This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain. " ) ,
' tax_discount ' : fields . boolean ( ' Discount this Tax in Prince ' , help = " Mark it for (ICMS, PIS e etc.). " ) ,
}
account_tax_code ( )
class account_tax_template ( osv . osv ) :
_inherit = ' account.tax.template '
def get_precision_tax ( ) :
def change_digit_tax ( cr ) :
res = pooler . get_pool ( cr . dbname ) . get ( ' decimal.precision ' ) . precision_get ( cr , 1 , ' Account ' )
return ( 16 , res + 2 )
return change_digit_tax
_columns = {
' tax_discount ' : fields . boolean ( ' Discount this Tax in Prince ' , help = " Mark it for (ICMS, PIS e etc.). " ) ,
' base_reduction ' : fields . float ( ' Redution ' , required = True , digits_compute = get_precision_tax ( ) , help = " For taxes of type percentage, enter % r atio between 0-1. " ) ,
' amount_mva ' : fields . float ( ' MVA Percent ' , required = True , digits_compute = get_precision_tax ( ) , help = " For taxes of type percentage, enter % r atio between 0-1. " ) ,
' type ' : fields . selection ( [ ( ' percent ' , ' Percentage ' ) , ( ' fixed ' , ' Fixed Amount ' ) , ( ' none ' , ' None ' ) , ( ' code ' , ' Python Code ' ) , ( ' balance ' , ' Balance ' ) , ( ' quantity ' , ' Quantity ' ) ] , ' Tax Type ' , required = True ,
help = " The computation method for the tax amount. " ) ,
}
_defaults = {
' base_reduction ' : 0 ,
' amount_mva ' : 0 ,
}
def onchange_tax_code_id ( self , cr , uid , ids , tax_code_id , context = None ) :
result = { ' value ' : { } }
if not tax_code_id :
return result
obj_tax_code = self . pool . get ( ' account.tax.code.template ' ) . browse ( cr , uid , tax_code_id )
if obj_tax_code :
result [ ' value ' ] [ ' tax_discount ' ] = obj_tax_code . tax_discount
result [ ' value ' ] [ ' domain ' ] = obj_tax_code . domain
return result
account_tax_template ( )
class account_tax ( osv . osv ) :
_inherit = ' account.tax '
def get_precision_tax ( ) :
def change_digit_tax ( cr ) :
res = pooler . get_pool ( cr . dbname ) . get ( ' decimal.precision ' ) . precision_get ( cr , 1 , ' Account ' )
return ( 16 , res + 2 )
return change_digit_tax
_columns = {
' tax_discount ' : fields . boolean ( ' Discount this Tax in Prince ' , help = " Mark it for (ICMS, PIS e etc.). " ) ,
' base_reduction ' : fields . float ( ' Redution ' , required = True , digits_compute = get_precision_tax ( ) , help = " Um percentual decimal em % e ntre 0-1. " ) ,
' amount_mva ' : fields . float ( ' MVA Percent ' , required = True , digits_compute = get_precision_tax ( ) , help = " Um percentual decimal em % e ntre 0-1. " ) ,
' type ' : fields . selection ( [ ( ' percent ' , ' Percentage ' ) , ( ' fixed ' , ' Fixed Amount ' ) , ( ' none ' , ' None ' ) , ( ' code ' , ' Python Code ' ) , ( ' balance ' , ' Balance ' ) , ( ' quantity ' , ' Quantity ' ) ] , ' Tax Type ' , required = True ,
help = " The computation method for the tax amount. " ) ,
}
_defaults = {
' base_reduction ' : 0 ,
' amount_mva ' : 0 ,
}
def onchange_tax_code_id ( self , cr , uid , ids , tax_code_id , context = None ) :
result = { ' value ' : { } }
if not tax_code_id :
return result
obj_tax_code = self . pool . get ( ' account.tax.code ' ) . browse ( cr , uid , tax_code_id )
if obj_tax_code :
result [ ' value ' ] [ ' tax_discount ' ] = obj_tax_code . tax_discount
result [ ' value ' ] [ ' domain ' ] = obj_tax_code . domain
return result
account_tax ( )
class wizard_multi_charts_accounts ( osv . osv_memory ) :
_inherit = ' wizard.multi.charts.accounts '
def execute ( self , cr , uid , ids , context = None ) :
super ( wizard_multi_charts_accounts , self ) . execute ( cr , uid , ids , context )
obj_multi = self . browse ( cr , uid , ids [ 0 ] )
obj_acc_tax = self . pool . get ( ' account.tax ' )
obj_acc_tax_tmp = self . pool . get ( ' account.tax.template ' )
obj_acc_cst = self . pool . get ( ' l10n_br_account.cst ' )
obj_acc_cst_tmp = self . pool . get ( ' l10n_br_account.cst.template ' )
obj_tax_code = self . pool . get ( ' account.tax.code ' )
obj_tax_code_tmp = self . pool . get ( ' account.tax.code.template ' )
# Creating Account
obj_acc_root = obj_multi . chart_template_id . account_root_id
tax_code_root_id = obj_multi . chart_template_id . tax_code_root_id . id
company_id = obj_multi . company_id . id
children_tax_code_template = self . pool . get ( ' account.tax.code.template ' ) . search ( cr , uid , [ ( ' parent_id ' , ' child_of ' , [ tax_code_root_id ] ) ] , order = ' id ' )
children_tax_code_template . sort ( )
for tax_code_template in self . pool . get ( ' account.tax.code.template ' ) . browse ( cr , uid , children_tax_code_template , context = context ) :
tax_code_id = self . pool . get ( ' account.tax.code ' ) . search ( cr , uid , [ ( ' code ' , ' = ' , tax_code_template . code ) , ( ' company_id ' , ' = ' , company_id ) ] )
if tax_code_id :
obj_tax_code . write ( cr , uid , tax_code_id , { ' domain ' : tax_code_template . domain , ' tax_discount ' : tax_code_template . tax_discount } )
cst_tmp_ids = self . pool . get ( ' l10n_br_account.cst.template ' ) . search ( cr , uid , [ ( ' tax_code_template_id ' , ' = ' , tax_code_template . id ) ] , order = ' id ' )
for cst_tmp in self . pool . get ( ' l10n_br_account.cst.template ' ) . browse ( cr , uid , cst_tmp_ids , context = context ) :
obj_acc_cst . create ( cr , uid , {
' code ' : cst_tmp . code ,
' name ' : cst_tmp . name ,
' tax_code_id ' : tax_code_id [ 0 ] ,
} )
tax_ids = self . pool . get ( ' account.tax ' ) . search ( cr , uid , [ ( ' company_id ' , ' = ' , company_id ) ] )
for tax in self . pool . get ( ' account.tax ' ) . browse ( cr , uid , tax_ids , context = context ) :
if tax . tax_code_id :
obj_acc_tax . write ( cr , uid , tax . id , { ' domain ' : tax . tax_code_id . domain , ' tax_discount ' : tax . tax_code_id . tax_discount } )
2011-11-22 08:51:38 +00:00
wizard_multi_charts_accounts ( )
2011-11-24 15:50:58 +00:00
2011-11-22 08:51:38 +00:00
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: