diff --git a/addons/report_intrastat/report/invoice.py b/addons/report_intrastat/report/invoice.py index 32977b2ed32..31c6d840766 100644 --- a/addons/report_intrastat/report/invoice.py +++ b/addons/report_intrastat/report/invoice.py @@ -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)