import { Card, Col, Row, Space, Tag } from "antd"; import { WarningFilled, ExclamationCircleFilled, PauseCircleOutlined, } from "@ant-design/icons"; import React, { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { Link } from "react-router-dom"; import { createStructuredSelector } from "reselect"; import { selectJobReadOnly } from "../../redux/application/application.selectors"; import { setModalContext } from "../../redux/modals/modals.actions"; import { selectBodyshop } from "../../redux/user/user.selectors"; import CurrencyFormatter from "../../utils/CurrencyFormatter"; import ChatOpenButton from "../chat-open-button/chat-open-button.component"; import DataLabel from "../data-label/data-label.component"; import JobAltTransportChange from "../job-at-change/job-at-change.component"; import JobEmployeeAssignments from "../job-employee-assignments/job-employee-assignments.container"; import ProductionListColumnProductionNote from "../production-list-columns/production-list-columns.productionnote.component"; import "./jobs-detail-header.styles.scss"; import JobsRelatedRos from "../jobs-related-ros/jobs-related-ros.component"; import { DateTimeFormatter } from "../../utils/DateFormatter"; import ProductionListColumnComment from "../production-list-columns/production-list-columns.comment.component"; import { OwnerNameDisplayFunction } from "../owner-name-display/owner-name-display.component"; const mapStateToProps = createStructuredSelector({ jobRO: selectJobReadOnly, bodyshop: selectBodyshop, }); const mapDispatchToProps = (dispatch) => ({ setPrintCenterContext: (context) => dispatch(setModalContext({ context: context, modal: "printCenter" })), }); const colSpan = { xs: { span: 24, }, sm: { span: 24, }, md: { span: 12, }, lg: { span: 6, }, xl: { span: 6, }, }; export function JobsDetailHeader({ job, bodyshop, disabled }) { const { t } = useTranslation(); const jobInPostProduction = useMemo(() => { return bodyshop.md_ro_statuses.post_production_statuses.includes( job.status ); }, [job.status, bodyshop.md_ro_statuses.post_production_statuses]); const vehicleTitle = `${job.v_model_yr || ""} ${job.v_color || ""} ${job.v_make_desc || ""} ${job.v_model_desc || ""}`.trim(); const ownerTitle = OwnerNameDisplayFunction(job).trim(); return (
{job.status} {job.inproduction && ( {t("jobs.labels.inproduction")} )} {job.suspended && ( )} {job.production_vars && job.production_vars.alert ? ( ) : null} {job.status === bodyshop.md_ro_statuses.default_scheduled && job.scheduled_in ? ( {job.scheduled_in} ) : null} {job.ins_co_nm} {job.clm_no} {job.po_number} {job.clm_total} / {job.owner_owing} {job.alt_transport} {job.cccontracts.length > 0 && ( {job.cccontracts.map((c) => ( {`${c.agreementnumber} - ${c.courtesycar.fleetnumber} ${c.courtesycar.year} ${c.courtesycar.make} ${c.courtesycar.model}`} ))} )} {(job.inproduction || jobInPostProduction) && ( )} {job.special_coverage_policy && ( {t("jobs.labels.specialcoveragepolicy")} )} {job.ca_gst_registrant && ( {t("jobs.fields.ca_gst_registrant")} )}
{ownerTitle.length > 0 ? ownerTitle : t("owner.labels.noownerinfo")} } >
{`${job.ownr_addr1 || ""} ${job.ownr_addr2 || ""} ${ job.ownr_city || "" } ${job.ownr_st || ""} ${job.ownr_zip || ""}`} {job.ownr_ea || ""}
{vehicleTitle.length > 0 ? vehicleTitle : t("vehicles.labels.novehinfo")} ) : ( ) } >
{`${job.plate_no || t("general.labels.na")} (${`${ job.plate_st || t("general.labels.na") }`})`} {`${job.v_vin || t("general.labels.na")}`} {job.vehicle.notes && ( {job.vehicle.notes} )} {job.vehicle.v_paint_codes && ( {Object.keys(job.vehicle.v_paint_codes).map((key, idx) => ( {job.vehicle.v_paint_codes[key]} ))} )}
); } export default connect(mapStateToProps, mapDispatchToProps)(JobsDetailHeader);