Compare commits
109 Commits
production
...
production
| Author | SHA1 | Date | |
|---|---|---|---|
| d2bb1a9cc6 | |||
| 8cacac1efc | |||
| a28b7f6ea6 | |||
| 03784fd8e6 | |||
| 411cc2d5a8 | |||
| 34717b772d | |||
| b6ea2550bc | |||
| 65d13d70f9 | |||
| b60bb6e0b2 | |||
| 9bdab31b52 | |||
| f0356cea10 | |||
| 5855be2655 | |||
| 1a4068481f | |||
| cfe88df7ba | |||
| a027f5928a | |||
| c35d0efec1 | |||
| 4957a67ba5 | |||
|
|
ce18ebdb9a | ||
|
|
905794c3c9 | ||
| bccfc0b7ed | |||
| 49ecf4b1ed | |||
| 21fff9d4c0 | |||
| 0c6d9577a3 | |||
| 06a2e8fb2a | |||
|
|
085acaf193 | ||
|
|
60ccd28778 | ||
| 923c40a238 | |||
| 4a5fe4a394 | |||
| 37818547d2 | |||
| 9f0450a76c | |||
| d9a63e9ac3 | |||
| 7685461442 | |||
| a278022748 | |||
| 90d9b5a52c | |||
| c89d9b3202 | |||
|
|
a9dd3448c3 | ||
|
|
90557a49a3 | ||
|
|
d4d8815fc6 | ||
|
|
c6f2a549b5 | ||
|
|
123f3cfe4b | ||
|
|
ee6fee3e6e | ||
|
|
005034f587 | ||
|
|
084a5739d0 | ||
|
|
65cc06133e | ||
|
|
aea19373e8 | ||
|
|
be8a73b06c | ||
|
|
86c6580cc2 | ||
|
|
c368161be8 | ||
|
|
a72b294150 | ||
|
|
8bfd45b80f | ||
|
|
ca81f08e34 | ||
|
|
d8ff187d08 | ||
|
|
563d5bf2de | ||
|
|
488497b25f | ||
|
|
d29b5ecad9 | ||
|
|
21f868f7d3 | ||
|
|
dc8825a923 | ||
|
|
c190ec3286 | ||
|
|
af13ceb317 | ||
|
|
b77f6decee | ||
|
|
4c2412d5be | ||
|
|
3a05613b60 | ||
|
|
1f03b91871 | ||
|
|
760902963b | ||
|
|
21e8ee8d67 | ||
|
|
de0ed31ccb | ||
|
|
de5023e283 | ||
|
|
9a7f44f0c0 | ||
|
|
39f7cb6247 | ||
|
|
fd2754c9eb | ||
|
|
69eea552fb | ||
|
|
4db0935d71 | ||
|
|
9f8c3dc8ec | ||
|
|
f2f737d6f8 | ||
|
|
024df6bcd8 | ||
|
|
2b867f27ea | ||
|
|
416f4b030a | ||
|
|
2d3196ffe4 | ||
|
|
fc37e8583d | ||
|
|
db6839451b | ||
|
|
625e81ac30 | ||
|
|
fbce8789c1 | ||
|
|
5396c6ad1b | ||
|
|
01f9176d32 | ||
|
|
f5d1426d12 | ||
|
|
8f13e48206 | ||
|
|
459fda7106 | ||
|
|
45f0f81c03 | ||
|
|
1c4a972222 | ||
|
|
d065671291 | ||
|
|
5512c23004 | ||
|
|
3ea9d4ed52 | ||
|
|
602466d9a9 | ||
|
|
b1fabe9804 | ||
|
|
2bbfe390eb | ||
|
|
12a751c1c3 | ||
|
|
0276655040 | ||
|
|
5ab91d4be7 | ||
|
|
91c67452c2 | ||
|
|
31633b04d9 | ||
|
|
dc3da8d425 | ||
|
|
ea119f5c73 | ||
|
|
4bd86ae762 | ||
|
|
2c1e771472 | ||
|
|
c07c4aaf88 | ||
|
|
95be6e4827 | ||
|
|
e7c51a4d73 | ||
|
|
f509f5e988 | ||
|
|
f8ff4c6b3e |
53
.gitignore
vendored
53
.gitignore
vendored
@ -1,11 +1,46 @@
|
||||
*
|
||||
# Dépendances (tous niveaux)
|
||||
**/node_modules/
|
||||
**/vendor/
|
||||
**/bower_components/
|
||||
|
||||
# Artifacts de build / caches (tous niveaux)
|
||||
**/dist/
|
||||
**/build/
|
||||
**/.cache/
|
||||
**/.parcel-cache/
|
||||
**/.vite/
|
||||
**/coverage/
|
||||
**/.next/
|
||||
**/.nuxt/
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Fichiers d'environnement
|
||||
.env
|
||||
.env.*.local
|
||||
docker-compose.yml
|
||||
|
||||
# Fichiers système / IDE
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
.idea/
|
||||
.vscode/
|
||||
|
||||
# Dumps & fichiers sensibles courants
|
||||
*.sql
|
||||
|
||||
!.gitignore
|
||||
|
||||
!calendar/
|
||||
!gestion/
|
||||
!Jenkinsfile
|
||||
|
||||
!calendar/**
|
||||
!gestion/**
|
||||
# Spécifiques Nextcloud (si jamais présents dans le repo)
|
||||
data/
|
||||
config/
|
||||
themes/
|
||||
apps-external/
|
||||
.updater-*
|
||||
occ
|
||||
autotest.sh
|
||||
tests/
|
||||
coverage/
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -26,8 +26,8 @@
|
||||
:class="{ 'property-title__input--readonly': isReadOnly }">
|
||||
<input v-if="!isReadOnly"
|
||||
v-focus
|
||||
type="text"
|
||||
:placeholder="t('calendar', 'Nom et prénom du défunt')"
|
||||
:type="type"
|
||||
:placeholder="computedPlaceholder"
|
||||
:value="value"
|
||||
@input.prevent.stop="changeValue">
|
||||
<!-- eslint-disable-next-line vue/singleline-html-element-content-newline -->
|
||||
@ -53,6 +53,19 @@ export default {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
default: 'text',
|
||||
},
|
||||
placeholder: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
computedPlaceholder() {
|
||||
return this.placeholder || this.t('calendar', 'Nom et prénom du défunt')
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
changeValue(event) {
|
||||
|
||||
@ -118,6 +118,14 @@ export default {
|
||||
return this.calendarObjectInstance?.embalmer ?? null
|
||||
},
|
||||
|
||||
lieuDeces() {
|
||||
return this.calendarObjectInstance?.lieuDeces ?? null
|
||||
},
|
||||
|
||||
dateNaissance() {
|
||||
return this.calendarObjectInstance?.dateNaissance ?? null
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the isleave property
|
||||
*
|
||||
@ -155,7 +163,6 @@ export default {
|
||||
return this.calendarObjectInstance?.isPrivate ?? false
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Returns the description or null if the event is still loading
|
||||
*
|
||||
@ -449,23 +456,23 @@ export default {
|
||||
|
||||
return false
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Returns the absence type
|
||||
*
|
||||
* @return {string|null}
|
||||
*/
|
||||
absenceType() {
|
||||
const isleave = this.calendarObjectInstance?.isLeave ?? false
|
||||
const isleave = this.calendarObjectInstance?.isLeave ?? false
|
||||
const absenceType = this.calendarObjectInstance?.absenceType ?? null
|
||||
if (absenceType) {
|
||||
return this.calendarObjectInstance?.absenceType
|
||||
}
|
||||
if (isleave && !absenceType ) {
|
||||
return 'LEAVE'
|
||||
if (isleave && !absenceType) {
|
||||
return 'LEAVE'
|
||||
}
|
||||
|
||||
return '';
|
||||
return ''
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
@ -583,7 +590,7 @@ export default {
|
||||
this.isLoading = true
|
||||
this.isSaving = true
|
||||
try {
|
||||
this.setPendingCalendar(false);
|
||||
this.setPendingCalendar(false)
|
||||
await this.$store.dispatch('saveCalendarObjectInstance', {
|
||||
thisAndAllFuture,
|
||||
calendarId: this.calendarId,
|
||||
@ -601,8 +608,6 @@ export default {
|
||||
setPendingCalendar(isPending = true) {
|
||||
this.calendarObjectInstance.eventComponent.isCalendarPending = isPending
|
||||
this.calendarObjectInstance.isCalendarPending = isPending
|
||||
|
||||
|
||||
},
|
||||
async savePendingCalendar(thisAndAllFuture = false) {
|
||||
if (!this.calendarObject) {
|
||||
@ -620,7 +625,7 @@ export default {
|
||||
this.isSaving = true
|
||||
try {
|
||||
this.setPendingCalendar();
|
||||
await this.$store.dispatch('saveCalendarObjectInstance', {
|
||||
await this.$store.dispatch('saveCalendarObjectInstance', {
|
||||
thisAndAllFuture,
|
||||
calendarId: this.calendarId,
|
||||
})
|
||||
@ -761,7 +766,6 @@ export default {
|
||||
embalmer,
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Updates the start date of this event
|
||||
@ -827,7 +831,7 @@ export default {
|
||||
toggleIsPrivate(isPrivate) {
|
||||
this.$store.commit('toggleIsPrivate', {
|
||||
calendarObjectInstance: this.calendarObjectInstance,
|
||||
isPrivate
|
||||
isPrivate,
|
||||
})
|
||||
},
|
||||
|
||||
@ -835,23 +839,23 @@ export default {
|
||||
// * Toggles the event between all-day and timed
|
||||
// */
|
||||
// toggleIsLeave(isLeave) {
|
||||
// this.$store.commit('toggleIsLeave', {
|
||||
// calendarObjectInstance: this.calendarObjectInstance,
|
||||
// isLeave
|
||||
// })
|
||||
// this.$store.commit('toggleIsLeave', {
|
||||
// calendarObjectInstance: this.calendarObjectInstance,
|
||||
// isLeave
|
||||
// })
|
||||
// },
|
||||
|
||||
/**
|
||||
* Toggles the event pending
|
||||
* @param isCalendarPending
|
||||
*/
|
||||
toggleIsCalendarPending(isCalendarPending) {
|
||||
this.$store.commit('toggleIsCalendarPending', {
|
||||
calendarObjectInstance: this.calendarObjectInstance,
|
||||
isCalendarPending
|
||||
isCalendarPending,
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Resets the internal state after changing the viewed calendar-object
|
||||
*/
|
||||
@ -895,7 +899,31 @@ export default {
|
||||
calendarObjectInstance: this.calendarObjectInstance,
|
||||
absenceType,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Updates the lieu de décès of this event
|
||||
*
|
||||
* @param {string} lieuDeces New lieu de décès
|
||||
*/
|
||||
updateLieuDeces(lieuDeces) {
|
||||
this.$store.commit('changeLieuDeces', {
|
||||
calendarObjectInstance: this.calendarObjectInstance,
|
||||
lieuDeces,
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* Updates the date de naissance of this event
|
||||
*
|
||||
* @param {string} dateNaissance New date de naissance
|
||||
*/
|
||||
updateDateNaissance(dateNaissance) {
|
||||
this.$store.commit('changeDateNaissance', {
|
||||
calendarObjectInstance: this.calendarObjectInstance,
|
||||
dateNaissance,
|
||||
})
|
||||
},
|
||||
},
|
||||
/**
|
||||
* This is executed before entering the Editor routes
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
*/
|
||||
|
||||
import { getDateFromDateTimeValue } from '../utils/date.js'
|
||||
import { DurationValue, DateTimeValue } from '@nextcloud/calendar-js'
|
||||
import { DurationValue, DateTimeValue, Property } from '@nextcloud/calendar-js'
|
||||
import { getHexForColorName, getClosestCSS3ColorNameForHex } from '../utils/color.js'
|
||||
import { mapAlarmComponentToAlarmObject } from './alarm.js'
|
||||
import { mapAttendeePropertyToAttendeeObject } from './attendee.js'
|
||||
@ -52,24 +52,28 @@ const getDefaultEventObject = (props = {}) => Object.assign({}, {
|
||||
endTimezoneId: null,
|
||||
// Indicator whether or not event is all-day
|
||||
isAllDay: false,
|
||||
//leave
|
||||
// leave
|
||||
isLeave: false,
|
||||
//calendarPending
|
||||
// calendarPending
|
||||
isCalendarPending: false,
|
||||
// Whether or not the user is allowed to toggle the all-day checkbox
|
||||
canModifyAllDay: true,
|
||||
// Location that the event takes places in
|
||||
location: null,
|
||||
//client of the event
|
||||
client : null,
|
||||
//embalmer(Thanato) of the event
|
||||
embalmer : null,
|
||||
//absenceType
|
||||
absenceType : null,
|
||||
//Private
|
||||
// client of the event
|
||||
client: null,
|
||||
// embalmer(Thanato) of the event
|
||||
embalmer: null,
|
||||
// lieu de décès
|
||||
lieuDeces: null,
|
||||
// date de naissance
|
||||
dateNaissance: null,
|
||||
// absenceType
|
||||
absenceType: null,
|
||||
// Private
|
||||
isPrivate: false,
|
||||
//comment of the event
|
||||
comment : null,
|
||||
// comment of the event
|
||||
comment: null,
|
||||
// description of the event
|
||||
description: null,
|
||||
// Access class of the event (PUBLIC, PRIVATE, CONFIDENTIAL)
|
||||
@ -118,10 +122,12 @@ const mapEventComponentToEventObject = (eventComponent) => {
|
||||
isCalendarPending: false,
|
||||
canModifyAllDay: eventComponent.canModifyAllDay(),
|
||||
location: eventComponent.location,
|
||||
client : "CLIENT",
|
||||
embalmer : "TEST",
|
||||
absenceType : "",
|
||||
comment : "",
|
||||
client: 'CLIENT',
|
||||
embalmer: 'TEST',
|
||||
lieuDeces: null,
|
||||
dateNaissance: null,
|
||||
absenceType: '',
|
||||
comment: '',
|
||||
description: eventComponent.description,
|
||||
accessClass: eventComponent.accessClass,
|
||||
status: eventComponent.status,
|
||||
@ -207,39 +213,46 @@ const mapEventComponentToEventObject = (eventComponent) => {
|
||||
}
|
||||
}
|
||||
|
||||
if(eventComponent.hasProperty('CLIENT')){
|
||||
eventObject.client = eventComponent.getFirstPropertyFirstValue('CLIENT');
|
||||
if (eventComponent.hasProperty('CLIENT')) {
|
||||
eventObject.client = eventComponent.getFirstPropertyFirstValue('CLIENT')
|
||||
}
|
||||
|
||||
if(eventComponent.hasProperty('EMBALMER')){
|
||||
eventObject.embalmer = eventComponent.getFirstPropertyFirstValue('EMBALMER');
|
||||
if (eventComponent.hasProperty('EMBALMER')) {
|
||||
eventObject.embalmer = eventComponent.getFirstPropertyFirstValue('EMBALMER')
|
||||
}
|
||||
|
||||
if(eventComponent.hasProperty('COMMENT')){
|
||||
eventObject.comment = eventComponent.getFirstPropertyFirstValue('COMMENT');
|
||||
if (eventComponent.hasProperty('COMMENT')) {
|
||||
eventObject.comment = eventComponent.getFirstPropertyFirstValue('COMMENT')
|
||||
}
|
||||
|
||||
if(eventComponent.hasProperty('ISPRIVATE')){
|
||||
eventObject.isPrivate = eventComponent.getFirstPropertyFirstValue('ISPRIVATE') === '1' ? true : false;
|
||||
if (eventComponent.hasProperty('ISPRIVATE')) {
|
||||
eventObject.isPrivate = eventComponent.getFirstPropertyFirstValue('ISPRIVATE') === '1'
|
||||
}
|
||||
|
||||
|
||||
if(eventComponent.hasProperty('ABSENCETYPE')){
|
||||
eventObject.absenceType = eventComponent.getFirstPropertyFirstValue('ABSENCETYPE');
|
||||
|
||||
}else{
|
||||
if(eventComponent.hasProperty('ISLEAVE')){
|
||||
if( eventComponent.getFirstPropertyFirstValue('ISLEAVE') === '1'){
|
||||
eventObject.absenceType = 'LEAVE';
|
||||
if (eventComponent.hasProperty('ABSENCETYPE')) {
|
||||
eventObject.absenceType = eventComponent.getFirstPropertyFirstValue('ABSENCETYPE')
|
||||
|
||||
} else {
|
||||
if (eventComponent.hasProperty('ISLEAVE')) {
|
||||
if (eventComponent.getFirstPropertyFirstValue('ISLEAVE') === '1') {
|
||||
eventObject.absenceType = 'LEAVE'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(eventComponent.hasProperty('ISCALENDARPENDING')){
|
||||
eventObject.isCalendarPending = eventComponent.getFirstPropertyFirstValue('ISCALENDARPENDING') === '1' ? true : false;
|
||||
if (eventComponent.hasProperty('ISCALENDARPENDING')) {
|
||||
eventObject.isCalendarPending = eventComponent.getFirstPropertyFirstValue('ISCALENDARPENDING') === '1'
|
||||
}
|
||||
|
||||
return eventObject;
|
||||
if (eventComponent.hasProperty('LIEUDECES')) {
|
||||
eventObject.lieuDeces = eventComponent.getFirstPropertyFirstValue('LIEUDECES')
|
||||
}
|
||||
|
||||
if (eventComponent.hasProperty('DATENAISSANCE')) {
|
||||
eventObject.dateNaissance = eventComponent.getFirstPropertyFirstValue('DATENAISSANCE')
|
||||
}
|
||||
|
||||
return eventObject
|
||||
}
|
||||
|
||||
/**
|
||||
@ -253,6 +266,20 @@ const copyCalendarObjectInstanceIntoEventComponent = (eventObject, eventComponen
|
||||
eventComponent.location = eventObject.location
|
||||
eventComponent.client = eventObject.client
|
||||
eventComponent.embalmer = eventObject.embalmer
|
||||
|
||||
if (eventObject.lieuDeces) {
|
||||
eventComponent.deleteAllProperties('LIEUDECES')
|
||||
const lieuDecesProperty = new Property('LIEUDECES', eventObject.lieuDeces)
|
||||
eventComponent.addProperty(lieuDecesProperty)
|
||||
}
|
||||
|
||||
// Gérer dateNaissance comme une propriété ICS personnalisée
|
||||
if (eventObject.dateNaissance) {
|
||||
eventComponent.deleteAllProperties('DATENAISSANCE')
|
||||
const dateNaissanceProperty = new Property('DATENAISSANCE', eventObject.dateNaissance)
|
||||
eventComponent.addProperty(dateNaissanceProperty)
|
||||
}
|
||||
|
||||
eventComponent.isPrivate = eventObject.isPrivate
|
||||
eventComponent.isCalendarPending = eventObject.isCalendarPending
|
||||
eventComponent.comment = eventObject.comment
|
||||
|
||||
@ -22,7 +22,6 @@
|
||||
import { translate as t } from '@nextcloud/l10n'
|
||||
import { getDefaultCategories } from '../defaults/defaultCategories.js'
|
||||
|
||||
|
||||
/**
|
||||
* Gets all supported RFC properties
|
||||
*
|
||||
@ -146,7 +145,7 @@ const getRFCProperties = () => {
|
||||
readableName: t('calendar', 'Type d\'absence'),
|
||||
placeholder: t('calendar', 'Type d\'absence'),
|
||||
},
|
||||
|
||||
|
||||
embalmers: {
|
||||
readableName: t('calendar', 'Embalmers'),
|
||||
icon: 'Human',
|
||||
@ -157,7 +156,6 @@ const getRFCProperties = () => {
|
||||
tagPlaceholder: t('calendar', 'Choose thanatopracteur'),
|
||||
options: [],
|
||||
},
|
||||
|
||||
|
||||
embalmer: {
|
||||
readableName: t('calendar', 'Embalmer'),
|
||||
@ -183,7 +181,21 @@ const getRFCProperties = () => {
|
||||
placeholder: t('calendar', 'Commentaires'),
|
||||
tagPlaceholder: t('calendar', 'Commentaires'),
|
||||
options: [],
|
||||
defaultNumberOfRows: 4
|
||||
defaultNumberOfRows: 4,
|
||||
},
|
||||
|
||||
lieuDeces: {
|
||||
readableName: t('calendar', 'Lieu du décès'),
|
||||
placeholder: t('calendar', 'Lieu du décès'),
|
||||
icon: 'MapMarker',
|
||||
type: 'text',
|
||||
},
|
||||
|
||||
dateNaissance: {
|
||||
readableName: t('calendar', 'Date de naissance'),
|
||||
placeholder: t('calendar', 'Date de naissance'),
|
||||
icon: 'Tag',
|
||||
type: 'date',
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@ -285,13 +285,14 @@ const mutations = {
|
||||
calendarObjectInstance.eventComponent.endDate.addDuration(DurationValue.fromSeconds(60 * 60 * 24))
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Is private
|
||||
*
|
||||
* @param {object} state The Vuex state
|
||||
* @param {object} data The destructuring object
|
||||
* @param {object} data.calendarObjectInstance The calendarObjectInstance object
|
||||
* @param data.isPrivate
|
||||
*/
|
||||
toggleIsPrivate(state, { calendarObjectInstance, isPrivate }) {
|
||||
calendarObjectInstance.eventComponent.isPrivate = isPrivate
|
||||
@ -403,6 +404,40 @@ const mutations = {
|
||||
calendarObjectInstance.embalmer = embalmer
|
||||
},
|
||||
|
||||
/**
|
||||
* Change the lieu de décès of an event
|
||||
*
|
||||
* @param {object} state The Vuex state
|
||||
* @param {object} data The destructuring object
|
||||
* @param {object} data.calendarObjectInstance The calendarObjectInstance object
|
||||
* @param {string} data.lieuDeces New lieu de décès to set
|
||||
*/
|
||||
changeLieuDeces(state, { calendarObjectInstance, lieuDeces }) {
|
||||
calendarObjectInstance.eventComponent.deleteAllProperties('LIEUDECES')
|
||||
if (lieuDeces && lieuDeces.trim() !== '') {
|
||||
const lieuDecesProperty = new Property('LIEUDECES', lieuDeces)
|
||||
calendarObjectInstance.eventComponent.addProperty(lieuDecesProperty)
|
||||
}
|
||||
calendarObjectInstance.lieuDeces = lieuDeces
|
||||
},
|
||||
|
||||
/**
|
||||
* Change the date de naissance of an event
|
||||
*
|
||||
* @param {object} state The Vuex state
|
||||
* @param {object} data The destructuring object
|
||||
* @param {object} data.calendarObjectInstance The calendarObjectInstance object
|
||||
* @param {string} data.dateNaissance New date de naissance to set
|
||||
*/
|
||||
changeDateNaissance(state, { calendarObjectInstance, dateNaissance }) {
|
||||
calendarObjectInstance.eventComponent.deleteAllProperties('DATENAISSANCE')
|
||||
if (dateNaissance && dateNaissance.trim() !== '') {
|
||||
const dateNaissanceProperty = new Property('DATENAISSANCE', dateNaissance)
|
||||
calendarObjectInstance.eventComponent.addProperty(dateNaissanceProperty)
|
||||
}
|
||||
calendarObjectInstance.dateNaissance = dateNaissance
|
||||
},
|
||||
|
||||
/**
|
||||
* Change the absence type of an event
|
||||
*
|
||||
@ -410,6 +445,7 @@ const mutations = {
|
||||
* @param {object} data The destructuring object
|
||||
* @param {object} data.calendarObjectInstance The calendarObjectInstance object
|
||||
* @param {string} data.embalmer New embalmer to set
|
||||
* @param data.absenceType
|
||||
*/
|
||||
changeAbsenceType(state, { calendarObjectInstance, absenceType }) {
|
||||
calendarObjectInstance.eventComponent.absenceType = absenceType ?? null
|
||||
@ -1786,12 +1822,14 @@ const actions = {
|
||||
let client = eventComponent.client;
|
||||
|
||||
let additionalFieldWasUpdated =
|
||||
eventComponent.client != null ||
|
||||
eventComponent.client != null ||
|
||||
eventComponent.isPrivate != null ||
|
||||
eventComponent.comment != null ||
|
||||
eventComponent.isLeave != null ||
|
||||
eventComponent.absenceType ||
|
||||
eventComponent.isCalendarPending != null;
|
||||
eventComponent.absenceType ||
|
||||
eventComponent.isCalendarPending != null ||
|
||||
state.calendarObjectInstance.lieuDeces != null ||
|
||||
state.calendarObjectInstance.dateNaissance != null;
|
||||
if (eventComponent.isDirty() || additionalFieldWasUpdated) {
|
||||
const isForkedItem = eventComponent.primaryItem !== null
|
||||
let original = null
|
||||
|
||||
@ -101,8 +101,29 @@
|
||||
@update-start-timezone="updateStartTimezone"
|
||||
@update-end-date="updateEndDate"
|
||||
@update-end-timezone="updateEndTimezone"
|
||||
@toggle-all-day="toggleAllDay"/>
|
||||
@toggle-all-day="toggleAllDay" />
|
||||
|
||||
<!-- Lieu du décès - plus petit -->
|
||||
<PropertyTitle class="property-lieu-deces property-small property-spaced"
|
||||
:is-read-only="isReadOnly"
|
||||
:prop-model="rfcProps.lieuDeces"
|
||||
:value="lieuDeces"
|
||||
:placeholder="'Lieu du décès'"
|
||||
type="text"
|
||||
@update:value="updateLieuDeces" />
|
||||
|
||||
<!-- Date de naissance avec libellé -->
|
||||
<div class="field-with-label">
|
||||
<label class="field-label">Date de naissance</label>
|
||||
<PropertyTitle class="property-date-naissance property-small"
|
||||
:is-read-only="isReadOnly"
|
||||
:prop-model="rfcProps.dateNaissance"
|
||||
:value="dateNaissance"
|
||||
:placeholder="'Date de naissance'"
|
||||
type="date"
|
||||
title="Saisissez la date de naissance du défunt"
|
||||
@update:value="updateDateNaissance" />
|
||||
</div>
|
||||
|
||||
<div style='margin-top: 13px; display:flex ;width: 81%;'>
|
||||
<div style='width:100%'>
|
||||
@ -889,4 +910,26 @@ export default {
|
||||
padding: 0 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.property-small {
|
||||
max-width: 250px;
|
||||
}
|
||||
|
||||
.field-with-label {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.field-label {
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
color: #333;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.property-spaced {
|
||||
margin-top: 15px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -22,15 +22,13 @@
|
||||
-->
|
||||
|
||||
<template>
|
||||
<Popover
|
||||
ref="popover"
|
||||
<Popover ref="popover"
|
||||
:shown="showPopover"
|
||||
:auto-hide="false"
|
||||
:placement="placement"
|
||||
:boundary="boundaryElement"
|
||||
popover-base-class="event-popover"
|
||||
:triggers="[]"
|
||||
>
|
||||
:triggers="[]">
|
||||
<div class="event-popover__inner">
|
||||
<template v-if="isLoading && !isSaving">
|
||||
<PopoverLoadingIndicator />
|
||||
@ -48,10 +46,8 @@
|
||||
</Actions>
|
||||
</div>
|
||||
|
||||
<EmptyContent
|
||||
:name="$t('calendar', 'Event does not exist')"
|
||||
:description="error"
|
||||
>
|
||||
<EmptyContent :name="$t('calendar', 'Event does not exist')"
|
||||
:description="error">
|
||||
<template #icon>
|
||||
<CalendarBlank :size="20" decorative />
|
||||
</template>
|
||||
@ -61,28 +57,22 @@
|
||||
<template v-else>
|
||||
<div class="event-popover__top-right-actions">
|
||||
<Actions v-if="!isLoading && !isError && !isNew" :force-menu="true">
|
||||
<ActionLink
|
||||
v-if="!hideEventExport && hasDownloadURL"
|
||||
:href="downloadURL"
|
||||
>
|
||||
<ActionLink v-if="!hideEventExport && hasDownloadURL"
|
||||
:href="downloadURL">
|
||||
<template #icon>
|
||||
<Download :size="20" decorative />
|
||||
</template>
|
||||
{{ $t("calendar", "Export") }}
|
||||
</ActionLink>
|
||||
<ActionButton
|
||||
v-if="!canCreateRecurrenceException && !isReadOnly"
|
||||
@click="duplicateEvent()"
|
||||
>
|
||||
<ActionButton v-if="!canCreateRecurrenceException && !isReadOnly"
|
||||
@click="duplicateEvent()">
|
||||
<template #icon>
|
||||
<ContentDuplicate :size="20" decorative />
|
||||
</template>
|
||||
{{ $t("calendar", "Duplicate") }}
|
||||
</ActionButton>
|
||||
<ActionButton
|
||||
v-if="canDelete && !canCreateRecurrenceException"
|
||||
@click="deleteAndLeave(false)"
|
||||
>
|
||||
<ActionButton v-if="canDelete && !canCreateRecurrenceException"
|
||||
@click="deleteAndLeave(false)">
|
||||
<template #icon>
|
||||
<Delete :size="20" decorative />
|
||||
</template>
|
||||
@ -117,160 +107,162 @@
|
||||
</Actions>
|
||||
</div>
|
||||
|
||||
<CalendarPickerHeader
|
||||
:value="selectedCalendar"
|
||||
:calendars="calendars"
|
||||
:is-read-only="isReadOnlyOrViewing || !canModifyCalendar"
|
||||
@update:value="changeCalendar"
|
||||
/>
|
||||
<!-- Zone de contenu scrollable -->
|
||||
<div class="popover-content-wrapper">
|
||||
<CalendarPickerHeader :value="selectedCalendar"
|
||||
:calendars="calendars"
|
||||
:is-read-only="isReadOnlyOrViewing || !canModifyCalendar"
|
||||
@update:value="changeCalendar" />
|
||||
|
||||
<PropertyTitle
|
||||
:value="titleOrPlaceholder"
|
||||
:is-read-only="isReadOnlyOrViewing"
|
||||
@update:value="updateTitle"
|
||||
/>
|
||||
<PropertyTitle :value="titleOrPlaceholder"
|
||||
:is-read-only="isReadOnlyOrViewing"
|
||||
@update:value="updateTitle" />
|
||||
|
||||
<PropertyTitleTimePicker
|
||||
:start-date="startDate"
|
||||
:start-timezone="startTimezone"
|
||||
:end-date="endDate"
|
||||
:end-timezone="endTimezone"
|
||||
:is-all-day="isAllDay"
|
||||
:is-read-only="isReadOnlyOrViewing"
|
||||
:can-modify-all-day="canModifyAllDay"
|
||||
:user-timezone="currentUserTimezone"
|
||||
@update-start-date="updateStartDate"
|
||||
@update-start-timezone="updateStartTimezone"
|
||||
@update-end-date="updateEndDate"
|
||||
@update-end-timezone="updateEndTimezone"
|
||||
@toggle-all-day="toggleAllDay"
|
||||
/>
|
||||
<PropertyTitleTimePicker :start-date="startDate"
|
||||
:start-timezone="startTimezone"
|
||||
:end-date="endDate"
|
||||
:end-timezone="endTimezone"
|
||||
:is-all-day="isAllDay"
|
||||
:is-read-only="isReadOnlyOrViewing"
|
||||
:can-modify-all-day="canModifyAllDay"
|
||||
:user-timezone="currentUserTimezone"
|
||||
@update-start-date="updateStartDate"
|
||||
@update-start-timezone="updateStartTimezone"
|
||||
@update-end-date="updateEndDate"
|
||||
@update-end-timezone="updateEndTimezone"
|
||||
@toggle-all-day="toggleAllDay" />
|
||||
|
||||
<div style='display:flex ;margin-left: 7%;'>
|
||||
<div style='width:70%'>
|
||||
<PropertySelectAbsenceType
|
||||
:value="absenceType"
|
||||
:is-read-only="isReadOnly"
|
||||
:prop-model="rfcProps.absenceType"
|
||||
:noWrap='true'
|
||||
sle
|
||||
@update:value="updateAbsenceType" />
|
||||
</div>
|
||||
<!-- <div style='width:30% ;margin-top: -11px;'>
|
||||
<PropertyIsPrivate
|
||||
<!-- Lieu du décès - plus petit -->
|
||||
<PropertyTitle class="property-lieu-deces property-small"
|
||||
:is-read-only="isReadOnly"
|
||||
:is-private="isPrivate"
|
||||
@toggle-is-private="toggleIsPrivate"/>
|
||||
</div> -->
|
||||
|
||||
:prop-model="rfcProps.lieuDeces"
|
||||
:value="lieuDeces"
|
||||
:placeholder="'Lieu du décès'"
|
||||
type="text"
|
||||
@update:value="updateLieuDeces" />
|
||||
|
||||
<!-- Date de naissance avec libellé -->
|
||||
<div class="field-with-label">
|
||||
<label class="field-label">Date de naissance</label>
|
||||
<PropertyTitle class="property-date-naissance property-small"
|
||||
:is-read-only="isReadOnly"
|
||||
:prop-model="rfcProps.dateNaissance"
|
||||
:value="dateNaissance"
|
||||
:placeholder="'Date de naissance'"
|
||||
type="date"
|
||||
title="Saisissez la date de naissance du défunt"
|
||||
@update:value="updateDateNaissance" />
|
||||
</div>
|
||||
|
||||
<div style='display:flex ;margin-left: 7%;'>
|
||||
<div style='width:70%'>
|
||||
<PropertySelectAbsenceType
|
||||
:value="absenceType"
|
||||
:is-read-only="isReadOnly"
|
||||
:prop-model="rfcProps.absenceType"
|
||||
:noWrap='true'
|
||||
@update:value="updateAbsenceType" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<PropertySelectClient
|
||||
class="property-location"
|
||||
url="/apps/gestion/ajaxGetClientsName"
|
||||
:is-read-only="isReadOnly"
|
||||
:prop-model="rfcProps.clients"
|
||||
:value="client"
|
||||
:linkify-links="true"
|
||||
@update:value="updateClient"
|
||||
/>
|
||||
|
||||
<PropertySelectLieu
|
||||
class="property-location"
|
||||
url="/apps/gestion/ajaxGetLieux"
|
||||
:is-read-only="isReadOnly"
|
||||
:prop-model="rfcProps.locations"
|
||||
:value="location"
|
||||
:linkify-links="true"
|
||||
@update:value="updateLocation"
|
||||
/>
|
||||
|
||||
<PropertySelectArticle
|
||||
:is-read-only="isReadOnlyOrViewing"
|
||||
url="/apps/gestion/ajaxGetProduits?orderDirection=ASC"
|
||||
:prop-model="rfcProps.articles"
|
||||
:value="description"
|
||||
:linkify-links="true"
|
||||
@add-single-value="addArticle"
|
||||
@remove-single-value="removeArticle"
|
||||
/>
|
||||
|
||||
<PropertyText
|
||||
:is-read-only="isReadOnly"
|
||||
:prop-model="rfcProps.comment"
|
||||
:value="comment"
|
||||
:linkify-links="false"
|
||||
@update:value="updateComment"
|
||||
/>
|
||||
|
||||
<InviteesList
|
||||
class="event-popover__invitees"
|
||||
:hide-if-empty="true"
|
||||
:hide-buttons="true"
|
||||
:hide-errors="true"
|
||||
:show-header="true"
|
||||
:is-read-only="isReadOnlyOrViewing"
|
||||
:is-shared-with-me="isSharedWithMe"
|
||||
:calendar-object-instance="calendarObjectInstance"
|
||||
:limit="3"
|
||||
/>
|
||||
|
||||
<InvitationResponseButtons
|
||||
v-if="isViewedByAttendee && isViewing"
|
||||
class="event-popover__response-buttons"
|
||||
:attendee="userAsAttendee"
|
||||
:calendar-id="calendarId"
|
||||
@close="closeEditorAndSkipAction"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- <PropertyIsLeave
|
||||
:is-read-only="isReadOnlyOrViewing"
|
||||
:is-leave="isLeave"
|
||||
@toggle-is-leave="toggleIsLeave"
|
||||
/> -->
|
||||
|
||||
<!-- <PropertyIsCalendarPending
|
||||
:is-read-only="isReadOnlyOrViewing"
|
||||
:is-calendar-pending="isCalendarPending"
|
||||
@toggle-is-calendar-pending="toggleIsCalendarPending" /> -->
|
||||
|
||||
<PropertySelectClient
|
||||
class="property-location"
|
||||
url="/apps/gestion/ajaxGetClientsName"
|
||||
:is-read-only="isReadOnly"
|
||||
:prop-model="rfcProps.clients"
|
||||
:value="client"
|
||||
:linkify-links="true"
|
||||
@update:value="updateClient"
|
||||
/>
|
||||
|
||||
<PropertySelectLieu
|
||||
class="property-location"
|
||||
url="/apps/gestion/ajaxGetLieux"
|
||||
:is-read-only="isReadOnly"
|
||||
:prop-model="rfcProps.locations"
|
||||
:value="location"
|
||||
:linkify-links="true"
|
||||
@update:value="updateLocation"
|
||||
/>
|
||||
|
||||
<PropertySelectArticle
|
||||
:is-read-only="isReadOnlyOrViewing"
|
||||
url="/apps/gestion/ajaxGetProduits?orderDirection=ASC"
|
||||
:prop-model="rfcProps.articles"
|
||||
:value="description"
|
||||
:linkify-links="true"
|
||||
@add-single-value="addArticle"
|
||||
@remove-single-value="removeArticle"
|
||||
/>
|
||||
|
||||
<PropertyText
|
||||
:is-read-only="isReadOnly"
|
||||
:prop-model="rfcProps.comment"
|
||||
:value="comment"
|
||||
:linkify-links="false"
|
||||
@update:value="updateComment"
|
||||
/>
|
||||
|
||||
<InviteesList
|
||||
class="event-popover__invitees"
|
||||
:hide-if-empty="true"
|
||||
:hide-buttons="true"
|
||||
:hide-errors="true"
|
||||
:show-header="true"
|
||||
:is-read-only="isReadOnlyOrViewing"
|
||||
:is-shared-with-me="isSharedWithMe"
|
||||
:calendar-object-instance="calendarObjectInstance"
|
||||
:limit="3"
|
||||
/>
|
||||
|
||||
<InvitationResponseButtons
|
||||
v-if="isViewedByAttendee && isViewing"
|
||||
class="event-popover__response-buttons"
|
||||
:attendee="userAsAttendee"
|
||||
:calendar-id="calendarId"
|
||||
@close="closeEditorAndSkipAction"
|
||||
/>
|
||||
|
||||
|
||||
<SaveButtons
|
||||
v-if="!isWidget"
|
||||
class="event-popover__buttons"
|
||||
:can-create-recurrence-exception="canCreateRecurrenceException"
|
||||
:is-new="isNew"
|
||||
:is-read-only="isReadOnlyOrViewing"
|
||||
:force-this-and-all-future="forceThisAndAllFuture"
|
||||
:show-more-button="true"
|
||||
:more-button-type="isViewing ? 'tertiary' : undefined"
|
||||
:grow-horizontally="!isViewing && canCreateRecurrenceException"
|
||||
:disabled="isSaving"
|
||||
:is-calendar-pending="isCalendarPending"
|
||||
@save-this-only="saveAndView(false)"
|
||||
@save-this-and-all-future="saveAndView(true)"
|
||||
@show-more="showMore"
|
||||
@save-pending-calendar-event="saveAsPendingCalendarEvent"
|
||||
>
|
||||
<NcButton
|
||||
@click="viewDefunt"
|
||||
v-if="defuntUrl"
|
||||
:type="undefined"
|
||||
:class="'d-flex w-max-content'"
|
||||
<!-- Zone des boutons fixes -->
|
||||
<div class="popover-buttons-wrapper">
|
||||
<SaveButtons
|
||||
v-if="!isWidget"
|
||||
class="event-popover__buttons"
|
||||
:can-create-recurrence-exception="canCreateRecurrenceException"
|
||||
:is-new="isNew"
|
||||
:is-read-only="isReadOnlyOrViewing"
|
||||
:force-this-and-all-future="forceThisAndAllFuture"
|
||||
:show-more-button="true"
|
||||
:more-button-type="isViewing ? 'tertiary' : undefined"
|
||||
:grow-horizontally="!isViewing && canCreateRecurrenceException"
|
||||
:disabled="isSaving"
|
||||
:is-calendar-pending="isCalendarPending"
|
||||
@save-this-only="saveAndView(false)"
|
||||
@save-this-and-all-future="saveAndView(true)"
|
||||
@show-more="showMore"
|
||||
@save-pending-calendar-event="saveAsPendingCalendarEvent"
|
||||
>
|
||||
Voir le defunt
|
||||
</NcButton>
|
||||
<NcButton
|
||||
v-if="!isReadOnly && isViewing"
|
||||
:type="isViewedByAttendee ? 'tertiary' : undefined"
|
||||
@click="isViewing = false"
|
||||
>
|
||||
<template #icon>
|
||||
<EditIcon :size="20" />
|
||||
</template>
|
||||
{{ $t("calendar", "Edit") }}
|
||||
</NcButton>
|
||||
</SaveButtons>
|
||||
<NcButton
|
||||
@click="viewDefunt"
|
||||
v-if="defuntUrl"
|
||||
:type="undefined"
|
||||
:class="'d-flex w-max-content'"
|
||||
>
|
||||
Voir le defunt
|
||||
</NcButton>
|
||||
<NcButton
|
||||
v-if="!isReadOnly && isViewing"
|
||||
:type="isViewedByAttendee ? 'tertiary' : undefined"
|
||||
@click="isViewing = false"
|
||||
>
|
||||
<template #icon>
|
||||
<EditIcon :size="20" />
|
||||
</template>
|
||||
{{ $t("calendar", "Edit") }}
|
||||
</NcButton>
|
||||
</SaveButtons>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</Popover>
|
||||
@ -297,7 +289,7 @@ import InvitationResponseButtons from "../components/Editor/InvitationResponseBu
|
||||
import CalendarPickerHeader from "../components/Editor/CalendarPickerHeader.vue";
|
||||
import InviteesList from "../components/Editor/Invitees/InviteesList.vue";
|
||||
|
||||
import CalendarBlank from "vue-material-design-icons/CalendarBlank.vue";
|
||||
import CalendarBlank from 'vue-material-design-icons/CalendarBlank.vue';
|
||||
import Close from "vue-material-design-icons/Close.vue";
|
||||
import Delete from "vue-material-design-icons/Delete.vue";
|
||||
import Download from "vue-material-design-icons/Download.vue";
|
||||
@ -361,7 +353,7 @@ export default {
|
||||
boundaryElement: null,
|
||||
isVisible: true,
|
||||
isViewing: true,
|
||||
defuntUrl: undefined,
|
||||
defuntUrl: undefined
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -607,7 +599,148 @@ export default {
|
||||
},
|
||||
viewDefunt() {
|
||||
window.open(this.defuntUrl, "_blank");
|
||||
},
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.property-small {
|
||||
max-width: 250px;
|
||||
}
|
||||
|
||||
.field-with-label {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.field-label {
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
color: #333;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
/* Structure du popover - CSS SCOPED */
|
||||
:deep(.event-popover) {
|
||||
max-height: calc(100vh - 80px) !important;
|
||||
min-width: 500px !important;
|
||||
display: flex !important;
|
||||
flex-direction: column !important;
|
||||
left: 50% !important;
|
||||
transform: translateX(-50%) !important;
|
||||
}
|
||||
|
||||
:deep(.event-popover__inner) {
|
||||
display: flex !important;
|
||||
flex-direction: column !important;
|
||||
height: 100% !important;
|
||||
max-height: calc(100vh - 80px) !important;
|
||||
overflow: hidden !important;
|
||||
}
|
||||
|
||||
/* Zone de contenu scrollable */
|
||||
.popover-content-wrapper {
|
||||
flex: 1 1 auto !important;
|
||||
overflow-y: auto !important;
|
||||
padding: 15px !important;
|
||||
min-height: 0 !important;
|
||||
}
|
||||
|
||||
/* Zone des boutons fixes */
|
||||
.popover-buttons-wrapper {
|
||||
flex: 0 0 auto !important;
|
||||
border-top: 1px solid #e0e0e0 !important;
|
||||
background: white !important;
|
||||
padding: 15px !important;
|
||||
margin: 0 !important;
|
||||
position: relative !important;
|
||||
bottom: 0 !important;
|
||||
width: 100% !important;
|
||||
box-shadow: 0 -2px 8px rgba(0,0,0,0.1) !important;
|
||||
z-index: 1000 !important;
|
||||
}
|
||||
|
||||
:deep(.event-popover__buttons) {
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- CSS GLOBAL pour forcer absolument tout -->
|
||||
<style>
|
||||
/* CSS GLOBAL - SOLUTION BRUTALE POUR FORCER */
|
||||
.event-popover {
|
||||
max-height: calc(100vh - 80px) !important;
|
||||
min-width: 500px !important;
|
||||
max-width: calc(100vw - 350px) !important; /* Évite le débordement à droite */
|
||||
display: flex !important;
|
||||
flex-direction: column !important;
|
||||
/* Forcer le positionnement pour éviter les débordements */
|
||||
position: fixed !important;
|
||||
top: auto !important;
|
||||
bottom: auto !important;
|
||||
left: 320px !important; /* Position fixe après la sidebar */
|
||||
right: auto !important;
|
||||
z-index: 10000 !important;
|
||||
}
|
||||
|
||||
/* S'assurer que le popover ne sort jamais de l'écran */
|
||||
.event-popover[data-popper-placement] {
|
||||
left: 320px !important;
|
||||
right: auto !important;
|
||||
max-width: calc(100vw - 350px) !important;
|
||||
}
|
||||
|
||||
/* Si pas assez d'espace à droite, positionner à gauche de la sidebar */
|
||||
@media (max-width: 1200px) {
|
||||
.event-popover {
|
||||
left: 20px !important;
|
||||
max-width: 280px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.event-popover .event-popover__inner {
|
||||
display: flex !important;
|
||||
flex-direction: column !important;
|
||||
height: 100% !important;
|
||||
max-height: calc(100vh - 80px) !important;
|
||||
overflow: hidden !important;
|
||||
}
|
||||
|
||||
.event-popover .popover-buttons-wrapper {
|
||||
position: sticky !important;
|
||||
bottom: 0 !important;
|
||||
background: white !important;
|
||||
border-top: 1px solid #ddd !important;
|
||||
padding: 15px !important;
|
||||
z-index: 9999 !important;
|
||||
box-shadow: 0 -2px 10px rgba(0,0,0,0.2) !important;
|
||||
flex: 0 0 auto !important;
|
||||
margin: 0 !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.event-popover .popover-content-wrapper {
|
||||
flex: 1 1 auto !important;
|
||||
overflow-y: auto !important;
|
||||
min-height: 0 !important;
|
||||
padding: 15px !important;
|
||||
}
|
||||
|
||||
/* Forcer une largeur minimale convenable */
|
||||
.event-popover .popover__wrapper,
|
||||
.event-popover .popover__inner {
|
||||
min-width: 500px !important;
|
||||
max-height: calc(100vh - 80px) !important;
|
||||
}
|
||||
|
||||
/* Centrer verticalement le popover */
|
||||
.event-popover {
|
||||
top: 50% !important;
|
||||
transform: translateY(-50%) !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'routes' => [
|
||||
['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
|
||||
@ -72,6 +73,7 @@ return [
|
||||
['name' => 'page#exportDevisToFacture', 'url' => '/exportDevisToFacture', 'verb' => 'POST'],
|
||||
['name' => 'page#exportFactureToPdf', 'url' => '/facture/exportFactureToPdf', 'verb' => 'POST'],
|
||||
['name' => 'page#exportFactureByClientAndMonthYearToPdf', 'url' => '/facture/exportFactureByClientAndMonthYearToPdf', 'verb' => 'POST'],
|
||||
['name' => 'page#exportDevisRecap', 'url' => '/devis/exportDevisRecap', 'verb' => 'POST'],
|
||||
|
||||
['name' => 'page#getProduits', 'url' => '/getProduits', 'verb' => 'PROPFIND'],
|
||||
['name' => 'page#getProduitsById', 'url' => '/getProduitsById', 'verb' => 'POST'],
|
||||
@ -97,6 +99,7 @@ return [
|
||||
|
||||
// generation attestation pacemaker, rapport de soins, de bijoux
|
||||
['name' => 'page#saveAttestationPacemaker', 'url' => '/saveAttestationPacemaker', 'verb' => 'POST'],
|
||||
['name' => 'page#saveAttestationAbsentPacemaker', 'url' => '/saveAttestationAbsentPacemaker', 'verb' => 'POST'],
|
||||
['name' => 'page#saveRapportSoin', 'url' => '/saveRapportSoin', 'verb' => 'POST'],
|
||||
['name' => 'page#saveRapportBijoux', 'url' => '/saveRapportBijoux', 'verb' => 'POST'],
|
||||
|
||||
@ -104,7 +107,7 @@ return [
|
||||
['name' => 'page#getProduits', 'url' => '/getProduits', 'verb' => 'PROPFIND'],
|
||||
['name' => 'page#getProduitsById', 'url' => '/getProduitsById', 'verb' => 'POST'],
|
||||
['name' => 'page#insertProduit', 'url' => '/produit/insert', 'verb' => 'POST'],
|
||||
|
||||
|
||||
// bibliotheque
|
||||
['name' => 'page#getBibliotheques', 'url' => '/getBibliotheques', 'verb' => 'PROPFIND'],
|
||||
['name' => 'page#insertBibliotheque', 'url' => '/bibliotheque/insert', 'verb' => 'POST'],
|
||||
@ -121,7 +124,7 @@ return [
|
||||
['name' => 'page#savePDF', 'url' => '/savePDF', 'verb' => 'POST'],
|
||||
['name' => 'page#saveDocumentRecap', 'url' => '/saveDocumentRecap', 'verb' => 'POST'],
|
||||
['name' => 'page#saveNewPDF', 'url' => '/saveNewPDF', 'verb' => 'POST'],
|
||||
|
||||
|
||||
['name' => 'admin#backup', 'url' => '/backup', 'verb' => 'GET'],
|
||||
|
||||
|
||||
@ -181,5 +184,10 @@ return [
|
||||
//invoice controller
|
||||
['name' => 'invoice#sendInvoicePdfViaMail', 'url' => '/invoice/{factureId}/sendInvoicePdfViaMail', 'verb' => 'POST'],
|
||||
['name' => 'invoice#getInvoicePdfContent', 'url' => '/invoice/{factureId}/getInvoicePdfContent', 'verb' => 'GET'],
|
||||
|
||||
|
||||
['name' => 'page#updateDevisLigneTrajet', 'url' => '/updateDevisLigneTrajet', 'verb' => 'POST'],
|
||||
|
||||
['name' => 'page#apiReloadFec', 'url' => '/apiReloadFec', 'verb' => 'POST' ],
|
||||
]
|
||||
];
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -8,9 +8,12 @@ abstract class BddConstant
|
||||
const DEFAULT_TABLE_PREFIX = "*PREFIX*";
|
||||
const DEFAULT_CLIENT_GROUP_NAME = "Nom du groupe";
|
||||
const DEFAULT_ADMIN_ID_NEXTCLOUD = 'admin';
|
||||
const DEFAULT_ADMIN_APP_ID_NEXTCLOUD = "Johann";
|
||||
const DEFAULT_ADMIN_APP_ID_NEXTCLOUD = "Vanessa";
|
||||
|
||||
const ISLEAVEPROPERTYONVCALENDAR = "ISLEAVE";
|
||||
|
||||
const DEFAULT_THANATOS_GROUP_NAME = "Thanatos";
|
||||
|
||||
const DEFAULT_ATTESTATION_CC_EMAIL = "attestation@h-f-c.info";
|
||||
const DEFAULT_INVOICE_CC_EMAIL = "attestation@h-f-c.info";
|
||||
}
|
||||
@ -109,17 +109,15 @@ class InvoiceController extends Controller
|
||||
$message->attach($content);
|
||||
$message->setSubject("Facture");
|
||||
|
||||
$signature = $this->mailerService->getFooterContent();
|
||||
$signature = $this->mailerService->getFooterContent($this->getUserNameForEmailSignature());
|
||||
|
||||
$message->setHtmlBody(
|
||||
"<p>Bonjour.</p>".
|
||||
"<p> Vous trouverez en pièce jointe la facture des soins de " . $factureDate . ".</p>".
|
||||
$signature
|
||||
);
|
||||
$appAdminEmail = $this->gestionRepository->getUserEmailByNextcloudId(BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD);
|
||||
if ($appAdminEmail) {
|
||||
$message->setCc([$appAdminEmail]);
|
||||
}
|
||||
$appAdminEmail = BddConstant::DEFAULT_INVOICE_CC_EMAIL;
|
||||
$message->setCc([$appAdminEmail]);
|
||||
|
||||
$this->mailer->send($message);
|
||||
$this->gestionRepository->setFactureSentDate($factureId);
|
||||
@ -128,4 +126,10 @@ class InvoiceController extends Controller
|
||||
}
|
||||
return new DataResponse("E-mail envoyé avec succès à ".$email.".", 200, ['Content-Type' => 'application/json']);
|
||||
}
|
||||
|
||||
public function getUserNameForEmailSignature (){
|
||||
$configs = json_decode($this->gestionRepository->getConfiguration(BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD));
|
||||
$currentConfig = $configs[0];
|
||||
return $currentConfig->nom . " " . $currentConfig->prenom;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -16,8 +16,8 @@ class FileExportHelpers
|
||||
}
|
||||
|
||||
public static function GetAddressAndCityFromAddress(string $adresse){
|
||||
$adresseResult = "Aucun adresse";
|
||||
$cityResult = "Aucune ville";
|
||||
$adresseResult = "";
|
||||
$cityResult = "";
|
||||
$adresses = explode("-",$adresse);
|
||||
if(isset($adresses[0])){
|
||||
$adresseResult = self::RemoveSpaceFromString($adresses[0]);
|
||||
|
||||
@ -17,4 +17,9 @@ class PriceHelpers
|
||||
return number_format($price,2,'.','');
|
||||
}
|
||||
|
||||
public static function formatDecimalPriceWithCurrency($price,$currency = '€')
|
||||
{
|
||||
return self::formatDecimalPrice($price) . $currency;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -34,35 +34,33 @@ use Psr\Log\LoggerInterface;
|
||||
|
||||
class CalendarObjectCreatedListener implements IEventListener
|
||||
{
|
||||
/** @var LoggerInterface */
|
||||
private $logger;
|
||||
|
||||
/** @var LoggerInterface */
|
||||
private $logger;
|
||||
/** @var GestionService */
|
||||
private $gestionService;
|
||||
|
||||
/** @var GestionService */
|
||||
private $gestionService;
|
||||
|
||||
public function __construct(
|
||||
LoggerInterface $logger,
|
||||
GestionService $gestionService
|
||||
) {
|
||||
$this->logger = $logger;
|
||||
$this->gestionService = $gestionService;
|
||||
}
|
||||
|
||||
public function handle(Event $event): void
|
||||
{
|
||||
if (!($event instanceof CalendarObjectCreatedEvent)) {
|
||||
return;
|
||||
}
|
||||
$calendarData = $event->getObjectData();
|
||||
try {
|
||||
$vCalendarString = $calendarData["calendardata"];
|
||||
$this->gestionService->HandleCreatedCalendarObject($vCalendarString);
|
||||
} catch (\OC\OCS\Exception $e) {
|
||||
$this->logger->debug("Error while handling created calendar object: " . $e->getMessage());
|
||||
} catch (\Throwable $e) {
|
||||
$this->logger->debug("Error while handling created calendar object: " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
public function __construct(
|
||||
LoggerInterface $logger,
|
||||
GestionService $gestionService
|
||||
) {
|
||||
$this->logger = $logger;
|
||||
$this->gestionService = $gestionService;
|
||||
}
|
||||
|
||||
public function handle(Event $event): void
|
||||
{
|
||||
if (!($event instanceof CalendarObjectCreatedEvent)) {
|
||||
return;
|
||||
}
|
||||
$calendarData = $event->getObjectData();
|
||||
try {
|
||||
$vCalendarString = $calendarData["calendardata"];
|
||||
$this->gestionService->HandleCreatedCalendarObject($vCalendarString);
|
||||
} catch (\OC\OCS\Exception $e) {
|
||||
$this->logger->debug("Error while handling created calendar object: " . $e->getMessage());
|
||||
} catch (\Throwable $e) {
|
||||
$this->logger->debug("Error while handling created calendar object: " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,35 +35,34 @@ use Psr\Log\LoggerInterface;
|
||||
|
||||
class CalendarObjectUpdatedListener implements IEventListener
|
||||
{
|
||||
/** @var LoggerInterface */
|
||||
private $logger;
|
||||
|
||||
/** @var LoggerInterface */
|
||||
private $logger;
|
||||
/** @var GestionService */
|
||||
private $gestionService;
|
||||
|
||||
/** @var GestionService */
|
||||
private $gestionService;
|
||||
public function __construct(
|
||||
LoggerInterface $logger,
|
||||
GestionService $gestionService
|
||||
) {
|
||||
$this->logger = $logger;
|
||||
$this->gestionService = $gestionService;
|
||||
}
|
||||
|
||||
public function __construct(
|
||||
LoggerInterface $logger,
|
||||
GestionService $gestionService
|
||||
) {
|
||||
$this->logger = $logger;
|
||||
$this->gestionService = $gestionService;
|
||||
}
|
||||
|
||||
public function handle(Event $event): void
|
||||
{
|
||||
if (!($event instanceof CalendarObjectUpdatedEvent)) {
|
||||
return;
|
||||
}
|
||||
$calendarData = $event->getObjectData();
|
||||
try {
|
||||
$vCalendarString = $calendarData["calendardata"];
|
||||
$this->gestionService->HandleUpdatedCalendarObject($vCalendarString);
|
||||
} catch (\OC\OCS\Exception $e) {
|
||||
$this->logger->debug("Error while handling updated calendar object: " . $e->getMessage());
|
||||
} catch (\Throwable $e) {
|
||||
$this->logger->debug("Error while handling updated calendar object: " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
public function handle(Event $event): void
|
||||
{
|
||||
if (!($event instanceof CalendarObjectUpdatedEvent)) {
|
||||
return;
|
||||
}
|
||||
$calendarData = $event->getObjectData();
|
||||
try {
|
||||
$vCalendarString = $calendarData["calendardata"];
|
||||
$this->gestionService->HandleUpdatedCalendarObject($vCalendarString);
|
||||
} catch (\OC\OCS\Exception $e) {
|
||||
$this->logger->debug("Error while handling updated calendar object: " . $e->getMessage());
|
||||
} catch (\Throwable $e) {
|
||||
$this->logger->debug("Error while handling updated calendar object: " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
70
gestion/lib/Migration/Version8Date20250904141530.php
Normal file
70
gestion/lib/Migration/Version8Date20250904141530.php
Normal file
@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OCA\Gestion\Migration;
|
||||
|
||||
use Closure;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\DB\ISchemaWrapper;
|
||||
use OCP\Migration\IOutput;
|
||||
use OCP\Migration\SimpleMigrationStep;
|
||||
|
||||
/**
|
||||
* Auto-generated migration step: Ajout du champ lieu_deces à la table defunt
|
||||
*/
|
||||
class Version8Date20250904141530 extends SimpleMigrationStep
|
||||
{
|
||||
private IDbConnection $db;
|
||||
|
||||
public function __construct(IDbConnection $db)
|
||||
{
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
*/
|
||||
public function preSchemaChange(IOutput $output, Closure $schemaClosure, array $options): void
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
* @return null|ISchemaWrapper
|
||||
*/
|
||||
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options)
|
||||
{
|
||||
/** @var ISchemaWrapper $schema */
|
||||
$schema = $schemaClosure();
|
||||
$tableprefix = "gestion_";
|
||||
|
||||
/** DEFUNT - Ajout du champ lieu_deces **/
|
||||
if ($schema->hasTable($tableprefix.'defunt')) {
|
||||
$table = $schema->getTable($tableprefix.'defunt');
|
||||
|
||||
if (!$table->hasColumn('lieu_deces')) {
|
||||
$table->addColumn('lieu_deces', 'string', [
|
||||
'length' => 255,
|
||||
'notnull' => false,
|
||||
'default' => null
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
*/
|
||||
public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): void
|
||||
{
|
||||
}
|
||||
}
|
||||
@ -29,104 +29,124 @@ namespace OCA\Gestion\Service\Certificate;
|
||||
use DateTime;
|
||||
use DateTimeImmutable;
|
||||
use OCA\Gestion\Db\Bdd;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCA\Gestion\Helpers\DateHelpers;
|
||||
use OCA\Gestion\Service\Certificate\PdfHandler\CareCertificatePdfHandler;
|
||||
use OCA\Gestion\Service\Certificate\PdfHandler\PacemakerCertificatePdfHandler;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCA\Gestion\Service\Certificate\PdfHandler\PacemakerAbsentCertificatePdfHandler;
|
||||
|
||||
class CertificateService {
|
||||
/** @var Bdd */
|
||||
private $gestionBdd;
|
||||
class CertificateService
|
||||
{
|
||||
/** @var Bdd */
|
||||
private $gestionBdd;
|
||||
|
||||
/** @var IRootFolder */
|
||||
private $rootFolder;
|
||||
private $rootFolder;
|
||||
|
||||
private const DEFAULT_NEXTCLOUD_ADMIN = "admin";
|
||||
public function __construct(
|
||||
Bdd $gestionBdd,
|
||||
IRootFolder $rootFolder) {
|
||||
public function __construct(
|
||||
Bdd $gestionBdd,
|
||||
IRootFolder $rootFolder
|
||||
) {
|
||||
$this->gestionBdd = $gestionBdd;
|
||||
$this->rootFolder = $rootFolder;
|
||||
}
|
||||
}
|
||||
|
||||
private function signatureImageExists(){
|
||||
private function signatureImageExists()
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder(self::DEFAULT_NEXTCLOUD_ADMIN);
|
||||
try{
|
||||
if(isset($storage)){
|
||||
$storage->get("/.gestion/sign.png");
|
||||
try {
|
||||
if(isset($storage)) {
|
||||
$storage->get("/.gestion/sign.png");
|
||||
$signatureExist = true;
|
||||
}else{
|
||||
$signatureExist = false;
|
||||
}
|
||||
}
|
||||
catch(\OCP\Files\NotFoundException $e) {
|
||||
$signatureExist = false;
|
||||
}
|
||||
return $signatureExist;
|
||||
}
|
||||
|
||||
private function getLogo(){
|
||||
} else {
|
||||
$signatureExist = false;
|
||||
}
|
||||
} catch(\OCP\Files\NotFoundException $e) {
|
||||
$signatureExist = false;
|
||||
}
|
||||
return $signatureExist;
|
||||
}
|
||||
private function tamponImageExist()
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder(self::DEFAULT_NEXTCLOUD_ADMIN);
|
||||
try{
|
||||
try {
|
||||
if(isset($storage)){
|
||||
$file = $storage->get('/.gestion/logo.png');
|
||||
}else{
|
||||
return "nothing";
|
||||
}
|
||||
} catch(\OCP\Files\NotFoundException $e) {
|
||||
$file = $storage->get('/.gestion/logo.jpeg');
|
||||
}
|
||||
}
|
||||
catch(\OCP\Files\NotFoundException $e) {
|
||||
return "nothing";
|
||||
}
|
||||
return base64_encode($file->getContent());
|
||||
}
|
||||
try {
|
||||
if(isset($storage)) {
|
||||
$storage->get("/.gestion/sign.jpg"); // tampon image
|
||||
$signatureExist = true;
|
||||
} else {
|
||||
$signatureExist = false;
|
||||
}
|
||||
} catch(\OCP\Files\NotFoundException $e) {
|
||||
$signatureExist = false;
|
||||
}
|
||||
return $signatureExist;
|
||||
}
|
||||
|
||||
private function setDevisOfDefuntDefaultValue($devisOfDefunt){
|
||||
private function getLogo()
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder(self::DEFAULT_NEXTCLOUD_ADMIN);
|
||||
try {
|
||||
try {
|
||||
if(isset($storage)) {
|
||||
$file = $storage->get('/.gestion/logo.png');
|
||||
} else {
|
||||
return "nothing";
|
||||
}
|
||||
} catch(\OCP\Files\NotFoundException $e) {
|
||||
$file = $storage->get('/.gestion/logo.jpeg');
|
||||
}
|
||||
} catch(\OCP\Files\NotFoundException $e) {
|
||||
return "nothing";
|
||||
}
|
||||
return base64_encode($file->getContent());
|
||||
}
|
||||
|
||||
private function setDevisOfDefuntDefaultValue($devisOfDefunt)
|
||||
{
|
||||
$devisOfDefunt["devis_date"] = new DateTimeImmutable($devisOfDefunt["devis_date"]);
|
||||
$locationOfDevis = "";
|
||||
if($devisOfDefunt['lieu_nom'] != null){
|
||||
if($devisOfDefunt['lieu_nom'] != null) {
|
||||
$locationOfDevis .= $devisOfDefunt['lieu_nom'];
|
||||
}
|
||||
if($devisOfDefunt['lieu_adresse'] != null){
|
||||
if($devisOfDefunt['lieu_adresse'] != null) {
|
||||
$locationOfDevis .= " ". $devisOfDefunt['lieu_adresse'];
|
||||
}
|
||||
$devisOfDefunt['location_of_devis'] = $locationOfDevis;
|
||||
if($devisOfDefunt['thanato_nom'] == null){
|
||||
if($devisOfDefunt['thanato_nom'] == null) {
|
||||
$devisOfDefunt['thanato_nom'] = "";
|
||||
}
|
||||
if($devisOfDefunt['thanato_prenom'] == null){
|
||||
if($devisOfDefunt['thanato_prenom'] == null) {
|
||||
$devisOfDefunt['thanato_prenom'] = "";
|
||||
}
|
||||
if($devisOfDefunt['thanato_reference'] == null){
|
||||
if($devisOfDefunt['thanato_reference'] == null) {
|
||||
$devisOfDefunt['thanato_reference'] = "";
|
||||
}
|
||||
if($devisOfDefunt['client_nom'] == null){
|
||||
if($devisOfDefunt['client_nom'] == null) {
|
||||
$devisOfDefunt['client_nom'] = "";
|
||||
}
|
||||
if($devisOfDefunt['client_prenom'] == null){
|
||||
if($devisOfDefunt['client_prenom'] == null) {
|
||||
$devisOfDefunt['client_prenom'] = "";
|
||||
}
|
||||
if($devisOfDefunt['client_entreprise'] == null){
|
||||
if($devisOfDefunt['client_entreprise'] == null) {
|
||||
$devisOfDefunt['client_entreprise'] = "";
|
||||
}
|
||||
if($devisOfDefunt['client_adresse'] == null){
|
||||
if($devisOfDefunt['client_adresse'] == null) {
|
||||
$devisOfDefunt['client_adresse'] = "";
|
||||
}
|
||||
return $devisOfDefunt;
|
||||
}
|
||||
|
||||
public function generateCareCertificate($defuntId,$idNextCloud){
|
||||
public function generateCareCertificate($defuntId, $idNextCloud)
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder($idNextCloud);
|
||||
$configs = json_decode($this->gestionBdd->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN));
|
||||
$currentConfig = $configs[0];
|
||||
$logo = $this->getLogo();
|
||||
$devisOfDefunt = $this->gestionBdd->getDevisOfDefunt($defuntId);
|
||||
if($devisOfDefunt == null){
|
||||
return null;
|
||||
}
|
||||
$currentConfig = $configs[0];
|
||||
$logo = $this->getLogo();
|
||||
$devisOfDefunt = $this->gestionBdd->getDevisOfDefunt($defuntId);
|
||||
if($devisOfDefunt == null) {
|
||||
return null;
|
||||
}
|
||||
$devisOfDefunt["configuration"] = $currentConfig;
|
||||
$devisOfDefunt = $this->setDevisOfDefuntDefaultValue($devisOfDefunt);
|
||||
$clean_folder = html_entity_decode(string: $currentConfig->path).'/';
|
||||
@ -135,62 +155,67 @@ class CertificateService {
|
||||
$pdfFilename = $this->GetCareCertificateFilename($devisOfDefunt);
|
||||
$filenamePath = $clean_folder.$careCertificateFolder.$pdfFilename.'.pdf';
|
||||
$pdf = new CareCertificatePdfHandler();
|
||||
$pdf->AddFont('ComicSans','','Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans','B','comic-sans-bold.php');
|
||||
$pdf->AddFont('ComicSans', '', 'Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans', 'B', 'comic-sans-bold.php');
|
||||
$signatureImageExist = $this->signatureImageExists();
|
||||
$pdf->SetCareCertificateData($devisOfDefunt,$logo,$signatureImageExist);
|
||||
$tamponImageExist = $this->tamponImageExist();
|
||||
$pdf->SetCareCertificateData($devisOfDefunt, $logo, $signatureImageExist, $tamponImageExist);
|
||||
$pdf->SetCareCertificate();
|
||||
try {
|
||||
$storage->newFolder($folderDestination);
|
||||
}
|
||||
catch(\OCP\Files\NotPermittedException $e) {
|
||||
} catch(\OCP\Files\NotPermittedException $e) {
|
||||
}
|
||||
$pdfContent = $pdf->Output('','S');
|
||||
$pdfContent = $pdf->Output('', 'S');
|
||||
$storage->newFile($filenamePath);
|
||||
$pdfFile = $storage->get($filenamePath);
|
||||
$pdfFile->putContent($pdfContent);
|
||||
return $filenamePath;
|
||||
}
|
||||
|
||||
private function getCareCertificateFolder($devisOfDefunt){
|
||||
private function getCareCertificateFolder($devisOfDefunt)
|
||||
{
|
||||
$careCertificateFolder = 'CLIENTS/'
|
||||
.mb_strtoupper($devisOfDefunt["client_nom"],'UTF-8')
|
||||
.mb_strtoupper($devisOfDefunt["client_nom"], 'UTF-8')
|
||||
.'/DEFUNTS/'
|
||||
.mb_strtoupper($devisOfDefunt["defunt_nom"],'UTF-8').'/'
|
||||
.mb_strtoupper($devisOfDefunt["defunt_nom"], 'UTF-8').'/'
|
||||
.'ATTESTATION/';
|
||||
|
||||
return $careCertificateFolder;
|
||||
}
|
||||
|
||||
private function GetCareCertificateFilename($devisOfDefunt){
|
||||
$filename = 'ATTESTATION_SOIN_'.mb_strtoupper($devisOfDefunt['defunt_nom'],'UTF-8');
|
||||
private function GetCareCertificateFilename($devisOfDefunt)
|
||||
{
|
||||
$filename = 'ATTESTATION_SOIN_'.mb_strtoupper($devisOfDefunt['defunt_nom'], 'UTF-8');
|
||||
return $filename;
|
||||
}
|
||||
|
||||
private function getPacemakerCertificateFolder($devisOfDefunt){
|
||||
private function getPacemakerCertificateFolder($devisOfDefunt)
|
||||
{
|
||||
$folder = 'CLIENTS/'
|
||||
.mb_strtoupper($devisOfDefunt["client_nom"],'UTF-8')
|
||||
.mb_strtoupper($devisOfDefunt["client_nom"], 'UTF-8')
|
||||
.'/DEFUNTS/'
|
||||
.mb_strtoupper($devisOfDefunt["defunt_nom"],'UTF-8').'/'
|
||||
.mb_strtoupper($devisOfDefunt["defunt_nom"], 'UTF-8').'/'
|
||||
.'ATTESTATION/';
|
||||
|
||||
return $folder;
|
||||
}
|
||||
|
||||
private function getPacemakerCertificateFilename($devisOfDefunt){
|
||||
$filename = 'ATTESTATION_PACEMAKER_'.mb_strtoupper($devisOfDefunt['defunt_nom'],'UTF-8');
|
||||
private function getPacemakerCertificateFilename($devisOfDefunt)
|
||||
{
|
||||
$filename = 'ATTESTATION_PACEMAKER_'.mb_strtoupper($devisOfDefunt['defunt_nom'], 'UTF-8');
|
||||
return $filename;
|
||||
}
|
||||
|
||||
public function generatePacemakerCertificate($defuntId,$idNextCloud){
|
||||
public function generatePacemakerCertificate($defuntId, $idNextCloud)
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder($idNextCloud);
|
||||
$configs = json_decode($this->gestionBdd->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN));
|
||||
$currentConfig = $configs[0];
|
||||
$logo = $this->getLogo();
|
||||
$devisOfDefunt = $this->gestionBdd->getDevisOfDefunt($defuntId);
|
||||
if($devisOfDefunt == null){
|
||||
return null;
|
||||
}
|
||||
$currentConfig = $configs[0];
|
||||
$logo = $this->getLogo();
|
||||
$devisOfDefunt = $this->gestionBdd->getDevisOfDefunt($defuntId);
|
||||
if($devisOfDefunt == null) {
|
||||
return null;
|
||||
}
|
||||
$devisOfDefunt["configuration"] = $currentConfig;
|
||||
$devisOfDefunt = $this->setDevisOfDefuntDefaultValue($devisOfDefunt);
|
||||
$clean_folder = html_entity_decode(string: $currentConfig->path).'/';
|
||||
@ -199,17 +224,58 @@ class CertificateService {
|
||||
$pdfFilename = $this->getPacemakerCertificateFilename($devisOfDefunt);
|
||||
$filenamePath = $clean_folder.$pacemakerCertificateFolder.$pdfFilename.'.pdf';
|
||||
$pdf = new PacemakerCertificatePdfHandler();
|
||||
$pdf->AddFont('ComicSans','','Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans','B','comic-sans-bold.php');
|
||||
$pdf->AddFont('ComicSans', '', 'Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans', 'B', 'comic-sans-bold.php');
|
||||
$signatureImageExist = $this->signatureImageExists();
|
||||
$pdf->SetPacemakerCertificateData($devisOfDefunt,$logo,$signatureImageExist);
|
||||
$tamponImageExist = $this->tamponImageExist();
|
||||
$pdf->SetPacemakerCertificateData($devisOfDefunt, $logo, $signatureImageExist, $tamponImageExist);
|
||||
$pdf->SetPacemakerCertificate();
|
||||
try {
|
||||
$storage->newFolder($folderDestination);
|
||||
}
|
||||
catch(\OCP\Files\NotPermittedException $e) {
|
||||
} catch(\OCP\Files\NotPermittedException $e) {
|
||||
}
|
||||
$pdfContent = $pdf->Output('','S');
|
||||
$pdfContent = $pdf->Output('', 'S');
|
||||
$storage->newFile($filenamePath);
|
||||
$pdfFile = $storage->get($filenamePath);
|
||||
$pdfFile->putContent($pdfContent);
|
||||
return $filenamePath;
|
||||
}
|
||||
|
||||
private function getPacemakerAbsentCertificateFilename($devisOfDefunt)
|
||||
{
|
||||
$filename = 'ATTESTATION_ABSENCE_PACEMAKER_'.mb_strtoupper($devisOfDefunt['defunt_nom'], 'UTF-8');
|
||||
return $filename;
|
||||
}
|
||||
|
||||
public function generatePacemakerAbsentCertificate($defuntId, $idNextCloud)
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder($idNextCloud);
|
||||
$configs = json_decode($this->gestionBdd->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN));
|
||||
$currentConfig = $configs[0];
|
||||
$logo = $this->getLogo();
|
||||
$devisOfDefunt = $this->gestionBdd->getDevisOfDefunt($defuntId);
|
||||
if($devisOfDefunt == null) {
|
||||
return null;
|
||||
}
|
||||
$devisOfDefunt["configuration"] = $currentConfig;
|
||||
$devisOfDefunt = $this->setDevisOfDefuntDefaultValue($devisOfDefunt);
|
||||
$clean_folder = html_entity_decode(string: $currentConfig->path).'/';
|
||||
$pacemakerCertificateFolder = $this->getPacemakerCertificateFolder($devisOfDefunt);
|
||||
$folderDestination = $clean_folder.$pacemakerCertificateFolder;
|
||||
$pdfFilename = $this->getPacemakerAbsentCertificateFilename($devisOfDefunt);
|
||||
$filenamePath = $clean_folder.$pacemakerCertificateFolder.$pdfFilename.'.pdf';
|
||||
$pdf = new PacemakerAbsentCertificatePdfHandler();
|
||||
$pdf->AddFont('ComicSans', '', 'Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans', 'B', 'comic-sans-bold.php');
|
||||
$signatureImageExist = $this->signatureImageExists();
|
||||
$tamponImageExist = $this->tamponImageExist();
|
||||
$pdf->SetPacemakerCertificateData($devisOfDefunt, $logo, $signatureImageExist, $tamponImageExist);
|
||||
$pdf->SetPacemakerCertificate();
|
||||
try {
|
||||
$storage->newFolder($folderDestination);
|
||||
} catch(\OCP\Files\NotPermittedException $e) {
|
||||
}
|
||||
$pdfContent = $pdf->Output('', 'S');
|
||||
$storage->newFile($filenamePath);
|
||||
$pdfFile = $storage->get($filenamePath);
|
||||
$pdfFile->putContent($pdfContent);
|
||||
|
||||
@ -27,125 +27,142 @@ declare(strict_types=1);
|
||||
namespace OCA\Gestion\Service\Certificate\PdfHandler;
|
||||
|
||||
use DateTime;
|
||||
use \FPDF;
|
||||
use FPDF;
|
||||
use OCA\Gestion\Helpers\DateHelpers;
|
||||
use OCA\Gestion\Helpers\FileExportHelpers;
|
||||
use OCA\Gestion\Helpers\PriceHelpers;
|
||||
|
||||
class CareCertificatePdfHandler extends FPDF {
|
||||
|
||||
class CareCertificatePdfHandler extends FPDF
|
||||
{
|
||||
private $devisOfDefunt = [];
|
||||
private $logo = null;
|
||||
private $signatureImageExist = false;
|
||||
private $tamponImageExist = false;
|
||||
private $imagePath = "/var/www/html/data/admin/files/.gestion/";
|
||||
|
||||
function Header()
|
||||
public function Header()
|
||||
{
|
||||
if($this->logo != "nothing"){
|
||||
$this->Image($this->imagePath."logo.png", 10, 10, 75, 25);
|
||||
}
|
||||
else{
|
||||
$this->Cell(55,30,'');
|
||||
if($this->logo != "nothing") {
|
||||
$this->Image($this->imagePath."logo.png", 4, 2, 40, 45);
|
||||
} else {
|
||||
$this->Cell(55, 30, '');
|
||||
}
|
||||
}
|
||||
function Footer()
|
||||
public function Footer()
|
||||
{
|
||||
$this->SetY(-18);
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->MultiCell(0, 5, utf8_decode(html_entity_decode($this->devisOfDefunt['configuration']->legal_one)), 0, 'C');
|
||||
$this->MultiCell(0, 5, utf8_decode(html_entity_decode($this->devisOfDefunt['configuration']->adresse)), 0,'C');
|
||||
$this->MultiCell(0, 5, utf8_decode(html_entity_decode($this->devisOfDefunt['configuration']->adresse)), 0, 'C');
|
||||
}
|
||||
|
||||
public function SetCareCertificateData(array $devisOfDefunt,$logo = null,$signatureImageExist = false){
|
||||
public function SetCareCertificateData(array $devisOfDefunt, $logo = null, $signatureImageExist = false, $tamponImageExist = false)
|
||||
{
|
||||
$this->devisOfDefunt = $devisOfDefunt;
|
||||
$this->logo = $logo;
|
||||
$this->signatureImageExist = $signatureImageExist;
|
||||
$this->tamponImageExist = $tamponImageExist;
|
||||
}
|
||||
|
||||
public function SetCareCertificate(){
|
||||
public function SetCareCertificate()
|
||||
{
|
||||
$this->AddPage();
|
||||
$this->SetMargins(left:20,top:0,right:20);
|
||||
$this->SetMargins(left:20, top:0, right:20);
|
||||
$this->SetCareCertificateTitle();
|
||||
$this->SetCareCertificateContent();
|
||||
$this->SetSigning();
|
||||
}
|
||||
|
||||
private function SetSigning(){
|
||||
$this->SetXY(140,$this->GetY() + 15);
|
||||
$this->Cell(0,10,'Cachet et signature');
|
||||
private function SetSigning()
|
||||
{
|
||||
$this->SetXY(140, $this->GetY() + 15);
|
||||
$this->Cell(0, 10, 'Cachet et signature');
|
||||
|
||||
if($this->signatureImageExist){
|
||||
$this->Image($this->imagePath."sign.png", 135, $this->GetY() + 12, 60, 40);
|
||||
if($this->tamponImageExist) {
|
||||
$this->Image($this->imagePath."sign.jpg", 120, $this->GetY() + 8, 80, 35);
|
||||
}
|
||||
|
||||
if($this->signatureImageExist) {
|
||||
$this->Image($this->imagePath."sign.png", 140, $this->GetY() + 40, 40, 16);
|
||||
}
|
||||
}
|
||||
|
||||
private function SetCareCertificateContent(){
|
||||
$this->SetFont('ComicSans', '', 14);
|
||||
$this->MultiCell(0,7,FileExportHelpers::FormatTextForExport('La Société '. $this->devisOfDefunt['configuration']->entreprise. ' habilitée sous le numéro ' . $this->devisOfDefunt['thanato_reference'] . ', certifie par la présente que : '));
|
||||
$this->SetFont('ComicSans', 'B', 14);
|
||||
$this->Cell(0,12, 'Mr/Mme ' . FileExportHelpers::FormatTextForExport($this->devisOfDefunt['thanato_nom'] . ' ' . $this->devisOfDefunt['thanato_prenom']),0,1);
|
||||
$this->SetFont('ComicSans', '', 14);
|
||||
$this->MultiCell(0,7, FileExportHelpers::FormatTextForExport('Employé(e) au sein de notre société et titulaire du diplôme national de Thanatopracteur, a effectué des soins de conservation sur le corps du défunt :'));
|
||||
$this->SetFont('ComicSans', 'B', 14);
|
||||
$this->Cell(0,12, FileExportHelpers::FormatTextForExport($this->devisOfDefunt['defunt_nom']),0,1);
|
||||
$this->SetFont('ComicSans', '', 14);
|
||||
$this->Cell(0,12, FileExportHelpers::FormatTextForExport("Qui reposait à l'adresse suivante") . ' : ',0,1);
|
||||
$this->SetFont('ComicSans', 'B', 14);
|
||||
$this->MultiCell(0,6, FileExportHelpers::FormatTextForExport($this->devisOfDefunt['location_of_devis']));
|
||||
$this->SetFont('ComicSans', '', 14);
|
||||
$this->Cell(0,12, FileExportHelpers::FormatTextForExport("La présente attestation est établie pour faire valoir ce que de droit."),0,5);
|
||||
private function SetCareCertificateContent()
|
||||
{
|
||||
$this->SetFont('Arial', '', 14);
|
||||
$this->MultiCell(0, 7, FileExportHelpers::FormatTextForExport('La Société '. $this->devisOfDefunt['configuration']->entreprise. ' habilitée sous le numéro ' . $this->devisOfDefunt['thanato_reference'] . ', certifie par la présente que : '));
|
||||
$this->SetFont('Arial', 'B', 14);
|
||||
$this->Cell(0, 12, FileExportHelpers::FormatTextForExport($this->devisOfDefunt['thanato_nom'] . ' ' . $this->devisOfDefunt['thanato_prenom']), 0, 1);
|
||||
$this->SetFont('Arial', '', 14);
|
||||
$this->MultiCell(0, 7, FileExportHelpers::FormatTextForExport('Employé(e) au sein de notre société et titulaire du diplôme national de Thanatopracteur, a effectué des soins de conservation sur le corps du défunt :'));
|
||||
$this->SetFont('Arial', 'B', 14);
|
||||
$this->Cell(0, 12, FileExportHelpers::FormatTextForExport($this->devisOfDefunt['defunt_nom']), 0, 1);
|
||||
$this->SetFont('Arial', '', 14);
|
||||
$this->Cell(0, 12, FileExportHelpers::FormatTextForExport("Date du décès") . ' : ' . $this->devisOfDefunt['defunt_date'], 0, 1);
|
||||
$this->SetFont('Arial', '', 14);
|
||||
$this->Cell(0, 12, FileExportHelpers::FormatTextForExport("Lieu du décès") . ' : ' . $this->devisOfDefunt['lieu_deces'], 0, 1);
|
||||
$this->SetFont('Arial', '', 14);
|
||||
$this->Cell(0, 12, FileExportHelpers::FormatTextForExport("Qui reposait à l'adresse suivante") . ' : ', 0, 1);
|
||||
$this->SetFont('Arial', 'B', 14);
|
||||
$this->MultiCell(0, 6, FileExportHelpers::FormatTextForExport($this->devisOfDefunt['location_of_devis']));
|
||||
|
||||
|
||||
|
||||
$this->SetFont('Arial', '', 14);
|
||||
$this->Cell(0, 12, FileExportHelpers::FormatTextForExport("La présente attestation est établie pour faire valoir ce que de droit."), 0, 5);
|
||||
$this->Ln(5);
|
||||
$this->MultiAlignCell(120,7,FileExportHelpers::FormatTextForExport('Fait à '). FileExportHelpers::FormatTextForExport($this->devisOfDefunt['configuration']->adresse),0);
|
||||
$this->SetX(140);
|
||||
$this->Cell(0,7,'le '. $this->devisOfDefunt['devis_date']->format('d/m/Y'),0);
|
||||
// $this->MultiAlignCell(120,7,FileExportHelpers::FormatTextForExport('Fait à '). FileExportHelpers::FormatTextForExport($this->devisOfDefunt['location_of_devis']),0);
|
||||
// $this->SetX(140);
|
||||
$this->Cell(0, 7, 'Fait le '. $this->devisOfDefunt['devis_date']->format('d/m/Y'), 0);
|
||||
}
|
||||
|
||||
private function SetCareCertificateTitle(){
|
||||
private function SetCareCertificateTitle()
|
||||
{
|
||||
$this->SetY(60);
|
||||
$this->SetFont('ComicSans', 'B', 20);
|
||||
$this->Cell(0, 10, 'ATTESTATION DE SOINS DE CONSERVATION', 0, 1,'C');
|
||||
$this->Ln(20);
|
||||
$this->SetFont('Arial', 'B', 20);
|
||||
$this->Cell(0, 10, 'ATTESTATION DE SOINS DE CONSERVATION', 0, 1, 'C');
|
||||
$this->Ln(20);
|
||||
}
|
||||
|
||||
function MultiAlignCell($w,$h,$text,$border=0,$ln=0,$align='L',$fill=false)
|
||||
{
|
||||
// Store reset values for (x,y) positions
|
||||
$x = $this->GetX() + $w;
|
||||
$y = $this->GetY();
|
||||
public function MultiAlignCell($w, $h, $text, $border = 0, $ln = 0, $align = 'L', $fill = false)
|
||||
{
|
||||
// Store reset values for (x,y) positions
|
||||
$x = $this->GetX() + $w;
|
||||
$y = $this->GetY();
|
||||
|
||||
// Make a call to FPDF's MultiCell
|
||||
$this->MultiCell($w,$h,$text,$border,$align,$fill);
|
||||
// Make a call to FPDF's MultiCell
|
||||
$this->MultiCell($w, $h, $text, $border, $align, $fill);
|
||||
|
||||
// Reset the line position to the right, like in Cell
|
||||
if( $ln==0 )
|
||||
{
|
||||
$this->SetXY($x,$y);
|
||||
}
|
||||
}
|
||||
// Reset the line position to the right, like in Cell
|
||||
if($ln == 0) {
|
||||
$this->SetXY($x, $y);
|
||||
}
|
||||
}
|
||||
|
||||
function NbLines($w, $txt)
|
||||
public function NbLines($w, $txt)
|
||||
{
|
||||
// Compute the number of lines a MultiCell of width w will take
|
||||
if(!isset($this->CurrentFont))
|
||||
if(!isset($this->CurrentFont)) {
|
||||
$this->Error('No font has been set');
|
||||
}
|
||||
$cw = $this->CurrentFont['cw'];
|
||||
if($w==0)
|
||||
$w = $this->w-$this->rMargin-$this->x;
|
||||
$wmax = ($w-2*$this->cMargin)*1000/$this->FontSize;
|
||||
$s = str_replace("\r",'',(string)$txt);
|
||||
if($w == 0) {
|
||||
$w = $this->w - $this->rMargin - $this->x;
|
||||
}
|
||||
$wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
|
||||
$s = str_replace("\r", '', (string)$txt);
|
||||
$nb = strlen($s);
|
||||
if($nb>0 && $s[$nb-1]=="\n")
|
||||
if($nb > 0 && $s[$nb - 1] == "\n") {
|
||||
$nb--;
|
||||
}
|
||||
$sep = -1;
|
||||
$i = 0;
|
||||
$j = 0;
|
||||
$l = 0;
|
||||
$nl = 1;
|
||||
while($i<$nb)
|
||||
{
|
||||
while($i < $nb) {
|
||||
$c = $s[$i];
|
||||
if($c=="\n")
|
||||
{
|
||||
if($c == "\n") {
|
||||
$i++;
|
||||
$sep = -1;
|
||||
$j = $i;
|
||||
@ -153,25 +170,25 @@ class CareCertificatePdfHandler extends FPDF {
|
||||
$nl++;
|
||||
continue;
|
||||
}
|
||||
if($c==' ')
|
||||
if($c == ' ') {
|
||||
$sep = $i;
|
||||
}
|
||||
$l += $cw[$c];
|
||||
if($l>$wmax)
|
||||
{
|
||||
if($sep==-1)
|
||||
{
|
||||
if($i==$j)
|
||||
if($l > $wmax) {
|
||||
if($sep == -1) {
|
||||
if($i == $j) {
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
$i = $sep + 1;
|
||||
}
|
||||
else
|
||||
$i = $sep+1;
|
||||
$sep = -1;
|
||||
$j = $i;
|
||||
$l = 0;
|
||||
$nl++;
|
||||
}
|
||||
else
|
||||
} else {
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
return $nl;
|
||||
}
|
||||
|
||||
@ -0,0 +1,239 @@
|
||||
<?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\Certificate\PdfHandler;
|
||||
|
||||
use DateTime;
|
||||
use FPDF;
|
||||
use OCA\Gestion\Helpers\DateHelpers;
|
||||
use OCA\Gestion\Helpers\FileExportHelpers;
|
||||
use OCA\Gestion\Helpers\PriceHelpers;
|
||||
|
||||
class PacemakerAbsentCertificatePdfHandler extends FPDF
|
||||
{
|
||||
private $devisOfDefunt = [];
|
||||
private $logo = null;
|
||||
private $signatureImageExist = false;
|
||||
private $tamponImageExist = false;
|
||||
private $imagePath = "/var/www/html/data/admin/files/.gestion/";
|
||||
|
||||
public function Header()
|
||||
{
|
||||
if ($this->logo != "nothing") {
|
||||
$this->Image($this->imagePath . "logo.png", 10, 10, 50, 35);
|
||||
}
|
||||
|
||||
// En-tête avec les informations de l'entreprise - SOUS le logo
|
||||
$this->SetXY(10, 50); // Position sous le logo
|
||||
$this->SetFont('Arial', 'B', 12);
|
||||
$this->Cell(0, 5, FileExportHelpers::FormatTextForExport($this->devisOfDefunt['configuration']->entreprise), 0, 1);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->MultiCell(0, 4, FileExportHelpers::FormatTextForExport($this->devisOfDefunt['configuration']->adresse), 0, 'L');
|
||||
|
||||
if (isset($this->devisOfDefunt['configuration']->telephone)) {
|
||||
$this->Cell(0, 4, 'Tel : ' . FileExportHelpers::FormatTextForExport($this->devisOfDefunt['configuration']->telephone), 0, 1);
|
||||
}
|
||||
|
||||
if (isset($this->devisOfDefunt['thanato_reference'])) {
|
||||
$this->Cell(0, 4, 'Habilitation : ' . FileExportHelpers::FormatTextForExport($this->devisOfDefunt['thanato_reference']), 0, 1);
|
||||
}
|
||||
|
||||
if (isset($this->devisOfDefunt['configuration']->siret)) {
|
||||
$this->Cell(0, 4, 'Siret : ' . FileExportHelpers::FormatTextForExport($this->devisOfDefunt['configuration']->siret), 0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
public function Footer()
|
||||
{
|
||||
$this->SetY(-15);
|
||||
$this->MultiCell(0, 5, utf8_decode(html_entity_decode($this->devisOfDefunt['configuration']->legal_one)), 0, 'C');
|
||||
$this->MultiCell(0, 5, utf8_decode(html_entity_decode($this->devisOfDefunt['configuration']->adresse)), 0, 'C');
|
||||
}
|
||||
|
||||
public function SetPacemakerCertificateData(array $devisOfDefunt, $logo = null, $signatureImageExist = false, $tamponImageExist = false)
|
||||
{
|
||||
$this->devisOfDefunt = $devisOfDefunt;
|
||||
$this->logo = $logo;
|
||||
$this->signatureImageExist = $signatureImageExist;
|
||||
$this->tamponImageExist = $tamponImageExist;
|
||||
}
|
||||
|
||||
public function SetPacemakerCertificate()
|
||||
{
|
||||
$this->AddPage();
|
||||
$this->SetMargins(left: 20, top: 0, right: 20);
|
||||
$this->SetPacemakerCertificateTitle();
|
||||
$this->SetPacemakerCertificateContent();
|
||||
}
|
||||
|
||||
private function SetPacemakerCertificateContent()
|
||||
{
|
||||
$this->SetY(100); // Position réduite après le titre
|
||||
|
||||
$this->SetFont('Arial', '', 12);
|
||||
|
||||
// Déterminer le genre selon la civilité
|
||||
$civilite = isset($this->devisOfDefunt['thanato_civilite']) ? $this->devisOfDefunt['thanato_civilite'] : 'Madame';
|
||||
$pronom = 'Je soussignée';
|
||||
$profession = 'thanatopractrice diplômée';
|
||||
|
||||
// Adaptation selon la civilité
|
||||
if (strtolower($civilite) === 'monsieur' || strtolower($civilite) === 'm.' || strtolower($civilite) === 'mr') {
|
||||
$pronom = 'Je soussigné';
|
||||
$profession = 'thanatopracteur diplômé';
|
||||
}
|
||||
|
||||
// Texte principal avec genre adapté
|
||||
$mainText = $pronom . ', ' . $civilite . ' ' .
|
||||
mb_convert_encoding(html_entity_decode($this->devisOfDefunt['thanato_prenom']), 'ISO-8859-1', 'UTF-8'). ' ' .mb_convert_encoding(html_entity_decode($this->devisOfDefunt['thanato_nom']), 'ISO-8859-1', 'UTF-8').
|
||||
', ' . $profession . ', certifie ne pas avoir constaté, à la palpation, la présence d\'un pacemaker pour :';
|
||||
|
||||
$this->MultiCell(0, 6, FileExportHelpers::FormatTextForExport($mainText));
|
||||
$this->Ln(8);
|
||||
|
||||
// Nom du défunt
|
||||
$this->SetFont('Arial', 'B', 12);
|
||||
$this->Cell(20, 8, 'Nom :', 0, 0);
|
||||
$this->SetFont('Arial', '', 12);
|
||||
$this->Cell(0, 8, FileExportHelpers::FormatTextForExport(mb_convert_encoding(html_entity_decode($this->devisOfDefunt['defunt_nom']), 'ISO-8859-1', 'UTF-8')), 0, 1);
|
||||
$this->Ln(3);
|
||||
|
||||
// Date
|
||||
$this->SetFont('Arial', 'B', 12);
|
||||
$this->Cell(20, 8, 'Date :', 0, 0);
|
||||
$this->SetFont('Arial', '', 12);
|
||||
if (isset($this->devisOfDefunt['devis_date'])) {
|
||||
$this->Cell(0, 8, $this->devisOfDefunt['devis_date']->format('d/m/Y'), 0, 1);
|
||||
} else {
|
||||
$this->Cell(0, 8, '', 0, 1);
|
||||
}
|
||||
$this->Ln(3);
|
||||
|
||||
// Lieu d'intervention
|
||||
$this->SetFont('Arial', 'B', 12);
|
||||
$this->Cell(40, 8, 'Lieu d\'intervention :', 0, 0);
|
||||
$this->SetFont('Arial', '', 12);
|
||||
$lieu = isset($this->devisOfDefunt['lieu_intervention']) ?
|
||||
$this->devisOfDefunt['lieu_intervention'] :
|
||||
$this->devisOfDefunt['location_of_devis'];
|
||||
|
||||
// Utiliser MultiCell pour permettre le retour à la ligne
|
||||
$this->SetX(20); // Retour au début de la ligne
|
||||
$this->SetFont('Arial', 'B', 12);
|
||||
$this->Cell(40, 8, 'Lieu d\'intervention :', 0, 1); // 1 pour aller à la ligne suivante
|
||||
$this->SetFont('Arial', '', 12);
|
||||
$this->MultiCell(0, 6, FileExportHelpers::FormatTextForExport($lieu), 0, 'L');
|
||||
|
||||
// Signatures et cachet - juste après le lieu d'intervention
|
||||
$this->Ln(15); // Petit espace après le lieu d'intervention
|
||||
|
||||
if ($this->signatureImageExist) {
|
||||
$this->Image($this->imagePath."sign.png", 140, $this->GetY(), 40, 16);
|
||||
}
|
||||
|
||||
if($this->tamponImageExist) {
|
||||
$this->SetXY(120, $this->GetY() + 20); // Augmenté de 5 à 20 pour plus d'espace
|
||||
$this->Image($this->imagePath."sign.jpg", 120, $this->GetY(), 80, 35);
|
||||
}
|
||||
}
|
||||
|
||||
private function SetPacemakerCertificateTitle()
|
||||
{
|
||||
$this->SetY(y: 85); // Titre plus bas pour éviter l'en-tête
|
||||
$this->SetFont('Arial', 'B', 16);
|
||||
$this->Cell(0, 10, FileExportHelpers::FormatTextForExport('ATTESTATION D\'ABSENCE DE PACEMAKER'), 0, 1, 'C');
|
||||
$this->Ln(5); // Espace réduit après le titre
|
||||
}
|
||||
|
||||
public function MultiAlignCell($w, $h, $text, $border = 0, $ln = 0, $align = 'L', $fill = false)
|
||||
{
|
||||
// Store reset values for (x,y) positions
|
||||
$x = $this->GetX() + $w;
|
||||
$y = $this->GetY();
|
||||
|
||||
// Make a call to FPDF's MultiCell
|
||||
$this->MultiCell($w, $h, $text, $border, $align, $fill);
|
||||
|
||||
// Reset the line position to the right, like in Cell
|
||||
if ($ln == 0) {
|
||||
$this->SetXY($x, $y);
|
||||
}
|
||||
}
|
||||
|
||||
public function NbLines($w, $txt)
|
||||
{
|
||||
// Compute the number of lines a MultiCell of width w will take
|
||||
if (!isset($this->CurrentFont)) {
|
||||
$this->Error('No font has been set');
|
||||
}
|
||||
$cw = $this->CurrentFont['cw'];
|
||||
if ($w == 0) {
|
||||
$w = $this->w - $this->rMargin - $this->x;
|
||||
}
|
||||
$wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
|
||||
$s = str_replace("\r", '', (string) $txt);
|
||||
$nb = strlen($s);
|
||||
if ($nb > 0 && $s[$nb - 1] == "\n") {
|
||||
$nb--;
|
||||
}
|
||||
$sep = -1;
|
||||
$i = 0;
|
||||
$j = 0;
|
||||
$l = 0;
|
||||
$nl = 1;
|
||||
while ($i < $nb) {
|
||||
$c = $s[$i];
|
||||
if ($c == "\n") {
|
||||
$i++;
|
||||
$sep = -1;
|
||||
$j = $i;
|
||||
$l = 0;
|
||||
$nl++;
|
||||
continue;
|
||||
}
|
||||
if ($c == ' ') {
|
||||
$sep = $i;
|
||||
}
|
||||
$l += $cw[$c];
|
||||
if ($l > $wmax) {
|
||||
if ($sep == -1) {
|
||||
if ($i == $j) {
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
$i = $sep + 1;
|
||||
}
|
||||
$sep = -1;
|
||||
$j = $i;
|
||||
$l = 0;
|
||||
$nl++;
|
||||
} else {
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
return $nl;
|
||||
}
|
||||
}
|
||||
@ -27,134 +27,174 @@ declare(strict_types=1);
|
||||
namespace OCA\Gestion\Service\Certificate\PdfHandler;
|
||||
|
||||
use DateTime;
|
||||
use \FPDF;
|
||||
use FPDF;
|
||||
use OCA\Gestion\Helpers\DateHelpers;
|
||||
use OCA\Gestion\Helpers\FileExportHelpers;
|
||||
use OCA\Gestion\Helpers\PriceHelpers;
|
||||
|
||||
class PacemakerCertificatePdfHandler extends FPDF {
|
||||
|
||||
class PacemakerCertificatePdfHandler extends FPDF
|
||||
{
|
||||
private $devisOfDefunt = [];
|
||||
private $logo = null;
|
||||
private $signatureImageExist = false;
|
||||
private $imagePath = "/var/www/html/data/admin/files/.gestion/";
|
||||
private $tamponImageExist = false;
|
||||
|
||||
function Header()
|
||||
public function Header()
|
||||
{
|
||||
if($this->logo != "nothing"){
|
||||
$this->Image($this->imagePath."logo.png", 10, 10, 75, 25);
|
||||
}
|
||||
else{
|
||||
$this->Cell(55,30,'');
|
||||
if ($this->logo != "nothing") {
|
||||
$this->Image($this->imagePath."logo.png", 4, 2, 40, 45);
|
||||
} else {
|
||||
$this->Cell(55, 30, '');
|
||||
}
|
||||
}
|
||||
function Footer()
|
||||
|
||||
public function Footer()
|
||||
{
|
||||
// Augmenter l'espace pour le footer pour éviter les chevauchements
|
||||
$this->SetY(-18);
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->MultiCell(0, 5, utf8_decode(html_entity_decode($this->devisOfDefunt['configuration']->legal_one)), 0, 'C');
|
||||
$this->MultiCell(0, 5, utf8_decode(html_entity_decode($this->devisOfDefunt['configuration']->adresse)), 0,'C');
|
||||
$this->MultiCell(0, 5, utf8_decode(html_entity_decode($this->devisOfDefunt['configuration']->adresse)), 0, 'C');
|
||||
}
|
||||
|
||||
public function SetPacemakerCertificateData(array $devisOfDefunt,$logo = null,$signatureImageExist = false){
|
||||
public function SetPacemakerCertificateData(array $devisOfDefunt, $logo = null, $signatureImageExist = false, $tamponImageExist = false)
|
||||
{
|
||||
$this->devisOfDefunt = $devisOfDefunt;
|
||||
$this->logo = $logo;
|
||||
$this->signatureImageExist = $signatureImageExist;
|
||||
$this->tamponImageExist = $tamponImageExist;
|
||||
}
|
||||
|
||||
public function SetPacemakerCertificate(){
|
||||
public function SetPacemakerCertificate()
|
||||
{
|
||||
$this->AddPage();
|
||||
$this->SetMargins(left:20,top:0,right:20);
|
||||
$this->SetMargins(left: 20, top: 0, right: 20);
|
||||
$this->SetPacemakerCertificateTitle();
|
||||
$this->SetPacemakerCertificateContent();
|
||||
$this->SetSigning();
|
||||
}
|
||||
|
||||
private function SetSigning(){
|
||||
$this->SetXY(140,$this->GetY() + 15);
|
||||
$this->Cell(0,10,'Cachet et signature');
|
||||
private function SetSigning()
|
||||
{
|
||||
// Ajouter plus d'espace avant la signature et le tampon
|
||||
$this->Ln(5); // Ajouter de l'espace vertical
|
||||
|
||||
if($this->signatureImageExist){
|
||||
$this->Image($this->imagePath."sign.png", 135, $this->GetY() + 12, 60, 40);
|
||||
// Calculer la position Y pour éviter le chevauchement avec le footer
|
||||
$maxY = $this->GetPageHeight() - 65;
|
||||
$currentY = $this->GetY();
|
||||
|
||||
// Si on est trop bas, ne pas dépasser la limite
|
||||
if ($currentY > $maxY) {
|
||||
$currentY = $maxY;
|
||||
}
|
||||
|
||||
// Positionner le tampon
|
||||
if($this->tamponImageExist) {
|
||||
$this->Image($this->imagePath."sign.jpg", 120, $currentY, 80, 25); // Réduire la hauteur de 30 à 25
|
||||
}
|
||||
|
||||
// Positionner la signature sous le tampon
|
||||
if ($this->signatureImageExist) {
|
||||
$this->Image($this->imagePath."sign.png", 140, $currentY + 28, 40, 16); // Ajuster la position Y
|
||||
}
|
||||
}
|
||||
|
||||
private function SetPacemakerCertificateContent(){
|
||||
$this->SetFont('ComicSans', '', 14);
|
||||
$this->MultiCell(0,7,FileExportHelpers::FormatTextForExport('La Société '. $this->devisOfDefunt['configuration']->entreprise. ' habilitée sous le numéro ' . $this->devisOfDefunt['thanato_reference'] . ', certifie par la présente que : '));
|
||||
$this->SetFont('ComicSans', 'B', 14);
|
||||
$this->Cell(0,12, 'Mr/Mme ' . FileExportHelpers::FormatTextForExport($this->devisOfDefunt['thanato_nom'] . ' ' . $this->devisOfDefunt['thanato_prenom']),0,1);
|
||||
$this->SetFont('ComicSans', '', 14);
|
||||
$this->MultiCell(0,7, FileExportHelpers::FormatTextForExport('Employé(e) au sein de notre société et titulaire du diplôme national de Thanatopracteur, a retiré ce jour, la prothèse fonctionnant à pile implantée sur le corps du défunt :'));
|
||||
$this->SetFont('ComicSans', 'B', 14);
|
||||
$this->Cell(0,12, FileExportHelpers::FormatTextForExport($this->devisOfDefunt['defunt_nom']),0,1);
|
||||
$this->SetFont('ComicSans', '', 14);
|
||||
$this->Cell(0,12, FileExportHelpers::FormatTextForExport("Qui reposait à l'adresse suivante") . ' : ',0,1);
|
||||
$this->SetFont('ComicSans', 'B', 14);
|
||||
$this->MultiCell(0,6, FileExportHelpers::FormatTextForExport($this->devisOfDefunt['location_of_devis']));
|
||||
private function SetPacemakerCertificateContent()
|
||||
{
|
||||
$this->SetFont('Arial', '', 14);
|
||||
$this->MultiCell(0, 7, FileExportHelpers::FormatTextForExport('La Société ' . $this->devisOfDefunt['configuration']->entreprise . ' habilitée sous le numéro ' . $this->devisOfDefunt['thanato_reference'] . ', certifie par la présente que : '));
|
||||
$this->SetFont('Arial', 'B', 14);
|
||||
$this->Cell(0, 12, FileExportHelpers::FormatTextForExport($this->devisOfDefunt['thanato_nom'] . ' ' . $this->devisOfDefunt['thanato_prenom']), 0, 1);
|
||||
$this->SetFont('Arial', '', 14);
|
||||
$this->MultiCell(0, 7, FileExportHelpers::FormatTextForExport('Employé(e) au sein de notre société et titulaire du diplôme national de Thanatopracteur, a retiré ce jour, la prothèse fonctionnant à pile implantée sur le corps du défunt :'));
|
||||
$this->SetFont('Arial', 'B', 14);
|
||||
$this->Cell(0, 12, FileExportHelpers::FormatTextForExport($this->devisOfDefunt['defunt_nom']), 0, 1);
|
||||
$this->SetFont('Arial', '', 14);
|
||||
$this->Cell(0, 12, FileExportHelpers::FormatTextForExport("Date du décès") . ' : ' . $this->devisOfDefunt['defunt_date'], 0, 1);
|
||||
$this->SetFont('Arial', '', 14);
|
||||
$this->Cell(0, 12, FileExportHelpers::FormatTextForExport("Lieu du décès") . ' : ' . $this->devisOfDefunt['lieu_deces'], 0, 1);
|
||||
$this->SetFont('Arial', '', 14);
|
||||
$this->Cell(0, 12, FileExportHelpers::FormatTextForExport("Qui reposait à l'adresse suivante") . ' : ', 0, 1);
|
||||
|
||||
$this->SetFont('Arial', 'B', 14);
|
||||
$this->MultiCell(0, 6, FileExportHelpers::FormatTextForExport($this->devisOfDefunt['location_of_devis']));
|
||||
$this->Ln(6);
|
||||
$this->SetFont('ComicSans', '', 14);
|
||||
$this->Cell(0,6,
|
||||
FileExportHelpers::FormatTextForExport("Numéro de série : ").
|
||||
FileExportHelpers::FormatTextForExport($this->devisOfDefunt['defunt_reference_pacemaker']),0,1);
|
||||
$this->Cell(0,6,
|
||||
FileExportHelpers::FormatTextForExport("Marque du produit : ").
|
||||
FileExportHelpers::FormatTextForExport($this->devisOfDefunt['defunt_product_brand']),0,1);
|
||||
$this->Cell(0,12, FileExportHelpers::FormatTextForExport("La présente attestation est établie pour faire valoir ce que de droit."),0,5);
|
||||
$this->SetFont('Arial', '', 14);
|
||||
$this->Cell(
|
||||
0,
|
||||
6,
|
||||
FileExportHelpers::FormatTextForExport("Numéro de série : ") .
|
||||
FileExportHelpers::FormatTextForExport($this->devisOfDefunt['defunt_reference_pacemaker']),
|
||||
0,
|
||||
1
|
||||
);
|
||||
$this->Cell(
|
||||
0,
|
||||
6,
|
||||
FileExportHelpers::FormatTextForExport("Marque du produit : ") .
|
||||
FileExportHelpers::FormatTextForExport($this->devisOfDefunt['defunt_product_brand']),
|
||||
0,
|
||||
1
|
||||
);
|
||||
$this->Cell(0, 12, FileExportHelpers::FormatTextForExport("La présente attestation est établie pour faire valoir ce que de droit."), 0, 1);
|
||||
$this->Ln(5);
|
||||
|
||||
$this->MultiAlignCell(120,7,FileExportHelpers::FormatTextForExport('Fait à '). FileExportHelpers::FormatTextForExport($this->devisOfDefunt['configuration']->adresse),0);
|
||||
// Positionner "Fait le" de manière relative plutôt qu'absolue
|
||||
$this->SetX(140);
|
||||
$this->Cell(0,7,'le '. $this->devisOfDefunt['devis_date']->format('d/m/Y'),0);
|
||||
$this->Cell(0, 7, 'Fait le ' . $this->devisOfDefunt['devis_date']->format('d/m/Y'), 0);
|
||||
}
|
||||
|
||||
private function SetPacemakerCertificateTitle(){
|
||||
private function SetPacemakerCertificateTitle()
|
||||
{
|
||||
$this->SetY(y: 50);
|
||||
$this->SetFont('ComicSans', 'B', 20);
|
||||
$this->Cell(0,10,'ATTESTATION DE RETRAIT DE LA',0,1,'C');
|
||||
$this->Cell(0,10,'PROTHESE FONCTIONNANT A PILE',0,1,'C');
|
||||
$this->Ln(20);
|
||||
$this->SetFont('Arial', 'B', 15);
|
||||
$this->Cell(0, 10, 'ATTESTATION DE RECUPERATION DE', 0, 1, 'C');
|
||||
$this->Cell(0, 10, 'PROTHESE FONCTIONNANT AU MOYEN D\'UNE PILE', 0, 1, 'C');
|
||||
$this->SetFont('Arial', 'B', 12);
|
||||
$this->Cell(0, 10, '(dernier alinea de l\'article R.2213-15 du code des collectivites territoriales)', 0, 1, 'C');
|
||||
$this->Ln(10);
|
||||
}
|
||||
|
||||
function MultiAlignCell($w,$h,$text,$border=0,$ln=0,$align='L',$fill=false)
|
||||
{
|
||||
// Store reset values for (x,y) positions
|
||||
$x = $this->GetX() + $w;
|
||||
$y = $this->GetY();
|
||||
public function MultiAlignCell($w, $h, $text, $border = 0, $ln = 0, $align = 'L', $fill = false)
|
||||
{
|
||||
// Store reset values for (x,y) positions
|
||||
$x = $this->GetX() + $w;
|
||||
$y = $this->GetY();
|
||||
|
||||
// Make a call to FPDF's MultiCell
|
||||
$this->MultiCell($w,$h,$text,$border,$align,$fill);
|
||||
// Make a call to FPDF's MultiCell
|
||||
$this->MultiCell($w, $h, $text, $border, $align, $fill);
|
||||
|
||||
// Reset the line position to the right, like in Cell
|
||||
if( $ln==0 )
|
||||
{
|
||||
$this->SetXY($x,$y);
|
||||
}
|
||||
}
|
||||
// Reset the line position to the right, like in Cell
|
||||
if ($ln == 0) {
|
||||
$this->SetXY($x, $y);
|
||||
}
|
||||
}
|
||||
|
||||
function NbLines($w, $txt)
|
||||
public function NbLines($w, $txt)
|
||||
{
|
||||
// Compute the number of lines a MultiCell of width w will take
|
||||
if(!isset($this->CurrentFont))
|
||||
if (!isset($this->CurrentFont)) {
|
||||
$this->Error('No font has been set');
|
||||
}
|
||||
$cw = $this->CurrentFont['cw'];
|
||||
if($w==0)
|
||||
$w = $this->w-$this->rMargin-$this->x;
|
||||
$wmax = ($w-2*$this->cMargin)*1000/$this->FontSize;
|
||||
$s = str_replace("\r",'',(string)$txt);
|
||||
if ($w == 0) {
|
||||
$w = $this->w - $this->rMargin - $this->x;
|
||||
}
|
||||
$wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
|
||||
$s = str_replace("\r", '', (string) $txt);
|
||||
$nb = strlen($s);
|
||||
if($nb>0 && $s[$nb-1]=="\n")
|
||||
if ($nb > 0 && $s[$nb - 1] == "\n") {
|
||||
$nb--;
|
||||
}
|
||||
$sep = -1;
|
||||
$i = 0;
|
||||
$j = 0;
|
||||
$l = 0;
|
||||
$nl = 1;
|
||||
while($i<$nb)
|
||||
{
|
||||
while ($i < $nb) {
|
||||
$c = $s[$i];
|
||||
if($c=="\n")
|
||||
{
|
||||
if ($c == "\n") {
|
||||
$i++;
|
||||
$sep = -1;
|
||||
$j = $i;
|
||||
@ -162,25 +202,25 @@ class PacemakerCertificatePdfHandler extends FPDF {
|
||||
$nl++;
|
||||
continue;
|
||||
}
|
||||
if($c==' ')
|
||||
if ($c == ' ') {
|
||||
$sep = $i;
|
||||
}
|
||||
$l += $cw[$c];
|
||||
if($l>$wmax)
|
||||
{
|
||||
if($sep==-1)
|
||||
{
|
||||
if($i==$j)
|
||||
if ($l > $wmax) {
|
||||
if ($sep == -1) {
|
||||
if ($i == $j) {
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
$i = $sep + 1;
|
||||
}
|
||||
else
|
||||
$i = $sep+1;
|
||||
$sep = -1;
|
||||
$j = $i;
|
||||
$l = 0;
|
||||
$nl++;
|
||||
}
|
||||
else
|
||||
} else {
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
return $nl;
|
||||
}
|
||||
|
||||
198
gestion/lib/Service/Devis/DevisDataProcessor.php
Normal file
198
gestion/lib/Service/Devis/DevisDataProcessor.php
Normal file
@ -0,0 +1,198 @@
|
||||
<?php
|
||||
|
||||
namespace OCA\Gestion\Service\Devis;
|
||||
|
||||
use OCA\Gestion\Db\Bdd;
|
||||
use OCA\Gestion\Constants\MultipleFactureTypeConstant;
|
||||
|
||||
/**
|
||||
* Classe responsable du traitement et de la préparation des données de devis
|
||||
*/
|
||||
class DevisDataProcessor
|
||||
{
|
||||
/** @var Bdd */
|
||||
private $gestionBdd;
|
||||
|
||||
public function __construct(Bdd $gestionBdd)
|
||||
{
|
||||
$this->gestionBdd = $gestionBdd;
|
||||
}
|
||||
|
||||
public function prepareDevisData($devisData, $currentConfig, $filter, $idNextCloud)
|
||||
{
|
||||
$data_devis = [];
|
||||
|
||||
foreach ($devisData as $devis) {
|
||||
// Exclure les devis annulés des récapitulatifs
|
||||
if (isset($devis['mentions']) && $devis['mentions'] === 'CANCELED') {
|
||||
continue;
|
||||
}
|
||||
|
||||
$devis_temp = $this->createDevisStructure($devis, $currentConfig);
|
||||
$devis_temp = $this->calculateDevisAmounts($devis_temp, $devis, $filter, $idNextCloud);
|
||||
$data_devis[] = $devis_temp;
|
||||
}
|
||||
|
||||
return $data_devis;
|
||||
}
|
||||
|
||||
public function createDevisStructure($devis, $currentConfig)
|
||||
{
|
||||
return array(
|
||||
'devis_id' => $devis['devis_id'],
|
||||
'devis_full_number' => $devis['devis_full_number'],
|
||||
'case_number' => $devis['case_number'], // NOUVEAU : remplace calendar_uuid
|
||||
'order_number' => $devis['order_number'], // NOUVEAU : remplace num_commande vide
|
||||
'devis_date' => $devis['devis_date'],
|
||||
'lieu_nom' => $devis['lieu_nom'],
|
||||
'lieu_adresse' => $devis['lieu_adresse'],
|
||||
'thanato_nom' => $devis['thanato_nom'],
|
||||
'thanato_prenom' => $devis['thanato_prenom'],
|
||||
'defunt_nom' => $devis['defunt_nom'],
|
||||
'defunt_sexe' => $devis['defunt_sexe'],
|
||||
'client_nom' => $devis['client_nom'],
|
||||
'client_entreprise' => $devis['client_entreprise'],
|
||||
'client_adresse' => $devis['client_adresse'],
|
||||
'group_name' => $devis['group_name'],
|
||||
'group_address' => $devis['group_address'],
|
||||
'group_postal_code' => $devis['group_postal_code'],
|
||||
'group_city' => $devis['group_city'],
|
||||
'group_email' => $devis['group_email'],
|
||||
'group_siret_number' => $devis['group_siret_number'],
|
||||
'article' => 'SOINS',
|
||||
'montant_htc' => 0,
|
||||
'tva' => $currentConfig->tva_default,
|
||||
'montant_tva' => 0,
|
||||
'montant_ttc' => 0
|
||||
);
|
||||
}
|
||||
|
||||
public function calculateDevisAmounts($devis_temp, $devis, $filter, $idNextCloud)
|
||||
{
|
||||
$produits = json_decode($this->gestionBdd->getListProduit($devis['devis_id'], $idNextCloud));
|
||||
|
||||
// Variables pour gérer les articles comme dans les factures
|
||||
$produitsReferenceArray = [];
|
||||
|
||||
foreach ($produits as $produit) {
|
||||
$htPrice = $this->getProductPrice($produit, $devis, $filter);
|
||||
$devis_temp['montant_htc'] += $htPrice * $produit->quantite;
|
||||
|
||||
// Collecter les références comme dans les factures
|
||||
if (isset($produit->reference) && !empty($produit->reference)) {
|
||||
$produitsReferenceArray[] = $produit->reference;
|
||||
}
|
||||
}
|
||||
|
||||
// Traitement identique aux factures
|
||||
// $produitsReferenceArray = array_unique($produitsReferenceArray);
|
||||
$produitsReferenceAsString = implode("-", $produitsReferenceArray);
|
||||
$devis_temp['article'] = !empty($produitsReferenceAsString) ? $produitsReferenceAsString : '';
|
||||
|
||||
$devis_temp['montant_tva'] = ($devis_temp['montant_htc'] * $devis_temp['tva']) / 100;
|
||||
$devis_temp['montant_ttc'] = $devis_temp['montant_tva'] + $devis_temp['montant_htc'];
|
||||
|
||||
return $devis_temp;
|
||||
}
|
||||
|
||||
public function getProductPrice($produit, $devis, $filter)
|
||||
{
|
||||
$htPrice = $produit->prix_unitaire;
|
||||
|
||||
if ($devis['group_name'] != null && isset($produit->id)) {
|
||||
$price = $this->gestionBdd->getProductPriceByClientGroupId($filter, $produit->id);
|
||||
if ($price != null) {
|
||||
$htPrice = $price;
|
||||
}
|
||||
}
|
||||
|
||||
return $htPrice;
|
||||
}
|
||||
|
||||
public function getClientInfoForDevis($devis, $filterType)
|
||||
{
|
||||
if ($filterType === 'group' && !empty($devis['group_name'])) {
|
||||
return [
|
||||
'name' => 'Groupe ' . $devis['group_name'],
|
||||
'address' => $devis['group_address'],
|
||||
'city' => $devis['group_postal_code'] . ' ' . $devis['group_city'],
|
||||
'siret' => $devis['group_siret_number'],
|
||||
'email' => $devis['group_email']
|
||||
];
|
||||
} else {
|
||||
$clientAddresses = \OCA\Gestion\Helpers\FileExportHelpers::GetAddressAndCityFromAddress($devis['client_adresse']);
|
||||
return [
|
||||
'name' => $devis['client_nom'],
|
||||
'address' => $clientAddresses['address'],
|
||||
'city' => $clientAddresses['city'],
|
||||
'siret' => '',
|
||||
'email' => ''
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
public function generateCsvContent($devisData)
|
||||
{
|
||||
$headers = [
|
||||
'Numéro Devis',
|
||||
'Date',
|
||||
'Client Nom',
|
||||
'Client Entreprise',
|
||||
'Défunt',
|
||||
'Lieu',
|
||||
'Article',
|
||||
'Thanatopracteur',
|
||||
'Commentaire',
|
||||
'N° Dossier', // case_number
|
||||
'N° Commande' // order_number
|
||||
];
|
||||
|
||||
$csvContent = $this->arrayToCsv($headers);
|
||||
|
||||
foreach ($devisData as $devis) {
|
||||
$row = [
|
||||
$devis['devis_full_number'] ?? '',
|
||||
$devis['devis_date'] ?? '',
|
||||
$devis['client_nom'] ?? '',
|
||||
$devis['client_entreprise'] ?? '',
|
||||
$devis['defunt_nom'] ?? '',
|
||||
$devis['lieu_nom'] ?? '',
|
||||
$devis['article'] ?? 'SOINS',
|
||||
trim(($devis['thanato_nom'] ?? '') . ' ' . ($devis['thanato_prenom'] ?? '')),
|
||||
$devis['devis_comment'] ?? '',
|
||||
$devis['case_number'] ?? '', // NOUVEAU
|
||||
$devis['order_number'] ?? '' // NOUVEAU
|
||||
];
|
||||
|
||||
$csvContent .= $this->arrayToCsv($row);
|
||||
}
|
||||
|
||||
return $csvContent;
|
||||
}
|
||||
|
||||
public function getClientNameForFolder($firstDevis, $filterType)
|
||||
{
|
||||
if ($filterType === MultipleFactureTypeConstant::GROUP_FILTER_TYPE && !empty($firstDevis["group_name"])) {
|
||||
return $firstDevis["group_name"];
|
||||
}
|
||||
|
||||
return $firstDevis["client_nom"] ?? 'CLIENT_INCONNU';
|
||||
}
|
||||
|
||||
public function getRecapFilename($month, $year)
|
||||
{
|
||||
$monthStr = str_pad($month, 2, '0', STR_PAD_LEFT);
|
||||
return $year . $monthStr;
|
||||
}
|
||||
|
||||
private function arrayToCsv($array)
|
||||
{
|
||||
$output = fopen('php://temp', 'r+');
|
||||
fputcsv($output, $array, ';');
|
||||
rewind($output);
|
||||
$csvLine = fgets($output);
|
||||
fclose($output);
|
||||
|
||||
return $csvLine;
|
||||
}
|
||||
}
|
||||
169
gestion/lib/Service/Devis/DevisPdfGenerator.php
Normal file
169
gestion/lib/Service/Devis/DevisPdfGenerator.php
Normal file
@ -0,0 +1,169 @@
|
||||
<?php
|
||||
|
||||
namespace OCA\Gestion\Service\Devis;
|
||||
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCP\Files\NotPermittedException;
|
||||
|
||||
class DevisPdfGenerator
|
||||
{
|
||||
/** @var IRootFolder */
|
||||
private $rootFolder;
|
||||
|
||||
/** @var DevisPdfLayoutManager */
|
||||
private $layoutManager;
|
||||
|
||||
/** @var DevisPdfTableRenderer */
|
||||
private $tableRenderer;
|
||||
|
||||
public const DEFAULT_NEXTCLOUD_ADMIN = 'admin';
|
||||
|
||||
public function __construct(IRootFolder $rootFolder)
|
||||
{
|
||||
$this->rootFolder = $rootFolder;
|
||||
$this->layoutManager = new DevisPdfLayoutManager($rootFolder);
|
||||
$this->tableRenderer = new DevisPdfTableRenderer();
|
||||
}
|
||||
|
||||
public function generatePdfDocument($storage, $currentConfig, $data_devis, $clientInfo, $month, $year, $montant)
|
||||
{
|
||||
$configurationAddresses = \OCA\Gestion\Helpers\FileExportHelpers::GetAddressAndCityFromAddress($currentConfig->adresse);
|
||||
$configurationAddress = $configurationAddresses["address"];
|
||||
$configurationAddressCity = $configurationAddresses["city"];
|
||||
|
||||
$pdf = $this->createPdfInstance();
|
||||
$folderPath = $this->createDestinationFolder($storage, $currentConfig, $data_devis[0], $month, $year);
|
||||
|
||||
// Créer le contexte une seule fois
|
||||
$context = new PageContext($pdf, $currentConfig, $configurationAddress, $configurationAddressCity, $data_devis, $clientInfo, $year, $montant);
|
||||
|
||||
$this->generatePdfPages($context);
|
||||
|
||||
return $this->savePdfFile($storage, $pdf, $folderPath, $clientInfo, $month, $year);
|
||||
}
|
||||
|
||||
public function createPdfInstance()
|
||||
{
|
||||
$pdf = new \FPDF();
|
||||
$pdf->AddFont('Arial', '', 'Comic Sans MS.php');
|
||||
$pdf->AddFont('Arial', 'B', 'comic-sans-bold.php');
|
||||
return $pdf;
|
||||
}
|
||||
|
||||
public function createDestinationFolder($storage, $currentConfig, $firstDevis, $month, $year)
|
||||
{
|
||||
$date_temp = date("t-m-Y", strtotime($firstDevis['devis_date']));
|
||||
$formatter = new \IntlDateFormatter('fr_FR', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE);
|
||||
$date_formated = $formatter->format(\DateTime::createFromFormat('d-m-Y', $date_temp));
|
||||
|
||||
$folderPath = html_entity_decode($currentConfig->path) . '/DOCUMENTS RECAPITULATIFS/' . $year . '/' .
|
||||
str_pad($month, 2, '0', STR_PAD_LEFT) . ' ' .
|
||||
strtoupper(\OCA\Gestion\Helpers\FileExportHelpers::ConvertSpecialChar(explode(' ', $date_formated)[1])) . '/';
|
||||
|
||||
try {
|
||||
$storage->newFolder($folderPath);
|
||||
} catch(NotPermittedException $e) {
|
||||
// Le dossier existe déjà
|
||||
}
|
||||
|
||||
return $folderPath;
|
||||
}
|
||||
|
||||
private function generatePdfPages(PageContext $context)
|
||||
{
|
||||
$pagination = $this->calculatePagination(count($context->dataDevis));
|
||||
$totals = ['ht' => 0, 'tva' => 0, 'ttc' => 0];
|
||||
|
||||
for ($num_page = 1; $num_page <= $pagination['nb_pages']; $num_page++) {
|
||||
$this->generateSinglePage($context, $num_page, $pagination, $totals);
|
||||
}
|
||||
}
|
||||
|
||||
private function calculatePagination($totalItems)
|
||||
{
|
||||
if ($totalItems <= 8) {
|
||||
// Tout sur 1 page
|
||||
return [
|
||||
'nb_pages' => 1,
|
||||
'items_per_page' => 15,
|
||||
'current_index' => 0
|
||||
];
|
||||
}
|
||||
|
||||
// Réserver 8 items pour dernière page
|
||||
$itemsAvantDernierePage = $totalItems - 8;
|
||||
$nbPagesNormales = ceil($itemsAvantDernierePage / 15);
|
||||
|
||||
return [
|
||||
'nb_pages' => $nbPagesNormales + 1,
|
||||
'items_per_page' => 15,
|
||||
'current_index' => 0
|
||||
];
|
||||
}
|
||||
|
||||
private function generateSinglePage(PageContext $context, $num_page, &$pagination, &$totals)
|
||||
{
|
||||
$startIndex = $pagination['current_index'];
|
||||
$remainingItems = count($context->dataDevis) - $startIndex;
|
||||
|
||||
$context->pdf->AddPage();
|
||||
$context->pdf->SetAutoPagebreak(false);
|
||||
$context->pdf->SetMargins(0, 0, 10);
|
||||
|
||||
$this->layoutManager->addPageHeader($context->pdf, $context->currentConfig, $context->configurationAddress, $context->configurationAddressCity);
|
||||
$this->layoutManager->addPageNumber($context->pdf, $num_page, $pagination['nb_pages']);
|
||||
$this->layoutManager->addClientInfoSection($context->pdf, $context->clientInfo, $context->dataDevis[0]);
|
||||
$this->layoutManager->addDocumentTitle($context->pdf, $context->dataDevis[0], $context->year);
|
||||
|
||||
// ✅ Calculer items
|
||||
$isLastPage = ($num_page == $pagination['nb_pages']);
|
||||
$hasAmounts = !$context->montant;
|
||||
|
||||
if ($isLastPage && $hasAmounts) {
|
||||
// Dernière page avec totaux : max 8 items
|
||||
$itemsToProcess = min(8, $remainingItems);
|
||||
} else {
|
||||
// Pages normales : 15 items
|
||||
$itemsToProcess = min(15, $remainingItems);
|
||||
}
|
||||
|
||||
$config = [
|
||||
'pagination' => $pagination,
|
||||
'itemsToProcess' => $itemsToProcess,
|
||||
'numPage' => $num_page,
|
||||
'nbPage' => $pagination['nb_pages'],
|
||||
'totals' => &$totals,
|
||||
'sansMontant' => $context->montant
|
||||
];
|
||||
|
||||
$finalY = $this->tableRenderer->createDevisTable(
|
||||
$context->pdf,
|
||||
$context->dataDevis,
|
||||
$config
|
||||
);
|
||||
|
||||
$this->layoutManager->addLegalFooter($context->pdf, $context->currentConfig);
|
||||
$pagination['current_index'] += $itemsToProcess;
|
||||
}
|
||||
|
||||
private function savePdfFile($storage, $pdf, $folderPath, $clientInfo, $month, $year)
|
||||
{
|
||||
$filename = $this->generateDevisRecapFilename($clientInfo, $month, $year);
|
||||
$fullPdfPath = $folderPath . $filename . '.pdf';
|
||||
|
||||
$storage->newFile($fullPdfPath);
|
||||
$pdfContent = $pdf->Output('', 'S');
|
||||
$file_pdf = $storage->get($fullPdfPath);
|
||||
$file_pdf->putContent($pdfContent);
|
||||
|
||||
return $fullPdfPath;
|
||||
}
|
||||
|
||||
private function generateDevisRecapFilename($clientInfo, $month, $year)
|
||||
{
|
||||
$monthName = strtoupper(\OCA\Gestion\Helpers\FileExportHelpers::ConvertSpecialChar(date('F', mktime(0, 0, 0, $month, 10))));
|
||||
$clientName = strtoupper(\OCA\Gestion\Helpers\FileExportHelpers::ConvertSpecialChar($clientInfo['name']));
|
||||
|
||||
return $clientName . '_RECAP_DEVIS_' . $monthName . '_' . $year;
|
||||
}
|
||||
}
|
||||
156
gestion/lib/Service/Devis/DevisPdfLayoutManager.php
Normal file
156
gestion/lib/Service/Devis/DevisPdfLayoutManager.php
Normal file
@ -0,0 +1,156 @@
|
||||
<?php
|
||||
|
||||
namespace OCA\Gestion\Service\Devis;
|
||||
|
||||
use OCP\Files\IRootFolder;
|
||||
|
||||
class DevisPdfLayoutManager
|
||||
{
|
||||
/** @var IRootFolder */
|
||||
private $rootFolder;
|
||||
|
||||
private $defaultImagePath = "/var/www/html/data/admin/files/.gestion/";
|
||||
|
||||
public const DEFAULT_NEXTCLOUD_ADMIN = 'admin';
|
||||
|
||||
public function __construct(IRootFolder $rootFolder)
|
||||
{
|
||||
$this->rootFolder = $rootFolder;
|
||||
}
|
||||
|
||||
public function addPageHeader($pdf, $config, $address, $city)
|
||||
{
|
||||
if ($this->doesLogoExist()) {
|
||||
$pdf->Image($this->defaultImagePath."logo.png", 10, 10, 25, 0);
|
||||
}
|
||||
$this->addCompanyInfo($pdf, $config, $address, $city);
|
||||
}
|
||||
|
||||
public function addPageNumber($pdf, $currentPage, $totalPages)
|
||||
{
|
||||
if ($totalPages > 1) {
|
||||
$pdf->SetXY(120, 5);
|
||||
$pdf->SetFont("Arial", "B", 9);
|
||||
$pdf->Cell(160, 8, $currentPage . '/' . $totalPages, 0, 0, 'C');
|
||||
}
|
||||
}
|
||||
|
||||
public function addClientInfoSection($pdf, $clientInfo, $firstDevis)
|
||||
{
|
||||
$date_temp = date("t-m-Y", strtotime($firstDevis['devis_date']));
|
||||
$formatter = new \IntlDateFormatter('fr_FR', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE);
|
||||
$date_formated = $formatter->format(\DateTime::createFromFormat('d-m-Y', $date_temp));
|
||||
|
||||
$this->addClientInfo($pdf, $clientInfo, $date_formated);
|
||||
}
|
||||
|
||||
public function addDocumentTitle($pdf, $firstDevis, $year)
|
||||
{
|
||||
$date_temp = date("t-m-Y", strtotime($firstDevis['devis_date']));
|
||||
$formatter = new \IntlDateFormatter('fr_FR', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE);
|
||||
$date_formated = $formatter->format(\DateTime::createFromFormat('d-m-Y', $date_temp));
|
||||
|
||||
$pdf->SetFont("Arial", "B", 14);
|
||||
$pdf->SetXY(10, 90);
|
||||
$pdf->Cell(
|
||||
0,
|
||||
10,
|
||||
"RECAPITULATIF DEVIS " .
|
||||
strtoupper(\OCA\Gestion\Helpers\FileExportHelpers::ConvertSpecialChar(explode(' ', $date_formated)[1])) . " " . $year,
|
||||
0,
|
||||
0,
|
||||
'C'
|
||||
);
|
||||
}
|
||||
|
||||
public function addLegalFooter($pdf, $config, $tableEndY = 0)
|
||||
{
|
||||
$y0 = 280;
|
||||
|
||||
$pageWidth = $pdf->GetPageWidth();
|
||||
|
||||
$pdf->SetFont('Arial', '', 6);
|
||||
$pdf->SetXY(1, $y0);
|
||||
$pdf->Cell($pageWidth, 5, mb_convert_encoding(html_entity_decode($config->legal_one), 'ISO-8859-1', 'UTF-8'), 0, 0, 'C');
|
||||
$pdf->SetXY(1, $y0 + 4);
|
||||
$pdf->Cell($pageWidth, 5, mb_convert_encoding(html_entity_decode($config->legal_two), 'ISO-8859-1', 'UTF-8'), 0, 0, 'C');
|
||||
$pdf->SetXY(1, $y0 + 8);
|
||||
$pdf->Cell($pageWidth, 5, mb_convert_encoding(html_entity_decode($config->telephone), 'ISO-8859-1', 'UTF-8'), 0, 0, 'C');
|
||||
}
|
||||
|
||||
private function addCompanyInfo($pdf, $config, $address, $city)
|
||||
{
|
||||
$companyInfoXAxis = 10;
|
||||
$companyInfoYAxis = 40;
|
||||
|
||||
$pdf->SetFont('Arial', '', 11);
|
||||
$pdf->SetXY($companyInfoXAxis, $companyInfoYAxis);
|
||||
$pdf->Cell(0, 7, \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($config->entreprise));
|
||||
|
||||
$companyInfoYAxis += 7;
|
||||
$pdf->SetXY($companyInfoXAxis, $companyInfoYAxis);
|
||||
$pdf->Cell(0, 7, \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($address));
|
||||
|
||||
$companyInfoYAxis += 7;
|
||||
$pdf->SetXY($companyInfoXAxis, $companyInfoYAxis);
|
||||
$pdf->Cell(0, 7, \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($city));
|
||||
|
||||
$companyInfoYAxis += 7;
|
||||
$pdf->SetXY($companyInfoXAxis, $companyInfoYAxis);
|
||||
$pdf->Cell(0, 7, mb_convert_encoding(html_entity_decode('Tél : '), 'ISO-8859-1', 'UTF-8') . \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($config->telephone));
|
||||
|
||||
$companyInfoYAxis += 7;
|
||||
$pdf->SetXY($companyInfoXAxis, $companyInfoYAxis);
|
||||
$pdf->Cell(0, 7, 'Mail : ' . $config->mail);
|
||||
}
|
||||
|
||||
private function addClientInfo($pdf, $clientInfo, $dateFormatted)
|
||||
{
|
||||
$clientInfoXAxis = 125;
|
||||
$clientInfoYAxis = 40;
|
||||
|
||||
$pdf->SetFont('Arial', '', 11);
|
||||
$pdf->SetXY($clientInfoXAxis, $clientInfoYAxis);
|
||||
$pdf->Cell(0, 7, mb_convert_encoding($clientInfo['name'], 'ISO-8859-1', 'UTF-8'));
|
||||
|
||||
$clientInfoYAxis += 7;
|
||||
$pdf->SetXY($clientInfoXAxis, $clientInfoYAxis);
|
||||
$pdf->SetMargins(0, 0, 10);
|
||||
$pdf->MultiCell(0, 7, trim(\OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($clientInfo['address'])));
|
||||
$pdf->SetMargins(0, 0, 0);
|
||||
|
||||
$clientInfoYAxis += 7;
|
||||
$pdf->SetXY($clientInfoXAxis, $clientInfoYAxis);
|
||||
$pdf->Cell(0, 7, trim(mb_convert_encoding(html_entity_decode($clientInfo['city']), 'ISO-8859-1', 'UTF-8')));
|
||||
|
||||
if (isset($clientInfo['siret']) && trim($clientInfo['siret']) !== '' && $clientInfo['siret'] !== null) {
|
||||
$clientInfoYAxis += 7;
|
||||
$pdf->SetXY($clientInfoXAxis, $clientInfoYAxis);
|
||||
$pdf->Cell(0, 7, 'Siret: ' . \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($clientInfo['siret']));
|
||||
}
|
||||
|
||||
if (isset($clientInfo['email']) && trim($clientInfo['email']) !== '' && $clientInfo['email'] !== null) {
|
||||
$clientInfoYAxis += 7;
|
||||
$pdf->SetXY($clientInfoXAxis, $clientInfoYAxis);
|
||||
$pdf->Cell(0, 7, 'Email: ' . mb_convert_encoding(html_entity_decode($clientInfo['email']), 'ISO-8859-1', 'UTF-8'));
|
||||
}
|
||||
|
||||
$clientInfoYAxis += 7;
|
||||
$pdf->SetXY($clientInfoXAxis, $clientInfoYAxis);
|
||||
$pdf->Cell(0, 7, "le " . mb_convert_encoding($dateFormatted, 'ISO-8859-1', 'UTF-8'));
|
||||
}
|
||||
|
||||
private function doesLogoExist()
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder(self::DEFAULT_NEXTCLOUD_ADMIN);
|
||||
try {
|
||||
if (isset($storage)) {
|
||||
$storage->get('/.gestion/logo.png');
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
} catch (\OCP\Files\NotFoundException $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
238
gestion/lib/Service/Devis/DevisPdfTableRenderer.php
Normal file
238
gestion/lib/Service/Devis/DevisPdfTableRenderer.php
Normal file
@ -0,0 +1,238 @@
|
||||
<?php
|
||||
|
||||
namespace OCA\Gestion\Service\Devis;
|
||||
|
||||
class DevisPdfTableRenderer
|
||||
{
|
||||
public function createDevisTable($pdf, $dataDevis, $config)
|
||||
{
|
||||
$pagination = $config['pagination'];
|
||||
$itemsToProcess = $config['itemsToProcess'];
|
||||
$numPage = $config['numPage'];
|
||||
$nbPage = $config['nbPage'];
|
||||
$totals = &$config['totals'];
|
||||
$sansMontant = $config['sansMontant'] ?? false;
|
||||
|
||||
$startIndex = $pagination['current_index'];
|
||||
$itemsThisPage = min($itemsToProcess, count($dataDevis) - $startIndex);
|
||||
|
||||
$tableEndY = $this->drawTableStructure($pdf, $numPage, $nbPage, $sansMontant, $itemsThisPage);
|
||||
$this->addTableHeaders($pdf, $sansMontant);
|
||||
$this->populateTableData($pdf, $dataDevis, $startIndex, $itemsThisPage, $totals, $sansMontant);
|
||||
|
||||
if ($numPage == $nbPage && !$sansMontant) {
|
||||
$finalY = $this->addTableTotals($pdf, $totals, $tableEndY);
|
||||
} else {
|
||||
$finalY = $tableEndY;
|
||||
}
|
||||
|
||||
return $finalY;
|
||||
}
|
||||
|
||||
private function drawTableStructure($pdf, $numPage, $nbPage, $sansMontant, $itemsOnPage)
|
||||
{
|
||||
$pdf->SetLineWidth(0.2);
|
||||
|
||||
$headerHeight = 10;
|
||||
$rowHeight = 10;
|
||||
|
||||
$tableHeight = $headerHeight + ($itemsOnPage * $rowHeight);
|
||||
$endY = 105 + $tableHeight;
|
||||
|
||||
$isLastPage = ($numPage == $nbPage);
|
||||
$hasAmounts = !$sansMontant;
|
||||
|
||||
if ($isLastPage && $hasAmounts) {
|
||||
// Dessiner 3 côtés seulement (haut, gauche, droite)
|
||||
$pdf->Line(5, 105, 205, 105); // Haut
|
||||
$pdf->Line(5, 105, 5, $endY); // Gauche
|
||||
$pdf->Line(205, 105, 205, $endY); // Droite
|
||||
// Pas de ligne du bas - elle sera tracée dans addTableTotals
|
||||
} else {
|
||||
// Dessiner rectangle complet
|
||||
$pdf->Rect(5, 105, 200, $tableHeight, "D");
|
||||
}
|
||||
|
||||
$pdf->Line(5, 115, 205, 115);
|
||||
|
||||
if (!$sansMontant) {
|
||||
$verticalLines = [24, 41, 58, 77, 102, 127, 147, 167, 178, 189];
|
||||
} else {
|
||||
$verticalLines = [27, 47, 67, 85, 110, 135, 160];
|
||||
}
|
||||
|
||||
foreach ($verticalLines as $x) {
|
||||
$pdf->Line($x, 105, $x, $endY);
|
||||
}
|
||||
|
||||
return $endY;
|
||||
}
|
||||
|
||||
private function addTableHeaders($pdf, $sansMontant)
|
||||
{
|
||||
$pdf->SetFont('Arial', 'B', 7);
|
||||
|
||||
if (!$sansMontant) {
|
||||
$headers = [
|
||||
[5, 19, "N° Devis"],
|
||||
[24, 17, "N° Dossier"],
|
||||
[41, 17, "N° Commande"],
|
||||
[58, 19, "Date"],
|
||||
[77, 25, "Article"],
|
||||
[102, 25, "Lieu du soin"],
|
||||
[127, 20, "Thanato"],
|
||||
[147, 20, "Défunt"],
|
||||
[167, 11, "H.T."],
|
||||
[178, 11, "TVA"],
|
||||
[189, 16, "T.T.C"]
|
||||
];
|
||||
} else {
|
||||
$headers = [
|
||||
[5, 22, "N° Devis"],
|
||||
[27, 20, "N° Dossier"],
|
||||
[47, 20, "N° Commande"],
|
||||
[67, 18, "Date"],
|
||||
[85, 25, "Article"],
|
||||
[110, 25, "Lieu du soin"],
|
||||
[135, 25, "Thanato"],
|
||||
[160, 45, "Défunt"]
|
||||
];
|
||||
}
|
||||
|
||||
foreach ($headers as $header) {
|
||||
$pdf->SetXY($header[0] + 1, 106);
|
||||
$pdf->Cell($header[1] - 2, 8, mb_convert_encoding($header[2], 'ISO-8859-1', 'UTF-8'), 0, 0, 'C');
|
||||
}
|
||||
}
|
||||
|
||||
private function populateTableData($pdf, $dataDevis, $startIndex, $itemsToProcess, &$totals, $sansMontant)
|
||||
{
|
||||
$formatterDate = new \IntlDateFormatter('fr_FR', \IntlDateFormatter::SHORT, \IntlDateFormatter::NONE);
|
||||
$formatterDate->setPattern('dd-MMM');
|
||||
|
||||
$yDevis = 115;
|
||||
|
||||
for ($i = $startIndex; $i < $startIndex + $itemsToProcess && $i < count($dataDevis); $i++) {
|
||||
$devis = $dataDevis[$i];
|
||||
$dateSoin = new \DateTime($devis['devis_date']);
|
||||
|
||||
$this->addTableRow($pdf, $devis, $formatterDate, $dateSoin, $yDevis, $sansMontant);
|
||||
|
||||
// Calculer les totaux seulement si on affiche les montants
|
||||
if (!$sansMontant) {
|
||||
$totals['ht'] += $devis['montant_htc'];
|
||||
$totals['tva'] += $devis['montant_tva'];
|
||||
$totals['ttc'] += $devis['montant_ttc'];
|
||||
}
|
||||
|
||||
$yDevis += 10;
|
||||
}
|
||||
}
|
||||
|
||||
private function addTableRow($pdf, $devis, $formatterDate, $dateSoin, $yDevis, $sansMontant)
|
||||
{
|
||||
$pdf->SetFont('Arial', '', 7);
|
||||
|
||||
$addSmartCell = function ($pdf, $x, $y, $width, $text, $align = 'L') use ($yDevis) {
|
||||
$textWidth = $pdf->GetStringWidth($text);
|
||||
$maxWidth = $width - 2;
|
||||
|
||||
if ($textWidth > $maxWidth && strlen($text) > 10) {
|
||||
$pdf->SetXY($x, $y);
|
||||
$pdf->MultiCell($width, 2.5, $text, 0, $align);
|
||||
} else {
|
||||
$pdf->SetXY($x, $y);
|
||||
$pdf->Cell($width, 5, $text, 0, 0, $align);
|
||||
}
|
||||
};
|
||||
|
||||
// Préparer le nom complet du thanatopracteur
|
||||
$thanatoNom = trim(($devis['thanato_prenom'] ?? '') . ' ' . ($devis['thanato_nom'] ?? ''));
|
||||
$thanatoNom = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($thanatoNom);
|
||||
|
||||
if (!$sansMontant) {
|
||||
$addSmartCell($pdf, 6, $yDevis, 18, $devis['devis_full_number']);
|
||||
$addSmartCell($pdf, 25, $yDevis, 16, $devis['case_number'] ?? '');
|
||||
$addSmartCell($pdf, 42, $yDevis, 16, $devis['order_number'] ?? '');
|
||||
|
||||
$addSmartCell($pdf, 59, $yDevis, 18, mb_convert_encoding($formatterDate->format($dateSoin), 'ISO-8859-1', 'UTF-8'));
|
||||
|
||||
$articleText = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($devis['article'] ?? 'SOINS');
|
||||
$addSmartCell($pdf, 78, $yDevis, 24, $articleText);
|
||||
|
||||
$lieuText = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($devis['lieu_nom'] ?? '');
|
||||
$addSmartCell($pdf, 103, $yDevis, 24, $lieuText);
|
||||
|
||||
// COLONNE Thanatopracteur (après Lieu du soin)
|
||||
$addSmartCell($pdf, 128, $yDevis, 19, $thanatoNom);
|
||||
|
||||
// COLONNE Défunt (après Thanato)
|
||||
$defuntText = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($devis['defunt_nom'] ?? '');
|
||||
$addSmartCell($pdf, 148, $yDevis, 19, $defuntText);
|
||||
|
||||
$addSmartCell($pdf, 168, $yDevis, 10, number_format($devis['montant_htc'], 2, '.', '') . chr(128), 'R');
|
||||
$addSmartCell($pdf, 179, $yDevis, 10, number_format($devis['montant_tva'], 2, '.', '') . chr(128), 'R');
|
||||
$addSmartCell($pdf, 190, $yDevis, 15, number_format($devis['montant_ttc'], 2, '.', '') . chr(128), 'R');
|
||||
} else {
|
||||
$addSmartCell($pdf, 6, $yDevis, 21, $devis['devis_full_number']);
|
||||
$addSmartCell($pdf, 28, $yDevis, 19, $devis['case_number'] ?? '');
|
||||
$addSmartCell($pdf, 48, $yDevis, 19, $devis['order_number'] ?? '');
|
||||
|
||||
$addSmartCell($pdf, 68, $yDevis, 17, mb_convert_encoding($formatterDate->format($dateSoin), 'ISO-8859-1', 'UTF-8'));
|
||||
|
||||
$articleText = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($devis['article'] ?? 'SOINS');
|
||||
$addSmartCell($pdf, 86, $yDevis, 24, $articleText);
|
||||
|
||||
$lieuText = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($devis['lieu_nom'] ?? '');
|
||||
$addSmartCell($pdf, 111, $yDevis, 24, $lieuText);
|
||||
|
||||
// COLONNE Thanatopracteur (après Lieu du soin)
|
||||
$addSmartCell($pdf, 136, $yDevis, 24, $thanatoNom);
|
||||
|
||||
// COLONNE Défunt (après Thanato)
|
||||
$defuntText = \OCA\Gestion\Helpers\FileExportHelpers::FormatTextForExport($devis['defunt_nom'] ?? '');
|
||||
$addSmartCell($pdf, 161, $yDevis, 44, $defuntText);
|
||||
}
|
||||
}
|
||||
|
||||
private function addTableTotals($pdf, $totals, $tableEndY)
|
||||
{
|
||||
$totalEndY = $tableEndY + 8;
|
||||
|
||||
$pdf->SetLineWidth(0.2);
|
||||
|
||||
// Juste les lignes horizontales haut et bas
|
||||
$pdf->Line(5, $tableEndY, 205, $tableEndY);
|
||||
$pdf->Line(5, $totalEndY, 205, $totalEndY);
|
||||
|
||||
$pdf->Line(5, $tableEndY, 5, $totalEndY);
|
||||
$pdf->Line(205, $tableEndY, 205, $totalEndY);
|
||||
|
||||
$pdf->SetFont('Arial', 'B', 8);
|
||||
|
||||
$pdf->SetXY(5, $tableEndY);
|
||||
$pdf->Cell(162, 8, 'TOTAL', 0, 0, 'C');
|
||||
|
||||
$pdf->SetXY(167, $tableEndY);
|
||||
$pdf->Cell(9, 8, number_format($totals['ht'], 2, '.', '') . chr(128), 0, 0, 'R');
|
||||
|
||||
$pdf->SetXY(181, $tableEndY);
|
||||
$pdf->Cell(9, 8, number_format($totals['tva'], 2, '.', '') . chr(128), 0, 0, 'R');
|
||||
|
||||
$pdf->SetXY(189, $tableEndY);
|
||||
$pdf->Cell(16, 8, number_format($totals['ttc'], 2, '.', '') . chr(128), 0, 0, 'R');
|
||||
|
||||
$cadreY = $totalEndY + 3;
|
||||
|
||||
$pdf->SetXY(170, $cadreY + 1);
|
||||
$pdf->Cell(19, 6, 'TOTAL TTC', 0, 0, 'C');
|
||||
|
||||
$pdf->SetXY(189, $cadreY + 1);
|
||||
$pdf->Cell(16, 6, number_format($totals['ttc'], 2, '.', '') . chr(128), 0, 0, 'C');
|
||||
|
||||
$pdf->Rect(170, $cadreY, 35, 8, 'D');
|
||||
$pdf->Line(189, $cadreY, 189, $cadreY + 8);
|
||||
|
||||
return $cadreY + 8;
|
||||
}
|
||||
}
|
||||
90
gestion/lib/Service/Devis/DevisRecapService.php
Normal file
90
gestion/lib/Service/Devis/DevisRecapService.php
Normal file
@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
namespace OCA\Gestion\Service\Devis;
|
||||
|
||||
use OCA\Gestion\Db\Bdd;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCA\Gestion\Constants\MultipleFactureTypeConstant;
|
||||
|
||||
/**
|
||||
* Service principal pour la génération des récapitulatifs de devis
|
||||
*/
|
||||
class DevisRecapService
|
||||
{
|
||||
/** @var Bdd */
|
||||
private $gestionBdd;
|
||||
|
||||
/** @var IRootFolder */
|
||||
private $rootFolder;
|
||||
|
||||
/** @var DevisDataProcessor */
|
||||
private $dataProcessor;
|
||||
|
||||
/** @var DevisPdfGenerator */
|
||||
private $pdfGenerator;
|
||||
|
||||
public const DEFAULT_NEXTCLOUD_ADMIN = 'admin';
|
||||
|
||||
public function __construct(
|
||||
Bdd $gestionBdd,
|
||||
IRootFolder $rootFolder,
|
||||
) {
|
||||
$this->gestionBdd = $gestionBdd;
|
||||
$this->rootFolder = $rootFolder;
|
||||
$this->dataProcessor = new DevisDataProcessor($gestionBdd);
|
||||
$this->pdfGenerator = new DevisPdfGenerator($rootFolder);
|
||||
}
|
||||
|
||||
public function generateDevisRecap($filter, $month, $year, $idNextCloud, $filterType, $montant)
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder($idNextCloud);
|
||||
$configs = json_decode($this->gestionBdd->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN));
|
||||
$currentConfig = $configs[0];
|
||||
|
||||
$devisData = $this->getDevisData($filter, $month, $year, $currentConfig, $filterType);
|
||||
|
||||
if (empty($devisData)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$processedData = $this->dataProcessor->prepareDevisData($devisData, $currentConfig, $filter, $idNextCloud);
|
||||
$clientInfo = $this->dataProcessor->getClientInfoForDevis($processedData[0], $filterType);
|
||||
|
||||
return $this->pdfGenerator->generatePdfDocument(
|
||||
$storage,
|
||||
$currentConfig,
|
||||
$processedData,
|
||||
$clientInfo,
|
||||
$month,
|
||||
$year,
|
||||
$montant
|
||||
);
|
||||
}
|
||||
|
||||
private function getDevisData($filter, $month, $year, $currentConfig, $filterType)
|
||||
{
|
||||
$isFilterByClient = $filterType === MultipleFactureTypeConstant::CLIENT_FILTER_TYPE;
|
||||
|
||||
if ($isFilterByClient) {
|
||||
return $this->gestionBdd->getDevisPdfDataByClientAndMonthYear($filter, $month, $year, $currentConfig);
|
||||
} else {
|
||||
return $this->gestionBdd->getDevisPdfDataByClientGroupFacturationAndMonthYear($filter, $month, $year, $currentConfig);
|
||||
}
|
||||
}
|
||||
|
||||
// Méthodes utilitaires conservées pour la compatibilité CSV
|
||||
public function generateCsvContent($devisData)
|
||||
{
|
||||
return $this->dataProcessor->generateCsvContent($devisData);
|
||||
}
|
||||
|
||||
public function getClientNameForFolder($firstDevis, $filterType)
|
||||
{
|
||||
return $this->dataProcessor->getClientNameForFolder($firstDevis, $filterType);
|
||||
}
|
||||
|
||||
public function getRecapFilename($month, $year)
|
||||
{
|
||||
return $this->dataProcessor->getRecapFilename($month, $year);
|
||||
}
|
||||
}
|
||||
32
gestion/lib/Service/Devis/PageContext.php
Normal file
32
gestion/lib/Service/Devis/PageContext.php
Normal file
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace OCA\Gestion\Service\Devis;
|
||||
|
||||
use OCP\Files\IRootFolder;
|
||||
|
||||
/**
|
||||
* Objet simple pour regrouper les paramètres de contexte
|
||||
*/
|
||||
class PageContext
|
||||
{
|
||||
public $pdf;
|
||||
public $currentConfig;
|
||||
public $configurationAddress;
|
||||
public $configurationAddressCity;
|
||||
public $dataDevis;
|
||||
public $clientInfo;
|
||||
public $year;
|
||||
public $montant;
|
||||
|
||||
public function __construct($pdf, $currentConfig, $configurationAddress, $configurationAddressCity, $dataDevis, $clientInfo, $year, $montant)
|
||||
{
|
||||
$this->pdf = $pdf;
|
||||
$this->currentConfig = $currentConfig;
|
||||
$this->configurationAddress = $configurationAddress;
|
||||
$this->configurationAddressCity = $configurationAddressCity;
|
||||
$this->dataDevis = $dataDevis;
|
||||
$this->clientInfo = $clientInfo;
|
||||
$this->year = $year;
|
||||
$this->montant = $montant;
|
||||
}
|
||||
}
|
||||
@ -31,7 +31,8 @@ use \FPDF;
|
||||
use OCA\Gestion\Helpers\FileExportHelpers;
|
||||
use OCA\Gestion\Helpers\PriceHelpers;
|
||||
|
||||
class DevisPdfHandler extends FPDF {
|
||||
class DevisPdfHandler extends FPDF
|
||||
{
|
||||
|
||||
private $multipleDevisData = [];
|
||||
private $devisData = [];
|
||||
@ -39,59 +40,62 @@ class DevisPdfHandler extends FPDF {
|
||||
private $logoPath = "/var/www/html/data/admin/files/.gestion/";
|
||||
function Header()
|
||||
{
|
||||
if($this->logo != "nothing"){
|
||||
$this->Image($this->logoPath."logo.png", 2, 2, 50,35);
|
||||
}
|
||||
else{
|
||||
$this->Cell(55,30,'');
|
||||
if ($this->logo != "nothing") {
|
||||
$this->Image($this->logoPath . "logo.png", 4, 2, 36, 37);
|
||||
} else {
|
||||
$this->Cell(55, 30, '');
|
||||
}
|
||||
}
|
||||
function Footer()
|
||||
{
|
||||
$this->SetY(-40);
|
||||
$this->SetFont('ComicSans', '', 7);
|
||||
$this->MultiCell(0,5,utf8_decode(html_entity_decode('Tout retard de paiement entraînera de plein droit une pénalité de retard de 3 fois le taux légal ( Loi 2008-776 du 4 août 2008) et une indemnité forfaitaire de 40 EUR pour frais de recouvrement sera appliquée.')));
|
||||
$this->SetFont('Arial', '', 7);
|
||||
$this->MultiCell(0, 5, utf8_decode(html_entity_decode('Tout retard de paiement entraînera de plein droit une pénalité de retard de 3 fois le taux légal ( Loi 2008-776 du 4 août 2008) et une indemnité forfaitaire de 40 EUR pour frais de recouvrement sera appliquée.')));
|
||||
$this->Ln(1);
|
||||
$this->MultiCell(0,5,utf8_decode(html_entity_decode('Si les frais de recouvrement sont supérieurs à ce montant forfaitaire, une indemnisation complémentaire sera due sur présentation de justificatifs ( articles L.441-3 et L.441-6 du code de commerce ).
|
||||
')));
|
||||
$this->MultiCell(0, 5, utf8_decode(html_entity_decode('Si les frais de recouvrement sont supérieurs à ce montant forfaitaire, une indemnisation complémentaire sera due sur présentation de justificatifs ( articles L.441-3 et L.441-6 du code de commerce ).
|
||||
')));
|
||||
|
||||
$this->SetY(-15);
|
||||
$this->SetFont('ComicSans', 'B', 8);
|
||||
$this->SetFont('Arial', 'B', 8);
|
||||
$this->Cell(0, 10, utf8_decode(html_entity_decode($this->devisData['configuration']->legal_one)), 0, 0, 'C');
|
||||
}
|
||||
|
||||
public function SetDevisPdfData(array $devisData,$logo = null){
|
||||
public function SetDevisPdfData(array $devisData, $logo = null)
|
||||
{
|
||||
$this->devisData = $devisData;
|
||||
$this->logo = $logo;
|
||||
}
|
||||
|
||||
public function SetMultipleDevisPdfData(array $multipleDevisData,$logo = null){
|
||||
public function SetMultipleDevisPdfData(array $multipleDevisData, $logo = null)
|
||||
{
|
||||
$this->multipleDevisData = $multipleDevisData;
|
||||
$this->logo = $logo;
|
||||
}
|
||||
|
||||
private function DrawDevisCompanyAndClientInfo(){
|
||||
private function DrawDevisCompanyAndClientInfo()
|
||||
{
|
||||
$this->SetY(40);
|
||||
$this->SetFont('ComicSans', '', 12);
|
||||
$this->SetFont('Arial', '', 12);
|
||||
$this->Cell(0, 7, FileExportHelpers::FormatTextForExport($this->devisData['configuration']->entreprise), 0, 0);
|
||||
$this->Cell(0, 7, FileExportHelpers::FormatTextForExport($this->devisData['client_nom']), 0, 1,'R');
|
||||
$this->Cell(0, 7, FileExportHelpers::FormatTextForExport($this->devisData['client_nom']), 0, 1, 'R');
|
||||
$this->Cell(0, 7, FileExportHelpers::FormatTextForExport($this->devisData['configuration_adresse']), 0, 0);
|
||||
$this->Cell(0, 7, trim(FileExportHelpers::FormatTextForExport($this->devisData['client_real_adress'])), 0, 1,'R');
|
||||
$this->Cell(0, 7, FileExportHelpers::FormatTextForExport($this->devisData['configuration_adresse_city']), 0, 0);border:
|
||||
$this->Cell(0, 7, trim(FileExportHelpers::FormatTextForExport($this->devisData['client_adress_city'])), 0, 1,'R');
|
||||
$this->Cell(0, 7, FileExportHelpers::FormatTextForExport('Tél : ') . FileExportHelpers::FormatTextForExport($this->devisData['configuration']->telephone),0,0);
|
||||
$this->Cell(0, 7, 'Siret: ' . $this->devisData['siret'], 0, 1,'R');
|
||||
$this->Cell(0, 7, trim(FileExportHelpers::FormatTextForExport($this->devisData['client_real_adress'])), 0, 1, 'R');
|
||||
$this->Cell(0, 7, FileExportHelpers::FormatTextForExport($this->devisData['configuration_adresse_city']), 0, 0);
|
||||
$this->Cell(0, 7, trim(FileExportHelpers::FormatTextForExport($this->devisData['client_adress_city'])), 0, 1, 'R');
|
||||
$this->Cell(0, 7, FileExportHelpers::FormatTextForExport('Tél : ') . FileExportHelpers::FormatTextForExport($this->devisData['configuration']->telephone), 0, 0);
|
||||
$this->Cell(0, 7, 'Siret: ' . $this->devisData['siret'], 0, 1, 'R');
|
||||
$this->Cell(0, 7, 'Mail : ' . $this->devisData['configuration']->mail, 0, 1);
|
||||
$this->Ln(3);
|
||||
}
|
||||
|
||||
private function DrawDevisInfoTable(){
|
||||
$this->SetFont('ComicSans', 'B', 11);
|
||||
private function DrawDevisInfoTable()
|
||||
{
|
||||
$this->SetFont('Arial', 'B', 11);
|
||||
$this->Cell(30, 7, 'DATE', 1, 0, 'C');
|
||||
$this->Cell(80, 7, 'CLIENT', 1, 0, 'C');
|
||||
$this->Cell(40, 7, 'DEVIS', 1, 1, 'C');
|
||||
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->Cell(30, 7, $this->devisData['devis_date'], 1, 0, 'C');
|
||||
$this->Cell(80, 7, utf8_decode(html_entity_decode($this->devisData['client_nom'])), 1, 0, 'C');
|
||||
$this->Cell(40, 7, $this->devisData['devis_full_number'], 1, 1, 'C');
|
||||
@ -99,122 +103,128 @@ class DevisPdfHandler extends FPDF {
|
||||
$this->Ln(8);
|
||||
}
|
||||
|
||||
private function DrawArticlesTable(){
|
||||
$this->SetLineWidth(0.1);
|
||||
private function DrawArticlesTable()
|
||||
{
|
||||
$this->SetLineWidth(0.1);
|
||||
$this->Rect(10, 105, 190, 100, "D");
|
||||
// cadre titre des colonnes
|
||||
$this->Line(10, 115, 200,115);
|
||||
$this->Line(10, 115, 200, 115);
|
||||
// les traits verticaux colonnes
|
||||
$this->Line(35, 105, 35, 205);
|
||||
$this->Line(135, 105, 135, 205);
|
||||
$this->Line(155, 105, 155, 205);
|
||||
$this->Line(135, 105, 135, 205);
|
||||
$this->Line(155, 105, 155, 205);
|
||||
$this->Line(175, 105, 175, 205);
|
||||
}
|
||||
|
||||
private function DrawArticlesTableHeader(){
|
||||
private function DrawArticlesTableHeader()
|
||||
{
|
||||
$tvaValue = $this->devisData["configuration"]->tva_default;
|
||||
$this->SetFont('ComicSans','',10);
|
||||
$this->SetXY( 10,106 );
|
||||
$this->Cell( 20, 8, "Date", 0, 0, 'C');
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->SetXY(10, 106);
|
||||
$this->Cell(20, 8, "Date", 0, 0, 'C');
|
||||
|
||||
$this->SetXY( 35,106 );
|
||||
$this->Cell( 100, 8, "Description", 0, 0, 'C');
|
||||
$this->SetXY(35, 106);
|
||||
$this->Cell(100, 8, "Description", 0, 0, 'C');
|
||||
|
||||
$this->SetXY( 135,106 );
|
||||
$this->Cell( 20, 8, "Prix Uni. HT", 0, 0, 'C');
|
||||
$this->SetXY(135, 106);
|
||||
$this->Cell(20, 8, "Prix Uni. HT", 0, 0, 'C');
|
||||
|
||||
$this->SetXY( 155,106 );
|
||||
$this->Cell( 20, 8, 'TVA ' . $tvaValue . '%', 0, 0, 'C');
|
||||
$this->SetXY(155, 106);
|
||||
$this->Cell(20, 8, 'TVA ' . $tvaValue . '%', 0, 0, 'C');
|
||||
|
||||
$this->SetXY( 175,106 );
|
||||
$this->Cell( 25, 8, "Prix Uni. TTC", 0, 0, 'C');
|
||||
$this->SetXY(175, 106);
|
||||
$this->Cell(25, 8, "Prix Uni. TTC", 0, 0, 'C');
|
||||
|
||||
}
|
||||
|
||||
public function DrawArticlesTableValueAndReturnTotalPrice(){
|
||||
$this->SetFont('ComicSans','',10);
|
||||
public function DrawArticlesTableValueAndReturnTotalPrice()
|
||||
{
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$tvaValue = $this->devisData["configuration"]->tva_default;
|
||||
$totalHt = 0;
|
||||
$totalTtc = 0;
|
||||
$totalTva = 0;
|
||||
$products = $this->devisData["products"];
|
||||
$yValue = 116;
|
||||
foreach($products as $product){
|
||||
foreach ($products as $product) {
|
||||
$valueHt = $product['produit_price'] * $product['quantite'];
|
||||
$valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt,$tvaValue);
|
||||
$totalHt+=$valueHt;
|
||||
$totalTtc+=$valueTtc;
|
||||
$valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt, $tvaValue);
|
||||
$totalHt += $valueHt;
|
||||
$totalTtc += $valueTtc;
|
||||
$productDescription = $product["produit_description"];
|
||||
$dateValue = "";
|
||||
if($product === end($products)){
|
||||
if ($product === end($products)) {
|
||||
$dateValue = $this->devisData['devis_date'];
|
||||
$productDescription .= " de " . FileExportHelpers::GetSexeLabel($this->devisData['defunt_sexe']) . ' '. $this->devisData["defunt_nom"];
|
||||
$productDescription .= " de " . FileExportHelpers::GetSexeLabel($this->devisData['defunt_sexe']) . ' ' . $this->devisData["defunt_nom"];
|
||||
}
|
||||
$tvaAmount = $valueTtc - $valueHt;
|
||||
$this->SetXY( 10,$yValue );
|
||||
$this->Cell(20, 6, $dateValue, 0,0);
|
||||
$this->SetXY(10, $yValue);
|
||||
$this->Cell(20, 6, $dateValue, 0, 0);
|
||||
|
||||
$this->SetXY( 35,$yValue );
|
||||
$this->MultiAlignCell(100, 6, utf8_decode(html_entity_decode($productDescription)),0,'0',);
|
||||
$this->SetXY(35, $yValue);
|
||||
$this->MultiAlignCell(100, 6, utf8_decode(html_entity_decode($productDescription)), 0, '0', );
|
||||
|
||||
$this->SetXY( 135,$yValue );
|
||||
$this->Cell(20, 6, number_format($valueHt,2,'.','').chr(128), 0, 0, 'C');
|
||||
|
||||
$this->SetXY( 155,$yValue );
|
||||
$this->Cell(20, 6, number_format($tvaAmount,2,'.','').chr(128), 0, 0, 'C');
|
||||
|
||||
$this->SetXY( 175,$yValue );
|
||||
$this->Cell(25, 6, number_format($valueTtc,2,'.','').chr(128), 0, 1, 'C');
|
||||
$this->SetXY(135, $yValue);
|
||||
$this->Cell(20, 6, number_format($valueHt, 2, '.', '') . chr(128), 0, 0, 'C');
|
||||
|
||||
$this->SetXY(155, $yValue);
|
||||
$this->Cell(20, 6, number_format($tvaAmount, 2, '.', '') . chr(128), 0, 0, 'C');
|
||||
|
||||
$this->SetXY(175, $yValue);
|
||||
$this->Cell(25, 6, number_format($valueTtc, 2, '.', '') . chr(128), 0, 1, 'C');
|
||||
$yValue += 12;
|
||||
$totalTva += $tvaAmount;
|
||||
}
|
||||
|
||||
return [
|
||||
"TOTAL HT" => $totalHt,
|
||||
"TVA ".$tvaValue. "%" => $totalTva,
|
||||
"TVA " . $tvaValue . "%" => $totalTva,
|
||||
"TOTAL TTC" => $totalTtc
|
||||
];
|
||||
}
|
||||
|
||||
private function DrawBankAndTotalPriceInfo($totalPriceArray){
|
||||
private function DrawBankAndTotalPriceInfo($totalPriceArray)
|
||||
{
|
||||
$this->SetY(210);
|
||||
$this->SetFont('ComicSans', '', 9);
|
||||
$this->MultiCell(0,5,utf8_decode(html_entity_decode("Paiement à votre convenance par chèque à l'ordre de ". $this->devisData['configuration']->entreprise)));
|
||||
$this->MultiCell(0,5,utf8_decode(html_entity_decode("en indiquant le numéro de facture, ou par virement :")));
|
||||
$this->SetFont('Arial', '', 9);
|
||||
$this->MultiCell(0, 5, utf8_decode(html_entity_decode("Paiement à votre convenance par chèque à l'ordre de " . $this->devisData['configuration']->entreprise)));
|
||||
$this->MultiCell(0, 5, utf8_decode(html_entity_decode("en indiquant le numéro de facture, ou par virement :")));
|
||||
|
||||
$this->Ln(1);
|
||||
|
||||
|
||||
//Table IBAN
|
||||
$this->SetFont('ComicSans', '', 11);
|
||||
$this->SetFont('Arial', '', 11);
|
||||
$ibanWidth = 90;
|
||||
$ibanCursorY = $this->GetY();
|
||||
$this->Cell($ibanWidth, 7, 'IBAN : FR76 1360 6000 1436 5418 1800 038', 1, 1, 'C');
|
||||
$this->Cell($ibanWidth, 7, 'IBAN : FR76 1080 7004 4952 4211 5185 411', 1, 1, 'C');
|
||||
$ibanCursorX = $this->GetX();
|
||||
$this->Cell($ibanWidth, 7, 'Code SWIFT : AGRI FR PP 836', 1, 1, 'C');
|
||||
|
||||
//TABLE HT
|
||||
$ibanLastPositionX = $ibanCursorX+$ibanWidth + 20;
|
||||
$ibanLastPositionX = $ibanCursorX + $ibanWidth + 20;
|
||||
$startOfArrayX = $ibanLastPositionX;
|
||||
$startOfArrayY = $ibanCursorY;
|
||||
foreach($totalPriceArray as $label => $price){
|
||||
$this->SetXY($startOfArrayX,$startOfArrayY);
|
||||
foreach ($totalPriceArray as $label => $price) {
|
||||
$this->SetXY($startOfArrayX, $startOfArrayY);
|
||||
$this->Cell(40, 7, $label, 1, 1, 'C');
|
||||
$this->SetXY($startOfArrayX + 40,$startOfArrayY);
|
||||
$this->Cell(40, 7, number_format($price,2,'.','').chr(128), 1, 1, 'C');
|
||||
$this->SetXY($startOfArrayX + 40, $startOfArrayY);
|
||||
$this->Cell(40, 7, number_format($price, 2, '.', '') . chr(128), 1, 1, 'C');
|
||||
$startOfArrayY += 7;
|
||||
}
|
||||
}
|
||||
|
||||
public function SetMultipleDevisContent(){
|
||||
foreach($this->multipleDevisData as $devisData){
|
||||
public function SetMultipleDevisContent()
|
||||
{
|
||||
foreach ($this->multipleDevisData as $devisData) {
|
||||
$this->devisData = $devisData;
|
||||
$this->SetDevisContent();
|
||||
}
|
||||
}
|
||||
|
||||
public function SetDevisContent(){
|
||||
public function SetDevisContent()
|
||||
{
|
||||
$this->AddPage();
|
||||
$this->SetMargins(10,0,10);
|
||||
$this->SetMargins(10, 0, 10);
|
||||
$this->DrawDevisCompanyAndClientInfo();
|
||||
$this->DrawDevisInfoTable();
|
||||
$this->DrawArticlesTable();
|
||||
@ -223,45 +233,42 @@ class DevisPdfHandler extends FPDF {
|
||||
$this->DrawBankAndTotalPriceInfo($totalPriceValue);
|
||||
}
|
||||
|
||||
function MultiAlignCell($w,$h,$text,$border=0,$ln=0,$align='L',$fill=false)
|
||||
{
|
||||
// Store reset values for (x,y) positions
|
||||
$x = $this->GetX() + $w;
|
||||
$y = $this->GetY();
|
||||
function MultiAlignCell($w, $h, $text, $border = 0, $ln = 0, $align = 'L', $fill = false)
|
||||
{
|
||||
// Store reset values for (x,y) positions
|
||||
$x = $this->GetX() + $w;
|
||||
$y = $this->GetY();
|
||||
|
||||
// Make a call to FPDF's MultiCell
|
||||
$this->MultiCell($w,$h,$text,$border,$align,$fill);
|
||||
// Make a call to FPDF's MultiCell
|
||||
$this->MultiCell($w, $h, $text, $border, $align, $fill);
|
||||
|
||||
// Reset the line position to the right, like in Cell
|
||||
if( $ln==0 )
|
||||
{
|
||||
$this->SetXY($x,$y);
|
||||
}
|
||||
}
|
||||
// Reset the line position to the right, like in Cell
|
||||
if ($ln == 0) {
|
||||
$this->SetXY($x, $y);
|
||||
}
|
||||
}
|
||||
|
||||
function NbLines($w, $txt)
|
||||
function NbLines($w, $txt)
|
||||
{
|
||||
// Compute the number of lines a MultiCell of width w will take
|
||||
if(!isset($this->CurrentFont))
|
||||
if (!isset($this->CurrentFont))
|
||||
$this->Error('No font has been set');
|
||||
$cw = $this->CurrentFont['cw'];
|
||||
if($w==0)
|
||||
$w = $this->w-$this->rMargin-$this->x;
|
||||
$wmax = ($w-2*$this->cMargin)*1000/$this->FontSize;
|
||||
$s = str_replace("\r",'',(string)$txt);
|
||||
if ($w == 0)
|
||||
$w = $this->w - $this->rMargin - $this->x;
|
||||
$wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
|
||||
$s = str_replace("\r", '', (string) $txt);
|
||||
$nb = strlen($s);
|
||||
if($nb>0 && $s[$nb-1]=="\n")
|
||||
if ($nb > 0 && $s[$nb - 1] == "\n")
|
||||
$nb--;
|
||||
$sep = -1;
|
||||
$i = 0;
|
||||
$j = 0;
|
||||
$l = 0;
|
||||
$nl = 1;
|
||||
while($i<$nb)
|
||||
{
|
||||
while ($i < $nb) {
|
||||
$c = $s[$i];
|
||||
if($c=="\n")
|
||||
{
|
||||
if ($c == "\n") {
|
||||
$i++;
|
||||
$sep = -1;
|
||||
$j = $i;
|
||||
@ -269,24 +276,20 @@ class DevisPdfHandler extends FPDF {
|
||||
$nl++;
|
||||
continue;
|
||||
}
|
||||
if($c==' ')
|
||||
if ($c == ' ')
|
||||
$sep = $i;
|
||||
$l += $cw[$c];
|
||||
if($l>$wmax)
|
||||
{
|
||||
if($sep==-1)
|
||||
{
|
||||
if($i==$j)
|
||||
if ($l > $wmax) {
|
||||
if ($sep == -1) {
|
||||
if ($i == $j)
|
||||
$i++;
|
||||
}
|
||||
else
|
||||
$i = $sep+1;
|
||||
} else
|
||||
$i = $sep + 1;
|
||||
$sep = -1;
|
||||
$j = $i;
|
||||
$l = 0;
|
||||
$nl++;
|
||||
}
|
||||
else
|
||||
} else
|
||||
$i++;
|
||||
}
|
||||
return $nl;
|
||||
|
||||
@ -24,7 +24,8 @@ declare(strict_types=1);
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Gestion\Service\Devis\Pdf;
|
||||
namespace OCA\Gestion\Service\Devis\Pdf;
|
||||
require_once __DIR__ . '/../../../../vendor/autoload.php';
|
||||
|
||||
use DateTime;
|
||||
use OCA\Gestion\Constants\DevisExportTypeConstant;
|
||||
@ -33,58 +34,63 @@ use OCA\Gestion\Helpers\DateHelpers;
|
||||
use OCA\Gestion\Helpers\FileExportHelpers;
|
||||
use OCP\Files\IRootFolder;
|
||||
|
||||
class DevisPdfService {
|
||||
/** @var Bdd */
|
||||
private $gestionBdd;
|
||||
class DevisPdfService
|
||||
{
|
||||
/** @var Bdd */
|
||||
private $gestionBdd;
|
||||
|
||||
/** @var IRootFolder */
|
||||
private $rootFolder;
|
||||
private $rootFolder;
|
||||
|
||||
private const DEFAULT_NEXTCLOUD_ADMIN = "admin";
|
||||
public function __construct(
|
||||
Bdd $gestionBdd,
|
||||
IRootFolder $rootFolder) {
|
||||
public function __construct(
|
||||
Bdd $gestionBdd,
|
||||
IRootFolder $rootFolder
|
||||
) {
|
||||
$this->gestionBdd = $gestionBdd;
|
||||
$this->rootFolder = $rootFolder;
|
||||
}
|
||||
|
||||
private function getLogo(){
|
||||
$storage = $this->rootFolder->getUserFolder(self::DEFAULT_NEXTCLOUD_ADMIN);
|
||||
try{
|
||||
try {
|
||||
if(isset($storage)){
|
||||
$file = $storage->get('/.gestion/logo.png');
|
||||
}else{
|
||||
return "nothing";
|
||||
}
|
||||
} catch(\OCP\Files\NotFoundException $e) {
|
||||
$file = $storage->get('/.gestion/logo.jpeg');
|
||||
}
|
||||
}
|
||||
catch(\OCP\Files\NotFoundException $e) {
|
||||
return "nothing";
|
||||
}
|
||||
|
||||
return base64_encode($file->getContent());
|
||||
}
|
||||
|
||||
private function getDevisPdfFilename($devisData){
|
||||
$filename = "DEVIS-";
|
||||
$defuntNom = str_replace(' ',' ',$devisData['defunt_nom']);
|
||||
$devisLocation = str_replace(' ',' ',$devisData['lieu_nom']);
|
||||
return $filename.$defuntNom.'-'.$devisLocation;
|
||||
}
|
||||
|
||||
private function formatMultipleDevisToPdfFormat($multipleDevisData,$configuration){
|
||||
foreach($multipleDevisData as &$devis){
|
||||
$devis = $this->formatDevisDataToPdfDataFormat($devis,$configuration);
|
||||
private function getLogo()
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder(self::DEFAULT_NEXTCLOUD_ADMIN);
|
||||
try {
|
||||
try {
|
||||
if (isset($storage)) {
|
||||
$file = $storage->get('/.gestion/logo.png');
|
||||
} else {
|
||||
return "nothing";
|
||||
}
|
||||
} catch (\OCP\Files\NotFoundException $e) {
|
||||
$file = $storage->get('/.gestion/logo.jpeg');
|
||||
}
|
||||
} catch (\OCP\Files\NotFoundException $e) {
|
||||
return "nothing";
|
||||
}
|
||||
|
||||
return base64_encode($file->getContent());
|
||||
}
|
||||
|
||||
private function getDevisPdfFilename($devisData)
|
||||
{
|
||||
$filename = "DEVIS-";
|
||||
$defuntNom = str_replace(' ', ' ', $devisData['defunt_nom']);
|
||||
$devisLocation = str_replace(' ', ' ', $devisData['lieu_nom']);
|
||||
return $filename . $defuntNom . '-' . $devisLocation;
|
||||
}
|
||||
|
||||
private function formatMultipleDevisToPdfFormat($multipleDevisData, $configuration)
|
||||
{
|
||||
foreach ($multipleDevisData as &$devis) {
|
||||
$devis = $this->formatDevisDataToPdfDataFormat($devis, $configuration);
|
||||
}
|
||||
return $multipleDevisData;
|
||||
}
|
||||
|
||||
private function formatDevisDataToPdfDataFormat($devis,$configuration){
|
||||
private function formatDevisDataToPdfDataFormat($devis, $configuration)
|
||||
{
|
||||
$devisDate = $devis['devis_date'];
|
||||
$devisDate = DateTime::createFromFormat('Y-m-d',$devisDate);
|
||||
$devisDate = DateTime::createFromFormat('Y-m-d', $devisDate);
|
||||
$devisDate = $devisDate->format('d-m-Y');
|
||||
$devis['devis_date'] = $devisDate;
|
||||
$devis['configuration'] = $configuration;
|
||||
@ -102,33 +108,33 @@ class DevisPdfService {
|
||||
return $devis;
|
||||
}
|
||||
|
||||
public function generateDevisPdfByDevisId($devisId,$idNextCloud){
|
||||
public function generateDevisPdfByDevisId($devisId, $idNextCloud)
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder($idNextCloud);
|
||||
$configs = json_decode($this->gestionBdd->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN));
|
||||
$currentConfig = $configs[0];
|
||||
$logo = $this->getLogo();
|
||||
$devisPdfData = $this->gestionBdd->getDevisPdfDataByDevisId($devisId);
|
||||
if($devisPdfData == null){
|
||||
return null;
|
||||
}
|
||||
$devisPdfDataFormatted = $this->formatDevisDataToPdfDataFormat($devisPdfData,$currentConfig);
|
||||
$clean_folder = html_entity_decode(string: $currentConfig->path).'/';
|
||||
$devisPdfFolders = $this->getDevisPdfFolder($devisPdfDataFormatted,$clean_folder);
|
||||
$currentConfig = $configs[0];
|
||||
$logo = $this->getLogo();
|
||||
$devisPdfData = $this->gestionBdd->getDevisPdfDataByDevisId($devisId);
|
||||
if ($devisPdfData == null) {
|
||||
return null;
|
||||
}
|
||||
$devisPdfDataFormatted = $this->formatDevisDataToPdfDataFormat($devisPdfData, $currentConfig);
|
||||
$clean_folder = html_entity_decode(string: $currentConfig->path) . '/';
|
||||
$devisPdfFolders = $this->getDevisPdfFolder($devisPdfDataFormatted, $clean_folder);
|
||||
$pdf = new DevisPdfHandler();
|
||||
$pdf->AddFont('ComicSans','','Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans','B','comic-sans-bold.php');
|
||||
$pdf->SetDevisPdfData($devisPdfDataFormatted,$logo);
|
||||
$pdf->AddFont('ComicSans', '', 'Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans', 'B', 'comic-sans-bold.php');
|
||||
$pdf->SetDevisPdfData($devisPdfDataFormatted, $logo);
|
||||
$pdf->SetDevisContent();
|
||||
$pdfContent = $pdf->Output('','S');
|
||||
$pdfContent = $pdf->Output('', 'S');
|
||||
$pdfFilename = $this->getDevisPdfFilename($devisPdfDataFormatted);
|
||||
$filenames = [];
|
||||
foreach($devisPdfFolders as $folder){
|
||||
foreach ($devisPdfFolders as $folder) {
|
||||
try {
|
||||
$storage->newFolder($folder);
|
||||
}
|
||||
catch(\OCP\Files\NotPermittedException $e) {
|
||||
} catch (\OCP\Files\NotPermittedException $e) {
|
||||
}
|
||||
$ff_pdf = $folder.$pdfFilename.'.pdf';
|
||||
$ff_pdf = $folder . $pdfFilename . '.pdf';
|
||||
$storage->newFile($ff_pdf);
|
||||
$file_pdf = $storage->get($ff_pdf);
|
||||
$file_pdf->putContent($pdfContent);
|
||||
@ -136,71 +142,72 @@ class DevisPdfService {
|
||||
}
|
||||
return $filenames;
|
||||
}
|
||||
|
||||
private function getDevisPdfFolder(array $devisPdfData,$racinePath){
|
||||
$clientRacineFolder = $racinePath.'CLIENTS/'.strtoupper($devisPdfData["client_nom"]).'/';
|
||||
$defuntsFolder = $clientRacineFolder.'DEFUNTS/'.strtoupper($devisPdfData['defunt_nom']).'/'.'DEVIS'.'/';
|
||||
|
||||
private function getDevisPdfFolder(array $devisPdfData, $racinePath)
|
||||
{
|
||||
$clientRacineFolder = $racinePath . 'CLIENTS/' . strtoupper($devisPdfData["client_nom"]) . '/';
|
||||
$defuntsFolder = $clientRacineFolder . 'DEFUNTS/' . strtoupper($devisPdfData['defunt_nom']) . '/' . 'DEVIS' . '/';
|
||||
$devisDate = $devisPdfData['devis_date'];
|
||||
$devisDatetime = new DateTime($devisDate);
|
||||
$devisDateYear = $devisDatetime->format('Y');
|
||||
$devisMonth = DateHelpers::GetDateWithFormatDayAndMonthPlainString($devisPdfData['devis_date']);
|
||||
$devisByYearFolder = $clientRacineFolder."$devisDateYear".'/'.$devisMonth.'/'.'DEVIS'.'/';
|
||||
$devisByYearFolder = $clientRacineFolder . "$devisDateYear" . '/' . $devisMonth . '/' . 'DEVIS' . '/';
|
||||
return [
|
||||
$defuntsFolder,
|
||||
$devisByYearFolder
|
||||
];
|
||||
}
|
||||
/**
|
||||
* Genere simplement le dossier de defunt et client pour le devis pour le user connecter
|
||||
*/
|
||||
public function generateClientAndDefuntFolder($devisId,$idNextCloud){
|
||||
/**
|
||||
* Genere simplement le dossier de defunt et client pour le devis pour le user connecter
|
||||
*/
|
||||
public function generateClientAndDefuntFolder($devisId, $idNextCloud)
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder($idNextCloud);
|
||||
$configs = json_decode($this->gestionBdd->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN));
|
||||
$currentConfig = $configs[0];
|
||||
$devisPdfData = $this->gestionBdd->getDevisPdfDataByDevisId($devisId);
|
||||
if($devisPdfData == null){
|
||||
return null;
|
||||
}
|
||||
|
||||
$clean_folder = html_entity_decode(string: $currentConfig->path).'/';
|
||||
$devisPdfDataFormatted = $this->formatDevisDataToPdfDataFormat($devisPdfData,$currentConfig);
|
||||
$devisPdfFolders = $this->getDevisPdfFolder($devisPdfDataFormatted,$clean_folder);
|
||||
|
||||
foreach($devisPdfFolders as $folder){
|
||||
$currentConfig = $configs[0];
|
||||
$devisPdfData = $this->gestionBdd->getDevisPdfDataByDevisId($devisId);
|
||||
if ($devisPdfData == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$clean_folder = html_entity_decode(string: $currentConfig->path) . '/';
|
||||
$devisPdfDataFormatted = $this->formatDevisDataToPdfDataFormat($devisPdfData, $currentConfig);
|
||||
$devisPdfFolders = $this->getDevisPdfFolder($devisPdfDataFormatted, $clean_folder);
|
||||
|
||||
foreach ($devisPdfFolders as $folder) {
|
||||
try {
|
||||
$storage->newFolder($folder);
|
||||
}
|
||||
catch(\OCP\Files\NotPermittedException $e) {
|
||||
} catch (\OCP\Files\NotPermittedException $e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function GetMultipleDevisFilename($multipleDevisData,$month,$year,$type = DevisExportTypeConstant::TYPE_SINGLE){
|
||||
private function GetMultipleDevisFilename($multipleDevisData, $month, $year, $type = DevisExportTypeConstant::TYPE_SINGLE)
|
||||
{
|
||||
$filename = "";
|
||||
foreach($multipleDevisData as $devis){
|
||||
if($type == DevisExportTypeConstant::TYPE_SINGLE){
|
||||
$filename = mb_strtoupper($devis["client_nom"],'UTF-8');
|
||||
foreach ($multipleDevisData as $devis) {
|
||||
if ($type == DevisExportTypeConstant::TYPE_SINGLE) {
|
||||
$filename = mb_strtoupper($devis["client_nom"], 'UTF-8');
|
||||
} else {
|
||||
$filename = mb_strtoupper($devis["group_name"], 'UTF-8');
|
||||
}
|
||||
else{
|
||||
$filename = mb_strtoupper($devis["group_name"],'UTF-8');
|
||||
}
|
||||
$filename .= $month != 0 ? '_'.DateHelpers::GetMonthPlainString($month) :'';
|
||||
$filename .= "_".$year;
|
||||
$filename .= $month != 0 ? '_' . DateHelpers::GetMonthPlainString($month) : '';
|
||||
$filename .= "_" . $year;
|
||||
break;
|
||||
}
|
||||
return $filename;
|
||||
}
|
||||
|
||||
public function generateMultipleDevisPdfByClientAndMonthYear($clientId,$month,$year,$type,$idNextCloud){
|
||||
public function generateMultipleDevisPdfByClientAndMonthYear($clientId, $month, $year, $type, $idNextCloud)
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder($idNextCloud);
|
||||
$configs = json_decode($this->gestionBdd->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN));
|
||||
$currentConfig = $configs[0];
|
||||
$currentConfig = $configs[0];
|
||||
$logo = $this->getLogo();
|
||||
if($type == DevisExportTypeConstant::TYPE_SINGLE){
|
||||
$multipleDevisData = $this->gestionBdd->getDevisPdfDataByClientAndMonthYear($clientId,$month,$year,$currentConfig);
|
||||
}
|
||||
else{
|
||||
if ($type == DevisExportTypeConstant::TYPE_SINGLE) {
|
||||
$multipleDevisData = $this->gestionBdd->getDevisPdfDataByClientAndMonthYear($clientId, $month, $year, $currentConfig);
|
||||
} else {
|
||||
$multipleDevisData = $this->gestionBdd->getDevisPdfDataByClientGroupFacturationAndMonthYear(
|
||||
$clientId,
|
||||
$month,
|
||||
@ -208,31 +215,29 @@ class DevisPdfService {
|
||||
$currentConfig
|
||||
);
|
||||
}
|
||||
if(empty($multipleDevisData)){
|
||||
return null;
|
||||
}
|
||||
$multipleDevisDataFormatted = $this->formatMultipleDevisToPdfFormat($multipleDevisData,$currentConfig);
|
||||
if($type == DevisExportTypeConstant::TYPE_SINGLE){
|
||||
$clientFolderName = mb_strtoupper($multipleDevisDataFormatted[0]["client_nom"] ?? "-","UTF-8");
|
||||
if (empty($multipleDevisData)) {
|
||||
return null;
|
||||
}
|
||||
else{
|
||||
$clientFolderName = mb_strtoupper($multipleDevisDataFormatted[0]["group_name"] ?? "-","UTF-8");
|
||||
$multipleDevisDataFormatted = $this->formatMultipleDevisToPdfFormat($multipleDevisData, $currentConfig);
|
||||
if ($type == DevisExportTypeConstant::TYPE_SINGLE) {
|
||||
$clientFolderName = mb_strtoupper($multipleDevisDataFormatted[0]["client_nom"] ?? "-", "UTF-8");
|
||||
} else {
|
||||
$clientFolderName = mb_strtoupper($multipleDevisDataFormatted[0]["group_name"] ?? "-", "UTF-8");
|
||||
}
|
||||
$pdf = new DevisPdfHandler();
|
||||
$pdf->AddFont('ComicSans','','Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans','B','comic-sans-bold.php');
|
||||
$pdf->SetMultipleDevisPdfData($multipleDevisDataFormatted,$logo);
|
||||
$pdf->AddFont('ComicSans', '', 'Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans', 'B', 'comic-sans-bold.php');
|
||||
$pdf->SetMultipleDevisPdfData($multipleDevisDataFormatted, $logo);
|
||||
$pdf->SetMultipleDevisContent();
|
||||
$racinePath = html_entity_decode(string: $currentConfig->path).'/';
|
||||
$clientRacineFolder = $racinePath.'CLIENTS/'.$clientFolderName.'/';
|
||||
$filename = 'DEVIS'.'_'.$this->GetMultipleDevisFilename($multipleDevisDataFormatted,$month,$year,$type);
|
||||
$filenamePath = $clientRacineFolder.$filename.'.pdf';
|
||||
$pdfContent = $pdf->Output('','S');
|
||||
$racinePath = html_entity_decode(string: $currentConfig->path) . '/';
|
||||
$clientRacineFolder = $racinePath . 'CLIENTS/' . $clientFolderName . '/';
|
||||
$filename = 'DEVIS' . '_' . $this->GetMultipleDevisFilename($multipleDevisDataFormatted, $month, $year, $type);
|
||||
$filenamePath = $clientRacineFolder . $filename . '.pdf';
|
||||
$pdfContent = $pdf->Output('', 'S');
|
||||
try {
|
||||
$storage->newFolder($clientRacineFolder);
|
||||
}
|
||||
catch(\OCP\Files\NotPermittedException $e) {
|
||||
}
|
||||
} catch (\OCP\Files\NotPermittedException $e) {
|
||||
}
|
||||
$storage->newFile($filenamePath);
|
||||
$file_pdf = $storage->get($filenamePath);
|
||||
$file_pdf->putContent($pdfContent);
|
||||
|
||||
@ -30,94 +30,102 @@ use OCA\Gestion\Db\Bdd;
|
||||
use OCA\Gestion\Helpers\FileExportHelpers;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class ExportClientStatisticService {
|
||||
/** @var Bdd */
|
||||
private $gestionBdd;
|
||||
class ExportClientStatisticService
|
||||
{
|
||||
/** @var Bdd */
|
||||
private $gestionBdd;
|
||||
|
||||
/** @var LoggerInterface */
|
||||
private $logger;
|
||||
/** @var LoggerInterface */
|
||||
private $logger;
|
||||
|
||||
public function __construct(
|
||||
Bdd $gestionBdd,
|
||||
LoggerInterface $logger) {
|
||||
$this->logger = $logger;
|
||||
$this->gestionBdd = $gestionBdd;
|
||||
}
|
||||
public function __construct(
|
||||
Bdd $gestionBdd,
|
||||
LoggerInterface $logger
|
||||
) {
|
||||
$this->logger = $logger;
|
||||
$this->gestionBdd = $gestionBdd;
|
||||
}
|
||||
|
||||
public function getFileName(array $clientIds){
|
||||
public function getFileName(array $clientIds)
|
||||
{
|
||||
$filename = "";
|
||||
$clients = $this->gestionBdd->getClientsByClientsID($clientIds);
|
||||
foreach($clients as $client){
|
||||
foreach($clients as $client) {
|
||||
$filename .= $client['client_nom'] . '-' . $client['client_entreprise'] . '--';
|
||||
}
|
||||
$filename = rtrim($filename, '-');
|
||||
$filename = str_replace(' ','-', $filename);
|
||||
$filename = str_replace(' ','-', $filename);
|
||||
$filename = str_replace(' ', '-', $filename);
|
||||
$filename = str_replace(' ', '-', $filename);
|
||||
return $filename;
|
||||
}
|
||||
|
||||
public function getExportClientFileHeader(): string{
|
||||
$fileHeader =
|
||||
'CLIENT'.';'.
|
||||
public function getExportClientFileHeader(): string
|
||||
{
|
||||
$fileHeader =
|
||||
'CLIENT'.';'.
|
||||
'MOIS'.';'.
|
||||
'ANNEE'.';'.
|
||||
'NB DE DEFUNTS'.';';
|
||||
'NB DE DEFUNTS'.';';
|
||||
|
||||
$produitList = $this->gestionBdd->getProduitsListAsArray();
|
||||
foreach($produitList as $produit){
|
||||
$fileHeader .= FileExportHelpers::FormatTextForExport($produit['reference']).';';
|
||||
}
|
||||
$fileHeader .= 'TOTAL HT'.';'."\n";
|
||||
return $fileHeader;
|
||||
}
|
||||
$produitList = $this->gestionBdd->getProduitsListAsArray();
|
||||
foreach($produitList as $produit) {
|
||||
$fileHeader .= FileExportHelpers::FormatTextForExport($produit['reference']).';';
|
||||
}
|
||||
$fileHeader .= 'TOTAL HT'.';'."\n";
|
||||
return $fileHeader;
|
||||
}
|
||||
|
||||
public function populateExportDataIntoFileContent(array $exportData,string $fileContent): string{
|
||||
foreach($exportData as $clientId => $clientData){
|
||||
$clientName = $clientData["client_name"];
|
||||
$clientStatPerMonth = $clientData["client_data"];
|
||||
$totalPrice = 0;
|
||||
if(!empty($clientStatPerMonth)){
|
||||
foreach($clientStatPerMonth as $month => $stat){
|
||||
$stat["client_name"] = $clientName;
|
||||
$totalPrice+=$stat["total_price"];
|
||||
$fileContent = $this->populateClientStatDataIntoFileContent($fileContent,$month,$stat);
|
||||
}
|
||||
$fileContent = $this->populateTotalPriceIntoFileContent($fileContent,$totalPrice,count($stat["products"]));
|
||||
}
|
||||
}
|
||||
return $fileContent;
|
||||
}
|
||||
public function populateExportDataIntoFileContent(array $exportData, string $fileContent): string
|
||||
{
|
||||
foreach($exportData as $clientId => $clientData) {
|
||||
$clientName = $clientData["client_name"];
|
||||
$clientStatPerMonth = $clientData["client_data"];
|
||||
$totalPrice = 0;
|
||||
if(!empty($clientStatPerMonth)) {
|
||||
foreach($clientStatPerMonth as $month => $stat) {
|
||||
$stat["client_name"] = $clientName;
|
||||
$totalPrice += $stat["total_price"];
|
||||
$fileContent = $this->populateClientStatDataIntoFileContent($fileContent, $month, $stat);
|
||||
}
|
||||
$fileContent = $this->populateTotalPriceIntoFileContent($fileContent, $totalPrice, count($stat["products"]));
|
||||
}
|
||||
}
|
||||
return $fileContent;
|
||||
}
|
||||
|
||||
private function populateTotalPriceIntoFileContent(string $fileContent,$totalPrice,$productsCount){
|
||||
$fileContent = $fileContent.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';';
|
||||
while($productsCount > 0){
|
||||
$fileContent .= ''.';';
|
||||
$productsCount--;
|
||||
}
|
||||
$fileContent .= "$totalPrice".";"."\n";
|
||||
return $fileContent;
|
||||
}
|
||||
private function populateTotalPriceIntoFileContent(string $fileContent, $totalPrice, $productsCount)
|
||||
{
|
||||
$fileContent = $fileContent.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';';
|
||||
while($productsCount > 0) {
|
||||
$fileContent .= ''.';';
|
||||
$productsCount--;
|
||||
}
|
||||
$fileContent .= "$totalPrice".";"."\n";
|
||||
return $fileContent;
|
||||
}
|
||||
|
||||
private function populateClientStatDataIntoFileContent(string $fileContent,$month,array $statPerMonth){
|
||||
$yearValue = $statPerMonth["year"];
|
||||
$defuntCount = $statPerMonth["defunt_count"];
|
||||
$products = $statPerMonth["products"];
|
||||
|
||||
$fileContent = $fileContent.
|
||||
FileExportHelpers::FormatTextForExport($statPerMonth['client_name']).';'.
|
||||
"$month".';'.
|
||||
"$yearValue".';'.
|
||||
"$defuntCount".';';
|
||||
private function populateClientStatDataIntoFileContent(string $fileContent, $month, array $statPerMonth)
|
||||
{
|
||||
$yearValue = $statPerMonth["year"];
|
||||
$defuntCount = $statPerMonth["defunt_count"];
|
||||
$products = $statPerMonth["products"];
|
||||
$priceTotal = $statPerMonth["total_price"];
|
||||
|
||||
foreach($products as $productCount){
|
||||
$fileContent .= "$productCount".";";
|
||||
}
|
||||
$fileContent .= "\n";
|
||||
return $fileContent;
|
||||
$fileContent = $fileContent.
|
||||
FileExportHelpers::FormatTextForExport($statPerMonth['client_name']).';'.
|
||||
"$month".';'.
|
||||
"$yearValue".';'.
|
||||
"$defuntCount".';';
|
||||
|
||||
}
|
||||
foreach($products as $productCount) {
|
||||
$fileContent .= "$productCount".";";
|
||||
}
|
||||
$fileContent .= "$priceTotal".';'."\n";
|
||||
return $fileContent;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,149 +34,158 @@ use OCA\Gestion\Constants\BddConstant;
|
||||
use OCA\Gestion\Helpers\FileExportHelpers;
|
||||
use OCA\Gestion\Constants\AbsenceTypeConstant;
|
||||
|
||||
class ExportThanatoStatisticService {
|
||||
/** @var Bdd */
|
||||
private $gestionBdd;
|
||||
class ExportThanatoStatisticService
|
||||
{
|
||||
/** @var Bdd */
|
||||
private $gestionBdd;
|
||||
|
||||
/** @var LoggerInterface */
|
||||
private $logger;
|
||||
/** @var LoggerInterface */
|
||||
private $logger;
|
||||
|
||||
/** @var IRootFolder */
|
||||
private $rootFolder;
|
||||
/** @var IRootFolder */
|
||||
private $rootFolder;
|
||||
|
||||
private $geoService;
|
||||
private $geoService;
|
||||
|
||||
public function __construct(
|
||||
Bdd $gestionBdd,
|
||||
LoggerInterface $logger,
|
||||
IRootFolder $rootFolder,
|
||||
GeoService $geoService) {
|
||||
$this->geoService = $geoService;
|
||||
$this->rootFolder = $rootFolder;
|
||||
$this->logger = $logger;
|
||||
$this->gestionBdd = $gestionBdd;
|
||||
}
|
||||
public function __construct(
|
||||
Bdd $gestionBdd,
|
||||
LoggerInterface $logger,
|
||||
IRootFolder $rootFolder,
|
||||
GeoService $geoService
|
||||
) {
|
||||
$this->geoService = $geoService;
|
||||
$this->rootFolder = $rootFolder;
|
||||
$this->logger = $logger;
|
||||
$this->gestionBdd = $gestionBdd;
|
||||
}
|
||||
|
||||
private function getFilename($thanatoName,$thanatoLastName,$month,$year){
|
||||
$filename = "$year-$month-";
|
||||
$filename .= $thanatoName . '-' . $thanatoLastName;
|
||||
$filename = str_replace(' ','-', $filename);
|
||||
$filename = str_replace(' ','-', $filename);
|
||||
private function getFilename($thanatoName, $thanatoLastName, $month, $year)
|
||||
{
|
||||
$filename = "$year-$month-";
|
||||
$filename .= $thanatoName . '-' . $thanatoLastName;
|
||||
$filename = str_replace(' ', '-', $filename);
|
||||
$filename = str_replace(' ', '-', $filename);
|
||||
return $filename;
|
||||
}
|
||||
}
|
||||
|
||||
private function exportThanatoStatistic($thanatoId,$month,$year,$idNextcloud){
|
||||
$thanato = $this->gestionBdd->getThanatoById($thanatoId);
|
||||
if($thanato == null){
|
||||
return null;
|
||||
}
|
||||
$exportData = $this->gestionBdd->getExportThanatoStatisticData($thanatoId,$month,$year);
|
||||
if(empty($exportData)){
|
||||
return null;
|
||||
}
|
||||
$defaultConfig = json_decode($this->gestionBdd->getConfiguration(BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD));
|
||||
$racineFolder = html_entity_decode($defaultConfig[0]->path).'/';
|
||||
$thanatoFolder = $racineFolder.'STATISTIQUES/THANATOS/';
|
||||
$fileHeader = $this->getExportThanatoFileHeader();
|
||||
$fileContent = $this->populateExportDataIntoFileContent($exportData,$fileHeader);
|
||||
$storage = $this->rootFolder->getUserFolder($idNextcloud);
|
||||
try{
|
||||
$storage->newFolder($thanatoFolder);
|
||||
}
|
||||
catch(\OCP\Files\NotPermittedException $e) {
|
||||
|
||||
}
|
||||
$filename = $this->getFilename($thanato["nom"],$thanato["prenom"],$month,$year);
|
||||
$fileNamePath = $thanatoFolder."STAT-THANATO-" . $filename . '.csv';
|
||||
$storage->newFile($fileNamePath);
|
||||
$file = $storage->get($fileNamePath);
|
||||
$file->putContent($fileContent);
|
||||
return $fileNamePath;
|
||||
}
|
||||
private function exportThanatoStatistic($thanatoId, $month, $year, $idNextcloud)
|
||||
{
|
||||
$thanato = $this->gestionBdd->getThanatoById($thanatoId);
|
||||
if($thanato == null) {
|
||||
return null;
|
||||
}
|
||||
$exportData = $this->gestionBdd->getExportThanatoStatisticData($thanatoId, $month, $year);
|
||||
if(empty($exportData)) {
|
||||
return null;
|
||||
}
|
||||
$defaultConfig = json_decode($this->gestionBdd->getConfiguration(BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD));
|
||||
$racineFolder = html_entity_decode($defaultConfig[0]->path).'/';
|
||||
$thanatoFolder = $racineFolder.'STATISTIQUES/THANATOS/';
|
||||
$fileHeader = $this->getExportThanatoFileHeader();
|
||||
$fileContent = $this->populateExportDataIntoFileContent($exportData, $fileHeader);
|
||||
$storage = $this->rootFolder->getUserFolder($idNextcloud);
|
||||
try {
|
||||
$storage->newFolder($thanatoFolder);
|
||||
} catch(\OCP\Files\NotPermittedException $e) {
|
||||
|
||||
public function exportThanatosListStatistic(array $thanatoIds,$month,$year,$idNextcloud){
|
||||
$filenames = [];
|
||||
foreach($thanatoIds as $thanatoId){
|
||||
$filename = $this->exportThanatoStatistic($thanatoId,$month,$year,$idNextcloud);
|
||||
if($filename != null){
|
||||
$filenames[] = $filename;
|
||||
}
|
||||
}
|
||||
return $filenames;
|
||||
}
|
||||
}
|
||||
$filename = $this->getFilename($thanato["nom"], $thanato["prenom"], $month, $year);
|
||||
$fileNamePath = $thanatoFolder."STAT-THANATO-" . $filename . '.csv';
|
||||
$storage->newFile($fileNamePath);
|
||||
$file = $storage->get($fileNamePath);
|
||||
$file->putContent($fileContent);
|
||||
return $fileNamePath;
|
||||
}
|
||||
|
||||
public function getExportThanatoFileHeader(): string{
|
||||
$fileHeader =
|
||||
'FACTURE'.';'.
|
||||
'THANATOPRACTEUR'.';'.
|
||||
'DATE'.';'.
|
||||
'HEURE DE DEBUT'.';'.
|
||||
'HEURE DE FIN'.';'.
|
||||
'SOINS'.';'.
|
||||
'JOUR/FERIE'.';'.
|
||||
'CONGE'.';'.
|
||||
'REPOS'.';'.
|
||||
'MALADIE'.';'.
|
||||
'NOM ET PRENOM'.';'.
|
||||
'LIEU'.';'.
|
||||
'POMPES FUNEBRES'.';'.
|
||||
'ADRESSE'.';'.
|
||||
'DISTANCE TOTALE KM'.';'.
|
||||
'HEURES TOTAL DE SOIN'.';'.
|
||||
'HEURES TOTAL DE CONGE'.';'.
|
||||
'HEURES TOTAL DE REPOS'.';'.
|
||||
'HEURES TOTAL DE MALADIE'.';'.
|
||||
'HEURES TOTAL DE TRAVAIL'.';'.
|
||||
'HEURES TOTAL DE PARCOURS ENTRE DEVIS'.';'.
|
||||
'NOMBRE DE SOINS ET TOILETTES'.';'.
|
||||
"\n";
|
||||
return $fileHeader;
|
||||
}
|
||||
public function exportThanatosListStatistic(array $thanatoIds, $month, $year, $idNextcloud)
|
||||
{
|
||||
$filenames = [];
|
||||
foreach($thanatoIds as $thanatoId) {
|
||||
$filename = $this->exportThanatoStatistic($thanatoId, $month, $year, $idNextcloud);
|
||||
if($filename != null) {
|
||||
$filenames[] = $filename;
|
||||
}
|
||||
}
|
||||
return $filenames;
|
||||
}
|
||||
|
||||
private function populateNoDevisDataInADay(string $fileContent,$leave){
|
||||
$startTimeValue = "";
|
||||
$endTimeValue = "";
|
||||
$leaveValue = "Non";
|
||||
if($leave["onLeave"]){
|
||||
$startTimeValue = $leave["startTime"];
|
||||
$endTimeValue = $leave["endTime"];
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::LEAVE){
|
||||
$leaveValue = "Oui";
|
||||
}
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::DISEASE){
|
||||
$diseaseValue = "Oui";
|
||||
}
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::REST){
|
||||
$restValue = "Oui";
|
||||
}
|
||||
}
|
||||
$fileContent = $fileContent.
|
||||
''.';'.
|
||||
FileExportHelpers::FormatTextForExport($leave['thanatoName']).';'.
|
||||
$leave['date'].';'.
|
||||
$startTimeValue.';'.
|
||||
$endTimeValue.';'.
|
||||
''.';'.
|
||||
DateHelpers::getPublicHolidayText($leave['isPublicHoliday']).';'.
|
||||
$leaveValue.';'.
|
||||
$restValue.';'.
|
||||
$diseaseValue.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'."\n";
|
||||
return $fileContent;
|
||||
}
|
||||
public function getExportThanatoFileHeader(): string
|
||||
{
|
||||
$fileHeader =
|
||||
'DEVIS'.';'.
|
||||
'THANATOPRACTEUR'.';'.
|
||||
'DATE'.';'.
|
||||
'HEURE DE DEBUT'.';'.
|
||||
'HEURE DE FIN'.';'.
|
||||
'SOINS'.';'.
|
||||
'JOUR/FERIE'.';'.
|
||||
'CONGE'.';'.
|
||||
'REPOS'.';'.
|
||||
'MALADIE'.';'.
|
||||
'NOM ET PRENOM'.';'.
|
||||
'LIEU'.';'.
|
||||
'POMPES FUNEBRES'.';'.
|
||||
'ADRESSE'.';'.
|
||||
'DISTANCE TOTALE KM'.';'.
|
||||
'HEURES TOTAL DE SOIN'.';'.
|
||||
'HEURES TOTAL DE CONGE'.';'.
|
||||
'HEURES TOTAL DE REPOS'.';'.
|
||||
'HEURES TOTAL DE MALADIE'.';'.
|
||||
'HEURES TOTAL DE TRAVAIL'.';'.
|
||||
'HEURES TOTAL DE PARCOURS ENTRE DEVIS'.';'.
|
||||
'NOMBRE DE SOINS ET TOILETTES'.';'.
|
||||
"\n";
|
||||
return $fileHeader;
|
||||
}
|
||||
|
||||
public function populateExportDataIntoFileContent(array $exportData,string $fileContent): string{
|
||||
private function populateNoDevisDataInADay(string $fileContent, $leave)
|
||||
{
|
||||
$startTimeValue = "";
|
||||
$endTimeValue = "";
|
||||
$leaveValue = "Non";
|
||||
$restValue = "Non"; // AJOUTER CETTE LIGNE
|
||||
$diseaseValue = "Non"; // AJOUTER CETTE LIGNE
|
||||
if($leave["onLeave"]) {
|
||||
$startTimeValue = $leave["startTime"];
|
||||
$endTimeValue = $leave["endTime"];
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::LEAVE) {
|
||||
$leaveValue = "Oui";
|
||||
}
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::DISEASE) {
|
||||
$diseaseValue = "Oui";
|
||||
}
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::REST) {
|
||||
$restValue = "Oui";
|
||||
}
|
||||
}
|
||||
$fileContent = $fileContent.
|
||||
''.';'.
|
||||
FileExportHelpers::FormatTextForExport($leave['thanatoName']).';'.
|
||||
$leave['date'].';'.
|
||||
$startTimeValue.';'.
|
||||
$endTimeValue.';'.
|
||||
''.';'.
|
||||
DateHelpers::getPublicHolidayText($leave['isPublicHoliday']).';'.
|
||||
$leaveValue.';'.
|
||||
$restValue.';'.
|
||||
$diseaseValue.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'."\n";
|
||||
return $fileContent;
|
||||
}
|
||||
|
||||
public function populateExportDataIntoFileContent(array $exportData, string $fileContent): string
|
||||
{
|
||||
|
||||
$g_totalDistance = 0;
|
||||
$g_totalDevisHours = 0;
|
||||
@ -185,81 +194,81 @@ class ExportThanatoStatisticService {
|
||||
$g_totalTravelingHoursBetweenDevisLocation = 0;
|
||||
$g_totalDiseaseHours = 0;
|
||||
$g_totalRestHours = 0;
|
||||
$g_totalDevisCount = 0;
|
||||
$g_totalDevisCount = 0;
|
||||
|
||||
foreach($exportData as $devisDate => $devisData){
|
||||
$totalDevisHours = 0;
|
||||
$totalWorkedHours = 8;
|
||||
$totalLeaveHours = 0;
|
||||
$totalDiseaseHours = 0;
|
||||
$totalRestHours = 0;
|
||||
$totalDistance = 0;
|
||||
$totalDevisCount = 0;
|
||||
$totalTravelingHoursBetweenDevisLocation = 0;
|
||||
$hasDevisInTheCurrentDate = $devisData['hasDevis'];
|
||||
if($hasDevisInTheCurrentDate === false){
|
||||
$leaves = $devisData["leaves"];
|
||||
foreach($leaves as $leave){
|
||||
$fileContent = $this->populateNoDevisDataInADay($fileContent,$leave);
|
||||
if($leave["onLeave"]){
|
||||
$totalLeaveHoursInsideWorkingHours = $leave["totalWorkedHours"];
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::LEAVE ){
|
||||
$totalLeaveHours += $totalLeaveHoursInsideWorkingHours;
|
||||
}
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::REST){
|
||||
$totalRestHours += $totalLeaveHoursInsideWorkingHours;
|
||||
}
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::DISEASE){
|
||||
$totalDiseaseHours += $totalLeaveHoursInsideWorkingHours;
|
||||
}
|
||||
}
|
||||
}
|
||||
$totalAbsenceHours = $totalLeaveHours + $totalRestHours + $totalDiseaseHours;
|
||||
$totalWorkedHours -= $totalAbsenceHours;
|
||||
}
|
||||
else{
|
||||
$totalDevisCount += count($devisData["devisId"]);
|
||||
$routeLines = $this->gestionBdd->getRouteLinesByDevisIdList($devisData["devisId"]);
|
||||
$totalDistanceAndTotalTravelingHoursBetweenDevis = $this->geoService->getTotalDistanceAndTotalTravelingHoursBetweenDevisLocationByRouteLines($routeLines);
|
||||
$totalDistance = $totalDistanceAndTotalTravelingHoursBetweenDevis["totalDistance"];
|
||||
$totalTravelingHoursBetweenDevisLocation = $totalDistanceAndTotalTravelingHoursBetweenDevis["totalTravelingHours"];
|
||||
$devisList = $devisData["devis"];
|
||||
$leaves = $devisData["leaves"];
|
||||
if(!empty($devisList)){
|
||||
foreach($devisList as $devis){
|
||||
$fileContent = $this->populateDevisDataIntoThanatoExportFileContent($fileContent,$devis);
|
||||
$totalDevisHours += $devis["totalHours"];
|
||||
}
|
||||
}
|
||||
foreach($leaves as $leave){
|
||||
$fileContent = $this->populateNoDevisDataInADay($fileContent,$leave);
|
||||
if($leave["onLeave"]){
|
||||
$totalLeaveHoursInsideWorkingHours = $leave["totalWorkedHours"];
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::LEAVE){
|
||||
$totalLeaveHours += $totalLeaveHoursInsideWorkingHours;
|
||||
}
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::REST){
|
||||
$totalRestHours += $totalLeaveHoursInsideWorkingHours;
|
||||
}
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::DISEASE){
|
||||
$totalDiseaseHours += $totalLeaveHoursInsideWorkingHours;
|
||||
}
|
||||
}
|
||||
}
|
||||
$totalAbsenceHours = $totalLeaveHours + $totalRestHours + $totalDiseaseHours;
|
||||
$totalWorkedHours -= $totalAbsenceHours;
|
||||
}
|
||||
foreach($exportData as $devisDate => $devisData) {
|
||||
$totalDevisHours = 0;
|
||||
$totalWorkedHours = 8;
|
||||
$totalLeaveHours = 0;
|
||||
$totalDiseaseHours = 0;
|
||||
$totalRestHours = 0;
|
||||
$totalDistance = 0;
|
||||
$totalDevisCount = 0;
|
||||
$totalTravelingHoursBetweenDevisLocation = 0;
|
||||
$hasDevisInTheCurrentDate = $devisData['hasDevis'];
|
||||
if($hasDevisInTheCurrentDate === false) {
|
||||
$leaves = $devisData["leaves"];
|
||||
foreach($leaves as $leave) {
|
||||
$fileContent = $this->populateNoDevisDataInADay($fileContent, $leave);
|
||||
if($leave["onLeave"]) {
|
||||
$totalLeaveHoursInsideWorkingHours = $leave["totalWorkedHours"];
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::LEAVE) {
|
||||
$totalLeaveHours += $totalLeaveHoursInsideWorkingHours;
|
||||
}
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::REST) {
|
||||
$totalRestHours += $totalLeaveHoursInsideWorkingHours;
|
||||
}
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::DISEASE) {
|
||||
$totalDiseaseHours += $totalLeaveHoursInsideWorkingHours;
|
||||
}
|
||||
}
|
||||
}
|
||||
$totalAbsenceHours = $totalLeaveHours + $totalRestHours + $totalDiseaseHours;
|
||||
$totalWorkedHours -= $totalAbsenceHours;
|
||||
} else {
|
||||
$totalDevisCount += count($devisData["devisId"]);
|
||||
$routeLines = $this->gestionBdd->getRouteLinesByDevisIdList($devisData["devisId"]);
|
||||
$totalDistanceAndTotalTravelingHoursBetweenDevis = $this->geoService->getTotalDistanceAndTotalTravelingHoursBetweenDevisLocationByRouteLines($routeLines);
|
||||
$totalDistance = $totalDistanceAndTotalTravelingHoursBetweenDevis["totalDistance"];
|
||||
$totalTravelingHoursBetweenDevisLocation = $totalDistanceAndTotalTravelingHoursBetweenDevis["totalTravelingHours"];
|
||||
$devisList = $devisData["devis"];
|
||||
$leaves = $devisData["leaves"];
|
||||
if(!empty($devisList)) {
|
||||
foreach($devisList as $devis) {
|
||||
$fileContent = $this->populateDevisDataIntoThanatoExportFileContent($fileContent, $devis);
|
||||
$totalDevisHours += $devis["totalHours"];
|
||||
}
|
||||
}
|
||||
foreach($leaves as $leave) {
|
||||
$fileContent = $this->populateNoDevisDataInADay($fileContent, $leave);
|
||||
if($leave["onLeave"]) {
|
||||
$totalLeaveHoursInsideWorkingHours = $leave["totalWorkedHours"];
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::LEAVE) {
|
||||
$totalLeaveHours += $totalLeaveHoursInsideWorkingHours;
|
||||
}
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::REST) {
|
||||
$totalRestHours += $totalLeaveHoursInsideWorkingHours;
|
||||
}
|
||||
if($leave["absenceTypeKey"] == AbsenceTypeConstant::DISEASE) {
|
||||
$totalDiseaseHours += $totalLeaveHoursInsideWorkingHours;
|
||||
}
|
||||
}
|
||||
}
|
||||
$totalAbsenceHours = $totalLeaveHours + $totalRestHours + $totalDiseaseHours;
|
||||
$totalWorkedHours -= $totalAbsenceHours;
|
||||
}
|
||||
|
||||
$fileContent = $this->populateLastRecapForTheLine(
|
||||
$fileContent,
|
||||
$totalDistance,
|
||||
$totalDevisHours,
|
||||
$totalWorkedHours,
|
||||
$totalLeaveHours,
|
||||
$totalTravelingHoursBetweenDevisLocation,
|
||||
$totalDiseaseHours,
|
||||
$totalRestHours,$totalDevisCount
|
||||
);
|
||||
$fileContent = $this->populateLastRecapForTheLine(
|
||||
$fileContent,
|
||||
$totalDistance,
|
||||
$totalDevisHours,
|
||||
$totalWorkedHours,
|
||||
$totalLeaveHours,
|
||||
$totalTravelingHoursBetweenDevisLocation,
|
||||
$totalDiseaseHours,
|
||||
$totalRestHours,
|
||||
$totalDevisCount
|
||||
);
|
||||
|
||||
$g_totalDistance += $totalDistance;
|
||||
$g_totalDevisHours += $totalDevisHours;
|
||||
@ -268,8 +277,8 @@ class ExportThanatoStatisticService {
|
||||
$g_totalTravelingHoursBetweenDevisLocation += $totalTravelingHoursBetweenDevisLocation;
|
||||
$g_totalDiseaseHours += $totalDiseaseHours;
|
||||
$g_totalRestHours += $totalRestHours;
|
||||
$g_totalDevisCount += $totalDevisCount;
|
||||
}
|
||||
$g_totalDevisCount += $totalDevisCount;
|
||||
}
|
||||
|
||||
$fileContent = $this->populateLastRecapForTheLine(
|
||||
$fileContent,
|
||||
@ -279,77 +288,113 @@ class ExportThanatoStatisticService {
|
||||
$g_totalLeaveHours,
|
||||
$g_totalTravelingHoursBetweenDevisLocation,
|
||||
$g_totalDiseaseHours,
|
||||
$g_totalRestHours,$g_totalDevisCount
|
||||
$g_totalRestHours,
|
||||
$g_totalDevisCount
|
||||
);
|
||||
|
||||
return $fileContent;
|
||||
}
|
||||
return $fileContent;
|
||||
}
|
||||
|
||||
private function populateLastRecapForTheLine(string $fileContent,$distance,$totalDevisHours,$totalWorkedHours,$totalLeaveHours,$totalTravelingHours ,$totalDiseaseHours = 0,$totalRestHours = 0,$totalDevisCount = 0){
|
||||
$fileContent = $fileContent.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
"$distance".';'.
|
||||
"$totalDevisHours".';'.
|
||||
"$totalLeaveHours".';'.
|
||||
"$totalRestHours".';'.
|
||||
"$totalDiseaseHours".';'.
|
||||
"$totalWorkedHours".';'.
|
||||
"$totalTravelingHours".';'.
|
||||
"$totalDevisCount"."\n";
|
||||
return $fileContent;
|
||||
}
|
||||
private function populateLastRecapForTheLine(string $fileContent, $distance, $totalDevisHours, $totalWorkedHours, $totalLeaveHours, $totalTravelingHours, $totalDiseaseHours = 0, $totalRestHours = 0, $totalDevisCount = 0)
|
||||
{
|
||||
$fileContent = $fileContent.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
"$distance".';'.
|
||||
"$totalDevisHours".';'.
|
||||
"$totalLeaveHours".';'.
|
||||
"$totalRestHours".';'.
|
||||
"$totalDiseaseHours".';'.
|
||||
"$totalWorkedHours".';'.
|
||||
"$totalTravelingHours".';'.
|
||||
"$totalDevisCount"."\n";
|
||||
return $fileContent;
|
||||
}
|
||||
|
||||
private function getFormatDevisProduitsAsString($devisProduits){
|
||||
$result = '';
|
||||
foreach ($devisProduits as $produit) {
|
||||
$result .= $produit['produit_reference'] . '-' . $produit['produit_description'] . '--';
|
||||
}
|
||||
// Remove the trailing "--" at the end
|
||||
$result = rtrim($result, '-');
|
||||
return $result;
|
||||
}
|
||||
private function getFormatDevisProduitsAsString($devisProduits)
|
||||
{
|
||||
$result = '';
|
||||
foreach ($devisProduits as $produit) {
|
||||
$result .= $produit['produit_reference'] . '-' . $produit['produit_description'] . '--';
|
||||
}
|
||||
// Remove the trailing "--" at the end
|
||||
$result = rtrim($result, '-');
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function populateDevisDataIntoThanatoExportFileContent(string $fileContent,array $devis){
|
||||
$produitAsString = $this->getFormatDevisProduitsAsString($devis["produits"]);
|
||||
$factureNum = $devis["facture_num"] ?? $devis["facture_on_group_num"] ?? "";
|
||||
$fileContent = $fileContent.
|
||||
FileExportHelpers::FormatTextForExport($factureNum).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis['nom_thanato'] . ' ' . $devis['prenom_thanatho']).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["date"]).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["startTime"]).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["endTime"]).';'.
|
||||
FileExportHelpers::FormatTextForExport($produitAsString).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["dayType"]).';'.
|
||||
FileExportHelpers::FormatTextForExport('Non').';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["nom_defunt"]).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["nom_lieu"] ?? "").';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["nom_client"] ?? "").';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["client_adresse"] ?? "").
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'."\n";
|
||||
|
||||
return $fileContent;
|
||||
private function populateDevisDataIntoThanatoExportFileContentSave(string $fileContent, array $devis)
|
||||
{
|
||||
$produitAsString = $this->getFormatDevisProduitsAsString($devis["produits"]);
|
||||
$factureNum = $devis["facture_num"] ?? $devis["facture_on_group_num"] ?? "";
|
||||
$fileContent = $fileContent.
|
||||
FileExportHelpers::FormatTextForExport($factureNum).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis['nom_thanato'] . ' ' . $devis['prenom_thanatho']).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["date"]).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["startTime"]).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["endTime"]).';'.
|
||||
FileExportHelpers::FormatTextForExport($produitAsString).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["dayType"]).';'.
|
||||
FileExportHelpers::FormatTextForExport('Non').';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["nom_defunt"]).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["nom_lieu"] ?? "").';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["nom_client"] ?? "").';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["client_adresse"] ?? "").
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'."\n";
|
||||
|
||||
}
|
||||
return $fileContent;
|
||||
|
||||
}
|
||||
|
||||
private function populateDevisDataIntoThanatoExportFileContent(string $fileContent, array $devis)
|
||||
{
|
||||
$produitAsString = $this->getFormatDevisProduitsAsString($devis["produits"]);
|
||||
$devisNum = (string)($devis["calendar_uuid"] ?? "");
|
||||
|
||||
$fileContent = $fileContent.
|
||||
FileExportHelpers::FormatTextForExport($devisNum).';'.
|
||||
FileExportHelpers::FormatTextForExport(($devis['nom_thanato'] ?? '') . ' ' . ($devis['prenom_thanato'] ?? '')).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["date"] ?? "").';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["startTime"] ?? "").';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["endTime"] ?? "").';'.
|
||||
FileExportHelpers::FormatTextForExport($produitAsString).';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["dayType"] ?? "").';'.
|
||||
'Non'.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["nom_defunt"] ?? "").';'. // ICI
|
||||
FileExportHelpers::FormatTextForExport($devis["nom_lieu"] ?? "").';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["nom_client"] ?? "").';'.
|
||||
FileExportHelpers::FormatTextForExport($devis["client_adresse"] ?? "").';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'.
|
||||
''.';'."\n";
|
||||
|
||||
return $fileContent;
|
||||
}
|
||||
}
|
||||
|
||||
@ -30,28 +30,31 @@ use Exception;
|
||||
use OCA\Gestion\Constants\GeoConstant;
|
||||
use OCA\Gestion\Helpers\GeoHelpers;
|
||||
|
||||
class GeoService {
|
||||
|
||||
public function __construct() {
|
||||
}
|
||||
class GeoService
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcul la distance entre les deux points à vol d'oiseau
|
||||
*/
|
||||
private function getDistanceInKmBetweenTwoPoints($lat1, $lon1, $lat2, $lon2) {
|
||||
private function getDistanceInKmBetweenTwoPoints($lat1, $lon1, $lat2, $lon2)
|
||||
{
|
||||
$R = 6371; // Rayon moyen de la Terre en kilomètres
|
||||
$dLat = deg2rad($lat2 - $lat1);
|
||||
$dLon = deg2rad($lon2 - $lon1);
|
||||
$a = sin($dLat/2) * sin($dLat/2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLon/2) * sin($dLon/2);
|
||||
$c = 2 * atan2(sqrt($a), sqrt(1-$a));
|
||||
$a = sin($dLat / 2) * sin($dLat / 2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLon / 2) * sin($dLon / 2);
|
||||
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
|
||||
$d = $R * $c;
|
||||
return round($d, 2);
|
||||
}
|
||||
|
||||
private function getTravelingHourBetweenTwoPoints(array $origin,array $destination,$mode = "driving"){
|
||||
private function getTravelingHourBetweenTwoPoints(array $origin, array $destination, $mode = "driving")
|
||||
{
|
||||
$baseUrl = "https://api.geoapify.com/v1/routing";
|
||||
$originPoints = GeoHelpers::getPointsTextFromLatitudeAndLongitude($origin["latitude"],$origin["longitude"]);
|
||||
$destinationPoints = GeoHelpers::getPointsTextFromLatitudeAndLongitude($destination["latitude"],$destination["longitude"]);
|
||||
$originPoints = GeoHelpers::getPointsTextFromLatitudeAndLongitude($origin["latitude"], $origin["longitude"]);
|
||||
$destinationPoints = GeoHelpers::getPointsTextFromLatitudeAndLongitude($destination["latitude"], $destination["longitude"]);
|
||||
|
||||
$fullUrl = $baseUrl."?waypoints=$originPoints|$destinationPoints&mode=$mode&apiKey=9e23d93e7f454c988344f9171bf867aa";
|
||||
$curl = curl_init();
|
||||
@ -66,11 +69,11 @@ class GeoService {
|
||||
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
||||
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||
));
|
||||
|
||||
|
||||
$response = curl_exec($curl);
|
||||
|
||||
|
||||
curl_close($curl);
|
||||
|
||||
|
||||
if ($response === false) {
|
||||
return 0;
|
||||
} else {
|
||||
@ -79,45 +82,45 @@ class GeoService {
|
||||
$travelTimeHours = round($travelTimeHours, 2);
|
||||
return $travelTimeHours;
|
||||
}
|
||||
}
|
||||
catch(Exception $e){
|
||||
} catch(Exception $e) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getTotalDistanceAndTotalTravelingHoursBetweenDevisLocationByRouteLines(array $routeLines){
|
||||
public function getTotalDistanceAndTotalTravelingHoursBetweenDevisLocationByRouteLinesSave(array $routeLines)
|
||||
{
|
||||
$distanceCumul = 0;
|
||||
$totalTravelingHoursBetweenTwoDevisLocation = 0;
|
||||
$lastPoint = NULL;
|
||||
for ($i=0; $i < sizeof($routeLines); $i++) {
|
||||
$lastPoint = null;
|
||||
for ($i = 0; $i < sizeof($routeLines); $i++) {
|
||||
$currentDistance = 0;
|
||||
if($routeLines[$i]['lieu_id'] != NULL){
|
||||
if($routeLines[$i]['lieu_id'] != null) {
|
||||
$lastPoint = $routeLines[$i];
|
||||
}
|
||||
if($lastPoint['lieu_id'] != NULL && $routeLines[$i+1]['lieu_id'] != NULL){
|
||||
}
|
||||
if($lastPoint['lieu_id'] != null && $routeLines[$i + 1]['lieu_id'] != null) {
|
||||
$currentDistance = $this->getDistanceInKmBetweenTwoPoints(
|
||||
floatval(value: $lastPoint['latitude']),
|
||||
floatval($lastPoint['longitude']),
|
||||
floatval($routeLines[$i+1]['latitude']),
|
||||
floatval($routeLines[$i+1]['longitude'])
|
||||
floatval(value: $lastPoint['latitude']),
|
||||
floatval($lastPoint['longitude']),
|
||||
floatval($routeLines[$i + 1]['latitude']),
|
||||
floatval($routeLines[$i + 1]['longitude'])
|
||||
);
|
||||
$targetIsBetweenTwoDevisLocation = $lastPoint['source'] != "siege" && $routeLines[$i+1]["source"] != "siege";
|
||||
if($targetIsBetweenTwoDevisLocation){
|
||||
$targetIsBetweenTwoDevisLocation = $lastPoint['source'] != "siege" && $routeLines[$i + 1]["source"] != "siege";
|
||||
if($targetIsBetweenTwoDevisLocation) {
|
||||
$originPoints = [
|
||||
"latitude" => $lastPoint["latitude"],
|
||||
"longitude" => $lastPoint["longitude"]
|
||||
];
|
||||
$destinationPoints = [
|
||||
"latitude" => $routeLines[$i+1]["latitude"],
|
||||
"longitude" => $routeLines[$i+1]["longitude"]
|
||||
"latitude" => $routeLines[$i + 1]["latitude"],
|
||||
"longitude" => $routeLines[$i + 1]["longitude"]
|
||||
];
|
||||
$totalTravelingHoursBetweenTwoDevisLocation+= $this->getTravelingHourBetweenTwoPoints(
|
||||
$totalTravelingHoursBetweenTwoDevisLocation += $this->getTravelingHourBetweenTwoPoints(
|
||||
$originPoints,
|
||||
$destinationPoints,
|
||||
GeoConstant::DRIVING_MODE
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
$distanceCumul += $currentDistance;
|
||||
}
|
||||
return [
|
||||
@ -125,4 +128,65 @@ class GeoService {
|
||||
"totalTravelingHours" => $totalTravelingHoursBetweenTwoDevisLocation
|
||||
];
|
||||
}
|
||||
|
||||
public function getTotalDistanceAndTotalTravelingHoursBetweenDevisLocationByRouteLines(array $routeLines)
|
||||
{
|
||||
$distanceCumul = 0;
|
||||
$totalTravelingHoursBetweenTwoDevisLocation = 0;
|
||||
$lastPoint = null;
|
||||
|
||||
for ($i = 0; $i < sizeof($routeLines); $i++) {
|
||||
$currentDistance = 0;
|
||||
|
||||
// Vérifier que l'élément actuel existe
|
||||
if(!isset($routeLines[$i])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if($routeLines[$i]['lieu_id'] != null) {
|
||||
$lastPoint = $routeLines[$i];
|
||||
}
|
||||
|
||||
// Vérifier que $i+1 existe ET que $lastPoint n'est pas null
|
||||
if($lastPoint !== null &&
|
||||
isset($routeLines[$i + 1]) &&
|
||||
isset($lastPoint['lieu_id']) &&
|
||||
isset($routeLines[$i + 1]['lieu_id']) &&
|
||||
$lastPoint['lieu_id'] != null &&
|
||||
$routeLines[$i + 1]['lieu_id'] != null) {
|
||||
|
||||
$currentDistance = $this->getDistanceInKmBetweenTwoPoints(
|
||||
floatval($lastPoint['latitude']),
|
||||
floatval($lastPoint['longitude']),
|
||||
floatval($routeLines[$i + 1]['latitude']),
|
||||
floatval($routeLines[$i + 1]['longitude'])
|
||||
);
|
||||
|
||||
$targetIsBetweenTwoDevisLocation = $lastPoint['source'] != "siege" && $routeLines[$i + 1]["source"] != "siege";
|
||||
|
||||
if($targetIsBetweenTwoDevisLocation) {
|
||||
$originPoints = [
|
||||
"latitude" => $lastPoint["latitude"],
|
||||
"longitude" => $lastPoint["longitude"]
|
||||
];
|
||||
$destinationPoints = [
|
||||
"latitude" => $routeLines[$i + 1]["latitude"],
|
||||
"longitude" => $routeLines[$i + 1]["longitude"]
|
||||
];
|
||||
$totalTravelingHoursBetweenTwoDevisLocation += $this->getTravelingHourBetweenTwoPoints(
|
||||
$originPoints,
|
||||
$destinationPoints,
|
||||
GeoConstant::DRIVING_MODE
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$distanceCumul += $currentDistance;
|
||||
}
|
||||
|
||||
return [
|
||||
"totalDistance" => round($distanceCumul, 2),
|
||||
"totalTravelingHours" => round($totalTravelingHoursBetweenTwoDevisLocation, 2)
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ class GestionService
|
||||
private $userConnectedUuid;
|
||||
|
||||
/** @var DevisPdfService */
|
||||
private $devisPdfService;
|
||||
private $devisPdfService;
|
||||
|
||||
public function __construct(
|
||||
Bdd $gestionBdd,
|
||||
@ -58,12 +58,11 @@ class GestionService
|
||||
TalkService $talkService,
|
||||
IUserSession $userSession,
|
||||
DevisPdfService $devisPdfService
|
||||
|
||||
) {
|
||||
$this->logger = $logger;
|
||||
$this->gestionBdd = $gestionBdd;
|
||||
$this->talkService = $talkService;
|
||||
$this->devisPdfService = $devisPdfService;
|
||||
$this->devisPdfService = $devisPdfService;
|
||||
|
||||
try {
|
||||
$this->userConnectedUuid = $userSession->getUser()->getUID();
|
||||
@ -163,9 +162,10 @@ class GestionService
|
||||
return $calendarStartDate;
|
||||
}
|
||||
|
||||
private function GetIsPivateFromVCalendarString(string $vCalendarString): bool{
|
||||
private function GetIsPivateFromVCalendarString(string $vCalendarString): bool
|
||||
{
|
||||
$isPrivateValue = VCalendarHelpers::GetValueFromKeyInVCalendarString(VCalendarPropertyConstant::PROPERTY_IS_PRIVATE, $vCalendarString);
|
||||
return $isPrivateValue === "1" ? true : false;
|
||||
return $isPrivateValue === "1" ? true : false;
|
||||
}
|
||||
|
||||
|
||||
@ -182,7 +182,16 @@ class GestionService
|
||||
private function UpdateDevisDataByVCalendarString($devis, $vCalendarString)
|
||||
{
|
||||
$requestedDefuntName = $this->GetCalendarSummaryFromVCalendarString($vCalendarString);
|
||||
$defuntId = $this->gestionBdd->createOrUpdateDefuntByNameAndReturnDefuntId($devis['defunt_id'], $devis['defunt_nom'], $requestedDefuntName);
|
||||
|
||||
$lieuDeces = $this->getLieuDecesFromVCalendarString($vCalendarString);
|
||||
$dateNaissance = $this->getDateNaissanceFromVCalendarString($vCalendarString);
|
||||
|
||||
$defuntId = $this->gestionBdd->createOrUpdateDefuntByNameAndReturnDefuntId($devis['defunt_id'], $devis['defunt_nom'], $requestedDefuntName, $lieuDeces, $dateNaissance);
|
||||
file_put_contents(
|
||||
'/var/www/html/data/nextcloud_calendar_debug.log',
|
||||
date('Y-m-d H:i:s') . " - defuntId: " . $defuntId . "\n",
|
||||
FILE_APPEND
|
||||
);
|
||||
$this->gestionBdd->updateDevisDefunt($devis['id'], $defuntId, $devis['defunt_id']);
|
||||
|
||||
$requestedClientId = $this->GetClientIdFromVCalendarString($vCalendarString);
|
||||
@ -206,6 +215,11 @@ class GestionService
|
||||
private function CheckIfDevisIsAlreadyUpdated($devis, $vCalendarString)
|
||||
{
|
||||
$requestedDefuntName = $this->GetCalendarSummaryFromVCalendarString($vCalendarString);
|
||||
|
||||
$requestedLieuDeces = $this->getLieuDecesFromVCalendarString($vCalendarString);
|
||||
$requestedDateNaissance = $this->getDateNaissanceFromVCalendarString($vCalendarString);
|
||||
$currentDefunt = $this->gestionBdd->getDefuntById($devis['defunt_id']);
|
||||
|
||||
$requestedClientId = $this->GetClientIdFromVCalendarString($vCalendarString);
|
||||
$requestLocationId = $this->GetLocationIdFromVCalendarString($vCalendarString);
|
||||
$requestedDevisComment = $this->GetDevisCommentFromVCalendarString($vCalendarString);
|
||||
@ -226,15 +240,17 @@ class GestionService
|
||||
$devis['lieu_id'] == $requestLocationId &&
|
||||
$devis['comment'] == $requestedDevisComment &&
|
||||
$requestedArticleIds == $articleDevisIds &&
|
||||
$devis['date'] == $requestedDevisDate;
|
||||
$devis['date'] == $requestedDevisDate &&
|
||||
($currentDefunt['lieu_deces'] ?? null) == $requestedLieuDeces &&
|
||||
($currentDefunt['date_naissance'] ?? null) == $requestedDateNaissance;
|
||||
}
|
||||
|
||||
public function HandleUpdatedCalendarObject(string $vCalendarString)
|
||||
{
|
||||
try {
|
||||
$isPrivate = $this->GetIsPivateFromVCalendarString($vCalendarString);
|
||||
$absenceType = VCalendarHelpers::GetValueFromKeyInVCalendarString('ABSENCETYPE',$vCalendarString);
|
||||
if ($isPrivate || $absenceType ) {
|
||||
$absenceType = VCalendarHelpers::GetValueFromKeyInVCalendarString('ABSENCETYPE', $vCalendarString);
|
||||
if ($isPrivate || $absenceType) {
|
||||
//from devis calendar to leave calendar
|
||||
$calendarUuid = $this->GetCalendarUuidFromVCalendarString($vCalendarString);
|
||||
$devis = $this->gestionBdd->getDevisByCalendarUuid($calendarUuid);
|
||||
@ -280,11 +296,30 @@ class GestionService
|
||||
if ($devis != null) {
|
||||
$userPrincipalName = $this->gestionBdd->getCalendarPrincipalNameByCalendarId($targetCalendarId);
|
||||
if ($userPrincipalName != null) {
|
||||
$thanatoId = $this->gestionBdd->getThanatoIdByUserUuid($userPrincipalName);
|
||||
if ($thanatoId != null) {
|
||||
$thanatoHasBeenChanged = $thanatoId != $devis["id_thanato"];
|
||||
$thanato = $this->gestionBdd->getThanatoByUserUuid($userPrincipalName);
|
||||
if ($thanato != null) {
|
||||
$thanatoHasBeenChanged = $thanato['id'] != $devis["id_thanato"];
|
||||
if ($thanatoHasBeenChanged) {
|
||||
$this->gestionBdd->updateDevisThanato($devis['id'], $thanatoId);
|
||||
$oldThanato = $this->gestionBdd->getThanatoByThanatoId($devis['id_thanato']);
|
||||
$oldThanatoUserUuid = $oldThanato['fk_user_uuid'];
|
||||
//delete ligne trajet from old devis
|
||||
$this->gestionBdd->deleteLigneTrajetByDevisId($devis['id']);
|
||||
//delete from home and to home trajet if there is no devis at all for this date
|
||||
$month = explode('-', $devis['date'])[1];
|
||||
$year = explode('-', $devis['date'])[0];
|
||||
$oldThanatoTrajet = $this->gestionBdd->getTrajetByThanatoAndMonthYear(
|
||||
$devis['id_thanato'],
|
||||
$month,
|
||||
$year
|
||||
);
|
||||
if($oldThanatoTrajet != null) {
|
||||
$thereIsThanatoDevisRattachedToLigneTrajetForADate = $this->gestionBdd->thereIsThanatoDevisRattachedToLigneTrajetForADate($devis['date'], $oldThanatoTrajet['id']);
|
||||
if(!$thereIsThanatoDevisRattachedToLigneTrajetForADate) {
|
||||
$this->gestionBdd->deleteThanatoLigneTrajetForADateByIdTrajet($devis['date'], $oldThanatoTrajet['id']);
|
||||
}
|
||||
}
|
||||
$this->gestionBdd->updateDevisThanato($devis['id'], $thanato['id']);
|
||||
$this->gestionBdd->reArrangeLigneTrajetyByDevisId($devis['id'], $userPrincipalName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -300,10 +335,10 @@ class GestionService
|
||||
public function HandleCreatedCalendarObject(string $vCalendarString)
|
||||
{
|
||||
try {
|
||||
|
||||
$isPrivate = $this->GetIsPivateFromVCalendarString($vCalendarString);
|
||||
$absenceType = VCalendarHelpers::GetValueFromKeyInVCalendarString('ABSENCETYPE',$vCalendarString);
|
||||
if($isPrivate || $absenceType){
|
||||
|
||||
$isPrivate = $this->GetIsPivateFromVCalendarString($vCalendarString);
|
||||
$absenceType = VCalendarHelpers::GetValueFromKeyInVCalendarString('ABSENCETYPE', $vCalendarString);
|
||||
if($isPrivate || $absenceType) {
|
||||
//Nothing to do manage fo a private calendar
|
||||
return;
|
||||
}
|
||||
@ -317,11 +352,15 @@ class GestionService
|
||||
$thanatoId = $this->GetThanatoIdFromVCalendarString($vCalendarString);
|
||||
$calendarUuid = $this->GetCalendarUuidFromVCalendarString($vCalendarString);
|
||||
$userName = $this->GetThanatoNameFromVCalendarString($vCalendarString);
|
||||
|
||||
$lieuDeces = $this->getLieuDecesFromVCalendarString($vCalendarString);
|
||||
$dateNaissance = $this->getDateNaissanceFromVCalendarString($vCalendarString);
|
||||
|
||||
$devisAlreadyCreated = $this->IsDevisAlreadyCreated($clientId, $locationId, $thanatoId, $calendarSummary, $calendarUuid);
|
||||
if ($devisAlreadyCreated) {
|
||||
return;
|
||||
}
|
||||
$defuntId = $this->gestionBdd->insertDefuntByNameAndReturnId($calendarSummary);
|
||||
$defuntId = $this->gestionBdd->insertDefuntByNameAndReturnId($calendarSummary, $lieuDeces, $dateNaissance);
|
||||
$calendarStartDate = $this->GetCalendarDateFromVCalendarString($vCalendarString);
|
||||
$devisComment = $this->GetDevisCommentFromVCalendarString($vCalendarString);
|
||||
$devisId = $this->gestionBdd->insertDevisFromVCalendarAndReturnId($thanatoId, $clientId, $locationId, $defuntId, $calendarUuid, $calendarStartDate, $devisComment);
|
||||
@ -333,14 +372,13 @@ class GestionService
|
||||
$devisTalkMessage = $this->gestionBdd->getDevisTalkRoomMessage($devisId, $userName);
|
||||
$this->talkService->sendDevisTalkNotifications($devisTalkMessage, $userName, $this->userConnectedUuid);
|
||||
$this->gestionBdd->createDevisTrajetFromVCalendar($devisId, $userName);
|
||||
$this->devisPdfService->generateClientAndDefuntFolder($devisId , $this->userConnectedUuid);
|
||||
$this->devisPdfService->generateDevisPdfByDevisId($devisId, $this->userConnectedUuid);
|
||||
} catch (\OC\OCS\Exception $e) {
|
||||
$this->logger->debug("Error while handling created calendar object: " . $e->getMessage());
|
||||
} catch (\Throwable $e) {
|
||||
$this->logger->debug("Error while handling created calendar object: " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private function GetThanatoNameFromVCalendarString($vCalendarString)
|
||||
{
|
||||
@ -374,4 +412,16 @@ class GestionService
|
||||
$mapped = array_map('trim', $articles);
|
||||
return $mapped;
|
||||
}
|
||||
|
||||
private function getLieuDecesFromVCalendarString(string $vCalendarString): ?string
|
||||
{
|
||||
$lieuDecesValue = VCalendarHelpers::GetValueFromKeyInVCalendarString("LIEUDECES", $vCalendarString);
|
||||
return !empty($lieuDecesValue) ? trim($lieuDecesValue) : null;
|
||||
}
|
||||
|
||||
private function getDateNaissanceFromVCalendarString(string $vCalendarString): ?string
|
||||
{
|
||||
$dateNaissanceValue = VCalendarHelpers::GetValueFromKeyInVCalendarString("DATENAISSANCE", $vCalendarString);
|
||||
return !empty($dateNaissanceValue) ? trim($dateNaissanceValue) : null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,7 +34,7 @@ class InvoiceFunecapPdfHandler extends InvoiceGroupPdfHandler {
|
||||
public int $maxArticlePerPage = 6;
|
||||
|
||||
public function DrawArticlesTableValue(){
|
||||
$this->SetFont('ComicSans','',10);
|
||||
$this->SetFont('Arial','',10);
|
||||
$devisData = $this->factureData['devis'];
|
||||
$tvaValue = $this->factureData["configuration"]->tva_default;
|
||||
$totalHt = 0;
|
||||
|
||||
@ -57,8 +57,8 @@ class InvoiceGroupPdfHandler extends FPDF
|
||||
function Header()
|
||||
{
|
||||
if ($this->logo != "nothing") {
|
||||
$this->Image($this->logoPath . "logo.png", 2, 10, 75, 25);
|
||||
$this->AddWatermark();
|
||||
$this->Image($this->logoPath . "logo.png", 4, 2, 36, 37);
|
||||
// $this->AddWatermark();
|
||||
} else {
|
||||
$this->Cell(55, 30, '');
|
||||
}
|
||||
@ -68,27 +68,32 @@ class InvoiceGroupPdfHandler extends FPDF
|
||||
}
|
||||
function AddWatermark()
|
||||
{
|
||||
$this->SetAlpha(0.2);
|
||||
try {
|
||||
$this->SetAlpha(0.2);
|
||||
|
||||
$imagePath = $this->logoPath . "filigrane_pdf.png";
|
||||
list($originalWidth, $originalHeight) = getimagesize($imagePath);
|
||||
$imagePath = $this->logoPath . "filigrane_pdf.png";
|
||||
list($originalWidth, $originalHeight) = getimagesize($imagePath);
|
||||
|
||||
// Convertir les dimensions de pixels à mm (1 pixel = 0.264583 mm)
|
||||
// Convertir les dimensions de pixels à mm (1 pixel = 0.264583 mm)
|
||||
$originalWidth = $originalWidth * 0.264583;
|
||||
$originalHeight = $originalHeight * 0.264583;
|
||||
// Convertir les dimensions de pixels à mm (1 pixel = 0.264583 mm)
|
||||
// Convertir les dimensions de pixels à mm (1 pixel = 0.264583 mm)
|
||||
$originalWidth = $originalWidth * 0.264583;
|
||||
$originalHeight = $originalHeight * 0.264583;
|
||||
|
||||
// Augmenter l'échelle, par exemple, 1.5 pour 150% de la taille d'origine
|
||||
$scale = 1.7;
|
||||
$width = $originalWidth * $scale;
|
||||
$height = $originalHeight * $scale;
|
||||
// Calculer la position pour centrer l'image
|
||||
$x = (210 - $width) / 2 + 15; // Décalage à droite de 15 mm
|
||||
$y = ((297 - $height) / 2) + 21; // 297 mm est la hauteur d'une page A4
|
||||
// Augmenter l'échelle, par exemple, 1.5 pour 150% de la taille d'origine
|
||||
$scale = 1.7;
|
||||
$width = $originalWidth * $scale;
|
||||
$height = $originalHeight * $scale;
|
||||
// Calculer la position pour centrer l'image
|
||||
$x = (210 - $width) / 2 + 15; // Décalage à droite de 15 mm
|
||||
$y = ((297 - $height) / 2) + 21; // 297 mm est la hauteur d'une page A4
|
||||
|
||||
// Ajouter l'image en filigrane
|
||||
$this->Image($imagePath, $x, $y, $width, $height); // Chemin, position x, position y, largeur, hauteur
|
||||
$this->SetAlpha(0.1); // Définir l'opacité
|
||||
// Ajouter l'image en filigrane
|
||||
$this->Image($imagePath, $x, $y, $width, $height); // Chemin, position x, position y, largeur, hauteur
|
||||
$this->SetAlpha(0.1); // Définir l'opacité
|
||||
|
||||
} catch (\Throwable $th) {
|
||||
//throw $th;
|
||||
}
|
||||
}
|
||||
|
||||
function SetAlpha($alpha)
|
||||
@ -109,7 +114,7 @@ class InvoiceGroupPdfHandler extends FPDF
|
||||
function Footer()
|
||||
{
|
||||
$this->SetY(-34);
|
||||
$this->SetFont('ComicSans', '', 7);
|
||||
$this->SetFont('Arial', '', 7);
|
||||
|
||||
$this->MultiCell(0, 4, utf8_decode(html_entity_decode('Tout retard de paiement entraînera de plein droit une pénalité de retard de 3 fois le taux légal ')));
|
||||
$this->MultiCell(0, 4, utf8_decode(html_entity_decode('(Loi 2008-776 du 4 août 2008) et une indemnité forfaitaire de 40 EUR pour frais de recouvrement sera appliquée.')));
|
||||
@ -119,7 +124,7 @@ class InvoiceGroupPdfHandler extends FPDF
|
||||
$this->MultiCell(0, 4, utf8_decode(html_entity_decode('sera due sur présentation de justificatifs (articles L.441-3 et L.441-6 du code de commerce).')));
|
||||
|
||||
$this->SetY(-10);
|
||||
$this->SetFont('ComicSans', '', 7);
|
||||
$this->SetFont('Arial', '', 7);
|
||||
$this->Cell(0, 10, utf8_decode(html_entity_decode($this->factureData['configuration']->legal_one)), 0, 0, 'C');
|
||||
}
|
||||
|
||||
@ -167,7 +172,7 @@ class InvoiceGroupPdfHandler extends FPDF
|
||||
public function DrawInvoiceCompanyInfo()
|
||||
{
|
||||
$this->SetY(40);
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($this->factureData['configuration']->entreprise), 0, 1);
|
||||
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($this->factureData['configuration_adresse']), 0, 1);
|
||||
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($this->factureData['configuration_adresse_city']), 0, 1);
|
||||
@ -176,7 +181,7 @@ class InvoiceGroupPdfHandler extends FPDF
|
||||
}
|
||||
public function DrawInvoiceClientInfo()
|
||||
{
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$clientName = $this->factureData['group_name'];
|
||||
$clientInfoXAxis = 135;
|
||||
|
||||
@ -266,13 +271,13 @@ class InvoiceGroupPdfHandler extends FPDF
|
||||
$factureDateEcheance->modify('last day of next month');
|
||||
$factureDateEcheance = $factureDateEcheance->format('d-m-Y');
|
||||
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->Cell(25, 7, 'DATE', 1, 0, 'C');
|
||||
$this->Cell(104, 7, 'CLIENT', 1, 0, 'C');
|
||||
$this->Cell(39, 7, 'FACTURE', 1, 0, 'C');
|
||||
$this->Cell(36, 7, 'ECHEANCE', 1, 1, 'C');
|
||||
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->Cell(25, 7, $factureDatePaiement, 1, 0, 'C');
|
||||
$this->Cell(104, 7, utf8_decode(html_entity_decode($this->factureData['group_name'])), 1, 0, 'C');
|
||||
$this->Cell(39, 7, $this->factureData['num'], 1, 0, 'C');
|
||||
@ -306,7 +311,7 @@ class InvoiceGroupPdfHandler extends FPDF
|
||||
$additionalMargRight = 1;
|
||||
$tvaValue = $this->factureData["configuration"]->tva_default;
|
||||
$columnNameY = $this->startingYOfArticlesTable - 1.5;
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->SetXY(12 + $additionalMargRight, $columnNameY);
|
||||
$this->Cell(7, 10, "Date", 0, 0, 'C');
|
||||
|
||||
@ -327,7 +332,7 @@ class InvoiceGroupPdfHandler extends FPDF
|
||||
{
|
||||
// Set espacement avant de continue
|
||||
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$devisData = $this->factureData['devis'];
|
||||
$tvaValue = $this->factureData["configuration"]->tva_default;
|
||||
$totalHt = 0;
|
||||
@ -406,7 +411,7 @@ class InvoiceGroupPdfHandler extends FPDF
|
||||
{
|
||||
$startOfYAfterMainTable = 239;
|
||||
$this->SetY($startOfYAfterMainTable);
|
||||
$this->SetFont('ComicSans', '', 8);
|
||||
$this->SetFont('Arial', '', 8);
|
||||
$this->MultiCell(0, 4, utf8_decode(html_entity_decode("Paiement à votre convenance par chèque à l'ordre de " . $this->factureData['configuration']->entreprise)));
|
||||
$this->MultiCell(0, 4, utf8_decode(html_entity_decode("en indiquant le numéro de facture, ou par virement :")));
|
||||
|
||||
@ -414,9 +419,9 @@ class InvoiceGroupPdfHandler extends FPDF
|
||||
//Table IBAN
|
||||
$startOftable = 3;
|
||||
$this->SetX($startOftable);
|
||||
$this->SetFont('ComicSans', '', 8);
|
||||
$this->SetFont('Arial', '', 8);
|
||||
$ibanWidth = 62;
|
||||
$this->Cell($ibanWidth, 6.5, 'IBAN : FR76 1360 6000 1436 5418 1800 038', 1, 1, 'C');
|
||||
$this->Cell($ibanWidth, 6.5, 'IBAN : FR76 1080 7004 4952 4211 5185 411', 1, 1, 'C');
|
||||
$ibanCursorX = $this->GetX();
|
||||
$this->SetX($startOftable);
|
||||
|
||||
@ -430,7 +435,7 @@ class InvoiceGroupPdfHandler extends FPDF
|
||||
$startOfArrayX = $pageWidth - $tableWidth - $marginRight;
|
||||
$startOfArrayY = $startOfYAfterMainTable + 0.5;
|
||||
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$totalPriceArray = $this->totalPrices;
|
||||
foreach ($totalPriceArray as $label => $price) {
|
||||
$this->SetXY($startOfArrayX, $startOfArrayY);
|
||||
|
||||
@ -33,7 +33,7 @@ use OCA\Gestion\Helpers\PriceHelpers;
|
||||
class InvoiceOgfPdfHandler extends InvoiceGroupPdfHandler {
|
||||
|
||||
public function DrawInvoiceClientInfo(){
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$clientName = $this->factureData['group_name'];
|
||||
$clientInfoXAxis = 125;
|
||||
|
||||
@ -78,14 +78,14 @@ class InvoiceOgfPdfHandler extends InvoiceGroupPdfHandler {
|
||||
$factureDatePaiement = $factureDatePaiement->format('d-m-Y');
|
||||
$factureDateEcheance->modify('last day of next month');
|
||||
$factureDateEcheance = $factureDateEcheance->format('d-m-Y');
|
||||
$this->SetFont('ComicSans', '', 9);
|
||||
$this->SetFont('Arial', '', 9);
|
||||
$this->Cell(30, 7, 'DATE', 1, 0, 'C');
|
||||
$this->Cell(60, 7, 'CLIENT', 1, 0, 'C');
|
||||
$this->Cell(40, 7, 'FACTURE', 1, 0, 'C');
|
||||
$this->Cell(40, 7, 'ECHEANCE', 1, 0, 'C');
|
||||
$this->Cell(34, 7, 'COMMANDE', 1, 1, 'C');
|
||||
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->Cell(30, 7, $factureDatePaiement, 1, 0, 'C');
|
||||
$this->Cell(60, 7, utf8_decode(html_entity_decode($this->factureData['group_name'])), 1, 0, 'C');
|
||||
$this->Cell(40, 7, $this->factureData['num'], 1, 0, 'C');
|
||||
|
||||
@ -48,12 +48,12 @@ class InvoicePdfHandler extends FPDF
|
||||
|
||||
private $articleTablesHeight = 130;
|
||||
|
||||
public $interLigneHeader = 5;
|
||||
public $interLigneHeader = 5;
|
||||
function Header()
|
||||
{
|
||||
if ($this->logo != "nothing") {
|
||||
$this->Image($this->logoPath . "logo.png", 2, 10, 75, 25);
|
||||
$this->AddWatermark();
|
||||
$this->Image($this->logoPath . "logo.png", 4, 2, 36, 37);
|
||||
// $this->AddWatermark();
|
||||
} else {
|
||||
$this->Cell(55, 30, '');
|
||||
}
|
||||
@ -61,34 +61,38 @@ class InvoicePdfHandler extends FPDF
|
||||
|
||||
function AddWatermark()
|
||||
{
|
||||
$this->SetAlpha(0.2);
|
||||
try {
|
||||
$this->SetAlpha(0.2);
|
||||
|
||||
$imagePath = $this->logoPath . "filigrane_pdf.png";
|
||||
list($originalWidth, $originalHeight) = getimagesize($imagePath);
|
||||
$imagePath = $this->logoPath . "filigrane_pdf.png";
|
||||
list($originalWidth, $originalHeight) = getimagesize($imagePath);
|
||||
|
||||
// Convertir les dimensions de pixels à mm (1 pixel = 0.264583 mm)
|
||||
// Convertir les dimensions de pixels à mm (1 pixel = 0.264583 mm)
|
||||
$originalWidth = $originalWidth * 0.264583;
|
||||
$originalHeight = $originalHeight * 0.264583;
|
||||
// Convertir les dimensions de pixels à mm (1 pixel = 0.264583 mm)
|
||||
// Convertir les dimensions de pixels à mm (1 pixel = 0.264583 mm)
|
||||
$originalWidth = $originalWidth * 0.264583;
|
||||
$originalHeight = $originalHeight * 0.264583;
|
||||
|
||||
// Augmenter l'échelle, par exemple, 1.5 pour 150% de la taille d'origine
|
||||
$scale = 1.7;
|
||||
$width = $originalWidth * $scale;
|
||||
$height = $originalHeight * $scale;
|
||||
// Calculer la position pour centrer l'image
|
||||
$x = (210 - $width) / 2 + 15; // Décalage à droite de 15 mm
|
||||
$y = ((297 - $height) / 2 ) + 21; // 297 mm est la hauteur d'une page A4
|
||||
// Augmenter l'échelle, par exemple, 1.5 pour 150% de la taille d'origine
|
||||
$scale = 1.7;
|
||||
$width = $originalWidth * $scale;
|
||||
$height = $originalHeight * $scale;
|
||||
// Calculer la position pour centrer l'image
|
||||
$x = (210 - $width) / 2 + 15; // Décalage à droite de 15 mm
|
||||
$y = ((297 - $height) / 2) + 21; // 297 mm est la hauteur d'une page A4
|
||||
|
||||
// Ajouter l'image en filigrane
|
||||
$this->Image($imagePath, $x, $y, $width, $height); // Chemin, position x, position y, largeur, hauteur
|
||||
$this->SetAlpha(0.1); // Définir l'opacité
|
||||
// Ajouter l'image en filigrane
|
||||
$this->Image($imagePath, $x, $y, $width, $height); // Chemin, position x, position y, largeur, hauteur
|
||||
$this->SetAlpha(0.1); // Définir l'opacité
|
||||
} catch (\Exception $e) {
|
||||
// Handle exception if needed
|
||||
}
|
||||
}
|
||||
|
||||
function SetAlpha($alpha)
|
||||
{
|
||||
// Appliquer la transparence au document
|
||||
$this->SetFillColor(255, 255, 255, $alpha * 255);
|
||||
$this->SetTextColor(0, 0, 0, $alpha * 255);
|
||||
$this->SetTextColor(0, 0, 0, $alpha * 255);
|
||||
$this->SetDrawColor(0, 0, 0, $alpha * 255);
|
||||
}
|
||||
|
||||
@ -96,16 +100,16 @@ class InvoicePdfHandler extends FPDF
|
||||
function Footer()
|
||||
{
|
||||
$this->SetY(-34);
|
||||
$this->SetFont('ComicSans', '', 7);
|
||||
$this->SetFont('Arial', '', 7);
|
||||
|
||||
$this->MultiCell(0,4,utf8_decode(html_entity_decode('Tout retard de paiement entraînera de plein droit une pénalité de retard de 3 fois le taux légal ')));
|
||||
$this->MultiCell(0,4,utf8_decode(html_entity_decode('(Loi 2008-776 du 4 août 2008) et une indemnité forfaitaire de 40 EUR pour frais de recouvrement sera appliquée.')));
|
||||
$this->MultiCell(0, 4, utf8_decode(html_entity_decode('Tout retard de paiement entraînera de plein droit une pénalité de retard de 3 fois le taux légal ')));
|
||||
$this->MultiCell(0, 4, utf8_decode(html_entity_decode('(Loi 2008-776 du 4 août 2008) et une indemnité forfaitaire de 40 EUR pour frais de recouvrement sera appliquée.')));
|
||||
$this->Ln(1);
|
||||
$this->MultiCell(0,4,utf8_decode(html_entity_decode('Si les frais de recouvrement sont supérieurs à ce montant forfaitaire, une indemnisation complémentaire')));
|
||||
$this->MultiCell(0,4,utf8_decode(html_entity_decode('sera due sur présentation de justificatifs (articles L.441-3 et L.441-6 du code de commerce).')));
|
||||
$this->MultiCell(0, 4, utf8_decode(html_entity_decode('Si les frais de recouvrement sont supérieurs à ce montant forfaitaire, une indemnisation complémentaire')));
|
||||
$this->MultiCell(0, 4, utf8_decode(html_entity_decode('sera due sur présentation de justificatifs (articles L.441-3 et L.441-6 du code de commerce).')));
|
||||
|
||||
$this->SetY(-10);
|
||||
$this->SetFont('ComicSans', '', 7);
|
||||
$this->SetFont('Arial', '', 7);
|
||||
$this->Cell(0, 10, utf8_decode(html_entity_decode($this->factureData['configuration']->legal_one)), 0, 0, 'C');
|
||||
}
|
||||
|
||||
@ -149,7 +153,7 @@ class InvoicePdfHandler extends FPDF
|
||||
private function DrawInvoiceCompanyInfo()
|
||||
{
|
||||
$this->SetY(40);
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($this->factureData['configuration']->entreprise), 0, 1);
|
||||
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($this->factureData['configuration_adresse']), 0, 1);
|
||||
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($this->factureData['configuration_adresse_city']), 0, 1);
|
||||
@ -158,7 +162,7 @@ class InvoicePdfHandler extends FPDF
|
||||
}
|
||||
private function DrawInvoiceClientInfo()
|
||||
{
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$clientName = $this->factureData['client_nom'];
|
||||
if ($this->factureData["group_name"] != null && $this->factureData["group_name"] != "") {
|
||||
$clientName = $this->factureData['group_name'];
|
||||
@ -172,13 +176,13 @@ class InvoicePdfHandler extends FPDF
|
||||
$addressWidth = $this->GetStringWidth($address);
|
||||
$addressWidthGreaterThanMaxWidth = $addressWidth > $availableWidhtForClientInfo;
|
||||
$addressIsMoreThanTwoLines = ($addressWidth / $availableWidhtForClientInfo) > 2;
|
||||
|
||||
|
||||
$clientInfoYAxis = $addressIsMoreThanTwoLines ? 35 : 35;// the old is ? 35 : 39 but not working
|
||||
$this->SetXY($clientInfoXAxis, $clientInfoYAxis);
|
||||
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport($clientName));
|
||||
$clientInfoYAxis += $this->interLigneHeader;
|
||||
$clientAddresses = explode(",", $clientAddress);
|
||||
foreach ($clientAddresses as $address) {
|
||||
foreach ($clientAddresses as $address) {
|
||||
$address = FileExportHelpers::FormatTextForExport(trim($address));
|
||||
$addressWidth = $this->GetStringWidth($address);
|
||||
$addressWidthGreaterThanMaxWidth = $addressWidth > $availableWidhtForClientInfo;
|
||||
@ -204,7 +208,7 @@ class InvoicePdfHandler extends FPDF
|
||||
$this->Cell(0, $this->interLigneHeader, trim(FileExportHelpers::FormatTextForExport($this->factureData['client_adress_city'])));
|
||||
$clientInfoYAxis += $this->interLigneHeader;
|
||||
$this->SetXY($clientInfoXAxis, $clientInfoYAxis);
|
||||
$this->Cell(0, $this->interLigneHeader,'Siret: ' . $this->factureData['siret']);
|
||||
$this->Cell(0, $this->interLigneHeader, 'Siret: ' . $this->factureData['siret']);
|
||||
$clientInfoYAxis += $this->interLigneHeader;
|
||||
$this->SetXY($clientInfoXAxis, $clientInfoYAxis);
|
||||
$this->Cell(0, $this->interLigneHeader, FileExportHelpers::FormatTextForExport('Mail : ') . $this->factureData['client_mail']);
|
||||
@ -228,14 +232,14 @@ class InvoicePdfHandler extends FPDF
|
||||
$factureDateEcheance->modify('last day of next month');
|
||||
$factureDateEcheance = $factureDateEcheance->format('d-m-Y');
|
||||
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->Cell(25, 7, 'DATE', 1, 0, 'C');
|
||||
$this->Cell(104, 7, 'CLIENT', 1, 0, 'C');
|
||||
$this->Cell(39, 7, 'FACTURE', 1, 0, 'C');
|
||||
$this->Cell(36, 7, 'ECHEANCE', 1, 1, 'C');
|
||||
|
||||
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->Cell(25, 7, $factureDatePaiement, 1, 0, 'C');
|
||||
$this->Cell(104, 7, utf8_decode(html_entity_decode($this->factureData['client_nom'])), 1, 0, 'C');
|
||||
$this->Cell(39, 7, $this->factureData['num'], 1, 0, 'C');
|
||||
@ -268,16 +272,16 @@ class InvoicePdfHandler extends FPDF
|
||||
$this->SetLineWidth(0.2);
|
||||
$gapBetweenStartingOfArticlesTableAndColumnName = 8;
|
||||
$tableHeight = $this->thereIsOrderOrCaseNumber ? $this->articleTablesHeight : $this->articleTablesHeight + 9;
|
||||
$this->Rect(3, $this->startingYOfArticlesTable , 204, $tableHeight, "D");
|
||||
$this->Rect(3, $this->startingYOfArticlesTable, 204, $tableHeight, "D");
|
||||
// cadre titre des colonnes
|
||||
$this->Line(3, $this->startingYOfArticlesTable + $gapBetweenStartingOfArticlesTableAndColumnName, 207, $this->startingYOfArticlesTable + $gapBetweenStartingOfArticlesTableAndColumnName);
|
||||
// les traits verticaux colonnes
|
||||
$additionalMargRight = 1;
|
||||
$endingLine = $this->thereIsOrderOrCaseNumber ? 231 : 230; // mois +1 pour le groupe
|
||||
$this->Line(27 + $additionalMargRight, $this->startingYOfArticlesTable, 27+ $additionalMargRight , $endingLine);
|
||||
$this->Line(142 + $additionalMargRight, $this->startingYOfArticlesTable, 142+ $additionalMargRight , $endingLine);
|
||||
$this->Line(164 + $additionalMargRight, $this->startingYOfArticlesTable, 164+ $additionalMargRight , $endingLine);
|
||||
$this->Line(182 + $additionalMargRight, $this->startingYOfArticlesTable, 182+ $additionalMargRight , $endingLine);
|
||||
$endingLine = $this->thereIsOrderOrCaseNumber ? 231 : 230; // mois +1 pour le groupe
|
||||
$this->Line(27 + $additionalMargRight, $this->startingYOfArticlesTable, 27 + $additionalMargRight, $endingLine);
|
||||
$this->Line(142 + $additionalMargRight, $this->startingYOfArticlesTable, 142 + $additionalMargRight, $endingLine);
|
||||
$this->Line(164 + $additionalMargRight, $this->startingYOfArticlesTable, 164 + $additionalMargRight, $endingLine);
|
||||
$this->Line(182 + $additionalMargRight, $this->startingYOfArticlesTable, 182 + $additionalMargRight, $endingLine);
|
||||
}
|
||||
|
||||
private function DrawArticlesTableHeader()
|
||||
@ -285,7 +289,7 @@ class InvoicePdfHandler extends FPDF
|
||||
$additionalMargRight = 1;
|
||||
$tvaValue = $this->factureData["configuration"]->tva_default;
|
||||
$columnNameY = $this->startingYOfArticlesTable - 1;
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$this->SetXY(12 + $additionalMargRight, $columnNameY);
|
||||
$this->Cell(7, 10, "Date", 0, 0, 'C');
|
||||
|
||||
@ -304,7 +308,7 @@ class InvoicePdfHandler extends FPDF
|
||||
|
||||
public function DrawArticlesTableValueAndReturnTotalPrice()
|
||||
{
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
$devisDate = $this->factureData['devis_date'];
|
||||
$devisDate = DateTime::createFromFormat('Y-m-d', $devisDate);
|
||||
$devisDate = $devisDate->format('d-m-Y');
|
||||
@ -332,10 +336,10 @@ class InvoicePdfHandler extends FPDF
|
||||
$this->Cell(5, 6, $dateValue, 0, 0);
|
||||
|
||||
$this->SetXY(30, $yValue);
|
||||
$this->MultiAlignCell($maxDescriptionWidth , 6, utf8_decode(html_entity_decode($productDescription)), 0, '0',);
|
||||
$this->MultiAlignCell($maxDescriptionWidth, 6, utf8_decode(html_entity_decode($productDescription)), 0, '0', );
|
||||
|
||||
|
||||
|
||||
|
||||
$this->SetXY(144, $yValue);
|
||||
$this->Cell(20, 6, number_format($valueHt, 2, '.', '') . chr(128), 0, 0, 'C');
|
||||
|
||||
@ -358,21 +362,21 @@ class InvoicePdfHandler extends FPDF
|
||||
private function DrawBankAndTotalPriceInfo($totalPriceArray)
|
||||
{
|
||||
$startOfYAfterMainTable = 236;
|
||||
$this->SetY( $startOfYAfterMainTable);
|
||||
$this->SetFont('ComicSans', '', 8);
|
||||
$this->MultiCell(0,4,utf8_decode(html_entity_decode("Paiement à votre convenance par chèque à l'ordre de ". $this->factureData['configuration']->entreprise)));
|
||||
$this->MultiCell(0,4,utf8_decode(html_entity_decode("en indiquant le numéro de facture, ou par virement :")));
|
||||
$this->SetY($startOfYAfterMainTable);
|
||||
$this->SetFont('Arial', '', 8);
|
||||
$this->MultiCell(0, 4, utf8_decode(html_entity_decode("Paiement à votre convenance par chèque à l'ordre de " . $this->factureData['configuration']->entreprise)));
|
||||
$this->MultiCell(0, 4, utf8_decode(html_entity_decode("en indiquant le numéro de facture, ou par virement :")));
|
||||
|
||||
$this->Ln(1);
|
||||
$startOftable = 3 ;
|
||||
$startOftable = 3;
|
||||
$this->SetX($startOftable);
|
||||
// Table IBAN
|
||||
$this->SetFont('ComicSans', '', 8);
|
||||
$this->SetFont('Arial', '', 8);
|
||||
$ibanWidth = 62;
|
||||
$this->Cell($ibanWidth, 6.5, 'IBAN : FR76 1360 6000 1436 5418 1800 038', 1, 1, 'C');
|
||||
$this->Cell($ibanWidth, 6.5, 'IBAN : FR76 1080 7004 4952 4211 5185 411', 1, 1, 'C');
|
||||
$this->SetX($startOftable);
|
||||
$this->Cell($ibanWidth, 6.5, 'Code SWIFT : AGRI FR PP 836', 1, 1, 'C');
|
||||
|
||||
|
||||
//TABLE HT
|
||||
$tableWidth = 48; // Largeur totale de la 2e table (20+20)
|
||||
$marginRight = 3; // Marge par rapport au bord droit
|
||||
@ -380,15 +384,15 @@ class InvoicePdfHandler extends FPDF
|
||||
|
||||
// Position correcte de la 2e table
|
||||
$startOfArrayX = $pageWidth - $tableWidth - $marginRight;
|
||||
$startOfArrayY = $startOfYAfterMainTable + 0.5;
|
||||
$startOfArrayY = $startOfYAfterMainTable + 0.5;
|
||||
|
||||
$this->SetFont('ComicSans', '', 10);
|
||||
$this->SetFont('Arial', '', 10);
|
||||
|
||||
foreach($totalPriceArray as $label => $price){
|
||||
$this->SetXY($startOfArrayX,$startOfArrayY);
|
||||
foreach ($totalPriceArray as $label => $price) {
|
||||
$this->SetXY($startOfArrayX, $startOfArrayY);
|
||||
$this->Cell(24, 6.5, $label, 1, 1, 'C');
|
||||
$this->SetXY($startOfArrayX + 24,$startOfArrayY);
|
||||
$this->Cell(24, 6.5, number_format($price,2,'.','').chr(128), 1, 1, 'C');
|
||||
$this->SetXY($startOfArrayX + 24, $startOfArrayY);
|
||||
$this->Cell(24, 6.5, number_format($price, 2, '.', '') . chr(128), 1, 1, 'C');
|
||||
$startOfArrayY += 6.5;
|
||||
}
|
||||
}
|
||||
@ -437,7 +441,7 @@ class InvoicePdfHandler extends FPDF
|
||||
if ($w == 0)
|
||||
$w = $this->w - $this->rMargin - $this->x;
|
||||
$wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
|
||||
$s = str_replace("\r", '', (string)$txt);
|
||||
$s = str_replace("\r", '', (string) $txt);
|
||||
$nb = strlen($s);
|
||||
if ($nb > 0 && $s[$nb - 1] == "\n")
|
||||
$nb--;
|
||||
|
||||
@ -41,77 +41,79 @@ use OCA\Gestion\Service\InvoiceRecap\InvoiceRecapService;
|
||||
use OCP\DB\Exception;
|
||||
use OCP\Files\IRootFolder;
|
||||
|
||||
class InvoicePdfService {
|
||||
/** @var Bdd */
|
||||
private $gestionBdd;
|
||||
class InvoicePdfService
|
||||
{
|
||||
/** @var Bdd */
|
||||
private $gestionBdd;
|
||||
|
||||
/** @var IRootFolder */
|
||||
private $rootFolder;
|
||||
private $rootFolder;
|
||||
|
||||
/** @var InvoiceRecapService */
|
||||
private $invoiceRecapService;
|
||||
private $invoiceRecapService;
|
||||
|
||||
private const DEFAULT_NEXTCLOUD_ADMIN = "admin";
|
||||
public function __construct(
|
||||
Bdd $gestionBdd,
|
||||
public function __construct(
|
||||
Bdd $gestionBdd,
|
||||
IRootFolder $rootFolder,
|
||||
InvoiceRecapService $invoiceRecapService) {
|
||||
InvoiceRecapService $invoiceRecapService
|
||||
) {
|
||||
$this->gestionBdd = $gestionBdd;
|
||||
$this->rootFolder = $rootFolder;
|
||||
$this->invoiceRecapService = $invoiceRecapService;
|
||||
}
|
||||
}
|
||||
|
||||
private function getLogo(){
|
||||
private function getLogo()
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder(self::DEFAULT_NEXTCLOUD_ADMIN);
|
||||
try{
|
||||
try {
|
||||
if(isset($storage)){
|
||||
$file = $storage->get('/.gestion/logo.png');
|
||||
}else{
|
||||
return "nothing";
|
||||
}
|
||||
} catch(\OCP\Files\NotFoundException $e) {
|
||||
$file = $storage->get('/.gestion/logo.jpeg');
|
||||
}
|
||||
}
|
||||
catch(\OCP\Files\NotFoundException $e) {
|
||||
return "nothing";
|
||||
}
|
||||
try {
|
||||
try {
|
||||
if(isset($storage)) {
|
||||
$file = $storage->get('/.gestion/logo.png');
|
||||
} else {
|
||||
return "nothing";
|
||||
}
|
||||
} catch(\OCP\Files\NotFoundException $e) {
|
||||
$file = $storage->get('/.gestion/logo.jpeg');
|
||||
}
|
||||
} catch(\OCP\Files\NotFoundException $e) {
|
||||
return "nothing";
|
||||
}
|
||||
|
||||
return base64_encode($file->getContent());
|
||||
}
|
||||
return base64_encode($file->getContent());
|
||||
}
|
||||
|
||||
private function generateFactureSinglePdfByFactureId($factureId,$idNextCloud){
|
||||
private function generateFactureSinglePdfByFactureId($factureId, $idNextCloud)
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder($idNextCloud);
|
||||
$configs = json_decode($this->gestionBdd->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN));
|
||||
$currentConfig = $configs[0];
|
||||
$logo = $this->getLogo();
|
||||
$invoicePdfData = $this->gestionBdd->getInvoicePdfData($factureId,$currentConfig);
|
||||
if($invoicePdfData == null){
|
||||
return null;
|
||||
}
|
||||
$currentConfig = $configs[0];
|
||||
$logo = $this->getLogo();
|
||||
$invoicePdfData = $this->gestionBdd->getInvoicePdfData($factureId, $currentConfig);
|
||||
if($invoicePdfData == null) {
|
||||
return null;
|
||||
}
|
||||
$clean_folder = html_entity_decode(string: $currentConfig->path).'/';
|
||||
$factureFolders = $this->getFacturesFolder($invoicePdfData,$clean_folder);
|
||||
$factureFolders = $this->getFacturesFolder($invoicePdfData, $clean_folder);
|
||||
$pdf = new InvoicePdfHandler();
|
||||
$pdf->AddFont('ComicSans','','Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans','B','comic-sans-bold.php');
|
||||
$pdf->InvoicePdfFactory($invoicePdfData,$logo);
|
||||
// $pdf->AddFont('ComicSans','','Comic Sans MS.php');
|
||||
// $pdf->AddFont('ComicSans','B','comic-sans-bold.php');
|
||||
$pdf->InvoicePdfFactory($invoicePdfData, $logo);
|
||||
$pdf->SetFactureContent();
|
||||
$pdfContent = $pdf->Output('','S');
|
||||
$pdfContent = $pdf->Output('', 'S');
|
||||
$pdfFilename = $pdf->GetInvoiceFilename();
|
||||
$prefixPdf = "FACTURE";
|
||||
if($invoicePdfData['is_negative']){
|
||||
if($invoicePdfData['is_negative']) {
|
||||
$prefixPdf = "AVOIR";
|
||||
}
|
||||
$pdfFilename = $prefixPdf."_".$pdfFilename;
|
||||
$filenames = [];
|
||||
foreach($factureFolders as $folder){
|
||||
foreach($factureFolders as $folder) {
|
||||
try {
|
||||
$storage->newFolder($folder);
|
||||
}
|
||||
catch(\OCP\Files\NotPermittedException $e) {
|
||||
} catch(\OCP\Files\NotPermittedException $e) {
|
||||
}
|
||||
$ff_pdf = $folder.$pdfFilename.'.pdf';
|
||||
$ff_pdf = $folder.$pdfFilename.'.pdf';
|
||||
$storage->newFile($ff_pdf);
|
||||
$file_pdf = $storage->get($ff_pdf);
|
||||
$file_pdf->putContent($pdfContent);
|
||||
@ -124,18 +126,19 @@ class InvoicePdfService {
|
||||
];
|
||||
}
|
||||
|
||||
public function generateFacturePdfByFactureId($factureId,$idNextCloud){
|
||||
public function generateFacturePdfByFactureId($factureId, $idNextCloud)
|
||||
{
|
||||
$factureType = $this->gestionBdd->getFactureTypeByFactureId($factureId);
|
||||
if($factureType == FactureTypeConstant::TYPE_SINGLE){
|
||||
return $this->generateFactureSinglePdfByFactureId($factureId,$idNextCloud);
|
||||
}
|
||||
else{
|
||||
return $this->generateFactureGroupPdfByFactureId($factureId,$idNextCloud);
|
||||
if($factureType == FactureTypeConstant::TYPE_SINGLE) {
|
||||
return $this->generateFactureSinglePdfByFactureId($factureId, $idNextCloud);
|
||||
} else {
|
||||
return $this->generateFactureGroupPdfByFactureId($factureId, $idNextCloud);
|
||||
}
|
||||
}
|
||||
|
||||
private function getGroupFactureFolder(array $factureData,$racinePath){
|
||||
$clientRacineFolder = $racinePath.'CLIENTS/'.mb_strtoupper($factureData["group_name"],'UTF-8').'/';
|
||||
private function getGroupFactureFolder(array $factureData, $racinePath)
|
||||
{
|
||||
$clientRacineFolder = $racinePath.'CLIENTS/'.mb_strtoupper($factureData["group_name"], 'UTF-8').'/';
|
||||
$factureDate = $factureData['date_paiement'];
|
||||
$factureDatetime = new DateTime($factureDate);
|
||||
$factureDateYear = $factureDatetime->format('Y');
|
||||
@ -145,10 +148,11 @@ class InvoicePdfService {
|
||||
$factureByYearFolder
|
||||
];
|
||||
}
|
||||
|
||||
private function getFacturesFolder(array $factureData,$racinePath){
|
||||
$clientRacineFolder = $racinePath.'CLIENTS/'.mb_strtoupper($factureData["client_nom"],'UTF-8').'/';
|
||||
$defuntsFolder = $clientRacineFolder.'DEFUNTS/'.mb_strtoupper($factureData['defunt_nom'],'UTF-8').'/'.'FACTURES'.'/';
|
||||
|
||||
private function getFacturesFolder(array $factureData, $racinePath)
|
||||
{
|
||||
$clientRacineFolder = $racinePath.'CLIENTS/'.mb_strtoupper($factureData["client_nom"], 'UTF-8').'/';
|
||||
$defuntsFolder = $clientRacineFolder.'DEFUNTS/'.mb_strtoupper($factureData['defunt_nom'], 'UTF-8').'/'.'FACTURES'.'/';
|
||||
$devisDate = $factureData['devis_date'];
|
||||
$devisDatetime = new DateTime($devisDate);
|
||||
$devisDateYear = $devisDatetime->format('Y');
|
||||
@ -160,48 +164,48 @@ class InvoicePdfService {
|
||||
];
|
||||
}
|
||||
|
||||
private function generateFactureGroupPdfByFactureId($factureId,$idNextCloud){
|
||||
private function generateFactureGroupPdfByFactureId($factureId, $idNextCloud)
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder($idNextCloud);
|
||||
$configs = json_decode($this->gestionBdd->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN));
|
||||
$currentConfig = $configs[0];
|
||||
$logo = $this->getLogo();
|
||||
$invoicePdfData = $this->gestionBdd->getInvoiceGroupPdfData($factureId,$currentConfig);
|
||||
if($invoicePdfData == null){
|
||||
return "";
|
||||
}
|
||||
$currentConfig = $configs[0];
|
||||
$logo = $this->getLogo();
|
||||
$invoicePdfData = $this->gestionBdd->getInvoiceGroupPdfData($factureId, $currentConfig);
|
||||
if($invoicePdfData == null) {
|
||||
return "";
|
||||
}
|
||||
$templateType = $invoicePdfData['template_type_key'];
|
||||
$clean_folder = html_entity_decode(string: $currentConfig->path).'/';
|
||||
$factureFolders = $this->getGroupFactureFolder($invoicePdfData,$clean_folder);
|
||||
//For testing
|
||||
$factureFolders = $this->getGroupFactureFolder($invoicePdfData, $clean_folder);
|
||||
//For testing
|
||||
// $templateType = ClientTemplateTypeConstant::OGF;
|
||||
|
||||
|
||||
switch ($templateType) {
|
||||
case ClientTemplateTypeConstant::FUNECAP:
|
||||
$pdf = new InvoiceFunecapPdfHandler();
|
||||
break;
|
||||
|
||||
|
||||
case ClientTemplateTypeConstant::OGF:
|
||||
$pdf = new InvoiceOgfPdfHandler();
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
$pdf = new InvoiceGroupPdfHandler();
|
||||
break;
|
||||
}
|
||||
$pdf->AddFont('ComicSans','','Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans','B','comic-sans-bold.php');
|
||||
$pdf->InvoicePdfFactory($invoicePdfData,$logo);
|
||||
// $pdf->AddFont('ComicSans','','Comic Sans MS.php');
|
||||
// $pdf->AddFont('ComicSans','B','comic-sans-bold.php');
|
||||
$pdf->InvoicePdfFactory($invoicePdfData, $logo);
|
||||
$pdf->SetFactureContent();
|
||||
$pdfContent = $pdf->Output('','S');
|
||||
$pdfContent = $pdf->Output('', 'S');
|
||||
$pdfFilename = $pdf->GetInvoiceFilename();
|
||||
$filenames = [];
|
||||
foreach($factureFolders as $folder){
|
||||
foreach($factureFolders as $folder) {
|
||||
try {
|
||||
$storage->newFolder($folder);
|
||||
}
|
||||
catch(\OCP\Files\NotPermittedException $e) {
|
||||
} catch(\OCP\Files\NotPermittedException $e) {
|
||||
}
|
||||
$ff_pdf = $folder.$pdfFilename.'.pdf';
|
||||
$ff_pdf = $folder.$pdfFilename.'.pdf';
|
||||
$storage->newFile($ff_pdf);
|
||||
$file_pdf = $storage->get($ff_pdf);
|
||||
$file_pdf->putContent($pdfContent);
|
||||
@ -214,58 +218,61 @@ class InvoicePdfService {
|
||||
];
|
||||
}
|
||||
|
||||
public function generateFacturePdfByFactureIds(array $factureIds,$idNextCloud){
|
||||
foreach( $factureIds as $factureId ){
|
||||
$this->generateFacturePdfByFactureId($factureId,$idNextCloud);
|
||||
public function generateFacturePdfByFactureIds(array $factureIds, $idNextCloud)
|
||||
{
|
||||
foreach($factureIds as $factureId) {
|
||||
$this->generateFacturePdfByFactureId($factureId, $idNextCloud);
|
||||
}
|
||||
}
|
||||
|
||||
public function generateMultipleInvoicePdfByClientAndMonthYear($filter,$month,$year,$idNextCloud,$filterType){
|
||||
public function generateMultipleInvoicePdfByClientAndMonthYear($filter, $month, $year, $idNextCloud, $filterType)
|
||||
{
|
||||
$storage = $this->rootFolder->getUserFolder($idNextCloud);
|
||||
$configs = json_decode($this->gestionBdd->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN));
|
||||
$currentConfig = $configs[0];
|
||||
$currentConfig = $configs[0];
|
||||
$logo = $this->getLogo();
|
||||
$invoiceData = $this->gestionBdd->getInvoicePdfDataByClientAndMonthYear($filter,$month,$year,$currentConfig,$filterType);
|
||||
if(empty($invoiceData)){
|
||||
return null;
|
||||
}
|
||||
$invoiceData = $this->gestionBdd->getInvoicePdfDataByClientAndMonthYear($filter, $month, $year, $currentConfig, $filterType);
|
||||
if(empty($invoiceData)) {
|
||||
return null;
|
||||
}
|
||||
$pdf = new InvoicePdfHandler();
|
||||
$pdf->AddFont('ComicSans','','Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans','B','comic-sans-bold.php');
|
||||
$pdf->MutlipleInvoicePdfFactory($invoiceData,$logo);
|
||||
// $pdf->AddFont('ComicSans','','Comic Sans MS.php');
|
||||
// $pdf->AddFont('ComicSans','B','comic-sans-bold.php');
|
||||
$pdf->MutlipleInvoicePdfFactory($invoiceData, $logo);
|
||||
$pdf->SetMultipleFactureContent();
|
||||
$racinePath = html_entity_decode(string: $currentConfig->path).'/';
|
||||
$clientNameInFolder = $invoiceData[0]["client_nom"];
|
||||
if($invoiceData[0]['facture_type'] == MultipleFactureTypeConstant::GROUP_FILTER_TYPE){
|
||||
if($invoiceData[0]["group_name"] != null && $invoiceData[0]["group_name"] != ""){
|
||||
if($invoiceData[0]['facture_type'] == MultipleFactureTypeConstant::GROUP_FILTER_TYPE) {
|
||||
if($invoiceData[0]["group_name"] != null && $invoiceData[0]["group_name"] != "") {
|
||||
$clientNameInFolder = $invoiceData[0]["group_name"];
|
||||
}
|
||||
}
|
||||
$clientRacineFolder = $racinePath.'CLIENTS/'.mb_strtoupper($clientNameInFolder,'UTF-8').'/';
|
||||
$filename = "FACTURE".'_'.$pdf->GetMultipleInvoiceFilename($month,$year);
|
||||
$clientRacineFolder = $racinePath.'CLIENTS/'.mb_strtoupper($clientNameInFolder, 'UTF-8').'/';
|
||||
$filename = "FACTURE".'_'.$pdf->GetMultipleInvoiceFilename($month, $year);
|
||||
$filenamePath = $clientRacineFolder.$filename.'.pdf';
|
||||
$pdfContent = $pdf->Output('','S');
|
||||
$pdfContent = $pdf->Output('', 'S');
|
||||
try {
|
||||
$storage->newFolder($clientRacineFolder);
|
||||
}
|
||||
catch(\OCP\Files\NotPermittedException $e) {
|
||||
}
|
||||
} catch(\OCP\Files\NotPermittedException $e) {
|
||||
}
|
||||
$storage->newFile($filenamePath);
|
||||
$file_pdf = $storage->get($filenamePath);
|
||||
$file_pdf->putContent($pdfContent);
|
||||
return $filenamePath;
|
||||
}
|
||||
|
||||
public function generateInvoiceRecap($filter,$filterType,$date,$idNextCloud){
|
||||
$this->invoiceRecapService->generateInvoiceRecap($filter,$filterType,$date,$idNextCloud);
|
||||
public function generateInvoiceRecap($filter, $filterType, $date, $idNextCloud)
|
||||
{
|
||||
$this->invoiceRecapService->generateInvoiceRecap($filter, $filterType, $date, $idNextCloud);
|
||||
}
|
||||
|
||||
public function exportGroupOfDevisIntoFacture($clientId,$clientType,$month,$year,$facturationDate,$idNextcloud = BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD){
|
||||
try{
|
||||
public function exportGroupOfDevisIntoFacture($clientId, $clientType, $month, $year, $facturationDate, $idNextcloud = BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD)
|
||||
{
|
||||
try {
|
||||
$datetime = new Datetime();
|
||||
$month = $month ?? $datetime->format('m');
|
||||
$year = $year ?? $datetime->format('Y');
|
||||
|
||||
|
||||
$factureId = null;
|
||||
$fkClientId = null;
|
||||
$fkClientGroupFacturationId = null;
|
||||
@ -274,22 +281,22 @@ class InvoicePdfService {
|
||||
DevisMentionConstant::MENTION
|
||||
];
|
||||
// Recuperer les devis non facturés du client avant la date de facturation du mois
|
||||
//Si il a devis qui n est pas encore facturés
|
||||
//Si il a devis qui n est pas encore facturés
|
||||
//Cree un facture, atttaché l ID du facture au devis et generer le pdf
|
||||
|
||||
if($clientType == MultipleFactureTypeConstant::CLIENT_FILTER_TYPE){
|
||||
$devisIds = $this->gestionBdd->getDevisIdsByClientIdAndDate($clientId,$facturationDate,$devisMentionFiltersToBeInvoiced);
|
||||
if($clientType == MultipleFactureTypeConstant::CLIENT_FILTER_TYPE) {
|
||||
$devisIds = $this->gestionBdd->getDevisIdsByClientIdAndDate($clientId, $facturationDate, $devisMentionFiltersToBeInvoiced);
|
||||
$fkClientId = $clientId;
|
||||
$factureId = $this->gestionBdd->getFactureIdByClientIdAndDate($clientId,$facturationDate);
|
||||
$factureId = $this->gestionBdd->getFactureIdByClientIdAndDate($clientId, $facturationDate);
|
||||
|
||||
}else{
|
||||
$devisIds = $this->gestionBdd->getDevisIdsByClientGroupFacturationIdAnDate($clientId , $facturationDate , $devisMentionFiltersToBeInvoiced );
|
||||
} else {
|
||||
$devisIds = $this->gestionBdd->getDevisIdsByClientGroupFacturationIdAnDate($clientId, $facturationDate, $devisMentionFiltersToBeInvoiced);
|
||||
$fkClientGroupFacturationId = $clientId;
|
||||
$factureId = $this->gestionBdd->getFactureIdByClientGroupFacturationIdAndDate($clientId,$facturationDate);
|
||||
|
||||
$factureId = $this->gestionBdd->getFactureIdByClientGroupFacturationIdAndDate($clientId, $facturationDate);
|
||||
|
||||
}
|
||||
// if($clientType == MultipleFactureTypeConstant::CLIENT_FILTER_TYPE){
|
||||
// $devisIds = $this->gestionBdd->getDevisIdsByClientIdAndMonthYear($clientId,$month,$year,$devisMentionFiltersToBeInvoiced);
|
||||
// $devisIds = $this->gestionBdd->getDevisIdsByClientIdAndMonthYear($clientId,$month,$year,$devisMentionFiltersToBeInvoiced);
|
||||
// $fkClientId = $clientId;
|
||||
// }
|
||||
// else{
|
||||
@ -307,11 +314,11 @@ class InvoicePdfService {
|
||||
// $fkClientId,
|
||||
// $fkClientGroupFacturationId);
|
||||
// }
|
||||
|
||||
|
||||
if (!empty($devisIds)) {
|
||||
//Get facture by date and client
|
||||
$clientIsAlreadyFacturedForThisDate = $factureId != null && $factureId != 0;
|
||||
if (!$clientIsAlreadyFacturedForThisDate) {
|
||||
$clientIsAlreadyFacturedForThisDate = $factureId != null && $factureId != 0;
|
||||
if (!$clientIsAlreadyFacturedForThisDate) {
|
||||
$factureId = $this->gestionBdd->createFactureAndReturnFactureId(
|
||||
$facturationDate,
|
||||
FactureTypeConstant::TYPE_GROUP,
|
||||
@ -320,16 +327,15 @@ class InvoicePdfService {
|
||||
$fkClientId,
|
||||
$fkClientGroupFacturationId
|
||||
);
|
||||
}
|
||||
$this->gestionBdd->invoiceListOfDevisIds($devisIds , $factureId);
|
||||
$factureGeneratedResponse = $this->generateFactureGroupPdfByFactureId($factureId,$idNextcloud);
|
||||
}
|
||||
$this->gestionBdd->invoiceListOfDevisIds($devisIds, $factureId);
|
||||
$factureGeneratedResponse = $this->generateFactureGroupPdfByFactureId($factureId, $idNextcloud);
|
||||
return $factureGeneratedResponse["filenames"];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
catch(Exception){
|
||||
} catch(Exception) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -151,8 +151,8 @@ class InvoiceRecapService {
|
||||
foreach ($data_temp as $key_annee => $annee) {
|
||||
foreach ($annee as $key_mois => $mois) {
|
||||
$pdf = new FPDF();
|
||||
$pdf->AddFont('ComicSans','','Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans','B','comic-sans-bold.php');
|
||||
$pdf->AddFont('Arial','','Comic Sans MS.php');
|
||||
$pdf->AddFont('Arial','B','comic-sans-bold.php');
|
||||
$date_facture = $mois[0]['date_facture'];
|
||||
|
||||
$date_temp = date("t-m-Y", strtotime($date_facture));
|
||||
@ -171,13 +171,13 @@ class InvoiceRecapService {
|
||||
|
||||
// logo : 80 de largeur et 55 de hauteur
|
||||
if($doesLogoExist){
|
||||
$pdf->Image($this->defaultImagePath."logo.png", 2, 2, 50,35);
|
||||
$pdf->Image($this->defaultImagePath."logo.png", 10, 10, 75, 25);
|
||||
}
|
||||
|
||||
//adresse de mon entreprise
|
||||
$companyInfoXAxis = 10;
|
||||
$companyInfoYAxis = 40;
|
||||
$pdf->SetFont('ComicSans', '', 11);
|
||||
$pdf->SetFont('Arial', '', 11);
|
||||
$pdf->SetXY($companyInfoXAxis,$companyInfoYAxis);
|
||||
$pdf->Cell(0, 7, FileExportHelpers::FormatTextForExport($defaultConfig[0]->entreprise));
|
||||
$companyInfoYAxis += 7;
|
||||
@ -197,7 +197,7 @@ class InvoiceRecapService {
|
||||
// adresse du facture
|
||||
$clientInfoXAxis = 125;
|
||||
$clientInfoYAxis = 40;
|
||||
$pdf->SetFont('ComicSans','',size: 11);
|
||||
$pdf->SetFont('Arial','',size: 11);
|
||||
$pdf->SetXY($clientInfoXAxis,$clientInfoYAxis);
|
||||
$pdf->Cell( 0, 7, utf8_decode($clientGroupFacturation["group_facturation_name"]));
|
||||
$clientInfoYAxis += 7;
|
||||
@ -223,26 +223,26 @@ class InvoiceRecapService {
|
||||
|
||||
// observations
|
||||
$objetYAxis = 110;
|
||||
$pdf->SetFont( "ComicSans", "BU", 10 ); $pdf->SetXY( 10, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth("Objet:"), 0, "Objet:", 0, "L");
|
||||
$pdf->SetFont( "Arial", "BU", 10 ); $pdf->SetXY( 10, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth("Objet:"), 0, "Objet:", 0, "L");
|
||||
$objet = utf8_decode("Récapitulatif Facturation du mois de ").strtoupper(FileExportHelpers::ConvertSpecialChar(explode(' ', $date_formated)[1]));
|
||||
$pdf->SetFont( "ComicSans", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($objet), 0, $objet, 0, "L");
|
||||
$pdf->SetFont( "Arial", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($objet), 0, $objet, 0, "L");
|
||||
|
||||
$objetYAxis += 10;
|
||||
$pdf->SetFont( "ComicSans", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ); $pdf->Cell($pdf->GetStringWidth("Madame, Monsieur"), 0, "Madame, Monsieur", 0, "L");
|
||||
$pdf->SetFont( "Arial", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ); $pdf->Cell($pdf->GetStringWidth("Madame, Monsieur"), 0, "Madame, Monsieur", 0, "L");
|
||||
|
||||
$text1 = utf8_decode("Veuillez trouver ci-dessous le récapitulatif de la facturation du mois de ").strtoupper(FileExportHelpers::ConvertSpecialChar(explode(' ', $date_formated)[1])).".";
|
||||
$text2 = utf8_decode("Vous en souhaitant bonne réception.");
|
||||
$text3 = utf8_decode("Veuillez agréer, Madame, Monsieur, mes salutations les meilleures.");
|
||||
|
||||
$objetYAxis += 10;
|
||||
$pdf->SetFont( "ComicSans", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($text1), 0, $text1, 0, "L");
|
||||
$pdf->SetFont( "Arial", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($text1), 0, $text1, 0, "L");
|
||||
$objetYAxis += 5;
|
||||
$pdf->SetFont( "ComicSans", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($text2), 0, $text2, 0, "L");
|
||||
$pdf->SetFont( "Arial", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($text2), 0, $text2, 0, "L");
|
||||
$objetYAxis += 5;
|
||||
$pdf->SetFont( "ComicSans", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($text3), 0, $text3, 0, "L");
|
||||
$pdf->SetFont( "Arial", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($text3), 0, $text3, 0, "L");
|
||||
|
||||
// signature
|
||||
$pdf->SetFont('ComicSans','',11); $pdf->SetXY( 145, 170);
|
||||
$pdf->SetFont('Arial','',11); $pdf->SetXY( 145, 170);
|
||||
$pdf->Cell( $pdf->GetStringWidth($defaultConfig[0]->nom.' '.$defaultConfig[0]->prenom), 0, utf8_decode(html_entity_decode($defaultConfig[0]->nom.' '.$defaultConfig[0]->prenom)), 0, 0, 'L');
|
||||
if($doesSignatureExist){
|
||||
$pdf->Image($this->defaultImagePath."sign.png", 140, 175, 45,30);
|
||||
@ -251,7 +251,7 @@ class InvoiceRecapService {
|
||||
$y0 = 260;
|
||||
$pageWidth = $pdf->GetPageWidth();
|
||||
//Positionnement en bas et tout centrer
|
||||
$pdf->SetFont('ComicSans','',6);
|
||||
$pdf->SetFont('Arial','',6);
|
||||
|
||||
$pdf->SetXY( 1, $y0 + 4 ); $pdf->Cell( $pageWidth, 5, utf8_decode(html_entity_decode($defaultConfig[0]->legal_one)), 0, 0, 'C');
|
||||
$pdf->SetXY( 1, $y0 + 8 ); $pdf->Cell( $pageWidth, 5, utf8_decode(html_entity_decode($defaultConfig[0]->legal_two)), 0, 0, 'C');
|
||||
@ -276,13 +276,13 @@ class InvoiceRecapService {
|
||||
$pdf->SetMargins(0,0,10);
|
||||
|
||||
if($doesLogoExist){
|
||||
$pdf->Image($this->defaultImagePath."logo.png", 2, 2, 50,35);
|
||||
$pdf->Image($this->defaultImagePath."logo.png", 10, 10, 75, 25);
|
||||
}
|
||||
|
||||
//adresse de mon entreprise
|
||||
$companyInfoXAxis = 10;
|
||||
$companyInfoYAxis = 40;
|
||||
$pdf->SetFont('ComicSans', '', 11);
|
||||
$pdf->SetFont('Arial', '', 11);
|
||||
$pdf->SetXY($companyInfoXAxis,$companyInfoYAxis);
|
||||
$pdf->Cell(0, 7, FileExportHelpers::FormatTextForExport($defaultConfig[0]->entreprise));
|
||||
$companyInfoYAxis += 7;
|
||||
@ -300,13 +300,13 @@ class InvoiceRecapService {
|
||||
|
||||
// n° page en haute à droite
|
||||
if($nb_page>1){
|
||||
$pdf->SetXY( 120, 5 ); $pdf->SetFont( "ComicSans", "B", 9 ); $pdf->Cell( 160, 8, $num_page . '/' . $nb_page, 0, 0, 'C');
|
||||
$pdf->SetXY( 120, 5 ); $pdf->SetFont( "Arial", "B", 9 ); $pdf->Cell( 160, 8, $num_page . '/' . $nb_page, 0, 0, 'C');
|
||||
}
|
||||
|
||||
// adresse du facture
|
||||
$clientInfoXAxis = 125;
|
||||
$clientInfoYAxis = $clientAdressIsMultiline ? 33 : 40;
|
||||
$pdf->SetFont('ComicSans','',size: 11);
|
||||
$pdf->SetFont('Arial','',size: 11);
|
||||
$pdf->SetXY($clientInfoXAxis,$clientInfoYAxis);
|
||||
$pdf->Cell( 0, 7, utf8_decode('Groupe '.$clientGroupFacturation["group_facturation_name"]));
|
||||
$clientInfoYAxis += 7;
|
||||
@ -352,13 +352,13 @@ class InvoiceRecapService {
|
||||
$pdf->Line(99, 80, 99, 233);
|
||||
}
|
||||
// titre colonne
|
||||
$pdf->SetXY( 1, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 30, 8, FileExportHelpers::FormatTextForExport("N°"), 0, 0, 'C');
|
||||
$pdf->SetXY( 26, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 18, 8, "Date", 0, 0, 'C');
|
||||
$pdf->SetXY( 47, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 50, 8, FileExportHelpers::FormatTextForExport("Défunt"), 0, 0, 'C');
|
||||
$pdf->SetXY( 100, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 45, 8, FileExportHelpers::FormatTextForExport("Articles"), 0, 0, 'C');
|
||||
$pdf->SetXY( 147, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 13, 8, "H.T.", 0, 0, 'C');
|
||||
$pdf->SetXY( 168, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 10, 8, "TVA 20%", 0, 0, 'C');
|
||||
$pdf->SetXY( 183, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 22, 8, "T.T.C", 0, 0, 'C');
|
||||
$pdf->SetXY( 1, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 30, 8, FileExportHelpers::FormatTextForExport("N°"), 0, 0, 'C');
|
||||
$pdf->SetXY( 26, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 18, 8, "Date", 0, 0, 'C');
|
||||
$pdf->SetXY( 47, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 50, 8, FileExportHelpers::FormatTextForExport("Défunt"), 0, 0, 'C');
|
||||
$pdf->SetXY( 100, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 45, 8, FileExportHelpers::FormatTextForExport("Articles"), 0, 0, 'C');
|
||||
$pdf->SetXY( 147, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 13, 8, "H.T.", 0, 0, 'C');
|
||||
$pdf->SetXY( 168, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 10, 8, "TVA 20%", 0, 0, 'C');
|
||||
$pdf->SetXY( 183, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 22, 8, "T.T.C", 0, 0, 'C');
|
||||
|
||||
// (new DateTime($facture['date_soin']))->format('d-M')
|
||||
$formatter_ds = new IntlDateFormatter('fr_FR', IntlDateFormatter::SHORT, IntlDateFormatter::NONE);
|
||||
@ -376,20 +376,20 @@ class InvoiceRecapService {
|
||||
$defuntNameText = $mois[$index_facture_position]['defunt'];
|
||||
$defuntNameTextWidth = $pdf->GetStringWidth($defuntNameText);
|
||||
$defuntNameTextIsMultiline = $defuntNameTextWidth >= 50;
|
||||
$pdf->SetXY( 6, $y_facture ); $pdf->SetFont('ComicSans','',8); $pdf->Cell( 28, 5, $mois[$index_facture_position]['num'], 0, 0, '');
|
||||
$pdf->SetXY( 29, $y_facture ); $pdf->SetFont('ComicSans','',8); $pdf->Cell( 28, 5, utf8_decode($formatter_ds->format($date_soin_temp)), 0, 0, '');
|
||||
$pdf->SetXY( 6, $y_facture ); $pdf->SetFont('Arial','',8); $pdf->Cell( 28, 5, $mois[$index_facture_position]['num'], 0, 0, '');
|
||||
$pdf->SetXY( 29, $y_facture ); $pdf->SetFont('Arial','',8); $pdf->Cell( 28, 5, utf8_decode($formatter_ds->format($date_soin_temp)), 0, 0, '');
|
||||
$pdf->SetXY( 47, $y_facture );
|
||||
$pdf->SetFont('ComicSans','',8);
|
||||
$pdf->SetFont('Arial','',8);
|
||||
if($defuntNameTextIsMultiline){
|
||||
$pdf->MultiCell( 50, 5, FileExportHelpers::FormatTextForExport($defuntNameText),0,'L');
|
||||
}
|
||||
else{
|
||||
$pdf->Cell( 50, 5, FileExportHelpers::FormatTextForExport($defuntNameText),0);
|
||||
}
|
||||
$pdf->SetXY( 100, $y_facture ); $pdf->SetFont('ComicSans','',8); $pdf->Cell( 38, 5, FileExportHelpers::FormatTextForExport($mois[$index_facture_position]['produit_references']), 0, 0, '');
|
||||
$pdf->SetXY( 147, $y_facture ); $pdf->SetFont('ComicSans','',8); $pdf->Cell( 13, 5, number_format($mois[$index_facture_position]['montant_htc'],2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetXY( 168, $y_facture ); $pdf->SetFont('ComicSans','',8); $pdf->Cell( 10, 5, number_format($mois[$index_facture_position]['montant_tva'],2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetXY( 183, $y_facture ); $pdf->SetFont('ComicSans','',8); $pdf->Cell( 22, 5, number_format($mois[$index_facture_position]['montant_ttc'],2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetXY( 100, $y_facture ); $pdf->SetFont('Arial','',8); $pdf->Cell( 38, 5, FileExportHelpers::FormatTextForExport($mois[$index_facture_position]['produit_references']), 0, 0, '');
|
||||
$pdf->SetXY( 147, $y_facture ); $pdf->SetFont('Arial','',8); $pdf->Cell( 13, 5, number_format($mois[$index_facture_position]['montant_htc'],2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetXY( 168, $y_facture ); $pdf->SetFont('Arial','',8); $pdf->Cell( 10, 5, number_format($mois[$index_facture_position]['montant_tva'],2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetXY( 183, $y_facture ); $pdf->SetFont('Arial','',8); $pdf->Cell( 22, 5, number_format($mois[$index_facture_position]['montant_ttc'],2,'.','').chr(128), 0, 0, 'C');
|
||||
|
||||
$montant_ht_total = $montant_ht_total+$mois[$index_facture_position]['montant_htc'];
|
||||
$montant_tva_total = $montant_tva_total+$mois[$index_facture_position]['montant_tva'];
|
||||
@ -409,13 +409,13 @@ class InvoiceRecapService {
|
||||
if ($num_page == $nb_page)
|
||||
{
|
||||
$pdf->Line(5, 225, 205, 225);
|
||||
$pdf->SetFont('ComicSans','B',8); $pdf->SetXY( 5, 225 ); $pdf->Cell( 140, 8, 'TOTAL', 0, 0, 'C');
|
||||
$pdf->SetFont('ComicSans','',8); $pdf->SetXY( 147, 225 ); $pdf->Cell( 13, 8, number_format($montant_ht_total,2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetFont('ComicSans','',8); $pdf->SetXY( 168, 225 ); $pdf->Cell( 10, 8, number_format($montant_tva_total,2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetFont('ComicSans','',8); $pdf->SetXY( 183, 225 ); $pdf->Cell( 22, 8, number_format($montant_ttc_total,2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetFont('Arial','B',8); $pdf->SetXY( 5, 225 ); $pdf->Cell( 140, 8, 'TOTAL', 0, 0, 'C');
|
||||
$pdf->SetFont('Arial','',8); $pdf->SetXY( 147, 225 ); $pdf->Cell( 13, 8, number_format($montant_ht_total,2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetFont('Arial','',8); $pdf->SetXY( 168, 225 ); $pdf->Cell( 10, 8, number_format($montant_tva_total,2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetFont('Arial','',8); $pdf->SetXY( 183, 225 ); $pdf->Cell( 22, 8, number_format($montant_ttc_total,2,'.','').chr(128), 0, 0, 'C');
|
||||
|
||||
$pdf->SetFont('ComicSans','B',8); $pdf->SetXY( 147, 233 ); $pdf->Cell( 30, 6.5, 'TOTAL TTC', 0, 0, 'C');
|
||||
$pdf->SetFont('ComicSans','B',8); $pdf->SetXY( 183, 233 ); $pdf->Cell( 22, 6.5, number_format($montant_ttc_total,2,'.','').chr(128), 0, 0, 'C', true);
|
||||
$pdf->SetFont('Arial','B',8); $pdf->SetXY( 147, 233 ); $pdf->Cell( 30, 6.5, 'TOTAL TTC', 0, 0, 'C');
|
||||
$pdf->SetFont('Arial','B',8); $pdf->SetXY( 183, 233 ); $pdf->Cell( 22, 6.5, number_format($montant_ttc_total,2,'.','').chr(128), 0, 0, 'C', true);
|
||||
$pdf->Line(145, 233, 145, 240);
|
||||
$pdf->Line(183, 233, 183, 240);
|
||||
$pdf->Line(183, 233, 205, 233);
|
||||
@ -428,7 +428,7 @@ class InvoiceRecapService {
|
||||
$pdf->SetFillColor(255);
|
||||
$pdf->SetTextColor(0, 0, 0);
|
||||
|
||||
$pdf->SetFont('ComicSans','',9);
|
||||
$pdf->SetFont('Arial','',9);
|
||||
|
||||
$pdf->SetXY( 10, $y1 ); $pdf->Cell( $pdf->GetPageWidth(), 4, utf8_decode("Loi N° 92-442 du 31 décembre 1992: La présente facture est payable en comptant a réception."), 0, 0, 'L');
|
||||
$pdf->SetXY( 10, $y1 + 4 ); $pdf->Cell( $pdf->GetPageWidth(), 4, utf8_decode("Indemnité forfaitaire pour frais de recouvrement due en cas de retard de paiement: 40").chr(128), 0, 0, 'L');
|
||||
@ -438,7 +438,7 @@ class InvoiceRecapService {
|
||||
// pied de page
|
||||
// **************************
|
||||
|
||||
$pdf->SetFont('ComicSans','',6);
|
||||
$pdf->SetFont('Arial','',6);
|
||||
$pdf->SetXY( 1, $y0 + 4 ); $pdf->Cell( $pageWidth, 5, utf8_decode(html_entity_decode($defaultConfig[0]->legal_one)), 0, 0, 'C');
|
||||
$pdf->SetXY( 1, $y0 + 8 ); $pdf->Cell( $pageWidth, 5, utf8_decode(html_entity_decode($defaultConfig[0]->legal_two)), 0, 0, 'C');
|
||||
$pdf->SetXY( 1, $y0 + 12 ); $pdf->Cell( $pageWidth, 5, utf8_decode(html_entity_decode($defaultConfig[0]->telephone)), 0, 0, 'C');
|
||||
@ -543,8 +543,8 @@ class InvoiceRecapService {
|
||||
foreach ($annee as $key_mois => $mois) {
|
||||
foreach ($mois as $key_client => $client) {
|
||||
$pdf = new FPDF();
|
||||
$pdf->AddFont('ComicSans','','Comic Sans MS.php');
|
||||
$pdf->AddFont('ComicSans','B','comic-sans-bold.php');
|
||||
$pdf->AddFont('Arial','','Comic Sans MS.php');
|
||||
$pdf->AddFont('Arial','B','comic-sans-bold.php');
|
||||
$current_client = '';
|
||||
$clientHeaderLabel = '';
|
||||
$clientAddress = '';
|
||||
@ -589,13 +589,13 @@ class InvoiceRecapService {
|
||||
|
||||
// logo : 80 de largeur et 55 de hauteur
|
||||
if($doesLogoExist){
|
||||
$pdf->Image($this->defaultImagePath."logo.png", 2, 2, 50,35);
|
||||
$pdf->Image($this->defaultImagePath."logo.png", 10, 10, 75, 25);
|
||||
}
|
||||
|
||||
//adresse de mon entreprise
|
||||
$companyInfoXAxis = 10;
|
||||
$companyInfoYAxis = 40;
|
||||
$pdf->SetFont('ComicSans', '', 11);
|
||||
$pdf->SetFont('Arial', '', 11);
|
||||
$pdf->SetXY($companyInfoXAxis,$companyInfoYAxis);
|
||||
$pdf->Cell(0, 7, FileExportHelpers::FormatTextForExport($defaultConfig[0]->entreprise));
|
||||
$companyInfoYAxis += 7;
|
||||
@ -615,7 +615,7 @@ class InvoiceRecapService {
|
||||
// adresse du facture
|
||||
$clientInfoXAxis = 125;
|
||||
$clientInfoYAxis = 40;
|
||||
$pdf->SetFont('ComicSans','',size: 11);
|
||||
$pdf->SetFont('Arial','',size: 11);
|
||||
$pdf->SetXY($clientInfoXAxis,$clientInfoYAxis);
|
||||
$pdf->Cell( 0, 7, utf8_decode($clientHeaderLabel));
|
||||
$clientInfoYAxis += 7;
|
||||
@ -640,26 +640,26 @@ class InvoiceRecapService {
|
||||
|
||||
// observations
|
||||
$objetYAxis = 110;
|
||||
$pdf->SetFont( "ComicSans", "BU", 10 ); $pdf->SetXY( 10, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth("Objet:"), 0, "Objet:", 0, "L");
|
||||
$pdf->SetFont( "Arial", "BU", 10 ); $pdf->SetXY( 10, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth("Objet:"), 0, "Objet:", 0, "L");
|
||||
$objet = utf8_decode("Récapitulatif Facturation du mois de ").strtoupper(FileExportHelpers::ConvertSpecialChar(explode(' ', $date_formated)[1]));
|
||||
$pdf->SetFont( "ComicSans", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($objet), 0, $objet, 0, "L");
|
||||
$pdf->SetFont( "Arial", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($objet), 0, $objet, 0, "L");
|
||||
|
||||
$objetYAxis += 10;
|
||||
$pdf->SetFont( "ComicSans", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ); $pdf->Cell($pdf->GetStringWidth("Madame, Monsieur"), 0, "Madame, Monsieur", 0, "L");
|
||||
$pdf->SetFont( "Arial", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ); $pdf->Cell($pdf->GetStringWidth("Madame, Monsieur"), 0, "Madame, Monsieur", 0, "L");
|
||||
|
||||
$text1 = utf8_decode("Veuillez trouver ci-dessous le récapitulatif de la facturation du mois de ").strtoupper(FileExportHelpers::ConvertSpecialChar(explode(' ', $date_formated)[1])).".";
|
||||
$text2 = utf8_decode("Vous en souhaitant bonne réception.");
|
||||
$text3 = utf8_decode("Veuillez agréer, Madame, Monsieur, mes salutations les meilleures.");
|
||||
|
||||
$objetYAxis += 10;
|
||||
$pdf->SetFont( "ComicSans", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($text1), 0, $text1, 0, "L");
|
||||
$pdf->SetFont( "Arial", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($text1), 0, $text1, 0, "L");
|
||||
$objetYAxis += 5;
|
||||
$pdf->SetFont( "ComicSans", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($text2), 0, $text2, 0, "L");
|
||||
$pdf->SetFont( "Arial", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($text2), 0, $text2, 0, "L");
|
||||
$objetYAxis += 5;
|
||||
$pdf->SetFont( "ComicSans", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($text3), 0, $text3, 0, "L");
|
||||
$pdf->SetFont( "Arial", "", 10 ); $pdf->SetXY( $pdf->GetStringWidth("Objet")+15, $objetYAxis ) ; $pdf->Cell($pdf->GetStringWidth($text3), 0, $text3, 0, "L");
|
||||
|
||||
// signature
|
||||
$pdf->SetFont('ComicSans','',11); $pdf->SetXY( 145, 170);
|
||||
$pdf->SetFont('Arial','',11); $pdf->SetXY( 145, 170);
|
||||
$pdf->Cell( $pdf->GetStringWidth($defaultConfig[0]->nom.' '.$defaultConfig[0]->prenom), 0, utf8_decode(html_entity_decode($defaultConfig[0]->nom.' '.$defaultConfig[0]->prenom)), 0, 0, 'L');
|
||||
if($doesSignatureExist){
|
||||
$pdf->Image($this->defaultImagePath."sign.png", 140, 175, 45,30);
|
||||
@ -668,7 +668,7 @@ class InvoiceRecapService {
|
||||
$y0 = 260;
|
||||
$pageWidth = $pdf->GetPageWidth();
|
||||
//Positionnement en bas et tout centrer
|
||||
$pdf->SetFont('ComicSans','',7);
|
||||
$pdf->SetFont('Arial','',7);
|
||||
$pdf->SetXY( 1, $y0 + 4 ); $pdf->Cell( $pageWidth, 5, utf8_decode(html_entity_decode($defaultConfig[0]->mentions_default)), 0, 0, 'C');
|
||||
$pdf->SetXY( 1, $y0 + 8 ); $pdf->Cell( $pageWidth, 5, utf8_decode(html_entity_decode($defaultConfig[0]->legal_one)), 0, 0, 'C');
|
||||
$pdf->SetXY( 1, $y0 + 12 ); $pdf->Cell( $pageWidth, 5, utf8_decode(html_entity_decode($defaultConfig[0]->legal_two)), 0, 0, 'C');
|
||||
@ -692,13 +692,13 @@ class InvoiceRecapService {
|
||||
$pdf->SetAutoPagebreak(False);
|
||||
$pdf->SetMargins(0,0,10);
|
||||
if($doesLogoExist){
|
||||
$pdf->Image($this->defaultImagePath."logo.png", 2, 2, 50,35);
|
||||
$pdf->Image($this->defaultImagePath."logo.png", 10, 10, 75, 25);
|
||||
}
|
||||
|
||||
//adresse de mon entreprise
|
||||
$companyInfoXAxis = 10;
|
||||
$companyInfoYAxis = 40;
|
||||
$pdf->SetFont('ComicSans', '', 11);
|
||||
$pdf->SetFont('Arial', '', 11);
|
||||
$pdf->SetXY($companyInfoXAxis,$companyInfoYAxis);
|
||||
$pdf->Cell(0, 7, FileExportHelpers::FormatTextForExport($defaultConfig[0]->entreprise));
|
||||
$companyInfoYAxis += 7;
|
||||
@ -716,13 +716,13 @@ class InvoiceRecapService {
|
||||
|
||||
// n° page en haute à droite
|
||||
if($nb_page>1){
|
||||
$pdf->SetXY( 120, 5 ); $pdf->SetFont( "ComicSans", "B", 9 ); $pdf->Cell( 160, 8, $num_page . '/' . $nb_page, 0, 0, 'C');
|
||||
$pdf->SetXY( 120, 5 ); $pdf->SetFont( "Arial", "B", 9 ); $pdf->Cell( 160, 8, $num_page . '/' . $nb_page, 0, 0, 'C');
|
||||
}
|
||||
|
||||
// adresse du facture
|
||||
$clientInfoXAxis = 125;
|
||||
$clientInfoYAxis = $clientAdressIsMultiline ? 33 : 40;
|
||||
$pdf->SetFont('ComicSans','',size: 11);
|
||||
$pdf->SetFont('Arial','',size: 11);
|
||||
$pdf->SetXY($clientInfoXAxis,$clientInfoYAxis);
|
||||
$pdf->Cell( 0, 7, utf8_decode($clientHeaderLabel));
|
||||
$clientInfoYAxis += 7;
|
||||
@ -768,13 +768,13 @@ class InvoiceRecapService {
|
||||
$pdf->Line(99, 80, 99, 233);
|
||||
}
|
||||
// titre colonne
|
||||
$pdf->SetXY( 1, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 30, 8, FileExportHelpers::FormatTextForExport("N°"), 0, 0, 'C');
|
||||
$pdf->SetXY( 26, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 18, 8, "Date", 0, 0, 'C');
|
||||
$pdf->SetXY( 47, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 50, 8, FileExportHelpers::FormatTextForExport("Défunt"), 0, 0, 'C');
|
||||
$pdf->SetXY( 100, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 45, 8, "Articles", 0, 0, 'C');
|
||||
$pdf->SetXY( 147, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 13, 8, "H.T.", 0, 0, 'C');
|
||||
$pdf->SetXY( 168, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 10, 8, "TVA 20%", 0, 0, 'C');
|
||||
$pdf->SetXY( 183, 81 ); $pdf->SetFont('ComicSans','B',8); $pdf->Cell( 22, 8, "T.T.C", 0, 0, 'C');
|
||||
$pdf->SetXY( 1, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 30, 8, FileExportHelpers::FormatTextForExport("N°"), 0, 0, 'C');
|
||||
$pdf->SetXY( 26, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 18, 8, "Date", 0, 0, 'C');
|
||||
$pdf->SetXY( 47, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 50, 8, FileExportHelpers::FormatTextForExport("Défunt"), 0, 0, 'C');
|
||||
$pdf->SetXY( 100, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 45, 8, "Articles", 0, 0, 'C');
|
||||
$pdf->SetXY( 147, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 13, 8, "H.T.", 0, 0, 'C');
|
||||
$pdf->SetXY( 168, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 10, 8, "TVA 20%", 0, 0, 'C');
|
||||
$pdf->SetXY( 183, 81 ); $pdf->SetFont('Arial','B',8); $pdf->Cell( 22, 8, "T.T.C", 0, 0, 'C');
|
||||
|
||||
// (new DateTime($facture['date_soin']))->format('d-M')
|
||||
$formatter_ds = new IntlDateFormatter('fr_FR', IntlDateFormatter::SHORT, IntlDateFormatter::NONE);
|
||||
@ -792,19 +792,19 @@ class InvoiceRecapService {
|
||||
$defuntNameText = $client[$index_facture_position]['defunt'];
|
||||
$defuntNameTextWidth = $pdf->GetStringWidth($defuntNameText);
|
||||
$defuntNameTextIsMultiline = $defuntNameTextWidth >= 50;
|
||||
$pdf->SetXY( 6, $y_facture ); $pdf->SetFont('ComicSans','',8); $pdf->Cell( 28, 5, $client[$index_facture_position]['num'], 0, 0, '');
|
||||
$pdf->SetXY( 29, $y_facture ); $pdf->SetFont('ComicSans','',8); $pdf->Cell( 18, 5, utf8_decode($formatter_ds->format($date_soin_temp)), 0, 0, '');
|
||||
$pdf->SetXY( 47, $y_facture ); $pdf->SetFont('ComicSans','',8);
|
||||
$pdf->SetXY( 6, $y_facture ); $pdf->SetFont('Arial','',8); $pdf->Cell( 28, 5, $client[$index_facture_position]['num'], 0, 0, '');
|
||||
$pdf->SetXY( 29, $y_facture ); $pdf->SetFont('Arial','',8); $pdf->Cell( 18, 5, utf8_decode($formatter_ds->format($date_soin_temp)), 0, 0, '');
|
||||
$pdf->SetXY( 47, $y_facture ); $pdf->SetFont('Arial','',8);
|
||||
if($defuntNameTextIsMultiline){
|
||||
$pdf->MultiCell( 50, 5, FileExportHelpers::FormatTextForExport($defuntNameText));
|
||||
}
|
||||
else{
|
||||
$pdf->Cell( 50, 5, FileExportHelpers::FormatTextForExport($defuntNameText),0);
|
||||
}
|
||||
$pdf->SetXY( 100, $y_facture ); $pdf->SetFont('ComicSans','',8); $pdf->Cell( 28, 5, utf8_decode(html_entity_decode($client[$index_facture_position]['produit_references'])), 0, 0, '');
|
||||
$pdf->SetXY( 147, $y_facture ); $pdf->SetFont('ComicSans','',8); $pdf->Cell( 13, 5, number_format($client[$index_facture_position]['montant_htc'],2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetXY( 168, $y_facture ); $pdf->SetFont('ComicSans','',8); $pdf->Cell( 10, 5, number_format($client[$index_facture_position]['montant_tva'],2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetXY( 183, $y_facture ); $pdf->SetFont('ComicSans','',8); $pdf->Cell( 22, 5, number_format($client[$index_facture_position]['montant_ttc'],2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetXY( 100, $y_facture ); $pdf->SetFont('Arial','',8); $pdf->Cell( 28, 5, utf8_decode(html_entity_decode($client[$index_facture_position]['produit_references'])), 0, 0, '');
|
||||
$pdf->SetXY( 147, $y_facture ); $pdf->SetFont('Arial','',8); $pdf->Cell( 13, 5, number_format($client[$index_facture_position]['montant_htc'],2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetXY( 168, $y_facture ); $pdf->SetFont('Arial','',8); $pdf->Cell( 10, 5, number_format($client[$index_facture_position]['montant_tva'],2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetXY( 183, $y_facture ); $pdf->SetFont('Arial','',8); $pdf->Cell( 22, 5, number_format($client[$index_facture_position]['montant_ttc'],2,'.','').chr(128), 0, 0, 'C');
|
||||
|
||||
$montant_ht_total = $montant_ht_total+$client[$index_facture_position]['montant_htc'];
|
||||
$montant_tva_total = $montant_tva_total+$client[$index_facture_position]['montant_tva'];
|
||||
@ -824,13 +824,13 @@ class InvoiceRecapService {
|
||||
{
|
||||
|
||||
$pdf->Line(5, 225, 205, 225);
|
||||
$pdf->SetFont('ComicSans','B',8); $pdf->SetXY( 5, 225 ); $pdf->Cell( 140, 8, 'TOTAL', 0, 0, 'C');
|
||||
$pdf->SetFont('ComicSans','',8); $pdf->SetXY( 147, 225 ); $pdf->Cell( 13, 8, number_format($montant_ht_total,2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetFont('ComicSans','',8); $pdf->SetXY( 168, 225 ); $pdf->Cell( 10, 8, number_format($montant_tva_total,2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetFont('ComicSans','',8); $pdf->SetXY( 183, 225 ); $pdf->Cell( 22, 8, number_format($montant_ttc_total,2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetFont('Arial','B',8); $pdf->SetXY( 5, 225 ); $pdf->Cell( 140, 8, 'TOTAL', 0, 0, 'C');
|
||||
$pdf->SetFont('Arial','',8); $pdf->SetXY( 147, 225 ); $pdf->Cell( 13, 8, number_format($montant_ht_total,2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetFont('Arial','',8); $pdf->SetXY( 168, 225 ); $pdf->Cell( 10, 8, number_format($montant_tva_total,2,'.','').chr(128), 0, 0, 'C');
|
||||
$pdf->SetFont('Arial','',8); $pdf->SetXY( 183, 225 ); $pdf->Cell( 22, 8, number_format($montant_ttc_total,2,'.','').chr(128), 0, 0, 'C');
|
||||
|
||||
$pdf->SetFont('ComicSans','B',8); $pdf->SetXY( 147, 233 ); $pdf->Cell( 30, 6.5, 'TOTAL TTC', 0, 0, 'C');
|
||||
$pdf->SetFont('ComicSans','B',8); $pdf->SetXY( 183, 233 ); $pdf->Cell( 22, 6.5, number_format($montant_ttc_total,2,'.','').chr(128), 0, 0, 'C', true);
|
||||
$pdf->SetFont('Arial','B',8); $pdf->SetXY( 147, 233 ); $pdf->Cell( 30, 6.5, 'TOTAL TTC', 0, 0, 'C');
|
||||
$pdf->SetFont('Arial','B',8); $pdf->SetXY( 183, 233 ); $pdf->Cell( 22, 6.5, number_format($montant_ttc_total,2,'.','').chr(128), 0, 0, 'C', true);
|
||||
$pdf->Line(145, 233, 145, 240);
|
||||
$pdf->Line(183, 233, 183, 240);
|
||||
$pdf->Line(183, 233, 205, 233);
|
||||
@ -843,7 +843,7 @@ class InvoiceRecapService {
|
||||
$pdf->SetFillColor(255);
|
||||
$pdf->SetTextColor(0, 0, 0);
|
||||
|
||||
$pdf->SetFont('ComicSans','',9);
|
||||
$pdf->SetFont('Arial','',9);
|
||||
|
||||
$pdf->SetXY( 10, $y1 );$pdf->Cell( $pdf->GetPageWidth(), 4, utf8_decode("Loi N° 92-442 du 31 décembre 1992: La présente facture est payable en comptant a réception."), 0, 0, 'L');
|
||||
$pdf->SetXY( 10, $y1 + 4 );$pdf->Cell( $pdf->GetPageWidth(), 4, utf8_decode("Indemnité forfaitaire pour frais de recouvrement due en cas de retard de paiement: 40").chr(128), 0, 0, 'L');
|
||||
@ -853,7 +853,7 @@ class InvoiceRecapService {
|
||||
// pied de page
|
||||
// **************************
|
||||
|
||||
$pdf->SetFont('ComicSans','',7);
|
||||
$pdf->SetFont('Arial','',7);
|
||||
$pdf->SetXY( 1, $y0 + 4 ); $pdf->Cell( $pageWidth, 5, utf8_decode(html_entity_decode($defaultConfig[0]->mentions_default)), 0, 0, 'C');
|
||||
$pdf->SetXY( 1, $y0 + 8 );$pdf->Cell( $pageWidth, 5, utf8_decode(html_entity_decode($defaultConfig[0]->legal_one)), 0, 0, 'C');
|
||||
$pdf->SetXY( 1, $y0 + 12 );$pdf->Cell( $pageWidth, 5, utf8_decode(html_entity_decode($defaultConfig[0]->legal_two)), 0, 0, 'C');
|
||||
|
||||
@ -38,23 +38,25 @@ class MailerService {
|
||||
){
|
||||
$this->adminStorage = $rootFolder->getUserFolder(BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD);
|
||||
}
|
||||
public function getFooterContent ($userName = "Johann"){
|
||||
public function getFooterContent ($userName = "Vanessa"){
|
||||
$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 ;
|
||||
return $wish.$cordialement.$signatureImage ;
|
||||
}
|
||||
|
||||
private function getSignatureHtmlEmailContent (){
|
||||
$signatureImage = $this->getSignatureContent();
|
||||
if (!$signatureImage) {
|
||||
return "";
|
||||
}
|
||||
return "<img style= 'width: 250px;height: 150px;' src='data:image/jpeg;base64,".base64_encode($signatureImage)."'>" ;
|
||||
return " HYGIENE FUNERAIRE du CENTRE";
|
||||
// $signatureImage = $this->getSignatureContent();
|
||||
// if (!$signatureImage) {
|
||||
// return "";
|
||||
// }
|
||||
// return "<img width='170' height='80' style= 'width: 170;height: 80px;display:block;' src='data:image/jpeg;base64,".base64_encode($signatureImage)."'>" ;
|
||||
}
|
||||
|
||||
private function getSignatureContent(){
|
||||
|
||||
try{
|
||||
if(isset($this->adminStorage)){
|
||||
$file = $this->adminStorage->get('/.gestion/sign.jpg');
|
||||
|
||||
@ -5,7 +5,7 @@ import "../css/mycss.css";
|
||||
import { globalConfiguration } from "./modules/mainFunction.mjs";
|
||||
import "./listener/main_listener";
|
||||
import "./listener/devisListener";
|
||||
import { exportClientDevisByMonthAndYearToPdf } from "./modules/ajaxRequest.mjs";
|
||||
import { exportClientDevisByMonthAndYearToPdf, exportClientDevisRecap } from "./modules/ajaxRequest.mjs";
|
||||
import 'select2/dist/css/select2.css';
|
||||
import 'select2';
|
||||
import '../css/mycss.css';
|
||||
|
||||
@ -4,7 +4,7 @@ import "datatables.net-dt/css/jquery.dataTables.css";
|
||||
import "../css/mycss.css";
|
||||
|
||||
import "./listener/main_listener";
|
||||
import { getBibliotheques, exportCareCertificate,getBijouxById, getHypodermiquesyId, getObservationsById, getproduits, saveAttestationPacemaker, saveRapportBijoux, saveRapportSoin, setBijouxPhoto, setDefuntCover, setDefuntPacemakerPhoto, updateDB } from "./modules/ajaxRequest.mjs";
|
||||
import { getBibliotheques, exportCareCertificate,getBijouxById, getHypodermiquesyId, getObservationsById, getproduits, saveAttestationPacemaker, saveAttestationAbsentPacemaker, saveRapportBijoux, saveRapportSoin, setBijouxPhoto, setDefuntCover, setDefuntPacemakerPhoto, updateDB } from "./modules/ajaxRequest.mjs";
|
||||
import { globalConfiguration } from "./modules/mainFunction.mjs";
|
||||
|
||||
let bibliotheques = [];
|
||||
@ -77,6 +77,7 @@ window.addEventListener("DOMContentLoaded", function () {
|
||||
});
|
||||
|
||||
var pacemakerBtn = document.getElementById("pacemakerBtn");
|
||||
var pacemakerAbsentBtn = document.getElementById("pacemakerAbsentBtn");
|
||||
var rapportSoinBtn = document.getElementById("rapportSoinBtn");
|
||||
var exportCareCertificateButton = document.getElementById("exportCareCertificate");
|
||||
var setDefuntCoverButton = this.document.getElementById("coverProductsSetButton");
|
||||
@ -144,6 +145,9 @@ window.addEventListener("DOMContentLoaded", function () {
|
||||
case 'pacemaker':
|
||||
saveAttestationPacemaker({ defuntId: defuntid ,email: isSendEmail ? email: ''});
|
||||
break;
|
||||
case 'pacemakerAbsent':
|
||||
saveAttestationAbsentPacemaker({ defuntId: defuntid ,email: isSendEmail ? email: ''});
|
||||
break;
|
||||
case 'rapport-soin':
|
||||
saveRapportSoin({ numdefunt: defuntid ,email: isSendEmail ? email: ''});
|
||||
break;
|
||||
@ -182,6 +186,12 @@ window.addEventListener("DOMContentLoaded", function () {
|
||||
modalElement.modal('show')
|
||||
// saveAttestationPacemaker({ defuntId: defuntid });
|
||||
});
|
||||
pacemakerAbsentBtn.addEventListener("click", function(){
|
||||
modalTitle.text("Générer l'attestation d'absence pacemaker")
|
||||
modalElement.data('export-type', 'pacemakerAbsent')
|
||||
modalElement.modal('show')
|
||||
// saveAttestationPacemaker({ defuntId: defuntid });
|
||||
});
|
||||
|
||||
rapportSoinBtn.addEventListener("click", function(){
|
||||
modalElement.data('export-type', 'rapport-soin')
|
||||
|
||||
@ -148,7 +148,6 @@ document.onchange = function(event) {
|
||||
};
|
||||
|
||||
$('body').on('click', '#showGroupDevisFacturationModal', function () {
|
||||
console.log("sdsfs");
|
||||
$('#groupDevisFacturationModal').show();
|
||||
});
|
||||
|
||||
@ -156,6 +155,14 @@ $('body').on('click', '#closeGroupDevisModal', function () {
|
||||
$('#groupDevisFacturationModal').hide();
|
||||
});
|
||||
|
||||
$('body').on('click', '#showDevisRecapModal', function () {
|
||||
$('#devisRecapMontant').show();
|
||||
});
|
||||
|
||||
$('body').on('click', '#closeDevisRecapModal', function () {
|
||||
$('#devisRecapMontant').hide();
|
||||
});
|
||||
|
||||
|
||||
$('body').on('click', '#invoiceGroupQuote', function () {
|
||||
var dateValue = document.getElementById("facturationDate").value;
|
||||
@ -202,3 +209,95 @@ $('body').on('click', '#invoiceGroupQuote', function () {
|
||||
hideLoader();
|
||||
});
|
||||
});
|
||||
|
||||
$('body').on('click', '#devisRecapAction', function () {
|
||||
var valMontant = document.getElementById("sansMontant").checked;
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const filter = urlParams.get('cli');
|
||||
const year = urlParams.get('annee');
|
||||
const month = urlParams.get('mois');
|
||||
const filterType = urlParams.get('filterType');
|
||||
|
||||
var devisPayload = {
|
||||
clientId: filter,
|
||||
month: month,
|
||||
year: year,
|
||||
clientType: filterType,
|
||||
montant: valMontant
|
||||
};
|
||||
|
||||
showLoader();
|
||||
|
||||
$.ajax({
|
||||
url: baseUrl + '/devis/exportDevisRecap',
|
||||
type: 'POST',
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify(devisPayload)
|
||||
}).done(function (response) {
|
||||
if (response != null && response.trim() !== "") {
|
||||
// Le retour est une string directe, pas un array JSON
|
||||
var filename = response.replace(/\\/g, '/'); // Corriger les backslashes Windows
|
||||
showSuccess('Sauvegardé dans ' + filename);
|
||||
|
||||
// Fermeture de la modal avec gestion d'erreur intégrée
|
||||
var modalId = 'devisRecapMontant';
|
||||
|
||||
// Essayer Bootstrap 5 d'abord
|
||||
if (typeof bootstrap !== 'undefined' && bootstrap.Modal) {
|
||||
var modalElement = document.getElementById(modalId);
|
||||
if (modalElement) {
|
||||
var modalInstance = bootstrap.Modal.getInstance(modalElement);
|
||||
if (modalInstance) {
|
||||
modalInstance.hide();
|
||||
} else {
|
||||
// Si pas d'instance, créer et fermer
|
||||
modalInstance = new bootstrap.Modal(modalElement);
|
||||
modalInstance.hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
// Essayer Bootstrap 4/3 avec jQuery
|
||||
else if (typeof $ !== 'undefined' && $.fn.modal) {
|
||||
try {
|
||||
$('#' + modalId).modal('hide');
|
||||
} catch (e) {
|
||||
console.warn('Erreur lors de la fermeture de la modal avec jQuery:', e);
|
||||
// Fallback manuel
|
||||
var modalElement = document.getElementById(modalId);
|
||||
if (modalElement) {
|
||||
modalElement.classList.remove('show');
|
||||
modalElement.style.display = 'none';
|
||||
}
|
||||
}
|
||||
}
|
||||
// Fallback : fermeture manuelle pure JavaScript
|
||||
else {
|
||||
var modalElement = document.getElementById(modalId);
|
||||
if (modalElement) {
|
||||
// Retirer les classes Bootstrap
|
||||
modalElement.classList.remove('show');
|
||||
modalElement.style.display = 'none';
|
||||
modalElement.setAttribute('aria-hidden', 'true');
|
||||
|
||||
// Retirer le backdrop si présent
|
||||
var backdrop = document.querySelector('.modal-backdrop');
|
||||
if (backdrop) {
|
||||
backdrop.remove();
|
||||
}
|
||||
|
||||
// Retirer la classe modal-open du body
|
||||
document.body.classList.remove('modal-open');
|
||||
document.body.style.removeProperty('padding-right');
|
||||
document.body.style.removeProperty('overflow');
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
showError(t('gestion', "Les données pour sauvegarde sont vides"));
|
||||
}
|
||||
}).fail(function (response, code) {
|
||||
showError(t('gestion', "Erreur dans la génération du récapitulatif devis"));
|
||||
}).always(function () {
|
||||
hideLoader();
|
||||
});
|
||||
});
|
||||
@ -678,6 +678,31 @@ export function saveAttestationPacemaker(myData) {
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Save pdf in nextcloud
|
||||
* @param {*} myData
|
||||
*/
|
||||
export function saveAttestationAbsentPacemaker(myData) {
|
||||
showLoader();
|
||||
$.ajax({
|
||||
url: baseUrl + '/saveAttestationAbsentPacemaker',
|
||||
type: 'POST',
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify(myData)
|
||||
}).done(function (response) {
|
||||
if(!response) {
|
||||
showMessage('Ce defunt n\'appartient à aucun devis.');
|
||||
} else {
|
||||
showSuccess('Sauvegardé dans '+ response);
|
||||
}
|
||||
}).fail(function (response, code) {
|
||||
showMessage(t('gestion', 'Erreur dans la génération d\'attestation pacemaker'));
|
||||
}).always(function () {
|
||||
hideLoader();
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Save pdf in nextcloud
|
||||
* @param {*} myData
|
||||
@ -858,6 +883,7 @@ export function exportClientDevisByMonthAndYearToPdf(clientId,year,month,filterT
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Set bijoux photo
|
||||
* @param {*} bijouxId
|
||||
|
||||
@ -21,6 +21,7 @@ export class Defunt {
|
||||
this.pompe = ((myresp.nom_client == null) ? '-' : myresp.nom_client);
|
||||
this.lieu = ((myresp.lieu == null) ? '-' : myresp.lieu);
|
||||
this.numero_devis = ((myresp.user_id == null) ? '-' : myresp.user_id);
|
||||
this.lieu_deces = ((myresp.lieu_deces == null) ? '-' : myresp.lieu_deces);
|
||||
this.baseUrl = generateUrl(`/apps/gestion/defunt/${this.id}/show`);
|
||||
this.productCoverDescription = Defunt.getDefuntProductCoverDescriptionFromApiResponse(myresp);
|
||||
}
|
||||
|
||||
@ -58,6 +58,7 @@ export class Facture {
|
||||
this.clientName = ((myresp.facture_group_name == null || myresp.facture_group_name.length == 0) ? '-' : myresp.facture_group_name);
|
||||
}
|
||||
}
|
||||
this.totalTtc = myresp?.totalPrices?.total_ttc ?? 0;
|
||||
}
|
||||
|
||||
getDocumentStateLabel(documentState){
|
||||
@ -86,6 +87,7 @@ export class Facture {
|
||||
'<div>' + this.payment_date + '</div>',
|
||||
'<div><span class="badge '+this.isDocumentAlreadyGeneratedClass+'">' + this.isDocumentAlreadyGeneratedLabel + '</span></div>',
|
||||
'<div><span class="badge '+this.isDocumentAlreadySentClass+'">' + this.isDocumentAlreadySentLabel + '</span></div>',
|
||||
'<div><span>'+this.totalTtc + '</span></div>',
|
||||
'<div style="display:inline-block;margin-right:0px;width:80%;"><a href="' + this.baseUrl +'"><button>' + t('gestion', 'Open') + '</button></a></div><div data-modifier="facture" data-id=' + this.id + ' data-table="facture" style="display:inline-block;margin-right:0px;" class="deleteItem icon-delete"></div>',
|
||||
];
|
||||
return myrow;
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
<form method="get" class="d-flex flex-row align-items-center">
|
||||
<select name="cli" id="clientselector">
|
||||
<?php
|
||||
$showRecapButton = false;
|
||||
foreach ($_['clients'] as $key => $client) {
|
||||
?>
|
||||
<option <?php
|
||||
@ -17,8 +18,9 @@
|
||||
?>
|
||||
</select>
|
||||
<select name="annee" id="yearselector">
|
||||
<option value="-1" <?php if ((int) $_GET['annee'] == -1)
|
||||
echo 'selected' ?>>Toutes les années</option>
|
||||
<option value="-1" <?php if ((int) $_GET['annee'] == -1) {
|
||||
echo 'selected';
|
||||
} ?>>Toutes les années</option>
|
||||
<?php
|
||||
$currentYear = date('Y');
|
||||
for ($year = $currentYear; $year >= $currentYear - 10; $year--) {
|
||||
@ -27,73 +29,89 @@
|
||||
?>
|
||||
</select>
|
||||
<select name="mois" id="monthselector">
|
||||
<option value="0" <?php if ((int) $_GET['mois'] == 0)
|
||||
echo 'selected' ?>>Tous les mois</option>
|
||||
<option value="1" <?php if ((int) $_GET['mois'] == 1)
|
||||
echo 'selected' ?>>Janvier</option>
|
||||
<option value="2" <?php if ((int) $_GET['mois'] == 2)
|
||||
echo 'selected' ?>>Fevrier</option>
|
||||
<option value="3" <?php if ((int) $_GET['mois'] == 3)
|
||||
echo 'selected' ?>>Mars</option>
|
||||
<option value="4" <?php if ((int) $_GET['mois'] == 4)
|
||||
echo 'selected' ?>>Avril</option>
|
||||
<option value="5" <?php if ((int) $_GET['mois'] == 5)
|
||||
echo 'selected' ?>>Mai</option>
|
||||
<option value="6" <?php if ((int) $_GET['mois'] == 6)
|
||||
echo 'selected' ?>>Juin</option>
|
||||
<option value="7" <?php if ((int) $_GET['mois'] == 7)
|
||||
echo 'selected' ?>>Juillet</option>
|
||||
<option value="8" <?php if ((int) $_GET['mois'] == 8)
|
||||
echo 'selected' ?>>Août</option>
|
||||
<option value="9" <?php if ((int) $_GET['mois'] == 9)
|
||||
echo 'selected' ?>>Septembre</option>
|
||||
<option value="10" <?php if ((int) $_GET['mois'] == 10)
|
||||
echo 'selected' ?>>Octobre</option>
|
||||
<option value="11" <?php if ((int) $_GET['mois'] == 11)
|
||||
echo 'selected' ?>>Novembre</option>
|
||||
<option value="12" <?php if ((int) $_GET['mois'] == 12)
|
||||
echo 'selected' ?>>Decembre</option>
|
||||
<option value="0" <?php if ((int) $_GET['mois'] == 0) {
|
||||
echo 'selected';
|
||||
} ?>>Tous les mois</option>
|
||||
<option value="1" <?php if ((int) $_GET['mois'] == 1) {
|
||||
echo 'selected';
|
||||
} ?>>Janvier</option>
|
||||
<option value="2" <?php if ((int) $_GET['mois'] == 2) {
|
||||
echo 'selected';
|
||||
} ?>>Fevrier</option>
|
||||
<option value="3" <?php if ((int) $_GET['mois'] == 3) {
|
||||
echo 'selected';
|
||||
} ?>>Mars</option>
|
||||
<option value="4" <?php if ((int) $_GET['mois'] == 4) {
|
||||
echo 'selected';
|
||||
} ?>>Avril</option>
|
||||
<option value="5" <?php if ((int) $_GET['mois'] == 5) {
|
||||
echo 'selected';
|
||||
} ?>>Mai</option>
|
||||
<option value="6" <?php if ((int) $_GET['mois'] == 6) {
|
||||
echo 'selected';
|
||||
} ?>>Juin</option>
|
||||
<option value="7" <?php if ((int) $_GET['mois'] == 7) {
|
||||
echo 'selected';
|
||||
} ?>>Juillet</option>
|
||||
<option value="8" <?php if ((int) $_GET['mois'] == 8) {
|
||||
echo 'selected';
|
||||
} ?>>Août</option>
|
||||
<option value="9" <?php if ((int) $_GET['mois'] == 9) {
|
||||
echo 'selected';
|
||||
} ?>>Septembre</option>
|
||||
<option value="10" <?php if ((int) $_GET['mois'] == 10) {
|
||||
echo 'selected';
|
||||
} ?>>Octobre</option>
|
||||
<option value="11" <?php if ((int) $_GET['mois'] == 11) {
|
||||
echo 'selected';
|
||||
} ?>>Novembre</option>
|
||||
<option value="12" <?php if ((int) $_GET['mois'] == 12) {
|
||||
echo 'selected';
|
||||
} ?>>Decembre</option>
|
||||
</select>
|
||||
<input type="hidden" name="filterType" id="filterType"
|
||||
value="<?php echo ($_GET['filterType'] ?? 'group'); ?>">
|
||||
value="<?php echo($_GET['filterType'] ?? 'group'); ?>">
|
||||
<input type="submit" value="Filtrer" />
|
||||
</form>
|
||||
<div class="d-flex flex-row">
|
||||
<?php
|
||||
$clients = $_['clients'];
|
||||
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
|
||||
$devis = array_filter($_['devis'], function ($currentDevis) {
|
||||
if ($currentDevis->cid) {
|
||||
$datesplit = explode("-", $currentDevis->date);
|
||||
$year = (int) $datesplit[0];
|
||||
$month = (int) $datesplit[1];
|
||||
$checkClient = false;
|
||||
$filterType = "group";
|
||||
if (array_key_exists('filterType', $_GET) && $_GET['filterType'] == 'client') {
|
||||
$filterType = "client";
|
||||
}
|
||||
$clientIsNotSelected = strcmp($_GET['cli'], '') == 0;
|
||||
if ($clientIsNotSelected) {
|
||||
if ($filterType == "group") {
|
||||
$checkClient = $_['clients'][0]->fk_client_group_facturation_id == $currentDevis->cid;
|
||||
} else {
|
||||
$checkClient = $_['clients'][0]->id == $currentDevis->cid;
|
||||
}
|
||||
} else {
|
||||
if ($filterType == "group") {
|
||||
$checkClient = $currentDevis->fk_client_group_facturation_id == $_GET['cli'];
|
||||
} else {
|
||||
$checkClient = $currentDevis->cid == $_GET['cli'];
|
||||
}
|
||||
}
|
||||
$checkYear = ((int) ($_GET['annee']) == -1) ? (true) : ($year == ((int) $_GET['annee']));
|
||||
$checkMounth = (((int) $_GET['mois']) == 0) ? (true) : ($month == ((int) $_GET['mois']));
|
||||
return $checkClient && $checkYear && $checkMounth;
|
||||
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
|
||||
if(intval($_GET['mois']) != 0 && intval($_GET['annee']) != 0) {
|
||||
$showRecapButton = true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
if (strcmp($_GET['cli'], '') != 0 && sizeof($devis) > 0) {
|
||||
?>
|
||||
$devis = array_filter($_['devis'], function ($currentDevis) {
|
||||
if ($currentDevis->cid) {
|
||||
$datesplit = explode("-", $currentDevis->date);
|
||||
$year = (int) $datesplit[0];
|
||||
$month = (int) $datesplit[1];
|
||||
$checkClient = false;
|
||||
$filterType = "group";
|
||||
if (array_key_exists('filterType', $_GET) && $_GET['filterType'] == 'client') {
|
||||
$filterType = "client";
|
||||
}
|
||||
$clientIsNotSelected = strcmp($_GET['cli'], '') == 0;
|
||||
if ($clientIsNotSelected) {
|
||||
if ($filterType == "group") {
|
||||
$checkClient = $_['clients'][0]->fk_client_group_facturation_id == $currentDevis->cid;
|
||||
} else {
|
||||
$checkClient = $_['clients'][0]->id == $currentDevis->cid;
|
||||
}
|
||||
} else {
|
||||
if ($filterType == "group") {
|
||||
$checkClient = $currentDevis->fk_client_group_facturation_id == $_GET['cli'];
|
||||
} else {
|
||||
$checkClient = $currentDevis->cid == $_GET['cli'];
|
||||
}
|
||||
}
|
||||
$checkYear = ((int) ($_GET['annee']) == -1) ? (true) : ($year == ((int) $_GET['annee']));
|
||||
$checkMounth = (((int) $_GET['mois']) == 0) ? (true) : ($month == ((int) $_GET['mois']));
|
||||
return $checkClient && $checkYear && $checkMounth;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
if (strcmp($_GET['cli'], '') != 0 && sizeof($devis) > 0) {
|
||||
?>
|
||||
<button class="btn btn-secondary" type="button"
|
||||
id="exportMultipleDevisToPdf"><?php p($l->t('Save in Nextcloud')); ?></button>
|
||||
<button class="btn btn-secondary" type="button" id="showGroupDevisFacturationModal" data-toggle="modal"
|
||||
@ -101,22 +119,28 @@
|
||||
Facturer
|
||||
</button>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
if (strcmp($_GET['cli'], '') != 0 && sizeof($devis) > 0) {
|
||||
?>
|
||||
<?php if($showRecapButton) {?><button class="btn btn-secondary" type="button" id="showDevisRecapModal" data-toggle="modal"
|
||||
data-target="#devisRecapMontant">Generer le document recapitulatif</button><?php }
|
||||
}
|
||||
?>
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div id="gestion-canvas" class="canvas_div_pdf">
|
||||
<?php
|
||||
if ($_SERVER['REQUEST_METHOD'] == 'GET' && strcmp($_GET['cli'], '') != 0) {
|
||||
if (sizeof($devis) == 0)
|
||||
if (sizeof($devis) == 0) {
|
||||
echo "Aucun devis trouvé.";
|
||||
}
|
||||
}
|
||||
;
|
||||
;
|
||||
|
||||
foreach ($devis as $key => $currentDevis) {
|
||||
?>
|
||||
foreach ($devis as $key => $currentDevis) {
|
||||
?>
|
||||
<div class="bootstrap-iso d-flex flex-column justify-content-between">
|
||||
<div class="d-flex flex-column w-100">
|
||||
<h2 class="mt-3 mb-3 text-center"> <?php p($l->t('Quote')); ?>
|
||||
@ -143,12 +167,12 @@
|
||||
</div>
|
||||
<div class="col-2 h-100 m-0" style="min-height:250px;">
|
||||
<?php
|
||||
if (isset($_['logo']) && $_['logo'] !== "nothing") {
|
||||
echo "<center><a><img alt='" . $l->t('Company logo') . "' class=\"img-fluid\" src=\"data:image/png;base64, " . $_['logo'] . "\"/></a></center>";
|
||||
} else {
|
||||
echo "<span style='font-size:12px' id='Company-logo' data-html2canvas-ignore><b><center>" . $l->t('You can add your company logo here.') . "</center></b><br/><i>" . $l->t('To add a logo, drop the logo.png file in ".gestion" folder at the root of your Nextcloud Files app. Remember to set "Show hidden files".') . "</i><br/><br/><center>" . $l->t('This message will not appear on generated PDF.') . "</center></span>";
|
||||
}
|
||||
?>
|
||||
if (isset($_['logo']) && $_['logo'] !== "nothing") {
|
||||
echo "<center><a><img alt='" . $l->t('Company logo') . "' class=\"img-fluid\" src=\"data:image/png;base64, " . $_['logo'] . "\"/></a></center>";
|
||||
} else {
|
||||
echo "<span style='font-size:12px' id='Company-logo' data-html2canvas-ignore><b><center>" . $l->t('You can add your company logo here.') . "</center></b><br/><i>" . $l->t('To add a logo, drop the logo.png file in ".gestion" folder at the root of your Nextcloud Files app. Remember to set "Show hidden files".') . "</i><br/><br/><center>" . $l->t('This message will not appear on generated PDF.') . "</center></span>";
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<div class="col-5 h-100 m-0" style="min-height:250px;">
|
||||
<h5 class="p-3 m-0 text-dark text-center border border-2 border-dark"><?php p($l->t('TO')); ?>
|
||||
@ -197,7 +221,7 @@
|
||||
style="display:inline"
|
||||
data-table="devis" data-column="order_number"
|
||||
data-id="<?php echo $currentDevis->id;?>">
|
||||
<?php echo ($currentDevis->order_number == "" ) ? "-" : $currentDevis->order_number ; ?>
|
||||
<?php echo ($currentDevis->order_number == "") ? "-" : $currentDevis->order_number ; ?>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
@ -209,7 +233,7 @@
|
||||
style="display:inline"
|
||||
data-table="devis" data-column="case_number"
|
||||
data-id="<?php echo $currentDevis->id;?>">
|
||||
<?php echo ($currentDevis->case_number == "" ) ? "-" : $currentDevis->case_number ; ?>
|
||||
<?php echo ($currentDevis->case_number == "") ? "-" : $currentDevis->case_number ; ?>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
@ -253,16 +277,16 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$totalhtc = 0;
|
||||
$tva = json_decode($_['configuration'])[0]->tva_default;
|
||||
$totalttc = 0;
|
||||
$totalprice = 0;
|
||||
foreach ($currentDevis->dproduits as $key => $produit) {
|
||||
$totalhtc = $totalhtc + ($produit->quantite * $produit->prix_unitaire);
|
||||
}
|
||||
$totalttc = ($totalhtc * $tva) / 100;
|
||||
$totalprice = $totalhtc + $totalttc;
|
||||
?>
|
||||
$totalhtc = 0;
|
||||
$tva = json_decode($_['configuration'])[0]->tva_default;
|
||||
$totalttc = 0;
|
||||
$totalprice = 0;
|
||||
foreach ($currentDevis->dproduits as $key => $produit) {
|
||||
$totalhtc = $totalhtc + ($produit->quantite * $produit->prix_unitaire);
|
||||
}
|
||||
$totalttc = ($totalhtc * $tva) / 100;
|
||||
$totalprice = $totalhtc + $totalttc;
|
||||
?>
|
||||
<tr>
|
||||
<td>€<?php echo number_format($totalhtc, 2) ?></td>
|
||||
<td><?php echo $tva ?> %</td>
|
||||
@ -288,9 +312,32 @@
|
||||
<hr data-html2canvas-ignore>
|
||||
<hr data-html2canvas-ignore>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="devisRecapMontant" tabindex="-1">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">Récapitulatif des devis avec montant</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-check d-flex align-items-center">
|
||||
<input class="form-check-input me-2" type="checkbox" id="sansMontant" value="">
|
||||
<label class="form-check-label" for="sansMontant">
|
||||
Sans Montant
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button id="closeDevisRecapModal" type="button" class="btn btn-secondary">Annuler</button>
|
||||
<button id="devisRecapAction" type="button" class="btn btn-primary">Générer</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="groupDevisFacturationModal" tabindex="-1">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
|
||||
@ -1,11 +1,15 @@
|
||||
<?php
|
||||
$quantiteOptions = [0];
|
||||
for ($i = 1; $i <= 10; $i++) {
|
||||
$quantiteOptions[] = $i / 10;
|
||||
$quantiteOptions[] = $i / 10;
|
||||
}
|
||||
for ($i = 1; $i <= 15; $i++) {
|
||||
if ($i > 1) $quantiteOptions[] = $i;
|
||||
if ($i < 15) $quantiteOptions[] = $i + 0.5;
|
||||
if ($i > 1) {
|
||||
$quantiteOptions[] = $i;
|
||||
}
|
||||
if ($i < 15) {
|
||||
$quantiteOptions[] = $i + 0.5;
|
||||
}
|
||||
}
|
||||
$coverProducts = $_['coverProducts'];
|
||||
?>
|
||||
@ -13,7 +17,7 @@ $coverProducts = $_['coverProducts'];
|
||||
<div id="defuntid" data-table="defunt" data-id="<?php echo $_['defunt'][0]->id; ?>"></div>
|
||||
<div class="breadcrumb" data-html2canvas-ignore>
|
||||
<div class="crumb svg crumbhome">
|
||||
<a href="<?php echo ($_['url']['index']); ?>" class="icon-home"></a>
|
||||
<a href="<?php echo($_['url']['index']); ?>" class="icon-home"></a>
|
||||
<span style="display: none;"></span>
|
||||
</div>
|
||||
<div class="crumb svg crumbhome">
|
||||
@ -26,6 +30,7 @@ $coverProducts = $_['coverProducts'];
|
||||
<div class="div">
|
||||
<button id="exportCareCertificate" class="btn btn-secondary" type="button">Générer l'attestation de soins</button>
|
||||
<button id="pacemakerBtn" class="btn btn-secondary" type="button">Générer l'attestation retrait de pile</button>
|
||||
<button id="pacemakerAbsentBtn" class="btn btn-secondary" type="button">Générer l'attestation d'Absence de Pacemacker</button>
|
||||
<button id="rapportSoinBtn" class="btn btn-secondary" type="button">Générer le rapport de soins</button>
|
||||
<button id="showRapportBijouxExportModal" class="btn btn-secondary" type="button" data-toggle="modal" data-target="#saveRapportBijouxModal">Générer le rapport des bijoux</button>
|
||||
</div>
|
||||
@ -71,13 +76,24 @@ $coverProducts = $_['coverProducts'];
|
||||
<input class="gestion-input w-100" type="date" value="<?php echo $_['defunt'][0]->date_naissance ?>" data-table="defunt" data-column="date_naissance" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- Lieu décès -->
|
||||
<div class="d-flex flex-row align-items-center col-12" style="margin-bottom: 8px">
|
||||
<div class="col-3">Lieu de décès</div>
|
||||
<div class="col-9">
|
||||
<input class="gestion-input w-100" type="text" value="<?php echo $_['defunt'][0]->lieu_deces ?>" data-table="defunt" data-column="lieu_deces" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- Sexe -->
|
||||
<!-- <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 ?>">
|
||||
<option value="m" <?php if (strcmp($_['defunt'][0]->sexe, 'm') == 0) echo 'selected' ?>>Masculin</option>
|
||||
<option value="f" <?php if (strcmp($_['defunt'][0]->sexe, 'f') == 0) echo 'selected' ?>>Féminin</option>
|
||||
<option value="m" <?php if (strcmp($_['defunt'][0]->sexe, 'm') == 0) {
|
||||
echo 'selected';
|
||||
} ?>>Masculin</option>
|
||||
<option value="f" <?php if (strcmp($_['defunt'][0]->sexe, 'f') == 0) {
|
||||
echo 'selected';
|
||||
} ?>>Féminin</option>
|
||||
</select>
|
||||
</div>
|
||||
</div> -->
|
||||
@ -109,11 +125,11 @@ $coverProducts = $_['coverProducts'];
|
||||
<input class="w-100 uploadDefuntPacemakerPhoto" accept="image/*" type="file" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||
<?php
|
||||
if ($_['defunt'][0]->product_photo != null) {
|
||||
?>
|
||||
?>
|
||||
<label id="pacemakerPhotoLabel" for=""><?php echo ($_['defunt'][0]->product_photo_name ?? "") ?></label>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -202,8 +218,12 @@ $coverProducts = $_['coverProducts'];
|
||||
<div class="col-9">
|
||||
<select class="gestion-select w-100" data-table="defunt" data-column="acces_etat" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||
<option>Selectionner un état</option>
|
||||
<option value="mauvais" <?php if (strcmp($_['defunt'][0]->acces_etat, 'mauvais') == 0) echo 'selected' ?>>Mauvais</option>
|
||||
<option value="bon" <?php if (strcmp($_['defunt'][0]->acces_etat, 'bon') == 0) echo 'selected' ?>>Bon</option>
|
||||
<option value="mauvais" <?php if (strcmp($_['defunt'][0]->acces_etat, 'mauvais') == 0) {
|
||||
echo 'selected';
|
||||
} ?>>Mauvais</option>
|
||||
<option value="bon" <?php if (strcmp($_['defunt'][0]->acces_etat, 'bon') == 0) {
|
||||
echo 'selected';
|
||||
} ?>>Bon</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@ -225,7 +245,9 @@ $coverProducts = $_['coverProducts'];
|
||||
<div class="col-9">
|
||||
<select class="gestion-select w-100" data-table="defunt" data-column="preinjection_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||
<?php for ($i = 0; $i < sizeof($quantiteOptions); $i++) { ?>
|
||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->preinjection_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->preinjection_qte == $quantiteOptions[$i]) {
|
||||
echo 'selected';
|
||||
} ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
@ -248,8 +270,12 @@ $coverProducts = $_['coverProducts'];
|
||||
<div class="col-9">
|
||||
<select class="gestion-select w-100" data-table="defunt" data-column="injection_diffusion" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||
<option>Selectionner un état</option>
|
||||
<option value="mauvaise" <?php if (strcmp($_['defunt'][0]->injection_diffusion, 'mauvaise') == 0) echo 'selected' ?>>Mauvaise</option>
|
||||
<option value="bonne" <?php if (strcmp($_['defunt'][0]->injection_diffusion, 'bonne') == 0) echo 'selected' ?>>Bonne</option>
|
||||
<option value="mauvaise" <?php if (strcmp($_['defunt'][0]->injection_diffusion, 'mauvaise') == 0) {
|
||||
echo 'selected';
|
||||
} ?>>Mauvaise</option>
|
||||
<option value="bonne" <?php if (strcmp($_['defunt'][0]->injection_diffusion, 'bonne') == 0) {
|
||||
echo 'selected';
|
||||
} ?>>Bonne</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@ -259,7 +285,9 @@ $coverProducts = $_['coverProducts'];
|
||||
<div class="col-9">
|
||||
<select class="gestion-select w-100" data-table="defunt" data-column="injection_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||
<?php for ($i = 0; $i < sizeof($quantiteOptions); $i++) { ?>
|
||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->injection_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->injection_qte == $quantiteOptions[$i]) {
|
||||
echo 'selected';
|
||||
} ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
@ -282,7 +310,9 @@ $coverProducts = $_['coverProducts'];
|
||||
<div class="col-9">
|
||||
<select class="gestion-select w-100" data-table="defunt" data-column="coinjection_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||
<?php for ($i = 0; $i < sizeof($quantiteOptions); $i++) { ?>
|
||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->coinjection_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->coinjection_qte == $quantiteOptions[$i]) {
|
||||
echo 'selected';
|
||||
} ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
@ -305,8 +335,12 @@ $coverProducts = $_['coverProducts'];
|
||||
<div class="col-9">
|
||||
<select class="gestion-select w-100" data-table="defunt" data-column="drainage_etat" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||
<option>Selectionner un état</option>
|
||||
<option value="mauvaise" <?php if (strcmp($_['defunt'][0]->drainage_etat, 'mauvaise') == 0) echo 'selected' ?>>Mauvaise</option>
|
||||
<option value="bonne" <?php if (strcmp($_['defunt'][0]->drainage_etat, 'bonne') == 0) echo 'selected' ?>>Bonne</option>
|
||||
<option value="mauvaise" <?php if (strcmp($_['defunt'][0]->drainage_etat, 'mauvaise') == 0) {
|
||||
echo 'selected';
|
||||
} ?>>Mauvaise</option>
|
||||
<option value="bonne" <?php if (strcmp($_['defunt'][0]->drainage_etat, 'bonne') == 0) {
|
||||
echo 'selected';
|
||||
} ?>>Bonne</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@ -316,7 +350,9 @@ $coverProducts = $_['coverProducts'];
|
||||
<div class="col-9">
|
||||
<select class="gestion-select w-100" data-table="defunt" data-column="drainage_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||
<?php for ($i = 0; $i < sizeof($quantiteOptions); $i++) { ?>
|
||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->drainage_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->drainage_qte == $quantiteOptions[$i]) {
|
||||
echo 'selected';
|
||||
} ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
@ -339,7 +375,9 @@ $coverProducts = $_['coverProducts'];
|
||||
<div class="col-9">
|
||||
<select class="gestion-select w-100" data-table="defunt" data-column="ponction_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||
<?php for ($i = 0; $i < sizeof($quantiteOptions); $i++) { ?>
|
||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->ponction_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->ponction_qte == $quantiteOptions[$i]) {
|
||||
echo 'selected';
|
||||
} ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
@ -362,7 +400,9 @@ $coverProducts = $_['coverProducts'];
|
||||
<div class="col-9">
|
||||
<select class="gestion-select w-100" data-table="defunt" data-column="cavite_qte" data-id="<?php echo $_['defunt'][0]->id ?>">
|
||||
<?php for ($i = 0; $i < sizeof($quantiteOptions); $i++) { ?>
|
||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->cavite_qte == $quantiteOptions[$i]) echo 'selected' ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||
<option value="<?php echo $quantiteOptions[$i] ?>" <?php if ($_['defunt'][0]->cavite_qte == $quantiteOptions[$i]) {
|
||||
echo 'selected';
|
||||
} ?>><?php echo $quantiteOptions[$i] ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
@ -417,7 +457,9 @@ $coverProducts = $_['coverProducts'];
|
||||
<div class="d-flex flex-row col-12 align-items-center" style="margin-bottom: 8px">
|
||||
<div class="col-3">Rasage</div>
|
||||
<div class="d-flex col-9 justify-content-start align-items-start">
|
||||
<input class="gestion-checkbox" type="checkbox" <?php if ($_['defunt'][0]->rasage == 1) echo 'checked' ?> data-table="defunt" data-column="rasage" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||
<input class="gestion-checkbox" type="checkbox" <?php if ($_['defunt'][0]->rasage == 1) {
|
||||
echo 'checked';
|
||||
} ?> data-table="defunt" data-column="rasage" data-id="<?php echo $_['defunt'][0]->id ?>" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -39,6 +39,7 @@
|
||||
<th><?php p($l->t('Date de paiement'));?></th>
|
||||
<th><?php p($l->t('Générée'));?></th>
|
||||
<th><?php p($l->t('Envoyée au client'));?></th>
|
||||
<th><?php p($l->t('Total TTC'));?></th>
|
||||
<th><?php p($l->t('Actions'));?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
2
gestion/vendor/autoload.php
vendored
2
gestion/vendor/autoload.php
vendored
@ -6,7 +6,7 @@ if (PHP_VERSION_ID < 50600) {
|
||||
if (!headers_sent()) {
|
||||
header('HTTP/1.1 500 Internal Server Error');
|
||||
}
|
||||
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
|
||||
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running ' . PHP_VERSION . ', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.' . PHP_EOL;
|
||||
if (!ini_get('display_errors')) {
|
||||
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
|
||||
fwrite(STDERR, $err);
|
||||
|
||||
346
gestion/vendor/composer/autoload_classmap.php
vendored
346
gestion/vendor/composer/autoload_classmap.php
vendored
@ -10,351 +10,6 @@ return array(
|
||||
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
||||
'FPDF' => $vendorDir . '/setasign/fpdf/fpdf.php',
|
||||
'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
|
||||
'PHPUnit\\Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
|
||||
'PHPUnit\\Framework\\ActualValueIsNotAnObjectException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php',
|
||||
'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
|
||||
'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php',
|
||||
'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php',
|
||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php',
|
||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php',
|
||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareExactlyOneParameterException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php',
|
||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php',
|
||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php',
|
||||
'PHPUnit\\Framework\\Constraint\\BinaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php',
|
||||
'PHPUnit\\Framework\\Constraint\\DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php',
|
||||
'PHPUnit\\Framework\\Constraint\\FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php',
|
||||
'PHPUnit\\Framework\\Constraint\\GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEqualCanonicalizing' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEqualIgnoringCase' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEqualWithDelta' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php',
|
||||
'PHPUnit\\Framework\\Constraint\\JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
|
||||
'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalAnd' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ObjectEquals' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Operator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php',
|
||||
'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php',
|
||||
'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php',
|
||||
'PHPUnit\\Framework\\Constraint\\TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php',
|
||||
'PHPUnit\\Framework\\Constraint\\TraversableContainsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php',
|
||||
'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php',
|
||||
'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php',
|
||||
'PHPUnit\\Framework\\Constraint\\UnaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php',
|
||||
'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/CoveredCodeNotExecutedException.php',
|
||||
'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
|
||||
'PHPUnit\\Framework\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Error.php',
|
||||
'PHPUnit\\Framework\\ErrorTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/ErrorTestCase.php',
|
||||
'PHPUnit\\Framework\\Error\\Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
|
||||
'PHPUnit\\Framework\\Error\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Error.php',
|
||||
'PHPUnit\\Framework\\Error\\Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
|
||||
'PHPUnit\\Framework\\Error\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
|
||||
'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Exception.php',
|
||||
'PHPUnit\\Framework\\ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
|
||||
'PHPUnit\\Framework\\ExecutionOrderDependency' => $vendorDir . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php',
|
||||
'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php',
|
||||
'PHPUnit\\Framework\\IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
|
||||
'PHPUnit\\Framework\\IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
|
||||
'PHPUnit\\Framework\\IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/IncompleteTestError.php',
|
||||
'PHPUnit\\Framework\\InvalidArgumentException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php',
|
||||
'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php',
|
||||
'PHPUnit\\Framework\\InvalidDataProviderException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php',
|
||||
'PHPUnit\\Framework\\InvalidParameterGroupException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php',
|
||||
'PHPUnit\\Framework\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/MissingCoversAnnotationException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Api' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/Api.php',
|
||||
'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\CannotUseAddMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\ClassAlreadyExistsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\ClassIsFinalException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php',
|
||||
'PHPUnit\\Framework\\MockObject\\ConfigurableMethodsAlreadyInitializedException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\DuplicateMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Generator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator.php',
|
||||
'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\InvalidMethodNameException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Invocation.php',
|
||||
'PHPUnit\\Framework\\MockObject\\InvocationHandler' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Method' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/Method.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockClass' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockClass.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockMethodSet' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockTrait.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockType' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockType.php',
|
||||
'PHPUnit\\Framework\\MockObject\\OriginalConstructorInvocationRequiredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvocationOrder.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtIndex' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php',
|
||||
'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\SoapExtensionNotAvailableException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\UnknownClassException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\UnknownTraitException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Verifiable' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php',
|
||||
'PHPUnit\\Framework\\NoChildTestSuiteException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php',
|
||||
'PHPUnit\\Framework\\OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/OutputError.php',
|
||||
'PHPUnit\\Framework\\PHPTAssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php',
|
||||
'PHPUnit\\Framework\\Reorderable' => $vendorDir . '/phpunit/phpunit/src/Framework/Reorderable.php',
|
||||
'PHPUnit\\Framework\\RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/RiskyTestError.php',
|
||||
'PHPUnit\\Framework\\SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
|
||||
'PHPUnit\\Framework\\SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
|
||||
'PHPUnit\\Framework\\SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
|
||||
'PHPUnit\\Framework\\SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/SkippedTestError.php',
|
||||
'PHPUnit\\Framework\\SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/SkippedTestSuiteError.php',
|
||||
'PHPUnit\\Framework\\SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/SyntheticError.php',
|
||||
'PHPUnit\\Framework\\SyntheticSkippedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/SyntheticSkippedError.php',
|
||||
'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
|
||||
'PHPUnit\\Framework\\TestBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/TestBuilder.php',
|
||||
'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
|
||||
'PHPUnit\\Framework\\TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
|
||||
'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
|
||||
'PHPUnit\\Framework\\TestListenerDefaultImplementation' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
|
||||
'PHPUnit\\Framework\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
|
||||
'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
||||
'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
|
||||
'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnintentionallyCoveredCodeError.php',
|
||||
'PHPUnit\\Framework\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Warning.php',
|
||||
'PHPUnit\\Framework\\WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
|
||||
'PHPUnit\\Runner\\AfterIncompleteTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php',
|
||||
'PHPUnit\\Runner\\AfterLastTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php',
|
||||
'PHPUnit\\Runner\\AfterRiskyTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php',
|
||||
'PHPUnit\\Runner\\AfterSkippedTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php',
|
||||
'PHPUnit\\Runner\\AfterSuccessfulTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php',
|
||||
'PHPUnit\\Runner\\AfterTestErrorHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php',
|
||||
'PHPUnit\\Runner\\AfterTestFailureHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php',
|
||||
'PHPUnit\\Runner\\AfterTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php',
|
||||
'PHPUnit\\Runner\\AfterTestWarningHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php',
|
||||
'PHPUnit\\Runner\\BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
|
||||
'PHPUnit\\Runner\\BeforeFirstTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php',
|
||||
'PHPUnit\\Runner\\BeforeTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php',
|
||||
'PHPUnit\\Runner\\DefaultTestResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/DefaultTestResultCache.php',
|
||||
'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
|
||||
'PHPUnit\\Runner\\Extension\\ExtensionHandler' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php',
|
||||
'PHPUnit\\Runner\\Extension\\PharLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/PharLoader.php',
|
||||
'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Filter\\Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
|
||||
'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Hook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/Hook.php',
|
||||
'PHPUnit\\Runner\\NullTestResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/NullTestResultCache.php',
|
||||
'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
|
||||
'PHPUnit\\Runner\\ResultCacheExtension' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCacheExtension.php',
|
||||
'PHPUnit\\Runner\\StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
|
||||
'PHPUnit\\Runner\\TestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/TestHook.php',
|
||||
'PHPUnit\\Runner\\TestListenerAdapter' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php',
|
||||
'PHPUnit\\Runner\\TestResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResultCache.php',
|
||||
'PHPUnit\\Runner\\TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
|
||||
'PHPUnit\\Runner\\TestSuiteSorter' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php',
|
||||
'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
|
||||
'PHPUnit\\TextUI\\CliArguments\\Builder' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Builder.php',
|
||||
'PHPUnit\\TextUI\\CliArguments\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php',
|
||||
'PHPUnit\\TextUI\\CliArguments\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Exception.php',
|
||||
'PHPUnit\\TextUI\\CliArguments\\Mapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php',
|
||||
'PHPUnit\\TextUI\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
|
||||
'PHPUnit\\TextUI\\DefaultResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php',
|
||||
'PHPUnit\\TextUI\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/Exception.php',
|
||||
'PHPUnit\\TextUI\\Help' => $vendorDir . '/phpunit/phpunit/src/TextUI/Help.php',
|
||||
'PHPUnit\\TextUI\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php',
|
||||
'PHPUnit\\TextUI\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
|
||||
'PHPUnit\\TextUI\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php',
|
||||
'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php',
|
||||
'PHPUnit\\TextUI\\TestFileNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php',
|
||||
'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
||||
'PHPUnit\\TextUI\\TestSuiteMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestSuiteMapper.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\FilterMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\Directory' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Html' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Xml' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Constant' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\ConvertLogTypes' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCloverToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCrap4jToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageHtmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoveragePhpToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageTextToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Directory' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Extension' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\File' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\FileCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\FileCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Group' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\IniSetting' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCoverageElement' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Loader' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\LogToReportMigration' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Junit' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Logging' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Html' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Xml' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilderException' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\PhpHandler' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheTokensAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveEmptyFilter' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLogTypes' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectory' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestFile' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocationTo93' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Variable' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php',
|
||||
'PHPUnit\\Util\\Annotation\\DocBlock' => $vendorDir . '/phpunit/phpunit/src/Util/Annotation/DocBlock.php',
|
||||
'PHPUnit\\Util\\Annotation\\Registry' => $vendorDir . '/phpunit/phpunit/src/Util/Annotation/Registry.php',
|
||||
'PHPUnit\\Util\\Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
|
||||
'PHPUnit\\Util\\Color' => $vendorDir . '/phpunit/phpunit/src/Util/Color.php',
|
||||
'PHPUnit\\Util\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
||||
'PHPUnit\\Util\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Exception.php',
|
||||
'PHPUnit\\Util\\ExcludeList' => $vendorDir . '/phpunit/phpunit/src/Util/ExcludeList.php',
|
||||
'PHPUnit\\Util\\FileLoader' => $vendorDir . '/phpunit/phpunit/src/Util/FileLoader.php',
|
||||
'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
|
||||
'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
|
||||
'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
|
||||
'PHPUnit\\Util\\InvalidDataSetException' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidDataSetException.php',
|
||||
'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php',
|
||||
'PHPUnit\\Util\\Log\\JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
|
||||
'PHPUnit\\Util\\Log\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
|
||||
'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
|
||||
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
||||
'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
|
||||
'PHPUnit\\Util\\Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
|
||||
'PHPUnit\\Util\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Util/RegularExpression.php',
|
||||
'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
|
||||
'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
|
||||
'PHPUnit\\Util\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\TestDoxPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\TextResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
|
||||
'PHPUnit\\Util\\TextTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
|
||||
'PHPUnit\\Util\\Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
|
||||
'PHPUnit\\Util\\VersionComparisonOperator' => $vendorDir . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php',
|
||||
'PHPUnit\\Util\\XdebugFilterScriptGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php',
|
||||
'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml.php',
|
||||
'PHPUnit\\Util\\XmlTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
|
||||
'PHPUnit\\Util\\Xml\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Exception.php',
|
||||
'PHPUnit\\Util\\Xml\\FailedSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php',
|
||||
'PHPUnit\\Util\\Xml\\Loader' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Loader.php',
|
||||
'PHPUnit\\Util\\Xml\\SchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php',
|
||||
'PHPUnit\\Util\\Xml\\SchemaDetector' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaDetector.php',
|
||||
'PHPUnit\\Util\\Xml\\SchemaFinder' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaFinder.php',
|
||||
'PHPUnit\\Util\\Xml\\SnapshotNodeList' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php',
|
||||
'PHPUnit\\Util\\Xml\\SuccessfulSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php',
|
||||
'PHPUnit\\Util\\Xml\\ValidationResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/ValidationResult.php',
|
||||
'PHPUnit\\Util\\Xml\\Validator' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Validator.php',
|
||||
'PharIo\\Manifest\\Application' => $vendorDir . '/phar-io/manifest/src/values/Application.php',
|
||||
'PharIo\\Manifest\\ApplicationName' => $vendorDir . '/phar-io/manifest/src/values/ApplicationName.php',
|
||||
'PharIo\\Manifest\\Author' => $vendorDir . '/phar-io/manifest/src/values/Author.php',
|
||||
@ -427,7 +82,6 @@ return array(
|
||||
'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php',
|
||||
'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php',
|
||||
'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
|
||||
'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php',
|
||||
'SebastianBergmann\\CliParser\\AmbiguousOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php',
|
||||
'SebastianBergmann\\CliParser\\Exception' => $vendorDir . '/sebastian/cli-parser/src/exceptions/Exception.php',
|
||||
'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php',
|
||||
|
||||
5
gestion/vendor/composer/autoload_psr4.php
vendored
5
gestion/vendor/composer/autoload_psr4.php
vendored
@ -8,10 +8,8 @@ $baseDir = dirname($vendorDir);
|
||||
return array(
|
||||
'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src'),
|
||||
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
|
||||
'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'),
|
||||
'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
|
||||
'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'),
|
||||
'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
|
||||
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
|
||||
'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
|
||||
'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'),
|
||||
@ -19,7 +17,6 @@ return array(
|
||||
'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'),
|
||||
'Symfony\\Contracts\\Cache\\' => array($vendorDir . '/symfony/cache-contracts'),
|
||||
'Symfony\\Component\\VarExporter\\' => array($vendorDir . '/symfony/var-exporter'),
|
||||
'Symfony\\Component\\VarDumper\\' => array($vendorDir . '/symfony/var-dumper'),
|
||||
'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'),
|
||||
'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'),
|
||||
'Symfony\\Component\\Panther\\' => array($vendorDir . '/symfony/panther/src'),
|
||||
@ -42,7 +39,5 @@ return array(
|
||||
'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
|
||||
'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'),
|
||||
'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
|
||||
'Facebook\\WebDriver\\' => array($vendorDir . '/php-webdriver/webdriver/lib'),
|
||||
'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
|
||||
'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
|
||||
);
|
||||
|
||||
767
gestion/vendor/composer/autoload_static.php
vendored
767
gestion/vendor/composer/autoload_static.php
vendored
@ -6,591 +6,217 @@ namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInit4e4b1a7db13d3f09b3be1f5826185b1b
|
||||
{
|
||||
public static $files = array (
|
||||
public static $files = array(
|
||||
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
|
||||
'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
|
||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
|
||||
'0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php',
|
||||
'23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php',
|
||||
'667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
|
||||
'6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
||||
'2a3c2110e8e0295330dc3d11a4cbc4cb' => __DIR__ . '/..' . '/php-webdriver/webdriver/lib/Exception/TimeoutException.php',
|
||||
'25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
|
||||
'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
|
||||
);
|
||||
|
||||
public static $prefixLengthsPsr4 = array (
|
||||
'p' =>
|
||||
array (
|
||||
'phpDocumentor\\Reflection\\' => 25,
|
||||
),
|
||||
'W' =>
|
||||
array (
|
||||
'Webmozart\\Assert\\' => 17,
|
||||
),
|
||||
'S' =>
|
||||
array (
|
||||
'Symfony\\Polyfill\\Php81\\' => 23,
|
||||
'Symfony\\Polyfill\\Php80\\' => 23,
|
||||
'Symfony\\Polyfill\\Php73\\' => 23,
|
||||
'Symfony\\Polyfill\\Php72\\' => 23,
|
||||
'Symfony\\Polyfill\\Mbstring\\' => 26,
|
||||
'Symfony\\Polyfill\\Ctype\\' => 23,
|
||||
'Symfony\\Contracts\\Service\\' => 26,
|
||||
'Symfony\\Contracts\\HttpClient\\' => 29,
|
||||
'Symfony\\Contracts\\EventDispatcher\\' => 34,
|
||||
'Symfony\\Contracts\\Cache\\' => 24,
|
||||
'Symfony\\Component\\VarExporter\\' => 30,
|
||||
'Symfony\\Component\\VarDumper\\' => 28,
|
||||
'Symfony\\Component\\Routing\\' => 26,
|
||||
'Symfony\\Component\\Process\\' => 26,
|
||||
'Symfony\\Component\\Panther\\' => 26,
|
||||
'Symfony\\Component\\HttpKernel\\' => 29,
|
||||
'Symfony\\Component\\HttpFoundation\\' => 33,
|
||||
'Symfony\\Component\\HttpClient\\' => 29,
|
||||
'Symfony\\Component\\Finder\\' => 25,
|
||||
'Symfony\\Component\\Filesystem\\' => 29,
|
||||
'Symfony\\Component\\EventDispatcher\\' => 34,
|
||||
'Symfony\\Component\\ErrorHandler\\' => 31,
|
||||
'Symfony\\Component\\DomCrawler\\' => 29,
|
||||
'Symfony\\Component\\DependencyInjection\\' => 38,
|
||||
'Symfony\\Component\\Config\\' => 25,
|
||||
'Symfony\\Component\\Cache\\' => 24,
|
||||
'Symfony\\Component\\BrowserKit\\' => 29,
|
||||
'Symfony\\Bundle\\FrameworkBundle\\' => 31,
|
||||
),
|
||||
'P' =>
|
||||
array (
|
||||
'Psr\\Log\\' => 8,
|
||||
'Psr\\EventDispatcher\\' => 20,
|
||||
'Psr\\Container\\' => 14,
|
||||
'Psr\\Cache\\' => 10,
|
||||
'Prophecy\\' => 9,
|
||||
'PhpParser\\' => 10,
|
||||
),
|
||||
'F' =>
|
||||
array (
|
||||
'Facebook\\WebDriver\\' => 19,
|
||||
),
|
||||
'D' =>
|
||||
array (
|
||||
'Doctrine\\Instantiator\\' => 22,
|
||||
'DeepCopy\\' => 9,
|
||||
),
|
||||
public static $prefixLengthsPsr4 = array(
|
||||
'p' =>
|
||||
array(
|
||||
'phpDocumentor\\Reflection\\' => 25,
|
||||
),
|
||||
'W' =>
|
||||
array(
|
||||
'Webmozart\\Assert\\' => 17,
|
||||
),
|
||||
'S' =>
|
||||
array(
|
||||
'Symfony\\Polyfill\\Php80\\' => 23,
|
||||
'Symfony\\Polyfill\\Php73\\' => 23,
|
||||
'Symfony\\Polyfill\\Mbstring\\' => 26,
|
||||
'Symfony\\Polyfill\\Ctype\\' => 23,
|
||||
'Symfony\\Contracts\\Service\\' => 26,
|
||||
'Symfony\\Contracts\\HttpClient\\' => 29,
|
||||
'Symfony\\Contracts\\EventDispatcher\\' => 34,
|
||||
'Symfony\\Contracts\\Cache\\' => 24,
|
||||
'Symfony\\Component\\VarExporter\\' => 30,
|
||||
'Symfony\\Component\\Routing\\' => 26,
|
||||
'Symfony\\Component\\Process\\' => 26,
|
||||
'Symfony\\Component\\Panther\\' => 26,
|
||||
'Symfony\\Component\\HttpKernel\\' => 29,
|
||||
'Symfony\\Component\\HttpFoundation\\' => 33,
|
||||
'Symfony\\Component\\HttpClient\\' => 29,
|
||||
'Symfony\\Component\\Finder\\' => 25,
|
||||
'Symfony\\Component\\Filesystem\\' => 29,
|
||||
'Symfony\\Component\\EventDispatcher\\' => 34,
|
||||
'Symfony\\Component\\ErrorHandler\\' => 31,
|
||||
'Symfony\\Component\\DomCrawler\\' => 29,
|
||||
'Symfony\\Component\\DependencyInjection\\' => 38,
|
||||
'Symfony\\Component\\Config\\' => 25,
|
||||
'Symfony\\Component\\Cache\\' => 24,
|
||||
'Symfony\\Component\\BrowserKit\\' => 29,
|
||||
'Symfony\\Bundle\\FrameworkBundle\\' => 31,
|
||||
),
|
||||
'P' =>
|
||||
array(
|
||||
'Psr\\Log\\' => 8,
|
||||
'Psr\\EventDispatcher\\' => 20,
|
||||
'Psr\\Container\\' => 14,
|
||||
'Psr\\Cache\\' => 10,
|
||||
'Prophecy\\' => 9,
|
||||
'PhpParser\\' => 10,
|
||||
),
|
||||
'F' =>
|
||||
array(
|
||||
'Facebook\\WebDriver\\' => 19,
|
||||
),
|
||||
'D' =>
|
||||
array(
|
||||
'Doctrine\\Instantiator\\' => 22,
|
||||
'DeepCopy\\' => 9,
|
||||
),
|
||||
);
|
||||
|
||||
public static $prefixDirsPsr4 = array (
|
||||
'phpDocumentor\\Reflection\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
|
||||
1 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
|
||||
2 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
|
||||
),
|
||||
'Webmozart\\Assert\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/webmozart/assert/src',
|
||||
),
|
||||
'Symfony\\Polyfill\\Php81\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-php81',
|
||||
),
|
||||
'Symfony\\Polyfill\\Php80\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
|
||||
),
|
||||
'Symfony\\Polyfill\\Php73\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-php73',
|
||||
),
|
||||
'Symfony\\Polyfill\\Php72\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-php72',
|
||||
),
|
||||
'Symfony\\Polyfill\\Mbstring\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
|
||||
),
|
||||
'Symfony\\Polyfill\\Ctype\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
|
||||
),
|
||||
'Symfony\\Contracts\\Service\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/service-contracts',
|
||||
),
|
||||
'Symfony\\Contracts\\HttpClient\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/http-client-contracts',
|
||||
),
|
||||
'Symfony\\Contracts\\EventDispatcher\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts',
|
||||
),
|
||||
'Symfony\\Contracts\\Cache\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/cache-contracts',
|
||||
),
|
||||
'Symfony\\Component\\VarExporter\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/var-exporter',
|
||||
),
|
||||
'Symfony\\Component\\VarDumper\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/var-dumper',
|
||||
),
|
||||
'Symfony\\Component\\Routing\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/routing',
|
||||
),
|
||||
'Symfony\\Component\\Process\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/process',
|
||||
),
|
||||
'Symfony\\Component\\Panther\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/panther/src',
|
||||
),
|
||||
'Symfony\\Component\\HttpKernel\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/http-kernel',
|
||||
),
|
||||
'Symfony\\Component\\HttpFoundation\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/http-foundation',
|
||||
),
|
||||
'Symfony\\Component\\HttpClient\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/http-client',
|
||||
),
|
||||
'Symfony\\Component\\Finder\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/finder',
|
||||
),
|
||||
'Symfony\\Component\\Filesystem\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/filesystem',
|
||||
),
|
||||
'Symfony\\Component\\EventDispatcher\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/event-dispatcher',
|
||||
),
|
||||
'Symfony\\Component\\ErrorHandler\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/error-handler',
|
||||
),
|
||||
'Symfony\\Component\\DomCrawler\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/dom-crawler',
|
||||
),
|
||||
'Symfony\\Component\\DependencyInjection\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/dependency-injection',
|
||||
),
|
||||
'Symfony\\Component\\Config\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/config',
|
||||
),
|
||||
'Symfony\\Component\\Cache\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/cache',
|
||||
),
|
||||
'Symfony\\Component\\BrowserKit\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/browser-kit',
|
||||
),
|
||||
'Symfony\\Bundle\\FrameworkBundle\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/framework-bundle',
|
||||
),
|
||||
'Psr\\Log\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
|
||||
),
|
||||
'Psr\\EventDispatcher\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/event-dispatcher/src',
|
||||
),
|
||||
'Psr\\Container\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/container/src',
|
||||
),
|
||||
'Psr\\Cache\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/cache/src',
|
||||
),
|
||||
'Prophecy\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy',
|
||||
),
|
||||
'PhpParser\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser',
|
||||
),
|
||||
'Facebook\\WebDriver\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/php-webdriver/webdriver/lib',
|
||||
),
|
||||
'Doctrine\\Instantiator\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator',
|
||||
),
|
||||
'DeepCopy\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy',
|
||||
),
|
||||
public static $prefixDirsPsr4 = array(
|
||||
'phpDocumentor\\Reflection\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
|
||||
1 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
|
||||
2 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
|
||||
),
|
||||
'Webmozart\\Assert\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/webmozart/assert/src',
|
||||
),
|
||||
'Symfony\\Polyfill\\Php80\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
|
||||
),
|
||||
'Symfony\\Polyfill\\Php73\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-php73',
|
||||
),
|
||||
'Symfony\\Polyfill\\Mbstring\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
|
||||
),
|
||||
'Symfony\\Polyfill\\Ctype\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
|
||||
),
|
||||
'Symfony\\Contracts\\Service\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/service-contracts',
|
||||
),
|
||||
'Symfony\\Contracts\\HttpClient\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/http-client-contracts',
|
||||
),
|
||||
'Symfony\\Contracts\\EventDispatcher\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts',
|
||||
),
|
||||
'Symfony\\Contracts\\Cache\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/cache-contracts',
|
||||
),
|
||||
'Symfony\\Component\\VarExporter\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/var-exporter',
|
||||
),
|
||||
'Symfony\\Component\\Routing\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/routing',
|
||||
),
|
||||
'Symfony\\Component\\Process\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/process',
|
||||
),
|
||||
'Symfony\\Component\\Panther\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/panther/src',
|
||||
),
|
||||
'Symfony\\Component\\HttpKernel\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/http-kernel',
|
||||
),
|
||||
'Symfony\\Component\\HttpFoundation\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/http-foundation',
|
||||
),
|
||||
'Symfony\\Component\\HttpClient\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/http-client',
|
||||
),
|
||||
'Symfony\\Component\\Finder\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/finder',
|
||||
),
|
||||
'Symfony\\Component\\Filesystem\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/filesystem',
|
||||
),
|
||||
'Symfony\\Component\\EventDispatcher\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/event-dispatcher',
|
||||
),
|
||||
'Symfony\\Component\\ErrorHandler\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/error-handler',
|
||||
),
|
||||
'Symfony\\Component\\DomCrawler\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/dom-crawler',
|
||||
),
|
||||
'Symfony\\Component\\DependencyInjection\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/dependency-injection',
|
||||
),
|
||||
'Symfony\\Component\\Config\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/config',
|
||||
),
|
||||
'Symfony\\Component\\Cache\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/cache',
|
||||
),
|
||||
'Symfony\\Component\\BrowserKit\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/browser-kit',
|
||||
),
|
||||
'Symfony\\Bundle\\FrameworkBundle\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/symfony/framework-bundle',
|
||||
),
|
||||
'Psr\\Log\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
|
||||
),
|
||||
'Psr\\EventDispatcher\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/psr/event-dispatcher/src',
|
||||
),
|
||||
'Psr\\Container\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/psr/container/src',
|
||||
),
|
||||
'Psr\\Cache\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/psr/cache/src',
|
||||
),
|
||||
'Prophecy\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy',
|
||||
),
|
||||
'PhpParser\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser',
|
||||
),
|
||||
'Doctrine\\Instantiator\\' =>
|
||||
array(
|
||||
0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator',
|
||||
),
|
||||
);
|
||||
|
||||
public static $classMap = array (
|
||||
public static $classMap = array(
|
||||
'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
|
||||
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
||||
'FPDF' => __DIR__ . '/..' . '/setasign/fpdf/fpdf.php',
|
||||
'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
|
||||
'PHPUnit\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php',
|
||||
'PHPUnit\\Framework\\ActualValueIsNotAnObjectException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php',
|
||||
'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php',
|
||||
'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php',
|
||||
'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php',
|
||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php',
|
||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php',
|
||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareExactlyOneParameterException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php',
|
||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php',
|
||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php',
|
||||
'PHPUnit\\Framework\\Constraint\\BinaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php',
|
||||
'PHPUnit\\Framework\\Constraint\\DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php',
|
||||
'PHPUnit\\Framework\\Constraint\\FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php',
|
||||
'PHPUnit\\Framework\\Constraint\\GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEqualCanonicalizing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEqualIgnoringCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsEqualWithDelta' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php',
|
||||
'PHPUnit\\Framework\\Constraint\\IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php',
|
||||
'PHPUnit\\Framework\\Constraint\\JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
|
||||
'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalAnd' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php',
|
||||
'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ObjectEquals' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php',
|
||||
'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php',
|
||||
'PHPUnit\\Framework\\Constraint\\Operator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php',
|
||||
'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php',
|
||||
'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php',
|
||||
'PHPUnit\\Framework\\Constraint\\StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php',
|
||||
'PHPUnit\\Framework\\Constraint\\TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php',
|
||||
'PHPUnit\\Framework\\Constraint\\TraversableContainsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php',
|
||||
'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php',
|
||||
'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php',
|
||||
'PHPUnit\\Framework\\Constraint\\UnaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php',
|
||||
'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/CoveredCodeNotExecutedException.php',
|
||||
'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
|
||||
'PHPUnit\\Framework\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Error.php',
|
||||
'PHPUnit\\Framework\\ErrorTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ErrorTestCase.php',
|
||||
'PHPUnit\\Framework\\Error\\Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
|
||||
'PHPUnit\\Framework\\Error\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Error.php',
|
||||
'PHPUnit\\Framework\\Error\\Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php',
|
||||
'PHPUnit\\Framework\\Error\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php',
|
||||
'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Exception.php',
|
||||
'PHPUnit\\Framework\\ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
|
||||
'PHPUnit\\Framework\\ExecutionOrderDependency' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php',
|
||||
'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php',
|
||||
'PHPUnit\\Framework\\IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
|
||||
'PHPUnit\\Framework\\IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
|
||||
'PHPUnit\\Framework\\IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/IncompleteTestError.php',
|
||||
'PHPUnit\\Framework\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php',
|
||||
'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php',
|
||||
'PHPUnit\\Framework\\InvalidDataProviderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php',
|
||||
'PHPUnit\\Framework\\InvalidParameterGroupException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php',
|
||||
'PHPUnit\\Framework\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/MissingCoversAnnotationException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Api' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/Api.php',
|
||||
'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\CannotUseAddMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\ClassAlreadyExistsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\ClassIsFinalException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php',
|
||||
'PHPUnit\\Framework\\MockObject\\ConfigurableMethodsAlreadyInitializedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\DuplicateMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator.php',
|
||||
'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\InvalidMethodNameException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Invocation.php',
|
||||
'PHPUnit\\Framework\\MockObject\\InvocationHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Method' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/Method.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockClass.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockMethodSet' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockTrait.php',
|
||||
'PHPUnit\\Framework\\MockObject\\MockType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockType.php',
|
||||
'PHPUnit\\Framework\\MockObject\\OriginalConstructorInvocationRequiredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvocationOrder.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php',
|
||||
'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\SoapExtensionNotAvailableException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php',
|
||||
'PHPUnit\\Framework\\MockObject\\UnknownClassException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\UnknownTraitException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php',
|
||||
'PHPUnit\\Framework\\MockObject\\Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php',
|
||||
'PHPUnit\\Framework\\NoChildTestSuiteException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php',
|
||||
'PHPUnit\\Framework\\OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/OutputError.php',
|
||||
'PHPUnit\\Framework\\PHPTAssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php',
|
||||
'PHPUnit\\Framework\\Reorderable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Reorderable.php',
|
||||
'PHPUnit\\Framework\\RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/RiskyTestError.php',
|
||||
'PHPUnit\\Framework\\SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
|
||||
'PHPUnit\\Framework\\SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php',
|
||||
'PHPUnit\\Framework\\SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
|
||||
'PHPUnit\\Framework\\SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/SkippedTestError.php',
|
||||
'PHPUnit\\Framework\\SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/SkippedTestSuiteError.php',
|
||||
'PHPUnit\\Framework\\SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/SyntheticError.php',
|
||||
'PHPUnit\\Framework\\SyntheticSkippedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/SyntheticSkippedError.php',
|
||||
'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php',
|
||||
'PHPUnit\\Framework\\TestBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestBuilder.php',
|
||||
'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php',
|
||||
'PHPUnit\\Framework\\TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php',
|
||||
'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php',
|
||||
'PHPUnit\\Framework\\TestListenerDefaultImplementation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
|
||||
'PHPUnit\\Framework\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php',
|
||||
'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
||||
'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
|
||||
'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnintentionallyCoveredCodeError.php',
|
||||
'PHPUnit\\Framework\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Warning.php',
|
||||
'PHPUnit\\Framework\\WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
|
||||
'PHPUnit\\Runner\\AfterIncompleteTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php',
|
||||
'PHPUnit\\Runner\\AfterLastTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php',
|
||||
'PHPUnit\\Runner\\AfterRiskyTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php',
|
||||
'PHPUnit\\Runner\\AfterSkippedTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php',
|
||||
'PHPUnit\\Runner\\AfterSuccessfulTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php',
|
||||
'PHPUnit\\Runner\\AfterTestErrorHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php',
|
||||
'PHPUnit\\Runner\\AfterTestFailureHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php',
|
||||
'PHPUnit\\Runner\\AfterTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php',
|
||||
'PHPUnit\\Runner\\AfterTestWarningHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php',
|
||||
'PHPUnit\\Runner\\BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
|
||||
'PHPUnit\\Runner\\BeforeFirstTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php',
|
||||
'PHPUnit\\Runner\\BeforeTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php',
|
||||
'PHPUnit\\Runner\\DefaultTestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/DefaultTestResultCache.php',
|
||||
'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php',
|
||||
'PHPUnit\\Runner\\Extension\\ExtensionHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php',
|
||||
'PHPUnit\\Runner\\Extension\\PharLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/PharLoader.php',
|
||||
'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Filter\\Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
|
||||
'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
|
||||
'PHPUnit\\Runner\\Hook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/Hook.php',
|
||||
'PHPUnit\\Runner\\NullTestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/NullTestResultCache.php',
|
||||
'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
|
||||
'PHPUnit\\Runner\\ResultCacheExtension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCacheExtension.php',
|
||||
'PHPUnit\\Runner\\StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
|
||||
'PHPUnit\\Runner\\TestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/TestHook.php',
|
||||
'PHPUnit\\Runner\\TestListenerAdapter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php',
|
||||
'PHPUnit\\Runner\\TestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResultCache.php',
|
||||
'PHPUnit\\Runner\\TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
|
||||
'PHPUnit\\Runner\\TestSuiteSorter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php',
|
||||
'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
|
||||
'PHPUnit\\TextUI\\CliArguments\\Builder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Builder.php',
|
||||
'PHPUnit\\TextUI\\CliArguments\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php',
|
||||
'PHPUnit\\TextUI\\CliArguments\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Exception.php',
|
||||
'PHPUnit\\TextUI\\CliArguments\\Mapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php',
|
||||
'PHPUnit\\TextUI\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php',
|
||||
'PHPUnit\\TextUI\\DefaultResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php',
|
||||
'PHPUnit\\TextUI\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/Exception.php',
|
||||
'PHPUnit\\TextUI\\Help' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Help.php',
|
||||
'PHPUnit\\TextUI\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php',
|
||||
'PHPUnit\\TextUI\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
|
||||
'PHPUnit\\TextUI\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php',
|
||||
'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php',
|
||||
'PHPUnit\\TextUI\\TestFileNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php',
|
||||
'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
||||
'PHPUnit\\TextUI\\TestSuiteMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestSuiteMapper.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\FilterMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\Directory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Html' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Constant' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\ConvertLogTypes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCloverToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCrap4jToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageHtmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoveragePhpToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageTextToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Directory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Extension' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\File' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\FileCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\FileCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\IniSetting' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCoverageElement' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\LogToReportMigration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Junit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Logging' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Html' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\PhpHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheTokensAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveEmptyFilter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLogTypes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestFile' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocationTo93' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\Variable' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php',
|
||||
'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php',
|
||||
'PHPUnit\\Util\\Annotation\\DocBlock' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Annotation/DocBlock.php',
|
||||
'PHPUnit\\Util\\Annotation\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Annotation/Registry.php',
|
||||
'PHPUnit\\Util\\Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
|
||||
'PHPUnit\\Util\\Color' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Color.php',
|
||||
'PHPUnit\\Util\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
||||
'PHPUnit\\Util\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception.php',
|
||||
'PHPUnit\\Util\\ExcludeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ExcludeList.php',
|
||||
'PHPUnit\\Util\\FileLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/FileLoader.php',
|
||||
'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
|
||||
'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
|
||||
'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
|
||||
'PHPUnit\\Util\\InvalidDataSetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidDataSetException.php',
|
||||
'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php',
|
||||
'PHPUnit\\Util\\Log\\JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php',
|
||||
'PHPUnit\\Util\\Log\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
|
||||
'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
|
||||
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
||||
'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
|
||||
'PHPUnit\\Util\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
|
||||
'PHPUnit\\Util\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/RegularExpression.php',
|
||||
'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
|
||||
'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
|
||||
'PHPUnit\\Util\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\TestDoxPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\TextResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
|
||||
'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
|
||||
'PHPUnit\\Util\\TextTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
|
||||
'PHPUnit\\Util\\Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php',
|
||||
'PHPUnit\\Util\\VersionComparisonOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php',
|
||||
'PHPUnit\\Util\\XdebugFilterScriptGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php',
|
||||
'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml.php',
|
||||
'PHPUnit\\Util\\XmlTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
|
||||
'PHPUnit\\Util\\Xml\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Exception.php',
|
||||
'PHPUnit\\Util\\Xml\\FailedSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php',
|
||||
'PHPUnit\\Util\\Xml\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Loader.php',
|
||||
'PHPUnit\\Util\\Xml\\SchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php',
|
||||
'PHPUnit\\Util\\Xml\\SchemaDetector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaDetector.php',
|
||||
'PHPUnit\\Util\\Xml\\SchemaFinder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaFinder.php',
|
||||
'PHPUnit\\Util\\Xml\\SnapshotNodeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php',
|
||||
'PHPUnit\\Util\\Xml\\SuccessfulSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php',
|
||||
'PHPUnit\\Util\\Xml\\ValidationResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/ValidationResult.php',
|
||||
'PHPUnit\\Util\\Xml\\Validator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Validator.php',
|
||||
'PharIo\\Manifest\\Application' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Application.php',
|
||||
'PharIo\\Manifest\\ApplicationName' => __DIR__ . '/..' . '/phar-io/manifest/src/values/ApplicationName.php',
|
||||
'PharIo\\Manifest\\Author' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Author.php',
|
||||
@ -663,7 +289,6 @@ class ComposerStaticInit4e4b1a7db13d3f09b3be1f5826185b1b
|
||||
'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php',
|
||||
'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php',
|
||||
'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
|
||||
'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php',
|
||||
'SebastianBergmann\\CliParser\\AmbiguousOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php',
|
||||
'SebastianBergmann\\CliParser\\Exception' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/Exception.php',
|
||||
'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user