diff --git a/src/pages/InvoiceIn/Card/InvoiceInDescriptor.vue b/src/pages/InvoiceIn/Card/InvoiceInDescriptor.vue
index ec528ef76..d6ce0e41d 100644
--- a/src/pages/InvoiceIn/Card/InvoiceInDescriptor.vue
+++ b/src/pages/InvoiceIn/Card/InvoiceInDescriptor.vue
@@ -20,11 +20,7 @@ import { useCapitalize } from 'src/composables/useCapitalize';
import SupplierDescriptorProxy from 'src/pages/Supplier/Card/SupplierDescriptorProxy.vue';
const $props = defineProps({
- id: {
- type: Number,
- required: false,
- default: null,
- },
+ id: { type: Number, default: null },
});
const route = useRoute();
@@ -51,6 +47,10 @@ const actions = {
cb: checkToBook,
action: toBook,
},
+ unbook: {
+ title: 'Are you sure you want to unbook this invoice?',
+ action: toUnbook,
+ },
delete: {
title: 'Are you sure you want to delete this invoice?',
action: deleteInvoice,
@@ -235,6 +235,19 @@ async function toBook() {
setTimeout(() => location.reload(), 500);
}
+async function toUnbook() {
+ const { data } = await axios.post(`InvoiceIns/${entityId.value}/toUnbook`);
+ const { isLinked, bookEntry, accountingEntries } = data;
+
+ const type = isLinked ? 'warning' : 'positive';
+ const message = isLinked
+ ? t('isLinked', { bookEntry, accountingEntries })
+ : t('isNotLinked', { bookEntry });
+
+ quasar.notify({ type, message });
+ if (isLinked) await cardDescriptorRef.value.getData();
+}
+
async function deleteInvoice() {
await axios.delete(`InvoiceIns/${entityId.value}`);
quasar.notify({
@@ -253,8 +266,6 @@ async function cloneInvoice() {
router.push({ path: `/invoice-in/${data.id}/summary` });
}
-const requiredFieldRule = (val) => val || t('globals.requiredField');
-
const isAdministrative = () => hasAny(['administrative']);
const isAgricultural = () =>
@@ -346,6 +357,16 @@ const createInvoiceInCorrection = async () => {
>
{{ t('To book') }}
+
+
+ {{ t('To unbook') }}
+
+
{
:options="siiTypeInvoiceOuts"
option-value="id"
option-label="code"
- :rules="[requiredFieldRule]"
+ :required="true"
/>
@@ -501,7 +522,7 @@ const createInvoiceInCorrection = async () => {
:options="cplusRectificationTypes"
option-value="id"
option-label="description"
- :rules="[requiredFieldRule]"
+ :required="true"
/>
{
:options="invoiceCorrectionTypes"
option-value="id"
option-label="description"
- :rules="[requiredFieldRule]"
+ :required="true"
/>
@@ -549,9 +570,14 @@ const createInvoiceInCorrection = async () => {
}
+en:
+ isNotLinked: The entry {bookEntry} has been deleted with {accountingEntries} entries
+ isLinked: The entry {bookEntry} has been linked to Sage. Please contact administration for further information
es:
To book: Contabilizar
+ To unbook: Descontabilizar
Are you sure you want to book this invoice?: Estas seguro de querer asentar esta factura?
+ Are you sure you want to unbook this invoice?: Estas seguro de querer desasentar esta factura?
Delete invoice: Eliminar factura
Are you sure you want to delete this invoice?: Estas seguro de querer eliminar esta factura?
Invoice deleted: Factura eliminada
@@ -565,4 +591,6 @@ es:
Rectificative invoice: Factura rectificativa
Original invoice: Factura origen
Entry: entrada
+ isNotLinked: Se ha eliminado el asiento nº {bookEntry} con {accountingEntries} apuntes
+ isLinked: El asiento {bookEntry} fue enlazado a Sage, por favor contacta con administración