From de331d5aae945d6afd6d2e379204833f8a751efa Mon Sep 17 00:00:00 2001 From: jpa-odoo Date: Mon, 26 Jan 2015 11:24:58 +0100 Subject: [PATCH] [IMP] website_sale : onboarding. Allow user to print saleorder when confirm its command, display delivery method menu in sale and in warehouse (with access right stock.group_stock_manager and base.group_sale_manager) and improve quantity ui widget. --- addons/delivery/delivery_data.xml | 29 +++ addons/delivery/delivery_demo.xml | 34 +--- addons/delivery/delivery_view.xml | 5 +- addons/delivery/security/ir.model.access.csv | 3 + addons/website_sale/controllers/main.py | 78 ++++---- .../static/src/js/website_sale.js | 2 +- .../static/src/js/website_sale_validate.js | 17 +- addons/website_sale/views/templates.xml | 181 ++++++++++-------- .../website_sale_options/views/templates.xml | 16 +- 9 files changed, 191 insertions(+), 174 deletions(-) diff --git a/addons/delivery/delivery_data.xml b/addons/delivery/delivery_data.xml index fec56b329b3..62cd70554fb 100644 --- a/addons/delivery/delivery_data.xml +++ b/addons/delivery/delivery_data.xml @@ -1,6 +1,35 @@ + + + + Transporter (Delivery provider) + + + + + + + + Standard delivery + Delivery + service + + 10.0 + 10.0 + + + + + Free delivery charges + 0 + + 1000 + + + + property_delivery_carrier diff --git a/addons/delivery/delivery_demo.xml b/addons/delivery/delivery_demo.xml index ae711083b73..a535145f6d8 100644 --- a/addons/delivery/delivery_demo.xml +++ b/addons/delivery/delivery_demo.xml @@ -2,54 +2,28 @@ - - - - The Poste - 1 - 1 - + + Manchester 06040 3958 Maxwell Street - - - - Delivery by Poste - Delivery - service - - 10.0 - 10.0 - - - The Poste 20 - + - - Free delivery charges - 0 - True - 1000 - - - - Normal Delivery Charges 10 - + diff --git a/addons/delivery/delivery_view.xml b/addons/delivery/delivery_view.xml index a0126b56d6b..98ea8641efa 100644 --- a/addons/delivery/delivery_view.xml +++ b/addons/delivery/delivery_view.xml @@ -1,7 +1,8 @@ - + + delivery.carrier.tree @@ -109,6 +110,7 @@ + @@ -171,6 +173,7 @@ + delivery.grid.line.form diff --git a/addons/delivery/security/ir.model.access.csv b/addons/delivery/security/ir.model.access.csv index 7403b55f618..5f7791a1a62 100644 --- a/addons/delivery/security/ir.model.access.csv +++ b/addons/delivery/security/ir.model.access.csv @@ -6,3 +6,6 @@ access_delivery_carrier_manager,delivery.carrier,model_delivery_carrier,base.gro access_delivery_grid_manager,delivery.grid,model_delivery_grid,base.group_sale_manager,1,1,1,1 access_delivery_grid_line_manager,delivery.grid.line,model_delivery_grid_line,base.group_sale_manager,1,1,1,1 access_delivery_carrier_partner_manager,delivery.carrier partner_manager,model_delivery_carrier,base.group_partner_manager,1,0,0,0 +access_delivery_carrier_stock_manager,delivery.carrier,model_delivery_carrier,stock.group_stock_manager,1,1,1,1 +access_delivery_grid_stock_manager,delivery.grid,model_delivery_grid,stock.group_stock_manager,1,1,1,1 +access_delivery_grid_line_stock_manager,delivery.grid.line,model_delivery_grid_line,stock.group_stock_manager,1,1,1,1 diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index c8f4e29a6f9..bf28cfbee6b 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -413,7 +413,7 @@ class website_sale(http.Controller): checkout.update( self.checkout_parse("billing", order.partner_id) ) else: checkout = self.checkout_parse('billing', data) - try: + try: shipping_id = int(shipping_id) except (ValueError, TypeError): pass @@ -757,48 +757,33 @@ class website_sale(http.Controller): order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context) assert order.id == request.session.get('sale_last_order_id') + values = {} + flag = False if not order: - return { - 'state': 'error', - 'message': '

%s

' % _('There seems to be an error with your request.'), - } - - tx_ids = request.registry['payment.transaction'].search( - cr, SUPERUSER_ID, [ - '|', ('sale_order_id', '=', order.id), ('reference', '=', order.name) - ], context=context) - - if not tx_ids: - if order.amount_total: - return { - 'state': 'error', - 'message': '

%s

' % _('There seems to be an error with your request.'), - } - else: - state = 'done' - message = '

%s

' % _('Your order has been confirmed, thank you for your loyalty.') - validation = None + values.update({'not_order': True, 'state': 'error'}) else: - tx = request.registry['payment.transaction'].browse(cr, SUPERUSER_ID, tx_ids[0], context=context) - state = tx.state - message = '

%s

' % _('Thank you for your order.') - if state == 'done': - message += '

%s

' % _('Your payment has been received.') - elif state == 'cancel': - message += '

%s

' % _('The payment seems to have been canceled.') - elif state == 'pending' and tx.acquirer_id.validation == 'manual': - message += '

%s

' % _('Your transaction is waiting confirmation.') - if tx.acquirer_id.post_msg: - message += tx.acquirer_id.post_msg - else: - message += '

%s

' % _('Your transaction is waiting confirmation.') - validation = tx.acquirer_id.validation + tx_ids = request.registry['payment.transaction'].search( + cr, SUPERUSER_ID, [ + '|', ('sale_order_id', '=', order.id), ('reference', '=', order.name) + ], context=context) - return { - 'state': state, - 'message': message, - 'validation': validation - } + if not tx_ids: + if order.amount_total: + values.update({'tx_ids': False, 'state': 'error'}) + else: + values.update({'tx_ids': False, 'state': 'done', 'validation': None}) + else: + tx = request.registry['payment.transaction'].browse(cr, SUPERUSER_ID, tx_ids[0], context=context) + state = tx.state + flag = True if state == 'pending' and tx.acquirer_id.validation == 'automatic' else False + values.update({ + 'tx_ids': True, + 'state': state, + 'validation' : tx.acquirer_id.validation, + 'tx_post_msg': tx.acquirer_id.post_msg or None + }) + + return {'recall': flag, 'message': request.website._render("website_sale.order_state_message", values)} @http.route('/shop/payment/validate', type='http', auth="public", website=True) def payment_validate(self, transaction_id=None, sale_order_id=None, **post): @@ -870,6 +855,17 @@ class website_sale(http.Controller): return request.website.render("website_sale.confirmation", {'order': order}) + @http.route(['/shop/print'], type='http', auth="public", website=True) + def print_saleorder(self): + cr, uid, context = request.cr, SUPERUSER_ID, request.context + sale_order_id = request.session.get('sale_last_order_id') + if sale_order_id: + pdf = request.registry['report'].get_pdf(cr, uid, [sale_order_id], 'sale.report_saleorder', data=None, context=context) + pdfhttpheaders = [('Content-Type', 'application/pdf'), ('Content-Length', len(pdf))] + return request.make_response(pdf, headers=pdfhttpheaders) + else: + return request.redirect('/shop') + #------------------------------------------------------ # Edit #------------------------------------------------------ @@ -953,4 +949,4 @@ class website_sale(http.Controller): 'currency': order.currency_id.name } ret['lines'] = self.order_lines_2_google_api(order.order_line) - return ret \ No newline at end of file + return ret diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js index b0f06561142..9575d36d0d2 100644 --- a/addons/website_sale/static/src/js/website_sale.js +++ b/addons/website_sale/static/src/js/website_sale.js @@ -63,7 +63,7 @@ $('.oe_website_sale').each(function () { $(oe_website_sale).on('click', 'a.js_add_cart_json', function (ev) { ev.preventDefault(); var $link = $(ev.currentTarget); - var $input = $link.parent().parent().find("input"); + var $input = $link.parent().find("input"); var min = parseFloat($input.data("min") || 0); var max = parseFloat($input.data("max") || Infinity); var quantity = ($link.has(".fa-minus").length ? -1 : 1) + parseFloat($input.val(),10); diff --git a/addons/website_sale/static/src/js/website_sale_validate.js b/addons/website_sale/static/src/js/website_sale_validate.js index da917eb1298..25974a1936e 100644 --- a/addons/website_sale/static/src/js/website_sale_validate.js +++ b/addons/website_sale/static/src/js/website_sale_validate.js @@ -4,24 +4,17 @@ $(document).ready(function () { function payment_transaction_poll_status() { var order_node = $('div.oe_website_sale_tx_status'); - if (! order_node || order_node.data('orderId') === undefined) { + if (! order_node || order_node.data('order-id') === undefined) { return; } - var order_id = order_node.data('orderId'); + var order_id = order_node.data('order-id'); return openerp.jsonRpc('/shop/payment/get_status/' + order_id, 'call', { }).then(function (result) { - var tx_node = $('div.oe_website_sale_tx_status'); _poll_nbr += 1; - if (result.state == 'pending' && result.validation == 'automatic' && _poll_nbr <= 5) { - var txt = result.mesage; - setTimeout(function () { - payment_transaction_poll_status(); - }, 1000); + if(result.recall && _poll_nbr <= 5){ + setTimeout(function () { payment_transaction_poll_status(); }, 1000); } - else { - var txt = result.message; - } - tx_node.html(txt); + $('div.oe_website_sale_tx_status').html(result.message); }); } diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index 42670547b20..38b6e609343 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -287,7 +287,7 @@
@@ -351,17 +351,13 @@ @@ -638,20 +634,16 @@ @@ -1083,61 +1075,69 @@

Order Confirmed

-
-
-
-

Order Details:

- - - - - - - - - - - - - - - - - - - - - - -
ProductsQuantityUnit PriceSubtotal
-
- - - -
-
-
-
- - -
-
- -
- -
-
-
Total: - -
-
-
+
+
+

Thank you for your order. + + Print + +

+
+
+
+

Order Details:

+ + + + + + + + + + + + + + + + + + + + + + +
ProductsQuantityUnit PriceSubtotal
+
+ + + +
+
+
+
+ + +
+
+ +
+ +
+
+
Total: + +
+
+
+
-
+

Bill To:

+

There seems to be an error with your request.

+ + +

Your order has been confirmed, thank you for your loyalty.

+
+ +

Your payment has been received.

+
+ +

The payment seems to have been canceled.

+
+ +

Your transaction is waiting confirmation.


+ +
+
+
+ +

Your transaction is waiting confirmation.

+
+ +