import React, { useEffect } from "react"; import { Alert, Card, Table } from "antd"; import { t } from "i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { selectJobReadOnly } from "../../redux/application/application.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors"; import CurrencyFormatter from "../../utils/CurrencyFormatter"; import { alphaSort } from "../../utils/sorters"; const mapStateToProps = createStructuredSelector({ //currentUser: selectCurrentUser bodyshop: selectBodyshop, jobRO: selectJobReadOnly }); const mapDispatchToProps = (dispatch) => ({ //setUserLanguage: language => dispatch(setUserLanguage(language)) }); export default connect(mapStateToProps, mapDispatchToProps)(JobCloseRGuardSublet); export function JobCloseRGuardSublet({ job, jobRO, bodyshop, form, warningCallback }) { const subletsNotDone = job?.joblines.filter( (j) => (j.part_type === "PAS" || j.part_type === "PASL") && (!j.sublet_completed || !j.sublet_ignored) ); const columns = [ { title: t("joblines.fields.line_desc"), dataIndex: "line_desc", fixed: "left", key: "line_desc", sorter: (a, b) => alphaSort(a.line_desc, b.line_desc), onCell: (record) => ({ className: record.manual_line && "job-line-manual", style: { ...(record.critical ? { boxShadow: " -.5em 0 0 #FFC107" } : {}) } }), ellipsis: true }, { title: t("joblines.fields.act_price"), dataIndex: "act_price", key: "act_price", sorter: (a, b) => a.act_price - b.act_price, ellipsis: true, render: (text, record) => {record.act_price} }, { title: t("joblines.fields.part_qty"), dataIndex: "part_qty", key: "part_qty" }, { title: t("joblines.fields.notes"), dataIndex: "notes", key: "notes" } ]; useEffect(() => { if (subletsNotDone.length > 0) { warningCallback({ key: "sublet", warning: t("jobs.labels.outstanding_sublets") }); } }, [subletsNotDone.length, warningCallback]); return ( {subletsNotDone.length > 0 && ( )} ); }