def my_project(self, project=None, **kw): vals = { 'project': project, } history = request.session.get('my_projects_history', []) vals.update(get_records_pager(history, project)) return request.render("website_project.my_project", vals)
def portal_my_purchase_order(self, order_id=None, **kw): order = request.env['purchase.order'].browse(order_id) try: order.check_access_rights('read') order.check_access_rule('read') except AccessError: return request.render("website.403") history = request.session.get('my_purchases_history', []) values = { 'order': order.sudo(), } values.update(get_records_pager(history, order)) return request.render("website_portal_purchase.portal_my_purchase_order", values)
def portal_my_purchase_order(self, order_id=None, **kw): order = request.env['purchase.order'].browse(order_id) try: order.check_access_rights('read') order.check_access_rule('read') except AccessError: return request.render("website.403") history = request.session.get('my_purchases_history', []) values = { 'order': order.sudo(), } values.update(get_records_pager(history, order)) return request.render("website_portal_purchase.portal_my_purchase_order", values)
def orders_followup(self, order=None, **kw): order = request.env['sale.order'].browse([order]) try: order.check_access_rights('read') order.check_access_rule('read') except AccessError: return request.render("website.403") order_invoice_lines = {il.product_id.id: il.invoice_id for il in order.invoice_ids.mapped('invoice_line_ids')} history = request.session.get('my_orders_history', []) values = { 'order': order.sudo(), 'order_invoice_lines': order_invoice_lines, } values.update(get_records_pager(history, order)) return request.render("website_portal_sale.orders_followup", values)
def orders_followup(self, order=None, access_token=None, **kw): order = request.env['sale.order'].browse([order]) order_sudo = order.sudo() values = {} try: order.check_access_rights('read') order.check_access_rule('read') except AccessError: if not access_token or not consteq(order_sudo.access_token, access_token): return request.render("website.403") values.update({'no_breadcrumbs': True}) order_invoice_lines = {il.product_id.id: il.invoice_id for il in order_sudo.invoice_ids.mapped('invoice_line_ids')} history = request.session.get('my_orders_history', []) values.update({ 'order': order_sudo, 'order_invoice_lines': order_invoice_lines, }) values.update(get_records_pager(history, order_sudo)) return request.render("website_portal_sale.orders_followup", values)
def view(self, order_id, pdf=None, token=None, message=False, **post): # use sudo to allow accessing/viewing orders for public user # only if he knows the private token now = fields.Date.today() if token: Order = request.env['sale.order'].sudo().search([ ('id', '=', order_id), ('access_token', '=', token) ]) else: Order = request.env['sale.order'].search([('id', '=', order_id)]) # Log only once a day if Order and request.session.get( 'view_quote') != now and request.env.user.share: request.session['view_quote'] = now body = _('Quotation viewed by customer') _message_post_helper( res_model='sale.order', res_id=Order.id, message=body, token=token, token_field="access_token", message_type='notification', subtype="mail.mt_note", partner_ids=Order.user_id.sudo().partner_id.ids) if not Order: return request.render('website.404') # Token or not, sudo the order, since portal user has not access on # taxes, required to compute the total_amout of SO. order_sudo = Order.sudo() days = 0 if order_sudo.validity_date: days = (fields.Date.from_string(order_sudo.validity_date) - fields.Date.from_string(fields.Date.today())).days + 1 if pdf: pdf = request.env.ref( 'website_quote.report_web_quote').sudo().with_context( set_viewport_size=True).render_qweb_pdf([order_sudo.id])[0] pdfhttpheaders = [('Content-Type', 'application/pdf'), ('Content-Length', len(pdf))] return request.make_response(pdf, headers=pdfhttpheaders) transaction_id = request.session.get('quote_%s_transaction_id' % order_sudo.id) if not transaction_id: Transaction = request.env['payment.transaction'].sudo().search([ ('reference', '=', order_sudo.name) ]) else: Transaction = request.env['payment.transaction'].sudo().browse( transaction_id) values = { 'quotation': order_sudo, 'message': message and int(message) or False, 'option': any(not x.line_id for x in order_sudo.options), 'order_valid': (not order_sudo.validity_date) or (now <= order_sudo.validity_date), 'days_valid': days, 'action': request.env.ref('sale.action_quotations').id, 'breadcrumb': request.env.user.partner_id == order_sudo.partner_id, 'tx_id': Transaction.id if Transaction else False, 'tx_state': Transaction.state if Transaction else False, 'tx_post_msg': Transaction.acquirer_id.post_msg if Transaction else False, 'need_payment': order_sudo.invoice_status == 'to invoice' and Transaction.state in ['draft', 'cancel', 'error'], 'token': token, } if order_sudo.require_payment or values['need_payment']: values['acquirers'] = list( request.env['payment.acquirer'].sudo().search([ ('website_published', '=', True), ('company_id', '=', order_sudo.company_id.id) ])) extra_context = { 'submit_class': 'btn btn-primary', 'submit_txt': _('Pay & Confirm') } values['buttons'] = {} for acquirer in values['acquirers']: values['buttons'][acquirer.id] = acquirer.with_context( **extra_context ).render( '/', order_sudo.amount_total, order_sudo.pricelist_id.currency_id.id, values={ 'return_url': '/quote/%s/%s' % (order_id, token) if token else '/quote/%s' % order_id, 'type': 'form', 'alias_usage': _('If we store your payment information on our server, subscription payments will be made automatically.' ), 'partner_id': order_sudo.partner_id.id, }) history = request.session.get('my_quotes_history', []) values.update(get_records_pager(history, order_sudo)) return request.render('website_quote.so_quotation', values)
def my_issues_issue(self, issue_id=None, **kw): issue = request.env['project.issue'].browse(issue_id) vals = {'issue': issue} history = request.session.get('my_issues_history', []) vals.update(get_records_pager(history, issue)) return request.render("website_project_issue.my_issues_issue", vals)
def view(self, order_id, pdf=None, token=None, message=False, **post): # use sudo to allow accessing/viewing orders for public user # only if he knows the private token now = fields.Date.today() if token: Order = request.env['sale.order'].sudo().search([('id', '=', order_id), ('access_token', '=', token)]) # Log only once a day if Order and request.session.get('view_quote') != now: request.session['view_quote'] = now body = _('Quotation viewed by customer') _message_post_helper(res_model='sale.order', res_id=Order.id, message=body, token=token, token_field="access_token", message_type='notification', subtype="mail.mt_note", partner_ids=Order.user_id.partner_id.ids) else: Order = request.env['sale.order'].search([('id', '=', order_id)]) if not Order: return request.render('website.404') days = 0 if Order.validity_date: days = (fields.Date.from_string(Order.validity_date) - fields.Date.from_string(fields.Date.today())).days + 1 if pdf: pdf = request.env['report'].sudo().with_context(set_viewport_size=True).get_pdf([Order.id], 'website_quote.report_quote') pdfhttpheaders = [('Content-Type', 'application/pdf'), ('Content-Length', len(pdf))] return request.make_response(pdf, headers=pdfhttpheaders) transaction_id = request.session.get('quote_%s_transaction_id' % Order.id) if not transaction_id: Transaction = request.env['payment.transaction'].sudo().search([('reference', '=', Order.name)]) else: Transaction = request.env['payment.transaction'].sudo().browse(transaction_id) values = { 'quotation': Order, 'message': message and int(message) or False, 'option': bool(filter(lambda x: not x.line_id, Order.options)), 'order_valid': (not Order.validity_date) or (now <= Order.validity_date), 'days_valid': days, 'action': request.env.ref('sale.action_quotations').id, 'breadcrumb': request.env.user.partner_id == Order.partner_id, 'tx_id': Transaction.id if Transaction else False, 'tx_state': Transaction.state if Transaction else False, 'tx_post_msg': Transaction.acquirer_id.post_msg if Transaction else False, 'need_payment': Order.invoice_status == 'to invoice' and Transaction.state in ['draft', 'cancel', 'error'], 'token': token, } if Order.require_payment or values['need_payment']: values['acquirers'] = list(request.env['payment.acquirer'].sudo().search([('website_published', '=', True), ('company_id', '=', Order.company_id.id)])) extra_context = { 'submit_class': 'btn btn-primary', 'submit_txt': _('Pay & Confirm') } values['buttons'] = {} for acquirer in values['acquirers']: values['buttons'][acquirer.id] = acquirer.with_context(**extra_context).render( '/', Order.amount_total, Order.pricelist_id.currency_id.id, values={ 'return_url': '/quote/%s/%s' % (order_id, token) if token else '/quote/%s' % order_id, 'type': 'form', 'alias_usage': _('If we store your payment information on our server, subscription payments will be made automatically.'), 'partner_id': Order.partner_id.id, }) history = request.session.get('my_quotes_history', []) values.update(get_records_pager(history, Order)) return request.render('website_quote.so_quotation', values)
def my_task(self, task=None, **kw): vals = {'task': task, 'user': request.env.user} history = request.session.get('my_tasks_history', []) vals.update(get_records_pager(history, task)) return request.render("website_project.my_task", vals)
def my_issues_issue(self, issue_id=None, **kw): issue = request.env['project.issue'].browse(issue_id) vals = {'issue': issue} history = request.session.get('my_issues_history', []) vals.update(get_records_pager(history, issue)) return request.render("website_project_issue.my_issues_issue", vals)
def my_project(self, project=None, **kw): vals = {'project': project, } history = request.session.get('my_projects_history', []) vals.update(get_records_pager(history, project)) return request.render("website_project.my_project", vals)
def my_task(self, task=None, **kw): vals = {'task': task, 'user': request.env.user} history = request.session.get('my_tasks_history', []) vals.update(get_records_pager(history, task)) return request.render("website_project.my_task", vals)