First commit waiting for Budget Alert
This commit is contained in:
16
modules/axelor-open-suite/axelor-maintenance/build.gradle
Normal file
16
modules/axelor-open-suite/axelor-maintenance/build.gradle
Normal file
@ -0,0 +1,16 @@
|
||||
apply plugin: "com.axelor.app-module"
|
||||
|
||||
apply from: "../version.gradle"
|
||||
|
||||
apply {
|
||||
version = openSuiteVersion
|
||||
}
|
||||
|
||||
axelor {
|
||||
title "Axelor Maintenance"
|
||||
description "Computerized Maintenance Management System"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile project(":modules:axelor-production")
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.4 KiB |
@ -0,0 +1,2 @@
|
||||
"importId";"codeSelect";"name";"nextNum";"padding";"prefixe";"suffixe";"toBeAdded";"yearlyResetOk"
|
||||
1000;"maintenance";"Maintenance";1;5;"CM";;1;0
|
||||
|
@ -0,0 +1,2 @@
|
||||
"importId";"codeSelect";"name";"nextNum";"padding";"prefixe";"suffixe";"toBeAdded";"yearlyResetOk"
|
||||
1000;"maintenance";"Maintenance";1;5;"CM";;1;0
|
||||
|
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_6.1.xsd">
|
||||
|
||||
<input file="base_sequence.csv" separator=";" type="com.axelor.apps.base.db.Sequence"
|
||||
search="self.importId = :importId">
|
||||
<bind to="yearlyResetOk" column="yearlyResetOk" eval="yearlyResetOk == '1' ? true : false"/>
|
||||
<bind to="nextNum" column="nextNum" eval="nextNum?.empty ? '1' : nextNum"/>
|
||||
<bind to="padding" column="padding" eval="padding?.empty ? '1' : padding"/>
|
||||
<bind to="toBeAdded" column="toBeAdded" eval="toBeAdded?.empty ? '1' : toBeAdded"/>
|
||||
<bind to="resetDate"
|
||||
eval="call:com.axelor.apps.base.service.app.AppBaseService:getTodayDate(null)"/>
|
||||
</input>
|
||||
|
||||
</csv-inputs>
|
||||
@ -0,0 +1,13 @@
|
||||
---
|
||||
name: Maintenance
|
||||
code: maintenance
|
||||
typeSelect: standard
|
||||
installOrder: 2350
|
||||
description: |
|
||||
Computerized Maintenance Management System
|
||||
image: app-maintenance.png
|
||||
modules:
|
||||
axelor-maintenance
|
||||
dependsOn:
|
||||
- production
|
||||
sequence: 52
|
||||
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_6.1.xsd">
|
||||
|
||||
<input file="auth_permission.csv" separator=";" type="com.axelor.auth.db.Permission"
|
||||
search="self.name = :name"/>
|
||||
|
||||
<input file="auth_role.csv" separator=";" type="com.axelor.auth.db.Role"
|
||||
search="self.name = :name">
|
||||
<bind column="permissions" to="permissions" search="self.name in :permissions"
|
||||
eval="permissions.split('\\|') as List"/>
|
||||
</input>
|
||||
|
||||
<input file="meta_helpEN.csv" separator=";" type="com.axelor.meta.db.MetaHelp">
|
||||
<bind to="language" eval="'en'"/>
|
||||
<bind to="type" eval="'tooltip'"/>
|
||||
<bind to="model" eval="__repo__(MetaModel).findByName(object)?.getFullName()"
|
||||
column="object"/>
|
||||
</input>
|
||||
|
||||
<input file="meta_helpFR.csv" separator=";" type="com.axelor.meta.db.MetaHelp">
|
||||
<bind to="language" eval="'fr'"/>
|
||||
<bind to="type" eval="'tooltip'"/>
|
||||
<bind to="model" eval="__repo__(MetaModel).findByName(object)?.getFullName()"
|
||||
column="object"/>
|
||||
</input>
|
||||
|
||||
</csv-inputs>
|
||||
@ -0,0 +1,2 @@
|
||||
"name";"object";"canRead";"canWrite";"canCreate";"canRemove";"canExport";"readCondition";"readParams";"writeCondition";"writeParams";"createCondition";"createParams";"removeCondition";"removeParams"
|
||||
"perm.maintenance.all";"com.axelor.apps.maintenance.db.*";"true";"true";"true";"true";"true";;;;;;;;
|
||||
|
@ -0,0 +1,2 @@
|
||||
"name";"description";"permissions"
|
||||
"role.admin";"Access to all objects for all modules";"perm.maintenance.all"
|
||||
|
@ -0,0 +1,5 @@
|
||||
"module";"object";"view";"field";"help"
|
||||
"axelor-maintenance";"Machine";"maintenance-machine-form";"startingDuration";"The time the machine starts before it can be used."
|
||||
"axelor-maintenance";"Machine";"maintenance-machine-form";"setupDuration";"Time between two cycles. This is the time to wait until the end of a cycle to start a new cycle."
|
||||
"axelor-maintenance";"Machine";"maintenance-machine-form";"endingDuration";"Ending duration of the machine."
|
||||
"axelor-maintenance";"Machine";"maintenance-machine-form";"weeklyPlanning";"Enables to select a general planning of machine availability (full-time or part-time). "
|
||||
|
@ -0,0 +1,5 @@
|
||||
"module";"object";"view";"field";"help"
|
||||
"axelor-maintenance";"Machine";"maintenance-machine-form";"startingDuration";"Temps que met la machine à démarrer avant de pouvoir être utilisée."
|
||||
"axelor-maintenance";"Machine";"maintenance-machine-form";"setupDuration";"Temps inter-opérations. Il s'agit du temps qu'il faut attendre après la fin d'une opération afin de pouvoir en commencer une nouvelle."
|
||||
"axelor-maintenance";"Machine";"maintenance-machine-form";"endingDuration";"Temps de clôture de la machine."
|
||||
"axelor-maintenance";"Machine";"maintenance-machine-form";"weeklyPlanning";"Permet de sélectionner un planning général de disponibilité de la machine (mi-temps ou pleins-temps) ."
|
||||
|
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_6.1.xsd">
|
||||
|
||||
<module name="production" package="com.axelor.apps.production.db"/>
|
||||
|
||||
<entity name="BillOfMaterial">
|
||||
<integer name="typeSelect" default="1" title="Type" selection="manuf.order.type.select"/>
|
||||
|
||||
<many-to-one name="machineType" ref="com.axelor.apps.production.db.MachineType"
|
||||
title="Machine type"/>
|
||||
<many-to-one name="product" ref="com.axelor.apps.base.db.Product" title="Product"
|
||||
required="false"/>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_6.1.xsd">
|
||||
|
||||
<module name="maintenance" package="com.axelor.apps.maintenance.db"/>
|
||||
|
||||
<entity name="EquipementMaintenance">
|
||||
<string name="code" title="Maintenance Code" namecolumn="true" readonly="true"/>
|
||||
<string name="name" title="Maintenance Name" required="true"/>
|
||||
<many-to-one name="maintenanceCategory" ref="MaintenanceCategory"
|
||||
title="Maintenance Category"/>
|
||||
<many-to-one name="machine" ref="com.axelor.apps.production.db.Machine"
|
||||
title="Machine"/>
|
||||
<integer name="mtnEachDay" title="Generate request each"/>
|
||||
<integer name="mtnEachCycle" title="Generate request each"/>
|
||||
<integer name="mtnEachDuration" title="Generate request each"/>
|
||||
<integer name="createMtnRequestSelect" title="Create maintenance request"
|
||||
selection="maintenance.maintenance.create.mtn.select"/>
|
||||
<date name="nextMtnDate" title="Next maintenance date"/>
|
||||
<string name="mtnProcedure" title="Maintenance Procedure"/>
|
||||
<many-to-one name="mtnFile" title="Maintenance File"
|
||||
ref="com.axelor.meta.db.MetaFile"/>
|
||||
<many-to-one name="image" title="equipement.maintenance.image"
|
||||
ref="com.axelor.meta.db.MetaFile"/>
|
||||
<one-to-many name="maintenanceRequestList" ref="MaintenanceRequest"
|
||||
title="Maintenance Requests" mappedBy="equipementMaintenance"/>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_6.1.xsd">
|
||||
|
||||
<module name="maintenance" package="com.axelor.apps.maintenance.db"/>
|
||||
|
||||
<entity name="MaintenanceCategory">
|
||||
<string name="name" title="Name" required="true"/>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_6.1.xsd">
|
||||
|
||||
<module name="maintenance" package="com.axelor.apps.maintenance.db"/>
|
||||
|
||||
<entity name="MaintenanceRequest">
|
||||
<many-to-one name="equipementMaintenance" ref="EquipementMaintenance"/>
|
||||
<integer name="statusSelect" title="State" selection="maintenance.request.nav.select.maint"/>
|
||||
<date name="requestDate" title="Request date" required="true"/>
|
||||
<many-to-one name="requestBy" ref="com.axelor.auth.db.User" title="Request By"/>
|
||||
<date name="expectedDate" title="Expected date" required="true"/>
|
||||
<integer name="durationHours" title="Duration (Hours)"/>
|
||||
<many-to-one name="assignedTo" ref="com.axelor.auth.db.User" title="Assigned to"/>
|
||||
<string name="mtnTask" title="Maintenance task" large="true"/>
|
||||
<integer name="actionSelect" title="Action"
|
||||
selection="maintenance.maintenance.request.action.select"/>
|
||||
<many-to-one name="manufOrder" ref="com.axelor.apps.production.db.ManufOrder"
|
||||
title="Manufacturing Order"/>
|
||||
<date name="doneOn" title="Done on"/>
|
||||
<string name="mtnComments" title="Maintenance comments"/>
|
||||
<date name="startDate" title="Event start date"/>
|
||||
<date name="endDate" title="Event end date"/>
|
||||
<integer name="sequence"/>
|
||||
<many-to-one name="machine" title="Machine"
|
||||
ref="com.axelor.apps.production.db.Machine"/>
|
||||
|
||||
<extra-code>
|
||||
<![CDATA[
|
||||
public static final int STATUS_PLANNED = 0;
|
||||
public static final int STATUS_IN_PROGRESS = 1;
|
||||
public static final int STATUS_COMPLETED = 2;
|
||||
public static final int STATUS_CANCELED = 3;
|
||||
|
||||
public static final int ACTION_CORRECTIVE = 0;
|
||||
public static final int ACTION_PREVENTIVE = 1;
|
||||
]]>
|
||||
</extra-code>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_6.1.xsd">
|
||||
|
||||
<module name="production" package="com.axelor.apps.production.db"/>
|
||||
|
||||
<entity name="ManufOrder">
|
||||
|
||||
<many-to-one name="machineType" ref="com.axelor.apps.production.db.MachineType"
|
||||
title="Machine type"/>
|
||||
<many-to-one name="machine" ref="com.axelor.apps.production.db.Machine"
|
||||
title="Machine"/>
|
||||
|
||||
<extra-code><![CDATA[
|
||||
|
||||
//TYPE SELECT
|
||||
public static final int TYPE_MAINTENANCE = 3;
|
||||
]]></extra-code>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_6.1.xsd">
|
||||
|
||||
<module name="production" package="com.axelor.apps.production.db"/>
|
||||
|
||||
<entity name="ProdProcess">
|
||||
<integer name="typeSelect" default = "1" title="Type" selection="manuf.order.type.select"/>
|
||||
|
||||
<many-to-one name="machineType" ref="com.axelor.apps.production.db.MachineType"
|
||||
title="Machine type"/>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,113 @@
|
||||
"key","message","comment","context"
|
||||
"Action",,,
|
||||
"Actions",,,
|
||||
"All reached",,,
|
||||
"Allocate all",,,
|
||||
"Alternative Bill of materials",,,
|
||||
"App",,,
|
||||
"App maintenance",,,
|
||||
"Assigned to",,,
|
||||
"BOM.machine",,,
|
||||
"Bill of materials",,,
|
||||
"Bills of material",,,
|
||||
"Bills of materials",,,
|
||||
"Cancel",,,
|
||||
"Cancel Reason",,,
|
||||
"Cancel reservation",,,
|
||||
"Canceled",,,
|
||||
"Complete",,,
|
||||
"Completed",,,
|
||||
"Compute cost price",,,
|
||||
"Configuration",,,
|
||||
"Consumed products",,,
|
||||
"Corrective",,,
|
||||
"Cost",,,
|
||||
"Create maintenance request",,,
|
||||
"Current requests",,,
|
||||
"Cycles",,,
|
||||
"Dates",,,
|
||||
"Days",,,
|
||||
"Deallocate all",,,
|
||||
"Default Bill of materials",,,
|
||||
"Done on",,,
|
||||
"Duration (Hours)",,,
|
||||
"End date",,,
|
||||
"Equipement maintenance",,,
|
||||
"Equipement maintenances",,,
|
||||
"Event end date",,,
|
||||
"Event start date",,,
|
||||
"Expected date",,,
|
||||
"Finish",,,
|
||||
"First reached",,,
|
||||
"General BoM",,,
|
||||
"Generate new version",,,
|
||||
"Generate request each",,,
|
||||
"Hours of production",,,
|
||||
"In progress",,,
|
||||
"MO's comment from sale order",,,
|
||||
"MO's comment from sale order line",,,
|
||||
"Machine",,,
|
||||
"Machine type",,,
|
||||
"Machines",,,
|
||||
"Machines unavailable",,,
|
||||
"Maintenance",,,
|
||||
"Maintenance Category",,,
|
||||
"Maintenance File",,,
|
||||
"Maintenance Procedure",,,
|
||||
"Maintenance Request",,,
|
||||
"Maintenance Requests",,,
|
||||
"Maintenance comments",,,
|
||||
"Maintenance order",,,
|
||||
"Maintenance orders",,,
|
||||
"Maintenance periods",,,
|
||||
"Maintenance task",,,
|
||||
"ManufOrder.machine",,,
|
||||
"ManufOrder.machineType",,,
|
||||
"Manufacturing Order",,,
|
||||
"Merged MO",,,
|
||||
"Missing equipement maintenance sequence.",,,
|
||||
"My Maintenance requests",,,
|
||||
"Name",,,
|
||||
"Next maintenance date",,,
|
||||
"Note",,,
|
||||
"Number of phases",,,
|
||||
"Options",,,
|
||||
"Outsourced",,,
|
||||
"Partial Finish",,,
|
||||
"Pause",,,
|
||||
"Permanent",,,
|
||||
"Phases",,,
|
||||
"Plan",,,
|
||||
"Planned dates",,,
|
||||
"Pre-fill operations",,,
|
||||
"Preventive",,,
|
||||
"Print",,,
|
||||
"Print Production Process",,,
|
||||
"ProdProcess.machine",,,
|
||||
"Product",,,
|
||||
"Production process",,,
|
||||
"Production processes",,,
|
||||
"Real dates",,,
|
||||
"Replan",,,
|
||||
"Reports",,,
|
||||
"Request By",,,
|
||||
"Request date",,,
|
||||
"Request history",,,
|
||||
"Reserve all",,,
|
||||
"Residual products",,,
|
||||
"Resume",,,
|
||||
"Sequence",,,
|
||||
"Start",,,
|
||||
"Start date",,,
|
||||
"State",,,
|
||||
"Total Planned Duration",,,
|
||||
"Total Real Duration",,,
|
||||
"Type",,,
|
||||
"Update planned quantities (Components and FP)",,,
|
||||
"Update product cost price",,,
|
||||
"Update real quantities (Components and FP)",,,
|
||||
"Version management",,,
|
||||
"equipement.maintenance.code",,,
|
||||
"equipement.maintenance.image",,,
|
||||
"equipement.maintenance.name",,,
|
||||
"maintenance.request.planned",,,
|
||||
|
@ -0,0 +1,113 @@
|
||||
"key","message","comment","context"
|
||||
"Action",,,
|
||||
"Actions",,,
|
||||
"All reached",,,
|
||||
"Allocate all",,,
|
||||
"Alternative Bill of materials",,,
|
||||
"App",,,
|
||||
"App maintenance",,,
|
||||
"Assigned to",,,
|
||||
"BOM.machine",,,
|
||||
"Bill of materials",,,
|
||||
"Bills of material",,,
|
||||
"Bills of materials",,,
|
||||
"Cancel",,,
|
||||
"Cancel Reason",,,
|
||||
"Cancel reservation",,,
|
||||
"Canceled",,,
|
||||
"Complete",,,
|
||||
"Completed",,,
|
||||
"Compute cost price",,,
|
||||
"Configuration",,,
|
||||
"Consumed products",,,
|
||||
"Corrective",,,
|
||||
"Cost",,,
|
||||
"Create maintenance request",,,
|
||||
"Current requests",,,
|
||||
"Cycles",,,
|
||||
"Dates",,,
|
||||
"Days",,,
|
||||
"Deallocate all",,,
|
||||
"Default Bill of materials",,,
|
||||
"Done on",,,
|
||||
"Duration (Hours)",,,
|
||||
"End date",,,
|
||||
"Equipement maintenance",,,
|
||||
"Equipement maintenances",,,
|
||||
"Event end date",,,
|
||||
"Event start date",,,
|
||||
"Expected date",,,
|
||||
"Finish",,,
|
||||
"First reached",,,
|
||||
"General BoM",,,
|
||||
"Generate new version",,,
|
||||
"Generate request each",,,
|
||||
"Hours of production",,,
|
||||
"In progress",,,
|
||||
"MO's comment from sale order",,,
|
||||
"MO's comment from sale order line",,,
|
||||
"Machine",,,
|
||||
"Machine type",,,
|
||||
"Machines",,,
|
||||
"Machines unavailable",,,
|
||||
"Maintenance",,,
|
||||
"Maintenance Category",,,
|
||||
"Maintenance File",,,
|
||||
"Maintenance Procedure",,,
|
||||
"Maintenance Request",,,
|
||||
"Maintenance Requests",,,
|
||||
"Maintenance comments",,,
|
||||
"Maintenance order",,,
|
||||
"Maintenance orders",,,
|
||||
"Maintenance periods",,,
|
||||
"Maintenance task",,,
|
||||
"ManufOrder.machine","Machine",,
|
||||
"ManufOrder.machineType","Machine Type",,
|
||||
"Manufacturing Order",,,
|
||||
"Merged MO",,,
|
||||
"Missing equipement maintenance sequence.",,,
|
||||
"My Maintenance requests",,,
|
||||
"Name",,,
|
||||
"Next maintenance date",,,
|
||||
"Note",,,
|
||||
"Number of phases",,,
|
||||
"Options",,,
|
||||
"Outsourced",,,
|
||||
"Partial Finish",,,
|
||||
"Pause",,,
|
||||
"Permanent",,,
|
||||
"Phases",,,
|
||||
"Plan",,,
|
||||
"Planned dates",,,
|
||||
"Pre-fill operations",,,
|
||||
"Preventive",,,
|
||||
"Print",,,
|
||||
"Print Production Process",,,
|
||||
"ProdProcess.machine",,,
|
||||
"Product",,,
|
||||
"Production process",,,
|
||||
"Production processes",,,
|
||||
"Real dates",,,
|
||||
"Replan",,,
|
||||
"Reports",,,
|
||||
"Request By",,,
|
||||
"Request date",,,
|
||||
"Request history",,,
|
||||
"Reserve all",,,
|
||||
"Residual products",,,
|
||||
"Resume",,,
|
||||
"Sequence",,,
|
||||
"Start",,,
|
||||
"Start date",,,
|
||||
"State",,,
|
||||
"Total Planned Duration",,,
|
||||
"Total Real Duration",,,
|
||||
"Type",,,
|
||||
"Update planned quantities (Components and FP)",,,
|
||||
"Update product cost price",,,
|
||||
"Update real quantities (Components and FP)",,,
|
||||
"Version management",,,
|
||||
"equipement.maintenance.code","Code",,
|
||||
"equipement.maintenance.image","Image",,
|
||||
"equipement.maintenance.name","Name",,
|
||||
"maintenance.request.planned","Planned",,
|
||||
|
@ -0,0 +1,113 @@
|
||||
"key","message","comment","context"
|
||||
"Action",,,
|
||||
"Actions",,,
|
||||
"All reached","Si toutes les conditions sont atteintes",,
|
||||
"Allocate all",,,
|
||||
"Alternative Bill of materials",,,
|
||||
"App",,,
|
||||
"App maintenance",,,
|
||||
"Assigned to","Assigné à",,
|
||||
"BOM.machine",,,
|
||||
"Bill of materials",,,
|
||||
"Bills of material",,,
|
||||
"Bills of materials","Nomenclatures",,
|
||||
"Cancel",,,
|
||||
"Cancel Reason",,,
|
||||
"Cancel reservation",,,
|
||||
"Canceled",,,
|
||||
"Complete",,,
|
||||
"Completed","Terminée",,
|
||||
"Compute cost price",,,
|
||||
"Configuration",,,
|
||||
"Consumed products",,,
|
||||
"Corrective",,,
|
||||
"Cost",,,
|
||||
"Create maintenance request","Créer demande de maintenance",,
|
||||
"Current requests","Demandes à réaliser",,
|
||||
"Cycles","Cycles",,
|
||||
"Dates",,,
|
||||
"Days","Jours",,
|
||||
"Deallocate all",,,
|
||||
"Default Bill of materials",,,
|
||||
"Done on","Réalisé le ",,
|
||||
"Duration (Hours)","Durée (Heures)",,
|
||||
"End date",,,
|
||||
"Equipement maintenance","Maintenance equipement",,
|
||||
"Equipement maintenances","Maintenances équipement",,
|
||||
"Event end date",,,
|
||||
"Event start date",,,
|
||||
"Expected date","Echéance",,
|
||||
"Finish",,,
|
||||
"First reached","Si la première condition atteinte",,
|
||||
"General BoM",,,
|
||||
"Generate new version",,,
|
||||
"Generate request each","Générer demande chaque",,
|
||||
"Hours of production","Heures de production",,
|
||||
"In progress","En cours",,
|
||||
"MO's comment from sale order",,,
|
||||
"MO's comment from sale order line",,,
|
||||
"Machine",,,
|
||||
"Machine type","Type de machine",,
|
||||
"Machines",,,
|
||||
"Machines unavailable","Indisponibilité des machines",,
|
||||
"Maintenance","Maintenance",,
|
||||
"Maintenance Category","Catégorie de maintenance",,
|
||||
"Maintenance File","Fichier maintenance",,
|
||||
"Maintenance Procedure","Procedure de maintenance",,
|
||||
"Maintenance Request","Demande de maintenance",,
|
||||
"Maintenance Requests","Demande de maintenance",,
|
||||
"Maintenance comments","Commentaires maintenance",,
|
||||
"Maintenance order","Ordre de maintenance",,
|
||||
"Maintenance orders","Ordres de maintenance",,
|
||||
"Maintenance periods","Périodes de maintenance",,
|
||||
"Maintenance task","Maintenance à réaliser",,
|
||||
"ManufOrder.machine","Machine",,
|
||||
"ManufOrder.machineType","Machine Type",,
|
||||
"Manufacturing Order","Ordre de Fabrication",,
|
||||
"Merged MO",,,
|
||||
"Missing equipement maintenance sequence.","Une séquence pour la maintenance de l'équipement est manquante.",,
|
||||
"My Maintenance requests","Mes demandes de maintenance",,
|
||||
"Name",,,
|
||||
"Next maintenance date","Prochaine date de maintenance",,
|
||||
"Note",,,
|
||||
"Number of phases",,,
|
||||
"Options",,,
|
||||
"Outsourced",,,
|
||||
"Partial Finish",,,
|
||||
"Pause",,,
|
||||
"Permanent",,,
|
||||
"Phases",,,
|
||||
"Plan",,,
|
||||
"Planned dates",,,
|
||||
"Pre-fill operations",,,
|
||||
"Preventive","Préventive",,
|
||||
"Print",,,
|
||||
"Print Production Process",,,
|
||||
"ProdProcess.machine",,,
|
||||
"Product",,,
|
||||
"Production process",,,
|
||||
"Production processes","Gammes",,
|
||||
"Real dates",,,
|
||||
"Replan","Replanifier",,
|
||||
"Reports",,,
|
||||
"Request By","Demandé par",,
|
||||
"Request date","Date de la demande",,
|
||||
"Request history","Historique des actions",,
|
||||
"Reserve all",,,
|
||||
"Residual products",,,
|
||||
"Resume",,,
|
||||
"Sequence",,,
|
||||
"Start","Débuter",,
|
||||
"Start date",,,
|
||||
"State",,,
|
||||
"Total Planned Duration",,,
|
||||
"Total Real Duration",,,
|
||||
"Type",,,
|
||||
"Update planned quantities (Components and FP)",,,
|
||||
"Update product cost price",,,
|
||||
"Update real quantities (Components and FP)",,,
|
||||
"Version management",,,
|
||||
"equipement.maintenance.code","Référence",,
|
||||
"equipement.maintenance.image","Image",,
|
||||
"equipement.maintenance.name","Description",,
|
||||
"maintenance.request.planned","Prévue",,
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_6.1.xsd">
|
||||
|
||||
<grid name="maintenance-bill-of-material-grid" title="Bills of material"
|
||||
model="com.axelor.apps.production.db.BillOfMaterial">
|
||||
<field name="fullName"/>
|
||||
<field name="company"/>
|
||||
<field name="workshopStockLocation"/>
|
||||
<field name="machineType"/>
|
||||
<field name="qty" aggregate="sum" x-scale="2"/>
|
||||
<field name="unit" form-view="unit-form" grid-view="unit-grid"/>
|
||||
<field name="prodProcess" grid-view="prod-process-grid"
|
||||
form-view="maintenance-prod-process-form"/>
|
||||
<field name="statusSelect"/>
|
||||
</grid>
|
||||
|
||||
<form name="maintenance-bill-of-material-form" title="Bill of materials"
|
||||
model="com.axelor.apps.production.db.BillOfMaterial" width="large"
|
||||
onLoad="action-bill-of-material-group-on-load"
|
||||
onSave="save,action-bill-of-material-method-name,action-bill-of-material-method-validate-prod-process,action-bill-of-material-record-bill-of-material,save"
|
||||
onNew="action-maintenance-bill-of-material-group-onnew" canNew="!_isPersonalized">
|
||||
<menubar>
|
||||
<menu name="bomReportsMenu" title="Reports">
|
||||
<item name="printItem" title="Print" action="action-bill-of-material-method-print"/>
|
||||
</menu>
|
||||
<menu name="bomOptionsMenu" title="Options">
|
||||
<item if="__config__.app.getApp('production')?.manageBillOfMaterialVersion"
|
||||
name="generateNewVersionItem" title="Generate new version"
|
||||
action="action-bill-of-material-check-other-version,action-bill-of-material-generate-new-version"/>
|
||||
</menu>
|
||||
</menubar>
|
||||
<panel name="mainPanel">
|
||||
<field name="statusSelect" showTitle="false" readonly="false" colSpan="8"
|
||||
widget="NavSelect"/>
|
||||
<field name="$defaultBOMOnProduct" showTitle="false" readonly="true" colSpan="4">
|
||||
<viewer depends="$defaultBillOfMaterial"><![CDATA[
|
||||
|
||||
<h4 class="text-right">
|
||||
<span class="label label-default" style="background-color: #009900; margin: 5px 0 !important; display: inline-table; line-height: initial;" ng-show="record.$defaultBillOfMaterial.id == record.id" x-translate>Default Bill of materials</span>
|
||||
<span class="label label-default" style="background-color: #B6473F; margin: 5px 0 !important; display: inline-table; line-height: initial;" ng-show="record.$defaultBillOfMaterial.id != record.id" x-translate>Alternative Bill of materials</span>
|
||||
</h4>
|
||||
]]></viewer>
|
||||
</field>
|
||||
<field name="fullName" showTitle="false" colSpan="12">
|
||||
<viewer depends="name"><![CDATA[
|
||||
|
||||
<h3>
|
||||
<span style="margin: 5px 0 !important; display: inline-table; line-height: initial;">{{record.fullName}}</span>
|
||||
</h3>
|
||||
|
||||
]]></viewer>
|
||||
<editor>
|
||||
<field name="name" showTitle="true" css="label-bold bold large"/>
|
||||
</editor>
|
||||
</field>
|
||||
<field name="company" widget="SuggestBox" canEdit="false" form-view="company-form"
|
||||
grid-view="company-grid"/>
|
||||
<field if="__config__.app.getApp('production')?.getManageWorkshop()"
|
||||
name="workshopStockLocation" canEdit="false"
|
||||
domain="self.company = :company and self.typeSelect = 1 and self.isWorkshop = true"/>
|
||||
<field name="machineType" form-view="machine-type-form" grid-view="machine-type-grid"
|
||||
required="true"/>
|
||||
<field name="prodProcess" canNew="true"
|
||||
onChange="action-bill-of-material-method-validate-prod-process"
|
||||
domain="self.machineType = :machineType AND self.company = :company AND ((:workshopStockLocation IS NULL AND self.workshopStockLocation IS NULL) OR self.workshopStockLocation = :workshopStockLocation) AND self.typeSelect = 3"
|
||||
form-view="maintenance-prod-process-form" grid-view="prod-process-grid"/>
|
||||
<field name="qty" colSpan="3"/>
|
||||
<field name="unit" colSpan="3" canEdit="false" required="true" form-view="unit-form"
|
||||
grid-view="unit-grid"/>
|
||||
<field name="product.defaultBillOfMaterial" hidden="true" colSpan="1"/>
|
||||
<field name="typeSelect" hidden="true"/>
|
||||
</panel>
|
||||
<panel-tabs name="mainPanelTab">
|
||||
<panel name="costPanel" title="Cost">
|
||||
<button name="computeCostPriceBtn" title="Compute cost price"
|
||||
onClick="save,action-bill-of-material-method-compute-cost-price"/>
|
||||
<field name="costPrice" readonly="true"/>
|
||||
<button name="updateProductCostPriceBtn" title="Update product cost price"
|
||||
onClick="save,action-bill-of-material-method-update-product-cost-price"/>
|
||||
<panel-related name="costSheetListsPanel" readonly="false" colSpan="12"
|
||||
field="costSheetList" form-view="cost-sheet-bill-of-material-form"
|
||||
grid-view="cost-sheet-bill-of-material-grid"/>
|
||||
</panel>
|
||||
<panel name="versionManagementPanel" title="Version management" hidden="true"
|
||||
showIf="versionNumber > 1">
|
||||
<field name="versionNumber" colSpan="3"/>
|
||||
<field name="originalBillOfMaterial" readonly="true" colSpan="3"
|
||||
form-view="bill-of-material-form" grid-view="bill-of-material-grid"/>
|
||||
</panel>
|
||||
<panel name="notePanel" title="Note">
|
||||
<field name="note" showTitle="false" colSpan="12"/>
|
||||
</panel>
|
||||
</panel-tabs>
|
||||
<panel-mail name="mailPanel">
|
||||
<mail-messages limit="4"/>
|
||||
<mail-followers/>
|
||||
</panel-mail>
|
||||
</form>
|
||||
|
||||
<action-group name="action-maintenance-bill-of-material-group-onnew">
|
||||
<action name="action-bill-of-material-default-record"/>
|
||||
<action name="action-bill-of-material-group-on-load"/>
|
||||
<action name="action-maintenance-bill-of-material-attrs-set-default"/>
|
||||
</action-group>
|
||||
|
||||
<!-- action-bill-of-material-default-record,
|
||||
action-bill-of-material-attrs-price-and-qty-digits,
|
||||
action-bill-of-material-record-count-number-of-components -->
|
||||
|
||||
<action-attrs name="action-maintenance-bill-of-material-attrs-set-default">
|
||||
<attribute name="value" for="typeSelect" expr="eval: __repo__(ManufOrder).TYPE_MAINTENANCE"/>
|
||||
</action-attrs>
|
||||
|
||||
<action-record name="action-bill-of-material-record-bill-of-material" model="com.axelor.apps.production.db.BillOfMaterial">
|
||||
<field name="typeSelect" expr="eval: _typeSelect"/>
|
||||
</action-record>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_6.1.xsd">
|
||||
|
||||
<grid name="equipement-maintenance-grid" title="Equipement maintenance"
|
||||
model="com.axelor.apps.maintenance.db.EquipementMaintenance">
|
||||
<field name="code"/>
|
||||
<field name="name"/>
|
||||
<field name="maintenanceCategory"/>
|
||||
<field name="machine"/>
|
||||
<field name="nextMtnDate"/>
|
||||
</grid>
|
||||
|
||||
<form name="equipement-maintenance-form" title="Equipement maintenance"
|
||||
model="com.axelor.apps.maintenance.db.EquipementMaintenance" width="large">
|
||||
<panel name="main">
|
||||
<panel colSpan="2" itemSpan="12">
|
||||
<field name="image" widget="Image"/>
|
||||
</panel>
|
||||
<panel colSpan="10">
|
||||
<field name="name" colSpan="8"/>
|
||||
<field name="code" colSpan="4"/>
|
||||
<field name="maintenanceCategory"/>
|
||||
<field name="machine" onChange="action-equipement-maintenance-attrs-machine-on-change"/>
|
||||
</panel>
|
||||
<panel title="Maintenance periods" colSpan="12">
|
||||
<field name="mtnEachDay" colSpan="3"/>
|
||||
<label name="mtnDays" title="Days" colSpan="1"/>
|
||||
<field name="mtnEachCycle" showIf="machine != null" colSpan="3"/>
|
||||
<label name="mtnCycles" title="Cycles" colSpan="1" showIf="machine != null"/>
|
||||
<field name="mtnEachDuration" showIf="machine != null" colSpan="3"/>
|
||||
<label name="mtnHoursOfProduction" title="Hours of production" colSpan="1"
|
||||
showIf="machine != null"/>
|
||||
</panel>
|
||||
<field name="nextMtnDate"/>
|
||||
<field name="createMtnRequestSelect" showIf="machine != null"/>
|
||||
<field name="mtnProcedure" colSpan="12" widget="html"/>
|
||||
<field name="mtnFile" widget="binary-link"/>
|
||||
</panel>
|
||||
<panel-related field="maintenanceRequestList" colSpan="12">
|
||||
<field name="requestDate"/>
|
||||
<field name="requestBy"/>
|
||||
<field name="expectedDate"/>
|
||||
<field name="durationHours"/>
|
||||
<field name="assignedTo"/>
|
||||
<field name="actionSelect"/>
|
||||
<field name="doneOn"/>
|
||||
<field name="statusSelect"/>
|
||||
</panel-related>
|
||||
</form>
|
||||
|
||||
<cards name="equipement-maintenance-cards"
|
||||
model="com.axelor.apps.maintenance.db.EquipementMaintenance" title="Equipement maintenance"
|
||||
css="rect-image">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="image"/>
|
||||
<field name="maintenanceCategory"/>
|
||||
<field name="machine"/>
|
||||
<template><![CDATA[
|
||||
<div class="span12"><strong>{{code}}-{{name}}</strong></div>
|
||||
<div>
|
||||
<div class="span4 card-image">
|
||||
<img ng-show="image" ng-src="{{$image('image', 'content')}}" />
|
||||
</div>
|
||||
<div class="span8">
|
||||
{{maintenanceCategory.name}}<br/>
|
||||
{{machine.name}}<br/>
|
||||
</div>
|
||||
</div>
|
||||
]]>
|
||||
</template>
|
||||
</cards>
|
||||
|
||||
<action-attrs name="action-equipement-maintenance-attrs-machine-on-change">
|
||||
<attribute name="value" for="name" expr="eval:machine.name"
|
||||
if="name == null && machine != null"/>
|
||||
</action-attrs>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_6.1.xsd">
|
||||
|
||||
<form name="maintenance-machine-form" title="Machine"
|
||||
model="com.axelor.apps.production.db.Machine" width="large"
|
||||
onLoad="action-record-machine-set-operating-duration">
|
||||
<panel-include view="machine-form"/>
|
||||
<panel-dashlet showIf="id != null"
|
||||
action="dashlet.maintenance.machine.maintenance.requests"/>
|
||||
</form>
|
||||
|
||||
<action-view name="dashlet.maintenance.machine.maintenance.requests"
|
||||
title="Maintenance Request" model="com.axelor.apps.maintenance.db.MaintenanceRequest">
|
||||
<view type="grid" name="maintenance-request-grid"/>
|
||||
<view type="kanban" name="maintenance-request-kanban"/>
|
||||
<view type="calendar" name="maintenance-request-calendar-per-user"/>
|
||||
<view type="form" name="maintenance-request-form"/>
|
||||
<domain>self.equipementMaintenance.machine.id = :id</domain>
|
||||
<context name="_todayDate" expr="eval:__config__.date"/>
|
||||
</action-view>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_6.1.xsd">
|
||||
|
||||
<grid name="maintenance-category-grid" title="Maintenance Category"
|
||||
model="com.axelor.apps.maintenance.db.MaintenanceCategory">
|
||||
<field name="name"/>
|
||||
</grid>
|
||||
|
||||
<form name="maintenance-category-form" title="Maintenance Category"
|
||||
model="com.axelor.apps.maintenance.db.MaintenanceCategory">
|
||||
<panel name="main">
|
||||
<field name="name"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,146 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_6.1.xsd">
|
||||
|
||||
<grid name="maintenance-request-grid" title="Maintenance Request"
|
||||
model="com.axelor.apps.maintenance.db.MaintenanceRequest">
|
||||
<field name="equipementMaintenance"/>
|
||||
<field name="requestDate"/>
|
||||
<field name="requestBy"/>
|
||||
<field name="expectedDate"/>
|
||||
<field name="durationHours"/>
|
||||
<field name="assignedTo"/>
|
||||
<field name="actionSelect"/>
|
||||
<field name="doneOn"/>
|
||||
<field name="statusSelect"/>
|
||||
</grid>
|
||||
|
||||
<form name="maintenance-request-form" title="Maintenance Request"
|
||||
model="com.axelor.apps.maintenance.db.MaintenanceRequest"
|
||||
onNew="action-maintenance-request-record-default" width="large">
|
||||
<panel name="main">
|
||||
<field name="statusSelect" colSpan="12" widget="nav-select-maint" readonly="true"/>
|
||||
<field name="equipementMaintenance" colSpan="4" requiredIf="!$popup()" hideIf="$popup()"
|
||||
onChange="action-maintenance-request-attrs-equi-maintenance-onchange"/>
|
||||
<field name="machine" readonly="true" colSpan="4"/>
|
||||
<field name="requestDate" colSpan="4"
|
||||
onChange="action-maintenance-request-record-action-select-onchange"/>
|
||||
<field name="requestBy" canEdit="false"/>
|
||||
<field name="expectedDate"
|
||||
onChange="action-maintenance-request-record-action-select-onchange"/>
|
||||
<field name="assignedTo" canEdit="false"/>
|
||||
<field name="durationHours"/>
|
||||
<field name="mtnTask" colSpan="12" widget="html"/>
|
||||
<field name="actionSelect" widget="RadioSelect"
|
||||
onChange="action-maintenance-request-record-action-select-onchange"/>
|
||||
<field name="manufOrder" readonlyIf="!equipementMaintenance || !expectedDate"
|
||||
canNew="true" domain="self.typeSelect = 3" form-view="maintenance-manuf-order-form"/>
|
||||
<field name="doneOn" onChange="action-maintenance-request-record-action-select-onchange"/>
|
||||
</panel>
|
||||
<panel name="actions" sidebar="true" title="Actions" stacked="true">
|
||||
<button name="start" title="Start" showIf="statusSelect == 0"
|
||||
readonlyIf="!equipementMaintenance && !expectedDate"
|
||||
onClick="save,action-maintenance-request-method-start"/>
|
||||
<button name="complete" title="Complete" showIf="statusSelect == 1"
|
||||
onClick="acttion-maintenance-request-method-complete"/>
|
||||
<button name="cancel" title="Cancel" showIf="id && statusSelect != 3"
|
||||
onClick="acttion-maintenance-request-method-cancel"/>
|
||||
<button name="replan" title="Replan" showIf="statusSelect == 3"
|
||||
onClick="acttion-maintenance-request-method-replan"/>
|
||||
</panel>
|
||||
<panel-mail name="panel-mail">
|
||||
<mail-messages limit="4"/>
|
||||
<mail-followers/>
|
||||
</panel-mail>
|
||||
</form>
|
||||
|
||||
<kanban name="maintenance-request-kanban" title="Maintenance Request"
|
||||
columnBy="statusSelect" sequenceBy="sequence" onNew="action-maintenance-request-record-default"
|
||||
limit="10" model="com.axelor.apps.maintenance.db.MaintenanceRequest">
|
||||
<field name="equipementMaintenance.name"/>
|
||||
<field name="equipementMaintenance.maintenanceCategory"/>
|
||||
<field name="statusSelect"/>
|
||||
<field name="requestDate"/>
|
||||
<field name="requestBy"/>
|
||||
<field name="expectedDate"/>
|
||||
<field name="assignedTo"/>
|
||||
<field name="actionSelect"/>
|
||||
<field name="doneOn"/>
|
||||
<hilite color="danger" if="doneOn == null"/>
|
||||
<hilite color="success" if="doneOn != null"/>
|
||||
<template>
|
||||
<![CDATA[
|
||||
<h4>{{record.equipementMaintenance.maintenanceCategory.name || ''}}</h4>
|
||||
<div class="card-body">
|
||||
<dl>
|
||||
<p>{{record.equipementMaintenance.name || ''}}</p>
|
||||
<dt ng-if="record.requestDate" x-translate>Request date</dt><dd><i ng-if="record.requestDate" class='fa fa-clock-o'></i> <span ng-if="record.requestDate">{{$fmt('requestDate')}}</span></dd>
|
||||
<dt ng-if="record.requestBy" x-translate>Request By</dt><dd><span ng-if="record.requestBy">{{record.requestBy.fullName}}</span></dd>
|
||||
<dt ng-if="record.assignedTo" x-translate>Assigned to</dt><dd><span ng-if="record.assignedTo">{{record.assignedTo.fullName}}</span></dd>
|
||||
<dt ng-if="record.expectedDate" x-translate>Expected date</dt><dd><i ng-if="record.expectedDate" class='fa fa-clock-o'></i> <span ng-if="record.expectedDate">{{$fmt('expectedDate')}}</span></dd>
|
||||
<dt ng-if="record.doneOn" x-translate>Done on</dt><dd><i ng-if="record.doneOn" class='fa fa-clock-o'></i> <span ng-if="record.doneOn" >{{$fmt('doneOn')}}</span></dd>
|
||||
</dl>
|
||||
</div>
|
||||
]]>
|
||||
</template>
|
||||
</kanban>
|
||||
|
||||
|
||||
<calendar name="maintenance-request-calendar-per-user" title="Maintenance Request"
|
||||
mode="month" colorBy="assignedTo" editable="false" eventStart="startDate" eventStop="endDate"
|
||||
eventLength="1" model="com.axelor.apps.maintenance.db.MaintenanceRequest">
|
||||
<field name="equipementMaintenance.name"/>
|
||||
</calendar>
|
||||
|
||||
<calendar name="maintenance-request-calendar-per-machine" title="Maintenance Request"
|
||||
mode="month" colorBy="statusSelect" editable="false" eventStart="startDate" eventStop="endDate"
|
||||
eventLength="1" model="com.axelor.apps.maintenance.db.MaintenanceRequest">
|
||||
<field name="equipementMaintenance.name"/>
|
||||
</calendar>
|
||||
|
||||
<action-record name="action-maintenance-request-record-action-select-onchange"
|
||||
model="com.axelor.apps.maintenance.db.MaintenanceRequest">
|
||||
<field name="endDate"
|
||||
expr="eval: doneOn != null ? doneOn.plusDays(1) : expectedDate.plusDays(1)"
|
||||
if="actionSelect == 0"/>
|
||||
<field name="startDate" expr="eval: requestDate" if="actionSelect == 0"/>
|
||||
<field name="endDate" expr="eval: doneOn != null ? doneOn : expectedDate"
|
||||
if="actionSelect == 1"/>
|
||||
<field name="startDate" expr="eval: doneOn != null ? doneOn : expectedDate"
|
||||
if="actionSelect == 1"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-maintenance-request-record-default"
|
||||
model="com.axelor.apps.maintenance.db.MaintenanceRequest">
|
||||
<field name="assignedTo" expr="eval:__user__"/>
|
||||
<field name="requestBy" expr="eval:__user__"/>
|
||||
<field name="requestDate" expr="eval:__config__.date"/>
|
||||
<field name="machine" expr="eval: _parent?.machine"
|
||||
if="_parent?._model == 'com.axelor.apps.maintenance.db.EquipementMaintenance'"/>
|
||||
<field name="equipementMaintenance" expr="eval: _parent"
|
||||
if="_parent?._model == 'com.axelor.apps.maintenance.db.EquipementMaintenance'"/>
|
||||
</action-record>
|
||||
|
||||
<action-attrs name="action-maintenance-request-attrs-equi-maintenance-onchange">
|
||||
<attribute name="value" for="machine" expr="eval: equipementMaintenance?.machine"/>
|
||||
</action-attrs>
|
||||
|
||||
<action-method name="action-maintenance-request-method-start">
|
||||
<call class="com.axelor.apps.maintenance.web.MaintenanceRequestController" method="start"/>
|
||||
</action-method>
|
||||
|
||||
<action-method name="acttion-maintenance-request-method-complete">
|
||||
<call class="com.axelor.apps.maintenance.web.MaintenanceRequestController"
|
||||
method="complete"/>
|
||||
</action-method>
|
||||
|
||||
<action-method name="acttion-maintenance-request-method-cancel">
|
||||
<call class="com.axelor.apps.maintenance.web.MaintenanceRequestController" method="cancel"/>
|
||||
</action-method>
|
||||
|
||||
<action-method name="acttion-maintenance-request-method-replan">
|
||||
<call class="com.axelor.apps.maintenance.web.MaintenanceRequestController" method="replan"/>
|
||||
</action-method>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,307 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_6.1.xsd">
|
||||
|
||||
<grid name="maintenance-manuf-order-grid" title="Maintenance orders"
|
||||
model="com.axelor.apps.production.db.ManufOrder" orderBy="-manufOrderSeq">
|
||||
<toolbar>
|
||||
<button name="printBtn" title="Print" icon="fa-print"
|
||||
onClick="action-manuf-order-method-print"/>
|
||||
<button name="planBtn" title="Plan" onClick="action-manuf-order-method-plan"/>
|
||||
</toolbar>
|
||||
<hilite color="danger" if="prioritySelect == 4"/>
|
||||
<hilite color="warning" if="prioritySelect == 3"/>
|
||||
<hilite color="primary" if="prioritySelect == 2"/>
|
||||
<hilite color="info" if="prioritySelect == 1"/>
|
||||
<field name="prioritySelect" hidden="true"/>
|
||||
<field name="manufOrderSeq"/>
|
||||
<field name="company" form-view="company-form" grid-view="company-grid"/>
|
||||
<field name="workshopStockLocation"
|
||||
if="__config__.app.getApp('production')?.getManageWorkshop()"/>
|
||||
<field name="machineType"/>
|
||||
<field name="billOfMaterial" grid-view="bill-of-material-grid"
|
||||
form-view="maintenance-bill-of-material-form"/>
|
||||
<field name="prodProcess" grid-view="prod-process-grid"
|
||||
form-view="maintenance-prod-process-form"/>
|
||||
<field name="plannedStartDateT"/>
|
||||
<field name="plannedEndDateT"/>
|
||||
<field name="realStartDateT"/>
|
||||
<field name="realEndDateT"/>
|
||||
<field name="statusSelect"/>
|
||||
<button name="planBtn" icon="fa-calendar" onClick="action-manuf-order-method-quick-plan"
|
||||
readonlyIf="statusSelect >= 3"/>
|
||||
<button name="startBtn" icon="fa-play"
|
||||
onClick="action-manuf-order-method-start-or-resume"
|
||||
readonlyIf="statusSelect != 3 && statusSelect != 5"/>
|
||||
<button name="pauseBtn" icon="fa-pause" onClick="action-manuf-order-method-pause"
|
||||
readonlyIf="statusSelect != 4"/>
|
||||
<button name="finishBtn" icon="fa-power-off" onClick="action-manuf-order-group-finish"
|
||||
readonlyIf="statusSelect != 4"/>
|
||||
<button name="cancelBtn" icon="fa-times-circle" onClick="action-manuf-order-view-cancel"
|
||||
readonlyIf="statusSelect == 2"/>
|
||||
<button name="printBtn" title="Print" icon="fa-print"
|
||||
onClick="action-maintenance-manuf-order-group-print-report"/>
|
||||
</grid>
|
||||
|
||||
<form name="maintenance-manuf-order-form" title="Maintenance order"
|
||||
model="com.axelor.apps.production.db.ManufOrder" width="large"
|
||||
onLoad="action-maintenance-manuf-order-group-onload"
|
||||
onNew="action-maintenance-manuf-order-group-onnew">
|
||||
<menubar>
|
||||
<menu name="manufOrderReportsMenu" title="Reports" showTitle="true" icon="fa-files-o">
|
||||
<item name="printItem" title="Print" showIf="statusSelect > 1"
|
||||
action="save,action-manuf-order-method-print"/>
|
||||
<item name="printProductionProcessItem" title="Print Production Process"
|
||||
action="save,action-production-process-method-print"/>
|
||||
</menu>
|
||||
</menubar>
|
||||
<panel name="mainPanel">
|
||||
<panel name="detailsPanel" colSpan="8">
|
||||
<field name="manufOrderSeq" readonly="true" colSpan="2" css="bold"/>
|
||||
<field name="prioritySelect" readonlyIf="statusSelect == 6" colSpan="2"
|
||||
widget="SingleSelect"/>
|
||||
<field name="company" readonlyIf="statusSelect > 1" colSpan="2" widget="SuggestBox"
|
||||
canEdit="false" onChange="action-manuf-order-record-empty-workshop"
|
||||
form-view="company-form" grid-view="company-grid"/>
|
||||
<field if="__config__.app.getApp('production')?.getManageWorkshop()"
|
||||
name="workshopStockLocation" readonlyIf="statusSelect > 1" colSpan="2" canEdit="false"
|
||||
onChange="action-manuf-order-record-workshop-onchange"
|
||||
domain="self.company = :company and self.typeSelect = 1 and self.isWorkshop = true"
|
||||
required="true" form-view="stock-location-form" grid-view="stock-location-grid"/>
|
||||
<field name="$viewerIsOutsourcing" showTitle="false" readonly="true"
|
||||
showIf="$readonly()" depends="prodProcess.outsourcing" colSpan="2">
|
||||
<viewer><![CDATA[
|
||||
|
||||
<h4 class="text-right">
|
||||
<span class="label label-default" style="background-color: #E0A83C; margin: 5px 0 !important; display: inline-table; line-height: initial;" ng-show="record.prodProcess.outsourcing" x-translate>Outsourced</span>
|
||||
</h4>
|
||||
|
||||
]]></viewer>
|
||||
</field>
|
||||
<field name="$viewerIsPermanent" showTitle="false"
|
||||
showIf="typeSelect == 2 && $readonly()" colSpan="2">
|
||||
<viewer depends="typeSelect"><![CDATA[
|
||||
|
||||
<h4 style="text-align: left;">
|
||||
<span class="label label-default" style="background-color: green; margin: 5px 0 !important; display: inline-table; line-height: initial;" x-translate>Permanent</span>
|
||||
</h4>
|
||||
|
||||
]]></viewer>
|
||||
</field>
|
||||
<field name="statusSelect" showTitle="false" readonly="true" colSpan="12"
|
||||
widget="NavSelect"/>
|
||||
<field name="billOfMaterial" readonlyIf="statusSelect > 1" colSpan="3" canEdit="false"
|
||||
onChange="action-maintenance-maunf-order-group-onchange"
|
||||
onSelect="action-maintenance-manuf-order-attrs-filter-bom" required="true"
|
||||
form-view="maintenance-bill-of-material-form" grid-view="bill-of-material-grid"/>
|
||||
<field name="prodProcess" readonlyIf="statusSelect > 1" colSpan="3" canEdit="false"
|
||||
onChange="action-manuf-order-group-prod-process-onchange"
|
||||
onSelect="action-maintenance-order-attrs-filter-prodProcess"
|
||||
form-view="maintenance-prod-process-form" grid-view="prod-process-grid"/>
|
||||
<field name="outsourcing" colSpan="3"
|
||||
onChange="action-production-attrs-hide-purchaseOrder"/>
|
||||
<spacer colSpan="3"/>
|
||||
<field name="machineType" colSpan="3" required="true" form-view="machine-type-form"
|
||||
grid-view="machine-type-grid"/>
|
||||
<field name="machine" colSpan="3" domain="self.machineType = :machineType"
|
||||
required="true" form-view="maintenance-machine-form" grid-view="machine-grid"/>
|
||||
<field name="unit" readonly="true" form-view="unit-form" grid-view="unit-grid"/>
|
||||
<field name="product.economicManufOrderQty" colSpan="3" hidden="true"/>
|
||||
<field name="clientPartner" canEdit="false"
|
||||
onChange="action-manuf-order-atts-sale-order-onchange-client-partner"
|
||||
domain="self.isCustomer=true AND :company member of self.companySet"
|
||||
form-view="partner-form" grid-view="partner-grid" hidden="true" colSpan="6"/>
|
||||
<field name="saleOrderSet" widget="TagSelect" canEdit="false"
|
||||
onSelect="action-manuf-order-attrs-sale-order-onselect" form-view="sale-order-form"
|
||||
grid-view="sale-order-grid" hidden="true" colSpan="6"/>
|
||||
<field name="manufOrderMergeResult" showIf="manufOrderMergeResult" canNew="false"
|
||||
canView="true" canEdit="false" form-view="maintenance-manuf-order-form"
|
||||
grid-view="manuf-order-grid"/>
|
||||
<field name="purchaseOrder" showIf="false" canSelect="false" canEdit="false"
|
||||
form-view="purchase-order-form" grid-view="purchase-order-grid"/>
|
||||
<field name="isConsProOnOperation" hidden="true"/>
|
||||
<field if="__config__.app.getApp('production')?.getManageBusinessProduction()"
|
||||
if-module="axelor-business-production" name="isToInvoice"
|
||||
onChange="save,action-manuf-order-method-is-to-invoice"/>
|
||||
<field if="__config__.app.getApp('production')?.getManageBusinessProduction()"
|
||||
if-module="axelor-business-production" name="invoiced" showIf="isToInvoice"/>
|
||||
<button name="preFillOperationsBtn" title="Pre-fill operations"
|
||||
hideIf="statusSelect > 1 || operationOrderList.length > 0" colSpan="4"
|
||||
onClick="save,action-manuf-order-method-pre-fill-operations"/>
|
||||
<field name="product.isModel" hidden="true"/>
|
||||
<field name="typeSelect" hidden="true"/>
|
||||
</panel>
|
||||
<panel name="actionsPanel" title="Actions" colSpan="4">
|
||||
<button name="planBtn" title="Plan" showIf="statusSelect == 1 || statusSelect == 2"
|
||||
colSpan="12" icon="fa-calendar" onClick="save,action-manuf-order-method-plan"/>
|
||||
<button name="startBtn" title="Start" showIf="statusSelect == 3" colSpan="12"
|
||||
icon="fa-play" onClick="save,action-manuf-order-method-start"/>
|
||||
<button name="pauseBtn" title="Pause" showIf="statusSelect == 4" colSpan="12"
|
||||
icon="fa-pause" onClick="save,action-manuf-order-method-pause"/>
|
||||
<button name="resumeBtn" title="Resume" showIf="statusSelect == 5" colSpan="12"
|
||||
icon="fa-step-forward" onClick="save,action-manuf-order-method-resume"/>
|
||||
<button name="finishBtn" title="Finish" showIf="statusSelect == 4" colSpan="12"
|
||||
icon="fa-power-off" onClick="save,action-manuf-order-group-finish"/>
|
||||
<button name="finishPartBtn" title="Partial Finish" showIf="statusSelect == 4"
|
||||
colSpan="12" icon="fa-power-off" onClick="save, action-manuf-order-method-part-finish"/>
|
||||
<button name="cancelBtn" title="Cancel" showIf="statusSelect != 2" colSpan="12"
|
||||
icon="fa-times-circle" onClick="save,action-manuf-order-view-cancel"/>
|
||||
</panel>
|
||||
</panel>
|
||||
<panel-tabs name="mainPanelTab" colSpan="4">
|
||||
<panel-related name="operationOrderListPanel" readonlyIf="statusSelect == 6"
|
||||
colSpan="12" height="15" field="operationOrderList" form-view="operation-order-form"
|
||||
grid-view="operation-order-grid" canNew="false"/>
|
||||
<panel name="datesPanel" title="Dates" readonlyIf="statusSelect == 6">
|
||||
<panel name="plannedDatesPanel" title="Planned dates">
|
||||
<field name="plannedStartDateT" title="Start date"
|
||||
onChange="action-manuf-order-method-update-planned-dates"/>
|
||||
<field name="plannedEndDateT" title="End date"
|
||||
onChange="action-manuf-order-validate-planned-end-date"/>
|
||||
<field name="$totalPlannedDuration" title="Total Planned Duration" readonly="true"
|
||||
type="long" widget="duration" x-big="true" x-seconds="true"/>
|
||||
<field name="cancelReason" hidden="true" form-view="cancel-reason-form"
|
||||
grid-view="cancel-reason-grid"/>
|
||||
<field name="cancelReasonStr" title="Cancel Reason" hidden="true" readonly="true"
|
||||
showIf="cancelReason != null && cancelReasonStr != null" colSpan="12" css="red">
|
||||
<viewer><![CDATA[{{record.cancelReasonStr}}]]></viewer>
|
||||
</field>
|
||||
</panel>
|
||||
<panel name="realDatesPanel" title="Real dates" showIf="statusSelect > 3">
|
||||
<field name="realStartDateT" title="Start date"/>
|
||||
<field name="realEndDateT" title="End date"/>
|
||||
<field name="$totalRealDuration" title="Total Real Duration" readonly="true"
|
||||
type="long" widget="duration" x-big="true" x-seconds="true"/>
|
||||
</panel>
|
||||
</panel>
|
||||
<panel name="consumedProductsPanel" title="Consumed products"
|
||||
showIf="isConsProOnOperation && statusSelect >= 3">
|
||||
<button name="updatePlannedQtyBtn"
|
||||
title="Update planned quantities (Components and FP)"
|
||||
showIf="statusSelect != 6 && typeSelect != 2" colSpan="12" css="btn-custom"
|
||||
onClick="save,action-manuf-order-update-planned-qty-popup-form-view"/>
|
||||
<panel-dashlet name="operationOrderToConsumeProductPanel" readonly="true"
|
||||
colSpan="12" action="action-manuf-order-view-operation-order-to-consume-product"/>
|
||||
<button name="updateRealQtyBtn" title="Update real quantities (Components and FP)"
|
||||
showIf="statusSelect != 6 && typeSelect != 2" colSpan="12" css="btn-custom"
|
||||
onClick="save,action-manuf-order-update-real-qty-popup-form-view"/>
|
||||
<panel-dashlet name="operationOrderConsumedProductPanel" readonly="true"
|
||||
colSpan="12" action="action-manuf-order-view-operation-order-consumed-product"/>
|
||||
<panel if="__config__.app.getApp('supplychain')?.manageStockReservation"
|
||||
name="allocationToolsPanel" showIf="$contains([3,4,5], statusSelect)" colSpan="12">
|
||||
<button name="allocateAllItem" title="Allocate all" colSpan="3"
|
||||
onClick="save,action-manuf-order-method-allocate-all"/>
|
||||
<button name="deallocateAllItem" title="Deallocate all" colSpan="3"
|
||||
onClick="save,action-manuf-order-method-deallocate-all"/>
|
||||
<button name="reserveAllItem" title="Reserve all" colSpan="3"
|
||||
onClick="save,action-manuf-order-method-reserve-all"/>
|
||||
<button name="cancelReservationItem" title="Cancel reservation" colSpan="3"
|
||||
onClick="save,action-manuf-order-method-cancel-reservation"/>
|
||||
</panel>
|
||||
<panel-dashlet name="operationOrderDiffConsumeProductPanel" readonly="true"
|
||||
colSpan="12" action="action-manuf-order-view-operation-order-diff-consume-product"/>
|
||||
</panel>
|
||||
<panel-related name="productionOrderSetPanel" readonly="true" colSpan="12"
|
||||
height="15" field="productionOrder" form-view="production-order-form"
|
||||
grid-view="production-order-grid"/>
|
||||
<panel-dashlet name="mergedManufOrderDashlet" title="Merged MO" readonly="true"
|
||||
colSpan="12" action="action-manuf-order-view-merged-manuf-orders"/>
|
||||
<panel name="notePanel" title="Note">
|
||||
<field name="note" showTitle="false" colSpan="12"/>
|
||||
<panel name="moCommentFromSaleOrderPanel" title="MO's comment from sale order"
|
||||
colSpan="12">
|
||||
<field name="moCommentFromSaleOrder" showTitle="false" colSpan="12" widget="Html"/>
|
||||
</panel>
|
||||
<panel name="moCommentFromSaleOrderLinePanel"
|
||||
title="MO's comment from sale order line" colSpan="12">
|
||||
<field name="moCommentFromSaleOrderLine" showTitle="false" colSpan="12"
|
||||
widget="Html"/>
|
||||
</panel>
|
||||
</panel>
|
||||
<panel if="__config__.app.getApp('production')?.getManageResidualProductOnBom()"
|
||||
name="residualProductsPanel" title="Residual products"
|
||||
showIf="billOfMaterial != null && billOfMaterial.prodResidualProductList.length > 0">
|
||||
<field name="billOfMaterial.prodResidualProductList" title="Residual products"
|
||||
colSpan="12" form-view="prod-residual-product-form" grid-view="prod-residual-product-grid"/>
|
||||
</panel>
|
||||
</panel-tabs>
|
||||
<panel-mail name="mailPanel">
|
||||
<mail-messages limit="4"/>
|
||||
<mail-followers/>
|
||||
</panel-mail>
|
||||
</form>
|
||||
|
||||
<action-group name="action-maintenance-manuf-order-group-onnew">
|
||||
<action name="action-manuf-order-group-onnew"/>
|
||||
<action name="action-maintenance-manuf-order-attrs-set-default"/>
|
||||
<action name="action-maintenance-manuf-order-attrs-set-attributes"
|
||||
if="_parent?._model == 'com.axelor.apps.maintenance.db.MaintenanceRequest'"/>
|
||||
</action-group>
|
||||
|
||||
<action-group name="action-maintenance-manuf-order-group-onload">
|
||||
<action name="action-manuf-order-group-onload"/>
|
||||
<action name="action-maintenance-manuf-order-attrs-set-attributes"
|
||||
if="_parent?._model == 'com.axelor.apps.maintenance.db.MaintenanceRequest'"/>
|
||||
</action-group>
|
||||
|
||||
<action-group name="action-maintenance-maunf-order-group-onchange">
|
||||
<action name="action-maintenance-manuf-order-record-on-change-bill-of-material"/>
|
||||
<action name="action-manuf-order-attrs-isConsProOnOperation"/>
|
||||
<action name="action-manuf-order-record-isConsProOnOperation"/>
|
||||
<action name="action-manuf-order-reset"/>
|
||||
<action name="action-manuf-order-attrs-set-unit" if="billOfMaterial != null"/>
|
||||
</action-group>
|
||||
|
||||
<action-record
|
||||
name="action-maintenance-manuf-order-record-on-change-bill-of-material"
|
||||
model="com.axelor.apps.production.db.ManufOrder">
|
||||
<field name="machineType" expr="eval:billOfMaterial.machineType"
|
||||
if="billOfMaterial != null"/>
|
||||
<field name="prodProcess" expr="eval:billOfMaterial.prodProcess"
|
||||
if="billOfMaterial != null"/>
|
||||
</action-record>
|
||||
|
||||
<action-attrs name="action-maintenance-order-attrs-filter-prodProcess">
|
||||
<attribute name="domain" for="prodProcess"
|
||||
expr="eval: " (self.id = ${billOfMaterial?.prodProcess?.id} OR self.machineType.id = ${billOfMaterial?.machineType?.id}) AND self.statusSelect = 3 AND ((:workshopStockLocation IS NULL AND self.workshopStockLocation IS NULL) OR self.workshopStockLocation = :workshopStockLocation) AND self.typeSelect = ${__repo__(ManufOrder).TYPE_MAINTENANCE} ""
|
||||
if="prodProcess != null && billOfMaterial != null"/>
|
||||
<attribute name="domain" for="prodProcess"
|
||||
expr="eval: " self.statusSelect = 3 AND ((:workshopStockLocation IS NULL AND self.workshopStockLocation IS NULL) OR self.workshopStockLocation = :workshopStockLocation) AND self.typeSelect = ${__repo__(ManufOrder).TYPE_MAINTENANCE} ""
|
||||
if="billOfMaterial == null && !_parent"/>
|
||||
<attribute name="domain" for="prodProcess"
|
||||
expr="eval: " self.statusSelect = 3 AND ((:workshopStockLocation IS NULL AND self.workshopStockLocation IS NULL) OR self.workshopStockLocation = :workshopStockLocation) AND self.typeSelect = ${__repo__(ManufOrder).TYPE_MAINTENANCE} AND self.machineType = :machineType ""
|
||||
if="billOfMaterial == null && _parent"/>
|
||||
</action-attrs>
|
||||
|
||||
<action-attrs name="action-maintenance-manuf-order-attrs-filter-bom">
|
||||
<attribute name="domain" for="billOfMaterial"
|
||||
expr="eval: "(self.defineSubBillOfMaterial = true AND self.statusSelect = 3 AND ((:workshopStockLocation IS NULL AND self.workshopStockLocation IS NULL) OR self.workshopStockLocation = :workshopStockLocation)) AND self.typeSelect = ${__repo__(ManufOrder).TYPE_MAINTENANCE} AND self.machineType = :machineType""
|
||||
if="_parent"/>
|
||||
<attribute name="domain" for="billOfMaterial"
|
||||
expr="eval: "(self.defineSubBillOfMaterial = true AND self.statusSelect = 3 AND ((:workshopStockLocation IS NULL AND self.workshopStockLocation IS NULL) OR self.workshopStockLocation = :workshopStockLocation)) AND self.typeSelect = ${__repo__(ManufOrder).TYPE_MAINTENANCE}""
|
||||
if="_maintenance && !_parent"/>
|
||||
</action-attrs>
|
||||
|
||||
<action-attrs name="action-maintenance-manuf-order-attrs-set-default">
|
||||
<attribute name="value" for="typeSelect"
|
||||
expr="eval: __repo__(ManufOrder).TYPE_MAINTENANCE"/>
|
||||
<attribute name="value" for="typeSelect"
|
||||
expr="eval: __repo__(ManufOrder).TYPE_MAINTENANCE"
|
||||
if="_parent?._model == 'com.axelor.apps.maintenance.db.MaintenanceRequest'"/>
|
||||
<attribute name="value" for="qty" expr="eval: 0" if="_maintenance"/>
|
||||
<attribute name="value" for="machine" expr="eval: _parent?.machine"
|
||||
if="_parent?._model == 'com.axelor.apps.maintenance.db.MaintenanceRequest'"/>
|
||||
<attribute name="value" for="plannedStartDateT"
|
||||
expr="eval: _parent?.doneOn != null ? _parent?.doneOn : _parent?.expectedDate"
|
||||
if="_parent?._model == 'com.axelor.apps.maintenance.db.MaintenanceRequest'"/>
|
||||
</action-attrs>
|
||||
|
||||
<action-attrs name="action-maintenance-manuf-order-attrs-set-attributes">
|
||||
<attribute name="readonly" for="machine" expr="eval: true"/>
|
||||
<attribute name="readonly" for="machineType" expr="eval: true"/>
|
||||
<attribute name="value" for="machineType" expr="eval: machine?.machineType"
|
||||
if="!machineType"/>
|
||||
</action-attrs>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,158 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_6.1.xsd">
|
||||
|
||||
<menuitem name="maintenance-root" title="Maintenance" order="-500"
|
||||
if="__config__.app.isApp('maintenance')" icon="fa-recycle" icon-background="olive"/>
|
||||
|
||||
<menuitem name="maintenance-root-equipement-maintenances" parent="maintenance-root"
|
||||
title="Equipement maintenances" action="maintenance.root.equipement.maintenances" order="100"/>
|
||||
|
||||
<action-view name="maintenance.root.equipement.maintenances"
|
||||
title="Equipement maintenances" model="com.axelor.apps.maintenance.db.EquipementMaintenance">
|
||||
<view type="cards" name="equipement-maintenance-cards"/>
|
||||
<view type="grid" name="equipement-maintenance-grid"/>
|
||||
<view type="form" name="equipement-maintenance-form"/>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="maintenance-root-current-maintenance-requests" parent="maintenance-root"
|
||||
title="Current requests" action="maintenance.root.current.maintenance.requests" order="200"/>
|
||||
|
||||
<action-view name="maintenance.root.current.maintenance.requests"
|
||||
title="Current requests" model="com.axelor.apps.maintenance.db.MaintenanceRequest">
|
||||
<view type="kanban" name="maintenance-request-kanban"/>
|
||||
<view type="calendar" name="maintenance-request-calendar-per-user"/>
|
||||
<view type="grid" name="maintenance-request-grid"/>
|
||||
<view type="form" name="maintenance-request-form"/>
|
||||
<view-param name="kanban-hide-columns" value="2,3"/>
|
||||
<domain>self.statusSelect in (0,1)</domain>
|
||||
<context name="_todayDate" expr="eval:__config__.date"/>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="maintenance-root-my-maintenance-requests" parent="maintenance-root"
|
||||
title="My Maintenance requests" action="maintenance.root.my.maintenance.requests" order="300"/>
|
||||
|
||||
<action-view name="maintenance.root.my.maintenance.requests"
|
||||
title="My Maintenance requests" model="com.axelor.apps.maintenance.db.MaintenanceRequest">
|
||||
<view type="kanban" name="maintenance-request-kanban"/>
|
||||
<view type="calendar" name="maintenance-request-calendar-per-user"/>
|
||||
<view type="form" name="maintenance-request-form"/>
|
||||
<view-param name="kanban-hide-columns" value="2,3"/>
|
||||
<domain>self.statusSelect in (0,1) and self.assignedTo = :__user__</domain>
|
||||
<context name="_todayDate" expr="eval:__config__.date"/>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="maintenance-root-machine-unavailable" parent="maintenance-root"
|
||||
title="Machines unavailable" action="maintenance.root.machine.unavailable" order="400"/>
|
||||
|
||||
<action-view name="maintenance.root.machine.unavailable" title="Machines unavailable"
|
||||
model="com.axelor.apps.maintenance.db.MaintenanceRequest">
|
||||
<view type="calendar" name="maintenance-request-calendar-per-machine"/>
|
||||
<domain>self.statusSelect in (0,1,2) and self.equipementMaintenance.machine is not null</domain>
|
||||
<context name="_todayDate" expr="eval:__config__.date"/>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="maintenance-root-maintenance-request-history" parent="maintenance-root"
|
||||
title="Request history" action="maintenance.root.maintenance.request.history" order="500"/>
|
||||
|
||||
<action-view name="maintenance.root.maintenance.request.history"
|
||||
title="Request history" model="com.axelor.apps.maintenance.db.MaintenanceRequest">
|
||||
<view type="grid" name="maintenance-request-grid"/>
|
||||
<view type="kanban" name="maintenance-request-kanban"/>
|
||||
<view type="calendar" name="maintenance-request-calendar-per-user"/>
|
||||
<view type="form" name="maintenance-request-form"/>
|
||||
<context name="_todayDate" expr="eval:__config__.date"/>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="maintenance-root-manuf-order" parent="maintenance-root" order="600"
|
||||
title="Maintenance order" action="maintenance.manufacturing.root.manuf.order"/>
|
||||
|
||||
<action-view name="maintenance.manufacturing.root.manuf.order"
|
||||
title="Maintenance orders" model="com.axelor.apps.production.db.ManufOrder">
|
||||
<view type="grid" name="maintenance-manuf-order-grid"/>
|
||||
<view type="form" name="maintenance-manuf-order-form"/>
|
||||
<view-param name="search-filters" value="manuf-order-filters"/>
|
||||
<domain>self.typeSelect = 3</domain>
|
||||
<context name="_todayDateTime" expr="eval:__config__.app.getTodayDateTime()"/>
|
||||
<context name="_maintenance" expr="eval: true"/>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="maintenance-root-config" parent="maintenance-root" title="Configuration"
|
||||
order="700"/>
|
||||
|
||||
<menuitem name="maintenance-root-config-maintenance-category"
|
||||
parent="maintenance-root-config" title="Maintenance Category"
|
||||
action="maintenance.root.config.maintenance.category" order="100"/>
|
||||
|
||||
<action-view name="maintenance.root.config.maintenance.category"
|
||||
title="Maintenance Category" model="com.axelor.apps.maintenance.db.MaintenanceCategory">
|
||||
<view type="grid" name="maintenance-category-grid"/>
|
||||
<view type="form" name="maintenance-category-form"/>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="maintenance-root-config-machines" parent="maintenance-root-config"
|
||||
order="200" title="Machines" action="maintenance.root.config.machines"/>
|
||||
|
||||
<action-view name="maintenance.root.config.machines" title="Machines"
|
||||
model="com.axelor.apps.production.db.Machine">
|
||||
<view type="grid" name="machine-grid"/>
|
||||
<view type="form" name="maintenance-machine-form"/>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="maintenance-root-config-prod-process" parent="maintenance-root-config"
|
||||
order="300" title="Production processes" action="maintenance.manufacturing.root.prod.process"/>
|
||||
|
||||
<action-view name="maintenance.manufacturing.root.prod.process"
|
||||
title="Production processes" model="com.axelor.apps.production.db.ProdProcess">
|
||||
<view type="grid" name="maintenance-prod-process-grid"/>
|
||||
<view type="form" name="maintenance-prod-process-form"/>
|
||||
<domain>self.typeSelect = 3</domain>
|
||||
<context name="typeSelect" expr="eval: 3"/>
|
||||
<context name="_maintenance" expr="eval: true"/>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="maintenance-root-config-bill-of-material"
|
||||
parent="maintenance-root-config" order="400" title="Bills of materials"
|
||||
action="maintenance.manufacturing.root.bill.of.material"/>
|
||||
|
||||
<action-view name="maintenance.manufacturing.root.bill.of.material"
|
||||
title="Bills of materials" model="com.axelor.apps.production.db.BillOfMaterial">
|
||||
<view type="grid" name="maintenance-bill-of-material-grid"/>
|
||||
<view type="form" name="maintenance-bill-of-material-form"/>
|
||||
<domain>self.defineSubBillOfMaterial = true AND self.personalized = false AND self.typeSelect =
|
||||
3</domain>
|
||||
<context name="_maintenance" expr="eval: true"/>
|
||||
</action-view>
|
||||
|
||||
<action-view id="addons.maintenance.manufacturing.root.bill.of.material"
|
||||
name="manufacturing.root.bill.of.material" title="Bills of materials"
|
||||
model="com.axelor.apps.production.db.BillOfMaterial">
|
||||
<view type="grid" name="bill-of-material-grid"/>
|
||||
<view type="form" name="bill-of-material-form"/>
|
||||
<domain>self.defineSubBillOfMaterial = true AND self.personalized = false AND self.typeSelect =
|
||||
1</domain>
|
||||
</action-view>
|
||||
|
||||
<action-view id="addons.maintenance.manufacturing.root.prod.process"
|
||||
name="manufacturing.root.prod.process" title="Production processes"
|
||||
model="com.axelor.apps.production.db.ProdProcess">
|
||||
<view type="grid" name="prod-process-grid"/>
|
||||
<view type="form" name="prod-process-form"/>
|
||||
<domain>self.typeSelect = 1</domain>
|
||||
</action-view>
|
||||
|
||||
<action-view id="maintenance.manufacturing.root.general.bill.of.material"
|
||||
name="manufacturing.root.general.bill.of.material" title="General BoM"
|
||||
model="com.axelor.apps.production.db.BillOfMaterial">
|
||||
<view type="grid" name="bill-of-material-grid"/>
|
||||
<view type="form" name="bill-of-material-form"/>
|
||||
<view-param name="search-filters" value="bill-of-material-filters"/>
|
||||
<domain><![CDATA[
|
||||
self.defineSubBillOfMaterial = true
|
||||
AND self.personalized = false
|
||||
AND self.typeSelect != 3
|
||||
]]></domain>
|
||||
</action-view>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_6.1.xsd">
|
||||
|
||||
<grid name="maintenance-prod-process-grid" title="Production process"
|
||||
model="com.axelor.apps.production.db.ProdProcess">
|
||||
<field name="name"/>
|
||||
<field name="company"/>
|
||||
<field name="workshopStockLocation"/>
|
||||
<field name="code" x-bind="{{code|unaccent|uppercase}}"/>
|
||||
<field name="machineType"/>
|
||||
<field name="statusSelect"/>
|
||||
</grid>
|
||||
|
||||
<form name="maintenance-prod-process-form" title="Production process"
|
||||
model="com.axelor.apps.production.db.ProdProcess" width="large"
|
||||
onLoad="action-prod-process-record-count-number-of-phases"
|
||||
onSave="action-prod-process-method-validate-prod-process"
|
||||
onNew="action-maintenance-prod-process-group-onnew">
|
||||
<toolbar>
|
||||
<button name="printBtn" title="Print" icon="fa-print"
|
||||
onClick="save,action-production-process-print"/>
|
||||
<button if="__config__.app.getApp('production')?.manageProdProcessVersion"
|
||||
name="newVersionBtn" title="Generate new version"
|
||||
onClick="action-production-process-check-other-version,action-production-process-generate-new-version"/>
|
||||
</toolbar>
|
||||
<panel name="mainPanel">
|
||||
<field name="statusSelect" showTitle="false" readonly="false" colSpan="12"
|
||||
widget="NavSelect"/>
|
||||
<panel name="namePanel" colSpan="8" stacked="true">
|
||||
<field name="fullName" showTitle="false" hidden="true" showIf="$readonly()"
|
||||
css="label-bold bold large"/>
|
||||
<field name="name" hidden="true" showIf="!$readonly()" css="label-bold bold large"/>
|
||||
</panel>
|
||||
<field name="$numberOfPhases" showTitle="false" readonly="true"
|
||||
showIf="$numberOfPhases > 0" colSpan="4" type="integer">
|
||||
<viewer depends="$numberOfPhases"><![CDATA[
|
||||
|
||||
<h4 class="text-right">
|
||||
<span class="label label-default" style="background-color: #2185D0; margin: 5px 0 !important; display: inline-table; line-height: initial; border-top-right-radius: 0; border-bottom-right-radius: 0; padding-right: 0.4em;" x-translate>Number of phases</span><span class="label label-default" style="background-color: #23C6C8; margin: 5px 0 !important; display: inline-table; line-height: initial; border-top-left-radius: 0; border-bottom-left-radius: 0;">{{fmt('$numberOfPhases')}}</span>
|
||||
</h4>
|
||||
|
||||
]]></viewer>
|
||||
</field>
|
||||
<field name="code" x-bind="{{code|unaccent|uppercase}}"/>
|
||||
<field name="machineType" form-view="machine-type-form" grid-view="machine-type-grid"/>
|
||||
<field name="company" widget="SuggestBox" canEdit="false" form-view="company-form"
|
||||
grid-view="company-grid"/>
|
||||
<field if="__config__.app.getApp('production')?.getManageWorkshop()"
|
||||
name="workshopStockLocation" canEdit="false"
|
||||
domain="self.usableOnProduction = True AND self.company = :company and self.typeSelect = 1 and self.isWorkshop = true"/>
|
||||
<field name="typeSelect" hidden="true"/>
|
||||
<field name="isEnabledForAllProducts" hidden="true"/>
|
||||
</panel>
|
||||
<panel-tabs>
|
||||
<panel-related name="prodProcessLineListPanel" title="Phases" colSpan="12"
|
||||
height="15" field="prodProcessLineList" form-view="prod-process-line-form"
|
||||
grid-view="prod-process-line-grid"
|
||||
onChange="action-prod-process-record-count-number-of-phases"/>
|
||||
<panel-dashlet name="viewBillOfMaterialsPanel" title="Bills of material"
|
||||
action="action-prod-process-view-bill-of-materials"/>
|
||||
</panel-tabs>
|
||||
<panel name="versionManagementPanel" title="Version management" hidden="true"
|
||||
showIf="versionNumber > 1">
|
||||
<field name="versionNumber" colSpan="3"/>
|
||||
<field name="originalProdProcess" readonly="true" colSpan="3"
|
||||
form-view="maintenance-prod-process-form" grid-view="prod-process-grid"/>
|
||||
</panel>
|
||||
<panel-mail name="mailPanel">
|
||||
<mail-messages limit="4"/>
|
||||
<mail-followers/>
|
||||
</panel-mail>
|
||||
</form>
|
||||
|
||||
<action-group name="action-maintenance-prod-process-group-onnew">
|
||||
<action name="action-prod-process-group-on-new"/>
|
||||
<action name="action-maintenance-prod-process-attrs-set-default"/>
|
||||
</action-group>
|
||||
|
||||
<action-attrs name="action-maintenance-prod-process-attrs-set-default">
|
||||
<attribute name="value" for="typeSelect"
|
||||
expr="eval: __repo__(ManufOrder).TYPE_MAINTENANCE"/>
|
||||
<attribute name="value" for="isEnabledForAllProducts" expr="eval: true"/>
|
||||
</action-attrs>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_6.1.xsd">
|
||||
|
||||
<selection name="maintenance.maintenance.create.mtn.select">
|
||||
<option value="0">First reached</option>
|
||||
<option value="1">All reached</option>
|
||||
</selection>
|
||||
|
||||
<selection name="maintenance.maintenance.request.status.select">
|
||||
<option value="0">maintenance.request.planned</option>
|
||||
<option value="1">In progress</option>
|
||||
<option value="2">Completed</option>
|
||||
<option value="3">Canceled</option>
|
||||
</selection>
|
||||
|
||||
<selection name="maintenance.maintenance.request.action.select">
|
||||
<option value="0">Corrective</option>
|
||||
<option value="1">Preventive</option>
|
||||
</selection>
|
||||
|
||||
<selection id="maintenance.sequence.generic.code.select"
|
||||
name="sequence.generic.code.select">
|
||||
<option value="maintenance">Maintenance</option>
|
||||
</selection>
|
||||
|
||||
<selection id="maintenance.manuf.order.type.select" name="manuf.order.type.select">
|
||||
<option value="3">Maintenance</option>
|
||||
</selection>
|
||||
|
||||
</object-views>
|
||||
Reference in New Issue
Block a user