Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 8388-fixInvoiceIn
gitea/salix-front/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Jorge Penadés 2025-03-26 10:10:39 +01:00
commit c3299d967b
15 changed files with 66 additions and 50 deletions

View File

@ -1,15 +1,15 @@
<script setup>
import {useDialogPluginComponent} from 'quasar';
import {useI18n} from 'vue-i18n';
import {computed, ref} from 'vue';
import { useDialogPluginComponent } from 'quasar';
import { useI18n } from 'vue-i18n';
import { computed, ref } from 'vue';
import VnInput from 'components/common/VnInput.vue';
import axios from 'axios';
import useNotify from "composables/useNotify";
import useNotify from 'composables/useNotify';
const MESSAGE_MAX_LENGTH = 160;
const {t} = useI18n();
const {notify} = useNotify();
const { t } = useI18n();
const { notify } = useNotify();
const props = defineProps({
title: {
type: String,
@ -34,7 +34,7 @@ const props = defineProps({
});
const emit = defineEmits([...useDialogPluginComponent.emits, 'sent']);
const {dialogRef, onDialogHide} = useDialogPluginComponent();
const { dialogRef, onDialogHide } = useDialogPluginComponent();
const smsRules = [
(val) => (val && val.length > 0) || t("The message can't be empty"),
@ -43,10 +43,10 @@ const smsRules = [
t("The message it's too long"),
];
const message = ref('');
const message = ref(t('routeDelay'));
const charactersRemaining = computed(
() => MESSAGE_MAX_LENGTH - new Blob([message.value]).size
() => MESSAGE_MAX_LENGTH - new Blob([message.value]).size,
);
const charactersChipColor = computed(() => {
@ -114,7 +114,7 @@ const onSubmit = async () => {
<QTooltip>
{{
t(
'Special characters like accents counts as a multiple'
'Special characters like accents counts as a multiple',
)
}}
</QTooltip>
@ -144,7 +144,10 @@ const onSubmit = async () => {
max-width: 450px;
}
</style>
<i18n>
en:
routeDelay: "Your order has been delayed in transit.\nDelivery will take place throughout the day.\nWe apologize for the inconvenience and appreciate your patience."
es:
Message: Mensaje
Send: Enviar
@ -153,4 +156,5 @@ es:
The destination can't be empty: El destinatario no puede estar vacio
The message can't be empty: El mensaje no puede estar vacio
The message it's too long: El mensaje es demasiado largo
</i18n>
routeDelay: "Retraso en ruta.\nInformamos que la ruta que lleva su pedido ha sufrido un retraso y la entrega se hará a lo largo del día.\nDisculpe las molestias."
</i18n>

View File

@ -15,7 +15,7 @@ const editDownloadDisabled = ref(false);
const $props = defineProps({
defaultDmsCode: {
type: String,
default: 'InvoiceIn',
default: 'invoiceIn',
},
disable: {
type: Boolean,

View File

@ -561,9 +561,7 @@ watch(
}}:
</span>
<VnLogValue
:value="
value.val.val
"
:value="value.val"
:name="value.name"
/>
</QItem>
@ -616,7 +614,7 @@ watch(
{{ prop.nameI18n }}:
</span>
<VnLogValue
:value="prop.val.val"
:value="prop.val"
:name="prop.name"
/>
<span
@ -647,7 +645,7 @@ watch(
</span>
<span v-if="log.action == 'update'">
<VnLogValue
:value="prop.old.val"
:value="prop.old"
:name="prop.name"
/>
<span
@ -658,7 +656,7 @@ watch(
</span>
<VnLogValue
:value="prop.val.val"
:value="prop.val"
:name="prop.name"
/>
<span
@ -670,7 +668,7 @@ watch(
</span>
<span v-else="prop.old.val">
<VnLogValue
:value="prop.val.val"
:value="prop.val"
:name="prop.name"
/>
<span

View File

@ -5,18 +5,24 @@ import { computed } from 'vue';
const descriptorStore = useDescriptorStore();
const $props = defineProps({
name: { type: [String], default: undefined },
value: { type: Object, default: () => {} },
name: { type: String, default: undefined },
});
const descriptor = computed(() => descriptorStore.has($props.name));
</script>
<template>
<VnJsonValue v-bind="$attrs" />
<QIcon
name="launch"
class="link"
v-if="$attrs.value && descriptor"
:data-cy="'iconLaunch-' + $props.name"
/>
<component :is="descriptor" :id="$attrs.value" v-if="$attrs.value && descriptor" />
<VnJsonValue :value="value.val" />
<span
v-if="(value.id || typeof value.val == 'number') && descriptor"
style="margin-left: 2px"
>
<QIcon
name="launch"
class="link"
:data-cy="'iconLaunch-' + $props.name"
style="padding-bottom: 2px"
/>
<component :is="descriptor" :id="value.id ?? value.val" />
</span>
</template>

View File

@ -884,7 +884,7 @@ components:
openCard: View
openSummary: Summary
viewSummary: Summary
cardDescriptor:
vnDescriptor:
mainList: Main list
summary: Summary
moreOptions: More options

View File

@ -968,7 +968,7 @@ components:
openCard: Ficha
openSummary: Detalles
viewSummary: Vista previa
cardDescriptor:
vnDescriptor:
mainList: Listado principal
summary: Resumen
moreOptions: Más opciones

View File

@ -648,7 +648,7 @@ onMounted(() => {
:url="`Entries/${entityId}/getBuyList`"
search-url="EntryBuys"
save-url="Buys/crud"
:filter="filter"
:filter="editableMode ? filter : {}"
:disable-option="{ card: true }"
v-model:selected="selectedRows"
@on-fetch="() => footerFetchDataRef.fetch()"

View File

@ -147,7 +147,7 @@ async function deleteEntry() {
<template>
<EntityDescriptor
:url="`Entries/${entityId}`"
:user-filter="entryFilter"
:filter="entryFilter"
title="supplier.nickname"
data-key="Entry"
width="lg-width"

View File

@ -116,6 +116,7 @@ const filter = computed(() => ({
hour: 0,
minute: 0,
second: 0,
milliseconds: 0,
}),
m3: { neq: null },
},

View File

@ -198,20 +198,7 @@ const getLocale = (label) => {
<QItemSection>
<VnSelect
dense
filled
:label="t('globals.params.departmentFk')"
v-model="params.department"
option-label="name"
option-value="name"
url="Departments"
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnSelect
dense
filled
rounded
:label="t('globals.params.packing')"
v-model="params.packing"
url="ItemPackingTypes"

View File

@ -0,0 +1,14 @@
<script setup>
import ParkingDescriptor from './ParkingDescriptor.vue';
import ParkingSummary from './ParkingSummary.vue';
</script>
<template>
<QPopupProxy style="max-width: 10px">
<ParkingDescriptor
v-if="$attrs.id"
v-bind="$attrs.id"
:summary="ParkingSummary"
:proxy-render="true"
/>
</QPopupProxy>
</template>

View File

@ -197,7 +197,11 @@ const entriesTotals = computed(() => {
entriesTableRows.value.forEach((row) => {
for (const key in totals) {
totals[key] += row[key] || 0;
if (key === 'cc') {
totals[key] += Math.ceil(row[key] || 0);
} else {
totals[key] += row[key] || 0;
}
}
});

View File

@ -80,7 +80,7 @@ defineExpose({ states });
/>
<VnSelect
:label="t('travel.warehouseOut')"
v-model="params.warehouseOut"
v-model="params.warehouseOutFk"
@update:model-value="searchFn()"
url="warehouses"
:use-like="false"
@ -128,6 +128,7 @@ en:
ref: Reference
agency: Agency
warehouseInFk: Warehouse In
warehouseOutFk: Warehouse Out
shipped: Shipped
shipmentHour: Shipment Hour
warehouseOut: Warehouse Out
@ -141,6 +142,7 @@ es:
ref: Referencia
agency: Agencia
warehouseInFk: Alm.Entrada
warehouseOutFk: Alm.Salida
shipped: F.Envío
shipmentHour: Hora de envío
warehouseOut: Alm.Salida

View File

@ -11,7 +11,7 @@ export const useDescriptorStore = defineStore('descriptorStore', () => {
const files = import.meta.glob(`/src/**/*DescriptorProxy.vue`);
const moduleParser = {
account: 'user',
client: 'customer',
customer: 'client',
};
for (const file in files) {
const name = file.split('/').at(-1).slice(0, -19).toLowerCase();

View File

@ -1,4 +1,4 @@
describe('RouteAutonomous', () => {
describe.skip('RouteAutonomous', () => {
const getLinkSelector = (colField) =>
`tr:first-child > [data-col-field="${colField}"] > .no-padding > .link`;