{"version":3,"sources":["options/jobLabourTypes.js","components/Jobs/Labour/FormView.jsx","containers/Jobs/Labour/FormView.js","actions/jobs/jobLabour.js"],"names":["Operator","Supplier","PADDING_TOP","paddingTop","FormView","React","constructor","props","_this","super","this","state","transformSaveItemParams","_ref","_labourRate$rate","item","values","startTime","stopTime","timeType","actualHours","labourRateId","labourDate","labourRate","jobLabourRates","find","one","id","startMoment","tryParseMoment","ZERO_HOUR","year","month","date","stopMoment","hours","round","Math","abs","diff","max","clone","toJSON","timeSpan","concat","format","t","labourRateDescription","description","toLocaleCurrency","rate","totalCost","moment","startOf","add","getItemId","_this$state$item","_this$props$linkTarge","linkTargetRecord","Boolean","fetchItem","async","itemId","arguments","length","undefined","_operators$value$data","_operators$value","_suppliers$value$data","_suppliers$value","responses","Promise","all","getItem","catch","error","_this$props$onCancel","_this$props","onCancel","call","resourceNotFound","newItem","labourType","getSettings","type","settingsType","cloneDeep","value","data","operators","suppliers","getJobLabourRates","jobLabourRateIds","getOperators","operatorIds","performedById","getSuppliers","supplierIds","tryParseInt","getStorageItem","get","setState","fieldSettings","items","showError","setItemValue","name","produce","draft","_labourRate$rate2","_draft$operators","_draft$suppliers","set","setStorageItem","performedByName","displayName","form","setFieldsValue","searchOperators","response","search","searchSuppliers","handleSubmit","createHandleSubmit","debounce","DEBOUNCE","componentDidMount","render","_this$state$jobLabour","_operators$items","_suppliers$items","_jsx","_Spin","createLabel","createLabelFactory","createFieldDecorator","createFieldFactory","readOnly","isReadOnly","_jsxs","_Form","layout","colon","onSubmit","stopEvent","children","className","ValidationError","errors","validationErrors","Item","label","Select","onChange","allowClear","map","each","Option","getOptionProps","Object","entries","labourTypes","_ref2","key","dropdownRender","createDropdownRender","onSearch","showSearch","filter","createFilterUserSuppliers","DatePicker","Row","gutter","Col","xs","style","_Radio","checked","e","_TimePicker","disabled","use12Hours","InputNumber","step","_Input","formatValue","displayFormat","dtoFieldName","_Button","onClick","_Tooltip","title","placement","htmlType","loading","saveAndCloseButtonLoading","create","createChildFormViewContainer","actions","extraDispatchToProps","dispatch","params","jobLabourRateActions","getOptions","operatorActions","pageIndex","pageSize","active","supplierActions","Component","createChildActions","entityNames","jobs"],"mappings":"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","file":"static/js/18.e692d9c8.chunk.js","sourcesContent":["export default {\r\n Operator: 'operator',\r\n Supplier: 'supplier',\r\n}\r\n","import * as React from 'react'\r\nimport { Form, Input, Spin, Button, Radio, Tooltip, TimePicker } from 'antd'\r\nimport { debounce, round, set, get, cloneDeep } from 'lodash'\r\nimport produce from 'immer'\r\nimport moment from 'moment'\r\nimport { showError, resourceNotFound, ValidationError } from 'helpers/errors'\r\nimport { tryParseMoment, ZERO_HOUR } from 'helpers/dateTime'\r\nimport {\r\n createLabelFactory,\r\n createFieldFactory,\r\n createHandleSubmit,\r\n createDropdownRender,\r\n isReadOnly,\r\n} from 'helpers/formViews'\r\nimport { formatValue } from 'helpers/listViews'\r\nimport labourTypes from 'options/jobLabourTypes'\r\nimport { tryParseInt, DEBOUNCE } from 'helpers/utils'\r\nimport { t, toLocaleCurrency } from 'helpers/i18n'\r\nimport { createFilterUserSuppliers } from 'helpers/auth'\r\nimport { stopEvent } from 'helpers/events'\r\nimport { getStorageItem, setStorageItem } from 'helpers/localStorage'\r\nimport Select, { Option, getOptionProps } from 'elements/Select'\r\nimport InputNumber from 'elements/InputNumber'\r\nimport DatePicker from 'elements/DatePicker'\r\nimport { Row, Col } from 'elements/Grid'\r\n\r\nconst PADDING_TOP = { paddingTop: '28px' }\r\n\r\nclass FormView extends React.Component {\r\n state = {}\r\n\r\n constructor(props) {\r\n super(props)\r\n\r\n this.handleSubmit = createHandleSubmit(this)\r\n this.searchOperators = debounce(this.searchOperators, DEBOUNCE)\r\n this.searchSuppliers = debounce(this.searchSuppliers, DEBOUNCE)\r\n }\r\n\r\n transformSaveItemParams = ({ item, values }) => {\r\n const { startTime, stopTime, timeType, actualHours, labourRateId, labourDate } = { ...item, ...values }\r\n const labourRate = this.state.jobLabourRates.find((one) => one.id === labourRateId)\r\n const startMoment = tryParseMoment(startTime, ZERO_HOUR).year(2000).month(1).date(1)\r\n const stopMoment = tryParseMoment(stopTime, ZERO_HOUR).year(2000).month(1).date(1)\r\n const hours =\r\n timeType === 'StartStop'\r\n ? round(Math.abs(startMoment.diff(stopMoment, 'minutes')) / 60.0, 2)\r\n : Math.max(actualHours, 0)\r\n\r\n return {\r\n startTime: startMoment.clone().toJSON(),\r\n stopTime: stopMoment.clone().toJSON(),\r\n actualHours: hours,\r\n timeSpan:\r\n timeType === 'StartStop'\r\n ? `${startMoment.format('h:mm A')} To ${stopMoment.format('h:mm A')}`\r\n : t('na'),\r\n labourRateDescription: labourRate\r\n ? `${labourRate.description} (${toLocaleCurrency(labourRate?.rate)}/hr)`\r\n : '',\r\n totalCost: hours * (labourRate?.rate ?? 0),\r\n labourDate: moment(labourDate).startOf('day').add(12, 'hours').toJSON(),\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchItem()\r\n }\r\n\r\n getItemId = () => [this.state.item?.id, this.props.linkTargetRecord?.id].find(Boolean)\r\n\r\n fetchItem = async ({ itemId = this.getItemId() } = {}) => {\r\n try {\r\n const responses = await Promise.all([\r\n itemId\r\n ? this.props.getItem(itemId).catch((error) => {\r\n this.props.onCancel?.()\r\n throw error\r\n })\r\n : !this.props.linkTargetRecord\r\n ? this.props.newItem({\r\n timeType: 'Duration',\r\n labourType: 'Operator',\r\n actualHours: 0,\r\n startTime: ZERO_HOUR,\r\n stopTime: ZERO_HOUR,\r\n labourDate: moment().startOf('day').add(12, 'hours').toJSON(),\r\n totalCost: 0,\r\n })\r\n : resourceNotFound(this),\r\n this.props.getSettings({ type: this.props.settingsType }),\r\n ])\r\n\r\n const item = cloneDeep(responses[0].value.data)\r\n\r\n item.startTime = tryParseMoment(item.startTime || ZERO_HOUR)\r\n item.stopTime = tryParseMoment(item.stopTime || ZERO_HOUR)\r\n\r\n const [jobLabourRates, operators, suppliers] = await Promise.all([\r\n this.props.getJobLabourRates({ jobLabourRateIds: item.labourRateId ? [item.labourRateId] : [] }),\r\n this.props.getOperators({\r\n operatorIds:\r\n item.labourType === 'Operator' && item.performedById ? [item.performedById] : undefined,\r\n }),\r\n this.props.getSuppliers({\r\n supplierIds:\r\n item.labourType === 'Supplier' && item.performedById ? [item.performedById] : undefined,\r\n }),\r\n ])\r\n\r\n if (!item.id && !item.labourRateId) {\r\n item.labourRateId =\r\n tryParseInt(getStorageItem('jobs.formView.labour.formView.labourRateId')) ||\r\n get(jobLabourRates, 'value.data.items[0].id')\r\n }\r\n\r\n this.setState({\r\n item,\r\n fieldSettings: responses[1].value.data.fieldSettings,\r\n jobLabourRates: jobLabourRates.value.data.items,\r\n operators: operators?.value?.data ?? {},\r\n suppliers: suppliers?.value?.data ?? {},\r\n })\r\n } catch (error) {\r\n showError({ error })\r\n }\r\n }\r\n\r\n setItemValue = (name, value) =>\r\n this.setState(\r\n produce((draft) => {\r\n set(draft.item, name, value)\r\n\r\n if (name === 'labourRateId') {\r\n setStorageItem('jobs.formView.labour.formView.labourRateId', value)\r\n }\r\n\r\n if (name === 'labourType') {\r\n draft.item.performedById = null\r\n draft.item.performedByName = ''\r\n }\r\n\r\n if (name === 'performedById') {\r\n if (draft.item.labourType === 'Operator' && draft.operators?.items) {\r\n draft.item.performedByName = draft.operators.items.find((one) => one.id === value).displayName\r\n }\r\n\r\n if (draft.item.labourType === 'Supplier' && draft.suppliers?.items) {\r\n draft.item.performedByName = draft.suppliers.items.find((one) => one.id === value).displayName\r\n }\r\n }\r\n\r\n if (name === 'actualHours') {\r\n draft.item.timeSpan = 'N/A'\r\n draft.item.startTime = ZERO_HOUR\r\n draft.item.stopTime = ZERO_HOUR\r\n }\r\n\r\n if (name === 'timeType' && value === 'Duration') {\r\n draft.item.startTime = ZERO_HOUR\r\n draft.item.stopTime = ZERO_HOUR\r\n }\r\n\r\n if (name === 'startTime' || name === 'stopTime') {\r\n const startMoment = tryParseMoment(draft.item.startTime, ZERO_HOUR).year(2000).month(1).date(1)\r\n const stopMoment = tryParseMoment(draft.item.stopTime, ZERO_HOUR).year(2000).month(1).date(1)\r\n\r\n draft.item.actualHours = round(Math.abs(startMoment.diff(stopMoment, 'minutes')) / 60.0, 2)\r\n }\r\n\r\n const labourRate = draft.jobLabourRates.find((one) => one.id === draft.item.labourRateId)\r\n draft.item.totalCost = draft.item.actualHours * (labourRate?.rate ?? 0)\r\n\r\n const { labourRateId, labourType, performedById, labourDate, startTime, stopTime, actualHours } =\r\n draft.item\r\n\r\n this.props.form.setFieldsValue({\r\n labourRateId,\r\n labourType,\r\n performedById,\r\n labourDate,\r\n startTime,\r\n stopTime,\r\n actualHours,\r\n })\r\n })\r\n )\r\n\r\n searchOperators = async (search) => {\r\n try {\r\n const { item } = this.state\r\n const response = await this.props.getOperators({\r\n search,\r\n operatorIds: item.performedById ? [item.performedById] : undefined,\r\n })\r\n\r\n this.setState({ operators: response.value.data })\r\n } catch (error) {\r\n showError({ error })\r\n }\r\n }\r\n\r\n searchSuppliers = async (search) => {\r\n try {\r\n const { item } = this.state\r\n const response = await this.props.getSuppliers({\r\n search,\r\n supplierIds: item.performedById ? [item.performedById] : undefined,\r\n })\r\n\r\n this.setState({ suppliers: response.value.data })\r\n } catch (error) {\r\n showError({ error })\r\n }\r\n }\r\n\r\n render() {\r\n const { item, fieldSettings, operators, suppliers } = this.state\r\n\r\n if (!item || !fieldSettings) {\r\n return