import { useQuery } from "@apollo/client"; import { Form, Input, InputNumber, Select, Switch } from "antd"; import React from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { GET_LINE_TICKET_BY_PK } from "../../graphql/jobs-lines.queries"; import { selectAuthLevel, selectBodyshop, } from "../../redux/user/user.selectors"; import EmployeeSearchSelect from "../employee-search-select/employee-search-select.component"; import FormDatePicker from "../form-date-picker/form-date-picker.component"; import FormDateTimePicker from "../form-date-time-picker/form-date-time-picker.component"; import JobSearchSelect from "../job-search-select/job-search-select.component"; import LaborAllocationsTable from "../labor-allocations-table/labor-allocations-table.component"; import LayoutFormRow from "../layout-form-row/layout-form-row.component"; import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component"; import { HasRbacAccess } from "../rbac-wrapper/rbac-wrapper.component"; import TimeTicketList from "../time-ticket-list/time-ticket-list.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, authLevel: selectAuthLevel, }); const mapDispatchToProps = (dispatch) => ({}); export default connect( mapStateToProps, mapDispatchToProps )(TimeTicketModalComponent); export function TimeTicketModalComponent({ form, bodyshop, authLevel, employeeAutoCompleteOptions, isEdit, employeeSelectDisabled, }) { const { t } = useTranslation(); const CostCenterSelect = ({ emps, value, ...props }) => { return ( ); }; const MemoInput = ({ value, ...props }) => { return ( ); }; return (
{() => ( )} { const emps = employeeAutoCompleteOptions && employeeAutoCompleteOptions.filter((e) => e.id === value)[0]; form.setFieldsValue({ flat_rate: emps && emps.flat_rate }); }} /> prev.employeeid !== cur.employeeid} > {() => { const employeeId = form.getFieldValue("employeeid"); const emps = employeeAutoCompleteOptions && employeeAutoCompleteOptions.filter((e) => e.id === employeeId)[0]; return ( ); }} {() => ( )} ({ async validator(rule, value) { if (value) { const prodHrs = getFieldValue("productivehrs"); if (prodHrs < 0 && value !== 0) return Promise.reject( t("timetickets.labels.zeroactualnegativeprod") ); else { return Promise.resolve(); } } else { return Promise.resolve(); } }, }), ]} > { <> ({ validator(rule, value) { const clockon = getFieldValue("clockon"); if (!value) return Promise.resolve(); if (!clockon && value) return Promise.reject( t("timetickets.validation.clockoffwithoutclockon") ); if ( value && value.isSameOrAfter && !value.isSameOrAfter(clockon) ) return Promise.reject( t("timetickets.validation.clockoffmustbeafterclockon") ); return Promise.resolve(); }, }), ]} > } {() => ( )} {() => ( )}
); } export function LaborAllocationContainer({ jobid }) { const { loading, data: lineTicketData } = useQuery(GET_LINE_TICKET_BY_PK, { variables: { id: jobid }, skip: !jobid, fetchPolicy: "network-only", nextFetchPolicy: "network-only", }); if (loading) return ; if (!lineTicketData) return null; return (
); }