def METHOD_NAME(self, **kw):
    Partner = request.env['res.partner'].with_context(show_address=1).sudo()
    order = request.env['sale.order'].new({
        'partner_id': request.env.user.partner_id.commercial_partner_id.id
    })
    order.pricelist_id = order.partner_id.property_product_pricelist \
        and order.partner_id.property_product_pricelist.id or False
    mode = (False, False)
    values, errors = {}, {}
    partner_id = int(kw.get('partner_id', -1))
    # IF PUBLIC ORDER
    if order.partner_id.id == request.website.user_id.sudo().partner_id.id:
        mode = ('new', 'billing')
    # IF ORDER LINKED TO A PARTNER
    else:
        if partner_id > 0:
            if partner_id == order.partner_id.id:
                mode = ('edit', 'billing')
            else:
                shippings = Partner.search([('id', 'child_of', order.partner_id.commercial_partner_id.ids)])
                if order.partner_id.commercial_partner_id.id == partner_id:
                    mode = ('new', 'shipping')
                    partner_id = -1
                elif partner_id in shippings.mapped('id'):
                    mode = ('edit', 'shipping')
                else:
                    return Forbidden()
            if mode and partner_id != -1:
                values = Partner.browse(partner_id)
        elif partner_id == -1:
            mode = ('new', 'shipping')
        else:  # no mode - refresh without post?
            return request.redirect('/portal/addresses')
    # IF POSTED
    if 'submitted' in kw:
        pre_values = self.values_preprocess(kw)
        errors, error_msg = self.checkout_form_validate(mode, kw, pre_values)
        post, errors, error_msg = self.values_postprocess(order, mode, pre_values, errors, error_msg)
        if errors:
            errors['error_message'] = error_msg
            values = kw
        else:
            partner_id = self._portal_address_form_save(mode, post, kw)
            if isinstance(partner_id, Forbidden):
                return partner_id
        if mode[1] == 'billing':
            order.partner_id = partner_id
        elif mode[1] == 'shipping':
            order.partner_shipping_id = partner_id
        order.message_partner_ids = [(4, partner_id), (3, request.website.partner_id.id)]
        if not errors:
            return request.redirect(kw.get('callback') or '/portal/addresses')
    render_values = {
        'website_sale_order': order,
        'partner_id': partner_id,
        'mode': mode,
        'checkout': values,
        'error': errors,
        'callback': kw.get('callback'),
        'only_services': order and order.only_services,
        'account_on_checkout': request.website.account_on_checkout,
        'is_public_user': request.website.is_public_user()
    }
    # para evitar modulo puente con l10n_ar_website_sale lo hacemos asi
    if request.env['ir.module.module'].sudo().search([
            ('name', '=', 'l10n_ar_website_sale'),
            ('state', '=', 'installed')], limit=1):
        document_categories = request.env[
            'l10n_latam.document.type'].sudo().search([])
        afip_responsabilities = request.env[
            'l10n_ar.afip.responsibility.type'].sudo().search([])
        uid = request.session.uid or request.env.ref('base.public_user').id
        Partner = request.env['res.users'].browse(uid).partner_id
        Partner = Partner.with_context(show_address=1).sudo()
        render_values.update({
            'document_categories': document_categories,
            'afip_responsabilities': afip_responsabilities,
            'partner': Partner,
        })
    render_values.update(self._get_country_related_render_values(kw, render_values))
    return request.render("portal_sale_distributor_website_sale.portal_address", render_values)