{"version":3,"sources":["maps/touch/app/view/touch/app/view/ResetPwd.js","maps/touch/app/view/touch/app/view/RegisterAccount.js","maps/touch/app/view/touch/app/view/ProcessusCategories.js","maps/touch/app/templates/chai/touch/app/templates/chai/CellarTaskTemplates.js","maps/touch/app/templates/chai/touch/app/templates/chai/ContainerHistoryTemplates.js","maps/touch/app/templates/chai/touch/app/templates/chai/ContainerTemplates.js","maps/touch/app/templates/chai/touch/app/templates/chai/FormEntretienTemplates.js","maps/touch/app/templates/chai/touch/app/templates/chai/LotHistoryTemplates.js","maps/touch/app/templates/chai/touch/app/templates/chai/OtMaintenanceTemplates.js","maps/touch/app/templates/vigne/touch/app/templates/vigne/IntakeTicketTemplates.js","maps/touch/app/templates/touch/app/templates/HistoryTemplates.js","maps/touch/app/templates/touch/app/templates/FormTemplates.js","maps/touch/app/templates/touch/app/templates/OtTemplates.js","maps/touch/app/templates/touch/app/templates/TemplateFactory.js","maps/touch/app/constant/cellarTask/touch/app/constant/cellarTask/ContainerScanStatus.js"],"names":["ResetPwd","show","formResetPwd","Ext","create","flex","cls","height","Viewport","isSmall","scrollable","defaults","labelWidth","items","xtype","name","labelAlign","label","d2e","trad","padding","style","html","VERSION","VERSION_FREEMIUM","btnCancel","Button","text","handler","popupResetPwd","destroy","btnResetPwd","ui","getFields","mail","getValue","username","test","setMasked","message","submit","url","prefixVar","method","failure","Msg","alert","framework_translator","focus","success","form","response","emptyFn","title","Toolbar","docked","Panel","modal","floating","centered","hideOnMaskTap","width","layout","type","align","pack","listeners","hide","panel","opts","add","RegisterAccount","let","cgu_url","formRegisterAccount","USER_LOCALE","indexOf","margin","minHeight","required","requiredCls","autoComplete","PASSWORD_COMPLEXITY_INVALID","checked","change","theToggle","newValue","btnSubmitRegister","setDisabled","btnCancelRegister","popupRegisterAccount","disabled","allFormValues","getValues","Object","entries","map","value","filter","length","RegExp","PASSWORD_COMPLEXITY_REGEX","password","passwordverification","gtag_report_conversion","reset","getItems","findBy","item","config","Processus","CATEGORIE","VIGNE","CHAI","RH","LOGISTIQUE","PARAM_PROCESSUS","MAINTENANCE","ADMINISTRATIF","QUALITE","CONDITIONNEMENT","userRightsMenus","window","P2W","rightsMenus","loadUserRights","PROCESS2WINESTATUS_ONLINE","Promise","resolve","await","localDatabase","getProm","Dwr","fetch","UsrDroitsManager","getMobileMenus","then","dwrResult","APPMODULES","DECO_LECTURE","set","obj","Date","getTime","dwrUserRights","decode","userRights","flags","rights","menus","forEach","menu","isVisible","visible","level","VOIR","action","LIRE","steps","apply","assign","console","error","catch","ux","Utils","isProcessusDisableByRights","processusCategorieId","Boolean","values","categorie","getUserProcessusCategorieAvailable","this","getActiveProcessusCategorieByUserParamProcessus","find","id","ParamProcessusManager","getActiveIdProcessus","paramProcessusId","getProcessusCategorieByUserParamProcessusId","userParamProcessusId","USER_PROCESS","SCREEN","getScreenByProcessusCategorie","CellarTaskTemplates","listItem","previewHeader","previewCenter","previewEmployee","previewConsignes","previewCommentaires","previewContenants","compiled","commentDateFormat","formatVolume","localeVolume","MathUtils","getFloatWithLOCALEFormat","v","commentaire","contenants_SIMPLE_WORK","contenants_MANY_TO_ONE","contenants_ONE_TO_MANY","contenants_ADDITIVE","contenants_BULK_REMOVAL","contenants_BULK_ENTRY","contenants_TANK_CLEANING","contenants_TOPPING","collapseButton","open","date","moment","dateFormat","localeData","longDateFormat","replace","format","join","getContainerVolAfterTransfer","contenant","lossVolume","gainVolume","volume","volumeTransferred","vol","volInit","sign","unit","systemUnitVolume","n","warnVol","flat","SYSTEMUNITVOLUME","editAddContainerHeader","editAddContainerScanned","editAddContainerItem","editContainerItem","editRemoveContainerHeader","editRemoveContainerItem","ContainerHistoryTemplates","previewContent","previewByType","TemplateFactory","History","previewEmployes","previewCommentaire","formatAnalysis","analysisFormat","formatQuantity","quantityFormat","formatRate","rateFormat","volumeFormat","formatTransfert","forceNegatif","numberFormat","previewContainertState","previewProducts","Lot","previewAnalyzes","iconCleanned","status","frame","icon","iconDisinfected","maintenanceStateSummary","state","Container","cleaned","disinfected","productsSummary","products","product","ContainerTemplates","XTemplate","getBody","getSize","round","Number","num","val","toFixed","calculateFill","Math","ceil","volNom","isFull","customData","hasResaLdv","transfert","scanToast","fillProgress","containerState","containerInfos","containerLot","colorIcon","color","cuve","readOnlyIcon","FormMaintenanceTemplates","contenantItemTpl","tplInfos","contenantsListItemSelected","contenantsListItem","otProdListAddButton","otProdListItem","formatNumber","codeLot","prodLotEmplac","prodLot","code","prodProduit","paramsByUnite","valCode","otProdLotItem","stock","otMesByCuveItem","completion","LotHistoryTemplates","previewContenant","previewTypeTask","previewMovementSimple","previewTransfert","movementOrigin","movementDestination","inventaire","movementRegulation","quantity","rate","OtChaiMaintenanceTemplates","formatDate","DateTimeUtils","getDateFormatter","previewOtData","otCuves","otProds","otMeses","OtTemplates","otPers","unitParam","iconContenant","params","iconParams","data","exec","trim","containers","sort","a","b","chaCuves","nom","toLowerCase","localeCompare","mesures","ot","reduce","mesList","om","hasValue","valText","paramsByValListId","valDate","mesureInList","p","mesMesure","mesure","isComplete","otCuve","concat","produits","prodList","op","prodInList","produit","qteTotal","lots","qte","push","prodEmplac","IntakeTicketTemplates","emptyList","multiParamTextTpl","poids","separator","param","i","condition","separatorCondition","slice","prevParam","getTypePoids","typePoidNet","quantityDecimals","calculPoidNetVehicule","ticket","grossQuantity","tareVehicle","calculPoidNetChargement","grossWeightLoad","tarePackage","packageCount","formatVarietalColor","isCalculated","some","previewInfos","previewParcelle","previewChargement","previewWeighmaster","previewDates","previewFournisseur","previewClient","previewEquipe","previewMesures","formatDateHeure","list","measure","_","isNil","criteria","valueList","opt","formatDateLocale","ligneTpl","COUNTRY_CODE","HistoryTemplates","empty","groupHeader","record","month","monthFormat","get","analysisSummary","analysis","flatMap","details","d","String","ellipsis","precision","forceDecimals","abs","signDisplay","replaceAll","dateString","formatOptions","timeFormat","hour","minute","year","weekDayFormat","day","weekday","end","FormTemplates","Chai","Maintenance","statutOt","processus","CellarTask","IntakeTicket","Form","OT","ContainerScanStatus","constructor","validate","defineProperties","enumerable","writable","withText","VALIDATE","INVALID","NOT_FOUND","SELECTED","ALREADY_SELECTED","USED_ORIGIN","USED_DESTINATION","USED","START_SCAN"],"mappings":"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","file":"../p2w-touch-modules.js","sourcesContent":["/**\n * @author JGC\n * @description Create a popup panel to let a user reset his password\n */\nclass ResetPwd {\n\n static show() {\n return function () {\n\n // Form to submit a password reset\n const formResetPwd = Ext.create('Ext.form.Panel', {\n flex: 1,\n cls: 'list-preview',\n height: Ext.Viewport.isSmall() ? 250 : 120,\n scrollable: false,\n defaults: {\n labelWidth: '30%'\n },\n items: [{\n xtype: 'emailfield',\n name: 'mail',\n labelAlign: Ext.Viewport.isSmall() ? 'top' : 'left',\n label: d2e.trad('connexion.mail')\n },{\n xtype: 'textfield',\n name: 'username',\n labelAlign: Ext.Viewport.isSmall() ? 'top' : 'left',\n label: d2e.trad('header.usr_login')\n },{\n xtype: 'panel',\n padding: '10px 0 0 0',\n style: 'font-style: italic; color: #CCC; font-size: 12px; text-align: right;',\n html: VERSION == VERSION_FREEMIUM ? d2e.trad('password.reset_password.username_instruction') : ''\n }]\n });\n\n // A button to cancel and close the popup\n const btnCancel = new Ext.Button({\n text: d2e.trad('cancel'),\n flex: 1,\n handler: function () {\n popupResetPwd.destroy();\n }\n });\n\n // A button to submit the form to reset the password of an account\n const btnResetPwd = new Ext.Button({\n flex: 1,\n text: d2e.trad('password.reset_password.text'),\n ui: 'confirm',\n handler: function () {\n\n // Verify all entries has a value\n if (!formResetPwd.getFields().mail.getValue() ||\n !formResetPwd.getFields().username.getValue()) {\n Ext.Msg.alert(d2e.form('form.error'), d2e.trad('form.allfieldsneeded'));\n return;\n }\n\n // Verify if the mail is a valid mail\n const eregMail = /^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$/;\n if (!eregMail.test(formResetPwd.getFields().mail.getValue())) {\n Ext.Msg.alert(d2e.form('form.error'), d2e.trad('lbl.touch.bademail'), Ext.emptyFn);\n return;\n }\n\n Ext.Viewport.setMasked({\n xtype: 'loadmask',\n message: d2e.trad('application.loading')\n });\n\n formResetPwd.submit({\n url: prefixVar + 'reinitPassword.do',\n method: 'POST',\n failure: function(){\n Ext.Viewport.setMasked(false);\n Ext.Msg.alert(\n framework_translator['password.reset_password.text'],\n framework_translator['password.reset_password.error']\n );\n formResetPwd.getFields().mail.focus();\n },\n success: function(form, response){\n Ext.Viewport.setMasked(false);\n Ext.Msg.alert(\n framework_translator['password.reset_password.text'],\n framework_translator['password.reset_password.succes'] + ' ' + response.username\n );\n popupResetPwd.destroy();\n }\n });\n }\n });\n\n // Title\n const title = new Ext.Toolbar({\n docked: 'top',\n title: d2e.trad('password.reset_password.text')\n });\n\n // A popup (panel) to contain the form and the buttons\n const popupResetPwd = new Ext.Panel({\n modal: true,\n floating: true,\n centered: true,\n hideOnMaskTap: false,\n cls: 'popover-box',\n width: !Ext.Viewport.isSmall() ? 500 : '95%',\n padding: 10,\n layout: {\n type: 'hbox',\n align: 'stretch'\n },\n items: [title, formResetPwd, {\n xtype: 'toolbar',\n cls: 'list-toolbar',\n docked: 'bottom',\n layout: { pack: 'center' },\n items: [btnCancel, btnResetPwd]\n }],\n listeners: {\n hide: function (panel) {\n panel.destroy();\n },\n show: function (panel, opts) {\n formResetPwd.getFields().mail.focus();\n }\n }\n });\n\n\n // Add the popup (panel) to the viewport to be shown\n Ext.Viewport.add(popupResetPwd);\n popupResetPwd.show();\n }\n }\n}","/**\n * @author JGC\n * @description Create a popup panel to create a new freemium account\n */\nclass RegisterAccount {\n\n static show() {\n return function () {\n\n // Variable avec l'URL de redirection vers les CGUs Freemium\n let cgu_url = 'https://www.process2wine.com/en/tos-freemium';\n if (USER_LOCALE.indexOf('fr') != -1) {\n cgu_url = 'https://www.process2wine.com/fr/cgu-freemium';\n }\n\n // Form to submit a new account creation\n const formRegisterAccount = Ext.create('Ext.form.Panel', {\n flex: 1,\n cls: Ext.Viewport.isSmall() ? 'list-preview small' : 'list-preview',\n layout: 'vbox',\n margin: '20 0 0 0',\n height: Ext.Viewport.isSmall() ? null : '550px',\n minHeight: '300px',\n scrollable: Ext.Viewport.isSmall(),\n defaults: {\n labelWidth: Ext.Viewport.isSmall() ? null : '200px'\n },\n items: [{\n xtype: 'panel',\n padding: Ext.Viewport.isSmall() ? null : '10px 0 0 15px',\n html: ''+d2e.trad('header.prop.info')+''\n },{\n xtype: 'textfield',\n name: 'firstname',\n labelAlign: Ext.Viewport.isSmall() ? 'top' : 'left',\n label: d2e.trad('header.usr_firstName'),\n required: true,\n requiredCls: \"required-field-inscription\",\n autoComplete: true\n },{\n xtype: 'textfield',\n name: 'lastname',\n labelAlign: Ext.Viewport.isSmall() ? 'top' : 'left',\n label: d2e.trad('header.usr_lastName'),\n required: true,\n requiredCls: \"required-field-inscription\",\n autoComplete: true\n },{\n xtype: 'emailfield',\n name: 'mail',\n labelAlign: Ext.Viewport.isSmall() ? 'top' : 'left',\n label: d2e.trad('connexion.mail'),\n required: true,\n requiredCls: \"required-field-inscription\",\n autoComplete: true\n },{\n xtype: 'textfield',\n name: 'wineproperty',\n labelAlign: Ext.Viewport.isSmall() ? 'top' : 'left',\n label: d2e.trad('account.creation.wineproperty'),\n required: true,\n requiredCls: \"required-field-inscription\",\n autoComplete: true\n },{\n xtype: 'textfield',\n name: 'zipcode',\n labelAlign: Ext.Viewport.isSmall() ? 'top' : 'left',\n label: d2e.trad('account.creation.zip_code'),\n required: true,\n requiredCls: \"required-field-inscription\",\n autoComplete: true\n },{\n xtype: 'textfield',\n name: 'phonenumber',\n labelAlign: Ext.Viewport.isSmall() ? 'top' : 'left',\n label: d2e.trad('account.creation.phonenumber'),\n required: true,\n requiredCls: \"required-field-inscription\",\n autoComplete: true\n },{\n xtype: 'panel',\n padding: Ext.Viewport.isSmall() ? '20px 0 0 0' : '10px 0 0 15px',\n html: '
'+d2e.trad('frm.produit.phyto.securite')+''\n },{\n xtype: 'passwordfield',\n labelAlign: Ext.Viewport.isSmall() ? 'top' : 'left',\n name: 'password',\n label: d2e.trad('account.creation.password'),\n required: true,\n requiredCls: \"required-field-inscription\",\n autoComplete: true\n },{\n xtype: 'passwordfield',\n labelAlign: Ext.Viewport.isSmall() ? 'top' : 'left',\n name: 'passwordverification',\n label: d2e.trad('account.creation.password_verification'),\n required: true,\n requiredCls: \"required-field-inscription\",\n autoComplete: true\n },{\n xtype: 'panel',\n padding: '10px 0 0 0',\n style: 'font-style: italic; color: #CCC; font-size: 12px; text-align: right;',\n html: PASSWORD_COMPLEXITY_INVALID\n },{\n xtype: 'panel',\n padding: '10px 0 0 0',\n html: ' '\n },{\n xtype: 'togglefield',\n cls: 'slider',\n name : 'cgu',\n label: d2e.trad('account.creation.cgu_cgv'),\n checked: false,\n labelWidth: '200px',\n listeners: {\n change: function (theToggle, newValue) {\n // Enable / Disable Submit Button depending on CGU Toggle value\n btnSubmitRegister.setDisabled(!newValue);\n }\n }\n },{\n xtype: 'panel',\n padding: Ext.Viewport.isSmall() ? null : '10px 0 0 15px',\n style: 'color: #CCC; font-size: 12px;',\n html: ''+cgu_url+''\n }]\n });\n\n // A button to cancel and close the popup\n const btnCancelRegister = new Ext.Button({\n text: d2e.trad('cancel'),\n flex: 1,\n handler: function () {\n popupRegisterAccount.destroy();\n }\n });\n\n // A button to submit the form to reset the password of an account\n const btnSubmitRegister = new Ext.Button({\n flex: 1,\n text: d2e.trad('account.creation.submit'),\n ui: 'confirm',\n disabled: true,\n handler: function () {\n\n // Get all values from the form in an Object\n const allFormValues = formRegisterAccount.getValues();\n\n // Verify all entries has a value\n if (Object.entries(allFormValues).map(value => value[1]).filter(value => value === \"\").length > 0) {\n Ext.Msg.alert('Erreur', d2e.trad('form.allfieldsneeded'));\n return;\n }\n\n // Verify if the mail is a valid mail\n const regexMail = /^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$/;\n if (!regexMail.test(allFormValues.mail)) {\n Ext.Msg.alert('Erreur', d2e.trad('lbl.touch.bademail'));\n return;\n }\n\n // Verify if the pasword respects the minimum complexity defined in init-params\n const regexPwd = new RegExp(PASSWORD_COMPLEXITY_REGEX, 'gm');\n if (!regexPwd.test(allFormValues.password)) {\n Ext.Msg.alert('Erreur', PASSWORD_COMPLEXITY_INVALID);\n return;\n }\n\n // Verif that passwords are the same\n if (allFormValues.password !== allFormValues.passwordverification) {\n Ext.Msg.alert('Erreur', d2e.trad('lbl.freemium.creation.password.not_identical'));\n return;\n }\n\n Ext.Viewport.setMasked({\n xtype: 'loadmask',\n message: d2e.trad('application.loading')\n });\n\n formRegisterAccount.submit({\n url: prefixVar + 'createFreeUser.do',\n method: 'POST',\n failure: function(form, response){\n Ext.Viewport.setMasked(false);\n Ext.Msg.alert('Oups',\n response.message ? response.message : d2e.trad('lbl.freemium.creation.failure')\n );\n },\n success: function(){\n Ext.Viewport.setMasked(false);\n Ext.Msg.alert(\"\", d2e.trad('lbl.freemium.creation.succes'));\n popupRegisterAccount.destroy();\n gtag_report_conversion();\n }\n });\n\n }\n });\n\n // Title\n const title = new Ext.Toolbar({\n docked: 'top',\n title: d2e.trad('lbl.freemium.creation.link')\n });\n\n // A popup (panel) to contain the form\n const popupRegisterAccount = new Ext.Panel({\n modal: true,\n floating: true,\n centered: true,\n hideOnMaskTap: false,\n cls: 'popover-box',\n width: !Ext.Viewport.isSmall() ? 500 : '95%',\n height: Ext.Viewport.isSmall() ? '95%' : null,\n padding: 10,\n items: [title, formRegisterAccount, {\n xtype: 'toolbar',\n cls: 'list-toolbar',\n docked: 'bottom',\n layout: { pack: 'center' },\n items: [btnCancelRegister, btnSubmitRegister]\n }],\n listeners: {\n hide: function (panel) {\n panel.destroy();\n },\n show: function () {\n formRegisterAccount.reset();\n }\n }\n });\n\n // Add the popup (panel) to the viewport to be shown\n Ext.Viewport.add(popupRegisterAccount);\n formRegisterAccount.getItems().findBy((item) => item.config.name === 'firstname').focus();\n popupRegisterAccount.show();\n }\n }\n}\n","class Processus{\n\n /**\n * Processus categories disponibles sur l'app mobile\n * @typedef {Object} PROCESSUS_CATEGORIE\n * @TYPE {{ VIGNE: 1, CHAI: 2, RH: 3, LOGISTIQUE: 4}}\n * @return {PROCESSUS_CATEGORIE}\n */\n static get CATEGORIE(){\n return {\n VIGNE : 1,\n CHAI : 2,\n RH : 3,\n LOGISTIQUE : 4\n }\n }\n\n /**\n * Param Processus P2W\n * @typedef {Object} PARAM_PROCESSUS_P2W\n * @TYPE {{VIGNE: 1, CHAI: 2, MAINTENANCE: 3, ADMINISTRATIF: 4, QUALITE: 5, CONDITIONNEMENT: 6}}\n * @return {PARAM_PROCESSUS_P2W}\n */\n static get PARAM_PROCESSUS(){\n return {\n VIGNE : 1,\n CHAI : 2,\n MAINTENANCE : 3,\n ADMINISTRATIF : 4,\n QUALITE : 5,\n CONDITIONNEMENT : 6\n }\n }\n\n /**\n * @return {Object | undefined} Variable global pour les droits d'accés des menus pour l'utilisateur\n */\n static get userRightsMenus(){\n return window.P2W && window.P2W.rightsMenus;\n }\n\n /**\n * Chargement et traitement des droint du utilisateur\n * - Création de la variable global P2W avec les définitions des droits d'accès\n * @return {Promise}\n */\n static async loadUserRights() {\n // return early si les droits utilisateur sont déjà traités\n if(Processus.userRightsMenus || !PROCESS2WINESTATUS_ONLINE){\n return Promise.resolve();\n }\n\n // On utilise les données en cache ou on récupère les droits d'accès du utilisateur\n const dataCache = await localDatabase.getProm(\"menu_data\");\n const getUserRights = dataCache ? localDatabase.getProm(\"menu_data\")\n : Dwr.fetch(UsrDroitsManager.getMobileMenus).then(dwrResult => {\n if (APPMODULES.DECO_LECTURE) {\n localDatabase.set(\"menu_data\", dwrResult.obj);\n localDatabase.set(\"menu_lastChange\", new Date().getTime());\n }\n return dwrResult.obj;\n });\n\n return getUserRights\n .then(dwrUserRights => Ext.decode(dwrUserRights))\n .then(userRights => {\n window.P2W = {\n flags: (userRights && userRights.flags) || {},\n rights: {},\n rightsMenus: {}\n };\n\n if (!(userRights && userRights.menus)) {\n console.error(\"L'utilisateur a un problème avec ces droits d'accès\");\n return;\n }\n\n userRights.menus && userRights.menus\n .forEach(menu => {\n const isVisible = menu.visible && menu.level >= P2W.flags.VOIR;\n menu.disabled = !menu.action || menu.level < P2W.flags.LIRE;\n menu.title = menu.title || menu.name;\n menu.visible = isVisible;\n\n menu.steps && Ext.apply(P2W.rights, menu.steps);\n delete menu.steps;\n\n Object.assign(P2W.rightsMenus, {[menu.name]: menu});\n });\n\n })\n .catch(dwrResult => Ext.ux.Utils.error(dwrResult.message));\n }\n\n /**\n * @param {PROCESSUS_CATEGORIE} processusCategorieId - id de la categorie du processus\n * @return {boolean} Si la categorie n'a pas d'options disponibles selon P2W.rightsMenus\n */\n static isProcessusDisableByRights(processusCategorieId){\n return Boolean(Processus.userRightsMenus && !Object.values(Processus.userRightsMenus)\n .filter(menu => menu.categorie === processusCategorieId && menu.level).length);\n }\n\n /**\n * Récupération de la categorie du processus active pour le user ou la première categorie disponible selon P2W.rightsMenus\n * @return {Promise>} equivalence entre user paramProcessus et le id de la categorie du processus\n * sur la mobile\n */\n static getUserProcessusCategorieAvailable(){\n return this.getActiveProcessusCategorieByUserParamProcessus()\n .then(processusCategorieId => this.isProcessusDisableByRights(processusCategorieId)\n ? Object.values(Processus.CATEGORIE).find(id => !this.isProcessusDisableByRights(id)) || 1\n : processusCategorieId\n );\n }\n\n /**\n * Récupération de la categorie du processus active pour le user\n * @return {Promise>} equivalence entre user paramProcessus et le id de la categorie du processus\n * sur la mobile\n */\n static getActiveProcessusCategorieByUserParamProcessus(){\n /**\n * @property {function} ParamProcessusManager.getActiveIdProcessus - méthode de récuperation du paramProcessus du utilisateur\n */\n return !PROCESS2WINESTATUS_ONLINE ? Promise.resolve(Processus.CATEGORIE.VIGNE)\n : Dwr.fetch(ParamProcessusManager.getActiveIdProcessus)\n .then(paramProcessusId => this.getProcessusCategorieByUserParamProcessusId(paramProcessusId));\n }\n\n /**\n * @param {PARAM_PROCESSUS_P2W} [userParamProcessusId]\n * @return {PROCESSUS_CATEGORIE} equivalence entre user paramProcessus et la categorie du processus sur la mobile\n *\n * @property {PARAM_PROCESSUS_P2W} window.USER_PROCESS - variable global du paramProcessus du utilisateur\n */\n static getProcessusCategorieByUserParamProcessusId(userParamProcessusId = window.USER_PROCESS){\n return {\n [Processus.PARAM_PROCESSUS.VIGNE] : Processus.CATEGORIE.VIGNE,\n [Processus.PARAM_PROCESSUS.CHAI] : Processus.CATEGORIE.CHAI,\n [Processus.PARAM_PROCESSUS.MAINTENANCE] : Processus.CATEGORIE.VIGNE,\n [Processus.PARAM_PROCESSUS.ADMINISTRATIF] : Processus.CATEGORIE.RH,\n [Processus.PARAM_PROCESSUS.QUALITE] : Processus.CATEGORIE.RH,\n [Processus.PARAM_PROCESSUS.CONDITIONNEMENT] : Processus.CATEGORIE.CHAI\n }[userParamProcessusId] || 1;\n }\n\n /**\n * Référence d'écran du processus\n * @typedef {Object} PROCESSUS_ECRAN\n * @TYPE {{ VIGNE: 'home/vineyard', CHAI: 'home/cellar', RH: 'home/hr', LOGISTIQUE: 'home/tasting'}}\n * @return {PROCESSUS_ECRAN}\n */\n static get SCREEN(){\n return {\n VIGNE : 'home/vineyard',\n CHAI : 'home/cellar',\n RH : 'home/hr',\n LOGISTIQUE : 'home/tasting'\n }\n }\n\n /**\n * @param {PROCESSUS_ECRAN} processusCategorieId\n * @return {PROCESSUS_ECRAN} référence du écran pour la categorie (fallback vigne)\n */\n static getScreenByProcessusCategorie(processusCategorieId){\n return {\n [Processus.CATEGORIE.VIGNE] : Processus.SCREEN.VIGNE,\n [Processus.CATEGORIE.CHAI] : Processus.SCREEN.CHAI,\n [Processus.CATEGORIE.RH] : Processus.SCREEN.RH,\n [Processus.CATEGORIE.LOGISTIQUE] : Processus.SCREEN.LOGISTIQUE\n }[processusCategorieId] || Processus.SCREEN.VIGNE;\n }\n}","class CellarTaskTemplates{\n\n static get listItem(){\n return `\n
\n
\n {heure}\n \n fa-solidfa-regular fa-user\">\n {workOrderProposalTask.cellarTask.employees.length}\n \n
\n
{statutPropositionOt:this.translate}
\n
\n
{workOrderProposalTask.task} {id}
\n
{workOrderProposalTask.description:ellipsis(80)}
\n
\n
\n `;\n }\n\n static get previewHeader() {\n return `\n \n
\n

{workOrderProposalTask.task} {id}

\n

{workOrderProposalTask.description:ellipsis(80)}

\n
\n \n {workOrderProposalTask.farm}\n
\n
{statutPropositionOt:this.translate}
\n
\n
\n `;\n }\n\n static get previewCenter(){\n return Ext.create('Ext.XTemplate', `\n \n
\n ${this.previewEmployee}\n ${this.previewConsignes}\n ${this.previewCommentaires}\n ${this.previewContenants}\n
\n
\n `, {\n compiled: true,\n commentDateFormat: this.commentDateFormat,\n formatVolume: this.formatVolume,\n localeVolume: (v)=> MathUtils.getFloatWithLOCALEFormat(v, 2, false)\n });\n }\n\n static get previewEmployee(){\n return `\n
\n

\n \n ${d2e.trad(\"menu.employees\")}\n \n {workOrderProposalTask.cellarTask.employees.length}\n \n

\n

\n \n {lastName} {firstName}\n \n ${d2e.trad(\"lbl.nonAffected\")}\n \n

\n
\n `;\n }\n\n static get previewConsignes(){\n return `\n \n
\n

${d2e.trad(\"lbl.consigne\")}

\n

{workOrderProposalTask.comment}

\n
\n
\n `;\n }\n\n static get previewCommentaires(){\n return `\n \n
\n

\n \n ${d2e.trad(\"frm.commentaire.multi\")}\n {workOrderProposalTask.cellarTask.comments.length}\n

\n
    \n \n
  • ${this.commentaire}
  • \n
    \n
\n
\n
\n `;\n }\n\n static get commentaire(){\n return `\n
\n {employeeName}\n {date:this.commentDateFormat}\n
\n {comment}\n `;\n }\n\n static get previewContenants(){\n return `\n \n ${this.contenants_SIMPLE_WORK}\n \n ${this.contenants_MANY_TO_ONE}\n \n ${this.contenants_ONE_TO_MANY}\n \n ${this.contenants_ADDITIVE}\n \n ${this.contenants_BULK_REMOVAL}\n \n ${this.contenants_BULK_ENTRY}\n \n ${this.contenants_TANK_CLEANING}\n \n ${this.contenants_TOPPING}\n \n `;\n }\n\n static get contenants_SIMPLE_WORK(){\n return `\n
\n

\n \n ${d2e.trad(\"menu.contenants\")}\n \n {workOrderProposalTask.cellarTask.containers.length}\n \n

\n \n ${d2e.trad(\"lbl.contenants.aucunAjoute\")}\n \n \n \n \n \n \n \n
\n {name}
\n {wineLot.name}\n
{instruction}
\n
\n `;\n }\n\n static get contenants_ONE_TO_MANY(){\n return `\n
\n
\n

\n \n ${d2e.trad(\"lbl.contenant.origine\")}\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
${d2e.trad(\"lbl.contenants.aucunAjoute\")}
\n {name}
\n {wineLot.name}\n
{[this.formatVolume(values.volume, values.capacity)]}
\n
{[this.formatVolume(values.volumeTransferred, false, \"-\")]}\n {[this.formatVolume(CellarTaskTemplates.getContainerVolAfterTransfer(values), values.capacity)]}\n
\n \n {[this.formatVolume(values.gainVolume, false, \"+\") + \" / \"]} {gainComment}\n
\n \n {[this.formatVolume(values.lossVolume, false, \"-\") + \" / \"]} {lossComment}\n
\n

\n ${d2e.trad(\"lbl.contenants.destination\")}\n \n {workOrderProposalTask.cellarTask.destinationContainers.length}\n \n

\n
${d2e.trad(\"lbl.contenants.aucunAjoute\")}
\n {name}
\n {wineLot.name}\n
{[this.formatVolume(values.volume, values.capacity)]}
\n
\n {[this.formatVolume(values.volumeTransferred, false, \"+\")]}\n
\n ${d2e.trad(\"lbl.contenant.lotGenere\")} : \n {[values.lotName || d2e.trad(\"lbl.undefined\")]}\n
\n
\n
{[values.lotName || d2e.trad(\"lbl.undefined\")]}
\n {[this.formatVolume(values.volume + values.volumeTransferred, values.capacity)]}\n
\n
\n
\n `;\n }\n\n static get contenants_MANY_TO_ONE(){\n return `\n
\n
\n

\n \n ${d2e.trad(\"lbl.contenants.origine\")}\n \n {workOrderProposalTask.cellarTask.originContainers.length}\n \n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
${d2e.trad(\"lbl.contenants.aucunAjoute\")}
\n {name}
\n {wineLot.name}\n
{[this.formatVolume(values.volume, values.capacity)]}
\n
{[this.formatVolume(values.volumeTransferred, false, \"-\")]}\n {[this.formatVolume(CellarTaskTemplates.getContainerVolAfterTransfer(values), values.capacity)]}\n
\n \n {[this.formatVolume(values.gainVolume, false, \"+\") + \" / \"]} {gainComment}\n
\n \n {[this.formatVolume(values.lossVolume, false, \"-\") + \" / \"]} {lossComment}\n
\n ${this.collapseButton(false)}\n
\n

${d2e.trad(\"lbl.contenant.destination\")}

\n
${d2e.trad(\"lbl.contenants.aucunAjoute\")}
\n {name}
\n {wineLot.name}\n
{[this.formatVolume(values.volume, values.capacity)]}
\n
\n {[this.formatVolume(values.volumeTransferred, false, \"+\")]}\n
\n ${d2e.trad(\"lbl.contenant.lotGenere\")} : \n {[values.lotName || d2e.trad(\"lbl.undefined\")]}\n
\n
\n
{[values.lotName || d2e.trad(\"lbl.undefined\")]}
\n {[this.formatVolume(values.volume + values.volumeTransferred, values.capacity)]}\n
\n
\n
\n `;\n }\n\n\n\n static get contenants_ADDITIVE(){\n return `\n
\n
\n

\n \n ${d2e.trad(\"lbl.produit.oeno\")}\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
${d2e.trad(\"add.product.empty\")}
{workOrderProposalTask.cellarTask.product.name}\n \n {[d2e.trad(\"lbl.undefined\")]}\n \n {workOrderProposalTask.cellarTask.product.quantity:this.localeVolume} {workOrderProposalTask.cellarTask.product.unit}\n \n
{code} / {location}\n \n {[d2e.trad(\"lbl.undefined\")]}\n \n {quantity:this.localeVolume} {parent.workOrderProposalTask.cellarTask.product.unit}\n \n
\n

\n \n ${d2e.trad(\"menu.contenants\")}\n \n {workOrderProposalTask.cellarTask.productContainers.length}\n \n

\n
${d2e.trad(\"lbl.contenants.aucunAjoute\")}
\n {name}
\n {wineLot.name}\n
{[this.formatVolume(values.volume, values.capacity)]}
\n
\n {rate:this.localeVolume} {parent.workOrderProposalTask.cellarTask.product.unit}/{[CellarTaskTemplates.systemUnitVolume]}\n \n {quantity:this.localeVolume} {parent.workOrderProposalTask.cellarTask.product.unit}\n
\n
\n
\n `;\n }\n\n static get contenants_BULK_REMOVAL(){\n return `\n
\n
\n

\n \n ${d2e.trad(\"menu.contenants\")}\n \n {workOrderProposalTask.cellarTask.originContainers.length}\n \n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
${d2e.trad(\"lbl.contenants.aucunAjoute\")}
\n {name}
\n {wineLot.name}\n
{[this.formatVolume(values.volume, values.capacity)]}
\n
{[this.formatVolume(values.volumeTransferred, false, \"-\")]}\n {[this.formatVolume(CellarTaskTemplates.getContainerVolAfterTransfer(values), values.capacity)]}\n
\n \n {[this.formatVolume(values.gainVolume, false, \"+\") + \" / \"]} {gainComment}\n
\n \n {[this.formatVolume(values.lossVolume, false, \"-\") + \" / \"]} {lossComment}\n
\n
\n
\n `;\n }\n\n static get contenants_BULK_ENTRY(){\n return `\n
\n
\n

\n \n ${d2e.trad(\"menu.contenants\")}\n \n {workOrderProposalTask.cellarTask.destinationContainers.length}\n \n

\n \n \n \n \n \n \n \n \n \n \n \n \n
${d2e.trad(\"lbl.contenants.aucunAjoute\")}
\n {name}
\n {wineLot.name}\n
{[this.formatVolume(values.volume, values.capacity)]}
\n
\n {[this.formatVolume(values.volumeTransferred, false, \"+\")]}\n
\n ${d2e.trad(\"lbl.contenant.lotGenere\")} : \n {[values.lotName || d2e.trad(\"lbl.undefined\")]}\n
\n
\n
{[values.lotName || d2e.trad(\"lbl.undefined\")]}
\n {[this.formatVolume(values.volume + values.volumeTransferred, values.capacity)]}\n
\n
\n
\n `;\n }\n\n static get contenants_TANK_CLEANING(){\n // Affichage de l'écran version mobile pour le nettoyage de cuve avec un affichage spécifique pour les tags Nettoyé/Désinfecté et\n // Non nettoyé/Non désinfecté selon l'affichage sur tablette/ordinateur et l'affichage sur téléphone :\n // Pour régler les problèmes de décalage des tags/colspan, on met les tags en une ligne (donc les tags l'un au-dessus de l'autre)\n // en cas d'affichage sur petit écran et en deux colonnes (donc affiché l'un à côté de l'autre) pour les grands écrans\n return `\n
\n
\n

\n \n ${d2e.trad(\"lbl.produit\")}\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
${d2e.trad(\"add.product.empty\")}
{workOrderProposalTask.cellarTask.product.name}\n \n {[d2e.trad(\"lbl.undefined\")]}\n \n {workOrderProposalTask.cellarTask.product.quantity:this.localeVolume} {workOrderProposalTask.cellarTask.product.unit}\n \n
{code} / {location}\n \n {[d2e.trad(\"lbl.undefined\")]}\n \n {quantity:this.localeVolume} {parent.workOrderProposalTask.cellarTask.product.unit}\n \n
\n

\n \n ${d2e.trad(\"menu.contenants\")}\n \n {workOrderProposalTask.cellarTask.cleanedContainers.length}\n \n

\n
${d2e.trad(\"lbl.contenants.aucunAjoute\")}
\n {name}
\n {wineLot.name}\n
{[this.formatVolume(values.volume, values.capacity)]}
\n
\n \n {[d2e.trad(\"lbl.a_nettoyer\")]}\n \n {[d2e.trad(\"lbl.a_nettoyer\")]}\n \n \n {[d2e.trad(\"lbl.a_desinfecter\")]}\n \n {[d2e.trad(\"lbl.a_desinfecter\")]}\n \n \n \n {[d2e.trad(\"lbl.a_nettoyer\")]}\n \n {[d2e.trad(\"lbl.a_nettoyer\")]}\n \n \n \n {[d2e.trad(\"lbl.a_desinfecter\")]}\n \n {[d2e.trad(\"lbl.a_desinfecter\")]}\n \n
\n
\n
\n `;\n }\n\n static get contenants_TOPPING(){\n return `\n
\n
\n

\n \n ${d2e.trad(\"lbl.planifchai.ouillage.contenants_ouillage\")}\n \n {workOrderProposalTask.cellarTask.originContainers.length}\n \n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
${d2e.trad(\"lbl.contenants.aucunAjoute\")}
\n {name}
\n {wineLot.name}\n
{[this.formatVolume(values.volume, values.capacity)]}
\n
{[this.formatVolume(values.volumeTransferred, false, \"-\")]}\n {[this.formatVolume(CellarTaskTemplates.getContainerVolAfterTransfer(values), values.capacity)]}\n
\n ${this.collapseButton(false)}\n
\n

\n \n ${d2e.trad(\"lbl.planifchai.ouillage.contenants_a_ouiller\")}\n \n {workOrderProposalTask.cellarTask.destinationContainers.length}\n \n

\n \n \n \n \n \n \n \n \n \n \n
${d2e.trad(\"lbl.contenants.aucunAjoute\")}
\n {name}
\n {wineLot.name}\n
\n
\n
\n `;\n }\n\n static collapseButton(open){\n return open\n ? ``\n : ``;\n }\n\n static commentDateFormat(date){\n date = moment(date);\n const dateFormat = moment.localeData().longDateFormat('L').replace(/YYYY/g,'YY');\n return [date.format(dateFormat), d2e.trad(\"report.heure.a\"), date.format('LT')].join(\" \")\n }\n\n static getContainerVolAfterTransfer(contenant){\n return contenant.lossVolume || contenant.gainVolume ? 0 : contenant.volume - contenant.volumeTransferred;\n }\n\n static formatVolume(vol = 0, volInit = false, sign, unit = CellarTaskTemplates.systemUnitVolume) {\n const n = (v)=> MathUtils.getFloatWithLOCALEFormat(v, 2, false);\n const warnVol = !sign && vol < 0 ? 'style=\"color:#db4d47\"' : \"\";\n const format = volInit !== false\n ? [``,sign, n(vol),\"\", \"/\", n(volInit), unit]\n : [``,sign, n(vol), unit,\"\"];\n return format.flat().filter(Boolean).join(\" \");\n }\n\n static get systemUnitVolume(){\n return SYSTEMUNITVOLUME === \"hl\" ? \"hL\" : SYSTEMUNITVOLUME === \"gal\" ? \"Gal\" : SYSTEMUNITVOLUME;\n }\n\n // écrans d'édition\n\n static get editAddContainerHeader(){\n return `\n
\n {nContenants}\n {availableCapacity}\n
\n `;\n }\n\n static get editAddContainerScanned(){\n return `\n \n
\n \n {statut.text}\n
\n
\n \n ${this.editAddContainerItem}\n \n `;\n }\n\n static get editContainerItem(){\n return `\n \n \n \n \n \n
{name}
\n
{wineLot.name}
\n
{[CellarTaskTemplates.formatVolume(values.volume, values.capacity)]}
\n
\n
\n `;\n }\n\n static get editAddContainerItem(){\n return `\n
\n ${this.editContainerItem}\n \n \n \n \n \n
\n `;\n }\n\n static get editRemoveContainerHeader(){\n return `\n
\n \n {selection}\n \n {nContenants}\n {availableCapacity}\n \n
\n `;\n }\n\n static get editRemoveContainerItem(){\n return `\n
\n ${this.editContainerItem}\n \n \n \n \n \n \n \n \n \n
\n `;\n }\n}","class ContainerHistoryTemplates{\n\n static get previewContent(){\n return Ext.create('Ext.XTemplate',`\n \n
\n ${this.previewByType}\n ${TemplateFactory.History.previewEmployes}\n ${TemplateFactory.History.previewCommentaire}\n
\n
\n `,\n {\n formatAnalysis: TemplateFactory.History.analysisFormat,\n formatQuantity: TemplateFactory.History.quantityFormat,\n formatRate: TemplateFactory.History.rateFormat,\n formatVolume: TemplateFactory.History.volumeFormat,\n formatTransfert: (v, forceNegatif) => TemplateFactory.History.numberFormat(v,2, SYSTEMUNITVOLUME, true, forceNegatif)\n }\n );\n }\n\n static get previewByType(){\n return `\n \n \n ${this.previewContainertState}\n ${this.previewProducts}\n \n ${this.previewContainertState}\n ${TemplateFactory.History.Lot.previewAnalyzes}\n \n ${this.previewContainertState}\n \n \n ${TemplateFactory.History.Lot.previewByType}\n \n `;\n }\n\n static get previewContainertState(){\n return `\n
\n

\n \n ${d2e.trad(\"menu.contenant\")}\n

\n \n \n \n \n \n \n \n \n
\n \n {name}\n {wineLot.name}\n {[this.formatQuantity(values.wineLot ? values.wineLot.volume : 0)]}{capacity:this.formatVolume}\n \n \n {[TemplateFactory.History.Container.iconCleanned(values.state.cleaned, false, true)]}\n {[TemplateFactory.History.Container.iconDisinfected(values.state.disinfected, false, true)]}\n \n {instruction}
\n
\n `;\n }\n\n static iconCleanned(status, label = true, frame = false){\n const text = status ? \"lbl.nettoye\" : \"lbl.non_nettoye\";\n const cls = status ? \"nettoyage-text\" : \"\";\n const icon = ``;\n const iconTpl = frame ? `${icon}` : icon;\n const labelTpl = label && d2e.trad(text);\n return [iconTpl, labelTpl].filter(Boolean).join(\" \");\n }\n static iconDisinfected(status, label = true, frame = false){\n const text = status ? \"lbl.desinfecte\" : \"lbl.non_desinfecte\";\n const cls = status ? \"desinfection-text\" : \"\";\n const icon = ``;\n const iconTpl = frame ? `${icon}` : icon;\n const labelTpl = label && d2e.trad(text);\n return [iconTpl, labelTpl].filter(Boolean).join(\" \");\n }\n\n static maintenanceStateSummary(state){\n return `${TemplateFactory.History.Container.iconCleanned(state.cleaned)}
${TemplateFactory.History.Container.iconDisinfected(state.disinfected)}`\n }\n\n static get previewProducts(){\n return `\n
\n

\n \n ${d2e.trad(\"frm.produit\")}\n

\n \n \n \n \n \n \n \n \n \n \n \n \n
{name}
\n
\n \n {productLot.code}\n \n  / {productLot.location}\n \n \n {[d2e.trad(\"lbl.touch.aucunlot\")]}\n \n
\n
\n {comment}\n
\n
\n `;\n }\n\n static productsSummary(products){\n return Object.values(products).map(product => product.name).join(\"
\");\n }\n}","class ContainerTemplates {\n\n /**\n * @return {Ext.XTemplate} Template d'un contenant de la liste générique\n */\n static get listItem(){\n return new Ext.XTemplate(\n `\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n
\n
{nom:ellipsis(25)}
\n \t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
background-color:{chaLotActif.paramCouleur.couleurId}\">
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n
\n {chaLotActif.lotId:ellipsis(30)}\n
\n {vol:this.round} / {volNom:this.round} ${d2e.trad(\"header.unite.libelle\")}\n
\n
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t \n \n \n \n \t\n \t \n \t {chaLotActif.paramMillesime.nom}\n \n \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t {chaLotActif.parParamAppellation.appellation:ellipsis(30)}\n \n \n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n \t
\n\t\t\t\t
\n `, {\n compiled: true,\n round: (val) => Number(Ext.num(val, 0).toFixed(2)),\n calculateFill: (values) => Math.ceil(Ext.num(values.vol, 0) / Ext.num(values.volNom, 0) * 100),\n isFull: function (values) {\n // Si le contenant est plein ou qu'il contient une reservation de lot de vin\n if ((Math.ceil(Ext.num(values.vol, 0) / Ext.num(values.volNom, 0) * 100)) >= 100 || values.customData.hasResaLdv) {\n return 'full-container';\n }\n return '';\n }\n });\n }\n\n /**\n * @return {Ext.XTemplate} Template du tranfert d'un contenat\n */\n static get transfert(){\n return new Ext.XTemplate(\n '' +\n '
' +\n '
' +\n (!Ext.Viewport.isSmall() ?\n '' :\n \"\") +\n '{nom:ellipsis(15)}' +\n '
' +\n '
' +\n (!Ext.Viewport.isSmall() ?\n '
' +\n '
' +\n '
background-color:{chaLotActif.paramCouleur.couleurId}\">
' +\n '
' +\n '
' : \"\") +\n '
{chaLotActif.lotId:ellipsis(15)}' +\n '
{vol} / {volNom} ' + d2e.trad(\"header.unite.libelle\") + '' +\n '
' +\n '
' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '', {\n compiled: true,\n calculateFill: (values) => Math.ceil(Ext.num(values.vol, 0) / Ext.num(values.volNom, 0) * 100)\n });\n }\n\n /**\n * @return {Ext.XTemplate} Template du message pour le Toast d'un scan des contenants\n */\n static get scanToast(){\n return new Ext.XTemplate(`\n
\n \n
\n \n \n

{container.nom}

\n
{container.chaLotActif.lotId}
\n
\n {container.vol} / {container.volNom} ${this.systemUnitVolume}\n
\n
\n
\n
\n
background-color:{status.color}\">\n  {status.text}\n
\n
\n `);\n }\n\n /**\n * @return {Ext.XTemplate} Template du header du preview d'un contenant sélectionné\n */\n static get previewHeader() {\n return new Ext.XTemplate(`\n \n
\n ${ContainerTemplates.fillProgress}\n \n \n

{nom}

\n
{chaLotActif.lotId}
\n
\n {vol} / {volNom} ${this.systemUnitVolume}\n
\n
 {paramDossier.nom}
\n
\n
\n
\n `,{compiled: true});\n }\n\n /**\n * @return {string} template de la barre du volume ocupé par le lot de vin\n */\n static get fillProgress(){\n const height = 'height: {[ContainerTemplates.calculateFill(values)]}%;'\n const tplcolor = ' background-color:{chaLotActif.paramCouleur.couleurId};';\n return `\n \n
{[ContainerTemplates.calculateFill(values)]}%
\n
\n
\n
\n
\n `;\n }\n\n /**\n * @return {Ext.XTemplate} Template du centre du preview d'un contenant sélectionné\n */\n static get previewCenter(){\n return Ext.create('Ext.XTemplate', `\n \n
\n ${this.containerState}\n ${this.containerInfos}\n ${this.containerLot}\n
\n
\n `, {\n compiled: true,\n colorIcon: ContainerTemplates.colorIcon,\n icon: ContainerTemplates.icon,\n });\n }\n\n /**\n * @return {string} template de l'état d'un contenant vide\n */\n static get containerState(){\n return `\n \n
\n

${d2e.trad(\"lbl.contenant.etat\")}

\n \n ${d2e.trad(\"ticket_apport.informations.empty\")}\n \n \n \n \n \n \n \n \n
{[this.icon(values.icon)]}{label} : style=\"font-weight:bold;\">{[this.colorIcon(values.color)]}{value}
\n
\n
\n
\n `;\n }\n\n /**\n * @return {string} template des infos du contenant\n */\n static get containerInfos(){\n return `\n
\n

${d2e.trad(\"lbl.contenant.infos\")}

\n \n ${d2e.trad(\"ticket_apport.informations.empty\")}\n \n \n \n \n \n \n \n \n
{label} : style=\"font-weight:bold;\">{value}
\n
\n
\n `;\n }\n\n /**\n * @return {string} template de l'état d'un contenant vide\n */\n static get containerLot(){\n return `\n \n
\n

${d2e.trad(\"lbl.ldv.infos\")}

\n \n ${d2e.trad(\"ticket_apport.informations.empty\")}\n \n \n \n \n \n \n \n \n
{label} : style=\"font-weight:bold;\">{[this.colorIcon(values.color)]} {value}
\n
\n
\n
\n `;\n }\n\n static colorIcon(color){\n const icon = color ? \"fa-solid fa-circle\" : \"fa-light fa-circle-x\";\n return color === false ? \"\" : ContainerTemplates.icon(icon, color || '#666565');\n }\n\n static icon(type, color){\n const style = color ? `style=\"color:${color || '#666565'};\"` : \"\";\n return !type ? \"\" : ` `;\n }\n\n static calculateFill(cuve){\n return Ext.num(Math.ceil(Ext.num(cuve.vol, 0) / Ext.num(cuve.volNom, 0) * 100), 0);\n }\n\n static get systemUnitVolume(){\n return SYSTEMUNITVOLUME === \"hl\" ? \"hL\" : SYSTEMUNITVOLUME === \"gal\" ? \"Gal\" : SYSTEMUNITVOLUME;\n }\n\n static readOnlyIcon(text){\n return `\n
\n \n \n \n ${text}\n
\n `;\n }\n}","class FormMaintenanceTemplates {\n\n static contenantItemTpl(tplInfos){\n return new Ext.XTemplate(`\n
\n \n \n \n
{nom}
\n
{chaLotActif.lotId}
\n {vol:this.round()} / {volNom:this.round()} ${d2e.trad('header.unite.libelle')}\n
\n
\n ${tplInfos}\n
\n `, {\n round: (v)=> MathUtils.getFloatWithLOCALEFormat(v, 2)\n });\n }\n\n static get contenantsListItemSelected(){\n return this.contenantItemTpl(`\n \n \n \n \n \n \n \n \n `);\n }\n static get contenantsListItem(){\n return this.contenantItemTpl(`\n \n \n \n ${d2e.trad(\"lbl.lot.dernier.vide.date\")} : {dateVidange}\n \n \n \n `);\n }\n\n static get otProdListAddButton(){\n return `\n \n \n ${d2e.trad('menu.add_produit')}`;\n }\n\n static get otProdListItem(){\n return Ext.create('Ext.XTemplate',`\n
\n \n {prodProduit.nom} : {qte:this.formatNumber} {prodProduit:this.unit}\n
${d2e.trad(\"lbl.touch.chai.numerodelot\")} : {prodLotEmplac:this.codeLot}\n
\n
\n `, {\n formatNumber: v => MathUtils.getFloatWithLOCALEFormat(v, 3, false),\n codeLot: prodLotEmplac => prodLotEmplac && prodLotEmplac.prodLot && prodLotEmplac.prodLot.code,\n unit: prodProduit => prodProduit && prodProduit.paramsByUnite && prodProduit.paramsByUnite.valCode\n });\n }\n\n static get otProdLotItem(){\n return Ext.create('Ext.XTemplate',`\n {code:htmlEncode}\n
\n \n ${d2e.trad('header.cmd_frns_emplace')} : {prodEmplac.nom}\n \n
\n ${d2e.trad('header.stock')} :\n \n
\n
\n {paramDossier.nom}\n
\n {stock:htmlEncode} \n
\n
\n `, {\n color: stock => stock > 0 ? \"color: #69B055\" : stock < 0 ? \"color: #F46660\" : \"\"\n });\n }\n\n static get otMesByCuveItem(){\n return new Ext.XTemplate(`\n \n \n {nom} \n (\n {paramParams.libelle} - \n {volNom} ${SYSTEMUNITVOLUME}\n - {marque}\n - {paramsByAnneeMesId.lib}\n )\n \n `,\n {\n color: completion => {\n switch(completion) {\n // On affiche un check vert si tous les critères du LDV sont renseignés dans l'analyse\n case 2: return '#68B055';\n // On affiche un check jaune si une partie des critères du LDV sont renseignés dans l'analyse\n case 1: return '#f2da49';\n // On n'affiche pas de check si aucun critère du LDV n'est renseigné dans l'analyse\n default: return 'transparent';\n }\n }\n });\n }\n}\n","class LotHistoryTemplates{\n\n static get previewContent(){\n const LotHistoryTemplates = this;\n return Ext.create('Ext.XTemplate',`\n \n
\n ${this.previewByType}\n ${TemplateFactory.History.previewEmployes}\n ${TemplateFactory.History.previewCommentaire}\n
\n
\n `,\n {\n formatAnalysis: TemplateFactory.History.analysisFormat,\n formatQuantity: TemplateFactory.History.quantityFormat,\n formatRate: TemplateFactory.History.rateFormat,\n formatVolume: TemplateFactory.History.volumeFormat,\n formatTransfert: (v, forceNegatif) => TemplateFactory.History.numberFormat(v,2, SYSTEMUNITVOLUME, true, forceNegatif)\n }\n );\n }\n\n static get previewByType(){\n return `\n \n ${this.previewContenant}\n ${this.previewProducts}\n \n ${this.previewContenant}\n ${this.previewAnalyzes}\n \n ${this.previewTypeTask}\n \n `;\n }\n\n static get previewTypeTask(){\n return `\n \n ${this.previewContenant}\n \n ${this.previewMovementSimple}\n \n ${this.previewMovementSimple}\n \n ${this.previewTransfert}\n \n ${this.previewTransfert}\n \n ${this.previewContenant}\n \n `;\n }\n\n static get previewContenant(){\n return `\n
\n

\n \n ${d2e.trad(\"menu.contenant\")}\n

\n \n \n \n \n \n \n \n \n
\n {name}\n {wineLot.name}\n {wineLot.volume:this.formatQuantity}{capacity:this.formatVolume}\n {instruction}
\n
\n `;\n }\n\n static get previewTransfert(){\n return `\n
\n

\n \n ${d2e.trad(\"lbl.contenant.origine\")}\n

\n \n \n ${this.movementOrigin(true)}\n \n ${this.movementDestination}\n \n
\n

\n \n ${d2e.trad(\"lbl.contenant.destination\")}\n

\n
\n
\n `;\n }\n\n static get previewMovementSimple(){\n return `\n
\n

\n \n ${d2e.trad(\"menu.contenant\")}\n

\n \n \n \n ${this.inventaire}\n \n ${this.movementOrigin()}\n \n ${this.movementDestination}\n \n \n
\n
\n `;\n }\n\n static movementOrigin(forceNegatif){\n return `\n \n \n \n {origin.container.name}
\n {origin.before.lot}\n {origin.before.volume:this.formatQuantity}{origin.container.capacity:this.formatVolume}\n \n \n \n {[this.formatTransfert(values.volumeTransferred, ${forceNegatif})]}\n \n \n \n {origin.after.volume:this.formatQuantity}{origin.container.capacity:this.formatVolume}\n \n \n ${this.movementRegulation}\n `;\n }\n\n static get movementDestination(){\n return `\n \n \n \n {destination.container.name}
\n {destination.before.lot}\n {destination.before.volume:this.formatQuantity}{destination.container.capacity:this.formatVolume}\n \n \n {volumeTransferred:this.formatTransfert}\n
\n ${d2e.trad(\"lbl.contenant.lotGenere\")} : \n {[values.destination.after.lot || d2e.trad(\"lbl.undefined\")]}\n
\n \n \n
{destination.after.lot}
\n {destination.after.volume:this.formatQuantity}{destination.container.capacity:this.formatVolume}\n \n \n ${this.movementRegulation}\n `;\n }\n\n static get inventaire(){\n return `\n \n \n \n {origin.container.name}
\n {origin.before.lot}\n {origin.before.volume:this.formatQuantity}{origin.container.capacity:this.formatVolume}\n \n \n \n {regulation.volume:this.formatTransfert}\n \n
\n {regulation.comment}\n
\n \n \n {origin.after.volume:this.formatQuantity}{origin.container.capacity:this.formatVolume}\n
{regulation.comment}
\n \n \n `;\n }\n\n static get movementRegulation(){\n return `\n \n \n \n {regulation.volume:this.formatTransfert} {regulation.comment}\n \n \n `;\n }\n\n static get previewAnalyzes(){\n return `\n
\n

\n \n ${d2e.trad(\"header.mesures\")}\n

\n \n \n \n \n \n \n \n \n \n \n \n
\n {parent.name}\n \n {[this.formatAnalysis(values.value, parent.type, parent.unit)]}\n
{comment}
\n
\n
\n `;\n }\n\n static get previewProducts(){\n return `\n
\n

\n \n ${d2e.trad(\"menu.produitoeno\")}\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{name}\n {[this.formatQuantity(values.quantity, values.unit, false, 3)]}\n \n {[this.formatRate(values.rate, values.unit)]}\n
\n
\n \n {productLot.code}\n \n  / {productLot.location}\n \n \n {[d2e.trad(\"lbl.touch.aucunlot\")]}\n \n
\n
\n
{[this.formatQuantity(values.quantity, parent.unit, false, 3)]}
\n {comment}\n
\n
\n `;\n }\n\n static productsSummary(products){\n return Object.values(products).map(product =>{\n const name = product.name + \" : \";\n const unit = product.unit || \"\";\n const qty = TemplateFactory.History.numberFormat(product.quantity, 3, unit, false);\n const rate = TemplateFactory.History.numberFormat(product.rate, 3, [unit, SYSTEMUNITVOLUME].join(\"/\"));\n return [name, `${qty}`, `(${rate})`].join(\" \");\n }).join(\"
\");\n }\n}","class OtChaiMaintenanceTemplates {\n\n static get listItem(){\n return new Ext.XTemplate('
{codetravCodetravail.descr:ellipsis(20)}
' +\n '
{descr:ellipsis(20)}
' +\n '
{datePrev:this.formatDate}
',\n {\n compiled: true,\n formatDate: (date) => DateTimeUtils.getDateFormatter()(date)\n });\n }\n\n static get previewOtData() {\n return Ext.create('Ext.XTemplate',`\n
\n ${this.otCuves(true)}\n ${this.otProds(false)}\n ${this.otMeses(false)}\n ${OtTemplates.otPers(false)}\n ${OtTemplates.commentaire(false)}\n
\n `,\n {\n formatQuantity: (v, unitParam)=> [MathUtils.getFloatWithLOCALEFormat(v,2), (unitParam ? unitParam.valCode : \"\")].join(\" \"),\n formatVolume: (v)=> [MathUtils.getFloatWithLOCALEFormat(v,2), SYSTEMUNITVOLUME].join(\" \"),\n iconContenant: params => {\n const iconParams = params && params.data && new RegExp(/(.*?)<\\/image-class>/gs).exec(params.data);\n return (iconParams && iconParams.length > 1 && iconParams[1] && iconParams[1].trim()) || 'icon-cuve';\n },\n containers: otCuves => otCuves.sort((a,b) => a.chaCuves.nom.toLowerCase().localeCompare(b.chaCuves.nom.toLowerCase())),\n mesures: (otMeses, ot) => {\n return otMeses.reduce((mesList, om)=>{\n const hasValue = Boolean(om.val || om.valText || om.paramsByValListId || om.valDate);\n const mesureInList = mesList.find(p => p.id === om.mesMesure.id);\n const mesure = mesureInList || Object.assign({}, om.mesMesure, {completion: 0});\n hasValue && mesure.completion++;\n const isComplete = mesure.completion === ot.otCuve.length;\n const color = !mesure.completion ? '#f46660' : isComplete ? '#68B055' : '#e3c300';\n const icon = !mesure.completion ? 'fa-triangle-exclamation' : 'fa-circle-check';\n mesure.icon = ``;\n return mesureInList ? mesList : mesList.concat(mesure);\n }, []).sort((a,b) => a.nom.toLowerCase().localeCompare(b.nom.toLowerCase()));\n },\n produits: otProds =>{\n return otProds.reduce((prodList, op)=>{\n const prodInList = prodList.find(p => p.id === op.prodProduit.id);\n const produit = prodInList || Object.assign({}, op.prodProduit, {qteTotal: 0, lots: []});\n produit.qteTotal += op.qte;\n op.prodLot && produit.lots.push({\n code: [op.prodLot.code, op.prodEmplac && op.prodEmplac.nom].filter(Boolean).join(\" / \"),\n qte: op.qte\n });\n return prodInList ? prodList : prodList.concat(produit);\n }, []).sort((a,b) => a.nom.toLowerCase().localeCompare(b.nom.toLowerCase()))\n }\n });\n }\n\n static otProds(required = false){\n return `\n \n
\n

\n \n ${d2e.trad(\"frm.produit\")}\n \n {[this.produits(values.otProds).length]}\n \n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{nom}{[this.formatQuantity(values.qteTotal, values.paramsByUnite)]}
{code}{[this.formatQuantity(values.qte, parent.paramsByUnite)]}
\n
\n
\n `;\n }\n\n static otMeses(required = false){\n return `\n \n
\n

\n \n ${d2e.trad(\"header.mesures\")}\n \n {[this.mesures(values.otMeses, values).length]}\n \n

\n

\n \n {icon} {nom}\n \n ${d2e.trad(\"lbl.nodata\")}\n \n

\n
\n
\n `;\n }\n\n static otCuves(){\n return `\n \n
\n

\n \n ${d2e.trad(\"menu.contenants\")}\n {otCuve.length}\n

\n ${d2e.trad(\"lbl.contenants.aucunAjoute\")}\n \n
\n \n \n \n
{chaCuves.nom}
\n
{chaCuves.chaLotActif.lotId}
\n {chaCuves.vol:this.formatVolume()} / {chaCuves.volNom:this.formatVolume()}\n
\n
\n \n \n \n \n \n \n \n \n
\n
\n
\n
\n `;\n }\n}","class IntakeTicketTemplates {\n\n static get emptyList(){\n return `\n
\n \n \n

${d2e.trad(\"lbl.tickets.empty_list\")}

\n
\n
\n `;\n }\n\n static get listItem() {\n return Ext.create('Ext.XTemplate', `\n \n
\n
\n {[moment(values.intakeDate).format('LT')]}\n
\n
\n
\n \n \n \n \n \n
\n {code}
\n ${this.multiParamTextTpl([\"field.name\", \"varietal.name\"])}\n
\n {quantity:this.poids} {unitTitle}\n
\n
\n
{[Array(values.packageCount,values.packageType).join(\" \")]}
\n
\n
\n
\n `, { poids: (val)=> IntakeTicketTemplates.formatQuantity(val)});\n }\n\n static multiParamTextTpl(params, separator = \" | \"){\n return params.map((param, i) =>{\n const condition = `${param}!=undefined && ${param}!=''`;\n const separatorCondition = \"(\"+ params.slice(0,i).map(prevParam => `(${prevParam}!=undefined && ${prevParam}!='')`).join(\" || \") +\") &&\";\n const separatorTpl = !i ? \"\" : `${separator}`;\n return `${separatorTpl} {${param}}`;\n }).join(\"\");\n }\n\n static get previewHeader(){\n return Ext.create('Ext.XTemplate', `\n \n
\n
\n {code}\n ${this.multiParamTextTpl([\"field.name\", \"varietal.name\"])}\n
\n
\n
${this.multiParamTextTpl([\"vintage.code\", \"intakeTypeTitle\"])}
\n
\n \n {[DOSSIER_SELECT.data.nom]}\n
\n
\n {quantity:this.poids} {unitTitle}\n {[this.getTypePoids(values)]}\n
\n
\n
\n
\n `,{\n compiled: true,\n getTypePoids: (data) => IntakeTicketTemplates.typePoidNet(data),\n poids: (val)=> IntakeTicketTemplates.formatQuantity(val),\n });\n }\n\n static get quantityDecimals(){\n return 4;\n }\n\n static calculPoidNetVehicule(ticket){\n return this.formatQuantity((ticket.grossQuantity || 0) - (ticket.tareVehicle||0));\n }\n\n static calculPoidNetChargement(ticket){\n return this.formatQuantity((ticket.grossWeightLoad || 0) - ((ticket.tarePackage || 0) * (ticket.packageCount || 0)));\n }\n\n static formatQuantity(value){\n return value ? MathUtils.getFloatWithLOCALEFormat(value, this.quantityDecimals, false) : \"-\";\n }\n\n static formatVarietalColor(value){\n return value || 'FFF';\n }\n\n static typePoidNet(ticket){\n const isCalculated = [\"calculPoidNetVehicule\", \"calculPoidNetChargement\"]\n .map(method => this[method](ticket))\n .some(value => value === this.formatQuantity(ticket.quantity));\n return d2e.trad(isCalculated ? \"ticket_apport.poidsNet.calcule\" : \"ticket_apport.poidsNet.corrige\")\n }\n\n static get previewInfos(){\n return Ext.create('Ext.XTemplate', `\n \n
\n ${this.previewParcelle}\n ${this.previewChargement}\n ${this.previewWeighmaster}\n ${this.previewDates}\n ${this.previewFournisseur}\n ${this.previewClient}\n ${this.previewEquipe}\n ${this.previewMesures}\n ${this.previewCommentaire}\n
\n
\n `,{\n compiled: true,\n getTypePoids: (data) => IntakeTicketTemplates.typePoidNet(data),\n poids: (val)=> IntakeTicketTemplates.formatQuantity(val),\n formatVarietalColor: (val) => IntakeTicketTemplates.formatVarietalColor(val),\n formatDateHeure: (date) => !date ? \" - \" : [moment(date).format(\"L\"), d2e.trad(\"report.heure.a\"), moment(date).format(\"LT\")].join(\" \"),\n mesures: list => list.filter(measure => !_.isNil(measure.value))\n .map(measure => {\n let value = measure.value;\n switch (measure.criteria.type){\n case \"List\":\n value = measure.criteria.valueList.find(opt => opt.id === value).label;\n break;\n case \"Date\":\n value = DateTimeUtils.formatDateLocale(new Date(value));\n break;\n }\n return {name: measure.criteria.name, value: [value, measure.criteria.unit].filter(Boolean).join(\" \")};\n })\n });\n }\n\n static get previewParcelle(){\n return `\n
\n

${d2e.trad(\"header.pcu_parcelle\")}

\n
\n \n
\n \n {field.name} {field.mapId}\n \n ${d2e.trad(\"ticket_apport.list.empty\")}\n \n
\n
\n \n ${this.multiParamTextTpl([\"varietal.name\", \"appellation.name\"])}\n
\n
{field.plantedArea} ${d2e.trad(\"unite.surface\")}
\n
${this.multiParamTextTpl([\"town.name\", \"farmer.name\"])}
\n \n ${d2e.trad(\"ticket_apport.informations.empty\")}\n \n
\n
\n `;\n }\n\n static get previewChargement(){\n const ligneTpl = (title, param) => `\n \n ${d2e.trad(title)} : \n {${param}:this.poids}- {unitTitle}\n `;\n return `\n
\n

${d2e.trad(\"ticket_apport.chargement.detail\")}

\n
\n
\n
\n ${d2e.trad(\"ticket_apport.vehicule\")} : {truckId}\n {driver}\n
\n
\n \n \n ${ligneTpl(\"ticket_apport.vehicule.tare\", \"tareVehicle\")}\n ${ligneTpl(\"ticket_apport.vehicule.poidBrut\", \"grossQuantity\")}\n \n \n \n \n \n
${d2e.trad(\"ticket_apport.poidsNet.vendange\")} : {[IntakeTicketTemplates.calculPoidNetVehicule(values)]} {unitTitle}
\n
\n
\n
\n
\n ${d2e.trad(\"ticket_apport.chargement.type\")} : {packageType}\n {packageCount}\n
\n
\n \n \n ${ligneTpl(\"ticket_apport.chargement.tare\", \"tarePackage\")}\n ${ligneTpl(\"ticket_apport.chargement.poidColis\", \"grossWeightPackage\")}\n ${ligneTpl(\"ticket_apport.chargement.poidBrut\", \"grossWeightLoad\")}\n \n \n \n \n \n \n \n \n \n \n \n
${d2e.trad(\"ticket_apport.poidsNet.vendange\")} : {[IntakeTicketTemplates.calculPoidNetChargement(values)]} {unitTitle}
${d2e.trad(\"ticket_apport.poidsNet\")} {[this.getTypePoids(values)]} : {quantity:this.poids} {unitTitle}
\n
\n
\n
\n
\n `;\n }\n\n static get previewWeighmaster(){\n if(COUNTRY_CODE !== \"US\"){ return \"\" };\n return `\n
\n

${d2e.trad(\"lbl.tickets.weightmaster\")}

\n
\n {weightmaster} \n \n ${d2e.trad(\"ticket_apport.weighmaster.empty\")}
\n
\n ${d2e.trad(\"lbl.tickets.commodity\")} : \n \n {commodity}
\n \n ${d2e.trad(\"lbl.aucun\")}\n \n
\n
\n `;\n }\n\n static get previewDates(){\n return `\n
\n

${d2e.trad(\"ticket_apport.dateheure\")}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
${d2e.trad(\"ticket_apport.depart.parcelle\")} : {blockDepartingDate:this.formatDateHeure}
${d2e.trad(\"ticket_apport.arrivee.destination\")} : {wineryArrivalDate:this.formatDateHeure}
${d2e.trad(\"ticket_apport.depart.destination\")} : {wineryDepartingDate:this.formatDateHeure}
\n
\n
\n `;\n }\n\n static get previewFournisseur(){\n return `\n \n
\n

${d2e.trad(\"frm.fournisseur\")}

\n
{supplier.name}
\n
\n
\n `;\n }\n\n static get previewClient(){\n return `\n \n
\n

${d2e.trad(\"header.destination\")}

\n
\n {location}
\n {customer.name}\n
\n
\n
\n `;\n }\n\n static get previewEquipe(){\n return `\n \n
\n

${d2e.trad(\"lbl.team\")}

\n
{team}
\n
\n
\n `;\n }\n\n static get previewMesures(){\n return `\n \n
\n

${d2e.trad(\"frm.measures\")}

\n
\n \n \n \n \n \n \n
{name} : {value}
\n
\n
\n
\n `;\n }\n\n static get previewCommentaire(){\n return `\n \n
\n

${d2e.trad(\"frm.commentaire\")}

\n
{comment}
\n
\n
\n `;\n }\n}\n","class HistoryTemplates {\n\n static get empty(){\n return `\n
\n \n \n

${d2e.trad(\"frm.history.empty\")}

\n
\n
\n `;\n }\n\n static get previewContent(){\n return `

${d2e.trad(\"frm.history.empty\")}

`;\n }\n\n static groupHeader(record){\n const month = TemplateFactory.History.monthFormat(record.get('date'));\n const inactive = !record.get('groupActive') ? \"inactive\" : \"\";\n return `\n
\n
${month}
\n
\n
\n
\n `;\n }\n\n static get listItem(){\n return Ext.create('Ext.XTemplate',`\n
\n
{day}
\n
 
\n
\n

{task.code}{task.title}

\n

{summary}

\n
\n
\n `,{\n compiled: true,\n dateFormat: (v)=> TemplateFactory.History.dateFormat(v)\n })\n }\n\n static get previewHeader() {\n return Ext.create('Ext.XTemplate',`\n \n
\n

{task.title} {task.code}

\n

{task.description:ellipsis(80)}

\n
\n \n {task.farm}\n
\n
\n
\n `);\n }\n\n static get previewEmployes(){\n return `\n
\n

\n \n ${d2e.trad(\"menu.employees\")}\n \n {employes.length}\n \n

\n

\n \n {[values.employes.map(e => e.lastName+\" \"+e.firstName).join(\", \")]}\n \n ${d2e.trad(\"lbl.nodata\")}\n \n

\n
\n `;\n }\n\n static get previewCommentaire(){\n return `\n \n
\n

\n \n ${d2e.trad(\"frm.commentaire\")}\n

\n {task.comment}\n
\n
\n `;\n }\n\n\n\n static productsSummary(products){\n return Object.values(products).map(product =>{\n const name = product.name;\n const unit = product.unit || \"\";\n const qty = HistoryTemplates.numberFormat(product.quantity, 3, unit, false);\n return [name, `${qty}`].join(\" : \");\n }).join(\"
\");\n }\n\n static analysisSummary(analysis){\n return analysis.flatMap(criteria => criteria.details\n .map(d => d.value)\n .filter(Boolean)\n .map(value => HistoryTemplates.analysisFormat(value, criteria.type, criteria.unit))\n .map(value => [criteria.name, `${Ext.String.ellipsis(value, 50)}`].join(\" : \"))\n ).join(\"
\");\n }\n\n static numberFormat(value, precision, unit, sign, forceNegatif = false, forceDecimals = true){\n return [MathUtils.getFloatWithLOCALEFormat(forceNegatif ? Math.abs(value) * -1 : value, precision, forceDecimals, {signDisplay: sign ? \"exceptZero\" : \"auto\"}), unit].filter(Boolean).join(\" \")\n .replaceAll('-','- ')\n .replaceAll('+','+ ');\n }\n\n static quantityFormat(v, unit, sign, precision = 2){\n return HistoryTemplates.numberFormat(v, precision, unit, sign);\n }\n\n static rateFormat(rate, unit){\n return HistoryTemplates.numberFormat(rate, 3, [unit, SYSTEMUNITVOLUME].join(\"/\"));\n }\n\n static volumeFormat(volume){\n return HistoryTemplates.numberFormat(volume,2, SYSTEMUNITVOLUME)\n }\n\n static dateFormat(dateString, formatOptions){\n return DateTimeUtils.formatDateLocale(new Date(dateString), formatOptions);\n }\n\n static timeFormat(dateString){\n return HistoryTemplates.dateFormat(dateString, {hour: \"numeric\", minute: \"numeric\"})\n }\n\n static monthFormat(dateString){\n return HistoryTemplates.dateFormat(dateString, {year: \"numeric\", month: Ext.Viewport.isSmall() ? \"short\" : \"long\"})\n }\n\n static weekDayFormat(dateString){\n return HistoryTemplates.dateFormat(dateString, {day: \"numeric\", weekday: Ext.Viewport.isSmall() ? \"short\" : \"long\"})\n }\n\n static analysisFormat(value, type, unit){\n switch (type){\n case \"Text\":\n case \"List\":\n case \"Date\":\n return value;\n\n case \"Number\":\n return HistoryTemplates.numberFormat(value, 3, unit, false, false, false);\n }\n }\n\n static get end(){\n return `\n
\n \n ${d2e.trad(\"frm.history.end\")}\n \n `;\n }\n\n static get Lot(){\n return LotHistoryTemplates;\n }\n\n static get Container(){\n return ContainerHistoryTemplates;\n }\n}","class FormTemplates {\n static get Chai(){\n return {\n Maintenance: FormMaintenanceTemplates\n }\n }\n\n static get statutOt() {\n return `\n
\n \n {libelle:htmlEncode}\n
\n
\n `;\n }\n}","class OtTemplates {\n static get Chai(){\n return {\n Maintenance: OtChaiMaintenanceTemplates\n }\n }\n\n static listItem(processus = \"vigne\"){\n return new Ext.XTemplate(`\n \n\t\t\t\t\t
\n
{paramParamsByStatut.libelle}
\n\t\t\t\t\t
\n

{codetravCodetravail.descr:this.ellipsis(25)} {code}

\n

{descr}

\n
\n
\n  \n {[DateTimeUtils.formatDateLocale(new Date(values.datePrev))]}\n
\n
\n
\n
\n
\n `, {\n ellipsis: Ext.String.ellipsis\n });\n }\n\n static get emptyList(){\n return `
\n \n \n

${d2e.trad(\"lbl.ot.list.empty\")}

\n
\n
`;\n}\n\n static get previewHeader() {\n return `\n \n
\n

{codetravCodetravail.descr} {code}

\n

{descr:ellipsis(80)}

\n
\n \n {paramDossier.nom}\n
\n
{paramParamsByStatut.libelle}
\n
\n
\n `;\n }\n\n static otPers(required = false){\n return `\n \n
\n

\n \n ${d2e.trad(\"menu.employees\")}\n \n {otPers.length}\n \n

\n

\n \n {rhEmploye.fullName}\n \n ${d2e.trad(\"lbl.nonAffected\")}\n \n

\n
\n
\n `\n }\n\n\n\n static commentaire(required = false){\n return `\n \n
\n

\n \n ${d2e.trad(\"frm.commentaire\")}\n

\n

{commentaire}

\n
\n
\n `;\n }\n}","class TemplateFactory{\n static get CellarTask(){\n return CellarTaskTemplates\n }\n static get IntakeTicket(){\n return IntakeTicketTemplates\n }\n static get History(){\n return HistoryTemplates\n }\n\n static get Container(){\n return ContainerTemplates\n }\n\n static get Form(){\n return FormTemplates\n }\n\n static get OT(){\n return OtTemplates\n }\n}","/**\n * Enum Status scan des contenants\n * @property {\"VALIDATE\"|\"NOT_FOUND\"|\"ALREADY_SELECTED\"|\"USED_ORIGIN\"|\"USED_DESTINATION\"|\"USED\"|\"START_SCAN\"} type - status type\n * @property {string} icon - css pour l'icone d'affichage\n * @property {string} text - texte pour le statut\n * @property {string} color - HEX couleur d'affichage\n * @property {boolean} validate - si les données du contenant sont validés pour la sélection\n */\nclass ContainerScanStatus{\n\n constructor({type, icon, text, color, validate}) {\n Object.defineProperties(this,{\n type: {value:type, enumerable:true},\n icon: {value:icon, enumerable:true},\n text: {value:text, enumerable:true, writable:true},\n color: {value:color, enumerable:true},\n validate: {value:validate, enumerable:true}\n });\n }\n\n /**\n * @param {string} text - texte ou clé de traduction pour le statut\n * @return {ContainerScanStatus} Method Chaining du statut\n */\n withText(text){\n this.text = d2e.trad(text);\n return this;\n }\n\n /** @type{ContainerScanStatus} */\n static get VALIDATE(){\n return new ContainerScanStatus({\n type: \"VALIDATE\",\n icon: \"fa-regular fa-circle-check\",\n color: \"#3C9008\",\n validate: true\n });\n }\n\n /** @type{ContainerScanStatus} */\n static get INVALID() {\n return new ContainerScanStatus({\n type: \"INVALID\",\n icon: \"fa-solid fa-triangle-exclamation\",\n color: \"#E03C31\",\n validate: false,\n text: d2e.trad(\"lbl.touch.qr.invalid\")\n });\n }\n\n /** @type{ContainerScanStatus} */\n static get NOT_FOUND() {\n return new ContainerScanStatus({\n type: \"NOT_FOUND\",\n icon: \"fa-solid fa-circle-xmark\",\n color: \"#E03C31\",\n validate: false,\n text: d2e.trad(\"lbl.touch.qr.nofind\")\n });\n }\n\n /** @type{ContainerScanStatus} */\n static get SELECTED(){\n return new ContainerScanStatus({\n type: \"VALIDATE\",\n icon: \"fa-regular fa-circle-check\",\n color: \"#5b9835\",\n validate: true,\n text: d2e.trad(\"lbl.selected\")\n });\n }\n\n /** @type{ContainerScanStatus} */\n static get ALREADY_SELECTED(){\n return new ContainerScanStatus({\n type: \"ALREADY_SELECTED\",\n icon: \"fa-solid fa-circle-info\",\n color: \"#0D7BA9\",\n validate: false,\n text: d2e.trad(\"lbl.selected.already\")\n });\n }\n\n /** @type{ContainerScanStatus} */\n static get USED_ORIGIN(){\n return new ContainerScanStatus({\n type: \"USED_ORIGIN\",\n icon: \"fa-solid fa-triangle-exclamation\",\n color: \"#FFB800\",\n validate: false\n });\n }\n\n /** @type{ContainerScanStatus} */\n static get USED_DESTINATION(){\n return new ContainerScanStatus({\n type: \"USED_DESTINATION\",\n icon: \"fa-solid fa-triangle-exclamation\",\n color: \"#FFB800\",\n validate: false\n });\n }\n\n /** @type{ContainerScanStatus} */\n static get USED(){\n return new ContainerScanStatus({\n type: \"USED\",\n icon: \"fa-solid fa-triangle-exclamation\",\n color: \"#FFB800\",\n validate: false\n });\n }\n\n /** @type{ContainerScanStatus} */\n static get START_SCAN(){\n return new ContainerScanStatus({\n type: \"START_SCAN\",\n icon: null,\n color: \"inherit\",\n validate: false\n });\n }\n}"]}