Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
Archivo: main.py Proyecto: RoganW/odoo
 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)
Ejemplo n.º 11
0
Archivo: main.py Proyecto: befks/odoo
 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)
Ejemplo n.º 12
0
Archivo: main.py Proyecto: befks/odoo
 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)