Skip to Content
Odoo Menú
  • Registra entrada
  • Prova-ho gratis
  • Aplicacions
    Finances
    • Comptabilitat
    • Facturació
    • Despeses
    • Full de càlcul (IA)
    • Documents
    • Signatura
    Vendes
    • CRM
    • Vendes
    • Punt de venda per a botigues
    • Punt de venda per a restaurants
    • Subscripcions
    • Lloguer
    Imatges de llocs web
    • Creació de llocs web
    • Comerç electrònic
    • Blog
    • Fòrum
    • Xat en directe
    • Aprenentatge en línia
    Cadena de subministrament
    • Inventari
    • Fabricació
    • PLM
    • Compres
    • Manteniment
    • Qualitat
    Recursos humans
    • Empleats
    • Reclutament
    • Absències
    • Avaluacions
    • Recomanacions
    • Flota
    Màrqueting
    • Màrqueting Social
    • Màrqueting per correu electrònic
    • Màrqueting per SMS
    • Esdeveniments
    • Automatització del màrqueting
    • Enquestes
    Serveis
    • Projectes
    • Fulls d'hores
    • Servei de camp
    • Suport
    • Planificació
    • Cites
    Productivitat
    • Converses
    • Validacions
    • IoT
    • VoIP
    • Coneixements
    • WhatsApp
    Aplicacions de tercers Odoo Studio Plataforma d'Odoo al núvol
  • Sectors
    Comerç al detall
    • Llibreria
    • Botiga de roba
    • Botiga de mobles
    • Botiga d'ultramarins
    • Ferreteria
    • Botiga de joguines
    Food & Hospitality
    • Bar i pub
    • Restaurant
    • Menjar ràpid
    • Guest House
    • Distribuïdor de begudes
    • Hotel
    Immobiliari
    • Agència immobiliària
    • Estudi d'arquitectura
    • Construcció
    • Gestió immobiliària
    • Jardineria
    • Associació de propietaris de béns immobles
    Consultoria
    • Empresa comptable
    • Partner d'Odoo
    • Agència de màrqueting
    • Bufet d'advocats
    • Captació de talent
    • Auditoria i certificació
    Fabricació
    • Textile
    • Metal
    • Mobles
    • Menjar
    • Brewery
    • Regals corporatius
    Salut i fitness
    • Club d'esport
    • Òptica
    • Centre de fitness
    • Especialistes en benestar
    • Farmàcia
    • Perruqueria
    Trades
    • Servei de manteniment
    • Hardware i suport informàtic
    • Sistemes d'energia solar
    • Shoe Maker
    • Serveis de neteja
    • Instal·lacions HVAC
    Altres
    • Nonprofit Organization
    • Agència del medi ambient
    • Lloguer de panells publicitaris
    • Fotografia
    • Lloguer de bicicletes
    • Distribuïdors de programari
    Browse all Industries
  • Comunitat
    Aprèn
    • Tutorials
    • Documentació
    • Certificacions
    • Formació
    • Blog
    • Pòdcast
    Potenciar l'educació
    • Programa educatiu
    • Scale-Up! El joc empresarial
    • Visita Odoo
    Obtindre el programari
    • Descarregar
    • Comparar edicions
    • Novetats de les versions
    Col·laborar
    • GitHub
    • Fòrum
    • Esdeveniments
    • Traduccions
    • Converteix-te en partner
    • Services for Partners
    • Registra la teva empresa comptable
    Obtindre els serveis
    • Troba un partner
    • Troba un comptable
    • Contacta amb un expert
    • Serveis d'implementació
    • Referències del client
    • Suport
    • Actualitzacions
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Programar una demo
  • Preus
  • Ajuda

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

  • CRM
  • e-Commerce
  • Comptabilitat
  • Inventari
  • PoS
  • Projectes
  • MRP
All apps
You need to be registered to interact with the community.
All Posts People Badges
Etiquetes (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
Etiquetes (View all)
odoo accounting v14 pos v15
About this forum
Ajuda

odoo 8 qweb foreach array

Subscriure's

Get notified when there's activity on this post

This question has been flagged
odoo8
4 Respostes
9310 Vistes
Avatar
Nischal

using the below code, i want to display unique packages and not duplicate them. But still i have one package gets duplicated if result_package_id is same for first and last iteration of pack_operation_ids. Is there a way to save all the result_package_id in a array and then match it in every loop of pack_operation_ids

            <?xml version="1.0"?>

            <t t-name="stock.report_picking_packaging">

            <t t-call="report.html_container">

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

            <t t-set="prev" t-value="0" />

            <p> <t t-esc="prev"/><b>Prev: </b></p>

              <tr t-foreach="o.pack_operation_ids" t-as="n">

              <t t-set="new" t-value="n.result_package_id" />

                 <p><t t-esc="new"/><b>new: </b></p>

                 <p t-if="new != prev"><b>Package name: </b><span t-field="n.result_package_id"/></p>

                 <t t-set="prev" t-value="n.result_package_id" />

                <p> <t t-esc="prev"/><b>Prev: </b></p>

           <br/>

            </tr>

           </t>

          </t>

           </t>


below is the display

0Prev:

stock.quant.package(21,)new:

Package name: BOX0018

stock.quant.package(21,)Prev:

stock.quant.package(20,)new:

Package name: BOX0017

stock.quant.package(20,)Prev:

stock.quant.package(20,)new:

stock.quant.package(20,)Prev:

stock.quant.package(19,)new:

Package name: BOX0016

stock.quant.package(19,)Prev:

stock.quant.package(19,)new:

stock.quant.package(19,)Prev:

stock.quant.package(21,)new:

Package name: BOX0018

stock.quant.package(21,)Prev:




 Working code, help from Jaydeep Barot.

                   <t t-name="stock.report_picking_packaging">

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

                  <t t-call="report.html_container">

                 <h1>PACKAGES</h1>

                     <table class="table table-condensed" t-if="o.pack_operation_ids">

                     <thead>

                       <tr>

                       <th><strong>Package Name</strong></th>

                        </tr>

                       </thead>

                      <tbody>

                      <t t-set="package" t-value="list(set([ pack.result_package_id for pack in o.pack_operation_ids if                      pack.result_package_id]))"/>

                         <tr t-foreach="package" t-as="p">

                         <td><span t-esc="p.name"/>

                               <p><b>Package size (LXWXH): </b><span t-field="p.length"/><b>X</b><span t-field="p.width"/><b>X</b><span t-field="p.height"/></p>

                                 <p><b>Package net_weight: </b><span t-field="p.total_estim_weight_net"/><b>Package gross_weight: </b>                                    <span t-field="p.total_estim_weight"/></p>

                                      </td>

                                   <tr t-foreach="p.quant_ids" t-as="q">

                                    <td><p><b>Product Inside: </b><span t-field="q.product_id"/><b>Product Qty: </b><span t-field="q.qty"/>                                      </p></td>

                                     </tr>

                                       </tr>

                                     </tbody>

                                      </table>

                              </t>

                              </t>

                               </t>

0
Avatar
Descartar
Nischal
Autor

with help from Jaydeep Barot, i got below code to work, which might help others looking for help

PACKAGES

Package Name

Package size (LXWXH): XX

Package net_weight: Package gross_weight:

Product Inside: Product Qty:

Nischal
Autor

PACKAGES

Package Name

Package size (LXWXH): XX

Package net_weight: Package gross_weight:

Product Inside: Product Qty:

Avatar
Jaydeep Barot (jar)
Best Answer

Hello Nischal,

Using this code :

<?xml version="1.0"?>

<t t-name="stock.report_picking_packaging">

<t t-call="report.html_container">

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

<t t-set="prev" t-value="0" />

<p> <t t-esc="prev"/><b>Prev: </b></p>

<tr t-foreach="o.pack_operation_ids" t-as="n">

<t t-set="new" t-value="n.result_package_id.id" />

<p><t t-esc="new"/><b>new: </b></p>

<p t-if="new != prev"><b>Package name: </b><span t-field="n.result_package_id"/></p>

<t t-set="prev" t-value="n.result_package_id.id" />

<p> <t t-esc="prev"/><b>Prev: </b></p>

<br/>

</tr>

</t>

</t>

</t>


It's display below: 

==============

0Prev:

21 new:

Package name: BOX0018

21 Prev:

20 new:

Package name: BOX0017

20 Prev:

19 new:

Package name: BOX0016

19 Prev:

21 new:

Package name: BOX0018

21 Prev:



=========================================

Here is remove duplicate packages.

=========================================

<h1>PACKAGES</h1>

<table class="table table-condensed" t-if="o.pack_operation_ids">

<thead>

<tr>

<th><strong>Package Name</strong></th>

</tr>

</thead>

<tbody>

<t t-set="package" t-value="list(set([ pack.result_package_id for pack in o.pack_operation_ids if pack.result_package_id]))"/>

<tr t-foreach="package" t-as="p">

<td><span t-esc="p.name"/></td>

</tr>

</tbody>

</table>

2
Avatar
Descartar
Nischal
Autor

Dear jaydeep, I dont want to display the same package twice, for e.g BOX0018. the system does that because of the multiple operations performed with the same package(BOX) and reports it in sequence as performed. While reporting i want it to display the package once but the content inside should be shown below the BOX.

Nischal
Autor

Thanks Jaydeep, using the your updated code i was able to achieve what i was looking for. comment updated

Avatar
Zbik
Best Answer

Try like this:

<t t-set="FOO" t-value="[1, 2, 3, 1, 2, 5, 1, 5, 6, 7, 8]"/>
<t t-foreach="o.loop_ids" t-as="n">
...
<t t-esc="FOO.append(n.id)"/>
</t>
Result without duplicates: <t t-esc="list(set(FOO))"/>

UPDATED:

<t t-set="FOOX" t-value="list(set(FOO))"/>
<t t-foreach="FOOX" t-as="x">
<t t-esc="x"/>
</t>


If appended ids 328,329, result = [1, 2, 3, 5, 6, 7, 8, 328, 329]


0
Avatar
Descartar
Nischal
Autor

Thanks Zbik, I tried the code below but it gives me same result Box0018 gets duplicated. Did i do something wrong. or should i use the output resulting id's in next iteration(but how) Also if you can please explain me the t-value used in this solution

Prev:

ops_ids:

new:

Package name:

Prev:


Result without duplicates:
Zbik

t-value is only for example. In the real solution you should use t-value="[]" and FOO ids in next iteration.

Nischal
Autor

Thanks Zbik, But how to use the FOO ids as o.pack_operation_ids in next iteration? it gives me error if i use FOO insted of o.pack_operation_ids.

Zbik

Answer updated with example

Nischal
Autor

Dear Zbik, I still fail to understand how to use the appended ids available(my apologies as i am not a developer).. The pack_operation_ids gives me value like "stock.pack.operation(id,)" but is just a number(i.e the id). i am not able to use it in the next iteration.

Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Registrar-se
Related Posts Respostes Vistes Activitat
Selecting items for one2many relation Solved
odoo8
Avatar
Avatar
Avatar
2
de des. 22
15786
How to upload files automatically on attachments on button click ?
odoo8
Avatar
Avatar
1
de nov. 21
5880
Field company_registry missing in partner table
odoo8
Avatar
0
de gen. 21
3045
How I disable Import Button for certain model in odoo8? Solved
odoo8
Avatar
Avatar
Avatar
Avatar
Avatar
8
de maig 20
8850
why blank page with top menu only visible after login? odoo 8
odoo8
Avatar
0
de des. 23
3600
Community
  • Tutorials
  • Documentació
  • Fòrum
Codi obert
  • Descarregar
  • GitHub
  • Runbot
  • Traduccions
Serveis
  • Allotjament a Odoo.sh
  • Suport
  • Actualització
  • Desenvolupaments personalitzats
  • Educació
  • Troba un comptable
  • Troba un partner
  • Converteix-te en partner
Sobre nosaltres
  • La nostra empresa
  • Actius de marca
  • Contacta amb nosaltres
  • Llocs de treball
  • Esdeveniments
  • Pòdcast
  • Blog
  • Clients
  • Informació legal • Privacitat
  • Seguretat
الْعَرَبيّة 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 és un conjunt d'aplicacions empresarials de codi obert que cobreix totes les necessitats de la teva empresa: CRM, comerç electrònic, comptabilitat, inventari, punt de venda, gestió de projectes, etc.

La proposta única de valor d'Odoo és ser molt fàcil d'utilitzar i estar totalment integrat, ambdues alhora.

Website made with

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