@@ -58,7 +58,7 @@ onMounted(async () => {
dash
/>
diff --git a/src/pages/Entry/Card/EntryDescriptor.vue b/src/pages/Entry/Card/EntryDescriptor.vue
index 188e66358..c54ecc3f0 100644
--- a/src/pages/Entry/Card/EntryDescriptor.vue
+++ b/src/pages/Entry/Card/EntryDescriptor.vue
@@ -7,9 +7,9 @@ import CardDescriptor from 'components/ui/CardDescriptor.vue';
import VnLv from 'src/components/ui/VnLv.vue';
import { toDate } from 'src/filters';
-import { usePrintService } from 'composables/usePrintService';
import { getUrl } from 'src/composables/getUrl';
import filter from './EntryFilter.js';
+import EntryDescriptorMenu from './EntryDescriptorMenu.vue';
const $props = defineProps({
id: {
@@ -21,7 +21,6 @@ const $props = defineProps({
const route = useRoute();
const { t } = useI18n();
-const { openReport } = usePrintService();
const entryDescriptorRef = ref(null);
const url = ref();
@@ -52,10 +51,6 @@ const getEntryRedirectionFilter = (entry) => {
to,
});
};
-
-const showEntryReport = () => {
- openReport(`Entries/${route.params.id}/entry-order-pdf`);
-};
@@ -68,9 +63,7 @@ const showEntryReport = () => {
data-key="Entry"
>
-
- {{ t('Show entry report') }}
-
+
@@ -154,7 +147,6 @@ es:
Supplier card: Ficha del proveedor
All travels with current agency: Todos los envíos con la agencia actual
All entries with current supplier: Todas las entradas con el proveedor actual
- Show entry report: Ver informe del pedido
Go to module index: Ir al índice del modulo
Inventory entry: Es inventario
Virtual entry: Es una redada
diff --git a/src/pages/Entry/Card/EntryDescriptorMenu.vue b/src/pages/Entry/Card/EntryDescriptorMenu.vue
new file mode 100644
index 000000000..a357b46fe
--- /dev/null
+++ b/src/pages/Entry/Card/EntryDescriptorMenu.vue
@@ -0,0 +1,22 @@
+
+
+
+
+ {{ $t('entryList.list.showEntryReport') }}
+
+
diff --git a/src/pages/Entry/Card/EntrySummary.vue b/src/pages/Entry/Card/EntrySummary.vue
index 4fb81d18f..755e39454 100644
--- a/src/pages/Entry/Card/EntrySummary.vue
+++ b/src/pages/Entry/Card/EntrySummary.vue
@@ -12,6 +12,9 @@ import { getUrl } from 'src/composables/getUrl';
import axios from 'axios';
import FetchedTags from 'src/components/ui/FetchedTags.vue';
import VnToSummary from 'src/components/ui/VnToSummary.vue';
+import EntryDescriptorMenu from './EntryDescriptorMenu.vue';
+import VnRow from 'src/components/ui/VnRow.vue';
+import VnTitle from 'src/components/common/VnTitle.vue';
const route = useRoute();
const { t } = useI18n();
@@ -147,9 +150,8 @@ async function setEntryData(data) {
}
const fetchEntryBuys = async () => {
- const { data } = await axios.get(`Entries/${entry.value.id}/getBuys`);
- if (data) entryBuys.value = data;
-
+ const { data } = await axios.get(`Entries/${entry.value.id}/getBuys`);
+ if (data) entryBuys.value = data;
};
@@ -171,15 +173,15 @@ const fetchEntryBuys = async () => {
{{ entry.id }} - {{ entry.supplier.nickname }}
+
+
+
-
+
{
/>
-
+
@@ -212,61 +211,45 @@ const fetchEntryBuys = async () => {
:label="t('entry.summary.travelAgency')"
:value="entry.travel.agency?.name"
/>
-
+
-
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
-import { computed } from 'vue';
+import { computed, ref } from 'vue';
import { useRoute } from 'vue-router';
import { useI18n } from 'vue-i18n';
import { QBtn } from 'quasar';
import VnPaginate from 'src/components/ui/VnPaginate.vue';
import { usePrintService } from 'composables/usePrintService';
-const { openReport } = usePrintService();
+const { openReport } = usePrintService();
+const buyRows = ref([]);
const route = useRoute();
const { t } = useI18n();
const $props = defineProps({
id: {
- type: String,
+ type: Number,
required: false,
default: null,
},
});
const entityId = computed(() => $props.id || route.params.id);
-
const entriesTableColumns = computed(() => [
{
align: 'left',
@@ -63,34 +63,39 @@ const entriesTableColumns = computed(() => [
field: 'grouping',
},
]);
-
+function downloadCSV(rows) {
+ const headers = ['id', 'itemFk', 'name', 'stickers', 'packing', 'comment'];
+
+ const csvRows = rows.map((row) => {
+ const buy = row;
+ const item = buy.item || {};
+
+ return [
+ buy.id,
+ buy.itemFk,
+ item.name || '',
+ buy.stickers,
+ buy.packing,
+ item.comment || '',
+ ].join(',');
+ });
+
+ const csvContent = [headers.join(','), ...csvRows].join('\n');
+
+ const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
+ const url = URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ link.setAttribute('download', `${entityId.value}data.csv`);
+ document.body.appendChild(link);
+ link.click();
+ document.body.removeChild(link);
+}
+
-
-
- {{ title }}
-
-
-
-
-
-
[
>
[
:grid="$q.screen.lt.md"
:no-data-label="t('globals.noResults')"
>
+
+
+
+
+
+
@@ -118,7 +144,6 @@ const entriesTableColumns = computed(() => [
- {{
- scope.opt?.name + ': ' + scope.opt?.nickname
- }}
+
+ {{ scope.opt?.name}}
+
+
+ {{ `#${scope.opt?.id } , ${ scope.opt?.nickname}` }}
+
diff --git a/src/pages/Entry/EntryLatestBuysFilter.vue b/src/pages/Entry/EntryLatestBuysFilter.vue
index 83124c1bf..59dddce26 100644
--- a/src/pages/Entry/EntryLatestBuysFilter.vue
+++ b/src/pages/Entry/EntryLatestBuysFilter.vue
@@ -58,7 +58,7 @@ const tagValues = ref([]);
-
-
+
+
- {{ opt.name }}
+
+ {{ scope.opt?.name}}
+
- {{ opt.nickname }}
+ {{ `#${scope.opt?.id } , ${ scope.opt?.nickname}` }}
@@ -85,7 +87,7 @@ const tagValues = ref([]);
-import { onMounted, ref, computed } from 'vue';
+import { ref, computed } from 'vue';
import { useI18n } from 'vue-i18n';
import EntryFilter from './EntryFilter.vue';
import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
-import { useStateStore } from 'stores/useStateStore';
import VnTable from 'components/VnTable/VnTable.vue';
import RightMenu from 'src/components/common/RightMenu.vue';
import { toDate } from 'src/filters';
@@ -12,7 +11,6 @@ import EntrySummary from './Card/EntrySummary.vue';
import SupplierDescriptorProxy from 'src/pages/Supplier/Card/SupplierDescriptorProxy.vue';
import TravelDescriptorProxy from 'src/pages/Travel/Card/TravelDescriptorProxy.vue';
-const stateStore = useStateStore();
const { t } = useI18n();
const tableRef = ref();
@@ -245,7 +243,6 @@ const columns = computed(() => [
es:
- Inventory entry: Es inventario
Virtual entry: Es una redada
Search entries: Buscar entradas
You can search by entry reference: Puedes buscar por referencia de la entrada
diff --git a/src/pages/Entry/EntryStockBoughtFilter.vue b/src/pages/Entry/EntryStockBoughtFilter.vue
index e59332064..136881f17 100644
--- a/src/pages/Entry/EntryStockBoughtFilter.vue
+++ b/src/pages/Entry/EntryStockBoughtFilter.vue
@@ -65,6 +65,6 @@ onMounted(async () => {
es:
Date: Fecha
params:
- dated: Date
+ dated: Fecha
workerFk: Trabajador
diff --git a/src/pages/Entry/MyEntries.vue b/src/pages/Entry/MyEntries.vue
index 91a29b190..dbe05eb88 100644
--- a/src/pages/Entry/MyEntries.vue
+++ b/src/pages/Entry/MyEntries.vue
@@ -102,7 +102,7 @@ const columns = computed(() => [
actions: [
{
title: t('myEntries.printLabels'),
- icon: 'print',
+ icon: 'move_item',
isPrimary: true,
action: (row) => printBuys(row.id),
},
diff --git a/src/pages/Entry/locale/en.yml b/src/pages/Entry/locale/en.yml
index cd5113d84..59c2666a7 100644
--- a/src/pages/Entry/locale/en.yml
+++ b/src/pages/Entry/locale/en.yml
@@ -1,6 +1,7 @@
entryList:
list:
inventoryEntry: Inventory entry
+ showEntryReport: Show entry report
entryFilter:
filter:
search: General search
@@ -17,5 +18,6 @@ myEntries:
warehouseInFk: Warehouse in
daysOnward: Days onward
daysAgo: Days ago
+ downloadCsv: Download CSV
wasteRecalc:
recalcOk: The wastes were successfully recalculated
diff --git a/src/pages/Entry/locale/es.yml b/src/pages/Entry/locale/es.yml
index 3007c5d44..4fb7bbf08 100644
--- a/src/pages/Entry/locale/es.yml
+++ b/src/pages/Entry/locale/es.yml
@@ -4,6 +4,7 @@ You can search by entry reference: Puedes buscar por referencia de la entrada
entryList:
list:
inventoryEntry: Es inventario
+ showEntryReport: Ver informe del pedido
entryFilter:
filter:
search: Búsqueda general
@@ -20,5 +21,6 @@ myEntries:
warehouseInFk: Alm. entrada
daysOnward: Días adelante
daysAgo: Días atras
+ downloadCsv: Descargar CSV
wasteRecalc:
recalcOk: Se han recalculado las mermas correctamente
diff --git a/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue
index 83b1aa25e..90aa50af7 100644
--- a/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue
+++ b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue
@@ -268,7 +268,7 @@ function deleteFile(dmsFk) {
-import { ref, reactive, computed, onBeforeMount, capitalize } from 'vue';
+import { ref, reactive, computed, onBeforeMount } from 'vue';
import { useRouter, onBeforeRouteUpdate } from 'vue-router';
import { useI18n } from 'vue-i18n';
-import { useQuasar } from 'quasar';
import axios from 'axios';
import { toCurrency, toDate } from 'src/filters';
-import { useAcl } from 'src/composables/useAcl';
-import { downloadFile } from 'src/composables/downloadFile';
-import { useArrayData } from 'src/composables/useArrayData';
-import { usePrintService } from 'composables/usePrintService';
import VnLv from 'src/components/ui/VnLv.vue';
import CardDescriptor from 'components/ui/CardDescriptor.vue';
import FetchData from 'src/components/FetchData.vue';
-import SendEmailDialog from 'components/common/SendEmailDialog.vue';
-import VnConfirm from 'src/components/ui/VnConfirm.vue';
import VnSelect from 'src/components/common/VnSelect.vue';
+import { useCapitalize } from 'src/composables/useCapitalize';
import SupplierDescriptorProxy from 'src/pages/Supplier/Card/SupplierDescriptorProxy.vue';
-import InvoiceInToBook from '../InvoiceInToBook.vue';
+import InvoiceInDescriptorMenu from './InvoiceInDescriptorMenu.vue';
const $props = defineProps({ id: { type: Number, default: null } });
-
const { push, currentRoute } = useRouter();
-
-const quasar = useQuasar();
-const { hasAny } = useAcl();
const { t } = useI18n();
-const { openReport, sendEmail } = usePrintService();
-const arrayData = useArrayData();
-const invoiceIn = computed(() => arrayData.store.data);
const cardDescriptorRef = ref();
const correctionDialogRef = ref();
const entityId = computed(() => $props.id || +currentRoute.value.params.id);
const totalAmount = ref();
-const currentAction = ref();
const config = ref();
const cplusRectificationTypes = ref([]);
const siiTypeInvoiceIns = ref([]);
const invoiceCorrectionTypes = ref([]);
-const actions = {
- unbook: {
- title: t('assertAction', { action: t('unbook') }),
- action: toUnbook,
- },
- delete: {
- title: t('assertAction', { action: t('delete') }),
- action: deleteInvoice,
- },
- clone: {
- title: t('assertAction', { action: t('clone') }),
- action: cloneInvoice,
- },
- showPdf: { cb: showPdfInvoice },
- sendPdf: { cb: sendPdfInvoiceConfirmation },
- correct: { cb: () => correctionDialogRef.value.show() },
-};
+
const filter = {
include: [
{
@@ -90,7 +60,7 @@ const routes = reactive({
return {
name: 'InvoiceInList',
query: {
- table: JSON.stringify({ supplierFk: id }),
+ params: JSON.stringify({ supplierFk: id }),
},
};
},
@@ -99,7 +69,7 @@ const routes = reactive({
return {
name: 'InvoiceInList',
query: {
- table: JSON.stringify({ correctedFk: entityId.value }),
+ params: JSON.stringify({ correctedFk: entityId.value }),
},
};
}
@@ -118,21 +88,21 @@ const routes = reactive({
const correctionFormData = reactive({
invoiceReason: 2,
invoiceType: 2,
- invoiceClass: 8,
+ invoiceClass: 6,
});
const isNotFilled = computed(() => Object.values(correctionFormData).includes(null));
onBeforeMount(async () => {
await setInvoiceCorrection(entityId.value);
const { data } = await axios.get(`InvoiceIns/${entityId.value}/getTotals`);
- totalAmount.value = data.totalTaxableBase;
+ totalAmount.value = data.totalDueDay;
});
onBeforeRouteUpdate(async (to, from) => {
if (to.params.id !== from.params.id) {
await setInvoiceCorrection(to.params.id);
const { data } = await axios.get(`InvoiceIns/${to.params.id}/getTotals`);
- totalAmount.value = data.totalTaxableBase;
+ totalAmount.value = data.totalDueDay;
}
});
@@ -153,94 +123,6 @@ async function setInvoiceCorrection(id) {
);
}
-function openDialog() {
- quasar.dialog({
- component: VnConfirm,
- componentProps: {
- title: t(currentAction.value.title),
- promise: currentAction.value.action,
- },
- });
-}
-
-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) arrayData.store.data.isBooked = false;
-}
-
-async function deleteInvoice() {
- await axios.delete(`InvoiceIns/${entityId.value}`);
- quasar.notify({
- type: 'positive',
- message: t('Invoice deleted'),
- });
- push({ path: '/invoice-in' });
-}
-
-async function cloneInvoice() {
- const { data } = await axios.post(`InvoiceIns/${entityId.value}/clone`);
- quasar.notify({
- type: 'positive',
- message: t('Invoice cloned'),
- });
- push({ path: `/invoice-in/${data.id}/summary` });
-}
-
-const canEditProp = (props) =>
- hasAny([{ model: 'InvoiceIn', props, accessType: 'WRITE' }]);
-
-const isAgricultural = () => {
- if (!config.value) return false;
- return (
- invoiceIn.value?.supplier?.sageFarmerWithholdingFk ===
- config?.value[0]?.sageWithholdingFk
- );
-};
-
-function showPdfInvoice() {
- if (isAgricultural())
- openReport(`InvoiceIns/${entityId.value}/invoice-in-pdf`, null, '_blank');
-}
-
-function sendPdfInvoiceConfirmation() {
- quasar.dialog({
- component: SendEmailDialog,
- componentProps: {
- data: {
- address: invoiceIn.value.supplier.contacts[0].email,
- },
- promise: sendPdfInvoice,
- },
- });
-}
-
-function sendPdfInvoice({ address }) {
- if (!address)
- quasar.notify({
- type: 'negative',
- message: t(`The email can't be empty`),
- });
- else
- return sendEmail(`InvoiceIns/${entityId.value}/invoice-in-email`, {
- recipientId: invoiceIn.value.supplier.id,
- recipient: address,
- });
-}
-
-function triggerMenu(type) {
- currentAction.value = actions[type];
- if (currentAction.value.cb) currentAction.value.cb();
- else openDialog(type);
-}
-
const createInvoiceInCorrection = async () => {
const { data: correctingId } = await axios.post(
'InvoiceIns/corrective',
@@ -262,7 +144,7 @@ const createInvoiceInCorrection = async () => {
auto-load
/>
(siiTypeInvoiceIns = data)"
auto-load
@@ -281,87 +163,13 @@ const createInvoiceInCorrection = async () => {
title="supplierRef"
>
-
-
-
- {{ t('To book') }}
-
-
-
-
-
- {{ t('To unbook') }}
-
-
-
- {{ t('Delete invoice') }}
-
-
- {{ t('Clone invoice') }}
-
-
- {{ t('Show agricultural receipt as PDF') }}
-
-
- {{ t('Send agricultural receipt as PDF') }}...
-
-
- {{ t('Create rectificative invoice') }}...
-
-
- {{ t('components.smartCard.downloadFile') }}
-
+
-
-
-
-
+
+
+
+
{{ entity?.supplier?.nickname }}
@@ -378,7 +186,7 @@ const createInvoiceInCorrection = async () => {
color="primary"
:to="routes.getSupplier(entity.supplierFk)"
>
- {{ t('InvoiceIn.list.supplier') }}
+ {{ t('invoicein.list.supplier') }}
{
color="primary"
:to="routes.getTickets(entity.supplierFk)"
>
- {{ t('InvoiceIn.descriptor.ticketList') }}
+ {{ t('InvoiceOut.card.ticketList') }}
{
-
-
-
- {{ opt.code }} -
- {{ opt.description }}
-
-
-
-
-
+ />
{
}
}
-
-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
- assertAction: Are you sure you want to {action} this invoice?
-es:
- book: asentar
- unbook: desasentar
- delete: eliminar
- clone: clonar
- To book: Contabilizar
- To unbook: Descontabilizar
- Delete invoice: Eliminar factura
- Invoice deleted: Factura eliminada
- Clone invoice: Clonar factura
- Invoice cloned: Factura clonada
- Show agricultural receipt as PDF: Ver recibo agrícola como PDF
- Send agricultural receipt as PDF: Enviar recibo agrícola como PDF
- Are you sure you want to send it?: Estás seguro que quieres enviarlo?
- Send PDF invoice: Enviar factura a PDF
- Create rectificative invoice: Crear factura rectificativa
- 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
- assertAction: Estas seguro de querer {action} esta factura?
-
diff --git a/src/pages/InvoiceIn/Card/InvoiceInDescriptorMenu.vue b/src/pages/InvoiceIn/Card/InvoiceInDescriptorMenu.vue
new file mode 100644
index 000000000..647b68f88
--- /dev/null
+++ b/src/pages/InvoiceIn/Card/InvoiceInDescriptorMenu.vue
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+ {{ t('invoicein.descriptorMenu.toBook') }}
+
+
+
+
+
+ {{ t('invoicein.descriptorMenu.toUnbook') }}
+
+
+
+ {{ t('invoicein.descriptorMenu.deleteInvoice') }}
+
+
+ {{ t('invoicein.descriptorMenu.cloneInvoice') }}
+
+
+ {{
+ t('invoicein.descriptorMenu.showAgriculturalPdf')
+ }}
+
+
+ {{ t('invoicein.descriptorMenu.sendAgriculturalPdf') }}...
+
+
+ {{ t('invoicein.descriptorMenu.createCorrective') }}...
+
+
+ {{ t('components.smartCard.downloadFile') }}
+
+
+
+
+en:
+ isNotLinked: The entry {bookEntry} has been deleted with {accountingEntries} entries
+ isLinked: The entry has been linked to Sage. Please contact administration for further information
+ assertAction: Are you sure you want to {action} this invoice?
+es:
+ isNotLinked: Se ha eliminado el asiento nº {bookEntry} con {accountingEntries} apuntes
+ isLinked: El asiento fue enlazado a Sage, por favor contacta con administración
+ assertAction: Estas seguro de querer {action} esta factura?
+
diff --git a/src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue b/src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue
index 1c4091169..e529ea6cd 100644
--- a/src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue
+++ b/src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue
@@ -161,7 +161,7 @@ const columns = computed(() => [
row.expenseFk,
sortable: true,
align: 'left',
},
{
name: 'landed',
- label: 'InvoiceIn.summary.taxableBase',
+ label: 'invoicein.summary.taxableBase',
field: (row) => row.taxableBase,
format: (value) => toCurrency(value),
sortable: true,
@@ -41,7 +42,7 @@ const vatColumns = ref([
},
{
name: 'vat',
- label: 'InvoiceIn.summary.sageVat',
+ label: 'invoicein.summary.sageVat',
field: (row) => {
if (row.taxTypeSage) return `#${row.taxTypeSage.id} : ${row.taxTypeSage.vat}`;
},
@@ -51,7 +52,7 @@ const vatColumns = ref([
},
{
name: 'transaction',
- label: 'InvoiceIn.summary.sageTransaction',
+ label: 'invoicein.summary.sageTransaction',
field: (row) => {
if (row.transactionTypeSage)
return `#${row.transactionTypeSage.id} : ${row.transactionTypeSage?.transaction}`;
@@ -62,7 +63,7 @@ const vatColumns = ref([
},
{
name: 'rate',
- label: 'InvoiceIn.summary.rate',
+ label: 'invoicein.summary.rate',
field: (row) => taxRate(row.taxableBase, row.taxTypeSage?.rate),
format: (value) => toCurrency(value),
sortable: true,
@@ -70,7 +71,7 @@ const vatColumns = ref([
},
{
name: 'currency',
- label: 'InvoiceIn.summary.currency',
+ label: 'invoicein.summary.currency',
field: (row) => row.foreignValue,
format: (val) => val && toCurrency(val, currency.value),
sortable: true,
@@ -81,21 +82,21 @@ const vatColumns = ref([
const dueDayColumns = ref([
{
name: 'date',
- label: 'InvoiceIn.summary.dueDay',
+ label: 'invoicein.summary.dueDay',
field: (row) => toDate(row.dueDated),
sortable: true,
align: 'left',
},
{
name: 'bank',
- label: 'InvoiceIn.summary.bank',
+ label: 'invoicein.summary.bank',
field: (row) => row.bank.bank,
sortable: true,
align: 'left',
},
{
name: 'amount',
- label: 'InvoiceIn.list.amount',
+ label: 'invoicein.list.amount',
field: (row) => row.amount,
format: (value) => toCurrency(value),
sortable: true,
@@ -103,7 +104,7 @@ const dueDayColumns = ref([
},
{
name: 'landed',
- label: 'InvoiceIn.summary.foreignValue',
+ label: 'invoicein.summary.foreignValue',
field: (row) => row.foreignValue,
format: (val) => val && toCurrency(val, currency.value),
sortable: true,
@@ -114,7 +115,7 @@ const dueDayColumns = ref([
const intrastatColumns = ref([
{
name: 'code',
- label: 'InvoiceIn.summary.code',
+ label: 'invoicein.summary.code',
field: (row) => {
return `${row.intrastat.id}: ${row.intrastat?.description}`;
},
@@ -123,21 +124,21 @@ const intrastatColumns = ref([
},
{
name: 'amount',
- label: 'InvoiceIn.list.amount',
+ label: 'invoicein.list.amount',
field: (row) => toCurrency(row.amount),
sortable: true,
align: 'left',
},
{
name: 'net',
- label: 'InvoiceIn.summary.net',
+ label: 'invoicein.summary.net',
field: (row) => row.net,
sortable: true,
align: 'left',
},
{
name: 'stems',
- label: 'InvoiceIn.summary.stems',
+ label: 'invoicein.summary.stems',
field: (row) => row.stems,
format: (value) => value,
sortable: true,
@@ -145,7 +146,7 @@ const intrastatColumns = ref([
},
{
name: 'landed',
- label: 'InvoiceIn.summary.country',
+ label: 'invoicein.summary.country',
field: (row) => row.country?.code,
format: (value) => value,
sortable: true,
@@ -200,6 +201,9 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
+
+
+
@@ -210,7 +214,7 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
/>
@@ -221,14 +225,14 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
-
+
`#/invoice-in/${entityId.value}/${param}`;
@@ -268,18 +272,18 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
/>
-
+
@@ -290,11 +294,11 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
-
+
`#/invoice-in/${entityId.value}/${param}`;
:color="amountsNotMatch ? 'negative' : 'transparent'"
:title="
amountsNotMatch
- ? t('InvoiceIn.summary.noMatch')
- : t('InvoiceIn.summary.dueTotal')
+ ? t('invoicein.summary.noMatch')
+ : t('invoicein.summary.dueTotal')
"
>
{{ toCurrency(entity.totals.totalDueDay) }}
@@ -314,7 +318,7 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
-
+
`#/invoice-in/${entityId.value}/${param}`;
-
+
@@ -400,7 +404,7 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
{
@@ -97,10 +97,10 @@ const redirectToInvoiceInBasicData = (__, { id }) => {
map-options
hide-selected
:required="true"
- :rules="validate('InvoiceIn.companyFk')"
+ :rules="validate('invoicein.companyFk')"
/>
diff --git a/src/pages/InvoiceIn/InvoiceInFilter.vue b/src/pages/InvoiceIn/InvoiceInFilter.vue
index 653692026..31a611936 100644
--- a/src/pages/InvoiceIn/InvoiceInFilter.vue
+++ b/src/pages/InvoiceIn/InvoiceInFilter.vue
@@ -68,13 +68,26 @@ function handleDaysAgo(params, daysAgo) {
+ >
+
+
+
+
+ {{ scope.opt?.name}}
+
+
+ {{ `#${scope.opt?.id } , ${ scope.opt?.nickname}` }}
+
+
+
+
+
@@ -151,7 +164,7 @@ function handleDaysAgo(params, daysAgo) {
[
{
align: 'left',
name: 'isBooked',
- label: t('InvoiceIn.isBooked'),
+ label: t('invoicein.isBooked'),
columnFilter: false,
},
{
@@ -41,7 +41,7 @@ const cols = computed(() => [
{
align: 'left',
name: 'supplierFk',
- label: t('InvoiceIn.list.supplier'),
+ label: t('invoicein.list.supplier'),
columnFilter: {
component: 'select',
attrs: {
@@ -55,16 +55,16 @@ const cols = computed(() => [
{
align: 'left',
name: 'supplierRef',
- label: t('InvoiceIn.list.supplierRef'),
+ label: t('invoicein.list.supplierRef'),
},
{
align: 'left',
name: 'serial',
- label: t('InvoiceIn.serial'),
+ label: t('invoicein.serial'),
},
{
align: 'left',
- label: t('InvoiceIn.list.issued'),
+ label: t('invoicein.list.issued'),
name: 'issued',
component: null,
columnFilter: {
@@ -74,7 +74,7 @@ const cols = computed(() => [
},
{
align: 'left',
- label: t('InvoiceIn.list.dueDated'),
+ label: t('invoicein.list.dueDated'),
name: 'dueDated',
component: null,
columnFilter: {
@@ -86,12 +86,12 @@ const cols = computed(() => [
{
align: 'left',
name: 'awbCode',
- label: t('InvoiceIn.list.awb'),
+ label: t('invoicein.list.awb'),
},
{
align: 'left',
name: 'amount',
- label: t('InvoiceIn.list.amount'),
+ label: t('invoicein.list.amount'),
format: ({ amount }) => toCurrency(amount),
cardVisible: true,
},
@@ -165,24 +165,24 @@ const cols = computed(() => [
{{ scope.opt?.nickname }}
- #{{ scope.opt?.id }}
+ #{{ scope.opt?.id }}, {{ scope.opt?.name }}
[
option-label="code"
:required="true"
/>
-
+
diff --git a/src/pages/InvoiceIn/locale/en.yml b/src/pages/InvoiceIn/locale/en.yml
index ef7e31ac3..94db50066 100644
--- a/src/pages/InvoiceIn/locale/en.yml
+++ b/src/pages/InvoiceIn/locale/en.yml
@@ -1,4 +1,4 @@
-InvoiceIn:
+invoicein:
serial: Serial
isBooked: Is booked
list:
@@ -12,6 +12,26 @@ InvoiceIn:
amount: Amount
descriptor:
ticketList: Ticket list
+ descriptorMenu:
+ book: Book
+ unbook: Unbook
+ delete: Delete
+ clone: Clone
+ toBook: To book
+ toUnbook: To unbook
+ deleteInvoice: Delete invoice
+ invoiceDeleted: invoice deleted
+ cloneInvoice: Clone invoice
+ invoiceCloned: Invoice cloned
+ showAgriculturalPdf: Show agricultural receipt as PDF
+ sendAgriculturalPdf: Send agricultural receipt as PDF
+ checkSendInvoice: Are you sure you want to send it?
+ sendPdfInvoice: Send PDF invoice
+ createCorrective: Create rectificative invoice
+ correctiveInvoice: Rectificative invoice
+ originalInvoice: Original invoice
+ entry: Entry
+ emailEmpty: The email can't be empty
card:
client: Client
company: Company
@@ -44,7 +64,8 @@ InvoiceIn:
country: Country
params:
search: Id or supplier name
- account: Ledger account
- correctingFk: Rectificative
correctedFk: Corrected
isBooked: Is booked
+ account: Ledger account
+ correctingFk: Rectificative
+
\ No newline at end of file
diff --git a/src/pages/InvoiceIn/locale/es.yml b/src/pages/InvoiceIn/locale/es.yml
index ed5943489..bcb9c0551 100644
--- a/src/pages/InvoiceIn/locale/es.yml
+++ b/src/pages/InvoiceIn/locale/es.yml
@@ -1,4 +1,4 @@
-InvoiceIn:
+invoicein:
serial: Serie
isBooked: Contabilizada
list:
@@ -12,6 +12,26 @@ InvoiceIn:
amount: Importe
descriptor:
ticketList: Listado de tickets
+ descriptorMenu:
+ book: Asentar
+ unbook: Desasentar
+ delete: Eliminar
+ clone: Clonar
+ toBook: Contabilizar
+ toUnbook: Descontabilizar
+ deleteInvoice: Eliminar factura
+ invoiceDeleted: Factura eliminada
+ cloneInvoice: Clonar factura
+ invoiceCloned: Factura clonada
+ showAgriculturalPdf: Ver recibo agrícola como PDF
+ sendAgriculturalPdf: Enviar recibo agrícola como PDF
+ checkSendInvoice: ¿Estás seguro que quieres enviarlo?
+ sendPdfInvoice: Enviar factura a PDF
+ createCorrective: Crear factura rectificativa
+ correctiveInvoice: Factura rectificativa
+ originalInvoice: Factura origen
+ entry: Entrada
+ emailEmpty: El email no puede estar vacío
card:
client: Cliente
company: Empresa
@@ -42,6 +62,7 @@ InvoiceIn:
country: País
params:
search: Id o nombre proveedor
+ correctedFk: Rectificada
account: Cuenta contable
correctingFk: Rectificativa
- correctedFk: Rectificada
+
diff --git a/src/pages/InvoiceOut/Card/InvoiceOutSummary.vue b/src/pages/InvoiceOut/Card/InvoiceOutSummary.vue
index 81b3e7c41..3ceb447dd 100644
--- a/src/pages/InvoiceOut/Card/InvoiceOutSummary.vue
+++ b/src/pages/InvoiceOut/Card/InvoiceOutSummary.vue
@@ -10,6 +10,7 @@ import { getUrl } from 'src/composables/getUrl';
import TicketDescriptorProxy from 'src/pages/Ticket/Card/TicketDescriptorProxy.vue';
import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue';
import VnTitle from 'src/components/common/VnTitle.vue';
+import InvoiceOutDescriptorMenu from './InvoiceOutDescriptorMenu.vue';
onMounted(async () => {
fetch();
@@ -113,6 +114,9 @@ const ticketsColumns = ref([
{{ invoiceOut.ref }} - {{ invoiceOut.client?.socialName }}
+
+
+
diff --git a/src/pages/InvoiceOut/InvoiceOutFilter.vue b/src/pages/InvoiceOut/InvoiceOutFilter.vue
index dc1d833a2..cdc9f037a 100644
--- a/src/pages/InvoiceOut/InvoiceOutFilter.vue
+++ b/src/pages/InvoiceOut/InvoiceOutFilter.vue
@@ -47,6 +47,7 @@ const states = ref();
:label="t('Amount')"
v-model="params.amount"
is-outlined
+ data-cy="InvoiceOutFilterAmountBtn"
/>
diff --git a/src/pages/InvoiceOut/InvoiceOutGlobalForm.vue b/src/pages/InvoiceOut/InvoiceOutGlobalForm.vue
index e6c689523..392256473 100644
--- a/src/pages/InvoiceOut/InvoiceOutGlobalForm.vue
+++ b/src/pages/InvoiceOut/InvoiceOutGlobalForm.vue
@@ -101,6 +101,7 @@ onMounted(async () => {
dense
outlined
rounded
+ data-cy="InvoiceOutGlobalClientSelect"
>
@@ -125,6 +126,7 @@ onMounted(async () => {
dense
outlined
rounded
+ data-cy="InvoiceOutGlobalSerialSelect"
/>
{
v-model="formData.maxShipped"
:label="t('maxShipped')"
is-outlined
+ data-cy="InvoiceOutGlobalMaxShippedDate"
/>
{
dense
outlined
rounded
+ data-cy="InvoiceOutGlobalCompanySelect"
/>
{
dense
outlined
rounded
+ data-cy="InvoiceOutGlobalPrinterSelect"
/>