348 lines
21 KiB
XML
348 lines
21 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<!-- Signature Request Views -->
|
|
<record id="sign_request_view_kanban" model="ir.ui.view">
|
|
<field name="name">sign.request.kanban</field>
|
|
<field name="model">sign.request</field>
|
|
<field name="arch" type="xml">
|
|
<kanban quick_create="false" highlight_color="color" default_order="create_date desc" sample="1" js_class="sign_kanban" action="go_to_document" type="object">
|
|
<field name="active"/>
|
|
<field name="favorited_ids"/>
|
|
<field name="request_item_infos"/>
|
|
<field name="state"/>
|
|
<progressbar field="activity_state" colors='{"planned": "success", "overdue": "danger", "today": "warning"}'/>
|
|
<templates>
|
|
<div t-name="menu">
|
|
<a role="menuitem" type="object" name="get_formview_action" class="dropdown-item">Details</a>
|
|
<a role="menuitem" type="object" name="go_to_document" class="dropdown-item">Template</a>
|
|
<a role="menuitem" type="object" name="cancel" class="dropdown-item" invisible="state in ('signed', 'canceled')">Cancel</a>
|
|
<a role="menuitem" type="object" name="action_archive" class="dropdown-item" invisible="state not in ('sent', 'signed', 'canceled')" t-if="record.active.raw_value">Archive</a>
|
|
<a role="menuitem" type="object" name="action_unarchive" class="dropdown-item" invisible="state not in ('sent', 'signed', 'canceled')" t-if="!record.active.raw_value">Restore</a>
|
|
<a role="menuitem" type="delete" invisible="state != 'shared'" class="dropdown-item">Stop Sharing</a>
|
|
<field name="color" widget="kanban_color_picker"/>
|
|
</div>
|
|
<t t-name="card">
|
|
<div class="d-flex lh-1 mb-1">
|
|
<t t-if="record.favorited_ids.raw_value.indexOf(context.uid) < 0">
|
|
<a type="object" name="toggle_favorited" title="Set as favorite" aria-label="Set as favorite"
|
|
class="fa fa-lg fa-star-o favorite_sign_button"/>
|
|
</t>
|
|
<t t-else="">
|
|
<a type="object" name="toggle_favorited" title="Remove from favorites" aria-label="Remove from favorites"
|
|
class="fa fa-lg fa-star favorite_sign_button_enabled favorite_sign_button"/>
|
|
</t>
|
|
<field name="reference" class="ms-4 fw-bold fs-5"/>
|
|
</div>
|
|
<field name="template_tags" widget="many2many_tags" options="{'color_field': 'color'}"/>
|
|
<div class="o_signers mt-2">
|
|
<div t-foreach="record.request_item_infos.raw_value || []" t-as="request_item_info" t-key="request_item_info.id"
|
|
t-att-class="(request_item_info.state === 'completed') ? 'o_sign_completed text-success d-flex' : (request_item_info.state === 'canceled') ? 'o_sign_canceled text-danger d-flex' : 'o_sign_waiting d-flex'">
|
|
<div t-if="request_item_info.state === 'canceled'" class="mt-1 me-1 fa fa-times" title="Canceled"/>
|
|
<input t-else="" t-att-checked="(request_item_info.state === 'completed') ? 'checked' : undefined" class="mt-1 me-1" type="checkbox" disabled="True"/>
|
|
<span>
|
|
<t t-esc="request_item_info.partner_name"/><t t-if="request_item_info.signing_date" class="ms-1" t-esc="' ' + request_item_info.signing_date"/>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<footer class="pt-1">
|
|
<div class="d-flex align-items-center">
|
|
<field name="create_date" class="fst-italic" options="{'show_seconds': false}"/>
|
|
<field name="activity_ids" widget="kanban_activity" class="ms-2"/>
|
|
<span class="badge rounded-pill text-bg-success ms-2 mb-1" title="Shared" invisible="state != 'shared'">
|
|
Shared
|
|
</span>
|
|
</div>
|
|
<field name="create_uid" widget="many2one_avatar_user" class="ms-auto"/>
|
|
</footer>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="sign_request_view_tree" model="ir.ui.view">
|
|
<field name="name">sign.request.list</field>
|
|
<field name="model">sign.request</field>
|
|
<field name="arch" type="xml">
|
|
<list multi_edit="1" sample="1" js_class="sign_list" decoration-muted="state == 'canceled'" action="go_to_document" type="object" default_order="create_date desc">
|
|
<header>
|
|
<button type="object" name="send_signature_accesses" class="btn btn-secondary" string="Resend"/>
|
|
<button type="object" name="get_sign_request_documents" class="btn btn-secondary" string="Download"/>
|
|
</header>
|
|
<field name="create_date" string="Date" readonly="1"/>
|
|
<field name="reference" readonly="1" string="Name"/>
|
|
<field name="create_uid" widget="many2one_avatar_user" readonly="1" string="Sent by"/>
|
|
<field name="template_document_ids" widget="many2many_tags" readonly="1" optional="hide"/>
|
|
<field name="request_item_ids" string="Signers" widget="many2many_tags" readonly="1" options="{'color_field': 'color'}"/>
|
|
<field name="template_tags" string="Tags" widget="many2many_tags" optional="hide" options="{'color_field': 'color'}"/>
|
|
<field name="reference_doc" readonly="1" optional="hide"/>
|
|
<field name="state" string="Status" widget="badge" readonly="1"
|
|
decoration-danger="state in ['canceled']"
|
|
decoration-warning="state in ['expired']"
|
|
decoration-success="state in ['signed']"
|
|
decoration-info="state in ['shared']"
|
|
decoration-muted="state in ['sent']"
|
|
/>
|
|
<field name="need_my_signature" readonly="1" column_invisible="True"/>
|
|
<field name="create_uid" readonly="1" column_invisible="True"/>
|
|
<field name="activity_exception_decoration" widget="activity_exception" readonly="1"/>
|
|
<button name="send_signature_accesses" string="Resend" type="object" groups="sign.group_sign_user" invisible="state != 'sent' or create_uid != uid" icon="fa-refresh"/>
|
|
<button name="send_signature_accesses" string="Resend" type="object" groups="sign.group_sign_manager" invisible="state != 'sent' or create_uid == uid" icon="fa-refresh"/>
|
|
<button name="get_formview_action" string="Details" type="object" groups="sign.group_sign_user" invisible="state != 'canceled'" icon="fa-info"/>
|
|
<button name="get_sign_request_documents" invisible="state != 'signed'" string="Download" type="object" icon="fa-download"/>
|
|
<button name="go_to_signable_document" string="Sign" type="object" invisible="not need_my_signature or state != 'sent'" icon="fa-pencil-square-o"/>
|
|
</list>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="sign_request_view_pivot" model="ir.ui.view">
|
|
<field name="name">sign.request.pivot</field>
|
|
<field name="model">sign.request</field>
|
|
<field name="arch" type="xml">
|
|
<pivot string="Documents" sample="1">
|
|
<field name="create_date" type="row" interval="month"/>
|
|
<field name="state" type="col"/>
|
|
</pivot>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="sign_request_view_graph" model="ir.ui.view">
|
|
<field name="name">sign.request.graph</field>
|
|
<field name="model">sign.request</field>
|
|
<field name="arch" type="xml">
|
|
<graph string="Documents" sample="1">
|
|
<field name="create_date" type="row" interval="month"/>
|
|
<field name="state" type="col"/>
|
|
</graph>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="sign_request_view_form" model="ir.ui.view">
|
|
<field name="name">sign.request.form</field>
|
|
<field name="model">sign.request</field>
|
|
<field name="arch" type="xml">
|
|
<form create="false">
|
|
<header>
|
|
<div class="d-flex justify-content-between align-items-center gap-1">
|
|
<button string="Preview" type="object" name="go_to_document" class="oe_highlight" invisible="state == 'expired'"/>
|
|
<field name="completed_document_ids" widget="sign_request_documents_dropdown"/>
|
|
<button string="Cancel" type="object" invisible="state not in ('sent')" name="cancel" confirm="This will keep all the already completed signature of this request and disable every sent access, are you sure?"/>
|
|
</div>
|
|
<field name="state" widget="statusbar" statusbar_visible="sent,signed"/>
|
|
</header>
|
|
<sheet>
|
|
<field name="active" invisible="1"/>
|
|
<field name="template_id" invisible="1" kanban_view_ref="1484"/>
|
|
<field name="favorited_ids" widget="many2many_tags" options="{'color_field': 'color'}" invisible="1"/>
|
|
<widget name="web_ribbon" title="Signed" invisible="state != 'signed'"/>
|
|
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
|
<field name="integrity" invisible="1"/>
|
|
<div class="oe_title">
|
|
<label for="reference" string="Template"/>
|
|
<h1><field name="reference" placeholder="e.g. Non-disclosure agreement" readonly="1"/></h1>
|
|
</div>
|
|
<div class="alert alert-warning" role="alert" invisible="integrity">
|
|
The integrity of the document's history cannot be verified. This could mean that signature values or the underlying PDF document may have been modified after the fact.
|
|
</div>
|
|
<group>
|
|
<group>
|
|
<field name="active" invisible="1"/>
|
|
<field name="template_id" invisible="1" context="{'kanban_view_ref': 'sign.sign_template_view_kanban_mobile'}"/>
|
|
<field name="favorited_ids" widget="many2many_tags" options="{'color_field': 'color'}" invisible="1"/>
|
|
<field name="template_tags" widget="many2many_tags" options="{'color_field': 'color'}" placeholder="Add document tags here"/>
|
|
<field name="validity" readonly="state not in ['shared', 'sent']"/>
|
|
<label for="reminder_enabled" string="Reminder"/>
|
|
<div class="col">
|
|
<field name="reminder_enabled" class="oe_inline mb-0" nolabel="1" widget="boolean_toggle" options="{'autosave': False}"/> Send a reminder
|
|
<span invisible="not reminder_enabled">every<field name="reminder" class="text-center mb-0 o_sign_reminder_field" readonly="state not in ['shared', 'sent']"/> days.</span>
|
|
</div>
|
|
<field name="reference_doc" readonly="state != 'sent'"/>
|
|
</group>
|
|
</group>
|
|
<notebook>
|
|
<page string="Signers" name="signers">
|
|
<field name="request_item_ids" context="{'default_sign_request_id': id}"/>
|
|
</page>
|
|
<page string="Contacts in copy" name="cc_contacts">
|
|
<field name="cc_partner_ids">
|
|
<list>
|
|
<field name="name" string="Contacts in copy"/>
|
|
<field name="email"/>
|
|
</list>
|
|
</field>
|
|
</page>
|
|
<page string="Activity Logs" name="activity_logs" groups="sign.group_sign_manager">
|
|
<field name="sign_log_ids" readonly="1">
|
|
<list>
|
|
<field name="action"/>
|
|
<field name="log_date"/>
|
|
<field name="partner_id" string="Contact"/>
|
|
<field name="latitude" optional="hide"/>
|
|
<field name="longitude" optional="hide"/>
|
|
<field name="ip" string="IP Address"/>
|
|
</list>
|
|
</field>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
<chatter/>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="sign_request_view_search" model="ir.ui.view">
|
|
<field name="name">sign.request.search</field>
|
|
<field name="model">sign.request</field>
|
|
<field name="arch" type="xml">
|
|
<search>
|
|
<field name="reference" string="Document/Signer" filter_domain="['|', '|', ('reference', 'ilike', self), ('request_item_ids.partner_id.email', 'ilike', self), ('request_item_ids.partner_id.complete_name', 'ilike', self)]"/>
|
|
<field name="template_id" string="Template or Tag" filter_domain="['|', ('template_id.name', 'ilike', self), ('template_id.tag_ids.name', 'ilike', self)]"/>
|
|
<filter name="my_docs" string="My Documents" domain="[('create_uid', '=', uid)]"/>
|
|
<filter name="my_sign_request" string="My Requests" domain="[('request_item_ids.partner_id.user_ids', 'in', uid)]"/>
|
|
<separator/>
|
|
<filter name="favorite" string="My Favorites" domain="[('favorited_ids', 'in', uid)]"/>
|
|
<separator/>
|
|
<filter name="activities_expiring_soon" string="Expiring Soon" domain="[('activity_ids.date_deadline', '<', 'today +7d')]"/>
|
|
<separator/>
|
|
<filter name="waiting_for_me" string="Waiting for me" domain="[('need_my_signature', '=', True)]"/>
|
|
<filter name="waiting_for_others" string="Waiting for others" domain="[('create_uid', '=', uid), ('state', '=', 'sent'), '|', ('need_my_signature', '=', False), ('nb_wait', '>', 1)]"/>
|
|
<separator/>
|
|
<filter name="sent" string="Sent" domain="[('state', '=', 'sent')]"/>
|
|
<filter name="signed" string="Signed" domain="[('state', '=', 'signed')]"/>
|
|
<filter name="canceled" string="Cancelled" domain="[('state', '=', 'canceled')]"/>
|
|
<filter invisible="1" string="My Activities" name="filter_activities_my"
|
|
domain="[('activity_user_id', '=', uid)]"/>
|
|
<separator invisible="1"/>
|
|
<filter invisible="1" string="Late Activities" name="activities_overdue"
|
|
domain="[('my_activity_date_deadline', '<', 'today')]"
|
|
help="Show all records whose next activity date is past"/>
|
|
<filter invisible="1" string="Today Activities" name="activities_today"
|
|
domain="[('my_activity_date_deadline', '=', 'today')]"/>
|
|
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
|
|
domain="[('my_activity_date_deadline', '>', 'today')
|
|
]"/>
|
|
<separator/>
|
|
<filter name="archived_documents" string="Archived" domain="[('active', '=', False)]"/>
|
|
<group>
|
|
<filter name="group_by_template" string="Template" domain="[]" context="{'group_by': 'template_id'}"/>
|
|
<filter name="group_by_state" string="State" domain="[]" context="{'group_by': 'state'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="sign_request_action" model="ir.actions.act_window">
|
|
<field name="name">Documents</field>
|
|
<field name="res_model">sign.request</field>
|
|
<field name="path">sign-documents</field>
|
|
<field name="view_mode">list,kanban,form,pivot,graph,activity</field>
|
|
<field name="search_view_id" ref="sign_request_view_search"/>
|
|
<field name="domain">[('state', '!=', 'shared')]</field>
|
|
<field name="context">{'search_default_my_docs': 1, 'search_default_my_sign_request': 1, 'show_upload_button': True}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
No document yet
|
|
</p><p>
|
|
You're one click away from automating your signature process!
|
|
</p>
|
|
<p>Upload a PDF file or use an existing template to begin.</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="sign_all_request_action" model="ir.actions.act_window">
|
|
<field name="name">All Documents</field>
|
|
<field name="res_model">sign.request</field>
|
|
<field name="path">sign-all-documents</field>
|
|
<field name="view_mode">list,kanban,form,pivot,graph,activity</field>
|
|
<field name="context">{'show_upload_button': True}</field>
|
|
<field name="search_view_id" ref="sign_request_view_search"/>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
No document yet
|
|
</p><p>
|
|
You're one click away from automating your signature process!
|
|
</p>
|
|
<p>Upload a PDF file or use an existing template to begin.</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="sign_request_view_activity" model="ir.ui.view">
|
|
<field name="name">sign.request.actvity</field>
|
|
<field name="model">sign.request</field>
|
|
<field name="arch" type="xml">
|
|
<activity string="Sign Activity" js_class="sign_activity">
|
|
<field name="subject"/>
|
|
<templates>
|
|
<div t-name="activity-box">
|
|
<field name="template_id" />
|
|
</div>
|
|
</templates>
|
|
</activity>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Signature Request Item Views -->
|
|
<record id="sign_request_item_view_tree" model="ir.ui.view">
|
|
<field name="name">sign.request.item.list</field>
|
|
<field name="model">sign.request.item</field>
|
|
<field name="arch" type="xml">
|
|
<list editable="bottom" create="false" delete="false">
|
|
<field name="change_authorized" column_invisible="True"/>
|
|
<field name="partner_id" readonly="not change_authorized or state in ['completed']"/>
|
|
<field name="signer_email"/>
|
|
<field name="role_id"/>
|
|
<field name="state"/>
|
|
<field name="is_mail_sent" column_invisible="True"/>
|
|
<button name="send_signature_accesses" string="Send" type="object" icon="fa-square-o pe-2" invisible="not signer_email or state != 'sent' or is_mail_sent"/>
|
|
<button
|
|
name="send_signature_accesses"
|
|
string="Resend"
|
|
type="object"
|
|
icon="fa-check-square-o pe-2"
|
|
invisible="not signer_email or state != 'sent' or not is_mail_sent or parent.state == 'expired'"/>
|
|
</list>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="sign_request_item_view_form" model="ir.ui.view">
|
|
<field name="name">sign.request.item.form</field>
|
|
<field name="model">sign.request.item</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<header>
|
|
<field name="state" widget="statusbar"/>
|
|
</header>
|
|
<sheet>
|
|
<group>
|
|
<group>
|
|
<field name="partner_id"/>
|
|
<field name="role_id"/>
|
|
<field name="signer_email"/>
|
|
<field name="access_token" invisible="1"/>
|
|
<field name="signing_date"/>
|
|
<field name="color"/>
|
|
</group>
|
|
<group>
|
|
<field name="latitude"/>
|
|
<field name="longitude"/>
|
|
<field name="sms_number"/>
|
|
</group>
|
|
</group>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="sign_request_item_action" model="ir.actions.act_window">
|
|
<field name="name">Signature Request Items</field>
|
|
<field name="res_model">sign.request.item</field>
|
|
<field name="view_mode">list,form</field>
|
|
</record>
|
|
|
|
<!-- After installation of the module, open the related menu -->
|
|
<record id="base.open_menu" model="ir.actions.todo">
|
|
<field name="action_id" ref="base.action_open_website"/>
|
|
<field name="state">open</field>
|
|
</record>
|
|
</odoo>
|