diff --git a/src/i18n/en-ca/index.ts b/src/i18n/en-ca/index.ts index 01beb59..1220ec9 100644 --- a/src/i18n/en-ca/index.ts +++ b/src/i18n/en-ca/index.ts @@ -258,7 +258,8 @@ export default { timeSheetValidations: 'Time sheet approvals', }, timesheet: { - //employee's timesheet page + title:'Timesheet', + date_ranges_to:'to', days: ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'], nav_button: { calendar_date_picker:'Calendar', @@ -269,68 +270,72 @@ export default { save_button:'Save', cancel_button:'Cancel', remote_button: 'Remote work', - add_shift:'Add Shift', - shift_types_label: 'Shift`s Type', - shift_types: { - EMERGENCY: 'Emergency', - EVENING: 'Evening', - HOLIDAY: 'Holiday', - REGULAR: 'Regular', - SICK: 'Sick Leave', - VACATION: 'Vacation', + delete_button: 'Delete', + shift: { + actions: { + add:'Add Shift', + edit: 'Edit shift', + delete: 'Delete shift', + delete_confirmation_msg: 'Do you want to delete this shift completly?', + }, + types: { + label: 'Shift`s Type', + EMERGENCY: 'Emergency', + EVENING: 'Evening', + HOLIDAY: 'Holiday', + OVERTIME: 'Overtime', + REGULAR: 'Regular', + SICK: 'Sick Leave', + VACATION: 'Vacation', + REMOTE: 'Remote work', + }, + errors: { + not_found:'Shift not found', + overlap:'An overlaps occured between 2 or more shifts', + invalid:'Invalid shift`s entry', + unknown:'Unknown error', + comment_required:'A comment is required', + comment_too_long:'Your comment is too long', + }, + fields: { + start:'Start (HH:mm)', + end:'End (HH:mm)', + header_comment:'Shift`s comment', + textarea_comment: 'Leave a comment here', + }, }, - fields: { - start:'Start', - end:'End', - header_comment:'Shift`s comment', - textarea_comment: 'Leave a comment here', + expense: { + add_expense:'Add Expense', + amount:'Amount', + date:'Date', + empty_list:'No registered expenses', + errors: { + date_required_or_invalid:'the date is missing or invalid', + comment_required:'A comment required', + comment_too_long:'Your comment is too long', + amount_must_be_positive:'the amount cannot be under 0$', + mileave_must_be_positive:'the mileage cannot be under 0', + amount_xor_mileage:'you cannot enter an amount and a mileage for the same expense', + mileage_required_for_type:'you need to enter a value for mileage when you enter an expense of that type', + amount_required_for_type:'you need to enter a value for amount when you enter an expense of that type', + }, + hints: { + amount_or_mileage:'Either amount or mileage, not both', + comment_required:'A comment required', + }, + mileage:'Mileage', + open_btn:'List of expenses', + title:'List of all expenses', + total_amount:'Total amount', + total_mileage:'Total mileage', + type:'Type', + types: { + PER_DIEM:'Per Diem', + EXPENSES:'expense', + MILEAGE:'mileage', + PRIME_GARDE:'on-call allowance', + }, }, - //rest - timeSheetTab_1: 'Shifts', - timeSheetTab_2: 'Expenses', - templateButton: 'Apply Templates', - shiftTemplateTitle: 'Set up your day schedule', - shiftType: 'Type', - remoteShift: 'Remote', - shiftStartTime: 'Start time', - shiftEndTime: 'End time', - shiftComment: 'Comment', - overTimeTitle: 'Overtime regular hours: ', - totalPayedHours: 'Total hours worked: ', - // shift options - shiftRegular: 'regular', - shiftEvening: 'evening', - shiftEmergency: 'emergency', - shiftSick: 'sick', - shiftVacation: 'vacation', - shiftHoliday: 'holiday', - dateRangesFrom: 'from', - dateRangesTo: 'to', - shiftBankedHours: 'Total hours to bank', - bankedHoursHint_1: ' on', - bankedHoursHint_2: ' accumulated hours', - qTimeClose: 'Close', - saveButton: 'Save', - //shift validations - timeSheetValidated: 'Validated week', - timeSheetBlocked: 'Blocked week', - shiftTypeValidation: 'Type must be filled in.', - shiftStartTimeValidation: 'Start time must be filled in.', - shiftEndTimeValidation: 'End time must be filled in.', - endTimeValidation: 'The end time cannot be before or equal the start time', - expensesTile: 'daily expenses', - expensesType: 'Type', - expensesValue: 'amount', - expensesDescription: 'Description', - expensesEvidence: 'attachment', - //expenses validations - expensesTypeValidation: 'Type must be filled in.', - expensesValueValidation: 'Amount must be filled in.', - //expensesOptions - refund: 'Refund', - garde: 'Garde', - perdiem: 'Perdiem', - mileage: 'Mileage', }, timeSheetValidations: { tableColumnLabelFullname: 'Full name', diff --git a/src/i18n/fr-ca/index.ts b/src/i18n/fr-ca/index.ts index 1654b9e..6059b44 100644 --- a/src/i18n/fr-ca/index.ts +++ b/src/i18n/fr-ca/index.ts @@ -308,7 +308,8 @@ export default { noDataLabel: 'Je n’ai rien trouvé pour toi', }, timesheet: { - //employee's timesheet page + title:'Carte de temps', + date_ranges_to:'au', days: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], nav_button: { calendar_date_picker:'Calendrier', @@ -319,69 +320,72 @@ export default { save_button:'Enregistrer', cancel_button:'Annuler', remote_button: 'Télétravail', - - add_shift:'Ajouter une quart', - shift_types_label: 'Type de quart', - shift_types: { - EMERGENCY: 'Urgence', - EVENING: 'Soir', - HOLIDAY: 'Férier', - SICK: 'Absence', - REGULAR: 'Régulier', - VACATION: 'Vacance', + delete_button: 'Supprimer', + shift: { + actions: { + add:'Ajouter un Quart', + edit: 'Modifier un Quart', + delete: 'Supprimer un Quart', + delete_confirmation_msg: 'Voulez-vous complètement supprimer ce quart?', + }, + types: { + label: 'Type de Quart', + EMERGENCY: 'Urgence', + EVENING: 'Soir', + HOLIDAY: 'Férié', + OVERTIME: 'Supplémentaire', + REGULAR: 'Régulier', + SICK: 'Maladie', + VACATION: 'Vacance', + REMOTE: 'Télétravail', + }, + errors: { + not_found:'Aucun quart trouvé', + overlap:'Il y a un chevauchement entre deux ou plusieurs quarts', + invalid:'Entrée du quart invalide', + unknown:'Erreur inconnue', + comment_required:'un commentaire est requis', + comment_too_long:'votre commentaire est trop long', + }, + fields: { + start:'Début (HH:mm)', + end:'Fin (HH:mm)', + header_comment:'Commentaire du Quart', + textarea_comment: 'Laissez votre commentaire ici', + }, }, - fields: { - start:'Entrée', - end:'Sortie', - header_comment:'Commentaire du Quart', - textarea_comment:'Laissez votre commentaire', + expense: { + add_expense:'Ajouter une dépense', + amount:'Montant', + date:'Date', + empty_list:'Aucun dépense enregistrée', + errors: { + date_required_or_invalid:'La date est manquante ou invalide', + comment_required:'un commentaire est requis', + comment_too_long:'votre commentaire est trop long', + amount_must_be_positive:'le montant doit être suppérieur à 0$', + mileave_must_be_positive:'le kilométrage doit être suppérieur à 0', + amount_xor_mileage:'Vous ne pouvez pas saisir un montant et un kilométrage pour une même dépense', + mileage_required_for_type:'Vous devez entrer une valeur en kilométrage pour ce type de dépense', + amount_required_for_type:'Vous devez entrer une valeur en montant $ pour ce type de dépense', + }, + hints: { + amount_or_mileage:'Soit dépense ou kilométrage, pas les deux', + comment_required:'un commentaire est requis', + }, + mileage:'Kilométrage', + open_btn:'Liste des Dépenses', + title:'Liste des dépenses', + total_amount:'Montant total', + total_mileage:'Kilométrage total', + type:'Type', + types: { + PER_DIEM:'Per diem', + EXPENSES:'dépense', + MILEAGE:'kilométrage', + PRIME_GARDE:'Prime de garde', + }, }, - //rest - timeSheetTab_1: 'Quarts de travail', - timeSheetTab_2: 'Dépenses', - templateButton: 'Appliquer le modèle', - shiftTemplateTitle: 'Mettre en place votre horaire de jour', - shiftType: 'Type', - remoteShift: 'Télétravail', - shiftStartTime: 'Entrée', - shiftEndTime: 'Sortie', - shiftComment: 'Commentaire', - overTimeTitle: 'Heures régulières supplémentaires: ', - totalPayedHours: 'Total des heures travaillées: ', - // shift options - shiftRegular: 'régulier', - shiftEvening: 'soir', - shiftEmergency: 'urgence', - shiftSick: 'maladie', - shiftVacation: 'vacances', - shiftHoliday: 'férié', - dateRangesFrom: 'du', - dateRangesTo: 'au', - shiftBankedHours: 'Totale d’heures à banquer', - bankedHoursHint_1: ' sur', - bankedHoursHint_2: ' heures d’accumulé', - qTimeClose: 'Fermer', - saveButton: 'Enregistrer', - //shift validations - timeSheetValidated: 'Semaine validée', - timeSheetBlocked: 'Semaine bloquée', - shiftTypeValidation: 'Le type doit être rempli.', - shiftStartTimeValidation: 'Entrée doit être rempli.', - shiftEndTimeValidation: 'Sortie doit être rempli.', - endTimeValidation:'L’heure de fin doit suivre l’heure de début.', - expensesTile: 'Dépenses du jour', - expensesType: 'Type', - expensesValue: 'Montant', - expensesDescription: 'Description', - expensesEvidence: 'Attachement', - //expenses validations - expensesTypeValidation: 'Type doit être rempli.', - expensesValueValidation: 'Montant doit être rempli.', - //expensesOptions - refund: 'Remboursement ', - garde: 'Garde', - perdiem: 'Perdiem', - mileage: 'Kilometrage', }, timeSheetValidations: { tableColumnLabelFullname: 'nom complet', diff --git a/src/modules/timesheet-approval/components/timesheet-approval-period-picker.vue b/src/modules/timesheet-approval/components/timesheet-approval-period-picker.vue index b56e3e0..6040adf 100644 --- a/src/modules/timesheet-approval/components/timesheet-approval-period-picker.vue +++ b/src/modules/timesheet-approval/components/timesheet-approval-period-picker.vue @@ -20,7 +20,7 @@ const onDateSelected = (value: string, reason: string, details: QDateDetails) => { calendar_date.value = value; - is_showing_calendar_picker.value = false; + is_showing_calendar_picker.value = false; emit('date-selected', value, reason, details); } diff --git a/src/modules/timesheet-approval/composables/use-timesheet-approval-api.ts b/src/modules/timesheet-approval/composables/use-timesheet-approval-api.ts index 952b192..ecdf20a 100644 --- a/src/modules/timesheet-approval/composables/use-timesheet-approval-api.ts +++ b/src/modules/timesheet-approval/composables/use-timesheet-approval-api.ts @@ -2,6 +2,7 @@ import { useTimesheetStore } from "src/stores/timesheet-store"; import { useAuthStore } from "src/stores/auth-store"; import type { PayPeriodReportFilters } from "../types/timesheet-approval-pay-period-report-interface"; import { default_pay_period_overview_employee, type PayPeriodOverviewEmployee } from "../types/timesheet-approval-pay-period-overview-employee-interface"; +import { date } from "quasar"; export const useTimesheetApprovalApi = () => { const timesheet_store = useTimesheetStore(); @@ -63,11 +64,29 @@ export const useTimesheetApprovalApi = () => { await timesheet_store.getTimesheetApprovalCSVReport(options); }; + const getCurrentPayPerdioOverview = async (): Promise => { + const today = date.formatDate(new Date(), 'YYYY-MM-DD'); + const success = await timesheet_store.getPayPeriodByDate(today); + if(!success) return; + + const { pay_year, pay_period_no } = timesheet_store.current_pay_period; + + await timesheet_store.getTimesheetApprovalPayPeriodEmployeeOverviews( + pay_year, + pay_period_no, + auth_store.user.email + ); + + await timesheet_store.getTimesheetsByPayPeriodAndEmail(auth_store.user.email); + + }; + return { getPayPeriodOverviewByDate, getNextPayPeriodOverview, getPayPeriodOverviewByEmployeeEmail, getTimesheetsByPayPeriodAndEmail, - getTimesheetApprovalCSVReport + getTimesheetApprovalCSVReport, + getCurrentPayPerdioOverview } }; \ No newline at end of file diff --git a/src/modules/timesheets/components/expenses/timesheet-details-expenses.vue b/src/modules/timesheets/components/expenses/timesheet-details-expenses.vue new file mode 100644 index 0000000..cda1de1 --- /dev/null +++ b/src/modules/timesheets/components/expenses/timesheet-details-expenses.vue @@ -0,0 +1,345 @@ + + + + \ No newline at end of file diff --git a/src/modules/timesheets/components/expenses/timesheet-expenses-list-row.vue b/src/modules/timesheets/components/expenses/timesheet-expenses-list-row.vue deleted file mode 100644 index e69de29..0000000 diff --git a/src/modules/timesheets/components/expenses/timesheet-expenses-list.vue b/src/modules/timesheets/components/expenses/timesheet-expenses-list.vue deleted file mode 100644 index e69de29..0000000 diff --git a/src/modules/timesheets/components/expenses/timesheet-expenses.vue b/src/modules/timesheets/components/expenses/timesheet-expenses.vue deleted file mode 100644 index e69de29..0000000 diff --git a/src/modules/timesheets/components/shift/timesheet-shift-comment.vue b/src/modules/timesheets/components/shift/shift-comment.vue similarity index 100% rename from src/modules/timesheets/components/shift/timesheet-shift-comment.vue rename to src/modules/timesheets/components/shift/shift-comment.vue diff --git a/src/modules/timesheets/components/shift/shift-crud-dialog.vue b/src/modules/timesheets/components/shift/shift-crud-dialog.vue new file mode 100644 index 0000000..df27201 --- /dev/null +++ b/src/modules/timesheets/components/shift/shift-crud-dialog.vue @@ -0,0 +1,242 @@ + + + + \ No newline at end of file diff --git a/src/modules/timesheets/components/shift/shifts-legend.vue b/src/modules/timesheets/components/shift/shifts-legend.vue new file mode 100644 index 0000000..08a568f --- /dev/null +++ b/src/modules/timesheets/components/shift/shifts-legend.vue @@ -0,0 +1,48 @@ + + + \ No newline at end of file diff --git a/src/modules/timesheets/components/shift/timesheet-details-shifts-row-header.vue b/src/modules/timesheets/components/shift/timesheet-details-shifts-row-header.vue new file mode 100644 index 0000000..37d2af7 --- /dev/null +++ b/src/modules/timesheets/components/shift/timesheet-details-shifts-row-header.vue @@ -0,0 +1,33 @@ + \ No newline at end of file diff --git a/src/modules/timesheets/components/shift/timesheet-details-shifts-row.vue b/src/modules/timesheets/components/shift/timesheet-details-shifts-row.vue new file mode 100644 index 0000000..5058fb9 --- /dev/null +++ b/src/modules/timesheets/components/shift/timesheet-details-shifts-row.vue @@ -0,0 +1,136 @@ + + + \ No newline at end of file diff --git a/src/modules/timesheets/components/shift/timesheet-details-shifts.vue b/src/modules/timesheets/components/shift/timesheet-details-shifts.vue new file mode 100644 index 0000000..a2903dd --- /dev/null +++ b/src/modules/timesheets/components/shift/timesheet-details-shifts.vue @@ -0,0 +1,96 @@ + + + \ No newline at end of file diff --git a/src/modules/timesheets/components/time-sheet-employee-container.vue b/src/modules/timesheets/components/time-sheet-employee-container.vue deleted file mode 100644 index e69de29..0000000 diff --git a/src/modules/timesheets/components/timesheet/timesheet-navigation.vue b/src/modules/timesheets/components/timesheet/timesheet-navigation.vue index 1a1136b..ada6b56 100644 --- a/src/modules/timesheets/components/timesheet/timesheet-navigation.vue +++ b/src/modules/timesheets/components/timesheet/timesheet-navigation.vue @@ -1,70 +1,53 @@