Merge branch 'staging' into 'production'

Merge staging into production

See merge request sottye/hytha35!2
This commit is contained in:
Tiavina Handrianina 2025-04-10 15:23:52 +00:00
commit 5512c23004
88 changed files with 2950 additions and 819 deletions

8
Jenkinsfile vendored
View File

@ -9,13 +9,5 @@ pipeline {
sudo su jenkins -c "git stash && git pull origin staging" '''
}
}
stage ("deploy to DRL dev ezway") {
when { branch 'releases/release-hytha' }
agent { label 'apache && dev' }
steps {
sh '''cd /var/www/drl-nextcloud/custom_apps
sudo su jenkins -c "git stash && git pull origin releases/release-hytha" '''
}
}
}
}

View File

@ -164570,7 +164570,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"compressed":true,"categories":[{"id"
/******/ // This function allow to reference async chunks
/******/ __webpack_require__.u = (chunkId) => {
/******/ // return url for filenames based on template
/******/ return "calendar-" + chunkId + ".js?v=" + {"vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981":"31a7d4ece3cdde2d67f1","vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8":"1ec24b5ef07652c6dd39","vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f":"7ec0cf6b65f5c745fa03","node_modules_nextcloud_dialogs_dist_legacy_mjs":"8be838e4c6e9aae56c87","vendors-node_modules_webdav_dist_web_index_js":"454da8f908d41b47c607","vendors-node_modules_nextcloud_dialogs_dist_chunks_FilePicker-8ibBgPg__mjs":"ea54a36450de178d1141"}[chunkId] + "";
/******/ return "calendar-" + chunkId + ".js?v=" + {"vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981":"3a2ab5c12f0771c82ad1","vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8":"b90524c103590fa7a133","vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f":"214ba50739254b654bf4","node_modules_nextcloud_dialogs_dist_legacy_mjs":"8be838e4c6e9aae56c87","vendors-node_modules_webdav_dist_web_index_js":"454da8f908d41b47c607","vendors-node_modules_nextcloud_dialogs_dist_chunks_FilePicker-8ibBgPg__mjs":"ea54a36450de178d1141"}[chunkId] + "";
/******/ };
/******/ })();
/******/
@ -164827,4 +164827,4 @@ const visitorInfo = (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_1__.loa
/******/ })()
;
//# sourceMappingURL=calendar-appointments-booking.js.map?v=5367dc1bf840d0667b28
//# sourceMappingURL=calendar-appointments-booking.js.map?v=dffd8c57917781498f5a

File diff suppressed because one or more lines are too long

View File

@ -37516,4 +37516,4 @@ const booking = (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_1__.loadSta
/******/ })()
;
//# sourceMappingURL=calendar-appointments-confirmation.js.map?v=4a43baa099014d97ecc5
//# sourceMappingURL=calendar-appointments-confirmation.js.map?v=89b4f5ac684ec7582afa

File diff suppressed because one or more lines are too long

View File

@ -37552,4 +37552,4 @@ const booking = (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_1__.loadSta
/******/ })()
;
//# sourceMappingURL=calendar-appointments-conflict.js.map?v=84cfe3eb419f8e079c5a
//# sourceMappingURL=calendar-appointments-conflict.js.map?v=ffe5d99519c2fe6180c2

File diff suppressed because one or more lines are too long

View File

@ -160605,4 +160605,4 @@ vue__WEBPACK_IMPORTED_MODULE_5__["default"].prototype.$n = _nextcloud_l10n__WEBP
/******/ })()
;
//# sourceMappingURL=calendar-appointments-overview.js.map?v=bc10bc435203d6603a01
//# sourceMappingURL=calendar-appointments-overview.js.map?v=54666134d56afd918df4

File diff suppressed because one or more lines are too long

View File

@ -500,4 +500,4 @@ if(false) {}
/***/ })
}]);
//# sourceMappingURL=calendar-dashboard-lazy.js.map?v=a51e4becd0c10f90296c
//# sourceMappingURL=calendar-dashboard-lazy.js.map?v=41ca77d834f6e319b2e6

File diff suppressed because one or more lines are too long

View File

@ -1322,7 +1322,7 @@ function b(n) {
/******/ // This function allow to reference async chunks
/******/ __webpack_require__.u = (chunkId) => {
/******/ // return url for filenames based on template
/******/ return "calendar-" + chunkId + ".js?v=" + {"vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981":"31a7d4ece3cdde2d67f1","vendors-node_modules_vue_dist_vue_runtime_esm_js":"7e3171593bdc0f62040b","vendors-node_modules_nextcloud_cdav-library_dist_dist_js-node_modules_nextcloud_logger_dist_i-36c16b":"c3b3db23da041c717fc1","vendors-node_modules_webdav_dist_web_index_js":"454da8f908d41b47c607","vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065":"55e669bcb78e07cd54cc","vendors-node_modules_nextcloud_vue-dashboard_dist_vue-dashboard_js-node_modules_css-loader_di-9e6f3d":"56b7e44c1982f74f69ca","src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790":"7cf71b4f92d5bbc180b4","src_store_index_js":"345a4df028a3806aee0a","src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258":"7910aecb675dcdfa620c","dashboard-lazy":"a51e4becd0c10f90296c","vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8":"1ec24b5ef07652c6dd39","vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f":"7ec0cf6b65f5c745fa03","node_modules_nextcloud_dialogs_dist_legacy_mjs":"8be838e4c6e9aae56c87","vendors-node_modules_nextcloud_dialogs_dist_chunks_FilePicker-8ibBgPg__mjs":"ea54a36450de178d1141","vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96":"ce1bed825f57dd1d117a","node_modules_moment_locale_sync_recursive_":"4bc2c39c5e0ff182c2e3"}[chunkId] + "";
/******/ return "calendar-" + chunkId + ".js?v=" + {"vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981":"3a2ab5c12f0771c82ad1","vendors-node_modules_vue_dist_vue_runtime_esm_js":"7e3171593bdc0f62040b","vendors-node_modules_nextcloud_cdav-library_dist_dist_js-node_modules_nextcloud_logger_dist_i-36c16b":"c3b3db23da041c717fc1","vendors-node_modules_webdav_dist_web_index_js":"454da8f908d41b47c607","vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065":"88354dc01b19c1f3f2fe","vendors-node_modules_nextcloud_vue-dashboard_dist_vue-dashboard_js-node_modules_css-loader_di-9e6f3d":"94406568c4140a6ddece","src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790":"d5631bdcf765f0bdb29e","src_store_index_js":"d1ab263e0f24427b2462","src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258":"67baa23bac511d8aea05","dashboard-lazy":"41ca77d834f6e319b2e6","vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8":"b90524c103590fa7a133","vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f":"214ba50739254b654bf4","node_modules_nextcloud_dialogs_dist_legacy_mjs":"8be838e4c6e9aae56c87","vendors-node_modules_nextcloud_dialogs_dist_chunks_FilePicker-8ibBgPg__mjs":"ea54a36450de178d1141","vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96":"ce1bed825f57dd1d117a","node_modules_moment_locale_sync_recursive_":"4bc2c39c5e0ff182c2e3"}[chunkId] + "";
/******/ };
/******/ })();
/******/
@ -1580,4 +1580,4 @@ document.addEventListener('DOMContentLoaded', function () {
/******/ })()
;
//# sourceMappingURL=calendar-dashboard.js.map?v=8efa6f84d01bc0c88494
//# sourceMappingURL=calendar-dashboard.js.map?v=bc269c800257c054bc01

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -369,4 +369,4 @@ module.exports = /*#__PURE__*/JSON.parse('[{"country":"Algeria","filename":"Alge
/***/ })
}]);
//# sourceMappingURL=calendar-public-calendar-subscription-picker.js.map?v=2315e24e67ebf6e4b6db
//# sourceMappingURL=calendar-public-calendar-subscription-picker.js.map?v=5cfd324844c891720a08

File diff suppressed because one or more lines are too long

View File

@ -8897,7 +8897,7 @@ window._registerCustomPickerElement = _;
/******/ // This function allow to reference async chunks
/******/ __webpack_require__.u = (chunkId) => {
/******/ // return url for filenames based on template
/******/ return "calendar-" + chunkId + ".js?v=" + {"vendors-node_modules_vue_dist_vue_runtime_esm_js":"7e3171593bdc0f62040b","vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981":"31a7d4ece3cdde2d67f1","vendors-node_modules_nextcloud_cdav-library_dist_dist_js-node_modules_nextcloud_logger_dist_i-36c16b":"c3b3db23da041c717fc1","vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8":"1ec24b5ef07652c6dd39","vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065":"55e669bcb78e07cd54cc","vendors-node_modules_autosize_dist_autosize_esm_js-node_modules_html-entities_lib_index_js-no-4072c5":"7212b31e059bc10c256e","src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790":"7cf71b4f92d5bbc180b4","src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258":"7910aecb675dcdfa620c","src_views_Calendar_vue-data_image_svg_xml_3csvg_20xmlns_27http_www_w3_org_2000_svg_27_20heigh-4a4254":"cb7912c432f0c01a7af2","vendors-node_modules_webdav_dist_web_index_js":"454da8f908d41b47c607","src_store_index_js":"345a4df028a3806aee0a","vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f":"7ec0cf6b65f5c745fa03","node_modules_nextcloud_dialogs_dist_legacy_mjs":"8be838e4c6e9aae56c87","vendors-node_modules_nextcloud_dialogs_dist_chunks_FilePicker-8ibBgPg__mjs":"ea54a36450de178d1141","public-calendar-subscription-picker":"2315e24e67ebf6e4b6db","vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96":"ce1bed825f57dd1d117a","node_modules_moment_locale_sync_recursive_":"4bc2c39c5e0ff182c2e3"}[chunkId] + "";
/******/ return "calendar-" + chunkId + ".js?v=" + {"vendors-node_modules_vue_dist_vue_runtime_esm_js":"7e3171593bdc0f62040b","vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981":"3a2ab5c12f0771c82ad1","vendors-node_modules_nextcloud_cdav-library_dist_dist_js-node_modules_nextcloud_logger_dist_i-36c16b":"c3b3db23da041c717fc1","vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8":"b90524c103590fa7a133","vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065":"88354dc01b19c1f3f2fe","vendors-node_modules_autosize_dist_autosize_esm_js-node_modules_html-entities_lib_index_js-no-4072c5":"1d12f5e341e36b0fcd1d","src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790":"d5631bdcf765f0bdb29e","src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258":"67baa23bac511d8aea05","src_views_Calendar_vue-data_image_svg_xml_3csvg_20xmlns_27http_www_w3_org_2000_svg_27_20heigh-4a4254":"571272044a4c2cfc0ea7","vendors-node_modules_webdav_dist_web_index_js":"454da8f908d41b47c607","src_store_index_js":"d1ab263e0f24427b2462","vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f":"214ba50739254b654bf4","node_modules_nextcloud_dialogs_dist_legacy_mjs":"8be838e4c6e9aae56c87","vendors-node_modules_nextcloud_dialogs_dist_chunks_FilePicker-8ibBgPg__mjs":"ea54a36450de178d1141","public-calendar-subscription-picker":"5cfd324844c891720a08","vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96":"ce1bed825f57dd1d117a","node_modules_moment_locale_sync_recursive_":"4bc2c39c5e0ff182c2e3"}[chunkId] + "";
/******/ };
/******/ })();
/******/
@ -9147,4 +9147,4 @@ __webpack_require__.p = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.linkTo
/******/ })()
;
//# sourceMappingURL=calendar-reference.js.map?v=37cbac61b0eec42018f4
//# sourceMappingURL=calendar-reference.js.map?v=7b6ac5b858e2aa5b90ae

File diff suppressed because one or more lines are too long

View File

@ -53,6 +53,7 @@ __webpack_require__.r(__webpack_exports__);
*/
function eventSourceFunction(calendarObjects, calendar, start, end, timezone) {
const fcEvents = [];
const authUser = OC.currentUser;
for (const calendarObject of calendarObjects) {
let allObjectsInTimeRange;
try {
@ -124,9 +125,34 @@ function eventSourceFunction(calendarObjects, calendar, start, end, timezone) {
}
}
let isCalendarPending = false;
let objectProperties = object._properties.get('ISCALENDARPENDING');
if (objectProperties && objectProperties.length > 0) {
isCalendarPending = objectProperties[0]._value == "1" ? true : false;
let objectPropertiesPending = object._properties.get('ISCALENDARPENDING');
if (objectPropertiesPending && objectPropertiesPending.length > 0) {
isCalendarPending = objectPropertiesPending[0]._value == "1" ? true : false;
}
let isPrivateEvent = false;
let objectPropertiesPrivate = object._properties.get('ISPRIVATE');
if (objectPropertiesPrivate && objectPropertiesPrivate.length > 0) {
isPrivateEvent = objectPropertiesPrivate[0]._value == "1" ? true : false;
}
//Get owen object's user
let owenUrl = calendarObject.dav._parent.owner;
let owenUser = owenUrl.replace('/remote.php/dav/principals/users/', '').split('/')[0];
if (!owenUser) {
//Get from url shared calendar
owenUrl = calendarObject.dav._parent.url;
owenUser = owenUrl.replace('/remote.php/dav/calendars/' + authUser + '/personal_shared_by_', '').split('/')[0];
}
const isOwenOfEvent = owenUser == authUser;
if (isPrivateEvent && !isOwenOfEvent) {
title = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', "Absent (".concat(owenUser, ")"));
}
let absenceTypeIsLeave = false;
let absenceTypeProperties = object._properties.get('ABSENCETYPE');
if (absenceTypeProperties && absenceTypeProperties.length > 0) {
const absenceTypeValue = absenceTypeProperties[0]._value;
if (absenceTypeValue == 'LEAVE') {
absenceTypeIsLeave = true;
}
}
const fcEvent = {
id: [calendarObject.id, object.id].join('###'),
@ -150,7 +176,11 @@ function eventSourceFunction(calendarObjects, calendar, start, end, timezone) {
davUrl: calendarObject.dav.url,
location: object.location,
description: object.description,
isCalendarPending: isCalendarPending
isCalendarPending: isCalendarPending,
isPrivate: isPrivateEvent,
calendarObjectOwen: owenUser,
calendarObjectIsOwen: isOwenOfEvent,
absenceTypeIsLeave: absenceTypeIsLeave
}
};
if (isCalendarPending) {
@ -158,6 +188,11 @@ function eventSourceFunction(calendarObjects, calendar, start, end, timezone) {
fcEvent.borderColor = calendar.color;
fcEvent.textColor = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.generateTextColorForHex)(calendar.color);
}
if (absenceTypeIsLeave) {
fcEvent.backgroundColor = calendar.color;
fcEvent.borderColor = calendar.color;
fcEvent.textColor = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.generateTextColorForHex)(calendar.color);
}
if (object.color) {
const customColor = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.getHexForColorName)(object.color);
if (customColor) {
@ -1043,4 +1078,4 @@ module.exports = "data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/sv
/***/ })
}]);
//# sourceMappingURL=calendar-src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258.js.map?v=7910aecb675dcdfa620c
//# sourceMappingURL=calendar-src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258.js.map?v=67baa23bac511d8aea05

View File

@ -292,6 +292,10 @@ const getRFCProperties = () => {
placeholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir un client'),
icon: 'Human'
},
absenceType: {
readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Type d\'absence'),
placeholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Type d\'absence')
},
embalmers: {
readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Embalmers'),
icon: 'Human',
@ -1826,4 +1830,4 @@ function GenColors(steps) {
/***/ })
}]);
//# sourceMappingURL=calendar-src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790.js.map?v=7cf71b4f92d5bbc180b4
//# sourceMappingURL=calendar-src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790.js.map?v=d5631bdcf765f0bdb29e

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -6015,6 +6015,49 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=script&lang=js":
/*!********************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=script&lang=js ***!
\********************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs");
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
name: "PropertyIsPrivate",
components: {
NcCheckboxRadioSwitch: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcCheckboxRadioSwitch
},
props: {
isPrivate: {
type: Boolean,
default: false
},
isReadOnly: {
type: Boolean,
default: false
}
},
computed: {
getIsPrivateLabel() {
return this.isPrivate ? this.$t('calendar', 'Privé') : this.$t('calendar', 'Mettre en privé');
}
},
methods: {
toggleIsPrivate() {
const newState = !this.isPrivate;
this.$emit('toggle-is-private', newState);
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelect.vue?vue&type=script&lang=js":
/*!*****************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelect.vue?vue&type=script&lang=js ***!
@ -6063,6 +6106,66 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=script&lang=js":
/*!****************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=script&lang=js ***!
\****************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs");
/* harmony import */ var _mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../mixins/PropertyMixin.js */ "./src/mixins/PropertyMixin.js");
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
name: 'PropertySelectAbsenceType',
components: {
NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcSelect
},
props: {
isReadOnly: {
type: Boolean,
default: false // Par défaut, on permet la modification
}
},
data() {
return {
properties: [{
value: 'LEAVE',
label: 'Congé'
}, {
value: 'REST',
label: 'Repos'
}, {
value: 'DISEASE',
label: 'Arrêt maladie'
}]
};
},
mixins: [_mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_1__["default"]],
computed: {
options() {
return this.properties;
},
selectedValue() {
const value = this.value;
return this.properties.find(option => option.value == value);
}
},
methods: {
changeValue(selectedOption) {
var _selectedOption$value;
this.$emit('update:value', (_selectedOption$value = selectedOption.value) !== null && _selectedOption$value !== void 0 ? _selectedOption$value : null);
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=script&lang=js":
/*!*********************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=script&lang=js ***!
@ -8116,16 +8219,18 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var vue_material_design_icons_Download_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! vue-material-design-icons/Download.vue */ "./node_modules/vue-material-design-icons/Download.vue");
/* harmony import */ var vue_material_design_icons_ContentDuplicate_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! vue-material-design-icons/ContentDuplicate.vue */ "./node_modules/vue-material-design-icons/ContentDuplicate.vue");
/* harmony import */ var vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! vue-material-design-icons/Pencil.vue */ "./node_modules/vue-material-design-icons/Pencil.vue");
/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js");
/* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs");
/* harmony import */ var _components_Editor_Properties_PropertySelect_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelect.vue */ "./src/components/Editor/Properties/PropertySelect.vue");
/* harmony import */ var _components_Editor_Properties_PropertySelectAjax_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectAjax.vue */ "./src/components/Editor/Properties/PropertySelectAjax.vue");
/* harmony import */ var _components_Editor_Properties_PropertySelectAjaxMultiple_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectAjaxMultiple.vue */ "./src/components/Editor/Properties/PropertySelectAjaxMultiple.vue");
/* harmony import */ var _components_Editor_Properties_PropertySelectLieu_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectLieu.vue */ "./src/components/Editor/Properties/PropertySelectLieu.vue");
/* harmony import */ var _components_Editor_Properties_PropertySelectClient_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectClient.vue */ "./src/components/Editor/Properties/PropertySelectClient.vue");
/* harmony import */ var _components_Editor_Properties_PropertySelectArticle_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectArticle.vue */ "./src/components/Editor/Properties/PropertySelectArticle.vue");
/* harmony import */ var _components_Editor_Properties_PropertyIsLeave_vue__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyIsLeave.vue */ "./src/components/Editor/Properties/PropertyIsLeave.vue");
/* harmony import */ var _components_Editor_Properties_PropertyIsCalendarPending__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyIsCalendarPending */ "./src/components/Editor/Properties/PropertyIsCalendarPending.vue");
/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js");
/* harmony import */ var _components_Editor_Properties_PropertySelect_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelect.vue */ "./src/components/Editor/Properties/PropertySelect.vue");
/* harmony import */ var _components_Editor_Properties_PropertySelectAjax_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectAjax.vue */ "./src/components/Editor/Properties/PropertySelectAjax.vue");
/* harmony import */ var _components_Editor_Properties_PropertySelectAjaxMultiple_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectAjaxMultiple.vue */ "./src/components/Editor/Properties/PropertySelectAjaxMultiple.vue");
/* harmony import */ var _components_Editor_Properties_PropertySelectLieu_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectLieu.vue */ "./src/components/Editor/Properties/PropertySelectLieu.vue");
/* harmony import */ var _components_Editor_Properties_PropertySelectClient_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectClient.vue */ "./src/components/Editor/Properties/PropertySelectClient.vue");
/* harmony import */ var _components_Editor_Properties_PropertySelectArticle_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectArticle.vue */ "./src/components/Editor/Properties/PropertySelectArticle.vue");
/* harmony import */ var _components_Editor_Properties_PropertyIsLeave_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyIsLeave.vue */ "./src/components/Editor/Properties/PropertyIsLeave.vue");
/* harmony import */ var _components_Editor_Properties_PropertyIsCalendarPending__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyIsCalendarPending */ "./src/components/Editor/Properties/PropertyIsCalendarPending.vue");
/* harmony import */ var _components_Editor_Properties_PropertySelectAbsenceType_vue__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectAbsenceType.vue */ "./src/components/Editor/Properties/PropertySelectAbsenceType.vue");
/* harmony import */ var _components_Editor_Properties_PropertyIsPrivate_vue__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyIsPrivate.vue */ "./src/components/Editor/Properties/PropertyIsPrivate.vue");
@ -8158,19 +8263,20 @@ __webpack_require__.r(__webpack_exports__);
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
name: "EditSimple",
components: {
PropertyIsLeave: _components_Editor_Properties_PropertyIsLeave_vue__WEBPACK_IMPORTED_MODULE_26__["default"],
PropertyIsCalendarPending: _components_Editor_Properties_PropertyIsCalendarPending__WEBPACK_IMPORTED_MODULE_27__["default"],
PropertySelectAjaxMultiple: _components_Editor_Properties_PropertySelectAjaxMultiple_vue__WEBPACK_IMPORTED_MODULE_22__["default"],
PropertySelectAjax: _components_Editor_Properties_PropertySelectAjax_vue__WEBPACK_IMPORTED_MODULE_21__["default"],
PropertySelectLieu: _components_Editor_Properties_PropertySelectLieu_vue__WEBPACK_IMPORTED_MODULE_23__["default"],
PropertySelectClient: _components_Editor_Properties_PropertySelectClient_vue__WEBPACK_IMPORTED_MODULE_24__["default"],
PropertySelectArticle: _components_Editor_Properties_PropertySelectArticle_vue__WEBPACK_IMPORTED_MODULE_25__["default"],
PropertySelect: _components_Editor_Properties_PropertySelect_vue__WEBPACK_IMPORTED_MODULE_20__["default"],
PropertyIsLeave: _components_Editor_Properties_PropertyIsLeave_vue__WEBPACK_IMPORTED_MODULE_25__["default"],
PropertyIsCalendarPending: _components_Editor_Properties_PropertyIsCalendarPending__WEBPACK_IMPORTED_MODULE_26__["default"],
PropertySelectAjaxMultiple: _components_Editor_Properties_PropertySelectAjaxMultiple_vue__WEBPACK_IMPORTED_MODULE_21__["default"],
PropertySelectAjax: _components_Editor_Properties_PropertySelectAjax_vue__WEBPACK_IMPORTED_MODULE_20__["default"],
PropertySelectLieu: _components_Editor_Properties_PropertySelectLieu_vue__WEBPACK_IMPORTED_MODULE_22__["default"],
PropertySelectClient: _components_Editor_Properties_PropertySelectClient_vue__WEBPACK_IMPORTED_MODULE_23__["default"],
PropertySelectArticle: _components_Editor_Properties_PropertySelectArticle_vue__WEBPACK_IMPORTED_MODULE_24__["default"],
PropertySelect: _components_Editor_Properties_PropertySelect_vue__WEBPACK_IMPORTED_MODULE_19__["default"],
PopoverLoadingIndicator: _components_Popover_PopoverLoadingIndicator_vue__WEBPACK_IMPORTED_MODULE_8__["default"],
SaveButtons: _components_Editor_SaveButtons_vue__WEBPACK_IMPORTED_MODULE_7__["default"],
PropertyText: _components_Editor_Properties_PropertyText_vue__WEBPACK_IMPORTED_MODULE_6__["default"],
PropertyTitleTimePicker: _components_Editor_Properties_PropertyTitleTimePicker_vue__WEBPACK_IMPORTED_MODULE_5__["default"],
PropertyTitle: _components_Editor_Properties_PropertyTitle_vue__WEBPACK_IMPORTED_MODULE_4__["default"],
PropertySelectAbsenceType: _components_Editor_Properties_PropertySelectAbsenceType_vue__WEBPACK_IMPORTED_MODULE_27__["default"],
Popover: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcPopover,
Actions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions,
ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton,
@ -8185,7 +8291,8 @@ __webpack_require__.r(__webpack_exports__);
CalendarPickerHeader: _components_Editor_CalendarPickerHeader_vue__WEBPACK_IMPORTED_MODULE_11__["default"],
InviteesList: _components_Editor_Invitees_InviteesList_vue__WEBPACK_IMPORTED_MODULE_12__["default"],
NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton,
EditIcon: vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_18__["default"]
EditIcon: vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_18__["default"],
PropertyIsPrivate: _components_Editor_Properties_PropertyIsPrivate_vue__WEBPACK_IMPORTED_MODULE_28__["default"]
},
mixins: [_mixins_EditorMixin_js__WEBPACK_IMPORTED_MODULE_3__["default"]],
data() {
@ -8201,7 +8308,7 @@ __webpack_require__.r(__webpack_exports__);
};
},
computed: {
...(0,vuex__WEBPACK_IMPORTED_MODULE_28__.mapState)({
...(0,vuex__WEBPACK_IMPORTED_MODULE_29__.mapState)({
hideEventExport: state => state.settings.hideEventExport,
widgetEventDetailsOpen: state => state.calendars.widgetEventDetailsOpen,
widgetEventDetails: state => state.calendars.widgetEventDetails,
@ -12953,6 +13060,40 @@ var staticRenderFns = [];
render._withStripped = true;
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=template&id=fb6819ac&scoped=true":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=template&id=fb6819ac&scoped=true ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ render: () => (/* binding */ render),
/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)
/* harmony export */ });
var render = function render() {
var _vm = this,
_c = _vm._self._c;
return !_vm.isReadOnly ? _c("div", {
staticClass: "property-title-time-picker"
}, [_c("div", {
staticClass: "property-title-time-picker__all-day"
}, [_c("NcCheckboxRadioSwitch", {
attrs: {
checked: _vm.isPrivate
},
on: {
"update:checked": _vm.toggleIsPrivate
}
}, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Privé")) + "\n\t\t")])], 1)]) : _c("div", [_vm._v("\n\t" + _vm._s(_vm.getIsPrivateLabel) + "\n")]);
};
var staticRenderFns = [];
render._withStripped = true;
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelect.vue?vue&type=template&id=04aa9fca&scoped=true":
@ -13024,6 +13165,53 @@ var staticRenderFns = [];
render._withStripped = true;
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=template&id=c8d0aea8&scoped=true":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=template&id=c8d0aea8&scoped=true ***!
\***************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ render: () => (/* binding */ render),
/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)
/* harmony export */ });
var render = function render() {
var _vm = this,
_c = _vm._self._c;
return _c("div", {
staticClass: "property-select"
}, [_c("div", {
staticClass: "property-select__input",
class: {
"property-select__input--readonly": _vm.isReadOnly
}
}, [!_vm.isReadOnly ? _c("NcSelect", {
attrs: {
options: _vm.options,
searchable: true,
multiple: false,
taggable: false,
name: _vm.readableName,
value: _vm.selectedValue,
placeholder: _vm.placeholder,
clearable: true,
labelOutside: true,
"input-id": "value",
label: "label"
},
on: {
input: _vm.changeValue
}
}) : _c("div", [_vm._v(_vm._s(_vm.selectedValue.label))])], 1)]);
};
var staticRenderFns = [];
render._withStripped = true;
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=template&id=3787864a&scoped=true":
@ -14526,15 +14714,27 @@ var render = function render() {
"update-end-timezone": _vm.updateEndTimezone,
"toggle-all-day": _vm.toggleAllDay
}
}), _vm._v(" "), _c("PropertyIsLeave", {
}), _vm._v(" "), _c("div", {
staticStyle: {
display: "flex",
"margin-left": "7%"
}
}, [_c("div", {
staticStyle: {
width: "70%"
}
}, [_c("PropertySelectAbsenceType", {
attrs: {
"is-read-only": _vm.isReadOnlyOrViewing,
"is-leave": _vm.isLeave
value: _vm.absenceType,
"is-read-only": _vm.isReadOnly,
"prop-model": _vm.rfcProps.absenceType,
noWrap: true,
sle: ""
},
on: {
"toggle-is-leave": _vm.toggleIsLeave
"update:value": _vm.updateAbsenceType
}
}), _vm._v(" "), _c("PropertySelectClient", {
})], 1)]), _vm._v(" "), _c("PropertySelectClient", {
staticClass: "property-location",
attrs: {
url: "/apps/gestion/ajaxGetClientsName",
@ -15864,6 +16064,9 @@ __webpack_require__.r(__webpack_exports__);
*/
function handleEventClick(event, store, router, route, window) {
let isWidget = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
if (event.extendedProps.isPrivate && !event.extendedProps.calendarObjectIsOwen) {
return;
}
if (isWidget) {
store.commit('setSelectedEvent', {
object: event.extendedProps.objectId,
@ -17139,14 +17342,24 @@ __webpack_require__.r(__webpack_exports__);
var _this$calendarObjectI14, _this$calendarObjectI15;
return (_this$calendarObjectI14 = (_this$calendarObjectI15 = this.calendarObjectInstance) === null || _this$calendarObjectI15 === void 0 ? void 0 : _this$calendarObjectI15.comment) !== null && _this$calendarObjectI14 !== void 0 ? _this$calendarObjectI14 : null;
},
/**
* Returns the isPrivate property
*
* @return {boolean}
*/
isPrivate() {
var _this$calendarObjectI16, _this$calendarObjectI17;
return (_this$calendarObjectI16 = (_this$calendarObjectI17 = this.calendarObjectInstance) === null || _this$calendarObjectI17 === void 0 ? void 0 : _this$calendarObjectI17.isPrivate) !== null && _this$calendarObjectI16 !== void 0 ? _this$calendarObjectI16 : false;
},
/**
* Returns the description or null if the event is still loading
*
* @return {string|null}
*/
description() {
var _this$calendarObjectI16, _this$calendarObjectI17;
return (_this$calendarObjectI16 = (_this$calendarObjectI17 = this.calendarObjectInstance) === null || _this$calendarObjectI17 === void 0 ? void 0 : _this$calendarObjectI17.description) !== null && _this$calendarObjectI16 !== void 0 ? _this$calendarObjectI16 : null;
var _this$calendarObjectI18, _this$calendarObjectI19;
return (_this$calendarObjectI18 = (_this$calendarObjectI19 = this.calendarObjectInstance) === null || _this$calendarObjectI19 === void 0 ? void 0 : _this$calendarObjectI19.description) !== null && _this$calendarObjectI18 !== void 0 ? _this$calendarObjectI18 : null;
},
/**
* Returns the start-date (without timezone) or null if the event is still loading
@ -17154,8 +17367,8 @@ __webpack_require__.r(__webpack_exports__);
* @return {Date|null}
*/
startDate() {
var _this$calendarObjectI18, _this$calendarObjectI19;
return (_this$calendarObjectI18 = (_this$calendarObjectI19 = this.calendarObjectInstance) === null || _this$calendarObjectI19 === void 0 ? void 0 : _this$calendarObjectI19.startDate) !== null && _this$calendarObjectI18 !== void 0 ? _this$calendarObjectI18 : null;
var _this$calendarObjectI20, _this$calendarObjectI21;
return (_this$calendarObjectI20 = (_this$calendarObjectI21 = this.calendarObjectInstance) === null || _this$calendarObjectI21 === void 0 ? void 0 : _this$calendarObjectI21.startDate) !== null && _this$calendarObjectI20 !== void 0 ? _this$calendarObjectI20 : null;
},
/**
* Returns the timezone of the event's start-date or null if the event is still loading
@ -17163,8 +17376,8 @@ __webpack_require__.r(__webpack_exports__);
* @return {string|null}
*/
startTimezone() {
var _this$calendarObjectI20, _this$calendarObjectI21;
return (_this$calendarObjectI20 = (_this$calendarObjectI21 = this.calendarObjectInstance) === null || _this$calendarObjectI21 === void 0 ? void 0 : _this$calendarObjectI21.startTimezoneId) !== null && _this$calendarObjectI20 !== void 0 ? _this$calendarObjectI20 : null;
var _this$calendarObjectI22, _this$calendarObjectI23;
return (_this$calendarObjectI22 = (_this$calendarObjectI23 = this.calendarObjectInstance) === null || _this$calendarObjectI23 === void 0 ? void 0 : _this$calendarObjectI23.startTimezoneId) !== null && _this$calendarObjectI22 !== void 0 ? _this$calendarObjectI22 : null;
},
/**
* Returns the end-date (without timezone) or null if the event is still loading
@ -17172,8 +17385,8 @@ __webpack_require__.r(__webpack_exports__);
* @return {Date|null}
*/
endDate() {
var _this$calendarObjectI22, _this$calendarObjectI23;
return (_this$calendarObjectI22 = (_this$calendarObjectI23 = this.calendarObjectInstance) === null || _this$calendarObjectI23 === void 0 ? void 0 : _this$calendarObjectI23.endDate) !== null && _this$calendarObjectI22 !== void 0 ? _this$calendarObjectI22 : null;
var _this$calendarObjectI24, _this$calendarObjectI25;
return (_this$calendarObjectI24 = (_this$calendarObjectI25 = this.calendarObjectInstance) === null || _this$calendarObjectI25 === void 0 ? void 0 : _this$calendarObjectI25.endDate) !== null && _this$calendarObjectI24 !== void 0 ? _this$calendarObjectI24 : null;
},
/**
* Returns the timezone of the event's end-date or null if the event is still loading
@ -17181,8 +17394,8 @@ __webpack_require__.r(__webpack_exports__);
* @return {string|null}
*/
endTimezone() {
var _this$calendarObjectI24, _this$calendarObjectI25;
return (_this$calendarObjectI24 = (_this$calendarObjectI25 = this.calendarObjectInstance) === null || _this$calendarObjectI25 === void 0 ? void 0 : _this$calendarObjectI25.endTimezoneId) !== null && _this$calendarObjectI24 !== void 0 ? _this$calendarObjectI24 : null;
var _this$calendarObjectI26, _this$calendarObjectI27;
return (_this$calendarObjectI26 = (_this$calendarObjectI27 = this.calendarObjectInstance) === null || _this$calendarObjectI27 === void 0 ? void 0 : _this$calendarObjectI27.endTimezoneId) !== null && _this$calendarObjectI26 !== void 0 ? _this$calendarObjectI26 : null;
},
/**
* Returns whether or not the event is all-day or null if the event is still loading
@ -17190,8 +17403,8 @@ __webpack_require__.r(__webpack_exports__);
* @return {boolean}
*/
isAllDay() {
var _this$calendarObjectI26, _this$calendarObjectI27;
return (_this$calendarObjectI26 = (_this$calendarObjectI27 = this.calendarObjectInstance) === null || _this$calendarObjectI27 === void 0 ? void 0 : _this$calendarObjectI27.isAllDay) !== null && _this$calendarObjectI26 !== void 0 ? _this$calendarObjectI26 : false;
var _this$calendarObjectI28, _this$calendarObjectI29;
return (_this$calendarObjectI28 = (_this$calendarObjectI29 = this.calendarObjectInstance) === null || _this$calendarObjectI29 === void 0 ? void 0 : _this$calendarObjectI29.isAllDay) !== null && _this$calendarObjectI28 !== void 0 ? _this$calendarObjectI28 : false;
},
/**
* Returns whether or not the event is a leave
@ -17199,8 +17412,8 @@ __webpack_require__.r(__webpack_exports__);
* @return {boolean}
*/
isLeave() {
var _this$calendarObjectI28, _this$calendarObjectI29;
return (_this$calendarObjectI28 = (_this$calendarObjectI29 = this.calendarObjectInstance) === null || _this$calendarObjectI29 === void 0 ? void 0 : _this$calendarObjectI29.isLeave) !== null && _this$calendarObjectI28 !== void 0 ? _this$calendarObjectI28 : false;
var _this$calendarObjectI30, _this$calendarObjectI31;
return (_this$calendarObjectI30 = (_this$calendarObjectI31 = this.calendarObjectInstance) === null || _this$calendarObjectI31 === void 0 ? void 0 : _this$calendarObjectI31.isLeave) !== null && _this$calendarObjectI30 !== void 0 ? _this$calendarObjectI30 : false;
},
/**
* Returns whether or not the event is pending
@ -17208,8 +17421,8 @@ __webpack_require__.r(__webpack_exports__);
* @return {boolean}
*/
isCalendarPending() {
var _this$calendarObjectI30, _this$calendarObjectI31;
return (_this$calendarObjectI30 = (_this$calendarObjectI31 = this.calendarObjectInstance) === null || _this$calendarObjectI31 === void 0 ? void 0 : _this$calendarObjectI31.isCalendarPending) !== null && _this$calendarObjectI30 !== void 0 ? _this$calendarObjectI30 : false;
var _this$calendarObjectI32, _this$calendarObjectI33;
return (_this$calendarObjectI32 = (_this$calendarObjectI33 = this.calendarObjectInstance) === null || _this$calendarObjectI33 === void 0 ? void 0 : _this$calendarObjectI33.isCalendarPending) !== null && _this$calendarObjectI32 !== void 0 ? _this$calendarObjectI32 : false;
},
/**
* Returns whether or not the user is allowed to modify the all-day setting
@ -17217,8 +17430,8 @@ __webpack_require__.r(__webpack_exports__);
* @return {boolean}
*/
canModifyAllDay() {
var _this$calendarObjectI32, _this$calendarObjectI33;
return (_this$calendarObjectI32 = (_this$calendarObjectI33 = this.calendarObjectInstance) === null || _this$calendarObjectI33 === void 0 ? void 0 : _this$calendarObjectI33.canModifyAllDay) !== null && _this$calendarObjectI32 !== void 0 ? _this$calendarObjectI32 : false;
var _this$calendarObjectI34, _this$calendarObjectI35;
return (_this$calendarObjectI34 = (_this$calendarObjectI35 = this.calendarObjectInstance) === null || _this$calendarObjectI35 === void 0 ? void 0 : _this$calendarObjectI35.canModifyAllDay) !== null && _this$calendarObjectI34 !== void 0 ? _this$calendarObjectI34 : false;
},
/**
* Returns the color the illustration should be colored in
@ -17250,8 +17463,8 @@ __webpack_require__.r(__webpack_exports__);
* @return {null | string}
*/
color() {
var _this$calendarObjectI34, _this$calendarObjectI35;
return (_this$calendarObjectI34 = (_this$calendarObjectI35 = this.calendarObjectInstance) === null || _this$calendarObjectI35 === void 0 ? void 0 : _this$calendarObjectI35.customColor) !== null && _this$calendarObjectI34 !== void 0 ? _this$calendarObjectI34 : null;
var _this$calendarObjectI36, _this$calendarObjectI37;
return (_this$calendarObjectI36 = (_this$calendarObjectI37 = this.calendarObjectInstance) === null || _this$calendarObjectI37 === void 0 ? void 0 : _this$calendarObjectI37.customColor) !== null && _this$calendarObjectI36 !== void 0 ? _this$calendarObjectI36 : null;
},
/**
* Returns whether or not to display save buttons
@ -17374,7 +17587,7 @@ __webpack_require__.r(__webpack_exports__);
* Returns an object with properties from RFCs including
* their displayName, a description, options, etc.
*
* @return {{comment, geo, color, timeTransparency, description, resources, location, client, categories, accessClass, priority, status, locations, articles, clients,embalmer,embalmers}}
* @return {{absenceType ,comment, geo, color, timeTransparency, description, resources, location, client, categories, accessClass, priority, status, locations, articles, clients,embalmer,embalmers}}
*/
rfcProps() {
return (0,_models_rfcProps_js__WEBPACK_IMPORTED_MODULE_0__.getRFCProperties)();
@ -17420,6 +17633,24 @@ __webpack_require__.r(__webpack_exports__);
return true;
}
return false;
},
/**
* Returns the absence type
*
* @return {string|null}
*/
absenceType() {
var _this$calendarObjectI38, _this$calendarObjectI39, _this$calendarObjectI40, _this$calendarObjectI41;
const isleave = (_this$calendarObjectI38 = (_this$calendarObjectI39 = this.calendarObjectInstance) === null || _this$calendarObjectI39 === void 0 ? void 0 : _this$calendarObjectI39.isLeave) !== null && _this$calendarObjectI38 !== void 0 ? _this$calendarObjectI38 : false;
const absenceType = (_this$calendarObjectI40 = (_this$calendarObjectI41 = this.calendarObjectInstance) === null || _this$calendarObjectI41 === void 0 ? void 0 : _this$calendarObjectI41.absenceType) !== null && _this$calendarObjectI40 !== void 0 ? _this$calendarObjectI40 : null;
if (absenceType) {
var _this$calendarObjectI42;
return (_this$calendarObjectI42 = this.calendarObjectInstance) === null || _this$calendarObjectI42 === void 0 ? void 0 : _this$calendarObjectI42.absenceType;
}
if (isleave && !absenceType) {
return 'LEAVE';
}
return '';
}
},
methods: {
@ -17765,15 +17996,22 @@ __webpack_require__.r(__webpack_exports__);
calendarObjectInstance: this.calendarObjectInstance
});
},
/**
* Toggles the event between all-day and timed
*/
toggleIsLeave(isLeave) {
this.$store.commit('toggleIsLeave', {
toggleIsPrivate(isPrivate) {
this.$store.commit('toggleIsPrivate', {
calendarObjectInstance: this.calendarObjectInstance,
isLeave
isPrivate
});
},
// /**
// * Toggles the event between all-day and timed
// */
// toggleIsLeave(isLeave) {
// this.$store.commit('toggleIsLeave', {
// calendarObjectInstance: this.calendarObjectInstance,
// isLeave
// })
// },
/**
* Toggles the event pending
*/
@ -17813,6 +18051,17 @@ __webpack_require__.r(__webpack_exports__);
watcher();
});
});
},
/**
* Updates the absence type of this event
*
* @param {string} absenceType New absence type
*/
updateAbsenceType(absenceType) {
this.$store.commit('changeAbsenceType', {
calendarObjectInstance: this.calendarObjectInstance,
absenceType
});
}
},
/**
@ -20791,6 +21040,35 @@ ___CSS_LOADER_EXPORT___.push([module.id, `.property-select__input[data-v-04aa9fc
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=style&index=0&id=c8d0aea8&lang=scss&scoped=true":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=style&index=0&id=c8d0aea8&lang=scss&scoped=true ***!
\*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js");
/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, `.property-select__input[data-v-c8d0aea8] {
width: calc(100% - 34px - 34px);
}`, ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=style&index=0&id=3787864a&lang=scss&scoped=true":
@ -21146,6 +21424,39 @@ ___CSS_LOADER_EXPORT___.push([module.id, `
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=style&index=0&id=fb6819ac&scoped=true&lang=css":
/*!**********************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=style&index=0&id=fb6819ac&scoped=true&lang=css ***!
\**********************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js");
/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, `
.checkbox-container[data-v-fb6819ac] {
display: flex;
align-items: center;
gap: 8px;
}
`, ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue?vue&type=style&index=0&id=673844b5&scoped=true&lang=css":
@ -21311,6 +21622,61 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsLeave_vue_vue_type_style_index_0_id_56b63a1e_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsLeave_vue_vue_type_style_index_0_id_56b63a1e_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsLeave_vue_vue_type_style_index_0_id_56b63a1e_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
/***/ }),
/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=style&index=0&id=fb6819ac&scoped=true&lang=css":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=style&index=0&id=fb6819ac&scoped=true&lang=css ***!
\**************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsPrivate_vue_vue_type_style_index_0_id_fb6819ac_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyIsPrivate.vue?vue&type=style&index=0&id=fb6819ac&scoped=true&lang=css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=style&index=0&id=fb6819ac&scoped=true&lang=css");
var options = {};
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsPrivate_vue_vue_type_style_index_0_id_fb6819ac_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsPrivate_vue_vue_type_style_index_0_id_fb6819ac_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsPrivate_vue_vue_type_style_index_0_id_fb6819ac_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsPrivate_vue_vue_type_style_index_0_id_fb6819ac_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
/***/ }),
/***/ "./src/components/AppNavigation/AppNavigationHeader.vue":
@ -23440,6 +23806,47 @@ component.options.__file = "src/components/Editor/Properties/PropertyIsLeave.vue
/***/ }),
/***/ "./src/components/Editor/Properties/PropertyIsPrivate.vue":
/*!****************************************************************!*\
!*** ./src/components/Editor/Properties/PropertyIsPrivate.vue ***!
\****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _PropertyIsPrivate_vue_vue_type_template_id_fb6819ac_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PropertyIsPrivate.vue?vue&type=template&id=fb6819ac&scoped=true */ "./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=template&id=fb6819ac&scoped=true");
/* harmony import */ var _PropertyIsPrivate_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PropertyIsPrivate.vue?vue&type=script&lang=js */ "./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=script&lang=js");
/* harmony import */ var _PropertyIsPrivate_vue_vue_type_style_index_0_id_fb6819ac_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PropertyIsPrivate.vue?vue&type=style&index=0&id=fb6819ac&scoped=true&lang=css */ "./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=style&index=0&id=fb6819ac&scoped=true&lang=css");
/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
;
/* normalize component */
var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
_PropertyIsPrivate_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
_PropertyIsPrivate_vue_vue_type_template_id_fb6819ac_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render,
_PropertyIsPrivate_vue_vue_type_template_id_fb6819ac_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
false,
null,
"fb6819ac",
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "src/components/Editor/Properties/PropertyIsPrivate.vue"
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
/***/ }),
/***/ "./src/components/Editor/Properties/PropertySelect.vue":
/*!*************************************************************!*\
!*** ./src/components/Editor/Properties/PropertySelect.vue ***!
@ -23481,6 +23888,47 @@ component.options.__file = "src/components/Editor/Properties/PropertySelect.vue"
/***/ }),
/***/ "./src/components/Editor/Properties/PropertySelectAbsenceType.vue":
/*!************************************************************************!*\
!*** ./src/components/Editor/Properties/PropertySelectAbsenceType.vue ***!
\************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _PropertySelectAbsenceType_vue_vue_type_template_id_c8d0aea8_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PropertySelectAbsenceType.vue?vue&type=template&id=c8d0aea8&scoped=true */ "./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=template&id=c8d0aea8&scoped=true");
/* harmony import */ var _PropertySelectAbsenceType_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PropertySelectAbsenceType.vue?vue&type=script&lang=js */ "./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=script&lang=js");
/* harmony import */ var _PropertySelectAbsenceType_vue_vue_type_style_index_0_id_c8d0aea8_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PropertySelectAbsenceType.vue?vue&type=style&index=0&id=c8d0aea8&lang=scss&scoped=true */ "./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=style&index=0&id=c8d0aea8&lang=scss&scoped=true");
/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
;
/* normalize component */
var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
_PropertySelectAbsenceType_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
_PropertySelectAbsenceType_vue_vue_type_template_id_c8d0aea8_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render,
_PropertySelectAbsenceType_vue_vue_type_template_id_c8d0aea8_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
false,
null,
"c8d0aea8",
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "src/components/Editor/Properties/PropertySelectAbsenceType.vue"
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
/***/ }),
/***/ "./src/components/Editor/Properties/PropertySelectAjax.vue":
/*!*****************************************************************!*\
!*** ./src/components/Editor/Properties/PropertySelectAjax.vue ***!
@ -25086,6 +25534,22 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=script&lang=js":
/*!****************************************************************************************!*\
!*** ./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=script&lang=js ***!
\****************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsPrivate_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyIsPrivate.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=script&lang=js");
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsPrivate_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./src/components/Editor/Properties/PropertySelect.vue?vue&type=script&lang=js":
/*!*************************************************************************************!*\
!*** ./src/components/Editor/Properties/PropertySelect.vue?vue&type=script&lang=js ***!
@ -25102,6 +25566,22 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=script&lang=js":
/*!************************************************************************************************!*\
!*** ./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=script&lang=js ***!
\************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertySelectAbsenceType_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertySelectAbsenceType.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=script&lang=js");
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertySelectAbsenceType_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=script&lang=js":
/*!*****************************************************************************************!*\
!*** ./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=script&lang=js ***!
@ -26305,6 +26785,23 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsLeave_vue_vue_type_template_id_56b63a1e_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyIsLeave.vue?vue&type=template&id=56b63a1e&scoped=true */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=template&id=56b63a1e&scoped=true");
/***/ }),
/***/ "./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=template&id=fb6819ac&scoped=true":
/*!**********************************************************************************************************!*\
!*** ./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=template&id=fb6819ac&scoped=true ***!
\**********************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsPrivate_vue_vue_type_template_id_fb6819ac_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render),
/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsPrivate_vue_vue_type_template_id_fb6819ac_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
/* harmony export */ });
/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsPrivate_vue_vue_type_template_id_fb6819ac_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyIsPrivate.vue?vue&type=template&id=fb6819ac&scoped=true */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=template&id=fb6819ac&scoped=true");
/***/ }),
/***/ "./src/components/Editor/Properties/PropertySelect.vue?vue&type=template&id=04aa9fca&scoped=true":
@ -26322,6 +26819,23 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertySelect_vue_vue_type_template_id_04aa9fca_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertySelect.vue?vue&type=template&id=04aa9fca&scoped=true */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelect.vue?vue&type=template&id=04aa9fca&scoped=true");
/***/ }),
/***/ "./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=template&id=c8d0aea8&scoped=true":
/*!******************************************************************************************************************!*\
!*** ./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=template&id=c8d0aea8&scoped=true ***!
\******************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertySelectAbsenceType_vue_vue_type_template_id_c8d0aea8_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render),
/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertySelectAbsenceType_vue_vue_type_template_id_c8d0aea8_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
/* harmony export */ });
/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertySelectAbsenceType_vue_vue_type_template_id_c8d0aea8_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertySelectAbsenceType.vue?vue&type=template&id=c8d0aea8&scoped=true */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=template&id=c8d0aea8&scoped=true");
/***/ }),
/***/ "./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=template&id=3787864a&scoped=true":
@ -26684,6 +27198,19 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsLeave_vue_vue_type_style_index_0_id_56b63a1e_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/style-loader/dist/cjs.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css */ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css");
/***/ }),
/***/ "./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=style&index=0&id=fb6819ac&scoped=true&lang=css":
/*!************************************************************************************************************************!*\
!*** ./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=style&index=0&id=fb6819ac&scoped=true&lang=css ***!
\************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsPrivate_vue_vue_type_style_index_0_id_fb6819ac_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/style-loader/dist/cjs.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyIsPrivate.vue?vue&type=style&index=0&id=fb6819ac&scoped=true&lang=css */ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsPrivate.vue?vue&type=style&index=0&id=fb6819ac&scoped=true&lang=css");
/***/ }),
/***/ "./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderDatePicker.vue?vue&type=style&index=0&id=e8250812&lang=scss":
@ -27160,6 +27687,23 @@ __webpack_require__.r(__webpack_exports__);
/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
/***/ }),
/***/ "./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=style&index=0&id=c8d0aea8&lang=scss&scoped=true":
/*!*********************************************************************************************************************************!*\
!*** ./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=style&index=0&id=c8d0aea8&lang=scss&scoped=true ***!
\*********************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_2_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertySelectAbsenceType_vue_vue_type_style_index_0_id_c8d0aea8_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/resolve-url-loader/index.js!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertySelectAbsenceType.vue?vue&type=style&index=0&id=c8d0aea8&lang=scss&scoped=true */ "./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=style&index=0&id=c8d0aea8&lang=scss&scoped=true");
/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_2_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertySelectAbsenceType_vue_vue_type_style_index_0_id_c8d0aea8_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_2_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertySelectAbsenceType_vue_vue_type_style_index_0_id_c8d0aea8_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};
/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_2_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertySelectAbsenceType_vue_vue_type_style_index_0_id_c8d0aea8_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_2_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertySelectAbsenceType_vue_vue_type_style_index_0_id_c8d0aea8_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]
/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
/***/ }),
/***/ "./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=style&index=0&id=3787864a&lang=scss&scoped=true":
@ -27886,6 +28430,27 @@ if(false) {}
/***/ }),
/***/ "./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=style&index=0&id=c8d0aea8&lang=scss&scoped=true":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=style&index=0&id=c8d0aea8&lang=scss&scoped=true ***!
\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// style-loader: Adds some css to the DOM by adding a <style> tag
// load the styles
var content = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/resolve-url-loader/index.js!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertySelectAbsenceType.vue?vue&type=style&index=0&id=c8d0aea8&lang=scss&scoped=true */ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAbsenceType.vue?vue&type=style&index=0&id=c8d0aea8&lang=scss&scoped=true");
if(content.__esModule) content = content.default;
if(typeof content === 'string') content = [[module.id, content, '']];
if(content.locals) module.exports = content.locals;
// add the styles to the DOM
var add = (__webpack_require__(/*! !../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ "./node_modules/vue-style-loader/lib/addStylesClient.js")["default"])
var update = add("23d09bee", content, false, {});
// Hot Module Replacement
if(false) {}
/***/ }),
/***/ "./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=style&index=0&id=3787864a&lang=scss&scoped=true":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=style&index=0&id=3787864a&lang=scss&scoped=true ***!
@ -28077,4 +28642,4 @@ module.exports = "data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/sv
/***/ })
}]);
//# sourceMappingURL=calendar-src_views_Calendar_vue-data_image_svg_xml_3csvg_20xmlns_27http_www_w3_org_2000_svg_27_20heigh-4a4254.js.map?v=cb7912c432f0c01a7af2
//# sourceMappingURL=calendar-src_views_Calendar_vue-data_image_svg_xml_3csvg_20xmlns_27http_www_w3_org_2000_svg_27_20heigh-4a4254.js.map?v=571272044a4c2cfc0ea7

View File

@ -42554,4 +42554,4 @@ function hasInjectionContext() {
/***/ })
}]);
//# sourceMappingURL=calendar-vendors-node_modules_autosize_dist_autosize_esm_js-node_modules_html-entities_lib_index_js-no-4072c5.js.map?v=7212b31e059bc10c256e
//# sourceMappingURL=calendar-vendors-node_modules_autosize_dist_autosize_esm_js-node_modules_html-entities_lib_index_js-no-4072c5.js.map?v=1d12f5e341e36b0fcd1d

View File

@ -104883,4 +104883,4 @@ module.exports = /*#__PURE__*/JSON.parse('{"compressed":true,"categories":[{"id"
/***/ })
}]);
//# sourceMappingURL=calendar-vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065.js.map?v=55e669bcb78e07cd54cc
//# sourceMappingURL=calendar-vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065.js.map?v=88354dc01b19c1f3f2fe

View File

@ -21864,4 +21864,4 @@ const webNamespaces = {
/***/ })
}]);
//# sourceMappingURL=calendar-vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981.js.map?v=31a7d4ece3cdde2d67f1
//# sourceMappingURL=calendar-vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981.js.map?v=3a2ab5c12f0771c82ad1

View File

@ -24822,4 +24822,4 @@ window._registerCustomPickerElement = _;
/***/ })
}]);
//# sourceMappingURL=calendar-vendors-node_modules_nextcloud_vue-dashboard_dist_vue-dashboard_js-node_modules_css-loader_di-9e6f3d.js.map?v=56b7e44c1982f74f69ca
//# sourceMappingURL=calendar-vendors-node_modules_nextcloud_vue-dashboard_dist_vue-dashboard_js-node_modules_css-loader_di-9e6f3d.js.map?v=94406568c4140a6ddece

View File

@ -80146,4 +80146,4 @@ module.exports = /*#__PURE__*/JSON.parse('{"compressed":true,"categories":[{"id"
/***/ })
}]);
//# sourceMappingURL=calendar-vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f.js.map?v=7ec0cf6b65f5c745fa03
//# sourceMappingURL=calendar-vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f.js.map?v=214ba50739254b654bf4

View File

@ -2030,4 +2030,4 @@ render._withStripped = true
/***/ })
}]);
//# sourceMappingURL=calendar-vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8.js.map?v=1ec24b5ef07652c6dd39
//# sourceMappingURL=calendar-vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8.js.map?v=b90524c103590fa7a133

View File

@ -0,0 +1,53 @@
<template>
<div v-if="!isReadOnly" class="property-title-time-picker">
<div class="property-title-time-picker__all-day">
<NcCheckboxRadioSwitch :checked="isPrivate"
@update:checked="toggleIsPrivate">
{{ $t('calendar', 'Privé') }}
</NcCheckboxRadioSwitch>
</div>
</div>
<div v-else>
{{ getIsPrivateLabel }}
</div>
</template>
<script>
import { NcCheckboxRadioSwitch } from '@nextcloud/vue'
export default {
name: "PropertyIsPrivate",
components: {
NcCheckboxRadioSwitch,
},
props: {
isPrivate: {
type: Boolean,
default: false
},
isReadOnly: {
type: Boolean,
default: false
}
},
computed: {
getIsPrivateLabel() {
return this.isPrivate ? this.$t('calendar', 'Privé') : this.$t('calendar', 'Mettre en privé');
}
},
methods: {
toggleIsPrivate() {
const newState = !this.isPrivate;
this.$emit('toggle-is-private',newState)
},
}
};
</script>
<style scoped>
.checkbox-container {
display: flex;
align-items: center;
gap: 8px;
}
</style>

View File

@ -0,0 +1,72 @@
<template>
<div class="property-select">
<div class="property-select__input"
:class="{ 'property-select__input--readonly': isReadOnly }">
<NcSelect v-if="!isReadOnly"
:options="options"
:searchable="true"
:multiple="false"
:taggable="false"
:name="readableName"
:value="selectedValue"
:placeholder="placeholder"
:clearable="true"
:labelOutside="true"
input-id="value"
label="label"
@input="changeValue" />
<div v-else>{{ selectedValue.label }}</div>
</div>
</div>
</template>
<script>
import { NcSelect } from '@nextcloud/vue';
import PropertyMixin from '../../../mixins/PropertyMixin.js'
export default {
name: 'PropertySelectAbsenceType',
components: {
NcSelect,
},
props: {
isReadOnly: {
type: Boolean,
default: false, // Par défaut, on permet la modification
}
},
data() {
return {
properties: [
{ value: 'LEAVE', label: 'Congé' },
{ value: 'REST', label: 'Repos' },
{ value: 'DISEASE', label: 'Arrêt maladie' },
],
};
},
mixins: [
PropertyMixin,
],
computed: {
options() {
return this.properties;
},
selectedValue() {
const value = this.value
return this.properties.find((option) => option.value == value)
},
},
methods: {
changeValue(selectedOption) {
this.$emit('update:value', selectedOption.value ?? null);
},
},
};
</script>
<style lang="scss" scoped>
.property-select {
&__input {
width: calc(100% - 34px - 34px);
}
}
</style>

View File

@ -41,6 +41,7 @@ import { getAllObjectsInTimeRange } from '../../utils/calendarObject.js'
*/
export function eventSourceFunction(calendarObjects, calendar, start, end, timezone) {
const fcEvents = []
const authUser = OC.currentUser;
for (const calendarObject of calendarObjects) {
let allObjectsInTimeRange
try {
@ -120,9 +121,39 @@ export function eventSourceFunction(calendarObjects, calendar, start, end, timez
}
let isCalendarPending = false;
let objectProperties = object._properties.get('ISCALENDARPENDING');
if (objectProperties && objectProperties.length > 0) {
isCalendarPending = objectProperties[0]._value == "1" ? true : false;
let objectPropertiesPending = object._properties.get('ISCALENDARPENDING');
if (objectPropertiesPending && objectPropertiesPending.length > 0) {
isCalendarPending = objectPropertiesPending[0]._value == "1" ? true : false;
}
let isPrivateEvent = false;
let objectPropertiesPrivate = object._properties.get('ISPRIVATE');
if (objectPropertiesPrivate && objectPropertiesPrivate.length > 0) {
isPrivateEvent = objectPropertiesPrivate[0]._value == "1" ? true : false;
}
//Get owen object's user
let owenUrl = calendarObject.dav._parent.owner
let owenUser = owenUrl.replace('/remote.php/dav/principals/users/','').split('/')[0]
if (!owenUser) {
//Get from url shared calendar
owenUrl = calendarObject.dav._parent.url
owenUser = owenUrl.replace('/remote.php/dav/calendars/' + authUser + '/personal_shared_by_' ,'').split('/')[0]
}
const isOwenOfEvent = owenUser == authUser
if (isPrivateEvent && !isOwenOfEvent ) {
title = t('calendar', `Absent (${owenUser})`)
}
let absenceTypeIsLeave = false;
let absenceTypeProperties = object._properties.get('ABSENCETYPE');
if (absenceTypeProperties && absenceTypeProperties.length > 0) {
const absenceTypeValue = absenceTypeProperties[0]._value
if(absenceTypeValue == 'LEAVE'){
absenceTypeIsLeave = true;
}
}
const fcEvent = {
@ -149,7 +180,11 @@ export function eventSourceFunction(calendarObjects, calendar, start, end, timez
davUrl: calendarObject.dav.url,
location: object.location,
description: object.description,
isCalendarPending: isCalendarPending
isCalendarPending: isCalendarPending,
isPrivate: isPrivateEvent,
calendarObjectOwen : owenUser ,
calendarObjectIsOwen : isOwenOfEvent,
absenceTypeIsLeave : absenceTypeIsLeave
},
}
@ -159,6 +194,12 @@ export function eventSourceFunction(calendarObjects, calendar, start, end, timez
fcEvent.textColor = generateTextColorForHex(calendar.color)
}
if(absenceTypeIsLeave){
fcEvent.backgroundColor = calendar.color
fcEvent.borderColor = calendar.color
fcEvent.textColor = generateTextColorForHex(calendar.color)
}
if (object.color) {
const customColor = getHexForColorName(object.color)
if (customColor) {

View File

@ -69,6 +69,11 @@ export default function(store, router, route, window, isWidget = false, ref = un
* @param {boolean} isWidget Whether the calendar is embedded in a widget
*/
function handleEventClick(event, store, router, route, window, isWidget = false) {
if(event.extendedProps.isPrivate && !event.extendedProps.calendarObjectIsOwen ){
return;
}
if (isWidget) {
store.commit('setSelectedEvent', { object: event.extendedProps.objectId, recurrenceId: event.extendedProps.recurrenceId })
return

View File

@ -145,6 +145,16 @@ export default {
return this.calendarObjectInstance?.comment ?? null
},
/**
* Returns the isPrivate property
*
* @return {boolean}
*/
isPrivate() {
return this.calendarObjectInstance?.isPrivate ?? false
},
/**
* Returns the description or null if the event is still loading
@ -387,7 +397,7 @@ export default {
* Returns an object with properties from RFCs including
* their displayName, a description, options, etc.
*
* @return {{comment, geo, color, timeTransparency, description, resources, location, client, categories, accessClass, priority, status, locations, articles, clients,embalmer,embalmers}}
* @return {{absenceType ,comment, geo, color, timeTransparency, description, resources, location, client, categories, accessClass, priority, status, locations, articles, clients,embalmer,embalmers}}
*/
rfcProps() {
return getRFCProperties()
@ -439,6 +449,24 @@ export default {
return false
},
/**
* Returns the absence type
*
* @return {string|null}
*/
absenceType() {
const isleave = this.calendarObjectInstance?.isLeave ?? false
const absenceType = this.calendarObjectInstance?.absenceType ?? null
if (absenceType) {
return this.calendarObjectInstance?.absenceType
}
if (isleave && !absenceType ) {
return 'LEAVE'
}
return '';
},
},
methods: {
/**
@ -796,16 +824,23 @@ export default {
})
},
/**
* Toggles the event between all-day and timed
*/
toggleIsLeave(isLeave) {
this.$store.commit('toggleIsLeave', {
toggleIsPrivate(isPrivate) {
this.$store.commit('toggleIsPrivate', {
calendarObjectInstance: this.calendarObjectInstance,
isLeave
isPrivate
})
},
// /**
// * Toggles the event between all-day and timed
// */
// toggleIsLeave(isLeave) {
// this.$store.commit('toggleIsLeave', {
// calendarObjectInstance: this.calendarObjectInstance,
// isLeave
// })
// },
/**
* Toggles the event pending
*/
@ -849,6 +884,18 @@ export default {
})
})
},
/**
* Updates the absence type of this event
*
* @param {string} absenceType New absence type
*/
updateAbsenceType(absenceType) {
this.$store.commit('changeAbsenceType', {
calendarObjectInstance: this.calendarObjectInstance,
absenceType,
})
}
},
/**
* This is executed before entering the Editor routes

View File

@ -64,6 +64,10 @@ const getDefaultEventObject = (props = {}) => Object.assign({}, {
client : null,
//embalmer(Thanato) of the event
embalmer : null,
//absenceType
absenceType : null,
//Private
isPrivate: false,
//comment of the event
comment : null,
// description of the event
@ -110,12 +114,13 @@ const mapEventComponentToEventObject = (eventComponent) => {
eventComponent,
title: eventComponent.title,
isAllDay: eventComponent.isAllDay(),
isLeave: false,
isPrivate: false,
isCalendarPending: false,
canModifyAllDay: eventComponent.canModifyAllDay(),
location: eventComponent.location,
client : "CLIENT",
embalmer : "TEST",
absenceType : "",
comment : "",
description: eventComponent.description,
accessClass: eventComponent.accessClass,
@ -214,9 +219,22 @@ const mapEventComponentToEventObject = (eventComponent) => {
eventObject.comment = eventComponent.getFirstPropertyFirstValue('COMMENT');
}
if(eventComponent.hasProperty('ISLEAVE')){
eventObject.isLeave = eventComponent.getFirstPropertyFirstValue('ISLEAVE') === '1' ? true : false;
if(eventComponent.hasProperty('ISPRIVATE')){
eventObject.isPrivate = eventComponent.getFirstPropertyFirstValue('ISPRIVATE') === '1' ? true : false;
}
if(eventComponent.hasProperty('ABSENCETYPE')){
eventObject.absenceType = eventComponent.getFirstPropertyFirstValue('ABSENCETYPE');
}else{
if(eventComponent.hasProperty('ISLEAVE')){
if( eventComponent.getFirstPropertyFirstValue('ISLEAVE') === '1'){
eventObject.absenceType = 'LEAVE';
}
}
}
if(eventComponent.hasProperty('ISCALENDARPENDING')){
eventObject.isCalendarPending = eventComponent.getFirstPropertyFirstValue('ISCALENDARPENDING') === '1' ? true : false;
}
@ -235,7 +253,7 @@ const copyCalendarObjectInstanceIntoEventComponent = (eventObject, eventComponen
eventComponent.location = eventObject.location
eventComponent.client = eventObject.client
eventComponent.embalmer = eventObject.embalmer
eventComponent.isLeave = eventObject.isLeave
eventComponent.isPrivate = eventObject.isPrivate
eventComponent.isCalendarPending = eventObject.isCalendarPending
eventComponent.comment = eventObject.comment
eventComponent.description = eventObject.description

View File

@ -142,6 +142,11 @@ const getRFCProperties = () => {
icon: 'Human',
},
absenceType: {
readableName: t('calendar', 'Type d\'absence'),
placeholder: t('calendar', 'Type d\'absence'),
},
embalmers: {
readableName: t('calendar', 'Embalmers'),
icon: 'Human',
@ -152,6 +157,7 @@ const getRFCProperties = () => {
tagPlaceholder: t('calendar', 'Choose thanatopracteur'),
options: [],
},
embalmer: {
readableName: t('calendar', 'Embalmer'),

View File

@ -285,6 +285,19 @@ const mutations = {
calendarObjectInstance.eventComponent.endDate.addDuration(DurationValue.fromSeconds(60 * 60 * 24))
}
},
/**
* Is private
*
* @param {object} state The Vuex state
* @param {object} data The destructuring object
* @param {object} data.calendarObjectInstance The calendarObjectInstance object
*/
toggleIsPrivate(state, { calendarObjectInstance, isPrivate }) {
calendarObjectInstance.eventComponent.isPrivate = isPrivate
calendarObjectInstance.isPrivate = isPrivate
},
/**
* Is leave
@ -390,6 +403,43 @@ const mutations = {
calendarObjectInstance.embalmer = embalmer
},
/**
* Change the absence type of an event
*
* @param {object} state The Vuex state
* @param {object} data The destructuring object
* @param {object} data.calendarObjectInstance The calendarObjectInstance object
* @param {string} data.embalmer New embalmer to set
*/
changeAbsenceType(state, { calendarObjectInstance, absenceType }) {
calendarObjectInstance.eventComponent.absenceType = absenceType ?? null
calendarObjectInstance.absenceType = absenceType ?? null
if(absenceType){
const types = [
{ value: 'LEAVE', label: 'Congé' },
{ value: 'REST', label: 'Repos' },
{ value: 'DISEASE', label: 'Arrêt maladie' },
];
types.forEach((element) => {
if(element.value == absenceType){
calendarObjectInstance.title = element.label
calendarObjectInstance.eventComponent.title = element.label
if(absenceType == 'LEAVE'){
const startDate = calendarObjectInstance.eventComponent.startDate
const endDate = calendarObjectInstance.eventComponent.endDate
startDate.hour = 8 ; endDate.hour = 17
calendarObjectInstance.startDate = getDateFromDateTimeValue(startDate)
calendarObjectInstance.endDate = getDateFromDateTimeValue(endDate)
}
}
})
}
},
/**
* Change the description of an event
*
@ -1539,6 +1589,12 @@ const mutations = {
}
},
setAbsenceType(state, { calendarObjectInstance, absenceType }) {
if (calendarObjectInstance) {
calendarObjectInstance.absenceType = absenceType;
}
},
}
const getters = {}
@ -1731,8 +1787,10 @@ const actions = {
let additionalFieldWasUpdated =
eventComponent.client != null ||
eventComponent.isPrivate != null ||
eventComponent.comment != null ||
eventComponent.isLeave != null ||
eventComponent.absenceType ||
eventComponent.isCalendarPending != null;
if (eventComponent.isDirty() || additionalFieldWasUpdated) {
const isForkedItem = eventComponent.primaryItem !== null

View File

@ -258,20 +258,22 @@ const actions = {
icsValue = setCustomKeyValuesArrayToIcsAndReturnIcs(icsValue,customKeyValue);
}
}
if(eventComponent.isLeave != null){
let isLeaveValue = eventComponent.isLeave ? "1" : "0";
let newIsLeaveKeyValue = "ISLEAVE:"+isLeaveValue;
let regex = /ISLEAVE:\d+/;
if(eventComponent.isPrivate != null){
let isPrivateValue = eventComponent.isPrivate ? "1" : "0";
let newIsPrivateKeyValue = "ISPRIVATE:"+isPrivateValue;
let regex = /ISPRIVATE:\d+/;
if(regex.test(icsValue)){
icsValue = icsValue.replace(regex, newIsLeaveKeyValue);
icsValue = icsValue.replace(regex, newIsPrivateKeyValue);
}
else{
const customKeyValue = {
"ISLEAVE": isLeaveValue
"ISPRIVATE": isPrivateValue
};
icsValue = setCustomKeyValuesArrayToIcsAndReturnIcs(icsValue,customKeyValue);
}
}
if(eventComponent.isCalendarPending != null){
let isCalendarPendingValue = eventComponent.isCalendarPending ? "1" : "0";
let newIsCalendarPendingKeyValue = "ISCALENDARPENDING:"+isCalendarPendingValue;
@ -286,6 +288,21 @@ const actions = {
icsValue = setCustomKeyValuesArrayToIcsAndReturnIcs(icsValue,customKeyValue);
}
}
if(eventComponent.absenceType != null && eventComponent.absenceType != ''){
let absenceTypeValue = eventComponent.absenceType;
let key = "ABSENCETYPE:"+absenceTypeValue;
let regex = /^ABSENCETYPE:.*$/m;
if(regex.test(icsValue)){
icsValue = icsValue.replace(regex, key);
}
else{
const customKeyValue = {
"ABSENCETYPE": absenceTypeValue
};
icsValue = setCustomKeyValuesArrayToIcsAndReturnIcs(icsValue,customKeyValue);
}
}
}
calendarObject.dav.data = icsValue;
await calendarObject.dav.update()
@ -305,8 +322,9 @@ const actions = {
"CLIENT": eventComponent.client,
"EMBALMER": eventComponent.embalmer,
"COMMENT": eventComponent.comment,
"ISLEAVE": eventComponent.isLeave ? "1" : "0",
"ISPRIVATE": eventComponent.isPrivate ? "1" : "0",
"ISCALENDARPENDING": eventComponent.isCalendarPending ? "1" : "0",
"ABSENCETYPE": eventComponent.absenceType ?? ''
};
icsValue = setCustomKeyValuesArrayToIcsAndReturnIcs(icsValue,customKeyValue);
}

View File

@ -103,10 +103,28 @@
@update-end-timezone="updateEndTimezone"
@toggle-all-day="toggleAllDay"/>
<PropertyIsLeave
<div style='margin-top: 13px; display:flex ;width: 81%;'>
<div style='width:100%'>
<PropertySelectAbsenceType
:value="absenceType"
:is-read-only="isReadOnly"
:prop-model="rfcProps.absenceType"
:noWrap='true'
@update:value="updateAbsenceType" />
</div>
<!-- <div style='width:30% ;margin-top: -11px;'>
<PropertyIsPrivate
:is-read-only="isReadOnly"
:is-private="isPrivate"
@toggle-is-private="toggleIsPrivate"
/>
</div> -->
</div>
<!-- <PropertyIsLeave
:is-read-only="isReadOnly"
:is-leave="isLeave"
@toggle-is-leave="toggleIsLeave" />
@toggle-is-leave="toggleIsLeave" /> -->
<!-- <PropertyIsCalendarPending
:is-read-only="isReadOnly"
@ -388,6 +406,7 @@ import PropertySelectClient from "../components/Editor/Properties/PropertySelect
import PropertySelectArticle from "../components/Editor/Properties/PropertySelectArticle.vue";
import PropertyIsLeave from '../components/Editor/Properties/PropertyIsLeave.vue';
import PropertyIsCalendarPending from '../components/Editor/Properties/PropertyIsCalendarPending';
import PropertySelectAbsenceType from "../components/Editor/Properties/PropertySelectAbsenceType.vue";
export default {
name: 'EditSidebar',
@ -429,6 +448,8 @@ export default {
AttachmentsList,
CalendarPickerHeader,
PropertyTitle,
PropertySelectAbsenceType,
},
mixins: [
EditorMixin,

View File

@ -146,11 +146,30 @@
@toggle-all-day="toggleAllDay"
/>
<PropertyIsLeave
<div style='display:flex ;margin-left: 7%;'>
<div style='width:70%'>
<PropertySelectAbsenceType
:value="absenceType"
:is-read-only="isReadOnly"
:prop-model="rfcProps.absenceType"
:noWrap='true'
sle
@update:value="updateAbsenceType" />
</div>
<!-- <div style='width:30% ;margin-top: -11px;'>
<PropertyIsPrivate
:is-read-only="isReadOnly"
:is-private="isPrivate"
@toggle-is-private="toggleIsPrivate"/>
</div> -->
</div>
<!-- <PropertyIsLeave
:is-read-only="isReadOnlyOrViewing"
:is-leave="isLeave"
@toggle-is-leave="toggleIsLeave"
/>
/> -->
<!-- <PropertyIsCalendarPending
:is-read-only="isReadOnlyOrViewing"
@ -285,7 +304,6 @@ import Download from "vue-material-design-icons/Download.vue";
import ContentDuplicate from "vue-material-design-icons/ContentDuplicate.vue";
import EditIcon from "vue-material-design-icons/Pencil.vue";
import { mapState } from "vuex";
import { showError } from "@nextcloud/dialogs";
import PropertySelect from "../components/Editor/Properties/PropertySelect.vue";
import PropertySelectAjax from "../components/Editor/Properties/PropertySelectAjax.vue";
import PropertySelectAjaxMultiple from "../components/Editor/Properties/PropertySelectAjaxMultiple.vue";
@ -294,6 +312,9 @@ import PropertySelectClient from "../components/Editor/Properties/PropertySelect
import PropertySelectArticle from "../components/Editor/Properties/PropertySelectArticle.vue";
import PropertyIsLeave from "../components/Editor/Properties/PropertyIsLeave.vue";
import PropertyIsCalendarPending from "../components/Editor/Properties/PropertyIsCalendarPending";
import PropertySelectAbsenceType from "../components/Editor/Properties/PropertySelectAbsenceType.vue";
import PropertyIsPrivate from "../components/Editor/Properties/PropertyIsPrivate.vue";
export default {
name: "EditSimple",
@ -311,6 +332,7 @@ export default {
PropertyText,
PropertyTitleTimePicker,
PropertyTitle,
PropertySelectAbsenceType,
Popover,
Actions,
ActionButton,
@ -326,6 +348,8 @@ export default {
InviteesList,
NcButton,
EditIcon,
PropertyIsPrivate,
},
mixins: [EditorMixin],
data() {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,10 @@
<?php
declare(strict_types=1);
namespace OCA\Gestion\Constants;
abstract class AbsenceTypeConstant
{
const LEAVE = "LEAVE";
const DISEASE = "DISEASE";
const REST = "REST";
}

View File

@ -5,5 +5,19 @@ namespace OCA\Gestion\Constants;
abstract class VCalendarPropertyConstant
{
const PROPERTY_IS_LEAVE = "ISLEAVE";
const PROPERTY_IS_PRIVATE = "ISPRIVATE";
const PROPERTY_IS_CALENDAR_PENDING = "ISCALENDARPENDING";
const ABSENCE_TYPE = "ABSENCETYPE";
const ABSENCE_TYPES = [
AbsenceTypeConstant::LEAVE,
AbsenceTypeConstant::REST,
AbsenceTypeConstant::DISEASE
];
const ABSENCE_TYPES_KEYS_VALUES = [
AbsenceTypeConstant::LEAVE => "CONGE",
AbsenceTypeConstant::REST => "REPOS",
AbsenceTypeConstant::DISEASE => "MALADIE"
];
}

View File

@ -1,21 +1,23 @@
<?php
namespace OCA\Gestion\Db;
use OCA\Gestion\Constants\ClientTemplateTypeConstant;
use OCA\Gestion\Constants\FactureStatusConstant;
use OCA\Gestion\Constants\FactureTypeConstant;
use \Datetime;
use OCP\IL10N;
use OCP\IDBConnection;
use Psr\Log\LoggerInterface;
use OCA\Gestion\Helpers\DateHelpers;
use OCA\Gestion\Helpers\PriceHelpers;
use OCP\IDBConnection;
use OCP\IL10N;
use \Datetime;
use OCA\Gestion\Constants\BddConstant;
use OCA\Gestion\Constants\DevisMentionConstant;
use OCA\Gestion\Constants\MultipleFactureTypeConstant;
use OCA\Gestion\Helpers\VCalendarHelpers;
use OCA\Gestion\Constants\ProductConstant;
use OCA\Gestion\Helpers\FileExportHelpers;
use Psr\Log\LoggerInterface;
use OCA\Gestion\Helpers\VCalendarHelpers;
use OCA\Gestion\Constants\AbsenceTypeConstant;
use OCA\Gestion\Constants\FactureTypeConstant;
use OCA\Gestion\Constants\DevisMentionConstant;
use OCA\Gestion\Constants\FactureStatusConstant;
use OCA\Gestion\Constants\VCalendarPropertyConstant;
use OCA\Gestion\Constants\ClientTemplateTypeConstant;
use OCA\Gestion\Constants\MultipleFactureTypeConstant;
class Bdd {
private String $charset = 'utf8mb4';
@ -605,7 +607,7 @@ class Bdd {
}
public function getOneFacture($numfacture, $idNextcloud){
$sql = "SELECT ".$this->tableprefix."facture.id," . $this->tableprefix . "facture.version," . $this->tableprefix . "facture.num, "
$sql = "SELECT ".$this->tableprefix."facture.id," . $this->tableprefix . "facture.version," . $this->tableprefix . "facture.num, " . $this->tableprefix . "facture.facture_number, "
.$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum, comment, date_paiement, type_paiement, id_devis, ".$this->tableprefix."client.nom, prenom, entreprise,"
.$this->tableprefix."devis.comment as dcomment,".$this->tableprefix."lieu.nom as lieu, ".$this->tableprefix."lieu.adresse as adresse_soin,"
.$this->tableprefix."defunt.nom as nom_defunt, "
@ -793,6 +795,7 @@ class Bdd {
.$this->tableprefix."defunt.observations_generales,"
.$this->tableprefix."defunt.product_photo,"
.$this->tableprefix."defunt.product_photo_name,"
.$this->tableprefix."defunt.product_brand,"
.$this->tableprefix."client.id as clientid, ".$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, legal_one, entreprise, telephone, mail, ".$this->tableprefix."client.adresse,"
.$this->tableprefix."lieu.nom as lieu, ".$this->tableprefix."lieu.adresse as adresse_soin ,"
.$this->tableprefix."thanato.nom as nom_thanato, ".$this->tableprefix."thanato.prenom as prenom_thanato, "
@ -1414,7 +1417,14 @@ class Bdd {
}
$factureDate = $devisDatetime->format('Y-m-d');
$factureNumber = $this->getFactureNumberByDate($devisDatetime);
$fullFactureNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($devisDatetime,$factureNumber,"FAC");
$facturePrefix = "FAC";
$devis = json_decode($this->getOneDevis($devisId, $idNextcloud))[0];
$isDevisNegative = $this->isDevisNegative($devisId,clientId: $devis->clientid);
if($isDevisNegative){
$facturePrefix = "AVO";
}
$fullFactureNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($devisDatetime,$factureNumber,$facturePrefix);
$last = 0;
$last = $this->lastNumFacture($idNextcloud);
$sql = "INSERT INTO `".$this->tableprefix."facture` (`date`,`id_nextcloud`,`num`,`date_paiement`,`type_paiement`,`id_devis`,`user_id`, `version`,`facture_number`) VALUES (?,?,?,?,?,?,?,?,?);";
@ -1514,6 +1524,47 @@ class Bdd {
$this->execSQLNoData($sql, array($idNextcloud,'inserer un texte ici'));
return true;
}
private function isDevisNegative($devisId,$clientId){
$sql = "SELECT produit_devis.quantite,produit.prix_unitaire,produit.id
FROM ".$this->tableprefix."produit_devis as produit_devis
LEFT JOIN ".$this->tableprefix."produit as produit ON produit_devis.produit_id = produit.id
WHERE produit_devis.devis_id = ?;";
$devisProduits = $this->execSQLNoJsonReturn($sql,array($devisId));
$total = 0;
if(!empty($devisProduits)){
foreach($devisProduits as $currentProduit){
if($currentProduit['id'] != null){
$produitPrice = $this->getProductPriceByClient($currentProduit['id'],$clientId,$currentProduit['prix_unitaire']);
$total += $produitPrice * $currentProduit['quantite'];
}
}
}
return $total < 0;
}
private function getProduitDevisById($produitDevisId){
$sql = "SELECT * FROM ".$this->tableprefix."produit_devis as produit_devis
WHERE produit_devis.id = ?;";
$result = $this->execSQLNoJsonReturn($sql,[$produitDevisId]);;
if(!empty($result)){
return $result[0];
}
return null;
}
private function getFactureByDevisId($devisId){
$sql = "SELECT * FROM ".$this->tableprefix."facture as facture
WHERE facture.id_devis = ?";
$result = $this->execSQLNoJsonReturn($sql,[$devisId]);
if(!empty($result)){
return $result[0];
}
return null;
}
/**
* UPDATE
@ -1526,7 +1577,15 @@ class Bdd {
if($facture['date_paiement'] != $data){
$facturationDatetime = Datetime::createFromFormat('Y-m-d',$data);
$factureNumber = $this->getFactureNumberByDate($facturationDatetime);
$fullFactureNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($facturationDatetime,$factureNumber,"FAC");
$facturePrefix = "FAC";
if($facture['id_devis']){
$devis = json_decode($this->getOneDevis($facture['id_devis'], $idNextcloud))[0];
$isDevisNegative = $this->isDevisNegative($facture['id_devis'],$devis->clientid);
if($isDevisNegative){
$facturePrefix = "AVO";
}
}
$fullFactureNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($facturationDatetime,$factureNumber,$facturePrefix);
$sql = "UPDATE ".$this->tableprefix.$table." SET `facture_number`= ? WHERE `id` = ?";
$this->execSQLNoData($sql, array($factureNumber, $id));
$sql = "UPDATE ".$this->tableprefix.$table." SET $column = ?, `num`= ? WHERE `id` = ?";
@ -1539,6 +1598,16 @@ class Bdd {
$devis = json_decode($this->getOneDevis(htmlentities(rtrim($data)), $idNextcloud))[0];
$sql = "UPDATE ".$this->tableprefix.$table." SET $column = ?, `date`= ?, `version`= ? WHERE `id` = ?";
$this->execSQLNoData($sql, array(htmlentities(rtrim($data)), $devis->date, html_entity_decode($devis->version),$id));
$facturePrefix = "FAC";
$factureNumber = $facture->facture_number;
$isDevisNegative = $this->isDevisNegative($devis->devisid,$devis->clientid);
if($isDevisNegative){
$facturePrefix = "AVO";
}
$facturationDatetime = new Datetime($facture->date);
$fullFactureNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($facturationDatetime,$factureNumber,$facturePrefix);
$sql = "UPDATE ".$this->tableprefix.$table." SET `num`= ? WHERE `id` = ?";
$this->execSQLNoData($sql, array($fullFactureNumber, $id));
} else if(strcmp($table, "lieu")==0 && (strcmp($column, "latitude")==0 || strcmp($column, "longitude")==0)) {
@ -1564,7 +1633,29 @@ class Bdd {
} else if(strcmp($table, "ligne_trajet")==0 && (strcmp($column, "id_devis")==0 || strcmp($column, "date")==0 || strcmp($column, "id_lieu")==0 || strcmp($column, "rang")==0)) {
$ligne_trajet = json_decode($this->getOneTrajetdetails($id, $idNextcloud))[0];
$this->update_lieu_date_devis_rang_ligneTrajet($ligne_trajet, $column, htmlentities(rtrim($data)), $idNextcloud);
} else {
}
else if(strcmp($table,"produit_devis") == 0 && (strcmp($column,"quantite") == 0)){
$sql = "UPDATE ".$this->tableprefix.$table." SET $column = ? WHERE `id` = ?";
$this->execSQLNoData($sql, array(trim(string: $data), $id));
$produitDevis = $this->getProduitDevisById($id);
if($produitDevis){
$devisId = $produitDevis['devis_id'];
$devis = json_decode($this->getOneDevis($devisId, $idNextcloud))[0];
if($devis){
$facture = $this->getFactureByDevisId($devisId);
$isDevisNegative = $this->isDevisNegative($devisId,$devis->clientid);
if($isDevisNegative){
$factureNumber = $facture["facture_number"];
$facturePrefix = "AVO";
$facturationDatetime = new Datetime($facture["date"]);
$fullFactureNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($facturationDatetime,$factureNumber,$facturePrefix);
$sql = "UPDATE ".$this->tableprefix."facture SET `num`= ? WHERE `id` = ?";
$this->execSQLNoData($sql, array($fullFactureNumber, $facture['id']));
}
}
}
}
else {
$sql = "UPDATE ".$this->tableprefix.$table." SET $column = ? WHERE `id` = ?";
$this->execSQLNoData($sql, array(trim($data), $id));
}
@ -2370,18 +2461,33 @@ class Bdd {
return null;
}
private function getThanatoLeaveByCalendarAndDate($calendarId,$date){
$isLeaveConditionAsString = "ABSENCETYPE:";
$datetimeFormatted = $date->format('Ymd');
$dateCondition = "%DTSTART%".$datetimeFormatted."%";
$isLeaveConditionAsString = "%".BddConstant::ISLEAVEPROPERTYONVCALENDAR.":1%";
$conditions = [];
$params = [ $calendarId, $dateCondition ]; // First parameters for placeholders
$absenceTypes = VCalendarPropertyConstant::ABSENCE_TYPES;
foreach ($absenceTypes as $type) {
$conditions[] = "calendarobject.calendardata LIKE ?";
$params[] = "%$isLeaveConditionAsString$type%"; // Add corresponding values
}
$conditions[] = "calendarobject.calendardata LIKE ?";
$params[] = "%".BddConstant::ISLEAVEPROPERTYONVCALENDAR.":1%";
$sql = "SELECT * FROM ".self::DEFAULT_TABLE_PREFIX."calendarobjects as calendarobject WHERE
calendarobject.calendarid = ? AND
calendarobject.calendardata LIKE ? AND
calendarobject.calendardata LIKE ? AND
calendarobject.deleted_at IS NULL;";
$leaves = $this->execSQLNoJsonReturn($sql,[$calendarId,$isLeaveConditionAsString,$dateCondition]);
calendarobject.calendarid = ? AND
calendarobject.calendardata LIKE ? AND
calendarobject.deleted_at IS NULL AND
(" . implode(" OR ", $conditions) . ");";
$leaves = $this->execSQLNoJsonReturn($sql,$params);
return $leaves;
}
public function getThanatoDevisPerDateInAMonthYear($thanatoId,$month,$year){
$dateOfMonths = DateHelpers::getDatesOfMonth($year,$month);
$devisListPerThanatoPerDate = [];
@ -2415,6 +2521,23 @@ class Bdd {
else{
foreach($thanatoLeavesThisDay as $currentLeave){
$leaveTime = VCalendarHelpers::GetStartAndEndTimeFromVCalendarString($currentLeave['calendardata']);
$absenceType = VCalendarHelpers::GetValueFromKeyInVCalendarString(VCalendarPropertyConstant::ABSENCE_TYPE,$currentLeave['calendardata']);
$absenceTypeKey = null;
$absenceTypeLabel = null;
if($absenceType){
$absenceTypeKey = $absenceType;
$absenceTypeLabel = FileExportHelpers::GetAbsenceTypeLabelFromKey($absenceType);
}else{
//get is leave
$isLeave = VCalendarHelpers::GetValueFromKeyInVCalendarString(BddConstant::ISLEAVEPROPERTYONVCALENDAR,$currentLeave['calendardata']);
if ( $isLeave ) {
$absenceTypeKey = AbsenceTypeConstant::LEAVE;
$absenceTypeLabel = VCalendarPropertyConstant::ABSENCE_TYPES_KEYS_VALUES[$absenceTypeKey]; ;
}
}
$devisListPerThanatoPerDate[$currentDateFormatted]["leaves"][] = [
"onLeave" => true,
"startTime" => $leaveTime["startTime"],
@ -2423,7 +2546,9 @@ class Bdd {
"date" => $currentDateFormatted,
"totalHours" => $leaveTime["totalHours"],
"totalWorkedHours" => $leaveTime["totalWorkedHours"],
"isPublicHoliday" => $isPublicHoliday
"isPublicHoliday" => $isPublicHoliday,
"absenceTypeKey" => $absenceTypeKey,
"absenceTypeLabel" => $absenceTypeLabel
];
}
}
@ -2449,6 +2574,20 @@ class Bdd {
$thanatoLeavesThisDay = $this->getThanatoLeaveByCalendarAndDate($thanatoCalendarId,$currentDate);
foreach($thanatoLeavesThisDay as $currentLeave){
$leaveTime = VCalendarHelpers::GetStartAndEndTimeFromVCalendarString($currentLeave['calendardata']);
$absenceType = VCalendarHelpers::GetValueFromKeyInVCalendarString(VCalendarPropertyConstant::ABSENCE_TYPE,$currentLeave['calendardata']);
$absenceTypeKey = null;
$absenceTypeLabel = null;
if($absenceType){
$absenceTypeKey = $absenceType;
$absenceTypeLabel = FileExportHelpers::GetAbsenceTypeLabelFromKey($absenceType);
}else{
//get is leave
$isLeave = VCalendarHelpers::GetValueFromKeyInVCalendarString(BddConstant::ISLEAVEPROPERTYONVCALENDAR,$currentLeave['calendardata']);
if ( $isLeave ) {
$absenceTypeKey = AbsenceTypeConstant::LEAVE;
$absenceTypeLabel = VCalendarPropertyConstant::ABSENCE_TYPES_KEYS_VALUES[$absenceTypeKey]; ;
}
}
$devisListPerThanatoPerDate[$currentDateFormatted]["leaves"][] = [
"onLeave" => true,
"startTime" => $leaveTime["startTime"],
@ -3016,6 +3155,7 @@ class Bdd {
return null;
}
$products = $this->getDevisProduits($factureData["devis_id"]);
$isDevisNegative = $this->isDevisNegative($factureData['devis_id'],$factureData['client_id']);
$factureData = $this->setDevisStartAndEndTime($factureData);
$factureData["products"] = $products;
@ -3034,6 +3174,7 @@ class Bdd {
$factureData["client_real_adress"] = $clientAdresses["address"];
$factureData["client_adress_city"] = $clientAdresses["city"];
}
$factureData['is_negative'] = $isDevisNegative;
$configurationAdresses = FileExportHelpers::GetAddressAndCityFromAddress($configuration->adresse);
$factureData["configuration_adresse"] = $configurationAdresses["address"];
@ -3383,6 +3524,7 @@ class Bdd {
devis.comment as devis_comment,
devis.order_number as order_number,
devis.case_number as case_number,
client.id as client_id,
client.nom as client_nom,
client.entreprise as client_entreprise,
client.adresse as client_adresse,
@ -3752,6 +3894,17 @@ class Bdd {
}
return null;
}
private function deleteProductsInDevisByProductType($devisId,$productTypeId){
$sql = "DELETE produit_devis FROM ".$this->tableprefix."produit_devis as produit_devis
LEFT JOIN ".$this->tableprefix."produit as produit ON produit_devis.produit_id = produit.id
WHERE produit_devis.devis_id = ? AND
produit.fk_product_type_id = ?;";
$this->execSQLNoData($sql,[$devisId,$productTypeId]);
}
public function setDefuntCover($defuntId, $productCoverId){
$defunt = $this->getDefuntById($defuntId);
if($defunt == null){
@ -3760,10 +3913,16 @@ class Bdd {
if($defunt["devis_id"] == null){
return null;
}
if($productCoverId == null){
$productTypeCover = $this->getProductTypeByKey(ProductConstant::PRODUCT_COVER_TYPE_KEY);
$this->deleteProductsInDevisByProductType($defunt["devis_id"],$productTypeCover['id']);
return true;
}
$product = $this->getProductAsDefuntCoverProduct($productCoverId);
if($product == null){
return null;
}
$coverProductList = $this->getProductsByProductTypeKey(ProductConstant::PRODUCT_COVER_TYPE_KEY);
$coverProductList = json_decode($coverProductList);

View File

@ -3,6 +3,7 @@
namespace OCA\Gestion\Helpers;
use DateTime;
use OCA\Gestion\Constants\VCalendarPropertyConstant;
class FileExportHelpers
{
@ -108,4 +109,16 @@ class FileExportHelpers
return $lineCount;
}
public static function GetAbsenceTypeLabelFromKey(string $key){
$label = null;
$absenceTypes = VCalendarPropertyConstant::ABSENCE_TYPES_KEYS_VALUES;
foreach($absenceTypes as $absenceTypeKey => $absenceTypeLabel){
if($absenceTypeKey == $key){
$label = $absenceTypeLabel;
break;
}
}
return $label;
}
}

View File

@ -140,7 +140,7 @@ class DevisPdfHandler extends FPDF {
$products = $this->devisData["products"];
$yValue = 116;
foreach($products as $product){
$valueHt = $product['produit_price'];
$valueHt = $product['produit_price'] * $product['quantite'];
$valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt,$tvaValue);
$totalHt+=$valueHt;
$totalTtc+=$valueTtc;

View File

@ -26,12 +26,13 @@ declare(strict_types=1);
namespace OCA\Gestion\Service;
use OCA\Gestion\Constants\BddConstant;
use OCA\Gestion\Db\Bdd;
use OCA\Gestion\Helpers\DateHelpers;
use OCA\Gestion\Helpers\FileExportHelpers;
use Psr\Log\LoggerInterface;
use OCP\Files\IRootFolder;
use Psr\Log\LoggerInterface;
use OCA\Gestion\Helpers\DateHelpers;
use OCA\Gestion\Constants\BddConstant;
use OCA\Gestion\Helpers\FileExportHelpers;
use OCA\Gestion\Constants\AbsenceTypeConstant;
class ExportThanatoStatisticService {
/** @var Bdd */
@ -114,6 +115,8 @@ class ExportThanatoStatisticService {
'SOINS'.';'.
'JOUR/FERIE'.';'.
'CONGE'.';'.
'REPOS'.';'.
'MALADIE'.';'.
'NOM ET PRENOM'.';'.
'LIEU'.';'.
'POMPES FUNEBRES'.';'.
@ -121,6 +124,8 @@ class ExportThanatoStatisticService {
'DISTANCE TOTALE KM'.';'.
'HEURES TOTAL DE SOIN'.';'.
'HEURES TOTAL DE CONGE'.';'.
'HEURES TOTAL DE REPOS'.';'.
'HEURES TOTAL DE MALADIE'.';'.
'HEURES TOTAL DE TRAVAIL'.';'.
'HEURES TOTAL DE PARCOURS ENTRE DEVIS'.';'.
"\n";
@ -134,7 +139,15 @@ class ExportThanatoStatisticService {
if($leave["onLeave"]){
$startTimeValue = $leave["startTime"];
$endTimeValue = $leave["endTime"];
$leaveValue = "Oui";
if($leave["absenceTypeKey"] == AbsenceTypeConstant::LEAVE){
$leaveValue = "Oui";
}
if($leave["absenceTypeKey"] == AbsenceTypeConstant::DISEASE){
$diseaseValue = "Oui";
}
if($leave["absenceTypeKey"] == AbsenceTypeConstant::REST){
$restValue = "Oui";
}
}
$fileContent = $fileContent.
''.';'.
@ -145,6 +158,10 @@ class ExportThanatoStatisticService {
''.';'.
DateHelpers::getPublicHolidayText($leave['isPublicHoliday']).';'.
$leaveValue.';'.
$restValue.';'.
$diseaseValue.';'.
''.';'.
''.';'.
''.';'.
''.';'.
''.';'.
@ -162,6 +179,8 @@ class ExportThanatoStatisticService {
$totalDevisHours = 0;
$totalWorkedHours = 8;
$totalLeaveHours = 0;
$totalDiseaseHours = 0;
$totalRestHours = 0;
$totalDistance = 0;
$totalTravelingHoursBetweenDevisLocation = 0;
$hasDevisInTheCurrentDate = $devisData['hasDevis'];
@ -171,10 +190,19 @@ class ExportThanatoStatisticService {
$fileContent = $this->populateNoDevisDataInADay($fileContent,$leave);
if($leave["onLeave"]){
$totalLeaveHoursInsideWorkingHours = $leave["totalWorkedHours"];
$totalLeaveHours += $totalLeaveHoursInsideWorkingHours;
if($leave["absenceTypeKey"] == AbsenceTypeConstant::LEAVE ){
$totalLeaveHours += $totalLeaveHoursInsideWorkingHours;
}
if($leave["absenceTypeKey"] == AbsenceTypeConstant::REST){
$totalRestHours += $totalLeaveHoursInsideWorkingHours;
}
if($leave["absenceTypeKey"] == AbsenceTypeConstant::DISEASE){
$totalDiseaseHours += $totalLeaveHoursInsideWorkingHours;
}
}
}
$totalWorkedHours -= $totalLeaveHours;
$totalAbsenceHours = $totalLeaveHours + $totalRestHours + $totalDiseaseHours;
$totalWorkedHours -= $totalAbsenceHours;
}
else{
$routeLines = $this->gestionBdd->getRouteLinesByDevisIdList($devisData["devisId"]);
@ -193,10 +221,19 @@ class ExportThanatoStatisticService {
$fileContent = $this->populateNoDevisDataInADay($fileContent,$leave);
if($leave["onLeave"]){
$totalLeaveHoursInsideWorkingHours = $leave["totalWorkedHours"];
$totalLeaveHours += $totalLeaveHoursInsideWorkingHours;
if($leave["absenceTypeKey"] == AbsenceTypeConstant::LEAVE){
$totalLeaveHours += $totalLeaveHoursInsideWorkingHours;
}
if($leave["absenceTypeKey"] == AbsenceTypeConstant::REST){
$totalRestHours += $totalLeaveHoursInsideWorkingHours;
}
if($leave["absenceTypeKey"] == AbsenceTypeConstant::DISEASE){
$totalDiseaseHours += $totalLeaveHoursInsideWorkingHours;
}
}
}
$totalWorkedHours -= $totalLeaveHours;
$totalAbsenceHours = $totalLeaveHours + $totalRestHours + $totalDiseaseHours;
$totalWorkedHours -= $totalAbsenceHours;
}
$fileContent = $this->populateLastRecapForTheLine(
$fileContent,
@ -204,13 +241,15 @@ class ExportThanatoStatisticService {
$totalDevisHours,
$totalWorkedHours,
$totalLeaveHours,
$totalTravelingHoursBetweenDevisLocation
$totalTravelingHoursBetweenDevisLocation,
$totalDiseaseHours,
$totalRestHours
);
}
return $fileContent;
}
private function populateLastRecapForTheLine(string $fileContent,$distance,$totalDevisHours,$totalWorkedHours,$totalLeaveHours,$totalTravelingHours){
private function populateLastRecapForTheLine(string $fileContent,$distance,$totalDevisHours,$totalWorkedHours,$totalLeaveHours,$totalTravelingHours ,$totalDiseaseHours = 0,$totalRestHours = 0){
$fileContent = $fileContent.
''.';'.
''.';'.
@ -224,11 +263,15 @@ class ExportThanatoStatisticService {
''.';'.
''.';'.
''.';'.
"$distance"."KM".';'.
"$totalDevisHours"."H".';'.
"$totalLeaveHours"."H".';'.
"$totalWorkedHours"."H".';'.
"$totalTravelingHours"."H"."\n";
''.';'.
''.';'.
"$distance".';'.
"$totalDevisHours".';'.
"$totalLeaveHours".';'.
"$totalRestHours".';'.
"$totalDiseaseHours".';'.
"$totalWorkedHours".';'.
"$totalTravelingHours"."\n";
return $fileContent;
}
@ -253,6 +296,8 @@ class ExportThanatoStatisticService {
FileExportHelpers::FormatTextForExport($produitAsString).';'.
FileExportHelpers::FormatTextForExport($devis["dayType"]).';'.
FileExportHelpers::FormatTextForExport('Non').';'.
''.';'.
''.';'.
FileExportHelpers::FormatTextForExport($devis["nom_defunt"]).';'.
FileExportHelpers::FormatTextForExport($devis["nom_lieu"] ?? "").';'.
FileExportHelpers::FormatTextForExport($devis["nom_client"] ?? "").';'.
@ -261,6 +306,8 @@ class ExportThanatoStatisticService {
''.';'.
''.';'.
''.';'.
''.';'.
''.';'.
''.';'."\n";
return $fileContent;

View File

@ -155,6 +155,12 @@ class GestionService
return $calendarStartDate;
}
private function GetIsPivateFromVCalendarString(string $vCalendarString): bool{
$isPrivateValue = VCalendarHelpers::GetValueFromKeyInVCalendarString(VCalendarPropertyConstant::PROPERTY_IS_PRIVATE, $vCalendarString);
return $isPrivateValue === "1" ? true : false;
}
public function HandleCalendarObjectMovedToTrash(string $vCalendarString)
{
$calendarUuid = $this->GetCalendarUuidFromVCalendarString($vCalendarString);
@ -218,8 +224,9 @@ class GestionService
public function HandleUpdatedCalendarObject(string $vCalendarString)
{
try {
$isCalendarForLeave = $this->GetIsLeaveFromVCalendarString($vCalendarString);
if ($isCalendarForLeave) {
$isPrivate = $this->GetIsPivateFromVCalendarString($vCalendarString);
$absenceType = VCalendarHelpers::GetValueFromKeyInVCalendarString('ABSENCETYPE',$vCalendarString);
if ($isPrivate || $absenceType ) {
//from devis calendar to leave calendar
$calendarUuid = $this->GetCalendarUuidFromVCalendarString($vCalendarString);
$devis = $this->gestionBdd->getDevisByCalendarUuid($calendarUuid);
@ -285,8 +292,11 @@ class GestionService
public function HandleCreatedCalendarObject(string $vCalendarString)
{
try {
$isCalendarForLeave = $this->GetIsLeaveFromVCalendarString($vCalendarString);
if ($isCalendarForLeave) {
$isPrivate = $this->GetIsPivateFromVCalendarString($vCalendarString);
$absenceType = VCalendarHelpers::GetValueFromKeyInVCalendarString('ABSENCETYPE',$vCalendarString);
if($isPrivate || $absenceType){
//Nothing to do manage fo a private calendar
return;
}
$isCalendarPending = $this->GetIsCalendarPendingFromVCalendarString($vCalendarString);

View File

@ -44,7 +44,7 @@ class InvoiceFunecapPdfHandler extends InvoiceGroupPdfHandler {
$maxDescriptionWidth = 102;
$currentIndexPosition = $this->currentIndexPosition;
for($currentIndexPosition;$currentIndexPosition<($this->initialIndexPosition + $this->devisCountToGet);$currentIndexPosition++){
$this->SetFont('ComicSans', '', 8);
$currentDevis = $devisData[$currentIndexPosition];
$devisDate = $currentDevis['devis_date'];

View File

@ -51,6 +51,8 @@ class InvoiceGroupPdfHandler extends FPDF {
public $startingYOfArticlesTable = 95;
public int $maxArticlePerPage = 19;
public $additionalArticlesLineBasedOnMultiline = 0;
public $interLigneHeader = 5;
function Header()
{
if($this->logo != "nothing"){
@ -77,12 +79,12 @@ class InvoiceGroupPdfHandler extends FPDF {
$originalHeight = $originalHeight * 0.264583;
// Augmenter l'échelle, par exemple, 1.5 pour 150% de la taille d'origine
$scale = 2;
$scale = 1.7;
$width = $originalWidth * $scale;
$height = $originalHeight * $scale;
// Calculer la position pour centrer l'image
$x = (210 - $width) / 2 + 15; // Décalage à droite de 15 mm
$y = (297 - $height) / 2; // 297 mm est la hauteur d'une page A4
$y = ((297 - $height) / 2 ) + 30; // 297 mm est la hauteur d'une page A4
// Ajouter l'image en filigrane
$this->Image($imagePath, $x, $y, $width, $height); // Chemin, position x, position y, largeur, hauteur
@ -97,14 +99,23 @@ class InvoiceGroupPdfHandler extends FPDF {
$this->SetDrawColor(0, 0, 0, $alpha * 255);
}
public function DrawInvoiceCompanyAndClientInfo(){
$this->DrawInvoiceCompanyInfo();
$this->DrawInvoiceClientInfo();
}
function Footer()
{
$this->SetY(-34);
$this->SetFont('ComicSans', '', size: 7);
$this->MultiCell(0,4,utf8_decode(html_entity_decode('Tout retard de paiement entraînera de plein droit une pénalité de retard de 3 fois le taux légal ( Loi 2008-776 du 4 août 2008) et une indemnité forfaitaire de 40 EUR pour frais de recouvrement sera appliquée.')));
$this->SetFont('ComicSans', '', 7);
$this->MultiCell(0,4,utf8_decode(html_entity_decode('Tout retard de paiement entraînera de plein droit une pénalité de retard de 3 fois le taux légal ')));
$this->MultiCell(0,4,utf8_decode(html_entity_decode('( Loi 2008-776 du 4 août 2008) et une indemnité forfaitaire de 40 EUR pour frais de recouvrement sera appliquée.')));
$this->MultiCell(0,4,utf8_decode(html_entity_decode('sera appliquée.')));
$this->Ln(1);
$this->MultiCell(0,4,utf8_decode(html_entity_decode('Si les frais de recouvrement sont supérieurs à ce montant forfaitaire, une indemnisation complémentaire sera due sur présentation de justificatifs ( articles L.441-3 et L.441-6 du code de commerce ).
')));
$this->MultiCell(0,4,utf8_decode(html_entity_decode('Si les frais de recouvrement sont supérieurs à ce montant forfaitaire, une indemnisation complémentaire')));
$this->MultiCell(0,4,utf8_decode(html_entity_decode('sera due sur présentation de justificatifs ( articles L.441-3 et L.441-6 du code de commerce ).')));
$this->SetY(-10);
$this->SetFont('ComicSans', '', 7);
@ -151,11 +162,11 @@ class InvoiceGroupPdfHandler extends FPDF {
public function DrawInvoiceCompanyInfo(){
$this->SetY(40);
$this->SetFont('ComicSans', '', 10);
$this->Cell(0, 4, FileExportHelpers::FormatTextForExport($this->factureData['configuration']->entreprise), 0, 1);
$this->Cell(0, 4, FileExportHelpers::FormatTextForExport($this->factureData['configuration_adresse']), 0, 1);
$this->Cell(0, 4, FileExportHelpers::FormatTextForExport($this->factureData['configuration_adresse_city']), 0, 1);
$this->Cell(0, 4, FileExportHelpers::FormatTextForExport('Tél : ') . FileExportHelpers::FormatTextForExport($this->factureData['configuration']->telephone),0,1);
$this->Cell(0, 4, 'Mail : ' . $this->factureData['configuration']->mail, 0, 1);
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($this->factureData['configuration']->entreprise), 0, 1);
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($this->factureData['configuration_adresse']), 0, 1);
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($this->factureData['configuration_adresse_city']), 0, 1);
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport('Tél : ') . FileExportHelpers::FormatTextForExport($this->factureData['configuration']->telephone),0,1);
$this->Cell(0, $this->interLigneHeader, 'Mail : ' . $this->factureData['configuration']->mail, 0, 1);
}
public function DrawInvoiceClientInfo(){
$this->SetFont('ComicSans', '', 10);
@ -164,82 +175,106 @@ class InvoiceGroupPdfHandler extends FPDF {
$clientAddress = $this->factureData['client_real_adress'];
$maxWidth = $this->GetPageWidth();
$availableWidhtForClientInfo = $maxWidth - 20 - $clientInfoXAxis;
$availableWidhtForClientInfo = $maxWidth - 2 - $clientInfoXAxis;
$clientInfoYAxis = 40;
$this->SetXY($clientInfoXAxis,$clientInfoYAxis);
$this->Cell(0, 4, FileExportHelpers::FormatTextForExport($clientName));
$clientInfoYAxis += 4;
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($clientName));
$clientInfoYAxis += $this->interLigneHeader;
if ( $this->factureData['group_type'] == 'single' ) {
$addressWidth = $this->GetStringWidth($clientAddress);
$isMultiline = $addressWidth > $availableWidhtForClientInfo;
$address = FileExportHelpers::FormatTextForExport(trim($clientAddress));
$addressWidth = $this->GetStringWidth($address);
$addressWidthGreaterThanMaxWidth = $addressWidth > $availableWidhtForClientInfo;
$isMultiline = false;
$this->SetXY($clientInfoXAxis,$clientInfoYAxis);
$this->MultiCell( 0, 4, trim(FileExportHelpers::FormatTextForExport($clientAddress)));
if($isMultiline){
$clientInfoYAxis += 4;
if ($addressWidthGreaterThanMaxWidth) {
$yBefore = $this->GetY();
$this->MultiCell($availableWidhtForClientInfo, $this->interLigneHeader, $address,0,'L');
$yAfter = $this->GetY();
$isMultiline = ($yAfter - $yBefore) > $this->interLigneHeader;
if($isMultiline){
$this->SetXY($this->GetX(),$yBefore);
}
} else {
$this->Cell($availableWidhtForClientInfo, $this->interLigneHeader, $address);
}
$clientInfoYAxis += 4;
if($isMultiline){
$clientInfoYAxis += $this->interLigneHeader;
}
$clientInfoYAxis += $this->interLigneHeader;
}else{
$clientAddresses = explode(",",$clientAddress);
foreach ($clientAddresses as $address) {
$address = FileExportHelpers::FormatTextForExport(trim($address));
$addressWidth = $this->GetStringWidth($address);
$isMultiline = $addressWidth > $availableWidhtForClientInfo;
$addressWidthGreaterThanMaxWidth = $addressWidth > $availableWidhtForClientInfo;
$isMultiline = false;
$this->SetXY($clientInfoXAxis,$clientInfoYAxis);
$this->MultiCell( 0, 4, trim(FileExportHelpers::FormatTextForExport($address)));
if($isMultiline){
$clientInfoYAxis += 4;
if ($addressWidthGreaterThanMaxWidth) {
$yBefore = $this->GetY();
$this->MultiCell($availableWidhtForClientInfo, $this->interLigneHeader, $address,0,'L');
$yAfter = $this->GetY();
$isMultiline = ($yAfter - $yBefore) > $this->interLigneHeader;
if($isMultiline){
$this->SetXY($this->GetX(),$yBefore);
}
} else {
$this->Cell($availableWidhtForClientInfo, $this->interLigneHeader, $address);
}
$clientInfoYAxis += 4;
if($isMultiline){
$clientInfoYAxis += $this->interLigneHeader;
}
$clientInfoYAxis += $this->interLigneHeader;
}
}
$this->SetXY($clientInfoXAxis,$clientInfoYAxis + 1);
$this->Cell(0, 4, trim(FileExportHelpers::FormatTextForExport($this->factureData['client_adress_city'])));
$this->Cell(0, $this->interLigneHeader, trim(FileExportHelpers::FormatTextForExport($this->factureData['client_adress_city'])));
}
public function DrawInvoiceCompanyAndClientInfo(){
$this->DrawInvoiceCompanyInfo();
$this->DrawInvoiceClientInfo();
}
public function DrawInvoiceInfoTable(){
$this->setY(67);
$startInvoiceInfoTable = 70;
$this->setY($startInvoiceInfoTable);
$factureDatePaiement = $this->factureData['date_paiement'];
$factureDatePaiement = DateTime::createFromFormat('Y-m-d',$factureDatePaiement);
$factureDateEcheance = $factureDatePaiement;
$factureDatePaiement = $factureDatePaiement->format('d-m-Y');
$factureDateEcheance->modify('last day of next month');
$factureDateEcheance = $factureDateEcheance->format('d-m-Y');
$this->SetFont('ComicSans', 'B', 11);
$this->SetFont('ComicSans', '', 9);
$this->Cell(25, 7, 'DATE', 1, 0, 'C');
$this->Cell(104, 7, 'CLIENT', 1, 0, 'C');
$this->Cell(39, 7, 'FACTURE', 1, 0, 'C');
$this->Cell(36, 7, 'ECHEANCE', 1, 1, 'C');
$this->SetFont('ComicSans', '', 10);
$this->SetFont('ComicSans', '', 9);
$this->Cell(25, 11, $factureDatePaiement, 1, 0, 'C');
$this->Cell(104, 11, utf8_decode(html_entity_decode($this->factureData['group_name'])), 1, 0, 'C');
$this->Cell(39, 11, $this->factureData['num'], 1, 0, 'C');
$this->Cell(36, 11, $factureDateEcheance, 1, 1, 'C');
$this->startingYOfArticlesTable = 88;
$this->startingYOfArticlesTable = $startInvoiceInfoTable + 20;
}
public function DrawArticlesTableRect(){
$this->SetLineWidth(0.2);
$gapBetweenStartingOfArticlesTableAndColumnName = 10;
$tableHeight = $this->thereIsOrderOrCaseNumber ? 137 : 137 + 10;
$this->Rect(3, $this->startingYOfArticlesTable, 204, $tableHeight, "D");
// $this->RoundedRect(3, $this->startingYOfArticlesTable, 204, $tableHeight,5 ,'1234',"D");
// cadre titre des colonnes
$this->Line(3, $this->startingYOfArticlesTable + $gapBetweenStartingOfArticlesTableAndColumnName, 207,$this->startingYOfArticlesTable + $gapBetweenStartingOfArticlesTableAndColumnName);
// les traits verticaux colonnes
$this->Line(28, $this->startingYOfArticlesTable, 28, 235);
$this->Line(132, $this->startingYOfArticlesTable, 132, 235);
$this->Line(157, $this->startingYOfArticlesTable, 157, 235);
$this->Line(182, $this->startingYOfArticlesTable, 182, 235);
$this->Line(28, $this->startingYOfArticlesTable, 28, 237);
$this->Line(132, $this->startingYOfArticlesTable, 132, 237);
$this->Line(157, $this->startingYOfArticlesTable, 157, 237);
$this->Line(182, $this->startingYOfArticlesTable, 182, 237);
}
public function DrawArticlesTableHeader(){
@ -282,8 +317,7 @@ class InvoiceGroupPdfHandler extends FPDF {
$products = $currentDevis["products"];
$productIncrement = 0;
foreach($products as $product){
$this->SetFont('ComicSans', '', 8);
$valueHt = $product['produit_price'] * $product["quantite"];
$valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt,$tvaValue);
$totalHt+=$valueHt;
@ -341,8 +375,8 @@ class InvoiceGroupPdfHandler extends FPDF {
}
public function DrawBankAndTotalPriceInfo(){
$this->SetY(238);
$this->SetFont('ComicSans', '', 7);
$this->SetY(239);
$this->SetFont('ComicSans', '', 8);
$this->MultiCell(0,4,utf8_decode(html_entity_decode("Paiement à votre convenance par chèque à l'ordre de ". $this->factureData['configuration']->entreprise)));
$this->MultiCell(0,4,utf8_decode(html_entity_decode("en indiquant le numéro de facture, ou par virement :")));
@ -357,7 +391,7 @@ class InvoiceGroupPdfHandler extends FPDF {
$this->Cell($ibanWidth, 5, 'Code SWIFT : AGRI FR PP 836', 1, 1, 'C');
//TABLE HT
$tableWidth = 40; // Largeur totale de la 2e table (20+20)
$tableWidth = 48; // Largeur totale de la 2e table (20+20)
$marginRight = 3; // Marge par rapport au bord droit
$pageWidth = 210; // Largeur d'une page A4 en mm (portrait)
@ -365,13 +399,13 @@ class InvoiceGroupPdfHandler extends FPDF {
$startOfArrayX = $pageWidth - $tableWidth - $marginRight;
$startOfArrayY = $ibanCursorY - 5;
$this->SetFont('ComicSans', '', 10);
$totalPriceArray = $this->totalPrices;
foreach($totalPriceArray as $label => $price){
$this->SetXY($startOfArrayX,$startOfArrayY);
$this->Cell(20, 5, $label, 1, 1, 'C');
$this->SetXY($startOfArrayX + 20,$startOfArrayY);
$this->Cell(20, 5, number_format($price,2,'.','').chr(128), 1, 1, 'C');
$this->Cell(24, 5, $label, 1, 1, 'C');
$this->SetXY($startOfArrayX + 24,$startOfArrayY);
$this->Cell(24, 5, number_format($price,2,'.','').chr(128), 1, 1, 'C');
$startOfArrayY += 5;
}
}
@ -451,4 +485,62 @@ class InvoiceGroupPdfHandler extends FPDF {
}
return $nl;
}
private function RoundedRect($x, $y, $w, $h, $r, $corners = '1234', $style = '')
{
$k = $this->k;
$hp = $this->h;
if($style=='F')
$op='f';
elseif($style=='FD' || $style=='DF')
$op='B';
else
$op='S';
$MyArc = 4/3 * (sqrt(2) - 1);
$this->_out(sprintf('%.2F %.2F m',($x+$r)*$k,($hp-$y)*$k ));
$xc = $x+$w-$r;
$yc = $y+$r;
$this->_out(sprintf('%.2F %.2F l', $xc*$k,($hp-$y)*$k ));
if (strpos($corners, '2')===false)
$this->_out(sprintf('%.2F %.2F l', ($x+$w)*$k,($hp-$y)*$k ));
else
$this->_Arc($xc + $r*$MyArc, $yc - $r, $xc + $r, $yc - $r*$MyArc, $xc + $r, $yc);
$xc = $x+$w-$r;
$yc = $y+$h-$r;
$this->_out(sprintf('%.2F %.2F l',($x+$w)*$k,($hp-$yc)*$k));
if (strpos($corners, '3')===false)
$this->_out(sprintf('%.2F %.2F l',($x+$w)*$k,($hp-($y+$h))*$k));
else
$this->_Arc($xc + $r, $yc + $r*$MyArc, $xc + $r*$MyArc, $yc + $r, $xc, $yc + $r);
$xc = $x+$r;
$yc = $y+$h-$r;
$this->_out(sprintf('%.2F %.2F l',$xc*$k,($hp-($y+$h))*$k));
if (strpos($corners, '4')===false)
$this->_out(sprintf('%.2F %.2F l',($x)*$k,($hp-($y+$h))*$k));
else
$this->_Arc($xc - $r*$MyArc, $yc + $r, $xc - $r, $yc + $r*$MyArc, $xc - $r, $yc);
$xc = $x+$r ;
$yc = $y+$r;
$this->_out(sprintf('%.2F %.2F l',($x)*$k,($hp-$yc)*$k ));
if (strpos($corners, '1')===false)
{
$this->_out(sprintf('%.2F %.2F l',($x)*$k,($hp-$y)*$k ));
$this->_out(sprintf('%.2F %.2F l',($x+$r)*$k,($hp-$y)*$k ));
}
else
$this->_Arc($xc - $r, $yc - $r*$MyArc, $xc - $r*$MyArc, $yc - $r, $xc, $yc - $r);
$this->_out($op);
}
private function _Arc($x1, $y1, $x2, $y2, $x3, $y3)
{
$h = $this->h;
$this->_out(sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $x1*$this->k, ($h-$y1)*$this->k,
$x2*$this->k, ($h-$y2)*$this->k, $x3*$this->k, ($h-$y3)*$this->k));
}
}

View File

@ -45,33 +45,36 @@ class InvoiceOgfPdfHandler extends InvoiceGroupPdfHandler {
$clientInfoYAxis = $clientAdressIsMultiline ? 35 : 39;
$this->SetXY($clientInfoXAxis,$clientInfoYAxis);
$this->Cell(0, 4, FileExportHelpers::FormatTextForExport($clientName));
$clientInfoYAxis += 4;
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($clientName));
$clientInfoYAxis += $this->interLigneHeader;
$this->SetXY($clientInfoXAxis,$clientInfoYAxis);
$this->MultiCell( 0, 4, trim(FileExportHelpers::FormatTextForExport($clientAddress)));
$this->MultiCell( 0, $this->interLigneHeader, trim(FileExportHelpers::FormatTextForExport($clientAddress)));
if($clientAdressIsMultiline){
$clientInfoYAxis += 4;
$clientInfoYAxis += $this->interLigneHeader;
}
$clientInfoYAxis += 4;
$clientInfoYAxis += $this->interLigneHeader;
$this->SetXY($clientInfoXAxis,$clientInfoYAxis);
$this->Cell(0, 4, trim(FileExportHelpers::FormatTextForExport($this->factureData['client_adress_city'])));
$clientInfoYAxis += 4;
$this->Cell(0, $this->interLigneHeader, trim(FileExportHelpers::FormatTextForExport($this->factureData['client_adress_city'])));
$clientInfoYAxis += $this->interLigneHeader;
$this->SetXY($clientInfoXAxis,$clientInfoYAxis);
$this->Cell(0, 4, FileExportHelpers::FormatTextForExport('Numéro') . ' Siret: ' . $this->factureData['siret']);
$clientInfoYAxis += 4;
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport('Numéro') . ' Siret: ' . $this->factureData['siret']);
$clientInfoYAxis += $this->interLigneHeader;
$this->SetXY($clientInfoXAxis,$clientInfoYAxis);
$this->Cell(0, 4, FileExportHelpers::FormatTextForExport('Mail : ') . $this->factureData['client_mail']);
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport('Mail : ') . $this->factureData['client_mail']);
}
public function DrawInvoiceInfoTable(){
$this->setY(67);
$startInvoiceInfoTable = 70;
$this->setY($startInvoiceInfoTable);
$factureDatePaiement = $this->factureData['date_paiement'];
$factureDatePaiement = DateTime::createFromFormat('Y-m-d',$factureDatePaiement);
$factureDateEcheance = $factureDatePaiement;
$factureDatePaiement = $factureDatePaiement->format('d-m-Y');
$factureDateEcheance->modify('last day of next month');
$factureDateEcheance = $factureDateEcheance->format('d-m-Y');
$this->SetFont('ComicSans', 'B', 11);
$this->SetFont('ComicSans', '', 9);
$this->Cell(30, 7, 'DATE', 1, 0, 'C');
$this->Cell(60, 7, 'CLIENT', 1, 0, 'C');
$this->Cell(40, 7, 'FACTURE', 1, 0, 'C');
@ -85,7 +88,8 @@ class InvoiceOgfPdfHandler extends InvoiceGroupPdfHandler {
$this->Cell(40, 11, $factureDateEcheance, 1, 0, 'C');
$this->Cell(34, 11, $this->factureData["facture_order_number"], 1, 1, 'C');
$this->startingYOfArticlesTable = 88;
$this->startingYOfArticlesTable = $startInvoiceInfoTable + 20;
}

View File

@ -42,7 +42,13 @@ class InvoicePdfHandler extends FPDF
private $logoPath = "/var/www/html/data/admin/files/.gestion/";
protected $extgstates = [];
private $thereIsOrderOrCaseNumber = false;
private $startingYOfArticlesTable = 95;
private $startingYOfArticlesTable = 100;
private $endingYOfArticlesTable = 230;
private $articleTablesHeight = 130;
public $interLigneHeader = 5;
function Header()
{
if ($this->logo != "nothing") {
@ -90,11 +96,14 @@ class InvoicePdfHandler extends FPDF
function Footer()
{
$this->SetY(-34);
$this->SetFont('ComicSans', '', 7);
$this->MultiCell(0, 4, utf8_decode(html_entity_decode('Tout retard de paiement entraînera de plein droit une pénalité de retard de 3 fois le taux légal ( Loi 2008-776 du 4 août 2008) et une indemnité forfaitaire de 40 EUR pour frais de recouvrement sera appliquée.')));
$this->SetFont('ComicSans', '', 7);
$this->MultiCell(0,4,utf8_decode(html_entity_decode('Tout retard de paiement entraînera de plein droit une pénalité de retard de 3 fois le taux légal ')));
$this->MultiCell(0,4,utf8_decode(html_entity_decode('( Loi 2008-776 du 4 août 2008) et une indemnité forfaitaire de 40 EUR pour frais de recouvrement sera appliquée.')));
$this->MultiCell(0,4,utf8_decode(html_entity_decode('sera appliquée.')));
$this->Ln(1);
$this->MultiCell(0, 4, utf8_decode(html_entity_decode('Si les frais de recouvrement sont supérieurs à ce montant forfaitaire, une indemnisation complémentaire sera due sur présentation de justificatifs ( articles L.441-3 et L.441-6 du code de commerce ).
')));
$this->MultiCell(0,4,utf8_decode(html_entity_decode('Si les frais de recouvrement sont supérieurs à ce montant forfaitaire, une indemnisation complémentaire')));
$this->MultiCell(0,4,utf8_decode(html_entity_decode('sera due sur présentation de justificatifs ( articles L.441-3 et L.441-6 du code de commerce ).')));
$this->SetY(-10);
$this->SetFont('ComicSans', '', 7);
@ -135,18 +144,18 @@ class InvoicePdfHandler extends FPDF
$factureNum = $this->factureData['num'];
$factureNum = str_replace('/', '-', $factureNum);
$defuntNom = str_replace('&nbsp;', ' ', $this->factureData['defunt_nom']);
return $this->factureData['configuration']->facture_prefixe . '_' . $factureNum . '_' . mb_strtoupper($defuntNom, 'UTF-8');
return $factureNum . '_' . mb_strtoupper($defuntNom, 'UTF-8');
}
private function DrawInvoiceCompanyInfo()
{
$this->SetY(40);
$this->SetFont('ComicSans', '', 10);
$this->Cell(0, 5, FileExportHelpers::FormatTextForExport($this->factureData['configuration']->entreprise), 0, 1);
$this->Cell(0, 5, FileExportHelpers::FormatTextForExport($this->factureData['configuration_adresse']), 0, 1);
$this->Cell(0, 5, FileExportHelpers::FormatTextForExport($this->factureData['configuration_adresse_city']), 0, 1);
$this->Cell(0, 5, FileExportHelpers::FormatTextForExport('Tél : ') . FileExportHelpers::FormatTextForExport($this->factureData['configuration']->telephone), 0, 1);
$this->Cell(0, 5, 'Mail : ' . $this->factureData['configuration']->mail, 0, 1);
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($this->factureData['configuration']->entreprise), 0, 1);
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($this->factureData['configuration_adresse']), 0, 1);
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($this->factureData['configuration_adresse_city']), 0, 1);
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport('Tél : ') . FileExportHelpers::FormatTextForExport($this->factureData['configuration']->telephone), 0, 1);
$this->Cell(0, $this->interLigneHeader, 'Mail : ' . $this->factureData['configuration']->mail, 0, 1);
}
private function DrawInvoiceClientInfo()
{
@ -165,22 +174,22 @@ class InvoicePdfHandler extends FPDF
$clientInfoYAxis = $clientAdressIsMultiline ? 35 : 40;
$this->SetXY($clientInfoXAxis, $clientInfoYAxis);
$this->Cell(0, 4, FileExportHelpers::FormatTextForExport($clientName));
$clientInfoYAxis += 4;
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($clientName));
$clientInfoYAxis += $this->interLigneHeader;
$this->SetXY($clientInfoXAxis, $clientInfoYAxis);
$this->MultiCell(0, 4, trim(FileExportHelpers::FormatTextForExport($clientAddress)));
$this->MultiCell(0, $this->interLigneHeader, trim(FileExportHelpers::FormatTextForExport($clientAddress)));
if ($clientAdressIsMultiline) {
$clientInfoYAxis += 4;
$clientInfoYAxis += $this->interLigneHeader;
}
$clientInfoYAxis += 4;
$clientInfoYAxis += $this->interLigneHeader;
$this->SetXY($clientInfoXAxis, $clientInfoYAxis);
$this->Cell(0, 4, trim(FileExportHelpers::FormatTextForExport($this->factureData['client_adress_city'])));
$clientInfoYAxis += 4;
$this->Cell(0, $this->interLigneHeader, trim(FileExportHelpers::FormatTextForExport($this->factureData['client_adress_city'])));
$clientInfoYAxis += $this->interLigneHeader;
$this->SetXY($clientInfoXAxis, $clientInfoYAxis);
$this->Cell(0, 4, FileExportHelpers::FormatTextForExport('Numéro') . ' Siret: ' . $this->factureData['siret']);
$clientInfoYAxis += 4;
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport('Numéro') . ' Siret: ' . $this->factureData['siret']);
$clientInfoYAxis += $this->interLigneHeader;
$this->SetXY($clientInfoXAxis, $clientInfoYAxis);
$this->Cell(0, 4, FileExportHelpers::FormatTextForExport('Mail : ') . $this->factureData['client_mail']);
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport('Mail : ') . $this->factureData['client_mail']);
}
private function DrawInvoiceCompanyAndClientInfo()
@ -191,23 +200,22 @@ class InvoicePdfHandler extends FPDF
private function DrawInvoiceInfoTable()
{
$this->setY(80);
$this->setY(70);
$factureDatePaiement = $this->factureData['date_paiement'];
$factureDatePaiement = DateTime::createFromFormat('Y-m-d', $factureDatePaiement);
$factureDateEcheance = $factureDatePaiement;
$factureDatePaiement = $factureDatePaiement->format('d-m-Y');
$factureDateEcheance->modify('last day of next month');
$factureDateEcheance = $factureDateEcheance->format('d-m-Y');
$this->SetFont('ComicSans', 'B', 11);
$this->SetFont('ComicSans', '', 9);
$this->Cell(25, 7, 'DATE', 1, 0, 'C');
$this->Cell(104, 7, 'CLIENT', 1, 0, 'C');
$this->Cell(39, 7, 'FACTURE', 1, 0, 'C');
$this->Cell(36, 7, 'ECHEANCE', 1, 1, 'C');
$this->setY(90);
$this->setY(77);
$this->SetFont('ComicSans', '', 10);
$this->setY(30);
$this->SetFont('ComicSans', '', 9);
$this->Cell(25, 11, $factureDatePaiement, 1, 0, 'C');
$this->Cell(104, 11, utf8_decode(html_entity_decode($this->factureData['client_nom'])), 1, 0, 'C');
$this->Cell(39, 11, $this->factureData['num'], 1, 0, 'C');
@ -231,22 +239,22 @@ class InvoicePdfHandler extends FPDF
$this->Cell(0, 5, FileExportHelpers::FormatTextForExport("Numéro de dossier: " . $this->factureData['case_number']), 0, 1, 'C');
}
$this->startingYOfArticlesTable = $this->thereIsOrderOrCaseNumber ? 98 : 88;
$this->startingYOfArticlesTable = $this->thereIsOrderOrCaseNumber ? $$this->startingYOfArticlesTable + 3 : $this->startingYOfArticlesTable - 7;
}
private function DrawArticlesTable()
{
$this->SetLineWidth(0.2);
$gapBetweenStartingOfArticlesTableAndColumnName = 10;
$tableHeight = $this->thereIsOrderOrCaseNumber ? 137 : 137 + 10;
$tableHeight = $this->thereIsOrderOrCaseNumber ? $this->articleTablesHeight : $this->articleTablesHeight + 10;
$this->Rect(3, $this->startingYOfArticlesTable, 204, $tableHeight, "D");
// cadre titre des colonnes
$this->Line(3, $this->startingYOfArticlesTable + $gapBetweenStartingOfArticlesTableAndColumnName, 207, $this->startingYOfArticlesTable + $gapBetweenStartingOfArticlesTableAndColumnName);
// les traits verticaux colonnes
$this->Line(28, $this->startingYOfArticlesTable, 28, 232);
$this->Line(132, $this->startingYOfArticlesTable, 132, 232);
$this->Line(157, $this->startingYOfArticlesTable, 157, 232);
$this->Line(182, $this->startingYOfArticlesTable, 182, 232);
$this->Line(28, $this->startingYOfArticlesTable, 28, $this->endingYOfArticlesTable + 3);
$this->Line(132, $this->startingYOfArticlesTable, 132, $this->endingYOfArticlesTable + 3);
$this->Line(157, $this->startingYOfArticlesTable, 157, $this->endingYOfArticlesTable + 3);
$this->Line(182, $this->startingYOfArticlesTable, 182, $this->endingYOfArticlesTable + 3);
}
private function DrawArticlesTableHeader()
@ -284,9 +292,7 @@ class InvoicePdfHandler extends FPDF
$yValue = $this->startingYOfArticlesTable + 11;
foreach ($products as $product) {
$this->SetFont('ComicSans', '', 8);
$valueHt = $product['produit_price'];
$valueHt = $product['produit_price'] * $product['quantite'];
$valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt, $tvaValue);
$totalHt += $valueHt;
$totalTtc += $valueTtc;
@ -327,34 +333,36 @@ class InvoicePdfHandler extends FPDF
private function DrawBankAndTotalPriceInfo($totalPriceArray)
{
$this->SetY(235);
$this->SetFont('ComicSans', '', 7);
$this->MultiCell(0, 5, utf8_decode(html_entity_decode("Paiement à votre convenance par chèque à l'ordre de " . $this->factureData['configuration']->entreprise)));
$this->MultiCell(0, 5, utf8_decode(html_entity_decode("en indiquant le numéro de facture, ou par virement :")));
$this->SetFont('ComicSans', '', 8);
$this->MultiCell(0,4,utf8_decode(html_entity_decode("Paiement à votre convenance par chèque à l'ordre de ". $this->factureData['configuration']->entreprise)));
$this->MultiCell(0,4,utf8_decode(html_entity_decode("en indiquant le numéro de facture, ou par virement :")));
$this->Ln(1);
// Table IBAN
$this->SetFont('ComicSans', '', 7);
$ibanWidth = 56;
$this->SetFont('ComicSans', '', 8);
$ibanWidth = 62;
$ibanCursorY = $this->GetY();
$this->Cell($ibanWidth, 5, 'IBAN : FR76 1360 6000 1436 5418 1800 038', 1, 1, 'C');
$ibanCursorX = $this->GetX();
$this->Cell($ibanWidth, 5, 'Code SWIFT : AGRI FR PP 836', 1, 1, 'C');
//TABLE HT
$tableWidth = 40; // Largeur totale de la 2e table (20+20)
$tableWidth = 48; // Largeur totale de la 2e table (20+20)
$marginRight = 3; // Marge par rapport au bord droit
$pageWidth = 210; // Largeur d'une page A4 en mm (portrait)
// Position correcte de la 2e table
$startOfArrayX = $pageWidth - $tableWidth - $marginRight;
$startOfArrayY = $ibanCursorY - 10;
$startOfArrayY = $ibanCursorY - 5;
foreach ($totalPriceArray as $label => $price) {
$this->SetXY($startOfArrayX, $startOfArrayY);
$this->Cell(20, 5, $label, 1, 1, 'C');
$this->SetXY($startOfArrayX + 20, $startOfArrayY);
$this->Cell(20, 5, number_format($price, 2, '.', '') . chr(128), 1, 1, 'C');
$this->SetFont('ComicSans', '', 10);
foreach($totalPriceArray as $label => $price){
$this->SetXY($startOfArrayX,$startOfArrayY);
$this->Cell(24, 5, $label, 1, 1, 'C');
$this->SetXY($startOfArrayX + 24,$startOfArrayY);
$this->Cell(24, 5, number_format($price,2,'.','').chr(128), 1, 1, 'C');
$startOfArrayY += 5;
}
}

View File

@ -99,6 +99,11 @@ class InvoicePdfService {
$pdf->SetFactureContent();
$pdfContent = $pdf->Output('','S');
$pdfFilename = $pdf->GetInvoiceFilename();
$prefixPdf = "FACTURE";
if($invoicePdfData['is_negative']){
$prefixPdf = "AVOIR";
}
$pdfFilename = $prefixPdf."_".$pdfFilename;
$filenames = [];
foreach($factureFolders as $folder){
try {

View File

@ -79,7 +79,7 @@ window.addEventListener("DOMContentLoaded", function () {
var pacemakerBtn = document.getElementById("pacemakerBtn");
var rapportSoinBtn = document.getElementById("rapportSoinBtn");
var exportCareCertificateButton = document.getElementById("exportCareCertificate");
var setDefuntCoverButton = this.document.getElementById("coverProductsRadioButton");
var setDefuntCoverButton = this.document.getElementById("coverProductsSetButton");
var showRapportBijouxExportModalButton = this.document.getElementById("showRapportBijouxExportModal");
var closeRapportBijouxModalButton = this.document.getElementById("closeRapportBijouxModal");
@ -113,11 +113,11 @@ window.addEventListener("DOMContentLoaded", function () {
setDefuntCoverButton.addEventListener("click",function(){
const productCoverRadios = document.getElementsByName('coverProductsRadioButton');
const selectedProductCover = document.getElementsByName('coverProductsCheckbox');
let selectedValue = null;
for (const radio of productCoverRadios) {
if (radio.checked) {
selectedValue = radio.value;
for (const checkbox of selectedProductCover) {
if (checkbox.checked) {
selectedValue = checkbox.value;
break;
}
}
@ -342,4 +342,8 @@ function removeElements() {
items.forEach((item) => {
item.remove();
})
}
}
$('.coverProductsExclusive').on('change', function () {
$('.coverProductsExclusive').not(this).prop('checked', false);
});

View File

@ -773,10 +773,6 @@ export function exportCareCertificate(defuntIdPayload) {
* @param {*} setDefuntCoverPayload
*/
export function setDefuntCover(setDefuntCoverPayload) {
if(setDefuntCoverPayload.productId == null){
showError('Veuillez choisir une housse à appliquer');
return;
}
$.ajax({
url: baseUrl + '/defunt/setDefuntCover',
type: 'POST',

View File

@ -123,16 +123,17 @@ $coverProducts = $_['coverProducts'];
<?php foreach ($coverProducts as $currentCoverProduct): ?>
<div class="row">
<div class="d-flex align-items-center mb-2">
<input type="radio"
name="coverProductsRadioButton"
<input type="checkbox"
name="coverProductsCheckbox"
class="coverProductsExclusive"
value="<?= $currentCoverProduct->id; ?>"
<?= $currentCoverProduct->id == $_['defunt'][0]->product_cover_id ? 'checked' : ''; ?>>
<label class="form-check-label"><?= $currentCoverProduct->description; ?></label>
<label class="form-check-label"><?= $currentCoverProduct->description; ?></label>
</div>
</div>
<?php endforeach; ?>
<div class="row p-2">
<button class="btn btn-secondary" id="coverProductsRadioButton"> Valider le choix </button>
<button class="btn btn-secondary" id="coverProductsSetButton"> Valider le choix </button>
</div>
</div>
</div>