|
@@ -212,14 +204,14 @@
|
-
+
| Total (Excl. taxes): |
[[ '%.2f' % o.amount_untaxed ]] [[o.currency_id.code ]] |
| Taxes: |
- [[ '%.2f' % o.amount_tax ]] [[o.currency_id.code ]] |
+ [[ '%.2f' % o.amount_tax ]] [[o.currency_id.code ]] |
| Total (Incl. taxes): |
diff --git a/addons/account_invoice_layout/report/special_message_invoice.rml b/addons/account_invoice_layout/report/special_message_invoice.rml
index 16deca9e70c..d53d06e9f70 100644
--- a/addons/account_invoice_layout/report/special_message_invoice.rml
+++ b/addons/account_invoice_layout/report/special_message_invoice.rml
@@ -29,8 +29,10 @@
-
-
+
+
+
+
@@ -139,42 +141,35 @@
Invoice Date: [[ formatLang(o.date_invoice,date=True) ]]
Customer Ref: [[ o.address_invoice_id.partner_id.ref or '/' ]]
-
-
- | Description |
- Taxes |
- Quantity |
- Unit Price |
- Disc. (%) |
- Price |
-
+
+
+| Description / Taxes |
+Quantity |
+Unit Price |
+Disc. (%) |
+Price |
+
[[ repeatIn(invoice_lines(o), 'a') ]]
-
+
| [[ a['type']=='text' and removeParentNode('blockTable')]] |
- [[ (a['type']=='title' or a['type']=='subtotal') and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['name'] ]] |
- [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['tax_types'] ]] |
- [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['quantity'] ]] |
- [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['uos'] ]] |
+ [[ (a['type']=='title' or a['type']=='subtotal') and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['name'] ]] / ( [[ a['tax_types'] ]] ) |
+ [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['quantity'] ]] [[ a['uos'] ]] |
|
[[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['price_unit'] ]] |
[[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['discount'] ]] |
- [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['price_subtotal'] ]] |
- [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['currency'] ]] |
+ [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['price_subtotal'] ]] [[ a['currency'] ]] |
|
- [[ format(a['note'] or '') ]] |
- |
- |
+ Note : [[ format(a['note'] or removeParentNode('tr')) ]] |
|
|
|
|
|
- |
@@ -184,21 +179,20 @@
[[ a['type']!='break' and removeParentNode('pageBreak')]]
-
+
- | Description [[ a['type']!='break' and removeParentNode('blockTable')]] |
- Taxes |
+ Description/Taxes [[ a['type']!='break' and removeParentNode('blockTable')]] |
Quantity |
Unit Price |
Disc. (%) |
- Price |
+ Price |
-
+
-
+
|
|
@@ -212,18 +206,18 @@
-
+
| Total (Excl. taxes): |
[[ '%.2f' % o.amount_untaxed ]] [[o.currency_id.code ]] |
| Taxes: |
- [[ '%.2f' % o.amount_tax ]] [[o.currency_id.code ]] |
+ [[ '%.2f' % o.amount_tax ]] [[o.currency_id.code ]] |
| Total (Incl. taxes): |
- [[ '%.2f' % o.amount_total ]] [[o.currency_id.code ]] |
+ [[ '%.2f' % o.amount_total ]] [[o.currency_id.code ]] |
|
diff --git a/addons/account_report/report/accounting_report.rml b/addons/account_report/report/accounting_report.rml
index c755303870e..95c9f03d1b0 100644
--- a/addons/account_report/report/accounting_report.rml
+++ b/addons/account_report/report/accounting_report.rml
@@ -65,90 +65,44 @@
-[[ repeatIn(objects,'o') ]]
-
-
-|
-
-
-
- |
-
-Accounting Report
- |
-
-
-
-
- |
-
-
-|
-[[ company.name ]]
- |
-
-
-
-
- |
-
-Currency: [[ company.currency_id.name]]
-
- |
-
-
-Printing date: [[ time.strftime('%Y-%m-%d') ]] at [[ time.strftime('%H:%M:%S') ]]
-
-
-|
-Name
- |
-
-Code
- |
-
-Amount
- |
-
-
-
-
-
-
-[[repeatIn(childs(o.id),'obj')]]
-
-
-|
-[[ '....'*(obj['level']) ]][[ obj['name'] ]]
- |
-
-[[obj['code'] ]]
- |
-
-[['%.2f' % obj['amount'] ]]
- |
-
-
-|
-[[ repeatIn((obj['note'] and obj['note'].splitlines()) or [], 'l') ]]
-[[ l or removeParentNode('table') ]]
- |
-
-
-
-
- |
-
-
-
-
- |
-
-
-
-
-
-
+ [[ repeatIn(objects,'o') ]]
+
+
+ | |
+ Accounting Report |
+ |
+
+
+ | [[ company.name ]] |
+ |
+ Currency: [[ company.currency_id.name]] |
+
+
+ Printing date: [[ time.strftime('%Y-%m-%d') ]] at [[ time.strftime('%H:%M:%S') ]]
+
+
+ | Name |
+ Code |
+ Amount |
+
+
+
+
+ [[repeatIn(childs(o.id),'obj')]]
+
+
+ | [[ '....'*(obj['level']) ]][[ obj['name'] ]] |
+ [[obj['code'] ]] |
+ [['%.2f' % obj['amount'] ]] |
+
+
+ | [[ repeatIn((obj['note'] and obj['note'].splitlines()) or [], 'l') ]][[ l or removeParentNode('table') ]] |
+ |
+ |
+
+
+
+
diff --git a/addons/account_report/report/print_indicator.py b/addons/account_report/report/print_indicator.py
index d7bd70f40e4..9d4fa4673f4 100644
--- a/addons/account_report/report/print_indicator.py
+++ b/addons/account_report/report/print_indicator.py
@@ -73,13 +73,6 @@ import tools
import os
-parents = {
- 'tr':1,
- 'li':1,
- 'story': 0,
- 'section': 0
-}
-
class accounting_report_indicator(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
@@ -91,6 +84,7 @@ class accounting_report_indicator(report_sxw.rml_parse):
'lines':self.lines,
'getarray':self.getarray,
'gettree':self.gettree,
+ 'getarray_head':self.getarray_head,
})
self.count = 0
self.treecount = 0
@@ -98,61 +92,8 @@ class accounting_report_indicator(report_sxw.rml_parse):
self.header_name = []
self.header_val = []
self.main_dict = {}
-
- def repeatIn(self, lst, name, nodes_parent=False,td=False,width=[],value=[],type=[],data=''):
- self._node.data = ''
- node = self._find_parent(self._node, nodes_parent or parents)
- ns = node.nextSibling
-#start
- if (not name in ['array','array_header']):
- return super(accounting_report_indicator,self).repeatIn(lst, name, nodes_parent=False)
-
- array_header = eval(data,{'year':'Fiscal Year','periods':'Periods'})
-# value = [array_header]
- value = []
- value.extend(self.header_name)
- if name=='array':
- type = ['float']*len(self.header_name)
- else:
- type = ['lable'] * (len(self.header_name))
-
- width = [438/float(len(value))]*(len(value))
-
- if not lst:
- lst.append(1)
- for ns in node.childNodes :
- if ns and ns.nodeName!='#text' and ns.tagName=='blockTable' and td :
- width_str = ns._attrs['colWidths'].nodeValue
- ns.removeAttribute('colWidths')
-# total_td = td * len(value)
-
- if not width:
- for v in value:
- width.append(30)
- for v in range(len(width)):
- width_str +=',%d'%width[v]
-
- ns.setAttribute('colWidths',width_str)
-
- child_list = ns.childNodes
- for child in child_list:
- if child.nodeName=='tr':
- lc = child.childNodes[1]
- i=0
- for v in value:
- newnode = lc.cloneNode(1)
- if type[i] == 'float':
- t1="[[ '%.2f' % " + "%s['%s'] ]]"%(name,v)
- if type[i] == 'lable':
- t1="%s"%(v)
- else:
- t1="[[ %s['%s'] ]]"%(name,v)
- newnode.childNodes[1].lastChild.data = t1
- child.appendChild(newnode)
- newnode=False
- i+=1
- return super(accounting_report_indicator,self).repeatIn(lst, name, nodes_parent=False)
+#
def lines(self,data):
res={}
@@ -193,12 +134,30 @@ class accounting_report_indicator(report_sxw.rml_parse):
result.append(res)
return result
+ def getarray_head(self,data,object,array_header=''):
+ self.getgraph(data,object,intercall=True)
+ self.header_val=[str(x) for x in self.header_val]
+ if data['select_base'] == 'year':
+ year = [1,2,3,4,5,6,7,8]
+ temp_head = [str(x) for x in self.header_name]
+ head_dict = dict(zip(year,temp_head))
+ else:
+ temp_head = [str(x[0:3]) for x in self.header_name]
+ head_dict = dict(zip(temp_head,temp_head))
+ print "head_dict",head_dict
+ return [head_dict]
+
def getarray(self,data,object,array_header=''):
res={}
result=[]
self.getgraph(data,object,intercall=True)
- self.header_val=[str(x) for x in self.header_val]
- temp_dict=zip(self.header_name,self.header_val)
+ self.header_val = [str(x) for x in self.header_val]
+ if data['select_base'] == 'year':
+ year = [1,2,3,4,5,6,7,8]
+ temp_dict = zip(year,self.header_val)
+ else:
+ temp_head = [str(x[0:3]) for x in self.header_name]
+ temp_dict = zip(temp_head,self.header_val)
res=dict(temp_dict)
array_header = eval(array_header,{'year':'Fiscal Year','periods':'Periods'})
res[array_header]=object['name']
diff --git a/addons/account_report/report/print_indicator.rml b/addons/account_report/report/print_indicator.rml
index 0015324ecbe..f7277115529 100644
--- a/addons/account_report/report/print_indicator.rml
+++ b/addons/account_report/report/print_indicator.rml
@@ -81,101 +81,93 @@
-
+
- |
- Indicators
- |
+ Indicators |
-
-
+
+
+
+ | [[ company.name ]] |
+ Currency: [[ company.currency_id.name]] |
+
+
+
+ Printing date: [[ time.strftime('%Y-%m-%d') ]] at [[ time.strftime('%H:%M:%S') ]]
+
|
- [[ company.name ]]
- |
-
- Currency: [[ company.currency_id.name]]
-
- |
+ Name
-
-
-
-
-Printing date: [[ time.strftime('%Y-%m-%d') ]] at [[ time.strftime('%H:%M:%S') ]]
-
-
-|
-Name
- |
-
-
-
-
-
-
-
-[[ repeatIn(lines(data['form']),'o')]]
-
-
-|
-[['.....'*(o['level']) ]][[ setTag('font','font',{'color':'white'}) ]]() [[ o['type']=='view' and setTag('para','para',{'fontName':'Helvetica-Bold','fontSize':'10.5'}) ]][[ o['name'] ]] ([[ o['code'] ]])
- |
-
-
-[[ o['disp_tree'] and setTag('para','image',{'file':gettree(data['form'],o)}) or removeParentNode('para') ]]
-[[ o['disp_graph'] and setTag('para','image',{'width':'450.00','height':'215.00','file':getgraph(data['form'],o)}) or removeParentNode('para') ]]
-
-
-
-
-|
-[['..........'*(o['level']) ]][[ setTag('font','font',{'color':'white'}) ]]Expression : [[ o['expression'] ]]
- |
-
-
-
-
-|
- [['..........'*(o['level']) ]][[ setTag('font','font',{'color':'white'}) ]] [[ format(o['note']) or removeParentNode('blockTable') ]]
- |
-
-
-
-
-
-Tabular Summary
-
-
- [[ repeatIn(getarray(data['form'],o,array_header=data['form']['select_base']),'array_header',td=len(data['form']['base_selection'][0][2]),data=data['form']['select_base']) or removeParentNode('section') ]]
-
+
+
+
+
+ [[ repeatIn(lines(data['form']),'o')]]
+
+
+ | [['.....'*(o['level']) ]][[ o['type']=='view' and setTag('para','para',{'fontName':'Helvetica-Bold','fontSize':'10.5'}) ]]()[[ o['name'] ]] ([[ o['code'] ]]) |
+
+
+ [[ o['disp_tree'] and setTag('para','image',{'file':gettree(data['form'],o)}) or removeParentNode('para') ]]
+ [[ o['disp_graph'] and setTag('para','image',{'width':'450.00','height':'215.00','file':getgraph(data['form'],o)}) or removeParentNode('para') ]]
+
+
+
+ | [['..........' *(o['level']) ]]Expression :[[ o['expression'] ]] |
+
+
+
+
+ | [['..........'*(o['level']) ]] [[ format(o['note']) or removeParentNode('blockTable') ]] |
+
+
+
+
+ Tabular Summary
+
+ [[ repeatIn(getarray_head(data['form'],o,array_header=data['form']['select_base']),'array_header')]]
+
- |
-
- |
-
- Indicators
- |
+ Indicators |
+ [[ array_header['Jan'] or '' ]][[ array_header[1] or '' ]] |
+ [[ array_header['Feb'] or '' ]][[ array_header[2] or '' ]] |
+ [[ array_header['Mar'] or '' ]][[ array_header[3] or '' ]] |
+ [[ array_header['Apr'] or '' ]][[ array_header[4] or '' ]] |
+ [[ array_header['May'] or '' ]][[ array_header[5] or '' ]] |
+ [[ array_header['Jun'] or '' ]][[ array_header[6] or '' ]] |
+ [[ array_header['Jul'] or '' ]][[ array_header[7] or '' ]] |
+ [[ array_header['Aug'] or '' ]][[ array_header[8] or '' ]] |
+ [[ array_header['Sep'] or '' ]] |
+ [[ array_header['Oct'] or '' ]] |
+ [[ array_header['Nov'] or '' ]] |
+ [[ array_header['Dec'] or '' ]] |
-
-
+
[[ repeatIn(lines(data['form']),'obj')]]
- [[ repeatIn(getarray(data['form'],obj,array_header=data['form']['select_base']),'array',td=len(data['form']['base_selection'][0][2]),data=data['form']['select_base']) or removeParentNode('section') ]]
-
+
+ [[ repeatIn(getarray(data['form'],obj,array_header=data['form']['select_base']),'array')]]
+
- |
-
- |
-
- [['.....'*(obj['level']) ]][[ setTag('font','font',{'color':'white'}) ]][[ obj['code'] ]]
- |
+ [['.....'*(obj['level']) ]][[ obj['code'] ]] |
+ [[ array['Jan'] or '' ]][[ array[1] or '' ]] |
+ [[ array['Feb'] or '' ]][[ array[2] or '' ]] |
+ [[ array['Mar'] or '' ]][[ array[3] or '' ]] |
+ [[ array['Apr'] or '' ]][[ array[4] or '' ]] |
+ [[ array['May'] or '' ]][[ array[5] or '' ]] |
+ [[ array['Jun'] or '' ]][[ array[6] or '' ]] |
+ [[ array['Jul'] or '' ]][[ array[7] or '' ]] |
+ [[ array['Aug'] or '' ]][[ array[8] or '' ]] |
+ [[ array['Sep'] or '' ]] |
+ [[ array['Oct'] or '' ]] |
+ [[ array['Nov'] or '' ]] |
+ [[ array['Dec'] or '' ]] |
-
-
-
-
+
+
diff --git a/addons/point_of_sale/report/pos_invoice.py b/addons/point_of_sale/report/pos_invoice.py
index 314e627ab6f..6fee06c2e41 100644
--- a/addons/point_of_sale/report/pos_invoice.py
+++ b/addons/point_of_sale/report/pos_invoice.py
@@ -33,18 +33,14 @@ class pos_invoice(report_sxw.rml_parse):
self.localcontext.update({
'time': time,
})
-
- def preprocess(self, objects, data, ids):
- super(pos_invoice, self).preprocess(objects, data, ids)
+
+ def set_context(self, objects, data, ids, report_type = None):
+ super(pos_invoice, self).set_context(objects, data, ids, report_type)
iids = []
nids = []
-
for order in objects:
order.write({'nb_print': order.nb_print + 1})
-
if order.invoice_id and order.invoice_id not in iids:
- if not order.invoice_id:
- raise osv.except_osv(_('Error !'), _('Please create an invoice for this sale.'))
iids.append(order.invoice_id)
nids.append(order.invoice_id.id)
self.cr.commit()
@@ -55,7 +51,7 @@ class pos_invoice(report_sxw.rml_parse):
self.localcontext['data'] = data
self.localcontext['objects'] = iids
-report_sxw.report_sxw('report.pos.invoice', 'pos.order', 'addons/libeurop/report/invoice.rml', parser= pos_invoice)
+report_sxw.report_sxw('report.pos.invoice', 'pos.order', 'account/report/invoice.rml', parser= pos_invoice)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/point_of_sale/report/pos_receipt.rml b/addons/point_of_sale/report/pos_receipt.rml
index c0c4ce794a2..641c17e710f 100644
--- a/addons/point_of_sale/report/pos_receipt.rml
+++ b/addons/point_of_sale/report/pos_receipt.rml
@@ -1,8 +1,8 @@
-
+
-
+
@@ -13,37 +13,37 @@
-
-
-
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -52,82 +52,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- [[ repeatIn(objects,'o') ]]
- [[ o.user_id.company_id.name ]]
- [[ address and address.street ]], [[ address and address.zip ]] [[ address and address.city ]]
- [[ address and address.country_id and address.country_id.name ]]
- Tel : [[ address and address.phone ]]
- E-mail : [[ address and address.email ]]
- User : [[ o.user_id.name ]]
- Date : [[ time.strftime('%d/%m/%Y %H:%M') ]]
-
+ [[ repeatIn(objects,'o') ]]
+ [[o.user_id.company_id.name]]
+ [[ address and address.street ]], [[ address and address.zip ]] [[ address and address.city ]]
+ [[ address and address.country_id.name ]]
+ Tel : [[ address and address.phone ]]
+ E-mail : [[ address and address.email ]]
+
-
+
- Operation N° : [[ o.name ]]
-
+ Operation N° : [[ o.name ]]
+
|
- Description
+ Description
|
- Qty
+ Qty
|
- Price
+ Price
|
- [[ repeatIn(o.lines,'line') ]]
-
+ [[ repeatIn(o.lines,'line') ]]
+
|
- [[ line.product_id.name ]]
+ [[ line.product_id.name ]]
|
- [[ '%.f' % line.qty ]]
+ [[ '%.f' % line.qty ]]
|
- [[ '%.2f' % net(line.id) ]]
+ [[ '%.2f' % net(line.id) ]]
|
-
+
|
- Disc :
+
+
+
|
- [[ '%.2f' % (disc(o.id) or 0.0,) ]]
- |
-
-
- |
- Total :
- |
-
- [[ '%.2f' % o.amount_total ]] [[ o.pricelist_id.currency_id.name ]]
+
+
+ |
+ Total :
+ |
+
+ [[ '%.2f' % o.amount_total ]] [[ o.pricelist_id.currency_id.name ]]
+ |
+
+
+
+
+
+
+
+ |
+ Discount :
+ |
+
+ [[ disc(o.id) or 0.00 ]] [[ o.pricelist_id.currency_id.name ]]
+ |
+
+
+
+
+
|
-
- [[ repeatIn((o.amount_total>0) and o.payments or [], 'p') ]]
-
- [[ p.journal_id.name ]] : [[ '%.2f' % (p.amount,) ]]
-
-
-
- [[ repeatIn((o.amount_total<0) and [1] or [], 'p') ]]
-
- Ce bon est valide jusqu'au [[ time.strftime('%d/%m/%Y', time.strptime(o.date_validity,'%Y-%m-%d')) ]].
-
-
+
+
+
-
diff --git a/addons/point_of_sale/wizard/wizard_pos_payment.py b/addons/point_of_sale/wizard/wizard_pos_payment.py
index 8e7c95d86d2..05fcfb1856c 100644
--- a/addons/point_of_sale/wizard/wizard_pos_payment.py
+++ b/addons/point_of_sale/wizard/wizard_pos_payment.py
@@ -114,29 +114,30 @@ def _add_pay(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
order_obj = pool.get('pos.order')
result = data['form']
-
invoice_wanted = data['form']['invoice_wanted']
-
# add 'invoice_wanted' in 'pos.order'
order_obj.write(cr, uid, [data['id']], {'invoice_wanted': invoice_wanted})
order_obj.add_payment(cr, uid, data['id'], result, context=context)
return {}
-
+def _validate(self, cr, uid, data, context):
+ pool = pooler.get_pool(cr.dbname)
+ order_obj = pool.get('pos.order')
+ order = order_obj.browse(cr, uid, data['id'], context)
+# if not order.amount_total:
+# return 'receipt'
+ order_obj.test_order_lines(cr, uid, order, context=context)
+ return {}
+
def _check(self, cr, uid, data, context):
"""Check the order:
if the order is not paid: continue payment,
if the order is paid print invoice (if wanted) or ticket.
"""
-
pool = pooler.get_pool(cr.dbname)
order_obj = pool.get('pos.order')
order = order_obj.browse(cr, uid, data['id'], context)
- #if not order.amount_total:
- # return 'receipt'
- order_obj.test_order_lines(cr, uid, order, context=context)
-
action = 'ask_pay'
if order.state == 'paid':
if order.partner_id:
@@ -146,22 +147,26 @@ def _check(self, cr, uid, data, context):
action = 'paid'
else:
action = 'receipt'
-
return action
def create_invoice(self, cr, uid, data, context):
- wf_service = netsvc.LocalService("workflow")
- for i in data['ids']:
- wf_service.trg_validate(uid, 'pos.order', i, 'invoice', cr)
-
+ pool = pooler.get_pool(cr.dbname)
+ order_obj = pool.get('pos.order')
+ order = order_obj.browse(cr, uid, data['id'], context)
+ if not order.invoice_id:
+ inv_id = order_obj.action_invoice(cr,uid,[data['id']])
+ #raise wizard.except_wizard(_('Error !'), _('Please create an invoice for this sale.'))
+# wf_service = netsvc.LocalService("workflow")
+# for i in data['ids']:
+# wf_service.trg_validate(uid, 'pos.order', i, 'invoice', cr)
return {}
class pos_payment(wizard.interface):
states = {
'init': {
- 'actions': [],
+ 'actions': [_validate],
'result': {
'type': 'choice',
'next_state': _check,
diff --git a/addons/report_intrastat/report_intrastat.py b/addons/report_intrastat/report_intrastat.py
index d941bebcc4d..fde9b2aac92 100644
--- a/addons/report_intrastat/report_intrastat.py
+++ b/addons/report_intrastat/report_intrastat.py
@@ -63,8 +63,8 @@ class report_intrastat(osv.osv):
_auto = False
_columns = {
'name': fields.many2one('account.period', 'Period', readonly=True, select=True),
- 'supply_units': fields.float('Supply Units', readonly=True),
- 'ref': fields.char('Origin', size=64, readonly=True),
+ 'supply_units':fields.float('Supply Units', readonly=True),
+ 'ref':fields.char('Origin',size=64, readonly=True),
'code': fields.char('Country code', size="2", readonly=True),
'intrastat_id': fields.many2one('report.intrastat.code', 'Intrastat code', readonly=True),
'weight': fields.float('Weight', readonly=True),
diff --git a/addons/stock/report/lot_location.rml b/addons/stock/report/lot_location.rml
index a075637955f..94cc3f51340 100644
--- a/addons/stock/report/lot_location.rml
+++ b/addons/stock/report/lot_location.rml
@@ -49,6 +49,7 @@
+
@@ -60,20 +61,19 @@
-
-
- | Location |
- Product |
- Quantity |
-
-
- [[ repeatIn(objects,'o') ]]
+ [[ repeatIn(objects,'o') ]]
- [[ repeatIn(process(o.id),'ob') ]]
+ [[ repeatIn(process(o.id),'ob') ]]
+
+ | [[ ob['product'] or removeParentNode('blockTable') ]] Location |
+ Product |
+ Quantity |
+ |
+
| [[ ob['location_name'] ]] |
- [[ ob['product'] or 'No products in this Location !' ]] |
+ |
|
|
@@ -83,27 +83,14 @@
[[ p['prod_qty'] ]] |
[[ p['uom'] ]] |
-
-
|
Total : |
[[ ob['total'] ]] |
Units |
-
- |
- |
- |
- |
-
-
- |
- |
- |
- |
-
+
diff --git a/addons/stock/report/lot_overview.rml b/addons/stock/report/lot_overview.rml
index 65c48fa43c1..ad05b011757 100644
--- a/addons/stock/report/lot_overview.rml
+++ b/addons/stock/report/lot_overview.rml
@@ -10,11 +10,6 @@
-
-
-
-
-
@@ -24,18 +19,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -57,6 +41,7 @@
+
@@ -69,9 +54,12 @@
-
+ [[ repeatIn(objects,'o') ]]
+
+ [[ repeatIn(process(o.id),'ob') ]]
+
- | Location |
+ [[ ob['product'] or removeParentNode('blockTable') ]] Location |
Product |
Variants |
Quantity |
@@ -79,14 +67,9 @@
Unit Price |
Value |
-
- [[ repeatIn(objects,'o') ]]
-
- [[ repeatIn(process(o.id),'ob') ]]
-
| [[ ob['location_name'] ]] |
- [[ ob['product'] or 'No products in this Location !' ]] |
+ |
|
|
|
@@ -94,7 +77,7 @@
|
- | [[ repeatIn(ob['product'],'p') ]] |
+ [[ repeatIn(ob['product'],'p') ]] |
[[ p['prod_name'] ]] |
[[ p['variants'] ]] |
[[ p['prod_qty'] ]] |
@@ -102,9 +85,7 @@
[[ p['price'] ]] |
[[ p['price_value'] ]] |
-
-
-
+
|
Total: |
|
@@ -115,9 +96,6 @@
-
-
-
@@ -128,7 +106,7 @@
|
|
|
- [[ grand_total_price() ]] |
+ [[ grand_total_price() ]] |
|
diff --git a/addons/stock/report/lot_overview_all.rml b/addons/stock/report/lot_overview_all.rml
index e848ba89f6a..0df08385c9a 100644
--- a/addons/stock/report/lot_overview_all.rml
+++ b/addons/stock/report/lot_overview_all.rml
@@ -10,45 +10,16 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -68,6 +39,7 @@
+
@@ -80,13 +52,13 @@
-
-
-
-
-
- | Location |
+ [[ repeatIn(objects,'o') ]]
+
+ [[ repeatIn(process(o.id),'ob') ]]
+
+
+ | [[ ob['product'] or removeParentNode('blockTable') ]] Location |
Code |
Product |
Variants |
@@ -94,16 +66,11 @@
UoM |
UnitPrice |
Value |
-
-
- [[repeatIn(objects,'o')]]
-
- [[ repeatIn(process(o.id),'ob') ]]
-
+
| [[ ob['location_name'] ]] |
|
- [[ ob['product'] or 'No products in this Location' ]] |
+ |
|
|
|
@@ -120,36 +87,29 @@
[[ p['price'] ]] |
[[ p['price_value'] ]] |
-
-
-
-
-
-
- |
+
+ | |
Total: |
- |
- |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
[[ price_total() ]] |
-
-
| Grand Total: |
- |
- |
- |
- |
- |
- |
- [[ grand_total_price() ]] |
+ |
+ |
+ |
+ |
+ |
+ |
+ [[ grand_total_price() ]] |
|