314 lines
20 KiB
XML
314 lines
20 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="open_template" 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="toggle_active" class="dropdown-item" invisible="state not in ('sent', 'signed', 'canceled')">
|
|
<t t-if="!record.active.raw_value">Restore</t>
|
|
<t t-if="record.active.raw_value">Archive</t>
|
|
</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="Not in favorites, add it" aria-label="Not in favorites, add it"
|
|
class="fa fa-lg fa-star-o favorite_sign_button"/>
|
|
</t>
|
|
<t t-else="">
|
|
<a type="object" name="toggle_favorited" title="In favorites, remove it" aria-label="In favorites, remove it"
|
|
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"/>
|
|
</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-info="state in ('shared', 'sent')" decoration-muted="state == 'canceled'">
|
|
<header>
|
|
<button type="object" name="send_signature_accesses" class="btn btn-secondary" string="Resend"/>
|
|
<button type="object" name="get_completed_document" class="btn btn-secondary" string="Download"/>
|
|
</header>
|
|
<field name="reference" readonly="1"/>
|
|
<field name="template_id" readonly="1" optional="hide"/>
|
|
<field name="state" readonly="1"/>
|
|
<field name="request_item_ids" string="Contacts" widget="many2many_tags" readonly="1" options="{'color_field': 'color'}"/>
|
|
<field name="progress" readonly="1"/>
|
|
<field name="template_tags" string="Tags" widget="many2many_tags"/>
|
|
<field name="create_date" string="Create date" readonly="1"/>
|
|
<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="unlink" invisible="state != 'shared'" string="Stop Sharing" type="object"/>
|
|
<button name="get_completed_document" invisible="state != 'signed'" string="Download" type="object"/>
|
|
<button name="go_to_signable_document" string="sign" type="object" invisible="not need_my_signature or state != 'sent'"/>
|
|
<button name="send_signature_accesses" string="Resend" type="object" groups="sign.group_sign_user" invisible="state != 'sent' or create_uid != uid"/>
|
|
<button name="send_signature_accesses" string="Resend" type="object" groups="sign.group_sign_manager" invisible="state != 'sent' or create_uid == uid"/>
|
|
</list>
|
|
</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>
|
|
<button string="Preview" type="object" name="go_to_document" class="oe_highlight"/>
|
|
<button string="Download Document" type="object" invisible="state != 'signed'" name="get_completed_document" class="oe_highlight"/>
|
|
<button string="Cancel" type="object" invisible="state not in ('sent', 'signed')" name="cancel" confirm="This will keep all the already completed signature of this request and disable every sent access, are you sure?"/>
|
|
<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="Fully 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="Document Name"/>
|
|
<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="request_state" nolabel="1"/>
|
|
<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.attachment_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', '<',(context_today() + datetime.timedelta(days=7)).strftime('%Y-%m-%d'))]"/>
|
|
<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="Fully Signed" domain="[('state', '=', 'signed')]"/>
|
|
<filter name="canceled" string="Cancelled" domain="[('state', '=', 'canceled')]"/>
|
|
<filter invisible="1" string="Late Activities" name="activities_overdue"
|
|
domain="[('my_activity_date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"
|
|
help="Show all records which has next action date is before today"/>
|
|
<filter invisible="1" string="Today Activities" name="activities_today"
|
|
domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
|
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
|
|
domain="[('my_activity_date_deadline', '>', context_today().strftime('%Y-%m-%d'))
|
|
]"/>
|
|
<separator/>
|
|
<filter name="archived_documents" string="Archived" domain="[('active', '=', False)]"/>
|
|
<group expand="0" string="Group By">
|
|
<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>
|
|
<searchpanel class="searchpanel-xs-hide">
|
|
<field name="state" select="multi" icon="fa-inbox" enable_counters="1"/>
|
|
<field name="template_tags" string="tags" select="multi" icon="fa-tag" enable_counters="1"/>
|
|
</searchpanel>
|
|
</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">kanban,list,form,activity</field>
|
|
<field name="search_view_id" ref="sign_request_view_search"/>
|
|
<field name="context">{'search_default_my_docs': 1, 'search_default_my_sign_request': 1}</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">kanban,list,form,activity</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_share_view_form" model="ir.ui.view">
|
|
<field name="name">sign.request.share.view.form</field>
|
|
<field name="model">sign.request</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Multiple Signature Requests">
|
|
<field name="share_link" invisible="1"/>
|
|
<span class="text-muted" invisible="not share_link">Sharing will create a copy of the file to sign. That file can be reached by the link below. Every public user using the link will generate a document when the Signature is complete. The link is private, only those that receive the link will be able to sign it.</span>
|
|
<group invisible="not share_link">
|
|
<field name="share_link" widget="CopyClipboardChar" readonly="1" class="mb-3"/>
|
|
</group>
|
|
<footer>
|
|
<button string="Share & Close" class="btn-primary" special="cancel" data-hotkey="x"/>
|
|
<button string="Sign Now" name="go_to_signable_document" type="object" invisible="not share_link" data-hotkey="q"/>
|
|
</footer>
|
|
</form>
|
|
</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"/>
|
|
</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>
|