Merged in release/2023-06-02 (pull request #828)

Release/2023 06 02
This commit is contained in:
Patrick Fic
2023-05-31 15:30:33 +00:00
7 changed files with 81 additions and 55 deletions

View File

@@ -29,6 +29,7 @@ import AddToProduction from "./jobs-detail-header-actions.addtoproduction.util";
import JobsDetaiLheaderCsi from "./jobs-detail-header-actions.csi.component"; import JobsDetaiLheaderCsi from "./jobs-detail-header-actions.csi.component";
import DuplicateJob from "./jobs-detail-header-actions.duplicate.util"; import DuplicateJob from "./jobs-detail-header-actions.duplicate.util";
import JobsDetailHeaderActionsExportcustdataComponent from "./jobs-detail-header-actions.exportcustdata.component"; import JobsDetailHeaderActionsExportcustdataComponent from "./jobs-detail-header-actions.exportcustdata.component";
import RbacWrapper from "../rbac-wrapper/rbac-wrapper.component";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
@@ -461,6 +462,7 @@ export function JobsDetailHeaderActions({
)} )}
<JobsDetailHeaderActionsAddevent jobid={job.id} /> <JobsDetailHeaderActionsAddevent jobid={job.id} />
{!jobRO && job.converted && ( {!jobRO && job.converted && (
<RbacWrapper action="jobs:void" noauth>
<Menu.Item> <Menu.Item>
<Popconfirm <Popconfirm
title={t("jobs.labels.voidjob")} title={t("jobs.labels.voidjob")}
@@ -509,6 +511,7 @@ export function JobsDetailHeaderActions({
{t("menus.jobsactions.void")} {t("menus.jobsactions.void")}
</Popconfirm> </Popconfirm>
</Menu.Item> </Menu.Item>
</RbacWrapper>
)} )}
</Menu> </Menu>
); );

View File

@@ -26,6 +26,8 @@ const ret = {
"jobs:partsqueue": 4, "jobs:partsqueue": 4,
"jobs:checklist-view": 2, "jobs:checklist-view": 2,
"jobs:list-ready": 1, "jobs:list-ready": 1,
"jobs:void": 5,
"bills:enter": 2, "bills:enter": 2,
"bills:view": 2, "bills:view": 2,
"bills:list": 2, "bills:list": 2,

View File

@@ -1,12 +1,12 @@
import { useTreatments } from "@splitsoftware/splitio-react";
import { Form, InputNumber } from "antd"; import { Form, InputNumber } from "antd";
import React from "react"; import React from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
import RbacWrapper from "../rbac-wrapper/rbac-wrapper.component";
import { useTreatments } from "@splitsoftware/splitio-react";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { createStructuredSelector } from "reselect"; import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors";
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
import RbacWrapper from "../rbac-wrapper/rbac-wrapper.component";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
}); });
@@ -316,6 +316,18 @@ export function ShopInfoRbacComponent({ form, bodyshop }) {
> >
<InputNumber /> <InputNumber />
</Form.Item> </Form.Item>
<Form.Item
label={t("bodyshop.fields.rbac.jobs.void")}
rules={[
{
required: true,
//message: t("general.validation.required"),
},
]}
name={["md_rbac", "jobs:void"]}
>
<InputNumber />
</Form.Item>
<Form.Item <Form.Item
label={t("bodyshop.fields.rbac.bills.enter")} label={t("bodyshop.fields.rbac.bills.enter")}
rules={[ rules={[

View File

@@ -405,7 +405,8 @@
"list-active": "Jobs -> List Active", "list-active": "Jobs -> List Active",
"list-all": "Jobs -> List All", "list-all": "Jobs -> List All",
"list-ready": "Jobs -> List Ready", "list-ready": "Jobs -> List Ready",
"partsqueue": "Jobs -> Parts Queue" "partsqueue": "Jobs -> Parts Queue",
"void": "Jobs -> Void"
}, },
"owners": { "owners": {
"detail": "Owners -> Detail", "detail": "Owners -> Detail",

View File

@@ -405,7 +405,8 @@
"list-active": "", "list-active": "",
"list-all": "", "list-all": "",
"list-ready": "", "list-ready": "",
"partsqueue": "" "partsqueue": "",
"void": ""
}, },
"owners": { "owners": {
"detail": "", "detail": "",

View File

@@ -405,7 +405,8 @@
"list-active": "", "list-active": "",
"list-all": "", "list-all": "",
"list-ready": "", "list-ready": "",
"partsqueue": "" "partsqueue": "",
"void": ""
}, },
"owners": { "owners": {
"detail": "", "detail": "",

View File

@@ -729,7 +729,13 @@ async function InsertDmsVehicle(socket) {
deliveryDate: moment() deliveryDate: moment()
// .tz(socket.JobData.bodyshop.timezone) // .tz(socket.JobData.bodyshop.timezone)
.format("YYYYMMDD"), .format("YYYYMMDD"),
licensePlateNo: String(socket.JobData.plate_no) licensePlateNo:
socket.JobData.plate_no === null
? null
: String(socket.JobData.plate_no).replace(/([^\w]|_)/g, "")
.length === 0
? null
: String(socket.JobData.plate_no)
.replace(/([^\w]|_)/g, "") .replace(/([^\w]|_)/g, "")
.toUpperCase(), .toUpperCase(),
make: socket.txEnvelope.dms_make, make: socket.txEnvelope.dms_make,