diff --git a/addons/website_payment/views/website_payment_templates.xml b/addons/website_payment/views/website_payment_templates.xml index 012055711a7..006229e8a38 100644 --- a/addons/website_payment/views/website_payment_templates.xml +++ b/addons/website_payment/views/website_payment_templates.xml @@ -77,7 +77,7 @@ diff --git a/addons/website_portal/__openerp__.py b/addons/website_portal/__openerp__.py index 61abb18fe4c..8446a3fa4a4 100644 --- a/addons/website_portal/__openerp__.py +++ b/addons/website_portal/__openerp__.py @@ -9,16 +9,10 @@ Allows your customers to manage their account from a beautiful web interface. 'author': 'Odoo SA', 'website': 'https://www.odoo.com/', 'depends': [ - 'sale', 'website', ], 'data': [ 'views/templates.xml', ], - 'qweb': [ - ], - 'demo': [ - 'data/demo.xml' - ], 'installable': True, } diff --git a/addons/website_portal/controllers/main.py b/addons/website_portal/controllers/main.py index 5a7772bc5d3..a11adac2ab4 100644 --- a/addons/website_portal/controllers/main.py +++ b/addons/website_portal/controllers/main.py @@ -1,6 +1,4 @@ # -*- coding: utf-8 -*- -import datetime - from openerp import http from openerp.http import request from openerp import tools @@ -11,61 +9,20 @@ class website_account(http.Controller): @http.route(['/my', '/my/home'], type='http', auth="public", website=True) def account(self): partner = request.env.user.partner_id - values = { - 'date': datetime.date.today().strftime('%Y-%m-%d') - } - - res_sale_order = request.env['sale.order'] - res_invoices = request.env['account.invoice'] - quotations = res_sale_order.search([ - ('partner_id.id', '=', partner.id), - ('state', 'in', ['sent', 'cancel']) - ]) - orders = res_sale_order.search([ - ('partner_id.id', '=', partner.id), - ('state', 'in', ['progress', 'manual', 'shipping_except', 'invoice_except', 'done']) - ]) - invoices = res_invoices.search([ - ('partner_id.id', '=', partner.id), - ('state', 'in', ['open', 'paid', 'cancelled']) - ]) - - values.update({ - 'quotations': quotations, - 'orders': orders, - 'invoices': invoices - }) # get customer sales rep if partner.user_id: sales_rep = partner.user_id else: sales_rep = False - values.update({ + values = { 'sales_rep': sales_rep, 'company': request.website.company_id, 'user': request.env.user - }) + } return request.website.render("website_portal.account", values) - @http.route(['/my/orders/'], type='http', auth="user", website=True) - def orders_followup(self, order=None): - partner = request.env['res.users'].browse(request.uid).partner_id - domain = [ - ('partner_id.id', '=', partner.id), - ('state', 'not in', ['draft', 'cancel']), - ('id', '=', order) - ] - order = request.env['sale.order'].search(domain) - invoiced_lines = request.env['account.invoice.line'].search([('invoice_id', 'in', order.invoice_ids.ids)]) - order_invoice_lines = {il.product_id.id: il.invoice_id for il in invoiced_lines} - - return request.website.render("website_portal.orders_followup", { - 'order': order.sudo(), - 'order_invoice_lines': order_invoice_lines, - }) - @http.route(['/my/account'], type='http', auth='user', website=True) def details(self, redirect=None, **post): partner = request.env['res.users'].browse(request.uid).partner_id @@ -123,7 +80,7 @@ class website_account(http.Controller): # quick and partial off-line checksum validation check_func = request.env["res.partner"].simple_vat_check vat_country, vat_number = request.env["res.partner"]._split_vat(data.get("vat")) - if not check_func(vat_country, vat_number): # simple_vat_check + if not check_func(vat_country, vat_number): # simple_vat_check error["vat"] = 'error' # error message for empty required fields if [err for err in error.values() if err == 'missing']: diff --git a/addons/website_portal/static/src/js/website_portal.js b/addons/website_portal/static/src/js/website_portal.js index 9779f60a98a..1385987e246 100644 --- a/addons/website_portal/static/src/js/website_portal.js +++ b/addons/website_portal/static/src/js/website_portal.js @@ -1,24 +1,23 @@ odoo.define('website_portal', function(require) { 'use strict'; + require('website.website'); - var base = require('web_editor.base'); - var qweb = require('qweb'); - base.ready().done(function() { + if(!$('.o_website_portal_details, .o_my_show_more').length) { + return $.Deferred().reject("DOM doesn't contain '.o_website_portal_details' or '.o_my_show_more'"); + } - $('.oe_website_portal').on('change', "select[name='country_id']", function () { - var $select = $("select[name='state_id']"); - $select.find("option:not(:first)").hide(); - var nb = $select.find("option[data-country_id="+($(this).val() || 0)+"]").show().size(); - $select.parent().toggle(nb>1); - }); - $('.oe_website_portal').find("select[name='country_id']").change(); - - $('.wp_show_more').on('click', function(ev) { - ev.preventDefault(); - $(this).parents('table').find(".to_hide").toggleClass('hidden'); - $(this).find('span').toggleClass('hidden'); - }); + $('.o_website_portal_details').on('change', "select[name='country_id']", function () { + var $select = $("select[name='state_id']"); + $select.find("option:not(:first)").hide(); + var nb = $select.find("option[data-country_id="+($(this).val() || 0)+"]").show().size(); + $select.parent().toggle(nb>1); }); + $('.o_website_portal_details').find("select[name='country_id']").change(); + $('.o_my_show_more').on('click', function(ev) { + ev.preventDefault(); + $(this).parents('table').find(".to_hide").toggleClass('hidden'); + $(this).find('span').toggleClass('hidden'); + }); }); diff --git a/addons/website_portal/static/src/css/website_portal.less b/addons/website_portal/static/src/less/website_portal.less similarity index 63% rename from addons/website_portal/static/src/css/website_portal.less rename to addons/website_portal/static/src/less/website_portal.less index 239244676a4..d1f04277023 100644 --- a/addons/website_portal/static/src/css/website_portal.less +++ b/addons/website_portal/static/src/less/website_portal.less @@ -1,16 +1,4 @@ -/* ---- My Orders page ---- */ - -.orders_vertical_align { - display: flex; - align-items: center; -} - - -.orders_label_text_align { - vertical-align: 15%; -} - -.status_table { +.o_my_status_table { th,td { text-align: right; } diff --git a/addons/website_portal/views/templates.xml b/addons/website_portal/views/templates.xml index 18085bb6ef5..2a4241cd49a 100644 --- a/addons/website_portal/views/templates.xml +++ b/addons/website_portal/views/templates.xml @@ -3,7 +3,7 @@ @@ -12,29 +12,29 @@
-
- - - +
+
-
- -
+
+
+ +
+
-
+
- - - - - - - - - - - - diff --git a/addons/website_portal_sale/__init__.py b/addons/website_portal_sale/__init__.py new file mode 100644 index 00000000000..ee5959455ad --- /dev/null +++ b/addons/website_portal_sale/__init__.py @@ -0,0 +1 @@ +import controllers diff --git a/addons/website_portal_sale/__openerp__.py b/addons/website_portal_sale/__openerp__.py new file mode 100644 index 00000000000..4a7ed6c92e8 --- /dev/null +++ b/addons/website_portal_sale/__openerp__.py @@ -0,0 +1,22 @@ +{ + 'name': 'Website Portal for Sales', + 'category': 'Website', + 'summary': 'Add your sales document in the frontend portal (sales order, quotations, invoices)', + 'version': '1.0', + 'description': """ +Add your sales document in the frontend portal. Your customers will be able to connect to their portal to see the list (and the state) of their invoices (pdf report), sales orders and quotations (web pages). + """, + 'author': 'Odoo SA', + 'website': 'https://www.odoo.com/', + 'depends': [ + 'sale', + 'website_portal', + ], + 'data': [ + 'views/templates.xml', + ], + 'demo': [ + 'data/demo.xml' + ], + 'installable': True, +} diff --git a/addons/website_portal_sale/controllers/__init__.py b/addons/website_portal_sale/controllers/__init__.py new file mode 100644 index 00000000000..8ee9bae18d9 --- /dev/null +++ b/addons/website_portal_sale/controllers/__init__.py @@ -0,0 +1 @@ +import main diff --git a/addons/website_portal_sale/controllers/main.py b/addons/website_portal_sale/controllers/main.py new file mode 100644 index 00000000000..c4374ad7fb6 --- /dev/null +++ b/addons/website_portal_sale/controllers/main.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +import datetime + +from openerp import http +from openerp.http import request + +from openerp.addons.website_portal.controllers.main import website_account + + +class website_account(website_account): + @http.route(['/my/home'], type='http', auth="user", website=True) + def account(self, **kw): + """ Add sales documents to main account page """ + response = super(website_account, self).account() + partner = request.env.user.partner_id + + res_sale_order = request.env['sale.order'] + res_invoices = request.env['account.invoice'] + quotations = res_sale_order.search([ + ('partner_id.id', '=', partner.id), + ('state', 'in', ['sent', 'cancel']) + ]) + orders = res_sale_order.search([ + ('partner_id.id', '=', partner.id), + ('state', 'in', ['progress', 'manual', 'shipping_except', 'invoice_except', 'done']) + ]) + invoices = res_invoices.search([ + ('partner_id.id', '=', partner.id), + ('state', 'in', ['open', 'paid', 'cancelled']) + ]) + + response.qcontext.update({ + 'date': datetime.date.today().strftime('%Y-%m-%d'), + 'quotations': quotations, + 'orders': orders, + 'invoices': invoices, + }) + return response + + @http.route(['/my/orders/'], type='http', auth="user", website=True) + def orders_followup(self, order=None): + partner = request.env['res.users'].browse(request.uid).partner_id + domain = [ + ('partner_id.id', '=', partner.id), + ('state', 'not in', ['draft', 'cancel']), + ('id', '=', order) + ] + order = request.env['sale.order'].search(domain) + invoiced_lines = request.env['account.invoice.line'].search([('invoice_id', 'in', order.invoice_ids.ids)]) + order_invoice_lines = {il.product_id.id: il.invoice_id for il in invoiced_lines} + + return request.website.render("website_portal_sale.orders_followup", { + 'order': order.sudo(), + 'order_invoice_lines': order_invoice_lines, + }) diff --git a/addons/website_portal/data/demo.xml b/addons/website_portal_sale/data/demo.xml similarity index 100% rename from addons/website_portal/data/demo.xml rename to addons/website_portal_sale/data/demo.xml diff --git a/addons/website_portal_sale/static/src/less/website_portal_sale.less b/addons/website_portal_sale/static/src/less/website_portal_sale.less new file mode 100644 index 00000000000..5e8b9302f10 --- /dev/null +++ b/addons/website_portal_sale/static/src/less/website_portal_sale.less @@ -0,0 +1,11 @@ +/* ---- My Orders page ---- */ + +.orders_vertical_align { + display: flex; + align-items: center; +} + + +.orders_label_text_align { + vertical-align: 15%; +} \ No newline at end of file diff --git a/addons/website_portal_sale/views/templates.xml b/addons/website_portal_sale/views/templates.xml new file mode 100644 index 00000000000..b5123597507 --- /dev/null +++ b/addons/website_portal_sale/views/templates.xml @@ -0,0 +1,332 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/addons/website_sale/__openerp__.py b/addons/website_sale/__openerp__.py index 186deb77698..093d873d7d8 100644 --- a/addons/website_sale/__openerp__.py +++ b/addons/website_sale/__openerp__.py @@ -10,7 +10,7 @@ OpenERP E-Commerce """, 'author': 'OpenERP SA', - 'depends': ['sale', 'website_payment', 'website_portal'], + 'depends': ['sale', 'website_payment', 'website_portal_sale'], 'data': [ 'data/data.xml', 'data/web_planner_data.xml', diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index f2584059024..e1d73cc438b 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -1435,7 +1435,7 @@ -