initial commit

This commit is contained in:
devapp
2021-11-29 11:56:30 +01:00
parent 016e45a01c
commit 5b67068faa
4285 changed files with 927085 additions and 2 deletions

View File

@@ -0,0 +1,12 @@
<?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_5.2.xsd">
<form name="app-quality-config-form" title="App quality" model="com.axelor.apps.base.db.AppQuality" width="large" canNew="false" canDelete="false">
<panel name="mainPanel">
<field name="qualityControlTemplate" requiredIf="automaticMail" canEdit="false"/>
<field name="automaticMail" widget="boolean-switch"/>
</panel>
</form>
</object-views>

View File

@@ -0,0 +1,133 @@
<?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_5.2.xsd">
<chart onInit="action.quality.chart.set.date" name="chart.quality.control.points" title="Control Points">
<search-fields>
<field type="date" name="fromDateT" title="From Date" x-required="true"/>
<field type="date" name="toDateT" title="To Date" x-required="true"/>
</search-fields>
<dataset type="sql">
<![CDATA[
SELECT
COUNT(self.id) AS _passed,
_team.name AS _team_name,
_meta._select_title AS _status
FROM
quality_control_point AS self
LEFT JOIN
team_team AS _team
ON self.team = _team.id
JOIN
(SELECT
cast(_item.value as int) AS _select_value,
_item.title AS _select_title
FROM
meta_select AS _selection
JOIN
meta_select_item AS _item
ON _selection.name = 'quality.control.points.status.select'
AND _item.select_id = _selection.id
) AS _meta
ON
_meta._select_value = self.status_select
WHERE
(
self.status_select = 2
OR
self.status_select = 3
)
AND
DATE(self.created_on) BETWEEN DATE(:fromDateT) AND DATE(:toDateT)
GROUP BY
_team_name, _status
ORDER BY
_team_name, _passed ASC
]]>
</dataset>
<category key="_team_name" type="text" title="Team"/>
<series key="_passed" type="bar" groupBy="_status" title="Result" />
</chart>
<chart onInit="action.quality.chart.set.date" name="chart.quality.controls.total.numbers" title="Number of quality controls">
<search-fields>
<field type="date" name="fromDateT" title="From Date" x-required="true"/>
<field type="date" name="toDateT" title="To Date" x-required="true"/>
</search-fields>
<dataset type="jpql">
<![CDATA[
SELECT
COUNT(*) AS _controls,
self.team.name AS _team
FROM
QualityControl self
WHERE
DATE(self.createdOn) BETWEEN DATE(:fromDateT) AND DATE(:toDateT)
GROUP BY
self.team.name
ORDER BY
self.team.name
]]>
</dataset>
<category key="_team" type="text"/>
<series key="_controls" type="bar"/>
</chart>
<chart name="chart.quality.alerts.total.numbers" title="Number of quality alerts" onInit="action.quality.chart.set.date">
<search-fields>
<field name="fromDateT" title="From Date" type="date" x-required="true"/>
<field name="toDateT" title="To Date" type="date" x-required="true"/>
</search-fields>
<dataset type="jpql">
<![CDATA[
SELECT
COUNT(*) AS _alerts,
self.team.name AS _team
FROM
QualityAlert self
WHERE
DATE(self.createdOn) BETWEEN DATE(:fromDateT) AND DATE(:toDateT)
GROUP BY
self.team.name
ORDER BY
self.team.name
]]>
</dataset>
<category key="_team" type="text"/>
<series key="_alerts" type="bar"/>
</chart>
<chart onInit="action.quality.chart.set.date" name="chart.quality.alerts.solved.total.numbers" title="Number of solved quality alerts">
<search-fields>
<field type="date" name="fromDateT" title="From Date" x-required="true"/>
<field type="date" name="toDateT" title="To Date" x-required="true"/>
</search-fields>
<dataset type="jpql">
<![CDATA[
SELECT
COUNT(*) AS _alerts,
self.team.name AS _team
FROM
QualityAlert self
WHERE
DATE(self.createdOn) BETWEEN DATE(:fromDateT) AND DATE(:toDateT)
AND
self.statusSelect = 4
GROUP BY
self.team.name
ORDER BY
self.team.name
]]>
</dataset>
<category key="_team" type="text"/>
<series key="_alerts" type="bar"/>
</chart>
<action-record model="com.axelor.apps.quality.db.ControlPoint" name="action.quality.chart.set.date">
<field name="toDateT" expr="eval: __date__"/>
<field name="fromDateT" expr="eval:__date__.withDayOfMonth(1).withMonth(1)"/>
</action-record>
</object-views>

View File

@@ -0,0 +1,40 @@
<?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_5.2.xsd">
<grid name="control-point-grid" title="Control points" model="com.axelor.apps.quality.db.ControlPoint" onNew="action-control-point-attrs-hide-quality-control" edit-icon="true">
<field name="name" width="700"/>
<field name="controlPointType" width="150"/>
<field name="statusSelect" width="130"/>
</grid>
<form name="control-point-form" title="Control points" model="com.axelor.apps.quality.db.ControlPoint" onNew="action-quality-control-point-record-default">
<panel name="mainPanel">
<field name="statusSelect" widget="NavSelect" showTitle="false" readonly="true" colSpan="12"/>
<field name="name"/>
<field name="controlPointType"/>
<field name="qualityControl" readonly="true" hideIf="$popup() || qualityControl == null"/>
</panel>
<panel name="measuringPointPanel">
<panel-related name="measuringPointListPanel" field="measuringPointList" colSpan="12" grid-view="quality-measuring-point-grid" form-view="quality-measuring-point-form"/>
</panel>
<panel name="notesPanel" title="Control comment">
<field name="notes" colSpan="12" height="6" widget="html" showTitle="false"/>
</panel>
<panel name="actionsPanel" sidebar="true" showIf="statusSelect == 1">
<button name="closeBtn" title="Close" onClick="save,action-quality-control-point-record-status-close,save"/>
</panel>
<panel-mail name="mailPanel">
<mail-messages />
</panel-mail>
</form>
<action-record name="action-quality-control-point-record-default" model="com.axelor.apps.quality.db.ControlPoint">
<field name="statusSelect" expr="eval: 1"/>
</action-record>
<action-record name="action-quality-control-point-record-status-close" model="com.axelor.apps.quality.db.ControlPoint">
<field name="statusSelect" expr="eval: 2"/>
</action-record>
</object-views>

View File

@@ -0,0 +1,23 @@
<?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_5.2.xsd">
<grid name="control-point-model-grid" title="Control points" model="com.axelor.apps.quality.db.ControlPointModel">
<field name="name"/>
</grid>
<form name="control-point-model-form" title="Control points" model="com.axelor.apps.quality.db.ControlPointModel">
<panel name="mainPanel">
<field name="name"/>
<field name="controlPointType"/>
<field name="sequence"/>
</panel>
<panel name="measuringPointPanel">
<panel-related name="measuringPointListPanel" field="measuringPointList" colSpan="12" grid-view="quality-measuring-point-model-grid" form-view="quality-measuring-point-model-form"/>
</panel>
<panel name="notesPanel">
<field name="notes" colSpan="12" height="6" widget="html" showTitle="false"/>
</panel>
</form>
</object-views>

View File

@@ -0,0 +1,15 @@
<?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_5.2.xsd">
<grid name="quality-control-point-type-grid" title="Control point type" model="com.axelor.apps.quality.db.ControlPointType">
<field name="name"/>
</grid>
<form name="quality-control-point-type-form" title="Control point type" model="com.axelor.apps.quality.db.ControlPointType" width="large">
<panel name="mainPanel">
<field name="name"/>
</panel>
</form>
</object-views>

View File

@@ -0,0 +1,13 @@
<?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_5.2.xsd">
<dashboard title="Quality Dashboard" name="quality.dashboard">
<dashlet action="chart:chart.quality.control.points" height="350" canSearch="true" />
<dashlet action="chart:chart.quality.controls.total.numbers" height="350" canSearch="true" />
<dashlet action="chart:chart.quality.alerts.total.numbers" height="350" canSearch="true" />
<dashlet action="chart:chart.quality.alerts.solved.total.numbers" height="350" canSearch="true" />
</dashboard>
</object-views>

View File

@@ -0,0 +1,101 @@
<?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_5.2.xsd">
<menuitem name="menu-quality-root" order="-105" if="__config__.app.isApp('quality')"
title="Quality" icon="fa fa-check" icon-background="#3f6bb9"/>
<menuitem name="quality-controls-root" parent="menu-quality-root" title="Quality controls" />
<menuitem name="quality-processes" parent="quality-controls-root" title="Quality processes" action="quality.processes"/>
<action-view name="quality.processes" title="Quality processes" model="com.axelor.apps.quality.db.QualityProcess">
<view type="grid" name="quality-process-grid"/>
<view type="form" name="quality-process-form"/>
</action-view>
<menuitem name="quality-controls" parent="quality-controls-root" title="Quality controls" action="quality.controls"/>
<action-view name="quality.controls" title="Quality controls" model="com.axelor.apps.quality.db.QualityControl">
<view type="kanban" name="quality-control-kanban"/>
<view type="grid" name="quality-control-grid"/>
<view type="form" name="quality-control-form"/>
<view-param name="search-filters" value="quality-control-filters"/>
<context name="_userId" expr="eval:__user__.id"/>
<context name="_myActiveTeamId" expr="call:com.axelor.apps.base.service.user.UserService:getUserActiveTeamId()"/>
</action-view>
<menuitem name="quality-control-points" parent="quality-controls-root" title="Control points" action="quality.controls.points"/>
<action-view name="quality.controls.points" title="Control points" model="com.axelor.apps.quality.db.ControlPoint">
<view type="grid" name="control-point-grid"/>
<view type="form" name="control-point-form"/>
</action-view>
<menuitem name="quality-alerts" parent="menu-quality-root" title="Quality alerts" action="quality.alerts"/>
<action-view name="quality.alerts" title="Quality alerts" model="com.axelor.apps.quality.db.QualityAlert">
<view type="kanban" name="quality-alert-kanban"/>
<view type="grid" name="quality-alert-grid"/>
<view type="form" name="quality-alert-form"/>
<view-param name="search-filters" value="quality-alert-filters"/>
<context name="_userId" expr="eval:__user__.id"/>
<context name="_myActiveTeamId" expr="call:com.axelor.apps.base.service.user.UserService:getUserActiveTeamId()"/>
</action-view>
<menuitem name="quality-calendar" parent="menu-quality-root" title="Calendar" />
<menuitem name="quality-alert-calendar" parent="quality-calendar" title="Alert calendar" action="quality.alert.calendar" />
<action-view name="quality.alert.calendar" title="Alert calendar" model="com.axelor.apps.quality.db.QualityAlert" >
<view type="calendar" name="quality-alert-calendar" />
</action-view>
<menuitem name="quality-control-calendar" parent="quality-calendar" title="Quality control calendar" action="quality.control.calendar" />
<action-view name="quality.control.calendar" title="Quality control calendar" model="com.axelor.apps.quality.db.QualityControl" >
<view type="calendar" name="quality-control-calendar" />
<domain>self.statusSelect &gt; 2</domain>
</action-view>
<menuitem name="quality-reportings" parent="menu-quality-root" title="Reportings" icon="fa-bar-chart"/>
<menuitem name="quality-reportings-dashboard" parent="quality-reportings" title="Quality Dashboard" action="quality.dashboard.view" />
<action-view name="quality.dashboard.view" title="Quality Dashboard" >
<view type="dashboard" name="quality.dashboard" />
</action-view>
<menuitem name="quality-configurations" parent="menu-quality-root" title="Configuration" icon="fa-cog"/>
<menuitem name="quality-teams" parent="quality-configurations" title="Quality teams" action="quality.teams"/>
<action-view name="quality.teams" title="Quality teams" model="com.axelor.team.db.Team">
<view type="grid" name="team-grid"/>
<view type="form" name="team-form"/>
<domain>self.typeSelect = 'quality'</domain>
<context name="_typeSelect" expr="eval: 'quality'"/>
</action-view>
<menuitem name="quality-root-causes" parent="quality-configurations" title="Root causes" action="quality.root.causes" />
<action-view name="quality.root.causes" title="Root causes" model="com.axelor.apps.quality.db.RootCause">
<view type="grid" name="root-cause-grid"/>
<view type="form" name="root-cause-form"/>
</action-view>
<menuitem name="quality-tags" parent="quality-configurations" title="Tags" action="quality.tags" />
<action-view name="quality.tags" title="Tags" model="com.axelor.apps.quality.db.QualityTag">
<view type="grid" name="quality-tag-grid"/>
<view type="form" name="quality-tag-form"/>
</action-view>
<menuitem name="quality-control-point-type" parent="quality-configurations" title="Control point type" action="quality.control.point.type" />
<action-view name="quality.control.point.type" title="Control point type" model="com.axelor.apps.quality.db.ControlPointType">
<view type="grid" name="quality-control-point-type-grid"/>
<view type="form" name="quality-control-point-type-form"/>
</action-view>
</object-views>

View File

@@ -0,0 +1,100 @@
<?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_5.2.xsd">
<grid name="quality-alert-grid" title="Quality alerts" model="com.axelor.apps.quality.db.QualityAlert">
<field name="reference" width="120"/>
<field name="reference" width="120"/>
<field name="product"/>
<field name="workCenter"/>
<field name="team"/>
<field name="responsible"/>
<field name="qualityTagSet"/>
<field name="rootCause"/>
<field name="prioritySelect"/>
</grid>
<calendar name="quality-alert-calendar" title="Alert calendar" mode="month" colorBy="prioritySelect"
eventStart="startDate" eventStop="endDate" eventLength="1" model="com.axelor.apps.quality.db.QualityAlert">
<field name="fullName" />
</calendar>
<form name="quality-alert-form" title="Quality alerts" model="com.axelor.apps.quality.db.QualityAlert" onNew="action-quality-alert-record-default">
<panel name="statusSelectPanel" title="Status">
<field name="statusSelect" showTitle="false" widget="NavSelect" colSpan="12" />
</panel>
<panel name="detailsPanel">
<field name="reference"/>
<field name="product"/>
<field name="workCenter"/>
<field name="team" domain="self.typeSelect = 'quality'"/>
<field name="responsible"/>
<field name="rootCause"/>
<field name="prioritySelect"/>
<field name="startDate"/>
<field name="endDate"/>
<field name="deadLineDate"/>
<field name="qualityTagSet" widget="TagSelect" colSpan="12"/>
</panel>
<panel name="descriptionPanel">
<field name="description" colSpan="12" height="6" widget="html" showTitle="false"/>
</panel>
<panel name="correctiveActionsPanel">
<field name="correctiveActions" colSpan="12" height="6" widget="html" showTitle="false"/>
</panel>
<panel name="preventiveActionsPanel">
<field name="preventiveActions" colSpan="12" height="6" widget="html" showTitle="false"/>
</panel>
<panel sidebar="true" name="actionsPanel" title="Actions" hideIf="statusSelect == 4">
<button name="confirmBtn" title="Confirm" showIf="statusSelect == 1" onClick="save,action-quality-alert-record-status-confirm,save"/>
<button name="proposeActionBtn" title="Propose action" showIf="statusSelect == 2" onClick="save,action-quality-alert-record-status-proposed,save"/>
<button name="solveBtn" title="Solve" showIf="statusSelect == 3" onClick="save,action-quality-alert-record-status-solved,save"/>
</panel>
<panel-mail name="mailPanel">
<mail-messages />
</panel-mail>
</form>
<kanban columnBy="statusSelect" sequenceBy="prioritySelect" limit="10"
name="quality-alert-kanban" title="Quality alerts" model="com.axelor.apps.quality.db.QualityAlert">
<field name="fullName"/>
<field name="team"/>
<field name="responsible"/>
<template>
<![CDATA[
<h4>{{fullName}}</h4>
<div class="card-body">{{team.name}}</div>
<div class="card-body">{{responsible.name}}</div>
]]>
</template>
</kanban>
<action-record name="action-quality-alert-record-default" model="com.axelor.apps.quality.db.QualityAlert">
<field name="statusSelect" expr="eval: 1"/>
<field name="prioritySelect" expr="eval: 1"/>
<field name="product" expr="eval: _product" if="eval: _product != null"/>
<field name="team" expr="eval: _team" if="eval: _team != null"/>
</action-record>
<action-record name="action-quality-alert-record-status-confirm" model="com.axelor.apps.quality.db.QualityAlert">
<field name="statusSelect" expr="eval: 2"/>
</action-record>
<action-record name="action-quality-alert-record-status-proposed" model="com.axelor.apps.quality.db.QualityAlert">
<field name="statusSelect" expr="eval: 3"/>
</action-record>
<action-record name="action-quality-alert-record-status-solved" model="com.axelor.apps.quality.db.QualityAlert">
<field name="statusSelect" expr="eval: 4"/>
</action-record>
<search-filters name="quality-alert-filters" model="com.axelor.apps.quality.db.QualityAlert" title="Quality alert filters">
<filter title="My alerts">
<domain>self.responsible.user.id = :_userId</domain>
</filter>
<filter title="My team alerts">
<domain>self.team.id = :_myActiveTeamId</domain>
</filter>
</search-filters>
</object-views>

View File

@@ -0,0 +1,199 @@
<?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_5.2.xsd">
<grid name="quality-control-grid" title="Quality controls" model="com.axelor.apps.quality.db.QualityControl">
<toolbar>
<button name="sendEmailBtn" title="Send email" onClick="action-quality-control-method-send-email"/>
</toolbar>
<field name="reference" width="120"/>
<field name="name"/>
<field name="project"/>
<field name="team"/>
<field name="responsible"/>
</grid>
<calendar name="quality-control-calendar" title="Quality control calendar" mode="month" colorBy="statusSelect"
eventStart="startDate" eventStop="endDate" eventLength="1" model="com.axelor.apps.quality.db.QualityControl">
<field name="reference"/>
</calendar>
<form name="quality-control-form" title="Quality controls" model="com.axelor.apps.quality.db.QualityControl" onNew="action-quality-control-group-onnew-actions" onLoad="action-quality-control-group-onload-actions">
<menubar>
<menu title="Tools">
<item title="Print" action="save,action-quality-control-method-print" showIf="statusSelect == 6"/>
<item title="Send email" action="save,action-quality-control-method-send-email" showIf="statusSelect == 6"/>
</menu>
</menubar>
<panel name="mainPanel" title="Status" showTitle="false">
<field name="statusSelect" showTitle="false" widget="NavSelect" colSpan="12" />
<field name="reference" showTitle="false" colSpan="12" css="label-bold bold large"/>
<field name="name"/>
<field name="project" required="true" onChange="action-quality-control-record-set-printing-setting-on-project-change"/>
<field name="responsible"/>
<field name="team" domain="self.typeSelect = 'quality'"/>
<field name="startDate"/>
<field name="endDate"/>
<field name="deadLineDate"/>
</panel>
<panel name="actionsPanel" sidebar="true" hideIf="statusSelect == 6">
<button name="planBtn" title="Plan" showIf="statusSelect == 1 || statusSelect == 2" onClick="save,action-quality-control-record-status-planned,save"/>
<button name="startBtn" title="Start" showIf="statusSelect == 3 || statusSelect == 5" onClick="save,action-quality-control-record-status-in-progress,save"/>
<button name="pauseBtn" title="Pause" showIf="statusSelect == 4" onClick="save,action-quality-control-record-status-pause,save"/>
<button name="finishBtn" title="Finish" showIf="statusSelect == 4" onClick="action-quality-control-group-status-finish"/>
<button name="cancelBtn" title="Cancel" showIf="statusSelect == 1 || statusSelect == 3 || statusSelect == 4" onClick="save,action-quality-control-record-status-canceled,save"/>
</panel>
<panel name="listsPanel">
<panel-related name="controlPointListPanel" field="controlPointList" colSpan="12" grid-view="control-point-grid" form-view="control-point-form" onChange="action-quality-control-attrs-readonly-plan-button" onNew="save" orderBy="sequence" canMove="true"/>
<panel-related name="optionalControlPointListPanel" field="optionalControlPointList" colSpan="12" grid-view="control-point-grid" form-view="control-point-form" hidden="true"/>
<panel-related name="qualityCorrectiveActionListPanel" field="qualityCorrectiveActionList" colSpan="12" grid-view="quality-corrective-action-grid" form-view="quality-corrective-action-form"/>
<field name="inspectorSignature" widget="Image"/>
<field name="customerSignature" widget="Image"/>
</panel>
<panel name="controlPointsPanel" sidebar="true" hideIf="statusSelect == 2 || statusSelect == 6">
<button name="chooseQualityProcessBtn" title="Choose quality process" onClick="save,action-quality-control-view-quality-process" showIf="statusSelect == 1"/>
<button name="addOptionalControlPointsBtn" title="Add optional control points" onClick="save,action-quality-control-view-optional-control-points"/>
<button name="editControlPointsBtn" title="Edit control points" onClick="action-quality-control-method-open-control-points"/>
</panel>
<panel name="configPanel" title="Configuration">
<field name="printingSettings" canEdit="false"/>
</panel>
<panel-mail name="mailPanel">
<mail-messages />
</panel-mail>
</form>
<form name="wizard-quality-process-form" title="Choose quality process" model="com.axelor.apps.base.db.Wizard">
<panel name="wizardPanel">
<field name="qualityProcess" title="Quality process" type="many-to-one" target="com.axelor.apps.quality.db.QualityProcess"/>
<button name="preFillControlPointsBtn" colSpan="4" title="Pre-fill control points" readonlyIf="qualityProcess == null" onClick="action-quality-control-method-pre-fill-operations"/>
</panel>
</form>
<form name="wizard-optional-control-points-form" title="Add optional control points" model="com.axelor.apps.base.db.Wizard">
<panel name="wizardPanel">
<field name="optionalControlPointSet" title="Optional control points" type="many-to-many" target="com.axelor.apps.quality.db.ControlPoint" domain="self.optionalQualityControl = :_qualityControl" canNew="false" colSpan="12"/>
<button name="preFillControlPointsBtn" colSpan="4" title="Pre-fill control points" readonlyIf="optionalControlPointSet == null" onClick="action-quality-control-method-pre-fill-operations-from-optionals"/>
</panel>
</form>
<kanban columnBy="statusSelect" sequenceBy="sequence"
name="quality-control-kanban" title="Quality control" model="com.axelor.apps.quality.db.QualityControl">
<field name="reference"/>
<field name="team"/>
<field name="responsible"/>
<template>
<![CDATA[
<h4>{{reference}}</h4>
<div class="card-body">{{team.name}}</div>
<div class="card-body">{{responsible.name}}</div>
]]>
</template>
</kanban>
<action-group name="action-quality-control-group-onnew-actions">
<action name="action-quality-control-record-default"/>
<action name="action-quality-control-attrs-readonly-plan-button"/>
</action-group>
<action-group name="action-quality-control-group-onload-actions">
<action name="action-quality-control-attrs-readonly-plan-button"/>
</action-group>
<action-group name="action-quality-control-group-status-finish">
<action name="save"/>
<action name="action-quality-control-validate-control-points-on-finish"/>
<action name="action-quality-control-record-status-finish"/>
<action name="save"/>
<action name="action-quality-control-method-send-email" if="__config__.app.getApp('quality').getAutomaticMail()"/>
</action-group>
<action-record name="action-quality-control-record-default" model="com.axelor.apps.quality.db.QualityControl">
<field name="statusSelect" expr="eval: 1"/>
</action-record>
<action-record name="action-quality-control-record-status-planned" model="com.axelor.apps.quality.db.QualityControl">
<field name="statusSelect" expr="eval: 3"/>
</action-record>
<action-record name="action-quality-control-record-status-canceled" model="com.axelor.apps.quality.db.QualityControl">
<field name="statusSelect" expr="eval: 2"/>
</action-record>
<action-record name="action-quality-control-record-status-in-progress" model="com.axelor.apps.quality.db.QualityControl">
<field name="statusSelect" expr="eval: 4"/>
</action-record>
<action-record name="action-quality-control-record-status-pause" model="com.axelor.apps.quality.db.QualityControl">
<field name="statusSelect" expr="eval: 5"/>
</action-record>
<action-record name="action-quality-control-record-status-finish" model="com.axelor.apps.quality.db.QualityControl">
<field name="statusSelect" expr="eval: 6"/>
</action-record>
<action-method name="action-quality-control-method-open-control-points">
<call class="com.axelor.apps.quality.web.QualityControlController" method="openControlPoints"/>
</action-method>
<action-method name="action-quality-control-method-pre-fill-operations">
<call class="com.axelor.apps.quality.web.QualityControlController" method="preFillOperations"/>
</action-method>
<action-attrs name="action-quality-control-attrs-readonly-plan-button">
<attribute name="readonly" expr="eval:controlPointList == null || controlPointList.isEmpty()" for="planBtn"/>
</action-attrs>
<action-view name="action-quality-control-view-quality-process" title="Choose quality process" model="com.axelor.apps.base.db.Wizard">
<view type="form" name="wizard-quality-process-form"/>
<view-param name="show-toolbar" value="false"/>
<view-param name="width" value="800"/>
<view-param name="popup" value="true"/>
<view-param name="show-confirm" value="false"/>
<view-param name="popup-save" value="false"/>
<view-param name="popup" value="reload"/>
<context name="_qualityControl" expr="eval:__self__"/>
</action-view>
<action-view name="action-quality-control-view-optional-control-points" title="Add optional control points" model="com.axelor.apps.base.db.Wizard">
<view type="form" name="wizard-optional-control-points-form"/>
<view-param name="show-toolbar" value="false"/>
<view-param name="width" value="800"/>
<view-param name="popup" value="true"/>
<view-param name="show-confirm" value="false"/>
<view-param name="popup-save" value="false"/>
<view-param name="popup" value="reload"/>
<context name="_qualityControl" expr="eval:__self__"/>
</action-view>
<action-method name="action-quality-control-method-pre-fill-operations-from-optionals">
<call class="com.axelor.apps.quality.web.QualityControlController" method="preFillOperationsFromOptionals"/>
</action-method>
<action-method name="action-quality-control-method-print">
<call class="com.axelor.apps.quality.web.QualityControlController" method="printQualityControl"/>
</action-method>
<action-method name="action-quality-control-method-send-email">
<call class="com.axelor.apps.quality.web.QualityControlController" method="sendEmail"/>
</action-method>
<action-validate name="action-quality-control-validate-control-points-on-finish">
<error message="Please complete all control points" if="controlPointList != null &amp;&amp; controlPointList.any{it?.statusSelect != 2}"/>
</action-validate>
<action-record name="action-quality-control-record-set-printing-setting-on-project-change" model="com.axelor.apps.quality.db.QualityControl">
<field name="printingSettings" expr="eval: project?.company?.printingSettings" if="project != null &amp;&amp; project?.company != null"/>
</action-record>
<search-filters name="quality-control-filters" model="com.axelor.apps.quality.db.QualityControl" title="Quality control filters">
<filter title="My quality controls">
<domain>self.responsible.user.id = :_userId</domain>
</filter>
<filter title="My team quality controls">
<domain>self.team.id = :_myActiveTeamId</domain>
</filter>
</search-filters>
</object-views>

View File

@@ -0,0 +1,31 @@
<?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_5.2.xsd">
<grid name="quality-corrective-action-grid" title="Corrective actions" model="com.axelor.apps.quality.db.QualityCorrectiveAction" edit-icon="true">
<field name="name" width="200"/>
<field name="details" width="650"/>
<field name="isApplicable" width="150"/>
</grid>
<grid name="quality-corrective-action-model-grid" title="Corrective actions" model="com.axelor.apps.quality.db.QualityCorrectiveAction" edit-icon="true">
<field name="name"/>
<field name="details"/>
</grid>
<form name="quality-corrective-action-form" title="Corrective actions" model="com.axelor.apps.quality.db.QualityCorrectiveAction">
<panel name="mainPanel">
<field name="name" colSpan="8"/>
<field name="isApplicable" colSpan="4" widget="boolean-switch"/>
<field name="details" colSpan="12" widget="html"/>
</panel>
</form>
<form name="quality-corrective-action-model-form" title="Corrective actions" model="com.axelor.apps.quality.db.QualityCorrectiveAction">
<panel name="mainPanel">
<field name="name"/>
<field name="details" colSpan="12" widget="html"/>
</panel>
</form>
</object-views>

View File

@@ -0,0 +1,53 @@
<?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_5.2.xsd">
<grid name="quality-measuring-point-grid" title="Measuring points" model="com.axelor.apps.quality.db.QualityMeasuringPoint" edit-icon="true">
<field name="name"/>
<field name="measuringNote" widget="ImageSelect" x-labels="false"/>
<field name="observations"/>
</grid>
<grid name="quality-measuring-point-model-grid" title="Measuring points" model="com.axelor.apps.quality.db.QualityMeasuringPoint" edit-icon="true">
<field name="name"/>
<field name="measuringTypeSelect"/>
<field name="coefficient"/>
</grid>
<form name="quality-measuring-point-form" title="Measuring points" model="com.axelor.apps.quality.db.QualityMeasuringPoint">
<panel name="mainPanel">
<field name="name"/>
<field name="measuringTypeSelect"/>
<field name="measuringNote" widget="ImageSelect" x-labels="false" hidden="true" showIf="measuringTypeSelect == 1"/>
<field name="coefficient"/>
<field name="compliant" colSpan="3" widget="boolean-switch" hidden="true" showIf="measuringTypeSelect == 2" onChange="action-measuring-point-attrs-on-compliant-change"/>
<field name="picturesList" colSpan="12">
<editor onNew="action-quality-picture-record-on-new">
<panel name="mainPanel">
<panel name="imagePanel" colSpan="6">
<field name="metaFile" widget="Image" colSpan="12" showTitle="false"/>
</panel>
<panel name="detailsPanel" colSpan="6">
<field name="name" colSpan="12"/>
<field name="createDate" colSpan="6"/>
</panel>
</panel>
</editor>
</field>
<field name="observations" colSpan="12" widget="html"/>
</panel>
</form>
<form name="quality-measuring-point-model-form" title="Measuring points" model="com.axelor.apps.quality.db.QualityMeasuringPoint">
<panel name="mainPanel">
<field name="name"/>
<field name="measuringTypeSelect"/>
<field name="coefficient"/>
</panel>
</form>
<action-attrs name="action-measuring-point-attrs-on-compliant-change">
<attribute name="value" for="measuringNote" expr="eval: (compliant) ? 5 : 0"/>
</action-attrs>
</object-views>

View File

@@ -0,0 +1,27 @@
<?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_5.2.xsd">
<grid name="quality-pictures-grid" title="Pictures" model="com.axelor.apps.quality.db.QualityPictures">
<field name="name"/>
<field name="metaFile"/>
<field name="createDate"/>
</grid>
<form name="quality-pictures-form" title="Pictures" model="com.axelor.apps.quality.db.QualityPictures" onNew="action-quality-picture-record-on-new">
<panel name="mainPanel">
<panel name="imagePanel" colSpan="6">
<field name="metaFile" widget="Image" colSpan="12"/>
</panel>
<panel name="detailsPanel" colSpan="6">
<field name="name" colSpan="12"/>
<field name="createDate" colSpan="6"/>
</panel>
</panel>
</form>
<action-record name="action-quality-picture-record-on-new" model="com.axelor.apps.quality.db.QualityPictures">
<field name="createDate" expr="eval: __date__"/>
</action-record>
</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_5.2.xsd">
<grid name="quality-process-grid" title="Quality process" model="com.axelor.apps.quality.db.QualityProcess">
<field name="name"/>
<field name="code"/>
</grid>
<form name="quality-process-form" title="Quality process" width="large" model="com.axelor.apps.quality.db.QualityProcess">
<panel name="mainPanel">
<field name="name"/>
<field name="code"/>
</panel>
<panel name="controlPointModelPanel">
<panel-related name="controlPointModelListPanel" orderBy="sequence" field="controlPointModelList" colSpan="6" grid-view="control-point-model-grid" form-view="control-point-model-form" />
<panel-related name="optionalControlPointModelListPanel" field="optionalControlPointModelList" colSpan="6" grid-view="control-point-model-grid" form-view="control-point-model-form"/>
</panel>
<panel name="qualityCorrectiveActionPanel">
<panel-related name="qualityCorrectiveActionListPanel" field="qualityCorrectiveActionList" colSpan="12" grid-view="quality-corrective-action-model-grid" form-view="quality-corrective-action-model-form"/>
</panel>
</form>
</object-views>

View File

@@ -0,0 +1,15 @@
<?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_5.2.xsd">
<grid name="quality-tag-grid" title="Quality tag" model="com.axelor.apps.quality.db.QualityTag">
<field name="name"/>
</grid>
<form name="quality-tag-form" title="Quality tag" model="com.axelor.apps.quality.db.QualityTag">
<panel name="mainPanel">
<field name="name"/>
</panel>
</form>
</object-views>

View File

@@ -0,0 +1,15 @@
<?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_5.2.xsd">
<grid name="root-cause-grid" title="Root causes" model="com.axelor.apps.quality.db.RootCause">
<field name="name"/>
</grid>
<form name="root-cause-form" title="Root causes" model="com.axelor.apps.quality.db.RootCause">
<panel name="mainPanel">
<field name="name"/>
</panel>
</form>
</object-views>

View File

@@ -0,0 +1,61 @@
<?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_5.2.xsd">
<selection name="quality.alert.priority.select">
<option value="1">Low</option>
<option value="2">Normal</option>
<option value="3">High</option>
<option value="4">Urgent</option>
</selection>
<selection name="quality.alert.status.select">
<option value="1">New</option>
<option value="2">Confirmed</option>
<option value="3">Action proposed</option>
<option value="4">Solved</option>
</selection>
<selection name="quality.control.status.select">
<option order="0" value="1">Draft</option>
<option order="4" value="2">Canceled</option>
<option order="1" value="3">Planned</option>
<option order="2" value="4">In progress</option>
<option order="3" value="5">Standby</option>
<option order="5" value="6">Finished</option>
</selection>
<selection name="quality.control.points.status.select">
<option value="1">On hold</option>
<option value="2">Done</option>
</selection>
<selection name="quality.control.point.model.period">
<option value="1">Week(s)</option>
</selection>
<selection name="sequence.generic.code.select" id="quality.sequence.generic.code.select">
<option value="qualityAlert">Quality alert</option>
<option value="qualityControl">Quality control</option>
</selection>
<selection name="team.type.select" id="quality.team.type.select">
<option value="quality">Quality</option>
</selection>
<selection name="quality.measuring.point.measuring.note.select">
<option value="0" icon="img/rating/rating-0.00.png">0</option>
<option value="1" icon="img/rating/rating-1.00.png">1</option>
<option value="2" icon="img/rating/rating-2.00.png">2</option>
<option value="3" icon="img/rating/rating-3.00.png">3</option>
<option value="4" icon="img/rating/rating-4.00.png">4</option>
<option value="5" icon="img/rating/rating-5.00.png">5</option>
</selection>
<selection name="quality.measuring.point.measuring.type.select">
<option value="1">Note</option>
<option value="2">Conformity</option>
</selection>
</object-views>