mover campos de compra colectiva a su página propia dentro del notebook

This commit is contained in:
GitHub Copilot 2026-08-16 12:00:29 +02:00
parent 5de7573fba
commit 4c1813a811
3 changed files with 43 additions and 4 deletions

View file

@ -104,8 +104,13 @@
.product-tags { .product-tags {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-content: center;
gap: var(--ac-space-3xs); gap: var(--ac-space-3xs);
justify-content: center; justify-content: center;
/* Reserved even when a product has no tags (rendered empty, aria-hidden
see eskaera_shop_products), so the supplier/origin/price rows below line
up across every card in the grid row. Matches one row of .badge-km. */
min-height: calc(var(--ac-text-2xs) * var(--ac-leading-tight) + 2 * var(--ac-space-3xs) + 2px);
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
@ -126,15 +131,35 @@
/* ---------- Supplier & origin ---------- */ /* ---------- Supplier & origin ---------- */
/* Both rows are reserved even when empty (rendered aria-hidden see
eskaera_shop_products) and clamped to a fixed line count, so the price row
below lines up across every card in the grid row regardless of which
products actually have a supplier name or an origin. */
.product-card .product-supplier, .product-card .product-supplier,
.product-card .product-origin { .product-card .product-origin {
margin: 0; margin: 0;
overflow: hidden;
font-size: var(--ac-text-xs); font-size: var(--ac-text-xs);
font-weight: var(--ac-weight-normal); font-weight: var(--ac-weight-normal);
text-align: center; text-align: center;
color: var(--ac-text-secondary); color: var(--ac-text-secondary);
} }
.product-card .product-supplier {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
line-clamp: 2;
min-height: calc(2em * var(--ac-leading-tight));
overflow-wrap: break-word;
}
.product-card .product-origin {
min-height: calc(1em * var(--ac-leading-tight));
white-space: nowrap;
text-overflow: ellipsis;
}
.product-card .product-origin .fa { .product-card .product-origin .fa {
margin-right: var(--ac-space-3xs); margin-right: var(--ac-space-3xs);
} }

View file

@ -8,8 +8,8 @@
<field name="model">sale.order</field> <field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form" /> <field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml"> <field name="arch" type="xml">
<!-- Add group purchase fields in the general information section --> <xpath expr="//notebook" position="inside">
<xpath expr="//field[@name='note']" position="before"> <page string="Group Purchase Information" groups="base.group_user">
<group string="Group Purchase Information" groups="base.group_user"> <group string="Group Purchase Information" groups="base.group_user">
<field name="group_order_id" readonly="True" /> <field name="group_order_id" readonly="True" />
<field name="consumer_group_id" readonly="True" /> <field name="consumer_group_id" readonly="True" />
@ -18,6 +18,7 @@
<field name="pickup_date" readonly="True" /> <field name="pickup_date" readonly="True" />
<field name="home_delivery" readonly="True" /> <field name="home_delivery" readonly="True" />
</group> </group>
</page>
</xpath> </xpath>
</field> </field>
</record> </record>

View file

@ -658,6 +658,10 @@
</t> </t>
<div class="card-body d-flex flex-column"> <div class="card-body d-flex flex-column">
<h6 class="card-title" t-esc="product.name" /> <h6 class="card-title" t-esc="product.name" />
<!-- Tags/supplier/origin always occupy their slot (empty and
aria-hidden when the product has no value) so that the price
row below lines up across every card in the grid row,
regardless of which optional fields a given product has. -->
<t t-if="product.product_tag_ids"> <t t-if="product.product_tag_ids">
<div class="product-tags"> <div class="product-tags">
<t t-foreach="filtered_product_tags.get(product.id, {}).get('published_tags', product.product_tag_ids)" t-as="tag"> <t t-foreach="filtered_product_tags.get(product.id, {}).get('published_tags', product.product_tag_ids)" t-as="tag">
@ -672,6 +676,9 @@
</t> </t>
</div> </div>
</t> </t>
<t t-else="">
<div class="product-tags" aria-hidden="true" />
</t>
<t t-if="product_supplier_info.get(product.id)"> <t t-if="product_supplier_info.get(product.id)">
<p class="product-supplier"> <p class="product-supplier">
<small> <small>
@ -679,6 +686,9 @@
</small> </small>
</p> </p>
</t> </t>
<t t-else="">
<p class="product-supplier" aria-hidden="true" />
</t>
<t t-if="product.origin_text"> <t t-if="product.origin_text">
<p class="product-origin"> <p class="product-origin">
<small> <small>
@ -687,6 +697,9 @@
</small> </small>
</p> </p>
</t> </t>
<t t-else="">
<p class="product-origin" aria-hidden="true" />
</t>
<t t-set="price_info" t-value="product_price_info.get(product.id, {})" /> <t t-set="price_info" t-value="product_price_info.get(product.id, {})" />
<t t-set="display_price" t-value="product_display_info.get(product.id, {}).get('display_price', 0.0)" /> <t t-set="display_price" t-value="product_display_info.get(product.id, {}).get('display_price', 0.0)" />
<t t-set="base_price" t-value="price_info.get('list_price', product.list_price)" /> <t t-set="base_price" t-value="price_info.get('list_price', product.list_price)" />