diff --git a/web-app/src/pages/TransactionDraftPage.vue b/web-app/src/pages/TransactionDraftPage.vue index 97755b2..2de2019 100644 --- a/web-app/src/pages/TransactionDraftPage.vue +++ b/web-app/src/pages/TransactionDraftPage.vue @@ -216,7 +216,7 @@ function formatRecurringTransactionScheduleExpr(rt: RecurringTransactionResponse >Delete - + { + return { + valuePerItem: li.valuePerItem, + quantity: li.quantity, + description: li.description, + categoryId: li.category?.id ?? null, + } + }), + attachmentIdsToRemove: [], + }) + router.push(`/profiles/${getSelectedProfile(route)}/transaction-drafts/${newDraft.id}`) +} diff --git a/web-app/src/pages/transaction-editor/util.ts b/web-app/src/pages/transaction-editor/util.ts index 3f2d4d6..30b1ae5 100644 --- a/web-app/src/pages/transaction-editor/util.ts +++ b/web-app/src/pages/transaction-editor/util.ts @@ -129,6 +129,7 @@ export class NewTransactionEditorContext implements TransactionEditorContextBase callback: async (formData, route, router) => { const api = new TransactionApiClient(getSelectedProfile(route)) // Assume that form data is valid! + createNewVendorIfNeeded(formData, api) const data = toTransactionPayload(formData) const txn = await api.addTransaction(data, formData.attachmentsToUpload) await router.replace(`/profiles/${getSelectedProfile(route)}/transactions/${txn.id}`) @@ -139,6 +140,7 @@ export class NewTransactionEditorContext implements TransactionEditorContextBase disabled: !this.areChangesPresent(formData) || !isFormDataValidForDraftSave(formData), callback: async (formData, route, router) => { const api = new TransactionApiClient(getSelectedProfile(route)) + createNewVendorIfNeeded(formData, api) const data = toDraftPayload(formData) const draft = await api.addDraft(data, formData.attachmentsToUpload) await router.replace( @@ -237,6 +239,7 @@ export class TransactionEditorContext implements TransactionEditorContextBase { callback: async (formData, route, router) => { const api = new TransactionApiClient(getSelectedProfile(route)) // Assume that form data is valid! + createNewVendorIfNeeded(formData, api) const data = toTransactionPayload(formData) const txn = await api.updateTransaction( this.existingTransaction.id, @@ -275,7 +278,6 @@ export class DraftEditorContext implements TransactionEditorContextBase { formData.debitedAccountId === null || formData.creditedAccountId !== formData.debitedAccountId) && (formData.templateName === null || formData.templateName.length <= 32) - console.log('Checking draft editor valid:', formData, result) return result } @@ -328,6 +330,7 @@ export class DraftEditorContext implements TransactionEditorContextBase { disabled: !this.areChangesPresent() || !this.isFormDataValid(formData), callback: async (formData, route, router) => { const api = new TransactionApiClient(getSelectedProfile(route)) + createNewVendorIfNeeded(formData, api) const data = toDraftPayload(formData) const draft = await api.updateDraft( this.existingDraft.id, @@ -461,6 +464,16 @@ function toTransactionPayload(formData: TransactionEditorFormFields): AddTransac return payload } +async function createNewVendorIfNeeded( + formData: TransactionEditorFormFields, + api: TransactionApiClient, +) { + if (formData.vendor && formData.vendor.id === -1) { + const vendor = await api.createVendor({ name: formData.vendor.name, description: null }) + formData.vendor = vendor + } +} + async function goBackOrHome(router: Router, route: RouteLocation) { if (window.history.length > 0) { await router.back()