diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index 61ec3e859..14f42c88d 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -164,7 +164,6 @@ const app = inject('app'); const editingRow = ref(null); const editingField = ref(null); const isTableMode = computed(() => mode.value == TABLE_MODE); -const showRightIcon = computed(() => $props.rightSearch || $props.rightSearchIcon); const selectRegex = /select/; const emit = defineEmits(['onFetch', 'update:selected', 'saveChanges']); const tableModes = [ @@ -618,14 +617,6 @@ function cardClick(_, row) { dense :options="tableModes.filter((mode) => !mode.disable)" /> - - { t('refundInvoiceSuccessMessage', { refundTicket: data[0].id, }), - 'positive' + 'positive', ); }; @@ -124,6 +124,13 @@ const showRefundInvoiceForm = () => { }, }); }; + +const showExportationLetter = () => { + openReport(`InvoiceOuts/${$props.invoiceOutData.ref}/exportation-pdf`, { + recipientId: $props.invoiceOutData.client.id, + refFk: $props.invoiceOutData.ref, + }); +}; @@ -172,7 +179,7 @@ const showRefundInvoiceForm = () => { t('Confirm deletion'), t('Are you sure you want to delete this invoice?'), deleteInvoice, - redirectToInvoiceOutList + redirectToInvoiceOutList, ) " > @@ -185,7 +192,7 @@ const showRefundInvoiceForm = () => { openConfirmationModal( '', t('Are you sure you want to book this invoice?'), - bookInvoice + bookInvoice, ) " > @@ -198,7 +205,7 @@ const showRefundInvoiceForm = () => { openConfirmationModal( t('Generate PDF invoice document'), t('Are you sure you want to generate/regenerate the PDF invoice?'), - generateInvoicePdf + generateInvoicePdf, ) " > @@ -226,6 +233,14 @@ const showRefundInvoiceForm = () => { {{ t('Create a single ticket with all the content of the current invoice') }} + + {{ t('Show CITES letter') }} + @@ -255,7 +270,7 @@ es: Create a single ticket with all the content of the current invoice: Crear un ticket único con todo el contenido de la factura actual refundInvoiceSuccessMessage: Se ha creado el siguiente ticket de abono {refundTicket} The email can't be empty: El email no puede estar vacío - + Show CITES letter: Ver carta CITES en: refundInvoiceSuccessMessage: The following refund ticket have been created {refundTicket} diff --git a/src/pages/InvoiceOut/InvoiceOutFilter.vue b/src/pages/InvoiceOut/InvoiceOutFilter.vue index cdc9f037a..648b8e4e6 100644 --- a/src/pages/InvoiceOut/InvoiceOutFilter.vue +++ b/src/pages/InvoiceOut/InvoiceOutFilter.vue @@ -22,7 +22,7 @@ const states = ref(); - {{ t(`params.${tag.label}`) }}: + {{ t(`invoiceOut.params.${tag.label}`) }}: {{ formatFn(tag.value) }} @@ -84,15 +84,6 @@ const states = ref(); /> - - - - - - - -en: - params: - search: Contains - clientFk: Customer - fi: FI - amount: Amount - min: Min - max: Max - hasPdf: Has PDF - issued: Issued - created: Created - dued: Dued -es: - params: - search: Contiene - clientFk: Cliente - fi: CIF - amount: Importe - min: Min - max: Max - hasPdf: Tiene PDF - issued: Emitida - created: Creada - dued: Vencida - Customer ID: ID cliente - FI: CIF - Amount: Importe - Has PDF: Tiene PDF - Issued: Fecha emisión - Created: Fecha creación - Dued: Fecha vencimiento - diff --git a/src/pages/InvoiceOut/InvoiceOutList.vue b/src/pages/InvoiceOut/InvoiceOutList.vue index c7d7ba9f4..873ab030f 100644 --- a/src/pages/InvoiceOut/InvoiceOutList.vue +++ b/src/pages/InvoiceOut/InvoiceOutList.vue @@ -71,14 +71,6 @@ const columns = computed(() => [ inWhere: true, }, }, - { - align: 'left', - name: 'issued', - label: t('invoiceOut.summary.issued'), - component: 'date', - format: (row) => toDate(row.issued), - columnField: { component: null }, - }, { align: 'left', name: 'clientFk', diff --git a/src/pages/InvoiceOut/InvoiceOutNegativeBases.vue b/src/pages/InvoiceOut/InvoiceOutNegativeBases.vue index 135eb9aca..b062678a0 100644 --- a/src/pages/InvoiceOut/InvoiceOutNegativeBases.vue +++ b/src/pages/InvoiceOut/InvoiceOutNegativeBases.vue @@ -10,6 +10,8 @@ import CustomerDescriptorProxy from '../Customer/Card/CustomerDescriptorProxy.vu import TicketDescriptorProxy from '../Ticket/Card/TicketDescriptorProxy.vue'; import WorkerDescriptorProxy from '../Worker/Card/WorkerDescriptorProxy.vue'; import VnInputDate from 'components/common/VnInputDate.vue'; +import InvoiceOutNegativeBasesFilter from './InvoiceOutNegativeBasesFilter.vue'; +import RightMenu from 'src/components/common/RightMenu.vue'; const { t } = useI18n(); const tableRef = ref(); @@ -97,16 +99,19 @@ const columns = computed(() => [ align: 'left', name: 'isActive', label: t('invoiceOut.negativeBases.active'), + component: 'checkbox', }, { align: 'left', name: 'hasToInvoice', label: t('invoiceOut.negativeBases.hasToInvoice'), + component: 'checkbox', }, { align: 'left', - name: 'hasVerifiedData', + name: 'isTaxDataChecked', label: t('invoiceOut.negativeBases.verifiedData'), + component: 'checkbox', }, { align: 'left', @@ -142,7 +147,7 @@ const downloadCSV = async () => { await invoiceOutGlobalStore.getNegativeBasesCsv( userParams.from, userParams.to, - filterParams + filterParams, ); }; @@ -154,6 +159,11 @@ const downloadCSV = async () => { + + + + + { auto-load :is-editable="false" :use-model="true" + :right-search="false" > diff --git a/src/pages/InvoiceOut/InvoiceOutNegativeBasesFilter.vue b/src/pages/InvoiceOut/InvoiceOutNegativeBasesFilter.vue index 6ceec61e4..cd9836bb7 100644 --- a/src/pages/InvoiceOut/InvoiceOutNegativeBasesFilter.vue +++ b/src/pages/InvoiceOut/InvoiceOutNegativeBasesFilter.vue @@ -2,9 +2,10 @@ import { useI18n } from 'vue-i18n'; import VnFilterPanel from 'src/components/ui/VnFilterPanel.vue'; -import VnInput from 'src/components/common/VnInput.vue'; import VnInputDate from 'components/common/VnInputDate.vue'; import VnInputNumber from 'src/components/common/VnInputNumber.vue'; +import VnSelect from 'src/components/common/VnSelect.vue'; +import VnSelectWorker from 'src/components/common/VnSelectWorker.vue'; const { t } = useI18n(); const props = defineProps({ @@ -24,11 +25,11 @@ const props = defineProps({ > - {{ t(`params.${tag.label}`) }}: + {{ t(`invoiceOut.params.${tag.label}`) }}: {{ formatFn(tag.value) }} - + - + v-model="params.company" + option-label="code" + option-value="code" + dense + outlined + rounded + @update:model-value="searchFn()" + > + + + + + {{ scope.opt?.code }} + + + {{ `#${scope.opt?.id}` }} + + + + + - - - - - - - + option-label="name" + option-value="name" + outlined + dense + rounded + @update:model-value="searchFn()" + > + + + + + {{ scope.opt?.name }} + + + {{ `#${scope.opt?.id}` }} + + + + + - @@ -90,15 +123,18 @@ const props = defineProps({ v-model="params.amount" :label="t('globals.amount')" is-outlined + :positive="false" /> - diff --git a/src/pages/InvoiceOut/locale/en.yml b/src/pages/InvoiceOut/locale/en.yml index ee6ba57e6..9dd31d186 100644 --- a/src/pages/InvoiceOut/locale/en.yml +++ b/src/pages/InvoiceOut/locale/en.yml @@ -4,7 +4,7 @@ invoiceOut: params: company: Company country: Country - clientId: Client ID + clientId: Client clientSocialName: Client taxableBase: Base ticketFk: Ticket @@ -12,6 +12,18 @@ invoiceOut: hasToInvoice: Has to invoice hasVerifiedData: Verified data workerName: Worker + isTaxDataChecked: Verified data + amount: Amount + clientFk: Client + companyFk: Company + created: Created + dued: Dued + customsAgentFk: Custom Agent + ref: Reference + fi: FI + min: Min + max: Max + hasPdf: Has PDF card: issued: Issued customerCard: Customer card @@ -53,7 +65,7 @@ invoiceOut: active: Active hasToInvoice: Has to Invoice verifiedData: Verified Data - comercial: Commercial + comercial: Sales person errors: downloadCsvFailed: CSV download failed invoiceOutModule: diff --git a/src/pages/InvoiceOut/locale/es.yml b/src/pages/InvoiceOut/locale/es.yml index a059ce18d..79ceb4aa8 100644 --- a/src/pages/InvoiceOut/locale/es.yml +++ b/src/pages/InvoiceOut/locale/es.yml @@ -4,7 +4,7 @@ invoiceOut: params: company: Empresa country: País - clientId: ID del cliente + clientId: Cliente clientSocialName: Cliente taxableBase: Base ticketFk: Ticket @@ -12,6 +12,18 @@ invoiceOut: hasToInvoice: Debe facturar hasVerifiedData: Datos verificados workerName: Comercial + isTaxDataChecked: Datos comprobados + amount: Importe + clientFk: Cliente + companyFk: Empresa + created: Creada + dued: Vencida + customsAgentFk: Agente aduanas + ref: Referencia + fi: CIF + min: Min + max: Max + hasPdf: Tiene PDF card: issued: Fecha emisión customerCard: Ficha del cliente