Ir al contenido
Menú
Se marcó esta pregunta

Hi!, 


Im trying to create a zpl report by giving products from an delivery move, but when i print the report the products are empty, my wizard have a grid where i write the quantity of labels and the quantity of each product, but when the zpl prints it doesnt contain the products, i read about transient models and saw that the many2one fields are not maintained when I create the zpl, what can i do?

This is the code to my wizard:

from odoo import models, fields, api


class WizardOutLabel(models.Model):

    _name = "out.label.wizard"

    _description = "Wizard para etiquetas de salida"


    transient_out_label_id = fields.One2many(

        'out.label', 'wizard_id', string="Wizard ID"

    )


    stock_picking_id = fields.Many2one('stock.picking', string="Movimiento de salida")


    @api.model

    def default_get(self, fields):

        res = super().default_get(fields)

        picking_id = self.env.context.get('default_stock_picking_id')

        if picking_id:

            picking = self.env['stock.picking'].browse(picking_id)

            lines = []

            for move in picking.move_ids_without_package:

                lines.append((0, 0, {

                    'product_id': move.product_id.product_tmpl_id.id,

                    'product_qty': move.product_uom_qty,

                    'labels_qty': 1,

                    'stock_picking_id': picking.id,

                    'product_name': move.product_id.display_name,

                }))

            res['transient_out_label_id'] = lines

            res['stock_picking_id'] = picking.id

        return res


    def action_confirm(self):

        report_action = self.env.ref('inventory_labels.download_out_label_report_zpl').report_action(self)

        report_action['close_on_report_download'] = True

        return report_action

Then i have my grid for products in other model:

from odoo import models, fields, api


class TransientOutLabel(models.Model):

    _name = "out.label"

    _description = "Utilizado para etiquetas de salida"


    wizard_id = fields.Many2one('out.label.wizard', string="Wizard")


    product_id = fields.Many2one(

        'product.template',

        string="Producto"

    )


    product_name = fields.Char(string="Nombre del producto")


    stock_picking_id = fields.Many2one('stock.picking', string="Movimiento de salida")


    labels_qty = fields.Integer(string="Cantidad de etiquetas")


    product_qty = fields.Float(string="Cantidad de producto")


my code xml is:

<data>

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

        <field name="name">out.labels.wizard.list</field>

        <field name="model">out.label.wizard</field>

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

            <form string="Etiquetas de salida">

                <field name="transient_out_label_id">

                <tree editable="bottom" create="0" delete="0">

                    <field name="product_id" readonly="1"/>

                    <field name="product_name" readonly="1"/>

                    <field name="labels_qty"/>

                    <field name="product_qty"/>

                </tree>

            </field>

                <footer>

                    <button name="action_confirm" type="object" string="Confirmar" class="btn-primary"/>

                    <button string="Cancelar" class="btn-secondary" special="cancel"/>

                </footer>

            </form>

        </field>

    </record>


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

        <field name="name">stock.picking.form.inherit.wizard</field>

        <field name="model">stock.picking</field>

        <field name="inherit_id" ref="stock.view_picking_form"/>

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

            <xpath expr="//button[@name='do_print_picking']" position="replace">

                <button string="Imprimir etiquetas" name="%(open_out_label_wizard)d" type="action"/>

            </xpath>

        </field>

    </record>


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

    <field name="name">out_label.zpl_report</field>

    <field name="type">qweb</field>

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

        <t t-name="inventory_labels.product_out_label_zpl_report">

    <t t-foreach="docs" t-as="wizard">

        <t t-foreach="wizard.transient_out_label_id" t-as="line">

            <t t-foreach="range(line.labels_qty)" t-as="i">

<t t-set="clean_name"

    t-value="(line.product_name or '').translate({

        ord('á'): 'a', ord('é'): 'e', ord('í'): 'i', ord('ó'): 'o', ord('ú'): 'u',

        ord('Á'): 'A', ord('É'): 'E', ord('Í'): 'I', ord('Ó'): 'O', ord('Ú'): 'U',

        ord('ñ'): 'n', ord('Ñ'): 'N'

    }).strip()"/>


<t t-if="len(clean_name) &lt;= 48">

^XA

^FO50,50^A0N,30,30^FDProducto: <t t-esc="line.product_id.name"/>^FS

^FO50,95^A0N,30,30^FDCantidad: <t t-esc="line.product_qty"/>^FS

^XZ

</t>

<t t-else="">

^XA

^FO50,50^A0N,30,30^FDProducto: <t t-esc="clean_name[:48]"/>^FS

^FO50,85^A0N,30,30^FD<t t-esc="clean_name[48:]"/>^FS

^FO50,140^A0N,30,30^FDCantidad: <t t-esc="line.product_qty"/>^FS

^XZ

</t>

            </t>

        </t>

    </t>

</t>



    </field>

</record>



</data>


and my actions:

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

        <field name="name">Etiquetas de salida de producto</field>

        <field name="res_model">out.label.wizard</field>

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

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

        <field name="context">{'default_stock_picking_id': active_id}</field>

    </record>


    <record id="download_out_label_report_zpl" model="ir.actions.report">

        <field name="name">Etiquetas de salida de producto</field>

        <field name="model">out.label.wizard</field>

        <field name="report_type">qweb-text</field>

        <field name="report_name">inventory_labels.product_out_label_zpl_report</field>

    </record>

Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
0
ene 25
1102
0
mar 15
3784
1
mar 15
5415
0
mar 25
779
2
mar 25
1345