{"version":3,"file":"ProcentBar.VD5SoAXm.js","sources":["../../src/data/keikka/processClass.js","../../src/pages/steps/StepProcess/components/ProcentBar.jsx"],"sourcesContent":["import { hashCode, isValidDate } from \"src/components/js/statics1\";\r\nimport { sendTilausvahvistus_exported } from \"./handleKeikka\";\r\nimport mailClass from \"../system/mailClass\";\r\nimport stepLogClass from \"../stepLog/stepLogClass\";\r\nimport { deleteStepLogMessagesByType, confirmStepLogType } from \"../stepLog/stepLogMessageClass\";\r\n\r\nexport default class ProcessClass {\r\n constructor(keikkaData, personId) {\r\n this.personId = personId;\r\n this.keikkaData = keikkaData;\r\n this.stepLog = new stepLogClass(keikkaData.keikkaId);\r\n this.isImported = { confirmDate: null, isConfirmed: false };\r\n\r\n this._pumppuVarattu = undefined;\r\n this._betoniVarattu = undefined;\r\n this._tilausLähetetty = undefined;\r\n this._betonitoimijaTilausVastaanotettu = undefined;\r\n this._tyomaaOsoiteHyväksytty = undefined;\r\n this._asiakasHyväksytty = undefined;\r\n this._tilausToimitettu = undefined;\r\n this._kellonaikaVahvistettu = undefined;\r\n this._tilausvahvistusLähetetty = undefined;\r\n this.socket = undefined;\r\n }\r\n async initProcess(token, socket) {\r\n this.socket = socket;\r\n await this.stepLog.init(token, socket);\r\n // isImported = jos on tuotu pumi.fi:stä\r\n this.isImported = this.stepLog.isImported;\r\n }\r\n // #region tilaus:luonti aloitettu\r\n get luontiAloitettu() {\r\n if (this._luontiAloitettu === undefined) {\r\n this._luontiAloitettu = this.stepLog.getStepLogTypeStatus(15);\r\n this._luontiAloitettu.isConfirmed = true;\r\n }\r\n return this._luontiAloitettu;\r\n }\r\n // #endregion\r\n // #region kellonaika valittu -> käsittely:Toimitusajankohta hyväksytty\r\n // tilaus:kellonaika valitu\r\n get kellonaikaValittu() {\r\n return { isConfirmed: isValidDate(this.keikkaData.pumppu.pumppuAika) };\r\n }\r\n // käsittely: Toimitusajankohta hyväksytty\r\n get kellonaikaVahvistettu() {\r\n if (this.isImported.isConfirmed) {\r\n return { isConfirmed: true, confirmDate: this.isImported.confirmDate };\r\n }\r\n if (this._kellonaikaVahvistettu === undefined) {\r\n this._kellonaikaVahvistettu = this.stepLog.getStepLogTypeStatus(17);\r\n }\r\n return this._kellonaikaVahvistettu;\r\n }\r\n kellonAikaVahvista() {\r\n confirmStepLogType(this.keikkaData.keikkaId, 17, this.socket, true);\r\n this._kellonaikaVahvistettu.isConfirmed = true;\r\n this._kellonaikaVahvistettu.confirmDate = new Date();\r\n }\r\n kellonAikaHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 17, this.socket);\r\n this._kellonaikaVahvistettu.isConfirmed = false;\r\n this._kellonaikaVahvistettu.confirmDate = null;\r\n }\r\n // #endregion\r\n // #region asiakas valittu -> käsittely:Asiakas hyväksytty\r\n get asiakasValittu() {\r\n return { isConfirmed: this.keikkaData.asiakas.asiakasId > 0 ? true : false };\r\n }\r\n asiakasHyväksy() {\r\n confirmStepLogType(this.keikkaData.keikkaId, 19, this.socket, true);\r\n this._asiakasHyväksytty.isConfirmed = true;\r\n this._asiakasHyväksytty.confirmDate = new Date();\r\n }\r\n asiakasHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 19, this.socket);\r\n this._asiakasHyväksytty.isConfirmed = false;\r\n this._asiakasHyväksytty.confirmDate = null;\r\n }\r\n get asiakasHyväksytty() {\r\n if (this._asiakasHyväksytty === undefined)\r\n this._asiakasHyväksytty = this.stepLog.getStepLogTypeStatus(19);\r\n return this._asiakasHyväksytty;\r\n }\r\n // #endregion\r\n // #region osoite valittu -> käsittely:Työmaaosoite hyväksytty -> tilaus:betoinitoimijat valittu\r\n get toimitusOsoiteValittu() {\r\n return { isConfirmed: this.keikkaData.tyomaa.tyomaaOsoite1 ? true : false };\r\n }\r\n get tyomaaOsoiteHyväksytty() {\r\n if (this._tyomaaOsoiteHyväksytty === undefined)\r\n this._tyomaaOsoiteHyväksytty = this.stepLog.getStepLogTypeStatus(18);\r\n return this._tyomaaOsoiteHyväksytty;\r\n }\r\n async toimitusOsoiteHyväksy() {\r\n await confirmStepLogType(this.keikkaData.keikkaId, 18, this.socket, true);\r\n }\r\n toimitusOsoiteHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 18, this.socket);\r\n }\r\n get betoniToimijatValittu() {\r\n return {\r\n isConfirmed:\r\n this.keikkaData.betoniToimittaja.asiakasId > 0 &&\r\n this.keikkaData.pumppuToimittaja.asiakasId > 0,\r\n };\r\n }\r\n // #endregion\r\n // #region puomi ja linja valittu\r\n get puomiValittu() {\r\n return {\r\n isConfirmed: this.keikkaData.pumppu.puomiError() ? false : true,\r\n };\r\n }\r\n get linjaValittu() {\r\n return {\r\n isConfirmed: this.keikkaData.pumppu.linjaError() ? false : true,\r\n };\r\n }\r\n // #endregion\r\n // #region betonimäärä valittu\r\n get betoniMääräTäytetty() {\r\n if (this.keikkaData.betoni.length === 0) return { isConfirmed: false };\r\n for (let i = 0; i < this.keikkaData.betoni.length; i++) {\r\n if (this.keikkaData.betoni[i].m3 == null) return { isConfirmed: false };\r\n }\r\n return { isConfirmed: true };\r\n }\r\n // #endregion\r\n // #region betonilaatu valittu\r\n get betoniTiedotTäytetty() {\r\n if (this.keikkaData.betoni.length === 0) return { isConfirmed: false };\r\n for (let i = 0; i < this.keikkaData.betoni.length; i++) {\r\n if (this.keikkaData.betoni[i].betoniError()) return { isConfirmed: false };\r\n }\r\n return { isConfirmed: true };\r\n }\r\n // #endregion\r\n // #region tilaus lähetetty\r\n get tilausLähetetty() {\r\n if (this._tilausLähetetty === undefined)\r\n this._tilausLähetetty = this.stepLog.getStepLogTypeStatus(1);\r\n return this._tilausLähetetty;\r\n }\r\n // #endregion\r\n\r\n // #region käsittely:tilaus vastaanotettu\r\n get betonitoimijaTilausVastaanotettu() {\r\n if (this._betonitoimijaTilausVastaanotettu === undefined)\r\n this._betonitoimijaTilausVastaanotettu = this.stepLog.getStepLogTypeStatus(2);\r\n return this._betonitoimijaTilausVastaanotettu;\r\n }\r\n // #endregion\r\n // #region käsittely:Pumppu varattu\r\n get pumppuVarattu() {\r\n if (this.isImported.isConfirmed) return { isConfirmed: true };\r\n if (this._pumppuVarattu === undefined)\r\n this._pumppuVarattu = this.stepLog.getStepLogTypeStatus(6);\r\n return this._pumppuVarattu;\r\n }\r\n pumppuHyväksy() {\r\n confirmStepLogType(this.keikkaData.keikkaId, 6, this.socket, true);\r\n this._pumppuVarattu.isConfirmed = true;\r\n this._pumppuVarattu.confirmDate = new Date();\r\n }\r\n pumppuHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 6, this.socket);\r\n this._pumppuVarattu.isConfirmed = false;\r\n this._pumppuVarattu.confirmDate = null;\r\n }\r\n // #endregion\r\n // #region käsittely:Betoni varattu\r\n get betoniVarattu() {\r\n if (this.isImported.isConfirmed) return { isConfirmed: true };\r\n if (this._betoniVarattu === undefined)\r\n this._betoniVarattu = this.stepLog.getStepLogTypeStatus(5);\r\n return this._betoniVarattu;\r\n }\r\n betoniHyväksy() {\r\n confirmStepLogType(this.keikkaData.keikkaId, 5, this.socket, true);\r\n this._betoniVarattu.isConfirmed = true;\r\n this._betoniVarattu.confirmDate = new Date();\r\n }\r\n betoniHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 5, this.socket);\r\n this._betoniVarattu.isConfirmed = false;\r\n this._betoniVarattu.confirmDate = null;\r\n }\r\n // #endregion\r\n // #region toimitus:tilaus on toimitusvalmis\r\n get tilausHyväksytty() {\r\n if (this._tilausHyväksytty === undefined)\r\n this._tilausHyväksytty = this.stepLog.getStepLogTypeStatus(3);\r\n return this._tilausHyväksytty;\r\n }\r\n tilausHyväksy() {\r\n // pumppuToimittajaHyväksyyTilauksen(this.keikkaData, this.personId, token);\r\n confirmStepLogType(this.keikkaData.keikkaId, 3, this.socket, true);\r\n this._tilausHyväksytty.isConfirmed = true;\r\n this._tilausHyväksytty.confirmDate = new Date();\r\n }\r\n tilausHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 3, this.socket);\r\n this._tilausHyväksytty.isConfirmed = false;\r\n this._tilausHyväksytty.confirmDate = null;\r\n }\r\n // #endregion\r\n // #region toimitus:tilausvahvistus lähetetty\r\n get tilausvahvistusLähetetty() {\r\n if (this._tilausvahvistusLähetetty === undefined)\r\n this._tilausvahvistusLähetetty = this.stepLog.isTilausvahvistusLähetetty;\r\n return this._tilausvahvistusLähetetty;\r\n }\r\n\r\n tilausvahvistusLähetä(token, socket) {\r\n const thisMail = new mailClass(this.keikkaData);\r\n thisMail.emailToEmail = this.keikkaData.pumppuToimittaja.asiakasContactPersonEmail;\r\n sendTilausvahvistus_exported(thisMail, this.keikkaData, this.personId, token, socket);\r\n }\r\n\r\n tilausvahvistusHyväksy() {\r\n confirmStepLogType(this.keikkaData.keikkaId, 20, this.socket, true);\r\n this._tilausvahvistusLähetetty.isConfirmed = true;\r\n this._tilausvahvistusLähetetty.confirmDate = new Date();\r\n }\r\n tilausvahvistusHylkää() {\r\n deleteStepLogMessagesByType(this.keikkaData.keikkaId, 20, this.socket);\r\n this._tilausvahvistusLähetetty.isConfirmed = false;\r\n this._tilausvahvistusLähetetty.confirmDate = null;\r\n }\r\n // #endregion\r\n // #region toimitus:tilaus on toimitettu\r\n get tilausToimitettu() {\r\n if (this._tilausToimitettu === undefined) {\r\n this._tilausToimitettu = this.stepLog.getStepLogTypeStatus(21);\r\n if (!this._tilausToimitettu.isConfirmed && this.keikkaData.tila.keikkaTilaId == 9)\r\n this._tilausToimitettu.isConfirmed = true;\r\n }\r\n return this._tilausToimitettu;\r\n }\r\n //#endregion\r\n\r\n // #region percentages\r\n get asiakasLuoTilaustaPercent() {\r\n let cnt = 9;\r\n let done = 0;\r\n\r\n /* luonti aloitettu */\r\n if (this.luontiAloitettu.isConfirmed) done++;\r\n /* asiakas valittu */\r\n if (this.keikkaData.asiakas.asiakasId > 0) done++;\r\n /* Toimitusosoite valittu */\r\n if (this.keikkaData.tyomaa.tyomaaId > 0) done++;\r\n /* betonivalmistaja valittu */\r\n if (this.keikkaData.betoniToimittaja.asiakasId > 0) done++;\r\n /* pumpputpimittaja valittu */\r\n if (this.keikkaData.betoniToimittaja.asiakasId > 0) done++;\r\n /* puomi valittu */\r\n if (this.keikkaData.pumppu.isPuomiSelected) done++;\r\n /* linja valittu */\r\n if (this.keikkaData.pumppu.isLinjaSelected) done++;\r\n /* kellonaika valittu */\r\n if (this.kellonaikaValittu.isConfirmed) done++;\r\n /* betonitiedot valittu */\r\n for (let i = 0; i < this.keikkaData.betoni.length; i++) {\r\n const betoni = this.keikkaData.betoni[i];\r\n cnt++;\r\n if (betoni.m3 > 0) done++;\r\n cnt++;\r\n if (betoni.laatuError() === null) done++;\r\n cnt++;\r\n if (betoni.rasitusError() === null) done++;\r\n }\r\n /* tilaus lähetetty */\r\n if (this.tilausLähetetty.isConfirmed) done++;\r\n\r\n const c = Math.round((done / cnt) * 100);\r\n return c;\r\n }\r\n get betoniToimijaKäsitteleeTilaustaPercent() {\r\n const cnt = 8;\r\n let done = 0;\r\n\r\n if (this.betonitoimijaTilausVastaanotettu.isConfirmed) done++;\r\n if (this.tyomaaOsoiteHyväksytty.isConfirmed) done++;\r\n if (this.asiakasHyväksytty.isConfirmed) done++;\r\n if (this.tilausHyväksytty.isConfirmed) done++;\r\n if (this.pumppuVarattu.isConfirmed) done++;\r\n if (this.betoniVarattu.isConfirmed) done++;\r\n if (this.kellonaikaVahvistettu.isConfirmed) done++;\r\n if (this.tilausvahvistusLähetetty.isFound) done++;\r\n return Math.round((done / cnt) * 100);\r\n }\r\n get tilausToimitetaanPercent() {\r\n const cnt = 2;\r\n let done = 0;\r\n if (this.tilausHyväksytty.isConfirmed) done++;\r\n if (this.tilausToimitettu.isConfirmed) done++;\r\n return Math.round((done / cnt) * 100);\r\n }\r\n // #endregion\r\n get hash() {\r\n let _json = \"\";\r\n _json += JSON.stringify(this._pumppuVarattu);\r\n _json += JSON.stringify(this._betoniVarattu);\r\n _json += JSON.stringify(this._tilausLähetetty);\r\n _json += JSON.stringify(this._betonitoimijaTilausVastaanotettu);\r\n _json += JSON.stringify(this._tyomaaOsoiteHyväksytty);\r\n _json += JSON.stringify(this._asiakasHyväksytty);\r\n _json += JSON.stringify(this._tilausToimitettu);\r\n _json += JSON.stringify(this._tilausHyväksytty);\r\n _json += JSON.stringify(this._kellonaikaVahvistettu);\r\n _json += JSON.stringify(this._tilausVas);\r\n _json += JSON.stringify(this._tilausvahvistusLähetetty);\r\n _json += JSON.stringify(this._luontiAloitettu);\r\n _json += JSON.stringify(this._kellonaikaValittu);\r\n const _hash = hashCode(_json);\r\n return _hash;\r\n }\r\n}\r\n","import { useEffect, useState } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { LinearProgress, Typography } from \"@mui/material\";\r\n\r\nconst styles = {\r\n fullWidth: { width: \"100%\" },\r\n maxSize: { width: \"100%\", height: \"100%\" },\r\n};\r\n\r\nexport default function ProcentBar(props) {\r\n const [procent, setProgress] = useState(props.procent || 0);\r\n\r\n useEffect(() => {\r\n setProgress(props.procent);\r\n }, [props.procent]);\r\n\r\n return (\r\n
\r\n \r\n \r\n {procent}%\r\n \r\n
\r\n );\r\n}\r\n\r\nProcentBar.propTypes = {\r\n procent: PropTypes.number,\r\n isLoading: PropTypes.bool,\r\n};\r\n"],"names":["ProcessClass","constructor","keikkaData","personId","this","stepLog","stepLogClass","keikkaId","isImported","confirmDate","isConfirmed","_pumppuVarattu","undefined","_betoniVarattu","_tilausLähetetty","_betonitoimijaTilausVastaanotettu","_tyomaaOsoiteHyväksytty","_asiakasHyväksytty","_tilausToimitettu","_kellonaikaVahvistettu","_tilausvahvistusLähetetty","socket","initProcess","token","init","luontiAloitettu","_luontiAloitettu","getStepLogTypeStatus","kellonaikaValittu","isValidDate","pumppu","pumppuAika","kellonaikaVahvistettu","kellonAikaVahvista","confirmStepLogType","Date","kellonAikaHylkää","deleteStepLogMessagesByType","asiakasValittu","asiakas","asiakasId","asiakasHyväksy","asiakasHylkää","asiakasHyväksytty","toimitusOsoiteValittu","tyomaa","tyomaaOsoite1","tyomaaOsoiteHyväksytty","toimitusOsoiteHyväksy","toimitusOsoiteHylkää","betoniToimijatValittu","betoniToimittaja","pumppuToimittaja","puomiValittu","puomiError","linjaValittu","linjaError","betoniMääräTäytetty","betoni","length","i","m3","betoniTiedotTäytetty","betoniError","tilausLähetetty","betonitoimijaTilausVastaanotettu","pumppuVarattu","pumppuHyväksy","pumppuHylkää","betoniVarattu","betoniHyväksy","betoniHylkää","tilausHyväksytty","_tilausHyväksytty","tilausHyväksy","tilausHylkää","tilausvahvistusLähetetty","isTilausvahvistusLähetetty","tilausvahvistusLähetä","thisMail","mailClass","emailToEmail","asiakasContactPersonEmail","sendTilausvahvistus_exported","tilausvahvistusHyväksy","tilausvahvistusHylkää","tilausToimitettu","tila","keikkaTilaId","asiakasLuoTilaustaPercent","cnt","done","tyomaaId","isPuomiSelected","isLinjaSelected","laatuError","rasitusError","c","Math","round","betoniToimijaKäsitteleeTilaustaPercent","isFound","tilausToimitetaanPercent","hash","_json","JSON","stringify","_tilausVas","_kellonaikaValittu","_hash","hashCode","styles","fullWidth","width","ProcentBar","props","procent","setProgress","useState","useEffect","style","children","LinearProgress","variant","value","jsxs","Typography","align","propTypes","PropTypes","number","isLoading","bool"],"mappings":"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"}