diff --git a/addons/l10n_be/wizard/l10n_be_partner_vat_listing.py b/addons/l10n_be/wizard/l10n_be_partner_vat_listing.py
index e43dbfecf2b..75162b37b82 100644
--- a/addons/l10n_be/wizard/l10n_be_partner_vat_listing.py
+++ b/addons/l10n_be/wizard/l10n_be_partner_vat_listing.py
@@ -23,11 +23,35 @@
# along with this program. If not, see .
#
##############################################################################
+
import time
import base64
from tools.translate import _
from osv import fields, osv
+class vat_listing_clients(osv.osv_memory):
+ _name = 'vat.listing.clients'
+ _columns = {
+ 'name': fields.char('Client Name', size=32),
+ 'vat': fields.char('VAT', size=64),
+ 'country': fields.char('Country', size=16),
+ 'amount': fields.float('Amount'),
+ 'turnover': fields.float('Turnover'),
+ }
+
+ def name_get(self, cr, uid, ids, context=None):
+ res = self.read(cr, uid, ids, ['name', 'vat'], context=context, load='_classic_write')
+ return [(r['id'], '%s - %s' % (r['name'] or '', r['vat'] or '')) for r in res]
+
+ def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100):
+ args.append(['id', 'in', context['partner_ids']])
+ client_ids = self.search(cr, uid, [('vat', '=', name)] + args, limit=limit, context=context)
+ if not client_ids:
+ client_ids = self.search(cr, uid, [('name', 'ilike', name)] + args, limit=limit, context=context)
+ return self.name_get(cr, uid, client_ids, context=context)
+
+vat_listing_clients()
+
class partner_vat_13(osv.osv_memory):
""" Vat Listing """
_name = "partner.vat_13"
@@ -98,39 +122,42 @@ class partner_vat_13(osv.osv_memory):
'context': context,
'type': 'ir.actions.act_window',
'target': 'new',
- }
+ }
_columns = {
'year': fields.char('Year', size=4, required=True),
'limit_amount': fields.integer('Limit Amount', required=True),
- }
-
+ }
+
_defaults={
'year': lambda *a: str(int(time.strftime('%Y'))-1),
'limit_amount': 250,
- }
-
+ }
+
partner_vat_13()
class partner_vat_list_13(osv.osv_memory):
-
""" Partner Vat Listing """
_name = "partner.vat.list_13"
_columns = {
# TODO the referenced model has been deleted at revno 4672.1.2.
- #'partner_ids': fields.many2many('vat.listing.clients', 'vat_partner_rel', 'vat_id', 'partner_id', 'Clients', required=False, help='You can remove clients/partners which you do not want to show in xml file'),
+ 'partner_ids': fields.many2many('vat.listing.clients', 'vat_partner_rel', 'vat_id', 'partner_id', 'Clients', help='You can remove clients/partners which you do not want to show in xml file'),
'name': fields.char('File Name', size=32),
'msg': fields.text('File created', size=64, readonly=True),
'file_save' : fields.binary('Save File', readonly=True),
- }
+ 'identification_type': fields.selection([('tin','TIN'), ('nvat','NVAT'), ('other','Other')], 'Identification Type', required=True),
+ 'other': fields.char('Other Qlf', size=16, help="Description of a Identification Type"),
+ 'comments': fields.text('Comments'),
+ }
def _get_partners(self, cursor, user, context=None):
return context.get('partner_ids', [])
_defaults={
# TODO the referenced model has been deleted at revno 4672.1.2.
- # 'partner_ids': _get_partners
- }
+ 'partner_ids': _get_partners,
+ 'identification_type' : 'tin',
+ }
def create_xml(self, cursor, user, ids, context=None):
datas = []
@@ -151,35 +178,83 @@ class partner_vat_list_13(osv.osv_memory):
company_vat = company_vat.replace(' ','').upper()
SenderId = company_vat[2:]
+ issued_by = company_vat[:2]
cref = SenderId + seq_controlref
dnum = cref + seq_declarantnum
#obj_year= obj_fyear.browse(cursor, user, context['fyear'], context=context)
- street = zip_city = country = ''
+ street = city = country = ''
addr = obj_partner.address_get(cursor, user, [obj_cmpny.partner_id.id], ['invoice'])
if addr.get('invoice',False):
ads = obj_addr.browse(cursor, user, [addr['invoice']], context=context)[0]
+ phone = ads.phone or ''
+ email = ads.email or ''
+ name = ads.name or ''
- zip_city = obj_addr.get_city(cursor, user, ads.id)
- if not zip_city:
- zip_city = ''
+ city = obj_addr.get_city(cursor, user, ads.id)
+ zip = obj_addr.browse(cursor, user, ads.id, context=context).zip or ''
+ if not city:
+ city = ''
if ads.street:
- street = ads.street
+ street = ads.street + ' '
if ads.street2:
street += ads.street2
if ads.country_id:
country = ads.country_id.code
+ data = self.read(cursor, user, ids)[0]
+ other = data['other'] or ''
sender_date = time.strftime('%Y-%m-%d')
comp_name = obj_cmpny.name
- data_file = '\n'
- data_file += '\n\n\t\n\t\t'+str(company_vat)+'\n\t\t'+ comp_name +'\n\t\t'+ street +'\n\t\t'+ zip_city +''
- data_file += '\n\t\t'+ country +'\n\t\n'
- data_comp = '\n\n\t'+SenderId+'\n\t'+ comp_name +'\n\t'+ street +'\n\t'+ zip_city +'\n\t'+ country +'\n'
- data_period = '\n' + context['year'] +''
+
+ annual_listing_data = {
+ 'identificationType': data['identification_type'].upper(),
+ 'issued_by': issued_by,
+ 'other': other,
+ 'company_vat': company_vat,
+ 'comp_name': comp_name,
+ 'street': street,
+ 'zip': zip,
+ 'city': city,
+ 'country': country,
+ 'email': email,
+ 'phone': phone,
+ 'SenderId': SenderId,
+ 'period': context['year'],
+ 'comments': data['comments'] or ''
+ }
+
+ data_file = """
+
+
+ %(company_vat)s
+ %(comp_name)s
+ %(street)s
+ %(zip)s
+ %(city)s
+ %(country)s
+ %(email)s
+ %(phone)s
+
+
+""" % annual_listing_data
+
+ data_comp = """
+
+
+ %(SenderId)s
+ %(comp_name)s
+ %(street)s
+ %(zip)s
+ %(city)s
+ %(country)s
+ %(email)s
+ %(phone)s
+
+ %(period)s
+ """ % annual_listing_data
+
error_message = []
- data = self.read(cursor, user, ids)[0]
+
for partner in data['partner_ids']:
if isinstance(partner, list) and partner:
datas.append(partner[2])
@@ -187,12 +262,23 @@ class partner_vat_list_13(osv.osv_memory):
client_data = obj_vat_lclient.read(cursor, user, partner, context=context)
datas.append(client_data)
seq = 0
- data_clientinfo = ''
+ data_client_info = ''
sum_tax = 0.00
sum_turnover = 0.00
if len(error_message):
return 'Exception : \n' +'-'*50+'\n'+ '\n'.join(error_message)
+ amount_data = {
+ 'seq': str(seq),
+ 'dnum': dnum,
+ 'sum_tax': str(0),
+ 'sum_turnover': str(0),
+ }
for line in datas:
+ vat_issued = line['vat'][:2]
+ if vat_issued == 'BE':
+ vat_issued = ''
+ else:
+ vat_issued = vat_issued
if not line:
continue
if line['turnover'] < context['limit_amount']:
@@ -200,38 +286,67 @@ class partner_vat_list_13(osv.osv_memory):
seq += 1
sum_tax += line['amount']
sum_turnover += line['turnover']
- data_clientinfo += '\n\n\t\n\t\t'+line['vat'].replace(' ','').upper()[2:] +'\n\t\t' + line['country'] +'\n\t\n\t'+str(int(round(line['amount'] * 100))) +'\n\t'+str(int(round(line['turnover'] * 100))) +'\n'
+
+ amount_data.update({
+ 'seq': str(seq),
+ 'vat_issued': vat_issued,
+ 'only_vat': line['vat'].replace(' ','').upper()[2:],
+ 'turnover': str(int(round(line['turnover'] * 100))),
+ 'vat_amount': str(int(round(line['amount'] * 100))),
+ 'sum_tax': str(int(round(sum_tax * 100))),
+ 'sum_turnover': str(int(round(sum_turnover * 100))),
+ })
+ # Turnover and Farmer tags are not included
+ data_client_info += """
+
+ %(only_vat)s
+ %(turnover)s
+ %(vat_amount)s
+ """ % amount_data
- data_decl ='\n'
- data_file += data_decl + data_comp + str(data_period) + data_clientinfo + '\n\n'
+ data_begin = """
+
+""" % amount_data
+
+ data_end = """
+
+ %(comments)s
+
+
+""" % annual_listing_data
+
+ data_file += data_begin + data_comp + data_client_info + data_end
msg = 'Save the File with '".xml"' extension.'
file_save = base64.encodestring(data_file.encode('utf8'))
self.write(cursor, user, ids, {'file_save':file_save, 'msg':msg, 'name':'vat_list.xml'}, context=context)
return True
-
- def print_vatlist(self, cursor, user, ids, context=None):
- if context is None:
- context = {}
- obj_vat_lclient = self.pool.get('vat.listing.clients')
- client_datas = []
- data = self.read(cursor, user, ids)[0]
- for partner in data['partner_ids']:
- if isinstance(partner, list) and partner:
- client_datas.append(partner[2])
- else:
- client_data = obj_vat_lclient.read(cursor, user, partner, context=context)
- client_datas.append(client_data)
-
- datas = {'ids': []}
- datas['model'] = 'res.company'
- datas['year'] = context['year']
- datas['limit_amount'] = context['limit_amount']
- datas['client_datas'] = client_datas
- return {
- 'type': 'ir.actions.report.xml',
- 'report_name': 'partner.vat.listing.print',
- 'datas': datas,
- }
+
+# Not fully implemented
+
+# def print_vatlist(self, cursor, user, ids, context=None):
+# if context is None:
+# context = {}
+# obj_vat_lclient = self.pool.get('vat.listing.clients')
+# client_datas = []
+# data = self.read(cursor, user, ids)[0]
+# for partner in data['partner_ids']:
+# if isinstance(partner, list) and partner:
+# client_datas.append(partner[2])
+# else:
+# client_data = obj_vat_lclient.read(cursor, user, partner, context=context)
+# client_datas.append(client_data)
+#
+# datas = {'ids': []}
+# datas['model'] = 'res.company'
+# datas['year'] = context['year']
+# datas['limit_amount'] = context['limit_amount']
+# datas['client_datas'] = client_datas
+# return {
+# 'type': 'ir.actions.report.xml',
+# 'report_name': 'partner.vat.listing.print',
+# 'datas': datas,
+# }
partner_vat_list_13()
diff --git a/addons/l10n_be/wizard/l10n_be_partner_vat_listing.xml b/addons/l10n_be/wizard/l10n_be_partner_vat_listing.xml
index ff05e5ecefb..205de040a7f 100644
--- a/addons/l10n_be/wizard/l10n_be_partner_vat_listing.xml
+++ b/addons/l10n_be/wizard/l10n_be_partner_vat_listing.xml
@@ -1,63 +1,71 @@
+
+ Partner VAT Listing
+ partner.vat_13
+ form
+
+
+
+
-
- Partner VAT Listing
- partner.vat_13
- form
-
-
-
-
+
+ Partner VAT Listing
+ ir.actions.act_window
+ partner.vat_13
+ form
+ form
+
+ new
+
-
- Partner VAT Listing
- ir.actions.act_window
- partner.vat_13
- form
- form
-
- new
-
+
-
-
-
- Vat Listing
- partner.vat.list_13
- form
-
-
-
-
-
+
+ Vat Listing
+ partner.vat.list_13
+ form
+
+
+
+
-
\ No newline at end of file
+