This question has been flagged
1 Reply
2172 Views

error creating pdf in qweb.

Good evening, I have an error message when opening a newly created file.

"pdf could not be opened because it is not a supported file type or it may be corrupted."

It seems to me that the error is when passing the variable "records", but I don't know how to solve it, I would appreciate your help.

What could be the problem?? (odoo11)

records=[{price_total: 1044.3, number: F001-00000001, product_id: 32}, {price_total: 1044.3, number: F001-00000004, product_id: 32}]

    def imprimir(self):

        self.ensure_one()

        records= self._sql_get_line_for_report(self.fecha_inicio,self.fecha_fin)

        return self.env.ref('report_comprobantes_efact.linea_report_formato_pdf').report_action(self,data={"records":records})

<?xml version="1.0" encoding="utf-8"?>
<odoo>
      <data>
             <template id="template_report_formato_pdf">
            <t t-call="web.html_container">
                <t t-foreach="docs" t-as="doc">
                    <t t-call="web.external_layout">
                        <div class="page">
                            <h1>FORMATO</h1>
                            <div class="row">
                                <table>
                                    <tr class="border-black">
                                            <td><strong>Moneda</strong></td>
                                            <td>
                                                <span t-esc="doc.company_currency_id"/>
                                            </td>
                                    </tr>
                                    <tr class="border-black">
                                            <td><strong>RUC</strong></td>
                                            <td>
                                                <span t-esc="doc.company_id.vat"/>
                                            </td>
                                    </tr>
                                    <tr class="border-black">
                                            <td><strong>APELLIDOS Y NOMBRES, DENOMINACION O RAZON SOCIAL</strong></td>
                                            <td>
                                                <span t-esc="doc.company_id.name"/>
                                            </td>
                                    </tr>
                                </table>
                            </div>
                            
                                <table class="table table-condensed" >
                                       
                                            <t t-foreach="records" t-as="x">
                                            <t t-foreach="x" t-as="clave">
                                                <tr style="border:solid grey 4px">
                                                <td><span t-esc="x['clave']"/></td>                                                                                             
                                                </tr>
                                            </t>
                                           </t>
                                </table>
                        </div>
                    </t>
                </t>
            </t>
        </template>
  </data>
</odoo>




Avatar
Discard
Best Answer

Hi GiancaFTx,

Update imprimir() method: pass blank data dictionary.

1. def imprimir(self):

        self.ensure_one()

        data = {}

        return self.env.ref('report_comprobantes_efact.linea_report_formato_pdf').report_action(self,data=data)

2. Create new method in model for which you are printing report and call that method inside xml template to get data of records.


def get_data_of_record(self):

    records= self._sql_get_line_for_report(self.fecha_inicio,self.fecha_fin)
    return records


<?xml version="1.0" encoding="utf-8"?>
<odoo>
      <data>
             <template id="template_report_formato_pdf">
            <t t-call="web.html_container">
                <t t-foreach="docs" t-as="doc">
                    <t t-call="web.external_layout">
                        <div class="page">
                            <h1>FORMATO</h1>
                            <div class="row">
                                <table>
                                    <tr class="border-black">
                                            <td><strong>Moneda</strong></td>
                                            <td>
                                                <span t-esc="doc.company_currency_id"/>
                                            </td>
                                    </tr>
                                    <tr class="border-black">
                                            <td><strong>RUC</strong></td>
                                            <td>
                                                <span t-esc="doc.company_id.vat"/>
                                            </td>
                                    </tr>
                                    <tr class="border-black">
                                            <td><strong>APELLIDOS Y NOMBRES, DENOMINACION O RAZON SOCIAL</strong></td>
                                            <td>
                                                <span t-esc="doc.company_id.name"/>
                                            </td>
                                    </tr>
                                </table>
                            </div>
                            
                                <table class="table table-condensed" >
                                       
                                            <t t-foreach="doc.get_data_of_record()" t-as="x">
                                            <t t-foreach="x" t-as="clave">
                                                <tr style="border:solid grey 4px">
                                                <td><span t-esc="x['clave']"/></td>                                                                                             
                                                </tr>
                                            </t>
                                           </t>
                                </table>
                        </div>
                    </t>
                </t>
            </t>
        </template>
  </data>
</odoo>

Avatar
Discard