mikel arregi has proposed merging lp:~mikelarregi/avanzosc/dos_proform_invoice_report into lp:~avanzosc-security-team/avanzosc/72horas.
Requested reviews: Avanzosc_security (avanzosc-security-team) For more details, see: https://code.launchpad.net/~mikelarregi/avanzosc/dos_proform_invoice_report/+merge/224310 dos_proform_invoice_report -- https://code.launchpad.net/~mikelarregi/avanzosc/dos_proform_invoice_report/+merge/224310 Your team Avanzosc_security is requested to review the proposed merge of lp:~mikelarregi/avanzosc/dos_proform_invoice_report into lp:~avanzosc-security-team/avanzosc/72horas.
=== modified file 'dos_proform_invoice_report/__init__.py' --- dos_proform_invoice_report/__init__.py 2014-06-11 10:23:47 +0000 +++ dos_proform_invoice_report/__init__.py 2014-06-24 14:49:40 +0000 @@ -1,5 +1,5 @@ ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2012 DOS (<http://www.dos-sl.es>). # @@ -14,11 +14,10 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################## -import report +from . import report # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - === modified file 'dos_proform_invoice_report/__openerp__.py' --- dos_proform_invoice_report/__openerp__.py 2014-06-11 10:23:47 +0000 +++ dos_proform_invoice_report/__openerp__.py 2014-06-24 14:49:40 +0000 @@ -19,20 +19,19 @@ ############################################################################## { - "name" : "DOS Proform Invoice Report", - "version" : "1.0", - "author" : "DOS", - "category" : "Enterprise Specific Modules", - "description":"""Module to print proform invoice with custom format. - """, - "depends" : ["sale"], - "init_xml" : [], - "demo_xml" : [], - "update_xml" : [ - 'proform_invoice_report.xml', - ], - "website": 'http://www.dos-sl.es', - "active": False, - "installable": True, + "name": "DOS Proform Invoice Report", + "version": "1.0", + "author": "DOS", + "category": "Enterprise Specific Modules", + "description": """Module to print proform invoice with custom format. + """, + "depends": ["sale"], + "init_xml": [], + "demo_xml": [], + "update_xml": [ + 'report/proform_invoice_report.xml', + ], + "website": 'http://www.dos-sl.es', + "installable": True, } # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: === modified file 'dos_proform_invoice_report/report/__init__.py' --- dos_proform_invoice_report/report/__init__.py 2014-06-11 10:23:47 +0000 +++ dos_proform_invoice_report/report/__init__.py 2014-06-24 14:49:40 +0000 @@ -1,5 +1,5 @@ ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2012 DOS (<http://www.dos-sl.es>). # @@ -14,12 +14,10 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################## -import proform_invoice - -import proform_customs_invoice +from . import proform_invoice +from . import proform_customs_invoice # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - === modified file 'dos_proform_invoice_report/report/proform_customs_invoice.py' --- dos_proform_invoice_report/report/proform_customs_invoice.py 2014-06-11 10:23:47 +0000 +++ dos_proform_invoice_report/report/proform_customs_invoice.py 2014-06-24 14:49:40 +0000 @@ -22,268 +22,225 @@ import time from datetime import datetime from dateutil.relativedelta import relativedelta -from report import report_sxw -from osv import osv -from tools.bank import format_acc_number -from tools.translate import _ -import pooler - -class proform_customs_invoice_custom(report_sxw.rml_parse): - def __init__(self, cr, uid, name, context): - super(proform_customs_invoice_custom, self).__init__(cr, uid, name, context=context) - self.localcontext.update({ - 'time': time, - 'get_left_text': self.get_left_text, - 'get_footer_text': self.get_footer_text, - 'get_date_order': self.get_date_order, - 'get_company_address': self.get_company_address, - 'get_elevator_address': self.get_elevator_address, - 'get_payment_type': self.get_payment_type, - 'get_payment_term': self.get_payment_term, - 'get_account_number': self.get_account_number, - 'get_tax_name': self.get_tax_name, - 'get_order_lines': self.get_order_lines, - 'get_shipping_address':self.get_shipping_address, - }) - self.context = context - user = self.pool.get('res.users').browse(cr, uid, uid) - self.company = user.company_id - - - def get_date_order (self, order): - date_order = "" - - if str(order.date_order) != '': - date_order = datetime.strptime(order.date_order, '%Y-%m-%d') - date_order = date_order.strftime('%d/%m/%Y') - - return date_order - - def get_left_text(self, order): - - text = "" - - company = order.company_id or self.company or None - - if company and company.partner_id: - - partner = company.partner_id - - # Nombre empresa - text += partner.name or "" - # CIF - text += partner.vat and (" - " + partner.vat) or "" - # Tomo - text += partner.es_tomo and (" - " + _("RM Tomo") + " " + partner.es_tomo) or "" - # Libro - text += partner.es_libro and (" " + _("Libro") + " " + partner.es_libro) or "" - # Folio - text += partner.es_folio and (" " + _("Folio") + " " + partner.es_folio) or "" - # Hoja - text += partner.es_hoja and (" " + _("Hoja") + " " + partner.es_hoja) or "" - # Inscripcion - text += partner.es_registro_mercantil and (" " + _("Inscripción") + " " + partner.es_registro_mercantil) or "" - # Final - text += "." - - return text - - def get_footer_text(self, order): - - text = "" - - company = order.company_id or self.company or None - - if company and company.partner_id: - - partner = company.partner_id - addr_ids = self.pool.get('res.partner').address_get(self.cr, self.uid, [partner.id], ['default']) - addr_id = addr_ids['default'] - addr = self.pool.get('res.partner.address').browse(self.cr, self.uid, addr_id) - - # Nombre empresa - text += partner and partner.name or "" - # Calle empresa - text += addr and addr.street and (" - " + addr.street + ".") or "" - # Codigo Postal empresa - text += addr and addr.zip and (" - " + addr.zip) or "" - # Ciudad - text += addr and addr.city and (" " + addr.city) or "" - # Telefono - text += addr and addr.phone and (" - " + _("Tel.") + " " + addr.phone) or "" - # Fax - text += addr and addr.fax and (" - " + _("Fax.") + " " + addr.fax) or "" - # Email - text += addr and addr.email and (" - " + _("E-Mail") + " " + addr.email) or "" - - return text - - def get_company_address (self, order): - - res = [] - - company = order.company_id or self.company or None - - if company and company.partner_id: - - partner = company.partner_id - addr_ids = self.pool.get('res.partner').address_get(self.cr, self.uid, [partner.id], ['default']) - addr_id = addr_ids['default'] - addr = self.pool.get('res.partner.address').browse(self.cr, self.uid, addr_id) - - res.append(partner and partner.name or "") - res.append((addr and addr.street) or '') - res.append((addr and addr.zip or '') + " - " + (addr and addr.city or '')) - res.append((addr and addr.state_id and addr.state_id.name or '') + " (" + (addr and addr.country_id and addr.country_id.name or '') + ")") - res.append(partner and partner.vat or '') - - else: - - res.append(" ") - res.append(" ") - res.append(" ") - res.append(" ") - res.append(" ") - - """ - res.append("Nayar Systems S.L.") - res.append("Calle Taxida 10") - res.append("12003 Castellón") - res.append("España") - res.append("B-12757795") - """ - - return res - - def get_elevator_address (self, order): - - res = [] - - if order.elevator_partner_id: - - partner = order.elevator_partner_id - addr_ids = self.pool.get('res.partner').address_get(self.cr, self.uid, [partner.id], ['default']) - addr_id = addr_ids['default'] - addr = self.pool.get('res.partner.address').browse(self.cr, self.uid, addr_id) - - res.append(partner and partner.name or "") - res.append((addr and addr.street) or '') - res.append((addr and addr.zip or '') + " - " + (addr and addr.city or '')) - res.append((addr and addr.state_id and addr.state_id.name or '') + " (" + (addr and addr.country_id and addr.country_id.name or '') + ")") - res.append(partner and partner.vat or '') - - elif order.partner_id: - - partner = order.partner_id - addr = order.address_order_id - - res.append(partner and partner.name or "") - res.append((addr and addr.street) or '') - res.append((addr and addr.zip or '') + " - " + (addr and addr.city or '')) - res.append((addr and addr.state_id and addr.state_id.name or '') + " (" + (addr and addr.country_id and addr.country_id.name or '') + ")") - res.append(partner and partner.vat or '') - - else: - - res.append(" ") - res.append(" ") - res.append(" ") - res.append(" ") - res.append(" ") - - return res - - def get_shipping_address (self, order): - res = [] - if order.partner_shipping_id: - addr = order.partner_shipping_id - res.append((addr.partner_id.name) or "Error en al recuperar el nombre") - res.append((addr.street) or 'ERROR') - res.append((addr.zip or '') + " - " + (addr.city or '')) - res.append((addr.state_id.name or '') + " (" + (addr.country_id.name or '') + ")") - res.append(addr.partner_id and addr.partner_id.vat or '') - else: - res.append("Sin direccion de envio") - res.append(" ") - res.append(" ") - res.append(" ") - res.append(" ") - return res - - - def get_payment_type(self, order): - - return order.payment_type and order.payment_type.name.upper() or '' - - - def get_payment_term(self, order): - - maturity_date = datetime.strptime(order.date_order, '%Y-%m-%d') - str_date = maturity_date.strftime('%d/%m/%Y') - - #Obtenemos fecha vencimiento - if order.payment_term: - for line in order.payment_term.line_ids: - if line.value in ('balance',): - maturity_date = datetime.strptime(order.date_order, '%Y-%m-%d') + relativedelta(days=+line.days) - str_date = maturity_date.strftime('%d/%m/%Y') - - return str_date - - - def get_account_number(self, order): - - bank_text = "" - - if order.payment_type and order.payment_type.name.upper() == "TRANSFERENCIA EN CCC": - - company = order.company_id or self.company or None - - if company and company.partner_id: - partner_id = company.partner_id.id - - pool = pooler.get_pool(self.cr.dbname) - bank_obj = pool.get('res.partner.bank') - bank_ids = bank_obj.search(self.cr, self.uid, [ ('partner_id','=', partner_id), ('default_bank','=', 'true')], limit=1) - - for bank in bank_obj.browse(self.cr, self.uid, bank_ids): - bank_text = format_acc_number(bank.iban or bank.acc_number or "") - else: - if order.partner_bank: - bank_text = format_acc_number(order.partner_bank.iban or order.partner_bank.acc_number or "", masked=True) - - return bank_text - - - def get_tax_name(self, order): - - tax = "" - for line in order.order_line: - if line.tax_id: - tax = line.tax_id[0].name - break - - return tax - - - def get_order_lines (self, order): - - product_obj = self.pool.get('product.product') - - res = [] - - for l in order.order_line: - line = {} - - line["concept"] = l.product_id and l.product_id.name or " " - line["uds"] = int(l.product_uos_qty or 0) - line["price"] = l.price_unit or 0 - line["dto"] = l.discount or 0 - line["import"] = l.price_subtotal or 0 - - res.append(line) - - return res - -report_sxw.report_sxw('report.proform.customs.invoice.custom','sale.order','addons/dos_proform_invoice_report/report/proform_customs_invoice.rml',parser=proform_customs_invoice_custom) +from openerp.report import report_sxw +from openerp.osv import orm +from openerp.tools.bank import format_acc_number +from openerp.tools.translate import _ + + +class ProformCustomsInvoiceCustom(report_sxw.rml_parse): + + def __init__(self, cr, uid, name, context): + super(ProformCustomsInvoiceCustom, self).__init__(cr, uid, name, + context=context) + self.localcontext.update({ + 'time': time, + 'get_left_text': self.get_left_text, + 'get_footer_text': self.get_footer_text, + 'get_date_order': self.get_date_order, + 'get_company_address': self.get_company_address, + 'get_elevator_address': self.get_elevator_address, + 'get_payment_type': self.get_payment_type, + 'get_payment_term': self.get_payment_term, + 'get_account_number': self.get_account_number, + 'get_tax_name': self.get_tax_name, + 'get_order_lines': self.get_order_lines, + 'get_shipping_address': self.get_shipping_address, + }) + self.context = context + user = self.pool['res.users'].browse(cr, uid, uid) + self.company = user.company_id + + def get_date_order(self, order): + date_order = "" + if str(order.date_order) != '': + date_order = datetime.strptime(order.date_order, '%Y-%m-%d') + date_order = date_order.strftime('%d/%m/%Y') + return date_order + + def get_left_text(self, order): + text = "" + company = order.company_id or self.company or None + if company and company.partner_id: + partner = company.partner_id + # Nombre empresa + text += partner.name or "" + # CIF + text += partner.vat and (" - " + partner.vat) or "" + # Tomo + text += partner.es_tomo and (" - " + _("RM Tomo") + " " + + partner.es_tomo) or "" + # Libro + text += partner.es_libro and (" " + _("Libro") + " " + + partner.es_libro) or "" + # Folio + text += partner.es_folio and (" " + _("Folio") + " " + + partner.es_folio) or "" + # Hoja + text += partner.es_hoja and (" " + _("Hoja") + " " + + partner.es_hoja) or "" + # Inscripcion + reg_merc = partner.es_registro_mercantil + text += partner.es_registro_mercantil and (" %s %s" % + (_("Inscripción"), + reg_merc)) or "" + # Final + text += "." + return text + + def get_footer_text(self, order): + text = "" + company = order.company_id or self.company or None + if company and company.partner_id: + partner = company.partner_id + # Nombre empresa + text += partner and partner.name or "" + # Calle empresa + text += partner.street and (" - " + partner.street + ".") or "" + # Codigo Postal empresa + text += partner.zip and (" - " + partner.zip) or "" + # Ciudad + text += partner.city and (" " + partner.city) or "" + # Telefono + text += partner.phone and (" - " + _("Tel.") + " " + + partner.phone) or "" + # Fax + text += partner.fax and (" - " + _("Fax.") + " " + + partner.fax) or "" + # Email + text += partner.email and (" - " + _("E-Mail") + " " + + partner.email) or "" + return text + + def get_company_address(self, order): + res = [] + company = order.company_id or self.company or None + if company and company.partner_id: + partner = company.partner_id + res.append(partner and partner.name or "") + res.append((partner.street) or '') + res.append((partner.zip or '') + " - " + + (partner.city or '')) + res.append((partner.state_id and partner.state_id.name or '') + + " (" + (partner.country_id and + partner.country_id.name or '') + ")") + res.append(partner and partner.vat or '') + else: + for i in range(5): + res.append(" ") + """ + res.append("Nayar Systems S.L.") + res.append("Calle Taxida 10") + res.append("12003 Castellón") + res.append("España") + res.append("B-12757795") + """ + return res + + def get_elevator_address(self, order): + res = [] + if order.elevator_partner_id: + partner = order.elevator_partner_id + res.append(partner and partner.name or "") + res.append((partner.street) or '') + res.append((partner.zip or '') + " - " + + (partner.city or '')) + res.append((partner.state_id and partner.state_id.name or '') + + " (" + (partner.country_id and + partner.country_id.name or '') + ")") + res.append(partner and partner.vat or '') + elif order.partner_id: + partner = order.partner_id + res.append(partner and partner.name or "") + res.append((partner.street) or '') + res.append((partner.zip or '') + " - " + (partner.city or '')) + res.append((partner.state_id and partner.state_id.name or '') + + " (" + (partner.country_id and + partner.country_id.name or '') + ")") + res.append(partner and partner.vat or '') + else: + for i in range(5): + res.append(" ") + return res + + def get_shipping_address(self, order): + res = [] + if order.partner_shipping_id: + addr = order.partner_shipping_id + res.append((addr.partner_id.name) or + "Error en al recuperar el nombre") + res.append((addr.street) or 'ERROR') + res.append((addr.zip or '') + " - " + (addr.city or '')) + res.append((addr.state_id.name or '') + " (" + + (addr.country_id.name or '') + ")") + res.append(addr.partner_id and addr.partner_id.vat or '') + else: + res.append("Sin direccion de envio") + for i in range(5): + res.append(" ") + return res + + def get_payment_type(self, order): + return order.payment_type and order.payment_type.name.upper() or '' + + def get_payment_term(self, order): + maturity_date = datetime.strptime(order.date_order, '%Y-%m-%d') + str_date = maturity_date.strftime('%d/%m/%Y') + # Obtenemos fecha vencimiento + if order.payment_term: + for line in order.payment_term.line_ids: + if line.value in ('balance',): + maturity_date = (datetime.strptime(order.date_order, + '%Y-%m-%d') + + relativedelta(days=+line.days)) + str_date = maturity_date.strftime('%d/%m/%Y') + return str_date + + def get_account_number(self, order): + bank_text = "" + if (order.payment_type and + order.payment_type.name.upper() == "TRANSFERENCIA EN CCC"): + company = order.company_id or self.company or None + if company and company.partner_id: + partner_id = company.partner_id.id + bank_obj = self.pool['res.partner.bank'] + bank_ids = bank_obj.search(self.cr, self.uid, + [('partner_id', '=', partner_id), + ('default_bank', '=', 'true')], + limit=1) + for bank in bank_obj.browse(self.cr, self.uid, bank_ids): + bank_text = format_acc_number(bank.iban or bank.acc_number + or "") + else: + if order.partner_bank: + bank_text = format_acc_number(order.partner_bank.iban or + order.partner_bank.acc_number + or "", masked=True) + return bank_text + + def get_tax_name(self, order): + tax = "" + for line in order.order_line: + if line.tax_id: + tax = line.tax_id[0].name + break + return tax + + def get_order_lines(self, order): + product_obj = self.pool.get('product.product') + res = [] + for l in order.order_line: + line = {} + line["concept"] = l.product_id and l.product_id.name or " " + line["uds"] = int(l.product_uos_qty or 0) + line["price"] = l.price_unit or 0 + line["dto"] = l.discount or 0 + line["import"] = l.price_subtotal or 0 + res.append(line) + return res + +report_sxw.report_sxw('report.proform.customs.invoice.custom', 'sale.order', + 'addons/dos_proform_invoice_report/report/' + 'proform_customs_invoice.rml', + parser=ProformCustomsInvoiceCustom) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: === modified file 'dos_proform_invoice_report/report/proform_invoice.py' --- dos_proform_invoice_report/report/proform_invoice.py 2014-06-11 10:23:47 +0000 +++ dos_proform_invoice_report/report/proform_invoice.py 2014-06-24 14:49:40 +0000 @@ -22,250 +22,206 @@ import time from datetime import datetime from dateutil.relativedelta import relativedelta -from report import report_sxw -from osv import osv -from tools.bank import format_acc_number -from tools.translate import _ -import pooler - -class proform_invoice_custom(report_sxw.rml_parse): - def __init__(self, cr, uid, name, context): - super(proform_invoice_custom, self).__init__(cr, uid, name, context=context) - self.localcontext.update({ - 'time': time, - 'get_left_text': self.get_left_text, - 'get_footer_text': self.get_footer_text, - 'get_date_order': self.get_date_order, - 'get_company_address': self.get_company_address, - 'get_elevator_address': self.get_elevator_address, - 'get_payment_type': self.get_payment_type, - 'get_payment_term': self.get_payment_term, - 'get_account_number': self.get_account_number, - 'get_tax_name': self.get_tax_name, - 'get_order_lines': self.get_order_lines, - }) - self.context = context - user = self.pool.get('res.users').browse(cr, uid, uid) - self.company = user.company_id - - - def get_date_order (self, order): - date_order = "" - - if str(order.date_order) != '': - date_order = datetime.strptime(order.date_order, '%Y-%m-%d') - date_order = date_order.strftime('%d/%m/%Y') - - return date_order - - def get_left_text(self, order): - - text = "" - - company = order.company_id or self.company or None - - if company and company.partner_id: - - partner = company.partner_id - - # Nombre empresa - text += partner.name or "" - # CIF - text += partner.vat and (" - " + partner.vat) or "" - # Tomo - text += partner.es_tomo and (" - " + _("RM Tomo") + " " + partner.es_tomo) or "" - # Libro - text += partner.es_libro and (" " + _("Libro") + " " + partner.es_libro) or "" - # Folio - text += partner.es_folio and (" " + _("Folio") + " " + partner.es_folio) or "" - # Hoja - text += partner.es_hoja and (" " + _("Hoja") + " " + partner.es_hoja) or "" - # Inscripcion - text += partner.es_registro_mercantil and (" " + _("Inscripción") + " " + partner.es_registro_mercantil) or "" - # Final - text += "." - - return text - - def get_footer_text(self, order): - - text = "" - - company = order.company_id or self.company or None - - if company and company.partner_id: - - partner = company.partner_id - addr_ids = self.pool.get('res.partner').address_get(self.cr, self.uid, [partner.id], ['default']) - addr_id = addr_ids['default'] - addr = self.pool.get('res.partner.address').browse(self.cr, self.uid, addr_id) - - # Nombre empresa - text += partner and partner.name or "" - # Calle empresa - text += addr and addr.street and (" - " + addr.street + ".") or "" - # Codigo Postal empresa - text += addr and addr.zip and (" - " + addr.zip) or "" - # Ciudad - text += addr and addr.city and (" " + addr.city) or "" - # Telefono - text += addr and addr.phone and (" - " + _("Tel.") + " " + addr.phone) or "" - # Fax - text += addr and addr.fax and (" - " + _("Fax.") + " " + addr.fax) or "" - # Email - text += addr and addr.email and (" - " + _("E-Mail") + " " + addr.email) or "" - - return text - - def get_company_address (self, order): - - res = [] - - company = order.company_id or self.company or None - - if company and company.partner_id: - - partner = company.partner_id - addr_ids = self.pool.get('res.partner').address_get(self.cr, self.uid, [partner.id], ['default']) - addr_id = addr_ids['default'] - addr = self.pool.get('res.partner.address').browse(self.cr, self.uid, addr_id) - - res.append(partner and partner.name or "") - res.append((addr and addr.street) or '') - res.append((addr and addr.zip or '') + " - " + (addr and addr.city or '')) - res.append((addr and addr.state_id and addr.state_id.name or '') + " (" + (addr and addr.country_id and addr.country_id.name or '') + ")") - res.append(partner and partner.vat or '') - - else: - - res.append(" ") - res.append(" ") - res.append(" ") - res.append(" ") - res.append(" ") - - """ - res.append("Nayar Systems S.L.") - res.append("Calle Taxida 10") - res.append("12003 Castellón") - res.append("España") - res.append("B-12757795") - """ - - return res - - def get_elevator_address (self, order): - - res = [] - - if order.elevator_partner_id: - - partner = order.elevator_partner_id - addr_ids = self.pool.get('res.partner').address_get(self.cr, self.uid, [partner.id], ['default']) - addr_id = addr_ids['default'] - addr = self.pool.get('res.partner.address').browse(self.cr, self.uid, addr_id) - - res.append(partner and partner.name or "") - res.append((addr and addr.street) or '') - res.append((addr and addr.zip or '') + " - " + (addr and addr.city or '')) - res.append((addr and addr.state_id and addr.state_id.name or '') + " (" + (addr and addr.country_id and addr.country_id.name or '') + ")") - res.append(partner and partner.vat or '') - - elif order.partner_id: - - partner = order.partner_id - addr = order.address_order_id - - res.append(partner and partner.name or "") - res.append((addr and addr.street) or '') - res.append((addr and addr.zip or '') + " - " + (addr and addr.city or '')) - res.append((addr and addr.state_id and addr.state_id.name or '') + " (" + (addr and addr.country_id and addr.country_id.name or '') + ")") - res.append(partner and partner.vat or '') - - else: - - res.append(" ") - res.append(" ") - res.append(" ") - res.append(" ") - res.append(" ") - - return res - - - def get_payment_type(self, order): - - return order.payment_type and order.payment_type.name.upper() or '' - - - def get_payment_term(self, order): - - maturity_date = datetime.strptime(order.date_order, '%Y-%m-%d') - str_date = maturity_date.strftime('%d/%m/%Y') - - #Obtenemos fecha vencimiento - if order.payment_term: - for line in order.payment_term.line_ids: - if line.value in ('balance',): - maturity_date = datetime.strptime(order.date_order, '%Y-%m-%d') + relativedelta(days=+line.days) - str_date = maturity_date.strftime('%d/%m/%Y') - - return str_date - - - def get_account_number(self, order): - - bank_text = "" - - if order.payment_type and order.payment_type.name.upper() == "TRANSFERENCIA EN CCC": - - company = order.company_id or self.company or None - - if company and company.partner_id: - partner_id = company.partner_id.id - - pool = pooler.get_pool(self.cr.dbname) - bank_obj = pool.get('res.partner.bank') - bank_ids = bank_obj.search(self.cr, self.uid, [ ('partner_id','=', partner_id), ('default_bank','=', 'true')], limit=1) - - for bank in bank_obj.browse(self.cr, self.uid, bank_ids): - bank_text = format_acc_number(bank.iban or bank.acc_number or "") - else: - if order.partner_bank: - bank_text = format_acc_number(order.partner_bank.iban or order.partner_bank.acc_number or "", masked=True) - - return bank_text - - - def get_tax_name(self, order): - - tax = "" - for line in order.order_line: - if line.tax_id: - tax = line.tax_id[0].name - break - - return tax - - - def get_order_lines (self, order): - - product_obj = self.pool.get('product.product') - - res = [] - - for l in order.order_line: - line = {} - - line["concept"] = l.product_id and l.product_id.name or " " - line["uds"] = int(l.product_uos_qty or 0) - line["price"] = l.price_unit or 0 - line["dto"] = l.discount or 0 - line["import"] = l.price_subtotal or 0 - - res.append(line) - - return res - -report_sxw.report_sxw('report.proform.invoice.custom','sale.order','addons/dos_proform_invoice_report/report/proform_invoice.rml',parser=proform_invoice_custom) +from openerp.report import report_sxw +from openerp.osv import orm +from openerp.tools.bank import format_acc_number +from openerp.tools.translate import _ + + +class ProformInvoiceCustom(report_sxw.rml_parse): + def __init__(self, cr, uid, name, context): + super(ProformInvoiceCustom, self).__init__(cr, uid, name, + context=context) + self.localcontext.update({ + 'time': time, + 'get_left_text': self.get_left_text, + 'get_footer_text': self.get_footer_text, + 'get_date_order': self.get_date_order, + 'get_company_address': self.get_company_address, + 'get_elevator_address': self.get_elevator_address, + 'get_payment_type': self.get_payment_type, + 'get_payment_term': self.get_payment_term, + 'get_account_number': self.get_account_number, + 'get_tax_name': self.get_tax_name, + 'get_order_lines': self.get_order_lines, + }) + self.context = context + user = self.pool.get('res.users').browse(cr, uid, uid) + self.company = user.company_id + + def get_date_order(self, order): + date_order = "" + if str(order.date_order) != '': + date_order = datetime.strptime(order.date_order, '%Y-%m-%d') + date_order = date_order.strftime('%d/%m/%Y') + return date_order + + def get_left_text(self, order): + text = "" + company = order.company_id or self.company or None + if company and company.partner_id: + partner = company.partner_id + # Nombre empresa + text += partner.name or "" + # CIF + text += partner.vat and (" - " + partner.vat) or "" + # Tomo + text += partner.es_tomo and (" - " + _("RM Tomo") + " " + + partner.es_tomo) or "" + # Libro + text += partner.es_libro and (" " + _("Libro") + " " + + partner.es_libro) or "" + # Folio + text += partner.es_folio and (" " + _("Folio") + " " + + partner.es_folio) or "" + # Hoja + text += partner.es_hoja and (" " + _("Hoja") + " " + + partner.es_hoja) or "" + # Inscripcion + text += (partner.es_registro_mercantil and + (" " + _("Inscripción") + " " + + partner.es_registro_mercantil) or "") + # Final + text += "." + + return text + + def get_footer_text(self, order): + text = "" + company = order.company_id or self.company or None + if company and company.partner_id: + partner = company.partner_id + # Nombre empresa + text += partner and partner.name or "" + # Calle empresa + text += partner.street and (" - " + partner.street + ".") or "" + # Codigo Postal empresa + text += partner.zip and (" - " + partner.zip) or "" + # Ciudad + text += partner.city and (" " + partner.city) or "" + # Telefono + text += partner.phone and (" - " + _("Tel.") + " " + + partner.phone) or "" + # Fax + text += partner.fax and (" - " + _("Fax.") + " " + + partner.fax) or "" + # Email + text += partner.email and (" - " + _("E-Mail") + " " + + partner.email) or "" + return text + + def get_company_address(self, order): + res = [] + company = order.company_id or self.company or None + if company and company.partner_id: + partner = company.partner_id + res.append(partner and partner.name or "") + res.append((partner.street) or '') + res.append((partner.zip or '') + " - " + + (partner.city or '')) + res.append((partner.state_id and partner.state_id.name or '') + + " (" + (partner.country_id and + partner.country_id.name or '') + ")") + res.append(partner and partner.vat or '') + else: + for i in range(5): + res.append(" ") + """ + res.append("Nayar Systems S.L.") + res.append("Calle Taxida 10") + res.append("12003 Castellón") + res.append("España") + res.append("B-12757795") + """ + return res + + def get_elevator_address(self, order): + res = [] + if order.elevator_partner_id: + partner = order.elevator_partner_id + res.append(partner and partner.name or "") + res.append((partner.street) or '') + res.append((partner.zip or '') + " - " + + (partner.city or '')) + res.append((partner.state_id and partner.state_id.name or '') + + " (" + (partner.country_id and + partner.country_id.name or '') + ")") + res.append(partner and partner.vat or '') + elif order.partner_id: + partner = order.partner_id + res.append(partner and partner.name or "") + res.append((partner.street) or '') + res.append((partner.zip or '') + " - " + (partner.city or '')) + res.append((partner.state_id and partner.state_id.name or '') + + " (" + (partner.country_id and + partner.country_id.name or '') + ")") + res.append(partner and partner.vat or '') + else: + for i in range(5): + res.append(" ") + return res + + def get_payment_type(self, order): + return order.payment_type and order.payment_type.name.upper() or '' + + def get_payment_term(self, order): + maturity_date = datetime.strptime(order.date_order, '%Y-%m-%d') + str_date = maturity_date.strftime('%d/%m/%Y') + # Obtenemos fecha vencimiento + if order.payment_term: + for line in order.payment_term.line_ids: + if line.value in ('balance',): + maturity_date = (datetime.strptime(order.date_order, + '%Y-%m-%d') + + relativedelta(days=+line.days)) + str_date = maturity_date.strftime('%d/%m/%Y') + return str_date + + def get_account_number(self, order): + bank_text = "" + if (order.payment_type and + order.payment_type.name.upper() == "TRANSFERENCIA EN CCC"): + company = order.company_id or self.company or None + if company and company.partner_id: + partner_id = company.partner_id.id + pool = pooler.get_pool(self.cr.dbname) + bank_obj = pool.get('res.partner.bank') + bank_ids = bank_obj.search(self.cr, self.uid, + [('partner_id', '=', partner_id), + ('default_bank', '=', 'true')], + limit=1) + for bank in bank_obj.browse(self.cr, self.uid, bank_ids): + bank_text = format_acc_number(bank.iban or bank.acc_number + or "") + else: + if order.partner_bank: + bank_text = format_acc_number(order.partner_bank.iban or + order.partner_bank.acc_number or + "", masked=True) + return bank_text + + def get_tax_name(self, order): + tax = "" + for line in order.order_line: + if line.tax_id: + tax = line.tax_id[0].name + break + return tax + + def get_order_lines(self, order): + product_obj = self.pool.get('product.product') + res = [] + for l in order.order_line: + line = {} + line["concept"] = l.product_id and l.product_id.name or " " + line["uds"] = int(l.product_uos_qty or 0) + line["price"] = l.price_unit or 0 + line["dto"] = l.discount or 0 + line["import"] = l.price_subtotal or 0 + res.append(line) + return res + +report_sxw.report_sxw('report.proform.invoice.custom', 'sale.order', + 'addons/dos_proform_invoice_report/report/' + 'proform_invoice.rml', parser=ProformInvoiceCustom) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: === renamed file 'dos_proform_invoice_report/proform_invoice_report.xml' => 'dos_proform_invoice_report/report/proform_invoice_report.xml'
-- Mailing list: https://launchpad.net/~avanzosc Post to : [email protected] Unsubscribe : https://launchpad.net/~avanzosc More help : https://help.launchpad.net/ListHelp

