Merge branch 'staging' into releases/release-hytha-prod

This commit is contained in:
Tiavina 2025-03-17 16:16:16 +03:00
commit 95be6e4827
41 changed files with 25174 additions and 143 deletions

View File

@ -30,17 +30,52 @@
}
}
.pending-event {
position: relative;
.pending-event .fc-event-title-container {
position: relative;
}
.pending-event::after {
content: "";
position: absolute;
top: 50%;
left: 0;
width: 100%;
height: 1px;
background: rgb(23, 23, 23);
transform: scaleY(0.5);
.pending-event .fc-event-title-container::after {
content: "";
position: absolute;
top: 50%;
left: 0;
width: 100%;
height: 1px;
background: rgb(23, 23, 23);
transform: scaleY(0.5);
}
.pending-event .fc-event-title {
position: relative;
}
.pending-event .fc-event-title::after {
content: "";
position: absolute;
top: 50%;
left: 0;
width: 100%;
height: 1px;
background: rgb(23, 23, 23);
transform: scaleY(0.5);
}
.pending-event .fc-list-event-time{
color: black;
}
.pending-event .fc-list-event-title {
position: relative;
color: black;
}
.pending-event .fc-list-event-title::after {
content: "";
position: absolute;
top: 50%;
left: 0;
width: 100%;
height: 1px;
background: rgb(23, 23, 23);
transform: scaleY(0.5);
}

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":"c14c1012a0469c027742","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":"7cf71b4f92d5bbc180b4","src_store_index_js":"c14c1012a0469c027742","src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258":"7910aecb675dcdfa620c","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=49f5e18ccfb495936d13
//# sourceMappingURL=calendar-dashboard.js.map?v=4df907e0602289b087d0

File diff suppressed because one or more lines are too long

View File

@ -58216,11 +58216,46 @@ ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8";
overflow-x: hidden;
}
.pending-event {
.pending-event .fc-event-title-container {
position: relative;
}
.pending-event::after {
.pending-event .fc-event-title-container::after {
content: "";
position: absolute;
top: 50%;
left: 0;
width: 100%;
height: 1px;
background: rgb(23, 23, 23);
transform: scaleY(0.5);
}
.pending-event .fc-event-title {
position: relative;
}
.pending-event .fc-event-title::after {
content: "";
position: absolute;
top: 50%;
left: 0;
width: 100%;
height: 1px;
background: rgb(23, 23, 23);
transform: scaleY(0.5);
}
.pending-event .fc-list-event-time {
color: black;
}
.pending-event .fc-list-event-title {
position: relative;
color: black;
}
.pending-event .fc-list-event-title::after {
content: "";
position: absolute;
top: 50%;
@ -313282,7 +313317,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","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_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","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] + "";
/******/ };
/******/ })();
/******/
@ -313587,4 +313622,4 @@ appointmentsConfigsStore.addInitialConfigs((0,_nextcloud_initial_state__WEBPACK_
/******/ })()
;
//# sourceMappingURL=calendar-main.js.map?v=907bdf77d6bfe9a736e7
//# sourceMappingURL=calendar-main.js.map?v=a9b70207c0e2685fde63

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

@ -2775,11 +2775,46 @@ ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8";
overflow-x: hidden;
}
.pending-event {
.pending-event .fc-event-title-container {
position: relative;
}
.pending-event::after {
.pending-event .fc-event-title-container::after {
content: "";
position: absolute;
top: 50%;
left: 0;
width: 100%;
height: 1px;
background: rgb(23, 23, 23);
transform: scaleY(0.5);
}
.pending-event .fc-event-title {
position: relative;
}
.pending-event .fc-event-title::after {
content: "";
position: absolute;
top: 50%;
left: 0;
width: 100%;
height: 1px;
background: rgb(23, 23, 23);
transform: scaleY(0.5);
}
.pending-event .fc-list-event-time {
color: black;
}
.pending-event .fc-list-event-title {
position: relative;
color: black;
}
.pending-event .fc-list-event-title::after {
content: "";
position: absolute;
top: 50%;
@ -8880,7 +8915,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":"c14c1012a0469c027742","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":"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":"1fe216f15f7f1e1b4253","vendors-node_modules_webdav_dist_web_index_js":"454da8f908d41b47c607","src_store_index_js":"c14c1012a0469c027742","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] + "";
/******/ };
/******/ })();
/******/
@ -9130,4 +9165,4 @@ __webpack_require__.p = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.linkTo
/******/ })()
;
//# sourceMappingURL=calendar-reference.js.map?v=7d7310f038ef0528d222
//# sourceMappingURL=calendar-reference.js.map?v=ca0c27401bb73b19b101

File diff suppressed because one or more lines are too long

View File

@ -28077,4 +28077,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=1fe216f15f7f1e1b4253

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

@ -1,15 +1,17 @@
<?php
namespace OCA\Gestion\Controller;
use OCA\Gestion\Db\Bdd;
use OCA\Gestion\Service\InvoicePdfService;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\DataResponse;
use OCP\DB\Exception;
use OCP\Files\IRootFolder;
use OCP\IRequest;
use OCP\DB\Exception;
use OCP\Mail\IMailer;
use OCA\Gestion\Db\Bdd;
use OCP\Files\IRootFolder;
use OCP\AppFramework\Controller;
use OCA\Gestion\Helpers\DateHelpers;
use OCA\Gestion\Service\MailerService;
use OCP\AppFramework\Http\DataResponse;
use OCA\Gestion\Service\InvoicePdfService;
date_default_timezone_set('Europe/Paris');
class InvoiceController extends Controller
{
private Bdd $gestionRepository;
@ -18,6 +20,9 @@ class InvoiceController extends Controller
private $mailer;
private $currentUserIdNextcloud;
private $storage;
private $mailerService;
public function __construct(
$UserId,
$AppName,
@ -25,7 +30,9 @@ class InvoiceController extends Controller
Bdd $bdd,
InvoicePdfService $invoicePdfService,
IRootFolder $rootFolder,
IMailer $mailer
IMailer $mailer,
MailerService $mailerService
)
{
$this->currentUserIdNextcloud = $UserId;
@ -33,6 +40,8 @@ class InvoiceController extends Controller
$this->rootFolder = $rootFolder;
$this->mailer = $mailer;
$this->gestionRepository = $bdd;
$this->mailerService = $mailerService;
try{
$this->storage = $rootFolder->getUserFolder($this->currentUserIdNextcloud);
}catch(\OC\User\NoUserException $e){
@ -82,13 +91,21 @@ class InvoiceController extends Controller
return new DataResponse("La facture n'a pas été générée correctement", 404, ['Content-Type' => 'application/json']);
}
$factureContent = $factureGeneratedResponse["content"];
$factureDate = DateHelpers::convertInvoiceDateToMonthAndYearOnly($facture['date_paiement']);
try {
$message = $this->mailer->createMessage();
$message->setTo(recipients: [$email => "Facture"]);
$content = $this->mailer->createAttachment($factureContent, "Facture.pdf", "application/pdf");
$message->attach($content);
$message->setSubject("Facture");
$message->setPlainBody("Veuiller trouver ci-joint votre facture");
$signature = $this->mailerService->getFooterContent();
$message->setHtmlBody(
"<p>Bonjour.</p>".
"<p> Vous trouverez en pièce jointe la facture des soins de « " . $factureDate . " » .</p>".
$signature
);
$this->mailer->send($message);
$this->gestionRepository->setFactureSentDate($factureId);
} catch (Exception $e) {

View File

@ -1,36 +1,37 @@
<?php
namespace OCA\Gestion\Controller;
use \FPDF;
use \Datetime;
use Exception;
use OCA\Gestion\Constants\BddConstant;
use OCA\Gestion\Constants\DevisMentionConstant;
use OCA\Gestion\Constants\FactureTypeConstant;
use OCA\Gestion\Service\InvoicePdfHandler;
use OCP\IConfig;
use OCP\IRequest;
defined("TAB1") or define("TAB1", "\t");
use OCP\IGroupManager;
use OCP\IRequest;
use OCP\IUserSession;
use OCP\Mail\IMailer;
use OCP\Files\IRootFolder;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Controller;
use OCA\Gestion\Db\Bdd;
use OCP\IGroupManager;
use OCP\IURLGenerator;
use OCP\IConfig;
use \Datetime;
use \DatetimeImmutable;
use \IntlDateFormatter;
use \FPDF;
use OCA\Gestion\Constants\MultipleFactureTypeConstant;
use OCA\Gestion\Db\Bdd;
use OCP\Files\IRootFolder;
use OCP\AppFramework\Controller;
use OCA\Gestion\Service\TalkService;
use OCA\Gestion\Constants\BddConstant;
use OCA\Gestion\Service\MailerService;
use OCP\AppFramework\Http\DataResponse;
use OCA\Gestion\Helpers\FileExportHelpers;
use OCA\Gestion\Service\Certificate\CertificateService;
use OCA\Gestion\Service\InvoicePdfHandler;
use OCA\Gestion\Service\InvoicePdfService;
use OCP\AppFramework\Http\TemplateResponse;
use OCA\Gestion\Constants\FactureTypeConstant;
use OCA\Gestion\Constants\DevisMentionConstant;
use OCA\Gestion\Service\Devis\Pdf\DevisPdfService;
use OCA\Gestion\Service\ExportClientStatisticService;
use OCA\Gestion\Constants\MultipleFactureTypeConstant;
use OCA\Gestion\Service\ExportThanatoStatisticService;
use OCA\Gestion\Service\InvoicePdfService;
use OCA\Gestion\Service\TalkService;
use OCA\Gestion\Service\Certificate\CertificateService;
date_default_timezone_set('Europe/Paris');
@ -76,7 +77,8 @@ class PageController extends Controller {
/** @var DevisPdfService */
private $devisPdfService;
private $rootFolder;
private $mailerService;
/**
* Constructor
*/
@ -95,7 +97,9 @@ class PageController extends Controller {
InvoicePdfService $invoicePdfService,
CertificateService $certificateService,
TalkService $talkService,
DevisPdfService $devisPdfService) {
DevisPdfService $devisPdfService,
MailerService $mailerService
) {
parent::__construct($AppName, $request);
@ -112,6 +116,7 @@ class PageController extends Controller {
$this->talkService = $talkService;
$this->devisPdfService = $devisPdfService;
$this->rootFolder = $rootFolder;
$this->mailerService = $mailerService;
//$this->fpdf = $fpdf;
if ($userSession->isLoggedIn()) {
@ -1593,8 +1598,15 @@ class PageController extends Controller {
$content = $this->mailer->createAttachment($data, basename($ff_pdf), "application/pdf");
$message->attach($content);
$message->setSubject($subject);
$body_text = $addName ? $body." de ".$devis['defunt_nom']: $body;
$message->setPlainBody("Bonjour.\n\n".$body_text."!\n\nCordialement.");
$body_text = $addName ? ($body." de « ".$devis['defunt_nom']. " »" ) : $body;
$signature = $this->mailerService->getFooterContent();
$message->setHtmlBody(
"<p>Bonjour.</p>".
"<p>$body_text</p>".
$signature
);
$this->mailer->send($message);
return new DataResponse("", 200, ['Content-Type' => 'application/json']);
// } catch (Exception $e) {
@ -1602,6 +1614,14 @@ class PageController extends Controller {
// }
}
}
public function addSignatureEmailLogo (){
$signatureImage = $this->getSignature();
if (!$signatureImage) {
return "";
}
//Add html img in base 64
return "<img style= 'width: 250px;height: 150;' src='data:image/jpeg;base64,".base64_encode($signatureImage)."'>" ;
}
/**
* @NoAdminRequired
@ -1740,8 +1760,9 @@ class PageController extends Controller {
try {
try {
$data_factures = array();
$factures = json_decode($this->myDb->getFactures($this->idNextcloud));
$factures = json_decode($this->myDb->getFacturesListWithDependencies());
foreach ($factures as $key => $facture) {
$factureIsSingle = $facture->facture_type == FactureTypeConstant::TYPE_SINGLE;
$facture_temp = array(
'num' => $facture->num,
'client' => $facture->entreprise,
@ -1754,19 +1775,65 @@ class PageController extends Controller {
'montant_tva' => 0,
'montant_ttc' => 0,
);
$produits = json_decode($this->getProduitsById($facture->id_devis));
foreach ($produits as $key => $produit) {
$htPrice = $produit->prix_unitaire;
if($facture->fk_client_group_id != null || $facture->fk_client_group_id != 0){
$price = $this->myDb->getProductPriceByClientGroupId($facture->fk_client_group_id,$produit->id);
if($price != null){
$htPrice = $price;
if($factureIsSingle){
$produits = json_decode($this->getProduitsById($facture->id_devis));
foreach ($produits as $key => $produit) {
$htPrice = $produit->prix_unitaire;
if($facture->fk_client_group_id != null || $facture->fk_client_group_id != 0){
$price = $this->myDb->getProductPriceByClientGroupId($facture->fk_client_group_id,$produit->id);
if($price != null){
$htPrice = $price;
}
}
$facture_temp['montant_htc'] += $htPrice * $produit->quantite;
};
$facture_temp['montant_tva'] = ($facture_temp['montant_htc'] * $facture_temp['tva'])/100;
$facture_temp['montant_ttc'] = $facture_temp['montant_tva'] + $facture_temp['montant_htc'];
}
else{
$isFactureGroupForSingleClient = $facture->facture_client_id != null && $facture->facture_client_id != 0;
if($isFactureGroupForSingleClient){
$facture_temp["client"] = $facture->facture_client_entreprise;
$facture_temp["nom_client"] = $facture->facture_client_name;
$devisList = $this->myDb->getDevisByClientIdAndMonthYear(
$facture->facture_client_id,
$facture->facture_month,
$facture->facture_year,
[
DevisMentionConstant::FACTURED,
DevisMentionConstant::FACTURED_FORMATTED
]
);
}
$facture_temp['montant_htc'] += $htPrice * $produit->quantite;
};
$facture_temp['montant_tva'] = ($facture_temp['montant_htc'] * $facture_temp['tva'])/100;
$facture_temp['montant_ttc'] = $facture_temp['montant_tva'] + $facture_temp['montant_htc'];
else{
$facture_temp["client"] = $facture->facture_group_name;
$facture_temp["nom_client"] = $facture->facture_group_name;
$devisList = $this->myDb->getDevisByClientGroupFacturationIdAndMonthYear(
$facture->facture_client_group_facturation_id,
$facture->facture_month,
$facture->facture_year,
[
DevisMentionConstant::FACTURED,
DevisMentionConstant::FACTURED_FORMATTED
]
);
}
foreach($devisList as $currentDevis){
$produits = json_decode($this->getProduitsById($currentDevis['id']));
foreach ($produits as $key => $produit) {
$htPrice = $produit->prix_unitaire;
if($currentDevis["fk_client_group_id"] != null || $currentDevis["fk_client_group_id"] != 0){
$price = $this->myDb->getProductPriceByClientGroupId($currentDevis["fk_client_group_id"],$produit->id);
if($price != null){
$htPrice = $price;
}
}
$facture_temp['montant_htc'] += $htPrice * $produit->quantite;
};
}
$facture_temp['montant_tva'] = ($facture_temp['montant_htc'] * $facture_temp['tva'])/100;
$facture_temp['montant_ttc'] = $facture_temp['montant_tva'] + $facture_temp['montant_htc'];
}
array_push($data_factures, $facture_temp);
};
@ -1852,6 +1919,17 @@ class PageController extends Controller {
return base64_encode($file->getContent());
}
private function getSignature(){
try{
if(isset($this->adminStorage)){
$file = $this->adminStorage->get('/.gestion/sign.jpg');
return $file->getContent();
}
}
catch(\OCP\Files\NotFoundException $e) {}
return false;
}
/**
* @NoAdminRequired
@ -2277,7 +2355,7 @@ class PageController extends Controller {
if($ff_pdf != null && trim($email) != ''){
//send email
$this->sendAttachmentToClientByDefunt($defunt->id, $ff_pdf, $email,"Rapport soins", "Veuillez trouver ci-joint le rapport de soins de ".$nomDefunt.".");
$this->sendAttachmentToClientByDefunt($defunt->id, $ff_pdf, $email,"Rapport soins", "Vous trouverez en pièce jointe le « rapport de soins » de " , true);
}
$res = array();
@ -2471,7 +2549,7 @@ class PageController extends Controller {
if($ff_pdf != null && trim($email) != ''){
//send email
$this->sendAttachmentToClientByDefunt($defunt->id, $ff_pdf, $email,"Rapport des bijoux", "Veuillez trouver ci-joint le rapport des bijoux de ".$nomDefunt.".");
$this->sendAttachmentToClientByDefunt($defunt->id, $ff_pdf, $email,"Rapport des bijoux", "Vous trouverez en pièce jointe le rapport « des bijoux » de " , true);
}
$res = array();
@ -2687,7 +2765,7 @@ class PageController extends Controller {
$careCertificateFilename = $this->certificateService->generateCareCertificate($defuntId,$this->idNextcloud);
if($careCertificateFilename != null && trim($email) != '' ){
//send email
$this->sendAttachmentToClientByDefunt($defuntId, $careCertificateFilename, $email,"Attestation de soins", " Veuillez trouver ci-joint l'attestation de soins ", true);
$this->sendAttachmentToClientByDefunt($defuntId, $careCertificateFilename, $email,"Attestation de soins", " Vous trouverez en pièce jointe l'attestation de « soins »", true);
}
return $careCertificateFilename;
}
@ -2836,7 +2914,7 @@ class PageController extends Controller {
$careCertificateFilename = $this->certificateService->generatePacemakerCertificate($defuntId,$this->idNextcloud);
if($careCertificateFilename != null && trim($email) != ''){
//send email
$this->sendAttachmentToClientByDefunt($defuntId, $careCertificateFilename, $email,"Attestation pacemaker", "Veuillez trouver ci-joint l'attestation de pacemaker ", true);
$this->sendAttachmentToClientByDefunt($defuntId, $careCertificateFilename, $email,"Retrait de pile", "Vous trouverez en pièce jointe l'attestation de « retrait de pile »", true);
}
return $careCertificateFilename;

View File

@ -365,13 +365,17 @@ class Bdd {
facture.fk_client_group_facturation_id as facture_client_group_facturation_id,
facture.date_paiement,
facture.type_paiement,
facture.id_devis,
facture.id_devis,
facture.version,
facture.status_paiement,
facture_client.nom as facture_client_name,
facture_client.entreprise as facture_client_entreprise,
facture_client.fk_client_group_id as facture_client_group_id,
facture_client_group_facturation.group_facturation_name as facture_group_name,
facture.document_generated_date as facture_document_generated_date,
facture.document_sent_date as facture_document_sent_date,
facture.month as facture_month,
facture.year as facture_year,
devis.num as dnum,
devis.comment as dcomment,
client.entreprise,
@ -2064,41 +2068,39 @@ class Bdd {
public function retrieveTotalInvoicesForTheYear(){
$sql = "SELECT
EXTRACT(YEAR FROM facture.date_paiement) AS y,
EXTRACT(MONTH FROM facture.date_paiement) AS m,
EXTRACT(YEAR FROM devis.date) AS y,
EXTRACT(MONTH FROM devis.date) AS m,
SUM(
COALESCE(client_group_discount.ht_amount,produit.prix_unitaire)
* produit_devis.quantite
) AS total
FROM ".$this->tableprefix."facture AS facture
JOIN ".$this->tableprefix."devis AS devis
ON MONTH(facture.date_paiement) = MONTH(devis.date) AND
YEAR(facture.date_paiement) = YEAR(devis.date)
JOIN ".$this->tableprefix."produit_devis AS produit_devis
from oc_gestion_devis as devis
JOIN oc_gestion_produit_devis AS produit_devis
ON devis.id = produit_devis.devis_id
JOIN ".$this->tableprefix."produit AS produit
JOIN oc_gestion_produit AS produit
ON produit_devis.produit_id = produit.id
JOIN ".$this->tableprefix."client AS client
JOIN oc_gestion_client AS client
ON devis.id_client = client.id
LEFT JOIN ".$this->tableprefix."client_group AS client_group
JOIN oc_gestion_client_group AS client_group
ON client.fk_client_group_id = client_group.id
LEFT JOIN ".$this->tableprefix."client_group_discount AS client_group_discount
JOIN oc_gestion_client_group_discount AS client_group_discount
ON client_group.id = client_group_discount.fk_client_group_id
AND produit.id = client_group_discount.fk_produit_id
WHERE
(devis.mentions = ? OR devis.mentions = ?)
GROUP BY
EXTRACT(YEAR FROM facture.date_paiement),
EXTRACT(MONTH FROM facture.date_paiement)
EXTRACT(YEAR FROM devis.`date`),
EXTRACT(MONTH FROM devis.`date`)
ORDER BY
EXTRACT(YEAR FROM facture.date_paiement) DESC,
EXTRACT(MONTH FROM facture.date_paiement);";
EXTRACT(YEAR FROM devis.`date`) DESC,
EXTRACT(MONTH FROM devis.`date`);";
return $this->execSQL($sql, [
DevisMentionConstant::FACTURED,
DevisMentionConstant::FACTURED_FORMATTED
]);
}
}
/**
* Annual turnover per month without VAT
*/
@ -2135,25 +2137,22 @@ class Bdd {
public function getStatArticleAnnuel($idNextcloud, $annee) {
$sql = "SELECT p.id, p.reference,
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 1 THEN pd.quantite ELSE 0 END), 0) AS janvier,
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 2 THEN pd.quantite ELSE 0 END), 0) AS fevrier,
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 3 THEN pd.quantite ELSE 0 END), 0) AS mars,
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 4 THEN pd.quantite ELSE 0 END), 0) AS avril,
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 5 THEN pd.quantite ELSE 0 END), 0) AS mai,
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 6 THEN pd.quantite ELSE 0 END), 0) AS juin,
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 7 THEN pd.quantite ELSE 0 END), 0) AS juillet,
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 8 THEN pd.quantite ELSE 0 END), 0) AS aout,
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 9 THEN pd.quantite ELSE 0 END), 0) AS septembre,
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 10 THEN pd.quantite ELSE 0 END), 0) AS octobre,
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 11 THEN pd.quantite ELSE 0 END), 0) AS novembre,
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 12 THEN pd.quantite ELSE 0 END), 0) AS decembre
COALESCE(SUM(CASE WHEN MONTH(d.date) = 1 THEN pd.quantite ELSE 0 END), 0) AS janvier,
COALESCE(SUM(CASE WHEN MONTH(d.date) = 2 THEN pd.quantite ELSE 0 END), 0) AS fevrier,
COALESCE(SUM(CASE WHEN MONTH(d.date) = 3 THEN pd.quantite ELSE 0 END), 0) AS mars,
COALESCE(SUM(CASE WHEN MONTH(d.date) = 4 THEN pd.quantite ELSE 0 END), 0) AS avril,
COALESCE(SUM(CASE WHEN MONTH(d.date) = 5 THEN pd.quantite ELSE 0 END), 0) AS mai,
COALESCE(SUM(CASE WHEN MONTH(d.date) = 6 THEN pd.quantite ELSE 0 END), 0) AS juin,
COALESCE(SUM(CASE WHEN MONTH(d.date) = 7 THEN pd.quantite ELSE 0 END), 0) AS juillet,
COALESCE(SUM(CASE WHEN MONTH(d.date) = 8 THEN pd.quantite ELSE 0 END), 0) AS aout,
COALESCE(SUM(CASE WHEN MONTH(d.date) = 9 THEN pd.quantite ELSE 0 END), 0) AS septembre,
COALESCE(SUM(CASE WHEN MONTH(d.date) = 10 THEN pd.quantite ELSE 0 END), 0) AS octobre,
COALESCE(SUM(CASE WHEN MONTH(d.date) = 11 THEN pd.quantite ELSE 0 END), 0) AS novembre,
COALESCE(SUM(CASE WHEN MONTH(d.date) = 12 THEN pd.quantite ELSE 0 END), 0) AS decembre
FROM ".$this->tableprefix."produit p
LEFT JOIN ".$this->tableprefix."produit_devis pd ON p.id = pd.produit_id
LEFT JOIN ".$this->tableprefix."devis d ON pd.devis_id = d.id
LEFT JOIN ".$this->tableprefix."facture f
ON MONTH(f.date_paiement) = MONTH(d.date) AND
YEAR(f.date_paiement) = YEAR(f.date)
WHERE YEAR(f.date_paiement) = ".$annee." AND pd.devis_id IS NOT NULL AND
WHERE YEAR(d.date) = ".$annee." AND pd.devis_id IS NOT NULL AND
(d.mentions = ? or d.mentions = ?)
GROUP BY p.id, p.reference;";
return $this->execSQL($sql, [
@ -2179,9 +2178,6 @@ class Bdd {
COALESCE(SUM(CASE WHEN MONTH(d.date) = 11 THEN 1 ELSE 0 END), 0) AS novembre,
COALESCE(SUM(CASE WHEN MONTH(d.date) = 12 THEN 1 ELSE 0 END), 0) AS decembre
FROM ".$this->tableprefix."devis d
LEFT JOIN ".$this->tableprefix."facture f
ON MONTH(f.date_paiement) = MONTH(d.date) AND
YEAR(f.date_paiement) = YEAR(f.date)
LEFT JOIN ".$this->tableprefix."thanato thanato ON d.id_thanato = thanato.id
WHERE YEAR(d.date) = ".$annee." AND d.id_thanato IS NOT NULL AND
(d.mentions = ? or d.mentions = ?)
@ -4320,6 +4316,28 @@ COMMENTAIRES: ".$comment;
return FactureTypeConstant::TYPE_SINGLE;
}
public function getDevisByClientGroupFacturationIdAndMonthYear($clientGroupFacturationId,$month,$year,$mentionsFilters = []){
$sql = "SELECT devis.id ,devis.id_client,client.fk_client_group_id
FROM ".$this->tableprefix."devis as devis
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
WHERE
client.fk_client_group_facturation_id = ? AND
YEAR(devis.date) = ? AND
MONTH(devis.date) = ?
";
$conditions = [$clientGroupFacturationId,$year,$month];
if(!empty($mentionFilters)){
$mentionsFilterPlaceholders = implode(',', array_fill(0, count($mentionFilters), '?'));
$sql .= " AND ". $this->tableprefix."devis.mentions IN ($mentionsFilterPlaceholders)";
$conditions = array_merge($conditions, $mentionFilters);
}
$sql.= ";";
$result = $this->execSQLNoJsonReturn($sql,$conditions);
return $result;
}
public function getDevisIdsByClientGroupFacturationIdAndMonthYear($clientGroupFacturationId,$month,$year,$mentionFilters = []){
$sql = "SELECT devis.id
FROM ".$this->tableprefix."devis as devis
@ -4346,8 +4364,29 @@ COMMENTAIRES: ".$comment;
return $devisIds;
}
public function getDevisByClientIdAndMonthYear($clientId,$month,$year,$mentionFilters = []){
$sql = "SELECT devis.id,devis.id_client,client.fk_client_group_id
FROM ".$this->tableprefix."devis as devis
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
WHERE
client.id = ? AND
YEAR(devis.date) = ? AND
MONTH(devis.date) = ?";
$conditions = [$clientId,$year,$month];
if(!empty($mentionFilters)){
$mentionsFilterPlaceholders = implode(',', array_fill(0, count($mentionFilters), '?'));
$sql .= " AND devis.mentions IN ($mentionsFilterPlaceholders)";
$conditions = array_merge($conditions, $mentionFilters);
}
$sql.= ";";
$result = $this->execSQLNoJsonReturn($sql,$conditions);
return $result;
}
public function getDevisIdsByClientIdAndMonthYear($clientId,$month,$year,$mentionFilters = []){
$sql = "SELECT devis.id
$sql = "SELECT devis.id,devis.id_client,client.fk_client_group_id
FROM ".$this->tableprefix."devis as devis
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
WHERE

View File

@ -131,5 +131,13 @@ class DateHelpers
}
return $totalHours;
}
public static function convertInvoiceDateToMonthAndYearOnly($invoiceDate = null){
if(!$invoiceDate){
return "";
}
$dateTime = new DateTime($invoiceDate);
$formattedDate = strftime('%B %Y', $dateTime->getTimestamp());
return $formattedDate;
}
}

View File

@ -0,0 +1,68 @@
<?php
declare(strict_types=1);
/**
* Calendar App
*
* @copyright 2021 Anna Larch <anna.larch@gmx.net>
*
* @author Anna Larch <anna.larch@gmx.net>
* @author Richard Steinmetz <richard@steinmetz.cloud>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Gestion\Service;
use OCA\Gestion\Constants\BddConstant;
use OCP\Files\IRootFolder;
class MailerService {
private $adminStorage;
public function __construct(
IRootFolder $rootFolder,
){
$this->adminStorage = $rootFolder->getUserFolder(BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD);
}
public function getFooterContent ($userName = "Johann"){
$wish = "<p>Vous en souhaitant bonne réception. </p>";
$cordialement = "<p> Cordialement,</p>";
$userName = "<p> {$userName} </p>" ;
$signatureImage = $this->getSignatureHtmlEmailContent();
return $wish . $cordialement .$userName . $signatureImage ;
}
private function getSignatureHtmlEmailContent (){
$signatureImage = $this->getSignatureContent();
if (!$signatureImage) {
return "";
}
return "<img style= 'width: 250px;height: 150;' src='data:image/jpeg;base64,".base64_encode($signatureImage)."'>" ;
}
private function getSignatureContent(){
try{
if(isset($this->adminStorage)){
$file = $this->adminStorage->get('/.gestion/sign.jpg');
return $file->getContent();
}
}
catch(\OCP\Files\NotFoundException $e) {}
return false;
}
}

View File

@ -72,7 +72,7 @@ $coverProducts = $_['coverProducts'];
</div>
</div>
<!-- Sexe -->
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 8px">
<!-- <div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 8px">
<div class="col-3">Sexe</div>
<div class="col-9">
<select class="gestion-select w-100" data-table="defunt" data-column="sexe" data-id="<?php echo $_['defunt'][0]->id ?>">
@ -80,24 +80,24 @@ $coverProducts = $_['coverProducts'];
<option value="f" <?php if (strcmp($_['defunt'][0]->sexe, 'f') == 0) echo 'selected' ?>>Féminin</option>
</select>
</div>
</div>
<!-- Référence pacemaker -->
</div> -->
<!-- de série Prothèse-->
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 16px">
<div class="col-3">Référence pacemaker</div>
<div class="col-3">de série Prothèse</div>
<div class="col-9">
<input class="gestion-input w-100" type="text" value="<?php echo ($_['defunt'][0]->ref_pacemaker ?? "") ?>" data-table="defunt" data-column="ref_pacemaker" data-id="<?php echo $_['defunt'][0]->id ?>" />
</div>
</div>
<!-- Product reference -->
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 16px">
<!-- <div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 16px">
<div class="col-3">Référence du produit</div>
<div class="col-9">
<input class="gestion-input w-100" type="text" value="<?php echo ($_['defunt'][0]->product_reference ?? "") ?>" data-table="defunt" data-column="product_reference" data-id="<?php echo $_['defunt'][0]->id ?>" />
</div>
</div>
</div> -->
<!-- Product brand -->
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 16px">
<div class="col-3">Marque du produit</div>
<div class="col-3">Marque Prothèse</div>
<div class="col-9">
<input class="gestion-input w-100" type="text" value="<?php echo ($_['defunt'][0]->product_brand ?? "") ?>" data-table="defunt" data-column="product_brand" data-id="<?php echo $_['defunt'][0]->id ?>" />
</div>