bemade_fsm: significant changes to work order report

- Remove date from main title heading (only in planned start)
- Add customer PO number under main heading
- Remove technician assignment info (only in timesheets)
- Add table for timesheet entries
- Remove time from time and materials section
- Hide visit section headers from materials section
- Add a section for showing the description of the visit task
- Add some <hr> elements for better visual separation
This commit is contained in:
Marc Durepos 2024-02-13 12:26:13 -05:00
parent 095160db5f
commit 59eb7e2239
3 changed files with 217 additions and 84 deletions

View file

@ -20,7 +20,7 @@
########################################################################################
{
'name': 'Improved Field Service Management',
'version': '15.0.1.0.10',
'version': '15.0.1.0.11',
'summary': 'Adds functionality necessary for managing field service operations at Durpro.',
'description': 'Adds functionality necessary for managing field service operations at Durpro.',
'category': 'Services/Field Service',

View file

@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-26 20:41+0000\n"
"PO-Revision-Date: 2024-01-26 20:41+0000\n"
"POT-Creation-Date: 2024-02-13 17:09+0000\n"
"PO-Revision-Date: 2024-02-13 17:09+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@ -16,7 +16,7 @@ msgstr ""
"Plural-Forms: \n"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour
msgid ""
"<span groups=\"account.group_show_line_subtotals_tax_excluded\">\n"
" Amount</span>\n"
@ -24,9 +24,9 @@ msgid ""
" Total Price</span>"
msgstr ""
"<span groups=\"account.group_show_line_subtotals_tax_excluded\">\n"
" Prix</span>\n"
" Montant</span>\n"
" <span groups=\"account.group_show_line_subtotals_tax_included\">\n"
" Prix</span>"
" Prix Total</span>"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_signature_block
@ -40,12 +40,12 @@ msgstr ""
" </span>"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour
msgid "<span>Disc.%</span>"
msgstr "<span>Escompte %</span>"
msgstr "<span>% Escompte</span>"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour
msgid ""
"<strong class=\"mr16\">Section\n"
" Subtotal</strong>"
@ -54,19 +54,19 @@ msgstr ""
" Sous-total</strong>"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour
msgid "<strong>Taxes</strong>"
msgstr "<strong>Taxes</strong>"
msgstr ""
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour
msgid "<strong>Total</strong>"
msgstr "<strong>Total</strong>"
msgstr ""
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour
msgid "<strong>Untaxed amount</strong>"
msgstr "<strong>Montant hors taxes</strong>"
msgstr "<strong>Montant hors-taxes</strong>"
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__message_needaction
@ -78,11 +78,6 @@ msgstr "Action requise"
msgid "Activities"
msgstr "Activités"
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr ""
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__activity_state
msgid "Activity State"
@ -97,7 +92,7 @@ msgstr "Icône du type d'activité"
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__tag_ids
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_equipment_summary
msgid "Application"
msgstr "Application"
msgstr ""
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__approx_date
@ -144,7 +139,7 @@ msgstr "Équipement client"
#: model:ir.ui.menu,name:bemade_fsm.menu_service_client
#: model:ir.ui.menu,name:bemade_fsm.menu_service_client_clients
msgid "Clients"
msgstr "Clients"
msgstr ""
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_tag__color
@ -169,7 +164,7 @@ msgstr "Complété"
#. module: bemade_fsm
#: model:ir.model,name:bemade_fsm.model_res_partner
msgid "Contact"
msgstr "Contact"
msgstr ""
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.sale_order_form_inherit
@ -181,11 +176,26 @@ msgstr "Contacts et équipements"
msgid "Create Task"
msgstr "Créer une tâche"
#. module: bemade_fsm
#. openerp-web
#: code:addons/bemade_fsm/static/src/xml/project_view_buttons.xml:0
#: code:addons/bemade_fsm/static/src/xml/project_view_buttons.xml:0
#, python-format
msgid "Create Task from Template"
msgstr "Créer une tâche à partir d'un gabarit"
#. module: bemade_fsm
#: model:ir.model,name:bemade_fsm.model_project_task_from_template_wizard
msgid "Create Task from Template Wizard"
msgstr "Assistant pour création de tâche à partir d'un gabarit"
#. module: bemade_fsm
#. openerp-web
#: code:addons/bemade_fsm/static/src/xml/project_view_buttons.xml:0
#, python-format
msgid "Create from Template"
msgstr "Créer à partir d'un gabarit"
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__create_uid
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_tag__create_uid
@ -216,6 +226,11 @@ msgstr "Client"
msgid "Customer:"
msgstr "Client :"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_timesheet_entries
msgid "Date"
msgstr ""
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_project_task_template__assignees
msgid "Default Assignees"
@ -257,7 +272,8 @@ msgid "Default tags for tasks created from this template."
msgstr "Étiquettes par défaut pour tâches créées à partir de ce gabarit."
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_materials_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour
msgid "Delivered"
msgstr "Livré"
@ -265,9 +281,10 @@ msgstr "Livré"
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__description
#: model:ir.model.fields,field_description:bemade_fsm.field_project_task_template__description
#: model_terms:ir.ui.view,arch_db:bemade_fsm.task_template_form_view
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_materials_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour
msgid "Description"
msgstr "Description"
msgstr ""
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.view_task_form2_inherit
@ -359,7 +376,7 @@ msgstr "Durée estimée"
#. module: bemade_fsm
#: model:project.task.type,name:bemade_fsm.planning_project_stage_exception
msgid "Exception"
msgstr "Exception"
msgstr ""
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.bemade_fsm_project_task_form_inherit
@ -463,8 +480,9 @@ msgstr "En cours"
msgid ""
"Indicates whether a line or all the lines in a section have been entirely "
"delivered and invoiced."
msgstr "Indique si une ligne ou toutes les lignes dans une section ont été entièrement "
"livrées et facturées."
msgstr ""
"Indique si une ligne ou toutes les lignes dans une section ont été "
"entièrement livrées et facturées."
#. module: bemade_fsm
#: model:ir.model.fields,help:bemade_fsm.field_bemade_fsm_visit__is_completed
@ -489,7 +507,7 @@ msgstr "Nom d'intervention"
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__task_ids
msgid "Interventions"
msgstr "Interventions"
msgstr ""
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__is_invoiced
@ -568,6 +586,11 @@ msgstr "Pièce jointe principale"
msgid "Mark as Delivered"
msgstr "Marquer comme livré"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_materials_table
msgid "Materials"
msgstr "Matériaux"
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__message_has_error
msgid "Message Delivery error"
@ -576,7 +599,16 @@ msgstr "Erreur de livraison de message"
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__message_ids
msgid "Messages"
msgstr "Messages"
msgstr ""
#. module: bemade_fsm
#: code:addons/bemade_fsm/models/task.py:0
#, python-format
msgid ""
"Modifying the planned start or end time on a task is not permitted when that"
" task already has planning records associated to it. Please modify or delete"
" the planning records instead."
msgstr ""
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__my_activity_date_deadline
@ -641,7 +673,8 @@ msgid "Number of unread messages"
msgstr "Nombre de messages non-lus"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_materials_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour
msgid "Ordered"
msgstr "Commandé"
@ -698,7 +731,7 @@ msgstr "Début planifié :"
#. module: bemade_fsm
#: model:ir.model,name:bemade_fsm.model_product_template
msgid "Product Template"
msgstr "Modèle de produit"
msgstr "Modèle d'article"
#. module: bemade_fsm
#: model:ir.model.fields,help:bemade_fsm.field_product_product__is_field_service
@ -762,7 +795,7 @@ msgstr "Section de commande de vente"
#: model:ir.model,name:bemade_fsm.model_sale_order
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__sale_order_id
msgid "Sales Order"
msgstr "Commande de ventes"
msgstr "Bon de commande"
#. module: bemade_fsm
#: model:ir.model,name:bemade_fsm.model_sale_order_line
@ -780,7 +813,9 @@ msgid "Sequence"
msgstr "Séquence"
#. module: bemade_fsm
#: code:addons/bemade_fsm/models/sale_order.py:0
#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__task_id
#, python-format
msgid "Service Visit"
msgstr "Visite de service"
@ -792,7 +827,7 @@ msgstr "Visites de service"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_signature_block
msgid "Signature"
msgstr "Signature"
msgstr ""
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_project_task__site_contacts
@ -821,7 +856,7 @@ msgstr "Date de début"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_tasks_table
msgid "Status"
msgstr "Status"
msgstr ""
#. module: bemade_fsm
#: model:ir.model.fields,help:bemade_fsm.field_bemade_fsm_equipment__activity_state
@ -887,14 +922,10 @@ msgstr "Nom de tâche"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_tasks_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_timesheet_entries
msgid "Technician"
msgstr "Technicien·ne"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_info_block
msgid "Technicians:"
msgstr "Technicien·ne·s:"
#. module: bemade_fsm
#: model:ir.model,name:bemade_fsm.model_project_task_template
msgid "Template for new project tasks"
@ -924,15 +955,16 @@ msgstr ""
#. module: bemade_fsm
#: model:ir.model.fields,help:bemade_fsm.field_project_task_from_template_wizard__task_template_id
msgid "The template to use when creating the new task."
msgstr ""
msgstr "Le gabarit à utiliser en créant la nouvelle tâche."
#. module: bemade_fsm
#: model:ir.model.fields,help:bemade_fsm.field_project_task_from_template_wizard__new_task_title
msgid ""
"The title (name) for the newly created task. If left blank, the name of the "
"template will be used."
msgstr "Le titre (nom) de la nouvelle tâche. Si laissé vide, le nom du "
"gabarit sera utilisé."
msgstr ""
"Le titre (nom) de la nouvelle tâche. Si laissé vide, le nom du gabarit sera "
"utilisé."
#. module: bemade_fsm
#: model_terms:ir.actions.act_window,help:bemade_fsm.task_template_act_window
@ -941,7 +973,22 @@ msgstr ""
"Il n'existe aucun gabarit de tâche, cliquez ci-dessus pour en créer une."
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table
#: code:addons/bemade_fsm/models/sale_order_line.py:0
#, python-format
msgid ""
"This task has been created from: <a href=# data-oe-model=sale.order data-oe-"
"id=%d>%s</a> (%s)"
msgstr ""
"Cette tâche a été créée à partir de : <a href=# data-oe-model=sale.order data-oe-"
"id=%d>%s</a> (%s)"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_timesheet_entries
msgid "Time"
msgstr "Temps"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour
msgid "Time &amp; Material"
msgstr "Temps &amp; matériaux"
@ -956,7 +1003,7 @@ msgid "Type of the exception activity on record."
msgstr "Type d'activité d'exception sur l'enregistrement."
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour
msgid "Unit Price"
msgstr "Prix unitaire"
@ -976,9 +1023,11 @@ msgid "View Task"
msgstr "Voir tâche"
#. module: bemade_fsm
#: code:addons/bemade_fsm/models/sale_order_line.py:0
#: model:ir.model.fields,field_description:bemade_fsm.field_project_task__visit_id
#: model:ir.model.fields,field_description:bemade_fsm.field_sale_order__visit_ids
#: model:ir.model.fields,field_description:bemade_fsm.field_sale_order_line__visit_id
#, python-format
msgid "Visit"
msgstr "Visite"
@ -1002,24 +1051,23 @@ msgstr "Messages du site web"
msgid "Website communication history"
msgstr "Historique de communication du site web"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_timesheet_entries
msgid "Work Completed"
msgstr "Travaux complétés"
#. module: bemade_fsm
#: model:project.task.type,name:bemade_fsm.planning_project_stage_work_completed
msgid "Work Executed"
msgstr "Travaux exécutés"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_info_block
msgid "Work Order"
msgstr "Bon de travail"
#. module: bemade_fsm
#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_info_block
msgid ""
"Work Order\n"
" Contacts:"
msgstr ""
"Bon de travail\n"
" Contacts :"
"Contacts recevant le bon de travail :"
#. module: bemade_fsm
#: model:ir.model.fields,field_description:bemade_fsm.field_project_task__work_order_contacts

View file

@ -1,7 +1,61 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<template id="workorder_page_sale_order_table">
<template id="workorder_page_materials_table">
<t t-set="order_lines"
t-value="doc.relevant_order_lines.filtered(lambda l:
l.product_id.type != 'service' and not l.is_downpayment and not l.visit_id)"/>
<t t-if="order_lines">
<t t-set="visit_lines" t-value="order_lines.mapped('visit_id')"/>
<t t-set="section_lines"
t-value="order_lines.filtered(lambda l: l.display_type == 'line_section')"/>
</t>
<div t-if="order_lines.filtered(lambda l: not l.display_type)" style="page-break-inside: avoid;">
<h2 t-if="order_lines">Materials</h2>
<div t-if="order_lines" class="table-responsive-sm">
<table class="table table-sm o_main_table">
<thead>
<tr>
<th class="text-left">Description</th>
<th class="text-right">Ordered</th>
<th class="text-right">Delivered</th>
</tr>
</thead>
<tbody class="sale_tbody">
<t t-foreach="order_lines" t-as="line">
<t t-set="is_task" t-value="line == doc.sale_line_id"/>
<tr t-att-class="'bg-200 font-weight-bold o_line_section' if line.display_type == 'line_section' else 'font-italic o_line_note' if line.display_type == 'line_note' else ''">
<t t-if="not line.display_type">
<td><span t-field="line.name"/></td>
<td class="text-right">
<span t-field="line.product_uom_qty"/>
<span t-field="line.product_uom"
groups="uom.group_uom"/>
</td>
<td class="text-right">
<span t-field="line.qty_delivered"/>
<span t-field="line.product_uom"
groups="uom.group_uom"/>
</td>
</t>
<t t-if="line.display_type == 'line_section'">
<td colspan="99">
<span t-field="line.name"/>
</td>
</t>
<t t-if="line.display_type == 'line_note'">
<td colspan="99">
<span t-field="line.name"/>
</td>
</t>
</tr>
</t>
</tbody>
</table>
</div>
</div>
</template>
<template id="workorder_page_sale_order_table_with_pricing_and_labour">
<t t-set="order_lines" t-value="doc.relevant_order_lines"/>
<t t-if="order_lines">
<t t-set="visit_lines" t-value="order_lines.mapped('visit_id')"/>
@ -164,7 +218,6 @@
</template>
<template id="workorder_page_tasks_table">
<t t-set="interventions" t-value="doc.child_ids"/>
<t t-set="timesheets" t-value="doc.timesheet_ids"/>
<t t-foreach="interventions" t-as="intervention">
<div style="page-break-inside: avoid;">
<h2 t-out="str(intervention_index + 1) + '. ' + intervention.name"/>
@ -219,29 +272,15 @@
</template>
<template id="workorder_page_info_block">
<h1>
<span t-if="planned_date_begin"
name="planned_date_begin"
t-out="doc.planned_date_begin.strftime('%Y-%m-%d')"
/>
<span t-else=""
name="date_now"
t-out="time.strftime('%Y-%m-%d')"
/> -
<span name="work_order_number" t-out="doc.work_order_number"/>
</h1>
<div class="row">
<div t-attf-class="{{'col-6' if report_type == 'pdf' else 'col-md-6 col-12'}}">
<div t-if="doc.user_ids"><h6>Technicians: </h6></div>
<t t-foreach="doc.user_ids" t-as="user">
<div class="mb-3">
<div t-esc="user" t-options='{
"widget": "contact",
"fields": ["name", "email"]
}'/>
</div>
</t>
</div>
<h4>
<span t-if="doc.sale_order_id and doc.sale_order_id.client_order_ref"
name="po_number"
t-out="doc.sale_order_id.client_order_ref"/>
</h4>
<hr/>
<div class="row" name="address_and_time">
<div t-attf-class="{{('col-6' if report_type == 'pdf' else 'col-md-6 col-12') + ' mb-3'}}">
<t t-if="doc.partner_id">
<div><h6>Customer: </h6></div>
@ -251,22 +290,19 @@
}'/>
</t>
</div>
</div>
<div class="row" t-if="doc.planned_date_begin or doc.planned_date_end">
<div t-attf-class="{{'col-6' if report_type == 'pdf' else 'col-md-6 col-12'}}">
<div t-attf-class="{{('col-6' if report_type == 'pdf' else 'col-md-6 col-12') + ' mb-3'}}"
t-if="doc.planned_date_begin or doc.planned_date_end">
<div t-if="doc.planned_date_begin"><h6>Planned start: </h6></div>
<div class="mb-3">
<div t-out="doc.planned_date_begin.strftime('%Y-%m-%d %H:%M')" />
<div t-out="doc.planned_date_begin.strftime('%Y-%m-%d %H:%M')"/>
</div>
</div>
<div t-attf-class="{{'col-6' if report_type == 'pdf' else 'col-md-6 col-12'}}">
<div t-if="doc.planned_date_end"><h6>Planned end: </h6></div>
<div class="mb-3">
<div t-out="doc.planned_date_end.strftime('%Y-%m-%d %H:%M')"/>
</div>
</div>
</div>
<div class="row">
<div class="row" name="site_and_work_order_contacts">
<div t-attf-class="{{'col-6' if report_type == 'pdf' else 'col-md-6 col-12'}}">
<div t-if="doc.site_contacts"><h6>Site Contacts: </h6></div>
<t t-foreach="doc.site_contacts" t-as="contact">
@ -291,6 +327,13 @@
</t>
</div>
</div>
<hr/>
<div t-if="doc.description" class="row" name="visit_description">
<div class="col-12">
<span t-out="doc.description" />
</div>
</div>
<hr/>
</template>
<template id="workorder_equipment_summary">
<div t-if="doc.equipment_ids and len(doc.child_ids) > 1"
@ -329,6 +372,47 @@
</div>
</div>
</template>
<template id="workorder_page_timesheet_entries">
<t t-set="timesheets" t-value="doc.timesheet_ids"/>
<div t-if="timesheets" style="page-break-inside: avoid;">
<h1>Time</h1>
<div class="table-responsive-sm">
<table class="table table-sm o_main_table">
<thead>
<tr>
<th width="14%">Date</th>
<th width="30%">Technician</th>
<th width="49%">Work Completed</th>
<th width="7%" class="text-right">Time</th>
</tr>
</thead>
<tbody>
<tr t-foreach="timesheets" t-as="timesheet" class="p-1 m-1">
<td>
<span t-out="timesheet.date.strftime('%Y-%m-%d')"/>
</td>
<td>
<span t-field="timesheet.employee_id.name"/>
</td>
<td>
<span t-field="timesheet.name"/>
</td>
<td>
<span t-esc="timesheet.unit_amount"
t-options="{
'widget': 'duration',
'digital': True,
'unit': 'hour',
'round': 'minute'
}"
/>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</template>
<template id="workorder_page_signature_block">
<div t-if="doc.worksheet_signature">
<div t-if="report_type == html" class="ribbon" style="
@ -366,7 +450,8 @@
<template id="work_order_page">
<div class="page">
<t t-call="bemade_fsm.workorder_page_info_block"/>
<t t-call="bemade_fsm.workorder_page_sale_order_table"/>
<t t-call="bemade_fsm.workorder_page_timesheet_entries"/>
<t t-call="bemade_fsm.workorder_page_materials_table"/>
<t t-call="bemade_fsm.workorder_equipment_summary"/>
<t t-call="bemade_fsm.workorder_page_signature_block"/>
<t t-call="bemade_fsm.workorder_page_tasks_table"/>