Merge branch 'staging' into releases/release-hytha-prod
This commit is contained in:
commit
95be6e4827
@ -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);
|
||||
}
|
||||
|
||||
@ -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
@ -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
@ -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
@ -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
@ -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
@ -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
@ -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
@ -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
@ -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
@ -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
|
||||
File diff suppressed because one or more lines are too long
@ -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
|
||||
File diff suppressed because one or more lines are too long
@ -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
|
||||
File diff suppressed because one or more lines are too long
@ -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
|
||||
File diff suppressed because one or more lines are too long
@ -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
|
||||
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
@ -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
|
||||
File diff suppressed because one or more lines are too long
@ -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
|
||||
File diff suppressed because one or more lines are too long
@ -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) {
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
68
gestion/lib/Service/MailerService.php
Normal file
68
gestion/lib/Service/MailerService.php
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -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> -->
|
||||
<!-- N° 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">N° 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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user