diff --git a/addons/l10n_be/l10n_be_sequence.xml b/addons/l10n_be/l10n_be_sequence.xml
new file mode 100644
index 00000000000..6e2ea26cbe6
--- /dev/null
+++ b/addons/l10n_be/l10n_be_sequence.xml
@@ -0,0 +1,32 @@
+
+
+
+
+ #
+ # Sequences for controlref will be used in wizard for "Listing of VAT Customers"..in creating xml file
+ #
+
+ Controlref
+ controlref
+
+
+ Controlref
+ controlref
+ 4
+
+
+ #
+ # Sequences for declarantnum will be used in wizard for "Listing of VAT Customers"..in creating xml file
+ #
+
+ Declarantnum
+ declarantnum
+
+
+ Declarantnum
+ declarantnum
+ 5
+
+
+
+
diff --git a/addons/l10n_be/l10n_be_wizard.xml b/addons/l10n_be/l10n_be_wizard.xml
new file mode 100644
index 00000000000..63596d36ddd
--- /dev/null
+++ b/addons/l10n_be/l10n_be_wizard.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/l10n_be/wizard/__init__.py b/addons/l10n_be/wizard/__init__.py
new file mode 100644
index 00000000000..4bdc9b28276
--- /dev/null
+++ b/addons/l10n_be/wizard/__init__.py
@@ -0,0 +1,2 @@
+import account_vat_declaration
+import partner_vat_listing
\ No newline at end of file
diff --git a/addons/l10n_be/wizard/account_vat_declaration.py b/addons/l10n_be/wizard/account_vat_declaration.py
new file mode 100644
index 00000000000..8e2fd143b27
--- /dev/null
+++ b/addons/l10n_be/wizard/account_vat_declaration.py
@@ -0,0 +1,101 @@
+import wizard
+import time
+import datetime
+import pooler
+import base64
+
+form_fyear = """
+
"""
+
+fields_fyear = {
+ 'period': {'string': 'Period', 'type': 'many2one', 'relation': 'account.period', 'required': True,},
+}
+
+form = """
+"""
+
+fields = {
+ 'msg': {'string':'File created', 'type':'text', 'size':'100','readonly':True},
+ 'file_save':{'string': 'Save File',
+ 'type': 'binary',
+ 'readonly': True,},
+}
+
+class wizard_vat_declaration(wizard.interface):
+
+ def _create_xml(self, cr, uid, data, context):
+ list_of_tags=['00','01','02','03','45','46','47','48','49','54','55','56','57','59','61','62','63','64','71','81','82','83','84','85','86','87','91']
+ pool_obj = pooler.get_pool(cr.dbname)
+ #obj_company = pool_obj.get('res.company').browse(cr,uid,1)
+ obj_company = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid).company_id
+ user_cmpny = obj_company.name
+ vat_no=obj_company.partner_id.vat
+ if not vat_no:
+ raise wizard.except_wizard('Data Insufficient','No VAT Number Associated with Main Company!')
+
+ tax_ids = pool_obj.get('account.tax.code').search(cr,uid,[])
+ ctx = context.copy()
+ ctx['period_id'] = data['form']['period'] #added context here
+ tax_info = pool_obj.get('account.tax.code').read(cr,uid,tax_ids,['code','sum_period'],context=ctx)
+
+ address=post_code=city=''
+ if not obj_company.partner_id.address:
+ address=post_code=city=''
+
+ for ads in obj_company.partner_id.address:
+ if ads.type=='default':
+ if ads.zip_id:
+ city=ads.zip_id.city
+ post_code=ads.zip_id.name
+ if ads.street:
+ address=ads.street
+ if ads.street2:
+ address +=ads.street2
+
+ obj_fyear = pool_obj.get('account.fiscalyear')
+ year_id = obj_fyear.find(cr, uid)
+ current_year = obj_fyear.browse(cr,uid,year_id).name
+ month=time.strftime('%m')
+
+ period_code = pool_obj.get('account.period').browse(cr, uid, data['form']['period']).code
+ send_ref = user_cmpny
+ if period_code:
+ send_ref = send_ref + '-' + period_code
+
+ data_of_file='\n'
+ data_of_file +='\n\t\n\t\t'+str(vat_no)+'\n\t\t'+str(obj_company.name)+'\n\t\t'+str(address)+''
+ data_of_file +='\n\t\t'+str(post_code)+'\n\t\t'+str(city)+'\n\t\t'+send_ref+'\n\t'
+ data_of_file +='\n\t\n\t\t1\n\t\t'+str(vat_no)+'\n\t\t\n\t\t\t'+str(month)+'\n\t\t\t'+str(current_year[-4:])+'\n\t\t\n\t\t'
+ data_of_file +='\n\t\t\n\t\t\t'
+
+ for item in tax_info:
+ if item['code']:
+ if item['code'] == '71-72':
+ item['code']='71'
+ if item['code'] in list_of_tags:
+ data_of_file +='\n\t\t\t\t' + str(int(item['sum_period']*100)) + ''
+
+ data_of_file +='\n\t\t\t\n\t\t\n\t\n'
+ data['form']['msg']='Save the File with '".xml"' extension.'
+ data['form']['file_save']=base64.encodestring(data_of_file)
+ return data['form']
+
+
+ states = {
+ 'init': {
+ 'actions': [],
+ 'result': {'type':'form', 'arch':form_fyear, 'fields':fields_fyear, 'state':[('end','Cancel'),('go','Create XML')]},
+ },
+ 'go': {
+ 'actions': [_create_xml],
+ 'result': {'type':'form', 'arch':form, 'fields':fields, 'state':[('end','Ok')]},
+ }
+ }
+
+wizard_vat_declaration('wizard.account.vat.declaration')
\ No newline at end of file
diff --git a/addons/l10n_be/wizard/partner_vat_listing.py b/addons/l10n_be/wizard/partner_vat_listing.py
new file mode 100644
index 00000000000..05bf58e0da9
--- /dev/null
+++ b/addons/l10n_be/wizard/partner_vat_listing.py
@@ -0,0 +1,147 @@
+import wizard
+import time
+import datetime
+import pooler
+import base64
+
+form = """
+"""
+
+fields = {
+ 'fyear': {'string': 'Fiscal Year', 'type': 'many2one', 'relation': 'account.fiscalyear', 'required': True,},
+ 'mand_id':{'string':'MandatarieId','type':'char','size':'30','required': True,},
+ 'test_xml': {'string':'Test XML file', 'type':'boolean'},
+ }
+msg_form = """
+"""
+
+msg_fields = {
+ 'msg': {'string':'File created', 'type':'text', 'size':'100','readonly':True},
+ 'file_save':{'string': 'Save File',
+ 'type': 'binary',
+ 'readonly': True,},
+}
+
+class wizard_vat(wizard.interface):
+
+ def _create_xml(self, cr, uid, data, context):
+ datas=[]
+ # now wizard will use user->company instead of directly company from res.company
+
+ seq_controlref = pooler.get_pool(cr.dbname).get('ir.sequence').get(cr, uid,'controlref')
+ seq_declarantnum = pooler.get_pool(cr.dbname).get('ir.sequence').get(cr, uid,'declarantnum')
+ obj_cmpny = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid).company_id
+ company_vat = obj_cmpny.partner_id.vat #should be check
+ if not company_vat: #if not vat_company:
+ raise wizard.except_wizard('Data Insufficient','No VAT Number Associated with Main Company!')
+
+ cref = company_vat + seq_controlref
+ dnum = cref + seq_declarantnum
+# obj_company=pooler.get_pool(cr.dbname).get('res.company').browse(cr,uid,1)
+# vat_company=obj_company.partner_id.vat
+ p_id_list=pooler.get_pool(cr.dbname).get('res.partner').search(cr,uid,[('vat','!=',False)])
+
+ if not p_id_list:
+ raise wizard.except_wizard('Data Insufficient!','No partner has a VAT Number asociated with him.')
+ obj_year=pooler.get_pool(cr.dbname).get('account.fiscalyear').browse(cr,uid,data['form']['fyear'])
+ period="to_date('" + str(obj_year.date_start) + "','yyyy-mm-dd') and to_date('" + str(obj_year.date_stop) +"','yyyy-mm-dd')"
+
+ street=zip_city=country=''
+ if not obj_cmpny.partner_id.address:
+ street=zip_city=country=''
+
+ for ads in obj_cmpny.partner_id.address:
+ if ads.type=='default':
+ if ads.zip_id:
+ zip_city=pooler.get_pool(cr.dbname).get('res.partner.zip').name_get(cr,uid,[ads.zip_id.id])[0][1]
+ if ads.street:
+ street=ads.street
+ if ads.street2:
+ street +=ads.street2
+ if ads.country_id:
+ country=ads.country_id.code
+
+
+ sender_date=time.strftime('%Y-%m-%d')
+ data_file='\n'
+ if data['form']['test_xml']:
+ data_file += '\n\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n'
+ data_file +='\n\n\t\n\t\t'+str(company_vat)+'\n\t\t'+str(obj_cmpny.name)+'\n\t\t'+ str(street) +'\n\t\t'+ str(zip_city) +''
+ data_file +='\n\t\t'+ str(country) +'\n\t\n'
+ data_comp ='\n\n\t'+str(company_vat)+'\n\t'+str(obj_cmpny.name)+'\n\t'+ str(street) +'\n\t'+ str(zip_city) +'\n\t'+ str(country) +'\n'
+ data_period ='\n'+ str(obj_year.name[-4:]) +''
+
+ for p_id in p_id_list:
+ record=[] # this holds record per partner
+ obj_partner=pooler.get_pool(cr.dbname).get('res.partner').browse(cr,uid,p_id)
+ cr.execute('select a.type,sum(credit)-sum(debit) from account_move_line l left join account_account a on (l.account_id=a.id) where a.type in ('"'income'"','"'tax'"') and l.partner_id=%d and l.date between %s group by a.type'%(p_id,period))
+ line_info=cr.fetchall()
+ if not line_info:
+ continue
+
+ record.append(obj_partner.vat)
+ for ads in obj_partner.address:
+ if ads.type=='default':
+ if ads.country_id:
+ record.append(ads.country_id.code)
+ else:
+ raise wizard.except_wizard('Data Insufficient!', 'The Partner "'+obj_partner.name + '"'' has no country associated with its default type address!')
+ else:
+ raise wizard.except_wizard('Data Insufficient!', 'The Partner "'+obj_partner.name + '"'' has no default type address!')
+ if len(line_info)==1:
+ if line_info[0][0]=='income':
+ record.append(0.00)
+ record.append(line_info[0][1])
+ else:
+ record.append(line_info[0][1])
+ record.append(0.00)
+ else:
+ for item in line_info:
+ record.append(item[1])
+ datas.append(record)
+
+ seq=0
+ data_clientinfo=''
+ sum_tax=0.00
+ sum_turnover=0.00
+ for line in datas:
+ if line[3]< 250.00:
+ continue
+ seq +=1
+ sum_tax +=line[2]
+ sum_turnover +=line[3]
+ data_clientinfo +='\n\n\t\n\t\t'+line[0] +'\n\t\t'+line[1] +'\n\t\n\t'+str(int(line[2] * 100)) +'\n\t'+str(int(line[3] * 100)) +'\n'
+
+ data_decl ='\n'
+ data_file += str(data_decl) + str(data_comp) + str(data_period) + str(data_clientinfo) + '\n'
+
+ data['form']['msg']='Save the File with '".xml"' extension.'
+ data['form']['file_save']=base64.encodestring(data_file)
+ return data['form']
+
+ states = {
+ 'init': {
+ 'actions': [],
+ 'result': {'type':'form', 'arch':form, 'fields':fields, 'state':[('end','Cancel'),('go','Create XML')]},
+ },
+ 'go': {
+ 'actions': [_create_xml],
+ 'result': {'type':'form', 'arch':msg_form, 'fields':msg_fields, 'state':[('end','Ok')]},
+ }
+
+ }
+
+wizard_vat('list.vat.detail')