Commit Graph
50 Commits
Author SHA1 Message Date
Gorash 0452d0701f [IMP] website: remove cache from website.page
The cache placed on the pages is no longer useful thanks to the use of
the new directive t-cache.

closes odoo/odoo#88276

Related: odoo/enterprise#27582
Related: odoo/documentation#2056
Related: odoo/upgrade#3451
Signed-off-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
2022-06-03 16:40:40 +02:00
Thibault Libioulle 86353f9582 [IMP] website_sale: handle product tags
This commit handle product tags and adds the ability to easily define
ribbons, coupons or Dynamic Snippet for a given tag.

Purpose
=======

Product tags allow users to define a given coupon/promotion program on
chosen products templates or product variants.
Product tags allow users to easily add a common ribbon on product
templates which shares a tag.
Product tags allow users to easily define a Product Dynamic Snippet to
show product variants which uses the same tag as the current product
template.

task-2675384

Part-of: odoo/odoo#79296
2022-01-17 14:07:45 +00:00
Victor Feyens f6240e3b9c [IMP] website_sale: rename files according to their model names
closes odoo/odoo#82094

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2022-01-03 12:34:21 +00:00
Victor Feyens 313123c5fb [IMP] website_sale: split python files by classes
Part-of: odoo/odoo#82094
2022-01-03 12:34:21 +00:00
Victor Feyens eb6004d704 [MOV] website_sale: wizard to the dedicated folder
Part-of: odoo/odoo#82094
2022-01-03 12:34:21 +00:00
Victor Feyens 32731c5e13 [IMP] website_sale: split python files by classes
Part-of: odoo/odoo#82094
2022-01-03 12:34:20 +00:00
Jeremy Kersten 13c0fab15b [REF] website_sale: split product/template model in 2 files
closes odoo/odoo#72242

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2021-09-02 10:41:51 +00:00
Kamen ZhekovandJeremy Kersten 8fc2e229f9 [IMP] website_sale: add price per unit on products
Description of the issue/feature this PR addresses:
Currently, we cannot display prices per unit (for example $/kg, etc.)
on products shown in the shop. This is important for any eCommerce
business that sells something other than units, or just for informational
purposes.

Desired behavior after PR is merged:
Allows the user to add unit measurements for products. This behaviour is
disabled by default, and can be enabled through the settings page by
activating "eCommerce Base Unit Price" option.

Enabling it displays a price per unit field in /shop's product page,
comparison tool and cart. The price per unit of measurement is
automatically computed and can be displayed both on the product,
the cart and the comparison pages.

Enabling it also modifies the product's configuration page to include
what unit of measure to display in the price per unit field, as well
as the number of units used to calculate the price per unit.

task-2558128

Part-of: odoo/odoo#72242
Co-authored-by: Kamen Zhekov <kzh@odoo.com>
Co-authored-by: Jeremy Kersten <jke@odoo.com>
2021-09-02 10:41:51 +00:00
Antoine Vandevenne (anv)andVictor Feyens 573ed74c12 [REF] payment, *: refactor online payments API
This commit replaces the old online payments API of the `payment`
module with the new one and adapts to it all the implementing modules.

See the merge commit for more details.

task-2085989
task-2119838
task-2165982
task-2289255

Co-authored-by: Victor Feyens <vfe@odoo.com>
2021-03-30 09:25:51 +02:00
Laurent Stukkens (LTU) b5e611ba3d [IMP] website: add image widget support for urls char fields
* Prior to this commit, images were only managed when being an image
  field. No widget were used either.

* After this commit, image stored in model as url (as res.country.image_url)
  can be used when specifying ':image' after the field name. The fields are
  now rendered using their corresponding default widget. If there is a need
  to force another widget and if the developer is sure that it is compatible,
  he/she can specify it using the notation: 'field_name:widget_name'.

closes odoo/odoo#57645

X-original-commit: 18d4e3327c7152b4c3a86ba377e3357f213b703c
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2020-09-14 12:17:27 +00:00
Jeremy Kersten cbf8d3b304 [IMP] website: perf - cache public page
closes odoo/odoo#56331

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2020-08-21 17:50:00 +00:00
fja-odoo e33172e832 [IMP] website_sale, *: keep track of products viewed
*= website, website_livechat, website_rating

///// Tracking Product /////

Now when a user browse products in eCommerce, we keep track of the
products he looked at. We use the website_visitor
to store the products viewed. A cookie is added with a TTl of 30 min it
will prevent the RPC for that time. We track the page only if the
product view is tracked.

The recently viewed products are displayed as a snippet but also
with the customize option in product pages of website_sale.

Products that are in cart will not be returned as recently viewed.

It is possible to add a recently viewed product to the cart directly
from the carousel, it will not redirect to the cart. If we are on the
cart page, the product is displayed in the cart.

The Visitor page in website now references products viewed

///// Tracking Page /////

Feature to track a view was remove in: https://github.com/odoo/enterprise/pull/4834

That feature is now reintroduced and will use website_track instead of
leads to be stored.

The track field is now on the view instead of the page.

url field is added to website.track, it will store the url for pages and
views

The Visitor page in website now references urls viewed

Add some tests

task-1984575

closes odoo/odoo#35810

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-09-16 09:38:53 +00:00
Sébastien TheysandJuhil Somaiya 30d3ac79c7 [IMP] product, *: allow multiple lines for the same attribute
* = sale, website_sale, website_sale_comparison

Purpose
=======

This allows to handle use cases such as grape varieties for wine products where
multiple values need to be set for the same attribute, but they are all
informative and should not generate a choice or variants.

The general logic that existed previously is kept:
- multiple attribute lines on a product behave as an AND between them
- multiple values on a line behave as an OR between them

Example
=======

To generate 2 variants, with one possible value for each:
Line A: val 1, val 2

To generate 1 variant, with both informative values on it:
Line A: val 1
Line A: val 2

Technically
===========

- remove the constraints that prevented this use case from working since the
refactoring done in the previous commit removed the ambiguity when two
different lines have the same value
- update the product and comparison views accordingly

Extra
=====

- make the attribute category translatable and improve its list view

Final part of task-1912579

PR: #32946

Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>


Co-authored-by: Juhil Somaiya <jso@odoo.com>
Co-authored-by: Sébastien Theys <seb@odoo.com>
2019-08-26 13:01:14 +00:00
Laurent Smet bc131c0cfb [MERGE] manual forward port of accounting-pocalypse (beaa30a3d1)
This commit merges the following models
 * account.invoice and account.move
 * account.invoice.line and account.move.line
 * account.voucher and account.move
 * account.voucher.line and account.move.line

It was the opportunity for a big cleanup of the code, so it also restructures the whole account module, its different models/fields, the tests etc. for a better world and a better code readability.

==== Rationale ====
The rationale of this huge change is that we want journal entries / invoices to be easily edited, and changes reflected in the other model. It's a HUGE feature and very strategic for the fiduciary companies. For example, changing the account of a journal entry needs to be automatically reflected on the related invoice.

The same reasoning applies to sale/purchase vouchers.

==== Changes made in features =====
When creating an invoice, you are now creating a journal entry directly.
--> The object account.invoice no longer exists.
In the same fashion when creating an invoice line, you're now adding journal items directly in the journal entry representing the invoice. If this invoice line has some tax, it may create additional journal items as well.
--> The models account.invoice.line & account.invoice.tax no longer exist

Identically, when creating a sale/purchase receipt with its lines, you are now creating a journal entry directly and there's no more usability difference between encoding a receipt or an invoice.
--> The object account.voucher no longer exists.
--> The object account.voucher.line no longer exists.
--> The whole account_voucher module no longer exists.

Positive side-effects coming from these changes are
* draft invoices/bills/sale or purchase receipts now create a draft accounting entry. Validate these objects now simply post its journal entry. That means that draft invoices/bills/sale or purchase receipt can straightforwardly be included in reporting or budgets.
* opening a journal entry in form view will now always open the correct view: if it's a sale/purchase journal entry we will have a customer invoice/vendor bill view or a sale/purchase receipt view, whatever the menu we're coming from.
* code & business logic simplification. It is also condensed in a single place instead of being partially duplicated on invoices, vouchers and journal entries.

There should be no feature loss, except the one allowing to group multiple journal items together based on the same product during the invoice validation.

==== Changes made in models =====
* account.invoice: model removed. Instead, now use account.move with following mapping

field (account.invoice) 		field (account.move)
-----------------------			--------------------
name 					invoice_payment_ref
number 					name
reference 				ref
comment 				narration
user_id 				invoice_user_id
amount_					total_company_signed amount_total_signed
residual 				amount_residual
state 					state + invoice_payment_state 		/!\ selection changed
date_invoice 				invoice_date
date_due 				invoice_date_due
sent 					invoice_sent
origin 					invoice_origin
payment_term_id 			invoice_payment_term_id
partner_bank_id 			invoice_partner_bank_id
incoterm_id 				invoice_incoterm_id
vendor_bill_id 				invoice_vendor_bill_id
source_email 				invoice_source_email
vendor_display_name 			invoice_vendor_display_name
invoice_icon 				invoice_vendor_icon
cash_rounding_id 			invoice_cash_rounding_id
sequence_number_next 			invoice_sequence_number_next
sequence_number_next_prefix 		invoice_sequence_number_next_prefix

'invoices' subset of account.move can be accessed by using the selection field 'type' or one of the many helpers like is_invoice()

* account.move: now has a valid state 'cancel' that has to be excluded from all business logic
* account.move: field 'amount' renamed into 'amount_total'
* account.move: field 'reverse_entry_id' renamed into 'reversed_entry_id'
* account.move.line: now has a field 'display_type' that has to be excluded from all business logic, in order to support invoice layouting
* account.invoice.line: model removed. Instead, now use account.move.line with following mapping

field (account.invoice.line) 		field (account.move.line)
----------------------------		-------------------------
invoice_id 				move_id
uom_id 					product_uom_id
invoice_line_tax_ids 			tax_ids
account_analytic_id 			analytic_account_id

'invoice lines' subset of all account.move.line from a journal entry can be accessed by using the boolean field 'exclude_from_invoice_tab'

* account.invoice.tax: model removed. Instead, now use account.move.line with following mapping

field (account.invoice.tax) 		field (account.move.line)
---------------------------		-------------------------
invoice_id 				move_id
account_analytic_id 			analytic_account_id
amount 					price_unit
base 					tax_base_amount

'tax lines' subset of all account.move.line from a journal entry can be accessed by using the relational field 'tax_line_id'

* account.invoice.confirm: model removed. Instead, now use the 'post()' function of account.move
* account.invoice.refund: model removed. Instead, now use account.move.reversal to reverse the entries with the same options as we had for invoices
* account.voucher: model removed. Instead, now use account.move of type in ['out_receipt', 'in_receipt]
* account.voucher.line: model removed. Instead, now use account.move.line

==== Changes made in functions ====
* on account.move, method _run_post_draft_to_post() renamed into _autopost_draft_entries()
* on account.move, method action_account_invoice_payment() renamed into action_invoice_register_payment()
* on account.move, method action_invoice_reconcile_to_check() renamed into action_open_matching_suspense_moves()
* on account.move, method _get_domain_edition_mode_available() renamed into _get_domain_matching_supsense_moves()
* on account.move, method _get_intrastat_country_id() renamed into _get_invoice_intrastat_country_id()
* on account.move.line, method _get_domain_for_edition_mode() renamed into _get_suspense_moves_domain()
* in account.bank.statement, contextual key 'edition_mode' renamed into 'suspense_moves_mode'

Was task 1917430
2019-07-01 13:45:57 +02:00
7daa85dd12 [IMP] base,product,website_sale,*: improve product images
* = account, purchase, website_sale_comparison, website_sale_wishlist

Raw Image & Mixin
=================

Previously, the main image from a product was stored resized. This caused
inconsistencies with the size of the images on ecommerce: the main image was
resized, but the extra images were not.

Now, we always store all raw images, thanks to the new mixin. This way, product
images that were created before the installation of ecommerce will be ready to
be used in ecommerce without any other change.

We also store the resized versions instead of computing them on the fly: this
will take more disk space, but significantly increase the speed of the
pages when displaying images, as well as reduce server CPU load.

Images on variants
==================

Previously, it was only possible to set the extra product images on a template,
and not on a variant.

Now, we allow extra images also on the variants, this gives more flexibility to
the user.

Both extra images on template and variant have been given a sequence field to be
able to sort them easily.

On /shop we always display the image of the template for performance reasons.
On /product we never display the image of the template, unless the variant has
no image, then the template image is the fallback.

Carousel
========

The carousel view has been cleaned and improved:

- remove the duplicate XML that was created with the product configurator fix
- use a single loop from a single source to get all the images, instead of
	merging the different sources in the view with complex conditions
- improve the HTML structure, reduce the CSS with appropriate classes

Preview Image
=============

Both in website and backend: make better use of `preview_image` to display
a small image whenever possible, to reduce download size for the end user.

task-34045
PR: #30656

Co-authored-by: Parth Gajjar <pga@odoo.com>
Co-authored-by: Sébastien Theys <seb@odoo.com>
2019-02-14 16:37:25 +00:00
Jeremy KerstenandDerie Romain 602807acdf [FIX] website: improve/fix menu, copy on unlink, clone page, unique_path, sale_report, ...
Fix bug from the initial poc of JOV

Fix menu creation
   - creating a menu would create a 'container' menu in the DB (.create is call without website_id)
   then writing on it would copy (if condition to cow) the menu with a website_id leaving the first
   one as a menu container unused.
   - website_menu should always have a website_id
     we dont want to support the multiwebsite system that allow to have generic/specific menu
     unlink/write is useless now since we always have a website_id

Make unique_path website dependent, 2 distinct website can have a page with same name

Make Sale report multiwebsite compliant

Make website_id on sale_order / account.invoice as a related stored from partner_id.

Co-authored-by: Derie Romain <rde@odoo.com>
Co-authored-by: Kersten Jérémy <jke@odoo.com>
2018-08-13 20:16:34 +02:00
Nikunj Ladava f6aba7fb5b [REM] website_sale: remove dead code
The commit https://github.com/odoo/odoo/commit/01216345e28374b554bfe95df82d607c591271cf#diff-6bc8c8d6d3cf3075da7e6f417cf28434L33
removes the methods `_confirm_so`, `_generate_and_pay_invoice`, but the
commit doesn't apply these changes everywhere.

Hence we had dead code still remaining in website_sale
2018-08-10 17:01:41 +02:00
eco-odoo 19775de261 [ADD] website_sale: onboarding steps
Add new onboarding steps: payment and theme selector. There are
initially used on the website_sale_dashboard onboarding panel.

task: 38876
2018-07-20 11:59:13 +02:00
Mitali Patel 4f9e4283d4 [IMP] website_sale: implement digest KPIs / tips
Purpose of this commit is send ecommerce sales details KPIs in digest email.
Those are added in the default digest template.

This commit is linked to task ID 30655 and PR #18318.
2018-07-19 11:26:48 +02:00
Adrian Torres 503b8ed692 [FIX] *: cleanup (un|re)installation hacks
Replace hacks introduced in V11 by the proper solution.
2018-06-11 09:47:34 +02:00
fda-odoo 2ba6301d34 [FIX] website_sale: stop the generation of invoices if the option is unchecked in the e-commerce settings
An invoice was always generated even if the option was unchecked when we the order is confirmed.
2018-01-24 15:29:58 +01:00
Christophe Simonis 10128fa7e8 [MERGE] forward port branch saas-16 up to dc2a6c6cd2 2017-10-20 19:27:04 +02:00
Christophe Simonis 5ea0f55d65 [MERGE] forward port branch saas-15 up to bee0c11ef7 2017-10-20 17:57:21 +02:00
Christophe Simonis bee0c11ef7 [MERGE] forward port branch saas-14 up to f3ac68ed29 2017-10-20 17:24:15 +02:00
Adrian Torres 023b195eef [FIX] website_sale: don't unlink website_description
This is a hotfix/hack for a conflict between website_sale and
website_quote, on the field website_description.
The conflict happens when both modules are installed.

Fixes #20118
Completes rev 333a236
2017-10-20 08:44:49 +02:00
Thibault Delavallée b53ce01b16 [MOV] website_sale: move models in their right file 2017-09-27 13:21:53 +02:00
Christophe Monniez bfa85c84a6 [IMP] website_sale: manage abandoned cart
Purpose: Add button to see the number of
abandoned carts and the ability to send
a recovery email to those customers.

On the abandoned carts menu, you can see
the SO from the website where no reminder
email has been sent.
By selecting them, you can send an email
to the customer to tell him there is still
a cart waiting.
Clicking on the link, he can reuse his old
cart or merge it with his current one.

An abandoned cart is a SO from a website
sales team, and created after a treshold
parametered by a 'delay' settings (number
of hours to be considered as abandoned).
2017-09-15 16:55:17 +02:00
Yannick Tivisse 781a03b2bc [IMP] res_config: Update file names, xmlids, class names according to guidelines
Now that we only have one model (res.config.settings). Uniformize everything according to the guidelines.
2017-09-01 13:03:18 +02:00
Jérome Maes ccf869a83e [ADD] website_rating: generic rating management on chatter frontend
Extend new dynamic chatter to manage rating
when posting comment.

The model should inherit of rating.mixin and
its frontend chatter should allow rating to enjoy
star widget and rating card.

This is more generic : stats, rating, ... are manage
in one place (this module) for all document.
2017-06-30 11:07:00 +02:00
Yannick Tivisse a38a3e93c2 [MOV] *: Reorganize configuration files according to guidelines 2017-06-19 17:37:38 +02:00
xmo-odoo b4429c2a91 [FIX] Various P3-related import changes
* LDAP import: python-ldap is not python3-compatible, pyldap is

  Warning: only supported from debian Stretch (current testing)?
  https://packages.debian.org/search?searchon=names&keywords=pyldap

* implicitly relative imports
* imports of moved or removed stdlib modules

issue #8530
2017-04-28 09:06:53 +02:00
Rohan Patel f6fc7c2319 [REF] website_sale: improve sales part of website dashboard
This commit refactors the sales part of website dashboard. It introduces
to main features

 * header of dashboard now contains buttons related to ecommerce orders
   and payments. It allows to quickly jump to the related business views;
 * graph and summary is updated to display more precise data about orders,
   carts, abandoned carts, orders to invoices and payment status.
2017-03-03 16:57:06 +01:00
Thibault Delavallée a9bd9ab160 [FIX][IMP] various: unsudo mail/view controller and get_access_action
mail/view controller is a generic controller that redirects the user to a
given view, depending on the record and the user. Users may be redirected
to the backend form view, or to a website view. This is done notably by
calling get_access_action method that gives the action to perform (act_window
or url).

Previously this method was called using SUPERUSER. However it was therefore
impossible to know who the user was. This method is now called using the
current user. Various overrides of get_access_action have been updated to
add some logic and access rights check directly in the method allowing
more fine-grain behavior of the access action.
2016-09-23 10:01:04 +02:00
Yannick Tivisse 9a51855008 [FIX] account,sale: Correct management of notifications to portal users
[FIX] sale: Don't display 'View quotation' button on email if no website
If the website module is not installed, the button 'View Quotation' will lead to the backend chatter page, which is not very useful in our case.
As the quotation is already attached in the mail as a pdf, just don't display the button if the website module is not installed

[FIX] account,sale: Don't send notif template to portal customers if no website

[FIX] account: Don't display 'View Invoice' button on email if no website
If the website module is not installed, the button 'View Invoice' will lead to the backend chatter page, which is not very useful in our case.
As the invoice is already attached in the mail as a pdf, just don't display the button if the website module is not installed

[FIX] website_sale: override get_access_action to redirect to my/invoices
2016-08-30 10:17:38 +02:00
Joren Van Onder 303e585371 [IMP] website_*: consolidate some duplicate payment logic
website_sale and website_quote both did their own
form_feedback. This causes issues because:

1. it would force upcoming features to have to be duplicated as well
2. there's a risk that improvements/bug fixes will only be applied to
one module, an example of this happening is
46c5f93b6c.
2016-06-17 13:09:18 +02:00
Martin Trigaux 76f9f5c51b [MOV] website_sale: move configuration files in appropriate directories 2016-03-17 17:26:52 +01:00
Martin Geubelle 42c82d57de [ADD] website, website_sale, website_crm: new dashboard 2016-03-10 13:41:10 +01:00
Jérome Maes b11f1ba70d [IMP] website_sale : add rating into ecommerce
When posting a comment, the user can rate the product using rating star widget. The rating card is display on the product page with average and repartition.
Add a related field 'website_published' on rating in website_sale for performance issue.

Part of this commit could be moved in 'website_rating', if the feature is required in other modules. Since it is only used in ecommerce, the code belong to website_sale.
2015-08-27 09:36:35 +02:00
Ajay javiya 418414b9c1 [IMP] website_sale : allow user to set default sale team and saleperson for ecommerce SO.
Also add 'affiliate_id' in the user session : the param contains the id of the saleperson to assign if the current user create an SO. This param is passed by the URL query param, then stored in the session.
2015-05-06 10:40:26 +02:00
Thibault Delavallée dce983dea0 [IMP] website_sale: confirm quotation only when the payment is done, not directly when hitting 'pay now'. 2014-09-29 11:12:37 +02:00
Christophe Matthieu 43977deb71 [IMP] product: refactoring of product variant. The main view became the view of product template and the product product (or product variant) are created with the variant values combinaison. Bom is splitted into bom and bom line and can use the variant combinaison. 2014-05-27 09:42:52 +02:00
chm@openerp.com 1199b60d70 [IMP] website_sale: use street 2 to set company_name
bzr revid: chm@openerp.com-20140428134632-v3w7imtz7j3u3tp0
2014-04-28 15:46:32 +02:00
chm@openerp.com cee3cabaa8 [IMP] website_sale: create new shipping address; company_name field; fix acquierer image
bzr revid: chm@openerp.com-20140425132049-kg4w68qn07eof47q
2014-04-25 15:20:49 +02:00
Antony Lesuisse ff37d0ebca website sale refactor
bzr revid: al@openerp.com-20140130233951-55ttup4ohmp4i0nf
2014-01-31 00:39:51 +01:00
Christophe Matthieu 320a0bc28c [IMP] website/website_sale: Use group to display shipping address in frontend like the backend. Use group for product facet caracteristique (backend/frontend). Customize templates is displayed function of groups of ir.ui.view templates.
bzr revid: chm@openerp.com-20140115110547-v0nllq0f800tlhpg
2014-01-15 12:05:47 +01:00
Thibault Delavallée fab63158a1 [CLEAN] sale: removed code that should not lie here. website code has nothing to do in the base sale module. website_sale: renamed website_sale file into sale_order and added the get_website_data method.
bzr revid: tde@openerp.com-20131213110629-rhgpqpy2dj03ng8h
2013-12-13 12:06:29 +01:00
Thibault Delavallée cea8f80476 [MOV] website_sale: moved payment_transaction code into its own model file
bzr revid: tde@openerp.com-20131127121820-tgulogxz5x0ikdxd
2013-11-27 13:18:20 +01:00
Christophe Matthieu e6a831a1a2 [IMP] website: add facets/attributes on product template. Displayed in the left category menu in the ecommerce
bzr revid: chm@openerp.com-20131015082726-6f1tkyhoaju27p85
2013-10-15 10:27:26 +02:00
Xavier Morel 804f879518 [MERGE] new fields & field conversions in CMS
bzr revid: xmo@openerp.com-20131014100222-v73qz8dbrurc2eoq
2013-10-14 12:02:22 +02:00
Christophe Matthieu 2d719d3d7b [MOVE] website_sale: py files to models/
bzr revid: chm@openerp.com-20131014081841-k8iz2b67voezgue4
2013-10-14 10:18:41 +02:00