forked from Mapan/odoo17e
48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class RentalSign(models.TransientModel):
|
|
_name = "rental.sign.wizard"
|
|
_description = "Sign Documents from a SO"
|
|
|
|
@api.model
|
|
def default_get(self, fields):
|
|
res = super(RentalSign, self).default_get(fields)
|
|
if 'template_id' in fields:
|
|
company = self.env['sale.order'].browse(res.get('order_id')).company_id or self.env.company
|
|
default_template = company.rental_sign_tmpl_id
|
|
# if document not properly accessible by all employees, avoid access error
|
|
try:
|
|
default_template.check_access_rule("read")
|
|
res["template_id"] = company.rental_sign_tmpl_id.id
|
|
except:
|
|
pass
|
|
return res
|
|
|
|
template_id = fields.Many2one(
|
|
"sign.template", "Document Template", required=True, ondelete="cascade"
|
|
)
|
|
order_id = fields.Many2one(
|
|
"sale.order", "Sales Order", required=True, ondelete="cascade",
|
|
default=lambda s: s.env.context.get("active_id", None),
|
|
)
|
|
|
|
def next_step(self):
|
|
pending_sign_request = self.order_id.sign_request_ids.filtered(
|
|
lambda request: request.template_id == self.template_id
|
|
and request.state == "sent"
|
|
)
|
|
if pending_sign_request:
|
|
return pending_sign_request.go_to_document()
|
|
else:
|
|
action = self.env['ir.actions.act_window']._for_xml_id('sign.action_sign_send_request')
|
|
action["context"] = {
|
|
"active_id": self.template_id.id,
|
|
"sign_directly_without_mail": True,
|
|
"default_sale_order_id": self.order_id.id,
|
|
"default_signer_id": self.order_id.partner_id.id
|
|
}
|
|
return action
|