diff --git a/client/src/components/jobs-convert-button/jobs-convert-button.component.jsx b/client/src/components/jobs-convert-button/jobs-convert-button.component.jsx index 29160eff3..9fce25ec7 100644 --- a/client/src/components/jobs-convert-button/jobs-convert-button.component.jsx +++ b/client/src/components/jobs-convert-button/jobs-convert-button.component.jsx @@ -1,7 +1,8 @@ import { useMutation } from "@apollo/client"; import { Button, Form, Input, Popover, Select, Space, Switch } from "antd"; import axios from "axios"; -import React, { useState } from "react"; +import { some } from "lodash"; +import React, { useCallback, useState } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; @@ -19,7 +20,14 @@ const mapStateToProps = createStructuredSelector({ jobRO: selectJobReadOnly }); const mapDispatchToProps = (dispatch) => ({ - insertAuditTrail: ({ jobid, operation, type }) => dispatch(insertAuditTrail({ jobid, operation, type })) + insertAuditTrail: ({ jobid, operation, type }) => + dispatch( + insertAuditTrail({ + jobid, + operation, + type + }) + ) }); export function JobsConvertButton({ bodyshop, job, refetch, jobRO, insertAuditTrail, parentFormIsFieldsTouched }) { @@ -29,6 +37,7 @@ export function JobsConvertButton({ bodyshop, job, refetch, jobRO, insertAuditTr const { t } = useTranslation(); const [form] = Form.useForm(); const notification = useNotification(); + const allFormValues = Form.useWatch([], form); const handleConvert = async ({ employee_csr, category, ...values }) => { if (parentFormIsFieldsTouched()) { @@ -71,6 +80,8 @@ export function JobsConvertButton({ bodyshop, job, refetch, jobRO, insertAuditTr setLoading(false); }; + const submitDisabled = useCallback(() => some(allFormValues, (v) => v === undefined), [allFormValues]); + const popMenu = (
- @@ -233,11 +247,6 @@ export function JobsConvertButton({ bodyshop, job, refetch, jobRO, insertAuditTr loading={loading} onClick={() => { setOpen(true); - form.setFieldsValue({ - driveable: true, - towin: false, - employee_csr: job.employee_csr - }); }} > {t("jobs.actions.convert")} diff --git a/client/src/components/task-upsert-modal/task-upsert-modal.container.jsx b/client/src/components/task-upsert-modal/task-upsert-modal.container.jsx index 6fa023352..3d7acd06a 100644 --- a/client/src/components/task-upsert-modal/task-upsert-modal.container.jsx +++ b/client/src/components/task-upsert-modal/task-upsert-modal.container.jsx @@ -1,6 +1,6 @@ import { useMutation, useQuery } from "@apollo/client"; import { Form, Modal } from "antd"; -import React, { useEffect, useState } from "react"; +import React, { useEffect, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; @@ -255,9 +255,13 @@ export function TaskUpsertModalContainer({ bodyshop, currentUser, taskUpsert, to } }; + const taskTitle = useMemo(() => { + return existingTask ? t("tasks.actions.edit") : t("tasks.actions.new"); + }, [existingTask, t]); + return ( {taskTitle}} open={open} okText={t("general.actions.save")} width="50%" diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index 2f03dded6..ce321517d 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -380,11 +380,11 @@ "md_parts_order_comment": "Parts Orders Comments", "md_parts_scan": { "caseInsensitive": "Case Insensitive", - "expression": "", - "field": "Field", - "flags": "", - "operation": "Operation", - "value": "Value" + "expression": "", + "field": "Field", + "flags": "", + "operation": "Operation", + "value": "Value" }, "md_payment_types": "Payment Types", "md_referral_sources": "Referral Sources", @@ -715,15 +715,15 @@ "workingdays": "Working Days" }, "operations": { - "contains": "Contains", - "ends_with": "Ends With", - "equals": "Equals", - "greater_than": "Greater Than", - "less_than": "Less Than", - "not_equals": "Not Equals", - "starts_with": "Starts With" - }, - "successes": { + "contains": "Contains", + "ends_with": "Ends With", + "equals": "Equals", + "greater_than": "Greater Than", + "less_than": "Less Than", + "not_equals": "Not Equals", + "starts_with": "Starts With" + }, + "successes": { "areyousure": "Are you sure you want to continue?", "defaultviewcreated": "Default view created successfully.", "save": "Shop configuration saved successfully. ", @@ -1437,13 +1437,13 @@ "adjustment": "Adjustment", "ah_detail_line": "Mark as Detail Labor Line (Autohouse Only)", "alt_partno": "Alt Part #", - "amount": "Amount", + "amount": "Amount", "assigned_team": "Team", "assigned_team_name": "Team {{name}}", "create_ppc": "Create PPC?", "db_price": "List Price", "include_in_part_cnt": "Include in Parts Status Count", - "lbr_types": { + "lbr_types": { "LA1": "LA1", "LA2": "LA2", "LA3": "LA3", @@ -3071,7 +3071,7 @@ "production_by_repair_status": "Production by Status", "production_by_repair_status_one": "Production filtered by Status", "production_by_ro": "Production by RO", - "production_by_target_date": "Production by Target Date", + "production_by_target_date": "Production by Scheduled Completion", "production_by_technician": "Production by Technician", "production_by_technician_one": "Production filtered by Technician", "production_not_production_status": "Production not in Production Status", @@ -3081,7 +3081,8 @@ "purchase_return_ratio_grouped_by_vendor_detail": "Purchase & Return Ratio by Vendor (Detail)", "purchase_return_ratio_grouped_by_vendor_summary": "Purchase & Return Ratio by Vendor (Summary)", "purchases_by_cost_center_detail": "Purchases by Cost Center (Detail)", - "purchases_by_cost_center_summary": "Purchases by Cost Center (Summary)","purchases_by_date_excel": "Purchases by Date - Excel", + "purchases_by_cost_center_summary": "Purchases by Cost Center (Summary)", + "purchases_by_date_excel": "Purchases by Date - Excel", "purchases_by_date_range_detail": "Purchases by Date - Detail", "purchases_by_date_range_summary": "Purchases by Date - Summary", "purchases_by_ro_detail_date": "Purchases by RO - Detail", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index c39122001..5b06b1d6f 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -380,11 +380,11 @@ "md_parts_order_comment": "", "md_parts_scan": { "caseInsensitive": "", - "expression": "", - "field": "", + "expression": "", + "field": "", "flags": "", - "operation": "", - "value": "" + "operation": "", + "value": "" }, "md_payment_types": "", "md_referral_sources": "", @@ -715,15 +715,15 @@ "workingdays": "" }, "operations": { - "contains": "", - "ends_with": "", - "equals": "", - "greater_than": "", - "less_than": "", - "not_equals": "", - "starts_with": "" - }, - "successes": { + "contains": "", + "ends_with": "", + "equals": "", + "greater_than": "", + "less_than": "", + "not_equals": "", + "starts_with": "" + }, + "successes": { "areyousure": "", "defaultviewcreated": "", "save": "", @@ -1437,13 +1437,13 @@ "adjustment": "", "ah_detail_line": "", "alt_partno": "", - "amount": "", + "amount": "", "assigned_team": "", "assigned_team_name": "", "create_ppc": "", "db_price": "Precio de base de datos", "include_in_part_cnt": "", - "lbr_types": { + "lbr_types": { "LA1": "", "LA2": "", "LA3": "", @@ -3082,7 +3082,7 @@ "purchase_return_ratio_grouped_by_vendor_summary": "", "purchases_by_cost_center_detail": "", "purchases_by_cost_center_summary": "", - "purchases_by_date_excel": "", + "purchases_by_date_excel": "", "purchases_by_date_range_detail": "", "purchases_by_date_range_summary": "", "purchases_by_ro_detail_date": "", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index 0fd5d7cfa..faf2d46d7 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -380,11 +380,11 @@ "md_parts_order_comment": "", "md_parts_scan": { "caseInsensitive": "", - "expression": "", - "field": "", + "expression": "", + "field": "", "flags": "", - "operation": "", - "value": "" + "operation": "", + "value": "" }, "md_payment_types": "", "md_referral_sources": "", @@ -715,15 +715,15 @@ "workingdays": "" }, "operations": { - "contains": "", - "ends_with": "", - "equals": "", - "greater_than": "", - "less_than": "", - "not_equals": "", - "starts_with": "" - }, - "successes": { + "contains": "", + "ends_with": "", + "equals": "", + "greater_than": "", + "less_than": "", + "not_equals": "", + "starts_with": "" + }, + "successes": { "areyousure": "", "defaultviewcreated": "", "save": "", @@ -1437,13 +1437,13 @@ "adjustment": "", "ah_detail_line": "", "alt_partno": "", - "amount": "", + "amount": "", "assigned_team": "", "assigned_team_name": "", "create_ppc": "", "db_price": "Prix de la base de données", "include_in_part_cnt": "", - "lbr_types": { + "lbr_types": { "LA1": "", "LA2": "", "LA3": "", @@ -3082,7 +3082,7 @@ "purchase_return_ratio_grouped_by_vendor_summary": "", "purchases_by_cost_center_detail": "", "purchases_by_cost_center_summary": "", - "purchases_by_date_excel": "", + "purchases_by_date_excel": "", "purchases_by_date_range_detail": "", "purchases_by_date_range_summary": "", "purchases_by_ro_detail_date": "", diff --git a/server/job/job-totals-USA.js b/server/job/job-totals-USA.js index 356636c36..4e889a658 100644 --- a/server/job/job-totals-USA.js +++ b/server/job/job-totals-USA.js @@ -818,6 +818,7 @@ function CalculateTaxesTotals(job, otherTotals) { PAG: Dinero(), PAO: Dinero(), PAS: Dinero(), + PASL: Dinero(), PAP: Dinero(), PAM: Dinero(),