First commit waiting for Budget Alert

This commit is contained in:
2025-09-04 13:37:35 +01:00
commit 2d681f27f5
4563 changed files with 1061534 additions and 0 deletions

View 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

View File

@ -0,0 +1,2 @@
"importId";"codeSelect";"name";"nextNum";"padding";"prefixe";"suffixe";"toBeAdded";"yearlyResetOk"
1000;"maintenance";"Maintenance";1;5;"CM";;1;0
1 importId codeSelect name nextNum padding prefixe suffixe toBeAdded yearlyResetOk
2 1000 maintenance Maintenance 1 5 CM 1 0

View File

@ -0,0 +1,2 @@
"importId";"codeSelect";"name";"nextNum";"padding";"prefixe";"suffixe";"toBeAdded";"yearlyResetOk"
1000;"maintenance";"Maintenance";1;5;"CM";;1;0
1 importId codeSelect name nextNum padding prefixe suffixe toBeAdded yearlyResetOk
2 1000 maintenance Maintenance 1 5 CM 1 0

View File

@ -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>

View File

@ -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

View File

@ -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>

View File

@ -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";;;;;;;;
1 name object canRead canWrite canCreate canRemove canExport readCondition readParams writeCondition writeParams createCondition createParams removeCondition removeParams
2 perm.maintenance.all com.axelor.apps.maintenance.db.* true true true true true

View File

@ -0,0 +1,2 @@
"name";"description";"permissions"
"role.admin";"Access to all objects for all modules";"perm.maintenance.all"
1 name description permissions
2 role.admin Access to all objects for all modules perm.maintenance.all

View File

@ -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). "
1 module object view field help
2 axelor-maintenance Machine maintenance-machine-form startingDuration The time the machine starts before it can be used.
3 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.
4 axelor-maintenance Machine maintenance-machine-form endingDuration Ending duration of the machine.
5 axelor-maintenance Machine maintenance-machine-form weeklyPlanning Enables to select a general planning of machine availability (full-time or part-time).

View File

@ -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) ."
1 module object view field help
2 axelor-maintenance Machine maintenance-machine-form startingDuration Temps que met la machine à démarrer avant de pouvoir être utilisée.
3 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.
4 axelor-maintenance Machine maintenance-machine-form endingDuration Temps de clôture de la machine.
5 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) .

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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",,,
1 key message comment context
2 Action
3 Actions
4 All reached
5 Allocate all
6 Alternative Bill of materials
7 App
8 App maintenance
9 Assigned to
10 BOM.machine
11 Bill of materials
12 Bills of material
13 Bills of materials
14 Cancel
15 Cancel Reason
16 Cancel reservation
17 Canceled
18 Complete
19 Completed
20 Compute cost price
21 Configuration
22 Consumed products
23 Corrective
24 Cost
25 Create maintenance request
26 Current requests
27 Cycles
28 Dates
29 Days
30 Deallocate all
31 Default Bill of materials
32 Done on
33 Duration (Hours)
34 End date
35 Equipement maintenance
36 Equipement maintenances
37 Event end date
38 Event start date
39 Expected date
40 Finish
41 First reached
42 General BoM
43 Generate new version
44 Generate request each
45 Hours of production
46 In progress
47 MO's comment from sale order
48 MO's comment from sale order line
49 Machine
50 Machine type
51 Machines
52 Machines unavailable
53 Maintenance
54 Maintenance Category
55 Maintenance File
56 Maintenance Procedure
57 Maintenance Request
58 Maintenance Requests
59 Maintenance comments
60 Maintenance order
61 Maintenance orders
62 Maintenance periods
63 Maintenance task
64 ManufOrder.machine
65 ManufOrder.machineType
66 Manufacturing Order
67 Merged MO
68 Missing equipement maintenance sequence.
69 My Maintenance requests
70 Name
71 Next maintenance date
72 Note
73 Number of phases
74 Options
75 Outsourced
76 Partial Finish
77 Pause
78 Permanent
79 Phases
80 Plan
81 Planned dates
82 Pre-fill operations
83 Preventive
84 Print
85 Print Production Process
86 ProdProcess.machine
87 Product
88 Production process
89 Production processes
90 Real dates
91 Replan
92 Reports
93 Request By
94 Request date
95 Request history
96 Reserve all
97 Residual products
98 Resume
99 Sequence
100 Start
101 Start date
102 State
103 Total Planned Duration
104 Total Real Duration
105 Type
106 Update planned quantities (Components and FP)
107 Update product cost price
108 Update real quantities (Components and FP)
109 Version management
110 equipement.maintenance.code
111 equipement.maintenance.image
112 equipement.maintenance.name
113 maintenance.request.planned

View File

@ -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",,
1 key message comment context
2 Action
3 Actions
4 All reached
5 Allocate all
6 Alternative Bill of materials
7 App
8 App maintenance
9 Assigned to
10 BOM.machine
11 Bill of materials
12 Bills of material
13 Bills of materials
14 Cancel
15 Cancel Reason
16 Cancel reservation
17 Canceled
18 Complete
19 Completed
20 Compute cost price
21 Configuration
22 Consumed products
23 Corrective
24 Cost
25 Create maintenance request
26 Current requests
27 Cycles
28 Dates
29 Days
30 Deallocate all
31 Default Bill of materials
32 Done on
33 Duration (Hours)
34 End date
35 Equipement maintenance
36 Equipement maintenances
37 Event end date
38 Event start date
39 Expected date
40 Finish
41 First reached
42 General BoM
43 Generate new version
44 Generate request each
45 Hours of production
46 In progress
47 MO's comment from sale order
48 MO's comment from sale order line
49 Machine
50 Machine type
51 Machines
52 Machines unavailable
53 Maintenance
54 Maintenance Category
55 Maintenance File
56 Maintenance Procedure
57 Maintenance Request
58 Maintenance Requests
59 Maintenance comments
60 Maintenance order
61 Maintenance orders
62 Maintenance periods
63 Maintenance task
64 ManufOrder.machine Machine
65 ManufOrder.machineType Machine Type
66 Manufacturing Order
67 Merged MO
68 Missing equipement maintenance sequence.
69 My Maintenance requests
70 Name
71 Next maintenance date
72 Note
73 Number of phases
74 Options
75 Outsourced
76 Partial Finish
77 Pause
78 Permanent
79 Phases
80 Plan
81 Planned dates
82 Pre-fill operations
83 Preventive
84 Print
85 Print Production Process
86 ProdProcess.machine
87 Product
88 Production process
89 Production processes
90 Real dates
91 Replan
92 Reports
93 Request By
94 Request date
95 Request history
96 Reserve all
97 Residual products
98 Resume
99 Sequence
100 Start
101 Start date
102 State
103 Total Planned Duration
104 Total Real Duration
105 Type
106 Update planned quantities (Components and FP)
107 Update product cost price
108 Update real quantities (Components and FP)
109 Version management
110 equipement.maintenance.code Code
111 equipement.maintenance.image Image
112 equipement.maintenance.name Name
113 maintenance.request.planned Planned

View File

@ -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",,
1 key message comment context
2 Action
3 Actions
4 All reached Si toutes les conditions sont atteintes
5 Allocate all
6 Alternative Bill of materials
7 App
8 App maintenance
9 Assigned to Assigné à
10 BOM.machine
11 Bill of materials
12 Bills of material
13 Bills of materials Nomenclatures
14 Cancel
15 Cancel Reason
16 Cancel reservation
17 Canceled
18 Complete
19 Completed Terminée
20 Compute cost price
21 Configuration
22 Consumed products
23 Corrective
24 Cost
25 Create maintenance request Créer demande de maintenance
26 Current requests Demandes à réaliser
27 Cycles Cycles
28 Dates
29 Days Jours
30 Deallocate all
31 Default Bill of materials
32 Done on Réalisé le
33 Duration (Hours) Durée (Heures)
34 End date
35 Equipement maintenance Maintenance equipement
36 Equipement maintenances Maintenances équipement
37 Event end date
38 Event start date
39 Expected date Echéance
40 Finish
41 First reached Si la première condition atteinte
42 General BoM
43 Generate new version
44 Generate request each Générer demande chaque
45 Hours of production Heures de production
46 In progress En cours
47 MO's comment from sale order
48 MO's comment from sale order line
49 Machine
50 Machine type Type de machine
51 Machines
52 Machines unavailable Indisponibilité des machines
53 Maintenance Maintenance
54 Maintenance Category Catégorie de maintenance
55 Maintenance File Fichier maintenance
56 Maintenance Procedure Procedure de maintenance
57 Maintenance Request Demande de maintenance
58 Maintenance Requests Demande de maintenance
59 Maintenance comments Commentaires maintenance
60 Maintenance order Ordre de maintenance
61 Maintenance orders Ordres de maintenance
62 Maintenance periods Périodes de maintenance
63 Maintenance task Maintenance à réaliser
64 ManufOrder.machine Machine
65 ManufOrder.machineType Machine Type
66 Manufacturing Order Ordre de Fabrication
67 Merged MO
68 Missing equipement maintenance sequence. Une séquence pour la maintenance de l'équipement est manquante.
69 My Maintenance requests Mes demandes de maintenance
70 Name
71 Next maintenance date Prochaine date de maintenance
72 Note
73 Number of phases
74 Options
75 Outsourced
76 Partial Finish
77 Pause
78 Permanent
79 Phases
80 Plan
81 Planned dates
82 Pre-fill operations
83 Preventive Préventive
84 Print
85 Print Production Process
86 ProdProcess.machine
87 Product
88 Production process
89 Production processes Gammes
90 Real dates
91 Replan Replanifier
92 Reports
93 Request By Demandé par
94 Request date Date de la demande
95 Request history Historique des actions
96 Reserve all
97 Residual products
98 Resume
99 Sequence
100 Start Débuter
101 Start date
102 State
103 Total Planned Duration
104 Total Real Duration
105 Type
106 Update planned quantities (Components and FP)
107 Update product cost price
108 Update real quantities (Components and FP)
109 Version management
110 equipement.maintenance.code Référence
111 equipement.maintenance.image Image
112 equipement.maintenance.name Description
113 maintenance.request.planned Prévue

View File

@ -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>

View File

@ -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 &amp;&amp; machine != null"/>
</action-attrs>
</object-views>

View File

@ -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>

View File

@ -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>

View File

@ -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 &amp;&amp; !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 &amp;&amp; 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>

View File

@ -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 &amp;&amp; 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 &amp;&amp; $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 &amp;&amp; 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 &amp;&amp; statusSelect >= 3">
<button name="updatePlannedQtyBtn"
title="Update planned quantities (Components and FP)"
showIf="statusSelect != 6 &amp;&amp; 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 &amp;&amp; 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 &amp;&amp; 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: &quot; (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} &quot;"
if="prodProcess != null &amp;&amp; billOfMaterial != null"/>
<attribute name="domain" for="prodProcess"
expr="eval: &quot; self.statusSelect = 3 AND ((:workshopStockLocation IS NULL AND self.workshopStockLocation IS NULL) OR self.workshopStockLocation = :workshopStockLocation) AND self.typeSelect = ${__repo__(ManufOrder).TYPE_MAINTENANCE} &quot;"
if="billOfMaterial == null &amp;&amp; !_parent"/>
<attribute name="domain" for="prodProcess"
expr="eval: &quot; 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 &quot;"
if="billOfMaterial == null &amp;&amp; _parent"/>
</action-attrs>
<action-attrs name="action-maintenance-manuf-order-attrs-filter-bom">
<attribute name="domain" for="billOfMaterial"
expr="eval: &quot;(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&quot;"
if="_parent"/>
<attribute name="domain" for="billOfMaterial"
expr="eval: &quot;(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}&quot;"
if="_maintenance &amp;&amp; !_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>

View File

@ -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>

View File

@ -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>

View File

@ -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>