diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/website_sale/data | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/website_sale/data')
| -rw-r--r-- | addons/website_sale/data/data.xml | 128 | ||||
| -rw-r--r-- | addons/website_sale/data/demo.xml | 739 | ||||
| -rw-r--r-- | addons/website_sale/data/digest_data.xml | 8 | ||||
| -rw-r--r-- | addons/website_sale/data/mail_template_data.xml | 110 |
4 files changed, 985 insertions, 0 deletions
diff --git a/addons/website_sale/data/data.xml b/addons/website_sale/data/data.xml new file mode 100644 index 00000000..c3e23f32 --- /dev/null +++ b/addons/website_sale/data/data.xml @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data noupdate="1"> + + <record id="menu_shop" model="website.menu"> + <field name="name">Shop</field> + <field name="url">/shop</field> + <field name="parent_id" ref="website.main_menu"/> + <field name="sequence" type="int">20</field> + </record> + <record id="action_open_website" model="ir.actions.act_url"> + <field name="name">Website Shop</field> + <field name="target">self</field> + <field name="url">/shop</field> + </record> + <record id="base.open_menu" model="ir.actions.todo"> + <field name="action_id" ref="action_open_website"/> + <field name="state">open</field> + </record> + + <record id="website_sale.sale_ribbon" model="product.ribbon"> + <field name="html">Sale</field> + <field name="html_class">bg-success o_ribbon_left</field> + </record> + + <record id="website_sale.sold_out_ribbon" model="product.ribbon"> + <field name="html">Sold out</field> + <field name="html_class">bg-danger o_ribbon_left</field> + </record> + + <record id="website_sale.new_ribbon" model="product.ribbon"> + <field name="html">New!</field> + <field name="html_class">bg-primary o_ribbon_left</field> + </record> + + <record id="sales_team.salesteam_website_sales" model="crm.team"> + <field name="active" eval="True"/> + </record> + + <record model="website" id="website.default_website"> + <field name="salesteam_id" ref="sales_team.salesteam_website_sales"/> + </record> + + <record model="product.pricelist" id="product.list0"> + <field name="selectable" eval="True" /> + <field name="website_id" eval="False"/> + </record> + + </data> + <data> + <!-- Action Server for Dynamic Filter --> + <record id="dynamic_snippet_products_action" model="ir.actions.server"> + <field name="name">Products Dynamic Snippet</field> + <field name="model_id" ref="model_product_product"/> + <field name="state">code</field> + <field name="code"> +ProductProduct = model.env['product.product'] +FieldMonetary = model.env['ir.qweb.field.monetary'] + +website = request.website.get_current_website() +dynamic_filter = model.env.context.get('dynamic_filter') +limit = model.env.context.get('limit') +search_domain = model.env.context.get('search_domain') +get_rendering_data_structure = model.env.context.get('get_rendering_data_structure') +escape = dynamic_filter.escape_falsy_as_empty + +domain = [('website_published', '=', True)] + website.website_domain() + (search_domain or []) +products = ProductProduct.search(domain, limit=limit) +_ = products.mapped('name') + +monetary_options = { + 'display_currency': request.website.get_current_pricelist().currency_id, +} + +max_nb_chars = 100 +res_products = [] +for product in products: + res_product = product._read_format(['id', 'name', 'website_url', 'description_sale'])[0] + res_product.update(product._get_combination_info_variant()) + + if res_product['description_sale'] and len(res_product['description_sale']) > max_nb_chars: + res_product['description_sale'] = "%s ..." % res_product['description_sale'][:max_nb_chars] + res_product['list_price'] = FieldMonetary.value_to_html(res_product['price'], monetary_options) + data = get_rendering_data_structure() + for field_name in dynamic_filter.field_names.split(","): + field = ProductProduct._fields.get(field_name) + if field and field.type == 'binary': + data['image_fields'][field_name] = escape(website.image_url(product, field_name)) + elif field_name == 'list_price': + data['fields'][field_name] = res_product[field_name] + else: + data['fields'][field_name] = escape(res_product[field_name]) + data['fields']['call_to_action_url'] = escape(product['website_url']) + res_products.append(data) + +response = res_products + </field> + </record> + <!-- Dynamic Filter --> + <record id="dynamic_filter_demo_products" model="website.snippet.filter"> + <field name="action_server_id" ref="website_sale.dynamic_snippet_products_action"/> + <field name="field_names">display_name,description_sale,image_512,list_price</field> + <field name="limit" eval="16"/> + <field name="name">Products</field> + <field name="website_id" ref="website.default_website"/> + </record> + <function model="ir.model.fields" name="formbuilder_whitelist"> + <value>sale.order</value> + <value eval="[ + 'client_order_ref', + ]"/> + </function> + + <record id="base.model_res_partner" model="ir.model"> + <field name="website_form_key">create_customer</field> + <field name="website_form_access">True</field> + <field name="website_form_label">Create a Customer</field> + </record> + <function model="ir.model.fields" name="formbuilder_whitelist"> + <value>res.partner</value> + <value eval="[ + 'name', 'phone', 'email', + 'city', 'zip', 'street', 'street2', 'state_id', 'country_id', + 'vat', 'company_name' + ]"/> + </function> + </data> +</odoo> diff --git a/addons/website_sale/data/demo.xml b/addons/website_sale/data/demo.xml new file mode 100644 index 00000000..568c0f96 --- /dev/null +++ b/addons/website_sale/data/demo.xml @@ -0,0 +1,739 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo noupdate="1"> + + <record model="website" id="website.website2"> + <field name="salesteam_id" ref="sales_team.salesteam_website_sales"/> + </record> + + <record id="product.product_product_24" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.product_product_5" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.product_product_12" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.product_product_10" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.product_product_13" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.product_product_25" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.consu_delivery_02" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.product_delivery_01" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.product_product_3" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.product_product_22" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.consu_delivery_03" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.product_product_27" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.product_delivery_02" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.product_product_16" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.consu_delivery_01" model="product.product"> + <field name="is_published" eval="True"/> + </record> + <record id="product.product_order_01" model="product.product"> + <field name="is_published" eval="True"/> + </record> + + <record id="product.product_product_4" model="product.product"> + <field name="is_published" eval="True"/> + <field name="website_size_x">2</field> + <field name="website_size_y">2</field> + <field name="website_sequence">9950</field> + </record> + + <record id="product.product_product_6" model="product.product"> + <field name="is_published" eval="True"/> + <field name="website_sequence">10010</field> + </record> + + <record id="product.product_product_7" model="product.product"> + <field name="is_published" eval="True"/> + </record> + + <record id="product.product_product_8" model="product.product"> + <field name="is_published" eval="True"/> + </record> + + <record id="product.product_product_9" model="product.product"> + <field name="is_published" eval="True"/> + </record> + + <record id="product.product_product_11" model="product.product"> + <field name="is_published" eval="True"/> + <field name="accessory_product_ids" eval="[(6, 0, [ref('product.product_product_7')])]"/> + </record> + + <record id="item1" model="product.pricelist.item"> + <field name="base">list_price</field> + <field name="applied_on">1_product</field> + <field name="pricelist_id" ref="product.list0"/> + <field name="product_tmpl_id" ref="product.product_product_4_product_template"/> + <field name="price_discount">20</field> + <field name="min_quantity">2</field> + <field name="compute_price">formula</field> + </record> + + <!-- product.public.category --> + + <record id="public_category_desks" model="product.public.category"> + <field name="name">Desks</field> + <field name="sequence">15</field> + </record> + <record id="public_category_furnitures" model="product.public.category"> + <field name="name">Furnitures</field> + <field name="sequence">17</field> + </record> + <record id="public_category_boxes" model="product.public.category"> + <field name="name">Boxes</field> + <field name="sequence">20</field> + </record> + <record id="public_category_drawers" model="product.public.category"> + <field name="name">Drawers</field> + <field name="sequence">21</field> + </record> + <record id="public_category_cabinets" model="product.public.category"> + <field name="name">Cabinets</field> + <field name="sequence">22</field> + </record> + <record id="public_category_bins" model="product.public.category"> + <field name="name">Bins</field> + <field name="sequence">23</field> + </record> + <record id="public_category_lamps" model="product.public.category"> + <field name="name">Lamps</field> + <field name="sequence">24</field> + </record> + <record id="services" model="product.public.category"> + <field name="name">Services</field> + <field name="sequence">25</field> + </record> + <record id="public_category_multimedia" model="product.public.category"> + <field name="name">Multimedia</field> + <field name="sequence">26</field> + </record> + + <!-- subcategories --> + <record id="public_category_desks_components" model="product.public.category"> + <field name="parent_id" eval="ref('public_category_desks')"/> + <field name="name">Components</field> + <field name="sequence">16</field> + </record> + <record id="public_category_furnitures_chairs" model="product.public.category"> + <field name="parent_id" eval="ref('public_category_furnitures')"/> + <field name="name">Chairs</field> + <field name="sequence">18</field> + </record> + <record id="public_category_furnitures_couches" model="product.public.category"> + <field name="parent_id" eval="ref('public_category_furnitures')"/> + <field name="name">Couches</field> + <field name="sequence">19</field> + </record> + + <record id="product.product_product_1_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('services')])]"/> + </record> + <record id="product.product_product_2_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('services')])]"/> + </record> + <record id="product.product_product_3_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_desks_components')])]"/> + </record> + <record id="product.consu_delivery_03_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_desks')])]"/> + </record> + <record id="product.product_product_4_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_desks')])]"/> + </record> + <record id="product.product_product_5_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_desks')])]"/> + </record> + <record id="product.product_product_6_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_cabinets')])]"/> + </record> + <record id="product.product_product_7_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_boxes')])]"/> + </record> + <record id="product.product_product_8_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_desks')])]"/> + </record> + <record id="product.product_product_9_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_bins')])]"/> + </record> + <record id="product.product_product_10_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_cabinets')])]"/> + </record> + <record id="product.product_product_11_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_furnitures_chairs')])]"/> + </record> + <record id="product.product_product_12_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_furnitures_chairs')])]"/> + </record> + <record id="product.product_product_13_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_desks')])]"/> + </record> + <record id="product.product_product_16_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_drawers')])]"/> + </record> + <record id="product.product_product_20_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_desks_components')])]"/> + </record> + <record id="product.product_product_22_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_desks_components')])]"/> + </record> + <record id="product.product_product_25_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_desks_components')])]"/> + </record> + <record id="product.product_product_27_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_drawers')])]"/> + </record> + <record id="product.product_order_01_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_multimedia')])]"/> + </record> + <record id="product.consu_delivery_01_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_furnitures_couches')])]"/> + </record> + <record id="product.consu_delivery_02_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_desks')])]"/> + </record> + <record id="product.consu_delivery_03_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_desks')])]"/> + </record> + <record id="product.product_delivery_01_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_furnitures_chairs')])]"/> + </record> + <record id="product.product_delivery_02_product_template" model="product.template"> + <field name="public_categ_ids" eval="[(6,0,[ref('public_category_lamps')])]"/> + </record> + + <record model="product.pricelist" id="product.list0"> + <field name="selectable" eval="True" /> + <field name="sequence">3</field> + <field name="currency_id" ref="base.USD"/> + </record> + + <record id="benelux" model="res.country.group"> + <field name="name">BeNeLux</field> + <field name="country_ids" eval="[(6,0,[ + ref('base.be'),ref('base.lu'),ref('base.nl')])]"/> + </record> + + <record id="list_christmas" model="product.pricelist"> + <field name="name">Christmas</field> + <field name="selectable" eval="False" /> + <field name="website_id" ref="website.default_website" /> + <field name="country_group_ids" eval="[(6,0,[ref('base.europe')])]" /> + <field name="sequence">20</field> + </record> + <record id="item_christmas" model="product.pricelist.item"> + <field name="pricelist_id" ref="list_christmas"/> + <field name="compute_price">formula</field> + <field name="base">list_price</field> + <field name="price_discount">20</field> + </record> + + <record id="list_benelux" model="product.pricelist"> + <field name="name">Benelux</field> + <field name="selectable" eval="False" /> + <field name="website_id" ref="website.default_website" /> + <field name="country_group_ids" eval="[(6,0,[ref('benelux')])]" /> + <field name="sequence">2</field> + </record> + <record id="item_benelux" model="product.pricelist.item"> + <field name="pricelist_id" ref="list_benelux"/> + <field name="compute_price">percentage</field> + <field name="base">list_price</field> + <field name="percent_price">10</field> + <field name="currency_id" ref="base.EUR"/> + </record> + + + <record id="list_europe" model="product.pricelist"> + <field name="name">EUR</field> + <field name="selectable" eval="True" /> + <field name="website_id" ref="website.default_website" /> + <field name="country_group_ids" eval="[(6,0,[ref('base.europe')])]" /> + <field name="sequence">3</field> + <field name="currency_id" ref="base.EUR"/> + </record> + <record id="item_europe" model="product.pricelist.item"> + <field name="pricelist_id" ref="list_europe"/> + <field name="compute_price">formula</field> + <field name="base">list_price</field> + </record> + + <record id="item_us" model="product.pricelist.item"> + <field name="pricelist_id" ref="product.list0"/> + <field name="compute_price">formula</field> + <field name="base">list_price</field> + </record> + + <!-- Add demo-data for pretty website sales graph (for the sales dashboard) --> + <record id="website_sale_order_1" model="sale.order"> + <field name="create_date" eval="datetime.now() - timedelta(days=8)"/> + <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.salesteam_website_sales"/> + <field name="date_order" eval="(datetime.now()-relativedelta(days=7)).strftime('%Y-%m-%d %H:%M:%S')"/> + <field name="state">sale</field> + </record> + + <record id="website_sale_order_line_1" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_1"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_6').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_6"/> + <field name="product_uom_qty">1</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">599.0</field> + </record> + + <record id="website_sale_order_2" model="sale.order"> + <field name="create_date" eval="datetime.now() - timedelta(days=8)"/> + <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.salesteam_website_sales"/> + <field name="date_order" eval="(datetime.now()-relativedelta(days=6)).strftime('%Y-%m-%d %H:%M:%S')"/> + <field name="state">sale</field> + </record> + + <record id="website_sale_order_line_2" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_2"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_4').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_4"/> + <field name="product_uom_qty">1</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">900</field> + </record> + + <record id="website_sale_order_3" model="sale.order"> + <field name="create_date" eval="datetime.now() - timedelta(days=8)"/> + <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.salesteam_website_sales"/> + <field name="date_order" eval="(datetime.now()-relativedelta(days=5)).strftime('%Y-%m-%d %H:%M:%S')"/> + <field name="tag_ids" eval="[(4, ref('sales_team.categ_oppor2'))]"/> + <field name="state">sale</field> + </record> + + <record id="website_sale_order_line_3" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_3"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_4').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_4"/> + <field name="product_uom_qty">1</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">750</field> + </record> + + <record id="website_sale_order_4" model="sale.order"> + <field name="create_date" eval="datetime.now() - timedelta(days=8)"/> + <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.salesteam_website_sales"/> + <field name="date_order" eval="(datetime.now()-relativedelta(days=4)).strftime('%Y-%m-%d %H:%M:%S')"/> + <field name="state">sale</field> + </record> + + <record id="website_sale_order_line_4" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_4"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_8').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_8"/> + <field name="product_uom_qty">1</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">1199.0</field> + </record> + + <record id="website_sale_order_5" model="sale.order"> + <field name="create_date" eval="datetime.now() - timedelta(days=8)"/> + <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.salesteam_website_sales"/> + <field name="date_order" eval="(datetime.now()-relativedelta(days=3)).strftime('%Y-%m-%d %H:%M:%S')"/> + <field name="state">sale</field> + </record> + + <record id="website_sale_order_line_5" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_5"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_4').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_4"/> + <field name="product_uom_qty">3</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">349.0</field> + </record> + + <record id="website_sale_order_6" model="sale.order"> + <field name="create_date" eval="datetime.now() - timedelta(days=8)"/> + <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.salesteam_website_sales"/> + <field name="date_order" eval="(datetime.now()-relativedelta(days=2)).strftime('%Y-%m-%d %H:%M:%S')"/> + <field name="state">sale</field> + </record> + + <record id="website_sale_order_line_6" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_6"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_8').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_8"/> + <field name="product_uom_qty">1</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">1599.00</field> + </record> + + <record id="website_sale_order_7" model="sale.order"> + <field name="create_date" eval="datetime.now() - timedelta(days=8)"/> + <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="website_id" ref="website.default_website"/> + <field name="pricelist_id" ref="product.list0"/> + <field name="team_id" ref="sales_team.salesteam_website_sales"/> + <field name="date_order" eval="(datetime.now()-relativedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')"/> + <field name="state">sale</field> + </record> + + <record id="website_sale_order_line_7" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_7"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_8').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_8"/> + <field name="product_uom_qty">1</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">1349.00</field> + </record> + + <record id="website_sale_order_8" 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="website_id" ref="website.default_website"/> + <field name="pricelist_id" ref="product.list0"/> + <field name="team_id" ref="sales_team.salesteam_website_sales"/> + <field name="date_order" eval="datetime.now()"/> + <field name="tag_ids" eval="[(4, ref('sales_team.categ_oppor1'))]"/> + <field name="state">sale</field> + </record> + + <record id="website_sale_order_line_8" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_8"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_8').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_8"/> + <field name="product_uom_qty">1</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">1799.00</field> + </record> + + <record id="website_sale_order_9" 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="website_id" ref="website.default_website"/> + <field name="pricelist_id" ref="product.list0"/> + <field name="team_id" ref="sales_team.salesteam_website_sales"/> + <field name="date_order" eval="(datetime.now()-relativedelta(hours=2)).strftime('%Y-%m-%d %H:%M:%S')"/> + </record> + + <record id="website_sale_order_line_9" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_9"/> + <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">1</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">2950.00</field> + </record> + + <record id="website_sale_order_line_10" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_9"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_12').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_12"/> + <field name="product_uom_qty">1</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">12.50</field> + </record> + + <!-- Active Carts --> + <record id="website_sale_order_10" 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="website_id" ref="website.default_website"/> + <field name="pricelist_id" ref="product.list0"/> + <field name="team_id" ref="sales_team.salesteam_website_sales"/> + <field name="date_order" eval="datetime.now()"/> + <field name="tag_ids" eval="[(4, ref('sales_team.categ_oppor5'))]"/> + </record> + + <record id="website_sale_order_line_11" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_10"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_11').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_11"/> + <field name="product_uom_qty">2</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">16.50</field> + </record> + + <!-- Abandoned Carts --> + <record id="website_sale_order_11" 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="website_id" ref="website.default_website"/> + <field name="pricelist_id" ref="product.list0"/> + <field name="team_id" ref="sales_team.salesteam_website_sales"/> + <field name="date_order" eval="(datetime.now()-timedelta(hours=1)).strftime('%Y-%m-%d %H:%M:%S')"/> + </record> + + <record id="website_sale_order_line_12" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_11"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_9').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_9"/> + <field name="product_uom_qty">1</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">47.0</field> + </record> + + <!-- Payments to Capture --> + <record id="website_sale_order_13" 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="website_id" ref="website.default_website"/> + <field name="pricelist_id" ref="product.list0"/> + <field name="team_id" ref="sales_team.salesteam_website_sales"/> + <field name="payment_term_id" ref="account.account_payment_term_immediate"/> + <field name="date_order" eval="(datetime.now()-timedelta(hours=1)).strftime('%Y-%m-%d %H:%M:%S')"/> + <field name="state">sent</field> + </record> + + <record id="website_sale_order_line_14" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_13"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_8').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_8"/> + <field name="product_uom_qty">1</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">1799.0</field> + </record> + + <!-- Order to Invoice --> + <record id="website_sale_order_14" 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="website_id" ref="website.default_website"/> + <field name="pricelist_id" ref="product.list0"/> + <field name="team_id" ref="sales_team.salesteam_website_sales"/> + </record> + + <record id="website_sale_order_line_15" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_14"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_16').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_16"/> + <field name="product_uom_qty">1</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">25.0</field> + </record> + + <record id="website_sale_order_16" model="sale.order"> + <field name="create_date" eval="datetime.now() - relativedelta(months=1)"/> + <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="website_id" ref="website.default_website"/> + <field name="pricelist_id" ref="product.list0"/> + <field name="team_id" ref="sales_team.salesteam_website_sales"/> + <field name="date_order" eval="datetime.now()-relativedelta(months=1)"/> + <field name="state">sale</field> + </record> + + <record id="website_sale_order_line_16" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_16"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_8').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_8"/> + <field name="product_uom_qty">2</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">1799.0</field> + </record> + + <record id="website_sale_order_17" model="sale.order"> + <field name="create_date" eval="datetime.now() - relativedelta(months=1, days=2)"/> + <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="website_id" ref="website.default_website"/> + <field name="pricelist_id" ref="product.list0"/> + <field name="team_id" ref="sales_team.salesteam_website_sales"/> + <field name="date_order" eval="datetime.now()-relativedelta(months=1, days=2)"/> + </record> + + <record id="website_sale_order_line_17" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_17"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_9').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_9"/> + <field name="product_uom_qty">7</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">47.0</field> + <field name="invoice_status">to invoice</field> + </record> + + <record id="website_sale_order_18" model="sale.order"> + <field name="create_date" eval="datetime.now() - relativedelta(months=2)"/> + <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="website_id" ref="website.default_website"/> + <field name="pricelist_id" ref="product.list0"/> + <field name="team_id" ref="sales_team.salesteam_website_sales"/> + <field name="date_order" eval="datetime.now()-relativedelta(months=2)"/> + </record> + + <record id="website_sale_order_line_18" model="sale.order.line"> + <field name="order_id" ref="website_sale_order_18"/> + <field name="name" model="sale.order.line" eval="obj().env.ref('product.product_product_9').get_product_multiline_description_sale()"/> + <field name="product_id" ref="product.product_product_9"/> + <field name="product_uom_qty">3</field> + <field name="product_uom" ref="uom.product_uom_unit"/> + <field name="price_unit">47.0</field> + <field name="invoice_status">to invoice</field> + </record> + + + <!-- action_confirm for confirmation date --> + <function model="sale.order" name="action_confirm" eval="[[ref('website_sale_order_14')]]"/> + + <record id="product_product_1_product_template" model="product.template"> + <field name="name">Warranty</field> + <field name="list_price">20.0</field> + <field name="website_sequence">9980</field> + <field name="is_published" eval="True"/> + <field name="type">service</field> + <field name="uom_id" ref="uom.product_uom_unit"/> + <field name="uom_po_id" ref="uom.product_uom_unit"/> + <field name="description_sale">Warranty, issued to the purchaser of an article by its manufacturer, promising to repair or replace it if necessary within a specified period of time.</field> + <field name="categ_id" ref="product.product_category_3"/> + <field name="invoice_policy">delivery</field> + <field name="public_categ_ids" eval="[(6, 0, [ref('website_sale.services')])]"/> + </record> + + <record id="product_1_attribute_3_product_template_attribute_line" model="product.template.attribute.line"> + <field name="product_tmpl_id" ref="website_sale.product_product_1_product_template"/> + <field name="attribute_id" ref="product.product_attribute_3"/> + <field name="value_ids" eval="[(6,0,[ref('product.product_attribute_value_5'), ref('product.product_attribute_value_6')])]"/> + </record> + + <!-- Handle automatically created product.template.attribute.value --> + <function model="ir.model.data" name="_update_xmlids"> + <value model="base" eval="[{ + 'xml_id': 'website_sale.product_1_attribute_3_value_1', + 'record': obj().env.ref('website_sale.product_1_attribute_3_product_template_attribute_line').product_template_value_ids[0], + 'noupdate': True, + }, { + 'xml_id': 'website_sale.product_1_attribute_3_value_2', + 'record': obj().env.ref('website_sale.product_1_attribute_3_product_template_attribute_line').product_template_value_ids[1], + 'noupdate': True, + }]"/> + </function> + + <function model="ir.model.data" name="_update_xmlids"> + <value model="base" eval="[{ + 'xml_id': 'website_sale.product_product_1', + 'record': obj().env.ref('website_sale.product_product_1_product_template')._get_variant_for_combination(obj().env.ref('website_sale.product_1_attribute_3_value_1')), + 'noupdate': True, + }, { + 'xml_id': 'website_sale.product_product_1b', + 'record': obj().env.ref('website_sale.product_product_1_product_template')._get_variant_for_combination(obj().env.ref('website_sale.product_1_attribute_3_value_2')), + 'noupdate': True, + },]"/> + </function> + + <record id="product_product_1" model="product.product"> + <field name="default_code">SERV_125889</field> + </record> + <record id="product_product_1b" model="product.product"> + <field name="default_code">SERV_125890</field> + </record> + + <record id="website_sale.product_1_attribute_3_value_2" model="product.template.attribute.value"> + <field name="price_extra">18.00</field> + </record> + + <record id="website_sale_activity_1" model="mail.activity"> + <field name="res_id" ref="website_sale.website_sale_order_3"/> + <field name="res_model_id" ref="sale.model_sale_order"/> + <field name="activity_type_id" ref="mail.mail_activity_data_call"/> + <field name="date_deadline" eval="(DateTime.today() + relativedelta(days=5)).strftime('%Y-%m-%d %H:%M')" /> + <field name="create_uid" ref="base.user_demo"/> + <field name="user_id" ref="base.user_demo"/> + </record> + <record id="website_sale_activity_2" model="mail.activity"> + <field name="res_id" ref="website_sale.website_sale_order_8"/> + <field name="res_model_id" ref="sale.model_sale_order"/> + <field name="activity_type_id" ref="mail.mail_activity_data_todo"/> + <field name="date_deadline" eval="(DateTime.today() + relativedelta(days=5)).strftime('%Y-%m-%d %H:%M')" /> + <field name="summary">Follow-up on satisfaction</field> + <field name="create_uid" ref="base.user_demo"/> + <field name="user_id" ref="base.user_demo"/> + </record> + <record id="website_sale_activity_3" model="mail.activity"> + <field name="res_id" ref="website_sale.website_sale_order_9"/> + <field name="res_model_id" ref="sale.model_sale_order"/> + <field name="activity_type_id" ref="mail.mail_activity_data_todo"/> + <field name="date_deadline" eval="(DateTime.today() + relativedelta(days=5)).strftime('%Y-%m-%d %H:%M')" /> + <field name="summary">Confirm quote</field> + <field name="create_uid" ref="base.user_demo"/> + <field name="user_id" ref="base.user_demo"/> + </record> + <record id="website_sale_activity_5" model="mail.activity"> + <field name="res_id" ref="website_sale.website_sale_order_11"/> + <field name="res_model_id" ref="sale.model_sale_order"/> + <field name="activity_type_id" ref="mail.mail_activity_data_email"/> + <field name="date_deadline" eval="(DateTime.today() - relativedelta(days=5)).strftime('%Y-%m-%d %H:%M')" /> + <field name="summary">Send updated pricelist</field> + <field name="create_uid" ref="base.user_demo"/> + <field name="user_id" ref="base.user_demo"/> + </record> + +</odoo> diff --git a/addons/website_sale/data/digest_data.xml b/addons/website_sale/data/digest_data.xml new file mode 100644 index 00000000..0f9739fd --- /dev/null +++ b/addons/website_sale/data/digest_data.xml @@ -0,0 +1,8 @@ +<?xml version='1.0' encoding='utf-8'?> +<odoo> + <data noupdate="1"> + <record id="digest.digest_digest_default" model="digest.digest"> + <field name="kpi_website_sale_total">True</field> + </record> + </data> +</odoo> diff --git a/addons/website_sale/data/mail_template_data.xml b/addons/website_sale/data/mail_template_data.xml new file mode 100644 index 00000000..f6317733 --- /dev/null +++ b/addons/website_sale/data/mail_template_data.xml @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data noupdate="1"> + <record id="mail_template_sale_cart_recovery" model="mail.template"> + <field name="name">Sales Order: Cart Recovery Email</field> + <field name="model_id" ref="sale.model_sale_order"/> + <field name="subject">You left items in your cart!</field> + <field name="email_from">${(object.user_id.email_formatted or user.email_formatted or '') | safe}</field> + <field name="partner_to">${object.partner_id.id}</field> + <field name="body_html" type="xml"> +<table border="0" cellpadding="0" cellspacing="0" style="padding-top: 16px; background-color: #F1F1F1; font-family:Verdana, Arial,sans-serif; color: #454748; width: 100%; border-collapse:separate;"><tr><td align="center"> +<table border="0" cellpadding="0" cellspacing="0" width="590" style="padding: 16px; background-color: white; color: #454748; border-collapse:separate;"> +<tbody> + <!-- HEADER --> + <tr> + <td align="center" style="min-width: 590px;"> + <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;"> + <tr><td valign="middle"> + % set company = object.company_id or object.user_id.company_id or user.company_id + <span style="font-size: 10px;">Your Cart</span><br/> + <span style="font-size: 20px; font-weight: bold;"> + ${object.name} + </span> + </td><td valign="middle" align="right"> + <img src="/logo.png?company=${company.id}" style="padding: 0px; margin: 0px; height: auto; width: 80px;" alt="${company.name}"/> + </td></tr> + <tr><td colspan="2" style="text-align:center;"> + <hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin:16px 0px 16px 0px;"/> + </td></tr> + </table> + </td> + </tr> + <!-- CONTENT --> + <tr> + <td align="center" style="min-width: 590px;"> + <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;"> + <tr><td valign="top" style="font-size: 13px;"> + <h1 style="color:#A9A9A9;">THERE'S SOMETHING IN YOUR CART.</h1> + Would you like to complete your purchase?<br/><br/> + % if object.order_line: + % for line in object.website_order_line: + <hr/> + <table width="100%"> + <tr> + <td style="padding: 10px; width:150px;"> + <img src="/web/image/product.product/${line.product_id.id}/image_128" style="width: 100px; height: 100px; object-fit: contain;" alt="Product image"></img> + </td> + <td> + <strong>${line.product_id.display_name}</strong><br/>${line.name} + </td> + <td width="100px" align="right"> + ${(line.product_uom_qty) | int} ${(line.product_uom.name)} + </td> + </tr> + </table> + % endfor + <hr/> + % endif + <div style="text-align: center; margin: 16px 0px 16px 0px; font-size: 14px;"> + <a href="${object.get_base_url()}/shop/cart?access_token=${object.access_token}" + target="_blank" + style="background-color: #875A7B; padding: 8px 16px 8px 16px; text-decoration: none; color: #fff; border-radius: 5px; font-size:13px;"> + Resume order + </a> + </div> + <div style="text-align: center;"><strong>Thank you for shopping with ${company.name}!</strong></div> + </td></tr> + <tr><td style="text-align:center;"> + <hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;"/> + </td></tr> + </table> + </td> + </tr> + <!-- FOOTER --> + <tr> + <td align="center" style="min-width: 590px;"> + <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; font-size: 11px; padding: 0px 8px 0px 8px; border-collapse:separate;"> + <tr><td valign="middle" align="left"> + ${company.name} + </td></tr> + <tr><td valign="middle" align="left" style="opacity: 0.7;"> + ${company.phone} + % if company.email + | <a href="'mailto:%s' % ${company.email}" style="text-decoration:none; color: #454748;">${company.email}</a> + % endif + % if company.website + | <a href="'%s' % ${company.website}" style="text-decoration:none; color: #454748;">${company.website}</a> + % endif + </td></tr> + </table> + </td> + </tr> +</tbody> +</table> +</td></tr> +<!-- POWERED BY --> +<tr><td align="center" style="min-width: 590px;"> + <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: #F1F1F1; color: #454748; padding: 8px; border-collapse:separate;"> + <tr><td style="text-align: center; font-size: 13px;"> + Powered by <a target="_blank" href="https://www.odoo.com?utm_source=db&utm_medium=website" style="color: #875A7B;">Odoo</a> + </td></tr> + </table> +</td></tr> +</table> + </field> + <field name="lang">${object.partner_id.lang}</field> + <field name="auto_delete" eval="False"/> + </record> + </data> +</odoo> |
