#6942 improve invoiceIn #220
No reviewers
Labels
No Milestone
No Assignees
3 Participants
Notifications
Total Time Spent: 3 hours 19 minutes
Due Date
jsegarra
3 hours 19 minutes
No due date set.
Dependencies
No dependencies set.
Reference: verdnatura/salix-front#220
Loading…
Reference in New Issue
No description provided.
Delete Branch "6942-improveInvoceIn"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@ -27,3 +27,3 @@
type: String,
type: [String, Number],
default: '',
},
Elimino el warning de consola.
@ -154,3 +154,3 @@
:order-by="orderBy"
:sort-by="sortBy"
:fields="fields"
/>
Elimino warning de consola.
WIP: #6942 improve invoiceInto #6942 improve invoiceIn@jgallego Revisar diseño del apartado summary y botón descontabilizar.
@ -755,3 +756,4 @@
create: 'Crear',
log: 'Historial',
},
list: {
Sage transaciónSage transacción
@ -429,3 +324,1 @@
</div>
<div class="col"></div>
</div>
</span>
Cuidado porque aquí si intento descontabilizar desde el descriptor me dice que no puedo pero si lo hago desmarcando el checkbox sí.
Quita visualmente el check y que no se pueda modificar directamente
http://localhost:9000/#/invoice-in/2/basic-data
Vaya, que mal, había probado el registro 1 y 4 y puedo contabilizar y descontabiliza, en bucle sin fin.
Pero si uso tu registro 2, me sale "El asiento fue enlazado a Sage, por favor contacta con administración"
Es correcto.
hecho. ¿Habría que modificar algún permiso o con quitarlo de basic-data es suficiente? @jgallego
quitarlo no es suficiente, hay que quitar permisos, ese campo solo debe poder ser modificado via back
@ -406,4 +388,4 @@
</template>
<template #body="{ entity }">
<VnLv :label="t('invoiceIn.card.issued')" :value="toDate(entity.issued)" />
<VnLv :label="t('invoiceIn.summary.booked')" :value="toDate(entity.booked)" />
Este campo en ningún caso me ha sacado valor
Esto pasa en salix también en local. Creo que lo comente con Carlos Andrés, es por las fixtures.
si voy a la seccion http://localhost:9000/#/invoice-in/1/basic-data y cambio el valor de Fecha contable, no actualiza el descriptor, si hago F5 ya lo muestra, deberia hacerlo al apretar guardar en basic-data
@ -288,3 +313,2 @@
<QIcon name="open_in_new" />
</a>
<span class="header header-link">{{ t('Totals') }}</span>
</QCardSection>
lo pongo aqui pero no es esta linea
en la seccion iva del summary en los campos sage vat y sage transaccion quieren en la columna sage vat que aparezca:
8 : H.P. IVA 21% CEE
20 : Adquisic.intracomunitarias de bienes y serv.corr.
es decir, añadir la clave primaria
@ -300,2 +304,4 @@
</QTd>
</template>
<template #bottom-row>
<QTr class="bg">
En el summary el pie tiene un color de fondo que es un gris mas claro y ayuda a ver los totales. Copialo
@jsegarra @jgallego esta clase la pondría en VnTable cuando se cree.
@ -302,0 +315,4 @@
<QTd> {{ toCurrency(getTotalRate(rows)) }}</QTd>
<QTd />
</QTr>
</template>
En esta seccion en los desplegables Sage iva, transactionTypeSageFk no quieren ver la descripcion solo la clave primaria de la tabla. si despliegan veran el valor
New commits pushed, approval review dismissed automatically according to repository settings
@ -185,6 +187,17 @@ async function insert() {
/>
</QTd>
</template>
<template #bottom-row>
http://localhost:9000/#/invoice-in/4/due-day al entrar en esta seccion me dice Access Denied en ingles con developer, cuando en realidad esta seccion la deben de poder usar el rol administrative.
A mi no me da ningún fallo . Compruebalo de nuevo y me dices.
No me da fallo.
Pregunta: la fecha y el placeholder está como yyyy/mm/dd, es correcto?
@jsegarra Ahora se usa VnInputDate.
@jorgep A mi me da error al hacer gulp docker o myt run
Después de resolver esto, vuelvo a probar
Han deprecado el campo hace 4 días, hablaré con Carlos Andrés.
@ -1,5 +1,5 @@
<script setup>
import { onBeforeMount, computed, watchEffect } from 'vue';
import { onBeforeMount, computed, watchEffect, watch } from 'vue';
Warning
@ -319,0 +323,4 @@
{{ toCurrency(entity.totals.totalDueDay) }}
</QChip>
</template>
</VnLv>
Warning en la 338, 366 y 394
Si reemplazo poniendo otro valor me concatena el valor
Reemplazo la primera fila por 22
Añado ,2
¿Dónde?
@ -73,6 +74,7 @@ async function insert() {
await axios.post('/InvoiceInDueDays/new', { id: +invoiceId });
await invoiceInFormRef.value.reload();
}
const getTotalAmount = (rows) => rows.reduce((acc, cur) => acc + cur.amount, 0);
Esta es mi propuesta para el error
const getTotalAmount = (rows) => rows.reduce((acc, { amount }) => acc + +amount, 0);
@ -184,6 +186,17 @@ async function insert() {
/>
</QTd>
Divisa no es seleccionable? Quiero decir estña el campo pero sin acción
Si la divisa es euros no se puede editar ese campo
@ -294,7 +307,11 @@ async function insert() {
<QBtn color="primary" icon="add" size="lg" round @click="insert" />
Que hace la función de insert?
Restaurar la tabla? Eso ya tiene un botón
Llama al back InvoiceInDueDays/new (llama a invoiceIn_calculate) y recarga el formulario...
@jsegarra de momento yo no corregiría esta rama, aviso cuando este para corregir.
#6942 improve invoiceInto WIP: #6942 improve invoiceIn@ -60,6 +62,11 @@ const $props = defineProps({
type: Function,
default: null,
},
goTo: {
url a la que redirigir al hacer click en 'save and continue'
@ -310,7 +322,40 @@ watch(formUrl, async () => {
:title="t('globals.reset')"
v-if="$props.defaultReset"
/>
<QBtnDropdown
Botón desplegable con la op. de guardar y continuar o solo guardar.
@ -74,55 +76,17 @@ const $props = defineProps({
type: Function,
default: null,
},
goTo: {
Lo mismo que en crudModel
@ -145,2 +109,3 @@
}));
const startFormWatcher = () => {
onMounted(async () => {
Lo he pasado aquí para que todos los hooks estén agrupados.
@ -146,1 +110,3 @@
const startFormWatcher = () => {
onMounted(async () => {
originalData.value = JSON.parse(JSON.stringify($props.formInitialData ?? {}));
Hay que hacerlo así para que se haga una copia, si no, se hace una referencia al mismo objeto.
Se podría poner el comentario en código?
@ -147,0 +126,4 @@
if (!oldVal) return;
hasChanges.value =
!isResetting.value &&
JSON.stringify(newVal) !== JSON.stringify(originalData.value);
Para ver si hay cambios comparamos el obj actual con el original. Con la lógica anterior, no funcionaba bien si se usa una store, ya que al emitir este valor se 'actualiza'. Así se hace la comprobación correcta.
Se podría poner el comentario en código?
yo lo veo bien sin comentarios. lo que diga @jgallego
Yo no pondría comentarios, pero si en otros sitios está implementado distinto yo lo cambiaría para que quien venga detrás coja siempre una buena implementación
@ -154,2 +141,3 @@
);
};
watch(formUrl, async () => {
Agrupado con el resto de hooks.
@ -156,0 +146,4 @@
await fetch();
});
onBeforeRouteLeave((to, from, next) => {
Agrupado con el resto de hooks
@ -182,2 +187,4 @@
try {
const body = $props.mapper ? $props.mapper(formData.value) : formData.value;
const method = $props.urlCreate ? 'post' : 'patch';
const url =
En mi opinión queda mucho más legible así, aunque solo se use 1 vez.
@ -231,3 +237,1 @@
reset();
fetch();
});
function updateAndEmit(val, evt) {
Esta parte se repetía varias veces
@ -273,10 +279,42 @@ defineExpose({
:disable="!hasChanges"
:title="t(defaultButtons.reset.label)"
/>
<QBtnDropdown
Lo mismo que crudModel
@ -43,3 +43,3 @@
onBeforeRouteUpdate(async (to, from) => {
if (to.params.id !== from.params.id) {
arrayData.store.url = `${props.baseUrl}/${route.params.id}`;
arrayData.store.url = `${props.baseUrl}/${to.params.id}`;
Al no haber cambiado de ruta, se estaba poniendo el mismo id actual.
@ -58,0 +57,4 @@
store = arrayData.store;
entity = computed(() => (Array.isArray(store.data) ? store.data[0] : store.data));
if ($props.dataKey !== useRoute().meta.moduleName) await getData();
Permite cargar los datos solo una vez si el módulo es el mismo que dataKey
Se podría poner el comentario en código?
@ -58,0 +59,4 @@
if ($props.dataKey !== useRoute().meta.moduleName) await getData();
watch(
() => [$props.url, $props.filter],
Solo interesa ver cambios en estas 2 props.
@ -133,3 +145,3 @@
<div class="title">
<span v-if="$props.title" :title="$props.title">
{{ $props.title }}
{{ entity[title] ?? $props.title }}
Ahora, cuando el descriptor coja los datos directamente desde vncard, se le puede indicar que propiedad usar. Se mantiene la compatibilidad con las secciones que todavía no la usan, pudiendoles pasarle directamente el valor.
@ -85,2 +72,2 @@
);
}
const getTotal = (data, key) =>
data.reduce((acc, cur) => acc + +String(cur[key]).replace(',', '.'), 0);
Si se escribe la coma, te devuelve NaN
@ -123,3 +92,2 @@
url="InvoiceInIntrastats"
auto-load
:data-required="{ invoiceInFk: route.params.id }"
:auto-load="!currency"
espera a que se carguen los datos de arrayData, ya que hace falta saber el currency
@ -4,33 +4,17 @@ import { useI18n } from 'vue-i18n';
import VnSelect from 'components/common/VnSelect.vue';
Se han reordenado los campos en base a como están en Salix.
@ -94,1 +52,4 @@
</QItem>
<QItem>
<QItemSection>
<VnSelect
Se corrige el filtrado de suppliers.
@ -19,3 +19,3 @@
cy.visit(`/#/invoice-in/1/vat`);
cy.getValue(firstLineVat).should('equal', 'H.P. IVA 21% CEE');
cy.getValue(firstLineVat).should('equal', '8');
Se está comprobando el valor del input, no el "label"
@ -92,8 +92,13 @@ Cypress.Commands.add('checkOption', (selector) => {
// Global buttons
Cypress.Commands.add('saveCard', () => {
Se adapta para que te deje guardar en caso de haber un desplegable
@ -1,34 +0,0 @@
import { vi, describe, expect, it, beforeAll } from 'vitest';
Ya se comprueba en e2e
@ -20,3 +20,3 @@
describe('getTotal()', () => {
it('should correctly handle the sum', () => {
vm.invoceInIntrastat = [
const invoceInIntrastat = [
Ahora a la fn hay que pasarle el array. Así los valoraes se actualizan de forma reactiva.
WIP: #6942 improve invoiceInto #6942 improve invoiceIn@ -199,6 +199,7 @@ function getLogTree(data) {
nLogs >= 6;
if (modelChanged) {
console.log(locale);
?
Se me ha colado. Lo quito.
@ -184,3 +184,3 @@
</QBtn>
<QBtn
:href="`${url}invoice-in/create?supplierFk=${entity.id}`"
:href="`#/invoice-in/create?supplierFk=${entity.id}`"
Esta en la ruta actual?
Sí, antes redirigia a Salix.
Hay 6 warnings, en la medida de lo posible y tiempo, resolver
@ -19,3 +20,2 @@
const editDownloadDisabled = ref(false);
const arrayData = useArrayData('InvoiceIn');
const invoiceIn = computed(() => arrayData.store.data);
const invoiceIn = computed(() => useArrayData('InvoiceIn').store.data);
Usar useRoute().meta.moduleName
@ -33,3 +28,3 @@
const { t } = useI18n();
const { openReport, sendEmail } = usePrintService();
const arrayData = useArrayData('InvoiceIn');
const { store } = useArrayData('InvoiceIn');
useRoute().meta.moduleName
@ -45,10 +40,9 @@ const cplusRectificationTypes = ref([]);
const siiTypeInvoiceOuts = ref([]);
const invoiceCorrectionTypes = ref([]);
const actions = {
Hay 3 acciones y el texto es el mismo, menos el verbo de la acción.
Se puede hacer una traducción con parámetro
Ninguno es relacionado con mi tarea.
New commits pushed, approval review dismissed automatically according to repository settings
@ -16,41 +16,6 @@ describe('InvoiceInVat', () => {
}).vm;
});
describe('addExpense()', () => {
ya se comprueba en e2e
@ -24,6 +24,7 @@ vi.mock('vue-router', () => ({
params: {
id: 1,
},
meta: { moduleName: 'mockName' },
Lo pongo en ambos sitios ya de paso.