Ir al contenido
Odoo Menú
  • Iniciar sesión
  • Pruébalo gratis
  • Aplicaciones
    Finanzas
    • Contabilidad
    • Facturación
    • Gastos
    • Hoja de cálculo (BI)
    • Documentos
    • Firma electrónica
    Ventas
    • CRM
    • Ventas
    • PdV para tiendas
    • PdV para restaurantes
    • Suscripciones
    • Alquiler
    Sitios web
    • Creador de sitios web
    • Comercio electrónico
    • Blog
    • Foro
    • Chat en vivo
    • eLearning
    Cadena de suministro
    • Inventario
    • Manufactura
    • PLM
    • Compras
    • Mantenimiento
    • Calidad
    Recursos humanos
    • Empleados
    • Reclutamiento
    • Vacaciones
    • Evaluaciones
    • Referencias
    • Flotilla
    Marketing
    • Redes sociales
    • Marketing por correo
    • Marketing por SMS
    • Eventos
    • Automatización de marketing
    • Encuestas
    Servicios
    • Proyectos
    • Registro de horas
    • Servicio externo
    • Soporte al cliente
    • Planeación
    • Citas
    Productividad
    • Conversaciones
    • Aprobaciones
    • IoT
    • VoIP
    • Artículos
    • WhatsApp
    Aplicaciones externas Studio de Odoo Plataforma de Odoo en la nube
  • Industrias
    Venta minorista
    • Librería
    • Tienda de ropa
    • Mueblería
    • Tienda de abarrotes
    • Ferretería
    • Juguetería
    Alimentos y hospitalidad
    • Bar y pub
    • Restaurante
    • Comida rápida
    • Casa de huéspedes
    • Distribuidora de bebidas
    • Hotel
    Bienes inmuebles
    • Agencia inmobiliaria
    • Estudio de arquitectura
    • Construcción
    • Gestión de bienes inmuebles
    • Jardinería
    • Asociación de propietarios
    Consultoría
    • Firma contable
    • Partner de Odoo
    • Agencia de marketing
    • Bufete de abogados
    • Adquisición de talentos
    • Auditorías y certificaciones
    Manufactura
    • Textil
    • Metal
    • Muebles
    • Comida
    • Cervecería
    • Regalos corporativos
    Salud y ejercicio
    • Club deportivo
    • Óptica
    • Gimnasio
    • Especialistas en bienestar
    • Farmacia
    • Peluquería
    Trades
    • Personal de mantenimiento
    • Hardware y soporte de TI
    • Sistemas de energía solar
    • Zapateros y fabricantes de calzado
    • Servicios de limpieza
    • Servicios de calefacción, ventilación y aire acondicionado
    Otros
    • Organización sin fines de lucro
    • Agencia para la protección del medio ambiente
    • Alquiler de anuncios publicitarios
    • Fotografía
    • Alquiler de bicicletas
    • Distribuidor de software
    Descubre todas las industrias
  • Odoo Community
    Aprende
    • Tutoriales
    • Documentación
    • Certificaciones
    • Capacitación
    • Blog
    • Podcast
    Fortalece la educación
    • Programa educativo
    • Scale Up! El juego empresarial
    • Visita Odoo
    Obtén el software
    • Descargar
    • Compara ediciones
    • Versiones
    Colabora
    • GitHub
    • Foro
    • Eventos
    • Traducciones
    • Conviértete en partner
    • Servicios para partners
    • Registra tu firma contable
    Obtén servicios
    • Encuentra un partner
    • Encuentra un contador
    • Contacta a un consultor
    • Servicios de implementación
    • Referencias de clientes
    • Soporte
    • Actualizaciones
    GitHub YouTube Twitter LinkedIn Instagram Facebook Spotify
    +1 (650) 691-3277
    Solicita una demostración
  • Precios
  • Ayuda

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Contabilidad
  • Inventario
  • PoS
  • Proyectos
  • MRP
All apps
Debe estar registrado para interactuar con la comunidad.
Todas las publicaciones Personas Insignias
Etiquetas (Ver todo)
odoo accounting v14 pos v15
Acerca de este foro
Debe estar registrado para interactuar con la comunidad.
Todas las publicaciones Personas Insignias
Etiquetas (Ver todo)
odoo accounting v14 pos v15
Acerca de este foro
Ayuda

why my code to create excel report doesn't work in odoo 10?

Suscribirse

Reciba una notificación cuando haya actividad en esta publicación

Se marcó esta pregunta
1 Responder
6330 Vistas
Avatar
haolingca

Hi  My  friend,

      i want to create a  function  that when user click the button will  popup  a  form that let the user click the url  to  download the excel  file.  following is my code , it can  create the excel  file  and write to the binary  field,  but the popup  form  doesn't  show up .  what is wrong  with my code?


Thank you !

following is my code:

1.  define the button

<button name="export_excel" type="object" string="Create Reports"/>

2. define view

<record id="excel_download_form" model="ir.ui.view">

     <field name="name">Export Excel</field>

     <field name="model">excel.report</field>

     <field name="arch" type="xml">

        <form create="0" string="Excel Report">

           <group>

               <field name="file_name" invisible="1"/>

               <field name="excel_file" readonly="1" filename="file_name" nolabel="1"/>

           </group>

           <footer>

               <button special="cancel" string="Cancel" type="object" class="btn-default"/>

           </footer>

         </form>

      </field>

  </record>

<record id="excel_form_view" model="ir.actions.act_window">

            <field name="name">Export Report</field>

            <field name="view_id" ref="excel_download_form"/>

            <field name="type">ir.actions.act_window</field>

            <field name="res_model">excel.report</field>

            <field name="view_type">form</field>

            <field name="view_mode">form</field>

            <field name="target">new</field>

        </record>

3.  python  class ( the issue is  when function export_excel finishing executing,  return  doesn't show the popup  form)

class excel_report(models.TransientModel):

    _name = "excel.report"

    excel_file = fields.Binary('Download Excel Report')

    file_name = fields.Char('File Name')

    @api.multi

    def export_excel(self):

        filename= 'report.xls'

        workbook= xlwt.Workbook(encoding="UTF-8")

        worksheet= workbook.add_sheet('Excel Report')

        worksheet.write(0,0,'test  data')

        fp = StringIO.StringIO()

        workbook.save(fp)

        fp.seek(0)

        export_id = self.env['excel.report'].create({'excel_file': base64.encodestring(fp.getvalue()),'file_name': filename})

        fp.close()

        return {

           'view_mode': 'form',

    'res_id': export_id,

    'res_model': 'excel.report',

    'view_type': 'form',

    'type': 'ir.actions.act_window',

    'target': 'new',

       }

1
Avatar
Descartar
Avatar
prabhakaran
Mejor respuesta

Try this


import xlwt import xlrd import os import win32com.client import base64 from datetime import datetime from odoo import tools from odoo import fields, models, api ADDONS_PATH = tools.config['addons_path'].split(",")[-1]

class CreateReport(models.Model):

    _inherit = "purchase.order"

    @api.multi

    def action_wizard_open(self):

        context = dict(self.env.context or {})

        self.ensure_one()

        context.update({'act_id':self.id})

        return {

                'type': 'ir.actions.act_window',

                'view_type' : 'form',

                'view_mode' : 'form',

                'res_model' : 'report.wizard',

                'target' : 'new',

                'context' : context,

            }

class PaymentWizard(models.TransientModel):

    _name = 'report.wizard'

    _description = 'Report Details'

    attachment = fields.Binary('File', nodrop=True, readonly= True)

    attach_name = fields.Char('Attachment Name')

    @api.multi

    def get_values(self):

        context = dict(self.env.context or {})

        vals = context.get('act_id')

        purchase = {}

        purchase_value = []

        rec = self.env['purchase.order'].search([('id','=',vals)])

        purchase['date_planned'] = rec.date_planned

        purchase['picking_type_id'] = rec.picking_type_id.name

        purchase['invoice_status'] = rec.invoice_status

        purchase['payment_term_id'] = rec.payment_term_id.id

        purchase['details'] = rec.name

        purchase['reference'] = rec.partner_id.name

        for line in rec.order_line:

            order = {}

            order['product_id'] = line.product_id.name

            order['name'] = line.name

            order['date_planned'] = line.date_planned

            order['company_id'] = line.company_id.name

            order['product_qty'] = line.product_qty

            order['qty_received'] = line.qty_received

            order['qty_invoiced'] = line.qty_invoiced

            order['price_unit'] = line.price_unit

            order['taxes_id'] = line.taxes_id.name

            order['price_subtotal'] = line.price_subtotal

            purchase_value.append(order)

        purchase['orders'] = purchase_value

        style0 = xlwt.easyxf('font: name Times New Roman, bold on; pattern: pattern solid, fore_colour white;', num_format_str='#,##0.00')

        style1 = xlwt.easyxf('font: name Times New Roman, bold 1,height 250; pattern: pattern solid, fore_colour aqua;', num_format_str='#,##0.00')

        workbook = xlwt.Workbook()

        sheet = workbook.add_sheet('Purchase Order Report')

        sheet.write_merge(1, 1, 2, 5, 'Purchase No.', style1)

        sheet.write_merge(1, 1, 6, 7, purchase['details'], style1)

        sheet.write(3, 2, 'Vendor Name', style0)

        sheet.write(3, 4, purchase['reference'], style0)

        sheet.write(4, 2, 'Scheduled Date', style0)

        sheet.write(4, 4, purchase['date_planned'], style0)

        sheet.write(5, 2, 'Deliver To', style0)

        sheet.write(5, 4, purchase['picking_type_id'], style0)

        sheet.write(6, 2, 'Bill Status', style0)

        sheet.write(6, 4, purchase['invoice_status'], style0)

        sheet.write(7, 2, 'Payments', style0)

        sheet.write(7, 4, purchase['payment_term_id'], style0)

        sheet.write_merge(9, 9, 1, 2, 'Product', style1)

        sheet.write_merge(9, 9, 3, 4,'Description', style1)

        sheet.write_merge(9, 9, 5, 6,'Date', style1)

        sheet.write_merge(9, 9, 7, 8, 'Company', style1)

        sheet.write_merge(9, 9, 9, 10, 'Quantity', style1)

        sheet.write_merge(9, 9, 11, 12, 'Unit Price', style1)

        n = 10

        for order in purchase['orders']:

            sheet.write_merge(n, n, 1, 2, order['product_id'], style0)

            sheet.write_merge(n, n, 3, 4, order['name'], style0)

            sheet.write_merge(n, n, 5, 6, order['date_planned'], style0)

            sheet.write_merge(n, n, 7, 8, order['company_id'], style0)

            sheet.write_merge(n, n, 9, 10, order['product_qty'], style0)

            sheet.write_merge(n, n, 11, 12, order['price_unit'], style0)

            n += 1

        ams_time = datetime.now()

        date = ams_time.strftime('%m-%d-%Y %H.%M.%S')

        filename = os.path.join(ADDONS_PATH, 'Report'+ '-' + date +'.xls')

        workbook.save(filename)

        fp = open(filename, "rb")

        file_data =fp.read()

        out = base64.encodestring(file_data)

# excel = win32com.client.Dispatch(filename)

# workbook = excel.Workbooks.open(')

# workbook.SaveAs('unencrypted.xls')

        attach_vals = {

                'attach_name': 'Report'+ '-' + date +'.xls',

                'attachment': out,

            }

        fp.close()

        os.remove(filename)

        self.write(attach_vals)

        return {

        'type': 'ir.actions.act_window',

        'name': ('Report'),

        'res_model': 'report.wizard',

           'res_id': self[0].id,

            'view_type': 'form',

            'view_mode': 'form',

            'target': 'new',

            'nodestroy': True,

        }

0
Avatar
Descartar
¿Le interesa esta conversación? ¡Participe en ella!

Cree una cuenta para poder utilizar funciones exclusivas e interactuar con la comunidad.

Registrarse
Comunidad
  • Tutoriales
  • Documentación
  • Foro
Código abierto
  • Descargar
  • GitHub
  • Runbot
  • Traducciones
Servicios
  • Alojamiento en Odoo.sh
  • Soporte
  • Actualizaciones del software
  • Desarrollos personalizados
  • Educación
  • Encuentra un contador
  • Encuentra un partner
  • Conviértete en partner
Sobre nosotros
  • Nuestra empresa
  • Activos de marca
  • Contáctanos
  • Empleos
  • Eventos
  • Podcast
  • Blog
  • Clientes
  • Legal • Privacidad
  • Seguridad
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo es un conjunto de aplicaciones de código abierto que cubren todas las necesidades de tu empresa: CRM, comercio electrónico, contabilidad, inventario, punto de venta, gestión de proyectos, etc.

La propuesta única de valor de Odoo es ser muy fácil de usar y estar totalmente integrado.

Sitio web hecho con

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now