Initial commit: Sale packages

This commit is contained in:
Ernad Husremovic 2025-08-29 15:20:49 +02:00
commit 14e3d26998
6469 changed files with 2479670 additions and 0 deletions

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="exception_on_so">
<div>
Exception(s) occurred on the sale order(s):
<t t-foreach="sale_order_ids" t-as="sale_order">
<a href="#" data-oe-model="sale.order" t-att-data-oe-id="sale_order.id"><t t-esc="sale_order.name"/></a>.
</t>
Manual actions may be needed.
<div class="mt16">
<p>Exception(s):</p>
<ul t-foreach="order_exceptions" t-as="exception">
<li>
<t t-set="order_line" t-value="exception[0]"/>
<t t-set="new_qty" t-value="exception[1][0]"/>
<t t-set="old_qty" t-value="exception[1][1]"/>
<a href="#" data-oe-model="sale.order" t-att-data-oe-id="order_line.order_id.id"><t t-esc="order_line.order_id.name"/></a>:
<t t-esc="new_qty"/> <t t-esc="order_line.product_uom.name"/> of <t t-esc="order_line.product_id.name"/>
<t t-if="cancel">
cancelled
</t>
<t t-if="not cancel">
ordered instead of <t t-esc="old_qty"/> <t t-esc="order_line.product_uom.name"/>
</t>
</li>
</ul>
</div>
<div class="mt16" t-if="not cancel and impacted_pickings">
<p>Impacted Transfer(s):</p>
<ul t-foreach="impacted_pickings" t-as="picking">
<li><a href="#" data-oe-model="stock.picking" t-att-data-oe-id="picking.id"><t t-esc="picking.name"/></a></li>
</ul>
</div>
</div>
</template>
<template id="exception_on_picking">
<div>
Exception(s) occurred on the picking:
<a href="#" data-oe-model="stock.picking" t-att-data-oe-id="origin_picking.id"><t t-esc="origin_picking.name"/></a>.
Manual actions may be needed.
<div class="mt16">
<p>Exception(s):</p>
<ul t-foreach="moves_information" t-as="exception">
<t t-set="move" t-value="exception[0]"/>
<t t-set="new_qty" t-value="exception[1][0]"/>
<t t-set="old_qty" t-value="exception[1][1]"/>
<li>
<t t-esc="new_qty"/> <t t-esc="move.product_uom.name"/>
of <t t-esc="move.product_id.display_name"/> processed instead of <t t-esc="old_qty"/> <t t-esc="move.product_uom.name"/></li>
</ul>
</div>
</div>
</template>
</data>
</odoo>

View file

@ -0,0 +1,180 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="sale.sale_order_1" model="sale.order">
<field name="warehouse_id" ref="stock.warehouse0"/>
</record>
<record id="sale.sale_order_2" model="sale.order">
<field name="warehouse_id" ref="stock.warehouse0"/>
</record>
<record id="sale.sale_order_3" model="sale.order">
<field name="warehouse_id" ref="stock.warehouse0"/>
</record>
<record id="sale.sale_order_5" model="sale.order">
<field name="warehouse_id" ref="stock.warehouse0"/>
</record>
<record id="sale.sale_order_6" model="sale.order">
<field name="warehouse_id" ref="stock.warehouse0"/>
</record>
<record id="sale.sale_order_8" model="sale.order">
<field name="warehouse_id" ref="stock.warehouse0"/>
</record>
<!-- Create some new sale orders to have more data for the forecast report -->
<record id="sale_order_19" model="sale.order">
<field name="partner_id" ref="base.res_partner_3"/>
<field name="partner_invoice_id" ref="base.res_partner_address_25"/>
<field name="partner_shipping_id" ref="base.res_partner_address_25"/>
<field name="user_id" ref="base.user_demo"/>
<field name="pricelist_id" ref="product.list0"/>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="campaign_id" ref="utm.utm_campaign_email_campaign_products"/>
<field name="medium_id" ref="utm.utm_medium_email"/>
<field name="source_id" ref="sale.utm_source_sale_order_0"/>
<field name="date_order" eval="(datetime.now() + relativedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="warehouse_id" ref="stock.warehouse0"/>
</record>
<record id="sale_order_line_42" model="sale.order.line">
<field name="order_id" ref="sale_order_19"/>
<field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_25').get_product_multiline_description_sale()"/>
<field name="product_id" ref="product.product_product_25"/>
<field name="product_uom_qty">5</field>
<field name="product_uom" ref="uom.product_uom_unit"/>
<field name="price_unit">295.00</field>
</record>
<record id="sale_order_line_43" model="sale.order.line">
<field name="order_id" ref="sale_order_19"/>
<field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_10').get_product_multiline_description_sale()"/>
<field name="product_id" ref="product.product_product_10"/>
<field name="product_uom_qty">5</field>
<field name="product_uom" ref="uom.product_uom_unit"/>
<field name="price_unit">140.00</field>
</record>
<record id="sale_order_20" model="sale.order">
<field name="partner_id" ref="base.res_partner_3"/>
<field name="partner_invoice_id" ref="base.res_partner_address_25"/>
<field name="partner_shipping_id" ref="base.res_partner_address_25"/>
<field name="user_id" ref="base.user_demo"/>
<field name="pricelist_id" ref="product.list0"/>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="campaign_id" ref="utm.utm_campaign_email_campaign_products"/>
<field name="medium_id" ref="utm.utm_medium_email"/>
<field name="source_id" ref="sale.utm_source_sale_order_0"/>
<field name="date_order" eval="(datetime.now() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="warehouse_id" ref="stock.warehouse0"/>
</record>
<record id="sale_order_line_44" model="sale.order.line">
<field name="order_id" ref="sale_order_20"/>
<field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_25').get_product_multiline_description_sale()"/>
<field name="product_id" ref="product.product_product_25"/>
<field name="product_uom_qty">5</field>
<field name="product_uom" ref="uom.product_uom_unit"/>
<field name="price_unit">295.00</field>
</record>
<record id="sale_order_21" model="sale.order">
<field name="partner_id" ref="base.res_partner_3"/>
<field name="partner_invoice_id" ref="base.res_partner_address_25"/>
<field name="partner_shipping_id" ref="base.res_partner_address_25"/>
<field name="user_id" ref="base.user_demo"/>
<field name="pricelist_id" ref="product.list0"/>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="campaign_id" ref="utm.utm_campaign_email_campaign_products"/>
<field name="medium_id" ref="utm.utm_medium_email"/>
<field name="source_id" ref="sale.utm_source_sale_order_0"/>
<field name="date_order" eval="(datetime.now() + relativedelta(days=3)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="warehouse_id" ref="stock.warehouse0"/>
</record>
<record id="sale_order_line_45" model="sale.order.line">
<field name="order_id" ref="sale_order_21"/>
<field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_25').get_product_multiline_description_sale()"/>
<field name="product_id" ref="product.product_product_25"/>
<field name="product_uom_qty">10</field>
<field name="product_uom" ref="uom.product_uom_unit"/>
<field name="price_unit">295.00</field>
</record>
<record id="sale_order_line_46" model="sale.order.line">
<field name="order_id" ref="sale_order_21"/>
<field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_10').get_product_multiline_description_sale()"/>
<field name="product_id" ref="product.product_product_10"/>
<field name="product_uom_qty">10</field>
<field name="product_uom" ref="uom.product_uom_unit"/>
<field name="price_unit">140.00</field>
</record>
<record id="sale_order_22" model="sale.order">
<field name="partner_id" ref="base.res_partner_3"/>
<field name="partner_invoice_id" ref="base.res_partner_address_25"/>
<field name="partner_shipping_id" ref="base.res_partner_address_25"/>
<field name="user_id" ref="base.user_demo"/>
<field name="pricelist_id" ref="product.list0"/>
<field name="team_id" ref="sales_team.team_sales_department"/>
<field name="campaign_id" ref="utm.utm_campaign_email_campaign_products"/>
<field name="medium_id" ref="utm.utm_medium_email"/>
<field name="source_id" ref="sale.utm_source_sale_order_0"/>
<field name="date_order" eval="(datetime.now() + relativedelta(days=3)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="warehouse_id" ref="stock.warehouse0"/>
</record>
<record id="sale_order_line_47" model="sale.order.line">
<field name="order_id" ref="sale_order_22"/>
<field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_5').get_product_multiline_description_sale()"/>
<field name="product_id" ref="product.product_product_5"/>
<field name="product_uom_qty">10</field>
<field name="product_uom" ref="uom.product_uom_unit"/>
<field name="price_unit">199.00</field>
</record>
<function model="sale.order" name="action_confirm" eval="[[
ref('sale_order_19'),
ref('sale_order_20'),
ref('sale_order_21'),
ref('sale_order_22'),
]]"/>
<!-- Change date of those sale orders' delivery -->
<function model="stock.picking" name="write">
<value model="stock.picking" search="[('sale_id', '=', obj().env.ref('sale_stock.sale_order_19').id)]"/>
<value eval="{'scheduled_date': (datetime.now() + relativedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')}"/>
</function>
<function model="stock.picking" name="write">
<value model="stock.picking" search="[('sale_id', '=', obj().env.ref('sale_stock.sale_order_20').id)]"/>
<value eval="{'scheduled_date': (datetime.now() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M:%S')}"/>
</function>
<function model="stock.picking" name="write">
<value model="stock.picking" search="[('sale_id', '=', obj().env.ref('sale_stock.sale_order_21').id)]"/>
<value eval="{'scheduled_date': (datetime.now() + relativedelta(days=3)).strftime('%Y-%m-%d %H:%M:%S')}"/>
</function>
<!-- Inventory for new Customizable Desks -->
<record id="stock_inventory_7e" model="stock.quant">
<field name="product_id" ref="sale.product_product_4e"/>
<field name="inventory_quantity">65.0</field>
<field name="location_id" model="stock.location" eval="obj().env.ref('stock.warehouse0').lot_stock_id.id"/>
</record>
<record id="stock_inventory_7f" model="stock.quant">
<field name="product_id" ref="sale.product_product_4f"/>
<field name="inventory_quantity">70.0</field>
<field name="location_id" model="stock.location" eval="obj().env.ref('stock.warehouse0').lot_stock_id.id"/>
</record>
<function model="stock.quant" name="action_apply_inventory">
<function eval="[[('id', 'in', (ref('stock_inventory_7e'),
ref('stock_inventory_7f'),
))]]" model="stock.quant" name="search"/>
</function>
</data>
</odoo>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="stock.route_warehouse0_mto" model="stock.route">
<field name="sale_selectable">True</field>
</record>
</data>
</odoo>