Skip to content

Commit 4ecc671

Browse files
committed
for peppol: still allow emails with duplicates te be sent (ex when the timesheet arrived later)
1 parent 1b42ce0 commit 4ecc671

File tree

8 files changed

+58
-9
lines changed

8 files changed

+58
-9
lines changed

backend/src/models/config.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,12 @@ export interface ICompanyConfig {
3333
email: IEmail;
3434
emailSignature: string;
3535
emailReminder: string;
36+
emailReminderCc: string;
37+
emailReminderBcc: string;
38+
emailCreditNotaSubject: string;
39+
emailCreditNotaBody: string;
40+
emailPeppolDuplicateSubject: string;
41+
emailPeppolDuplicateBody: string;
42+
emailInvoiceOnly: string;
3643
audit: IAudit;
3744
}

frontend/src/components/config/models/ConfigConfig.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ export const configDefinition: FullFormConfig = [
4848
{key: 'email.body', component: 'InvoiceReplacementsTextEditor', cols: 12},
4949
{key: 'emailCreditNotaSubject', cols: 12, component: 'InvoiceReplacementsInput'},
5050
{key: 'emailCreditNotaBody', component: 'InvoiceReplacementsTextEditor', cols: 12},
51+
52+
{title: {title: 'config.emailPeppolDuplicate.title', level: 4}},
53+
{key: 'emailPeppolDuplicateSubject', cols: 12, component: 'InvoiceReplacementsInput'},
54+
{key: 'emailPeppolDuplicateBody', component: 'InvoiceReplacementsTextEditor', cols: 12},
55+
5156
{key: 'emailSignature', component: 'InvoiceReplacementsTextEditor', cols: 12},
5257
{key: 'emailReminder', component: 'InvoiceReplacementsTextEditor', cols: 12},
5358
{key: 'emailReminderCc', component: 'email', cols: 6},

frontend/src/components/config/models/ConfigModel.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ export type ConfigModel = {
2828
emailReminderBcc: string;
2929
emailCreditNotaSubject: string;
3030
emailCreditNotaBody: string;
31+
/** Peppol Duplicate: subject for sending invoice+timesheet by email after peppol */
32+
emailPeppolDuplicateSubject: string;
33+
/** Peppol Duplicate: body for sending invoice+timesheet by email after peppol */
34+
emailPeppolDuplicateBody: string;
3135
/** Email address to email the invoice pdf (without timesheet) */
3236
emailInvoiceOnly: string;
3337
/** How many months to load at initialLoad */

frontend/src/components/config/models/getNewConfig.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ export const defaultConfig: ConfigModel = {
3636
emailReminderBcc: '',
3737
emailCreditNotaSubject: '',
3838
emailCreditNotaBody: '',
39+
emailPeppolDuplicateSubject: '',
40+
emailPeppolDuplicateBody: '',
3941
emailInvoiceOnly: '',
4042
initialMonthLoad: 12,
4143
peppolPivotDate: moment.utc('2026-01-01'),

frontend/src/components/controls/email/EmailModal.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export enum EmailTemplate {
1818
None,
1919
InitialEmail,
2020
Reminder,
21+
PeppolDuplicate,
2122
}
2223

2324

@@ -58,6 +59,13 @@ const getDefaultEmailValue = (
5859
if (config.emailReminderBcc && !client.email.bcc) {
5960
finalValues.bcc = config.emailReminderBcc;
6061
}
62+
} else if (template === EmailTemplate.PeppolDuplicate) {
63+
if (config.emailPeppolDuplicateSubject) {
64+
finalValues.subject = invoiceReplacements(config.emailPeppolDuplicateSubject, invoice, creditNotes);
65+
}
66+
if (config.emailPeppolDuplicateBody) {
67+
finalValues.body = config.emailPeppolDuplicateBody;
68+
}
6169
} else if (invoice.money.total < 0 && config.emailCreditNotaSubject) {
6270
finalValues.subject = invoiceReplacements(config.emailCreditNotaSubject, invoice, creditNotes);
6371
finalValues.body = config.emailCreditNotaBody;

frontend/src/components/invoice/invoice-edit/EditInvoiceFooter.tsx

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -159,15 +159,26 @@ export const EditInvoiceFooter = ({invoice, initInvoice, hasChanges, setEmailMod
159159
</BusyButton>
160160
)}
161161
{!invoice.isNew && invoice.client && shouldUsePeppol(invoice, config) && isSentStatus && (
162-
<Button
163-
claim={invoice.isQuotation ? Claim.ManageQuotations : Claim.EmailInvoices}
164-
variant="light"
165-
icon="fas fa-paper-plane"
166-
onClick={() => setShowStatusModal(true)}
167-
className="tst-peppol-status"
168-
>
169-
{t('invoice.peppolStatus')}
170-
</Button>
162+
<>
163+
<Button
164+
claim={invoice.isQuotation ? Claim.ManageQuotations : Claim.EmailInvoices}
165+
variant="light"
166+
icon="fas fa-paper-plane"
167+
onClick={() => setShowStatusModal(true)}
168+
className="tst-peppol-status"
169+
>
170+
{t('invoice.peppolStatus')}
171+
</Button>
172+
<Button
173+
claim={invoice.isQuotation ? Claim.ManageQuotations : Claim.EmailInvoices}
174+
variant="light"
175+
icon="far fa-envelope"
176+
onClick={() => setEmailModal(EmailTemplate.PeppolDuplicate)}
177+
className="tst-open-email-peppol-duplicate"
178+
>
179+
{t('email.preparePeppolDuplicate')}
180+
</Button>
181+
</>
171182
)}
172183
{!invoice.isNew && invoice.client && !shouldUsePeppol(invoice, config) && (
173184
<>

frontend/src/trans.en.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,11 @@ export const trans = {
236236
},
237237
emailCreditNotaSubject: 'Credit Note: Default subject',
238238
emailCreditNotaBody: 'Credit Note: Default email',
239+
emailPeppolDuplicate: {
240+
title: 'Peppol Duplicate',
241+
},
242+
emailPeppolDuplicateSubject: 'Default subject',
243+
emailPeppolDuplicateBody: 'Default email',
239244
emailSignature: 'Default email signature',
240245
emailReminder: 'Email invoice reminder',
241246
emailReminderCc: 'Reminder CC',
@@ -753,6 +758,7 @@ export const trans = {
753758
title: 'Email invoice',
754759
prepareEmail: 'Prepare email',
755760
prepareEmailReminder: 'Email reminder',
761+
preparePeppolDuplicate: 'Duplicate email',
756762
to: 'To',
757763
toPlaceholder: 'Separate email addresses with ;',
758764
cc: 'CC',

frontend/src/trans.nl.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,11 @@ export const trans = {
236236
},
237237
emailCreditNotaSubject: 'Credit Nota: Standaard onderwerp',
238238
emailCreditNotaBody: 'Credit Nota: Standaard email',
239+
emailPeppolDuplicate: {
240+
title: 'Peppol Duplicaat',
241+
},
242+
emailPeppolDuplicateSubject: 'Standaard onderwerp',
243+
emailPeppolDuplicateBody: 'Standaard email',
239244
emailSignature: 'Standaard email signature',
240245
emailReminder: 'Email factuur herinnering',
241246
emailReminderCc: 'Herinnering CC',
@@ -753,6 +758,7 @@ export const trans = {
753758
title: 'Factuur emailen',
754759
prepareEmail: 'Email voorbereiden',
755760
prepareEmailReminder: 'Email herinnering',
761+
preparePeppolDuplicate: 'Duplicaat email',
756762
to: 'Naar',
757763
toPlaceholder: 'Email adressen met ; scheiden',
758764
cc: 'CC',

0 commit comments

Comments
 (0)