clean file
bzr revid: nel@silver-20081029122525-s4uai6v1n2nyl0nx
This commit is contained in:
parent
be1af7edda
commit
56c9b100c0
|
@ -35,125 +35,7 @@ class account_invoice_intrastat(report_sxw.rml_parse):
|
|||
self.total=0
|
||||
self.localcontext.update({
|
||||
'time': time,
|
||||
'get_tax_code':self._get_tax_code,
|
||||
'get_tax_note':self._get_tax_note,
|
||||
'get_origin':self._get_origin,
|
||||
'get_line_by_origin':self._get_line_by_origin,
|
||||
#'gross_weight' : self._gross_weight,
|
||||
'total_weight' : self._total_weight,
|
||||
'get_incoterm':self._get_incoterm,
|
||||
'get_ref':self._get_ref,
|
||||
'get_product_code': self._get_product_code,
|
||||
'get_product_name': self._get_product_name,
|
||||
})
|
||||
|
||||
def _get_origin(self,invoice_id):
|
||||
self.cr.execute("select distinct origin from account_invoice_line where invoice_id=%d" % (invoice_id))
|
||||
res = self.cr.fetchall() or []
|
||||
res=map(lambda x:x[0],res)
|
||||
if not len(res):
|
||||
res.append('-1')
|
||||
return res
|
||||
|
||||
|
||||
def _get_line_by_origin(self,origin,invoice_id,lang='en_US'):
|
||||
line_obj=self.pool.get('account.invoice.line')
|
||||
if not origin and origin!='-1':
|
||||
invoice_line_ids=line_obj.search(self.cr,self.uid,[('invoice_id','=',invoice_id),('origin','=',False)])
|
||||
else:
|
||||
invoice_line_ids = line_obj.search(self.cr,self.uid,[('invoice_id','=',invoice_id),('origin','=',origin)])
|
||||
res= line_obj.browse(self.cr,self.uid,invoice_line_ids,context={'lang':lang})
|
||||
return res
|
||||
|
||||
def _get_ref(self,invoice):
|
||||
if invoice.type in ('out_invoice','out_refund'):
|
||||
if invoice.reference_type in ('customer_ref'):
|
||||
return invoice.reference
|
||||
sale_obj=pooler.get_pool(self.cr.dbname).get('sale.order')
|
||||
sale_ids=sale_obj.search(self.cr,self.uid,[('invoice_ids','=',[invoice.id])])
|
||||
sales=sale_obj.browse(self.cr,self.uid,sale_ids)
|
||||
if len(sales):
|
||||
return sales[0].client_order_ref
|
||||
elif invoice.type in ('in_invoice','in_refund'):
|
||||
purchase_obj=pooler.get_pool(self.cr.dbname).get('purchase.order')
|
||||
purchase_ids=purchase_obj.search(self.cr,self.uid,[('invoice_id','=',invoice.id)])
|
||||
purchases=purchase_obj.browse(self.cr,self.uid,purchase_ids)
|
||||
if len(purchases):
|
||||
return purchases[0].ref
|
||||
return False
|
||||
|
||||
def _get_tax_code(self, tax_name):
|
||||
tax_obj=pooler.get_pool(self.cr.dbname).get('account.tax')
|
||||
ids = tax_obj.search(self.cr, self.uid, [('name','ilike',tax_name)])
|
||||
if len(ids) > 0:
|
||||
tax = tax_obj.browse(self.cr,self.uid,ids)[0]
|
||||
tax_name=tax.label
|
||||
return tax_name
|
||||
def _get_tax_note(self, tax_name,lang):
|
||||
tax_obj=pooler.get_pool(self.cr.dbname).get('account.tax')
|
||||
ids = tax_obj.search(self.cr, self.uid, [('name','ilike',tax_name)])
|
||||
if len(ids) > 0:
|
||||
tax = tax_obj.browse(self.cr,self.uid,ids,context={'lang':lang})[0]
|
||||
tax_note=tax.note
|
||||
return tax_note
|
||||
|
||||
def _total_weight(self, o):
|
||||
res = []
|
||||
self.cr.execute("""
|
||||
select
|
||||
intrastat_code.name,
|
||||
sum(
|
||||
case when uom.category_id != puom.category_id then pt.weight_net * inv_line.quantity
|
||||
else
|
||||
case when uom.factor_inv_data > 0
|
||||
then
|
||||
pt.weight_net * inv_line.quantity * uom.factor_inv_data
|
||||
else
|
||||
pt.weight_net * inv_line.quantity / uom.factor
|
||||
end
|
||||
end
|
||||
) as weight
|
||||
from
|
||||
report_intrastat_code intrastat_code
|
||||
left join (product_template pt
|
||||
left join (product_product pp
|
||||
left join (account_invoice_line inv_line
|
||||
left join account_invoice inv on (inv.id=inv_line.invoice_id))
|
||||
on (inv_line.product_id=pp.id))
|
||||
on (pt.id=pp.product_tmpl_id))
|
||||
on (pt.intrastat_id=intrastat_code.id)
|
||||
left join product_uom uom on uom.id=inv_line.uos_id
|
||||
left join product_uom puom on puom.id = pt.uom_id
|
||||
where
|
||||
inv.id=%d
|
||||
group by
|
||||
intrastat_code.name
|
||||
order by
|
||||
intrastat_code.name
|
||||
"""%(o.id))
|
||||
#self.cr.execute('select r.name, sum(t.weight_net * l.quantity) from report_intrastat_code r, product_template t, product_product p, account_invoice_line l, account_invoice a where r.id = t.intrastat_id and t.id = p.product_tmpl_id and p.id = l.product_id and l.invoice_id = a.id and a.id =%d group by(r.name)' %(o.id))
|
||||
res = self.cr.fetchall() or []
|
||||
return res
|
||||
def _get_incoterm(self, code):
|
||||
print code
|
||||
incoterm_obj=pooler.get_pool(self.cr.dbname).get('stock.incoterms')
|
||||
incoterm_ids = incoterm_obj.search(self.cr,self.uid,[('code','=',code)])
|
||||
incoterm=incoterm_obj.browse(self.cr,self.uid,incoterm_ids)[0]
|
||||
return incoterm.code
|
||||
|
||||
def _get_product_code(self, product_id, partner_id):
|
||||
product_obj=pooler.get_pool(self.cr.dbname).get('product.product')
|
||||
product = product_obj.browse(self.cr,self.uid, [product_id])[0]
|
||||
for supinfo in product.seller_ids:
|
||||
if supinfo.name.id == partner_id:
|
||||
return ( supinfo.product_code and ("[" + supinfo.product_code + "] ") or '') + supinfo.product_name
|
||||
return False
|
||||
|
||||
def _get_product_name(self, product_id):
|
||||
product_obj=pooler.get_pool(self.cr.dbname).get('product.product')
|
||||
prod_names = product_obj.name_get(self.cr,self.uid,[product_id])
|
||||
return prod_names[0][1]
|
||||
|
||||
|
||||
report_sxw.report_sxw('report.account.invoice.intrastat', 'account.invoice', 'addons/report_intrastat/report/invoice.rml', parser=account_invoice_intrastat)
|
||||
|
||||
|
|
Loading…
Reference in New Issue