{
and: [{ active: { neq: false } }, handleSalesModelValue(value)],
};
};
+
+function onBeforeSave(formData, originalData) {
+ return getUpdatedValues(
+ Object.keys(getDifferences(formData, originalData)),
+ formData
+ );
+}
{
@on-fetch="(data) => (businessTypes = data)"
auto-load
/>
-
+
{
:rules="validate('client.phone')"
clearable
v-model="data.phone"
+ data-cy="customerPhone"
/>
{
url="Clients"
:input-debounce="0"
:label="t('customer.basicData.previousClient')"
- :options="clients"
:rules="validate('client.transferorFk')"
emit-value
map-options
diff --git a/src/pages/Customer/Card/CustomerBillingData.vue b/src/pages/Customer/Card/CustomerBillingData.vue
index a968d0ec8..48f729e29 100644
--- a/src/pages/Customer/Card/CustomerBillingData.vue
+++ b/src/pages/Customer/Card/CustomerBillingData.vue
@@ -28,12 +28,7 @@ const getBankEntities = (data, formData) => {
-
+
[
-
diff --git a/src/pages/Customer/Card/CustomerDescriptor.vue b/src/pages/Customer/Card/CustomerDescriptor.vue
index 0753bee9e..98e53d568 100644
--- a/src/pages/Customer/Card/CustomerDescriptor.vue
+++ b/src/pages/Customer/Card/CustomerDescriptor.vue
@@ -36,7 +36,10 @@ const entityId = computed(() => {
});
const data = ref(useCardDescription());
-const setData = (entity) => (data.value = useCardDescription(entity?.name, entity?.id));
+const setData = (entity) => {
+ data.value = useCardDescription(entity?.name, entity?.id);
+ if (customer.value) customer.value.webAccess = data.value?.account?.isActive;
+};
const debtWarning = computed(() => {
return customer.value?.debt > customer.value?.credit ? 'negative' : 'primary';
});
diff --git a/src/pages/Customer/Card/CustomerFiscalData.vue b/src/pages/Customer/Card/CustomerFiscalData.vue
index 6c5086149..673c7dda9 100644
--- a/src/pages/Customer/Card/CustomerFiscalData.vue
+++ b/src/pages/Customer/Card/CustomerFiscalData.vue
@@ -34,7 +34,6 @@ function handleLocation(data, location) {
/>
@@ -68,6 +67,7 @@ function handleLocation(data, location) {
option-label="vat"
option-value="id"
v-model="data.sageTaxTypeFk"
+ data-cy="sageTaxTypeFk"
:required="data.isTaxDataChecked"
/>
diff --git a/src/pages/Customer/Card/CustomerSummary.vue b/src/pages/Customer/Card/CustomerSummary.vue
index 4fa7b9bdc..2cad13115 100644
--- a/src/pages/Customer/Card/CustomerSummary.vue
+++ b/src/pages/Customer/Card/CustomerSummary.vue
@@ -95,6 +95,7 @@ const sumRisk = ({ clientRisks }) => {
:phone-number="entity.mobile"
:channel="entity.country?.saySimpleCountry?.channel"
class="q-ml-xs"
+ :country="entity.country?.code"
/>
diff --git a/src/pages/Customer/Card/CustomerUnpaid.vue b/src/pages/Customer/Card/CustomerUnpaid.vue
index ef3ff3b94..18b12c60c 100644
--- a/src/pages/Customer/Card/CustomerUnpaid.vue
+++ b/src/pages/Customer/Card/CustomerUnpaid.vue
@@ -1,164 +1,82 @@
-
-
-
-
-
-
-
-
-
-
+ {
+ const unpaid = data.length == 1;
+ initialData = { ...data[0], unpaid };
+ }
+ "
+ />
+
+
+
-
-
-
+
-
+
-
+
-
- €€
-
-
-
+
+
+
diff --git a/src/pages/Customer/Card/CustomerWebAccess.vue b/src/pages/Customer/Card/CustomerWebAccess.vue
index 1db32c752..ea901c65a 100644
--- a/src/pages/Customer/Card/CustomerWebAccess.vue
+++ b/src/pages/Customer/Card/CustomerWebAccess.vue
@@ -25,10 +25,9 @@ async function hasCustomerRole() {
-
-
+
+
diff --git a/src/pages/Customer/Card/CustomerWebPayment.vue b/src/pages/Customer/Card/CustomerWebPayment.vue
index 482582078..0e2e690cc 100644
--- a/src/pages/Customer/Card/CustomerWebPayment.vue
+++ b/src/pages/Customer/Card/CustomerWebPayment.vue
@@ -1,9 +1,9 @@
-
-
-
-
-
-
-
- {{ props.value }}
-
-
-
-
-
+ (rows = data)"
+ auto-load
+ url="Clients/transactions"
+ />
+
+
+
+
+
+
+ {{ props.value }}
+
+
+
+
+
-
- {{ t('globals.noResults') }}
-
-
-
+
+ {{ t('globals.noResults') }}
+
+
diff --git a/src/pages/Customer/CustomerList.vue b/src/pages/Customer/CustomerList.vue
index 3cb17332c..865287aeb 100644
--- a/src/pages/Customer/CustomerList.vue
+++ b/src/pages/Customer/CustomerList.vue
@@ -12,6 +12,7 @@ import RightMenu from 'src/components/common/RightMenu.vue';
import VnLinkPhone from 'src/components/ui/VnLinkPhone.vue';
import { toDate } from 'src/filters';
import CustomerFilter from './CustomerFilter.vue';
+import VnAvatar from 'src/components/ui/VnAvatar.vue';
const { t } = useI18n();
const router = useRouter();
diff --git a/src/pages/Customer/components/CustomerAddressCreate.vue b/src/pages/Customer/components/CustomerAddressCreate.vue
index e3fef8e5f..bc4d6a128 100644
--- a/src/pages/Customer/components/CustomerAddressCreate.vue
+++ b/src/pages/Customer/components/CustomerAddressCreate.vue
@@ -1,9 +1,8 @@
+ (customsAgents = data)"
+ auto-load
+ url="CustomsAgents"
+ />
(agencyModes = data)"
auto-load
@@ -67,7 +60,7 @@ function handleLocation(data, location) {
@@ -139,6 +132,7 @@ function handleLocation(data, location) {
/>
-
+ onAgentCreated(requestResponse, data)
+ "
+ />
diff --git a/src/pages/Customer/components/CustomerAddressEdit.vue b/src/pages/Customer/components/CustomerAddressEdit.vue
index 0ea8315d6..c32fa6630 100644
--- a/src/pages/Customer/components/CustomerAddressEdit.vue
+++ b/src/pages/Customer/components/CustomerAddressEdit.vue
@@ -144,7 +144,7 @@ function handleLocation(data, location) {
:url="`Addresses/${route.params.addressId}`"
@on-data-saved="onDataSaved()"
auto-load
- model="client"
+ model="customer"
>
[
@@ -126,7 +126,9 @@ const entriesTableColumns = computed(() => [
"
unelevated
>
- {{ t('viewLabel') }}
+ {{
+ t('myEntries.viewLabel')
+ }}
diff --git a/src/pages/Entry/MyEntries.vue b/src/pages/Entry/MyEntries.vue
index 2c37c2c42..91a29b190 100644
--- a/src/pages/Entry/MyEntries.vue
+++ b/src/pages/Entry/MyEntries.vue
@@ -101,7 +101,7 @@ const columns = computed(() => [
name: 'tableActions',
actions: [
{
- title: t('printLabels'),
+ title: t('myEntries.printLabels'),
icon: 'print',
isPrimary: true,
action: (row) => printBuys(row.id),
diff --git a/src/pages/InvoiceOut/locale/es.yml b/src/pages/InvoiceOut/locale/es.yml
index bf5126641..106168a5d 100644
--- a/src/pages/InvoiceOut/locale/es.yml
+++ b/src/pages/InvoiceOut/locale/es.yml
@@ -11,7 +11,7 @@ invoiceOutList:
ref: Referencia
issued: Fecha emisión
created: F. creación
- dueDate: F. máxima
+ dueDate: Fecha vencimiento
invoiceOutSerial: Serial
ticket: Ticket
taxArea: Area
diff --git a/src/pages/Item/Card/ItemTags.vue b/src/pages/Item/Card/ItemTags.vue
index 461aaef4b..a077c72c6 100644
--- a/src/pages/Item/Card/ItemTags.vue
+++ b/src/pages/Item/Card/ItemTags.vue
@@ -66,6 +66,7 @@ const insertTag = (rows) => {
(tagOptions = data)"
auto-load
/>
@@ -137,6 +138,7 @@ const insertTag = (rows) => {
:required="false"
:rules="validate('itemTag.tagFk')"
:use-like="false"
+ sort-by="value"
/>
(bankEntitiesOptions = data)"
+ @on-fetch="
+ (data) => {
+ (bankEntitiesOptions = data), (filteredBankEntitiesOptions = data);
+ }
+ "
auto-load
/>
{
findBankFk(value, row)"
:required="true"
>
@@ -109,7 +134,9 @@ const setWireTransfer = async () => {
bankEntityFilter(val, update)"
option-label="bic"
option-value="id"
hide-selected
diff --git a/src/pages/Supplier/SupplierList.vue b/src/pages/Supplier/SupplierList.vue
index 69f826201..a54012b34 100644
--- a/src/pages/Supplier/SupplierList.vue
+++ b/src/pages/Supplier/SupplierList.vue
@@ -124,8 +124,7 @@ const columns = computed(() => [
-en:
- Search suppliers: Search suppliers
-es:
+ es:
Search suppliers: Buscar proveedores
+ Create Supplier: Crear proveedor
diff --git a/src/pages/Ticket/Card/TicketComponents.vue b/src/pages/Ticket/Card/TicketComponents.vue
index f45bde2d1..b88dd89e8 100644
--- a/src/pages/Ticket/Card/TicketComponents.vue
+++ b/src/pages/Ticket/Card/TicketComponents.vue
@@ -321,10 +321,6 @@ onUnmounted(() => (stateStore.rightDrawer = false));
{{ toCurrency(saleComponent.value * row.quantity, 'EUR', 3) }}
-
diff --git a/src/pages/Ticket/Card/TicketDescriptorMenu.vue b/src/pages/Ticket/Card/TicketDescriptorMenu.vue
index b8e64cb79..60a703f84 100644
--- a/src/pages/Ticket/Card/TicketDescriptorMenu.vue
+++ b/src/pages/Ticket/Card/TicketDescriptorMenu.vue
@@ -676,7 +676,7 @@ async function uploadDocuware(force) {
@@ -741,7 +741,6 @@ es:
Ticket invoiced: Ticket facturado
Set weight: Establecer peso
Weight set: Peso establecido
- This ticket may be invoiced, do you want to continue?: Es posible que se facture este ticket, desea continuar?
invoiceIds: "Se han generado las facturas con los siguientes ids: {invoiceIds}"
This ticket will be removed from current route! Continue anyway?: ¡Se eliminará el ticket de la ruta actual! ¿Continuar de todas formas?
You are going to delete this ticket: Vas a eliminar este ticket
diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue
index deeaaa28d..b534170c9 100644
--- a/src/pages/Ticket/Card/TicketSale.vue
+++ b/src/pages/Ticket/Card/TicketSale.vue
@@ -181,17 +181,34 @@ const resetChanges = async () => {
arrayData.fetch({ append: false });
tableRef.value.reload();
};
+const rowToUpdate = ref(null);
+const changeQuantity = async (sale) => {
+ canProceed.value = await isSalePrepared(sale);
+ if (!canProceed.value) return;
+ if (
+ !sale.itemFk ||
+ sale.quantity == null ||
+ edit.value?.oldQuantity === sale.quantity
+ )
+ return;
+ if (!sale.id) return addSale(sale);
-const updateQuantity = async (sale) => {
- const params = { quantity: sale.quantity };
try {
- await axios.post(`Sales/${sale.id}/updateQuantity`, params);
+ if (!rowToUpdate.value) return;
+ rowToUpdate.value = null;
+ await updateQuantity(sale);
} catch (e) {
- sale.quantity = tableRef.value.CrudModelRef.originalData.find(
+ const { quantity } = tableRef.value.CrudModelRef.originalData.find(
(s) => s.id === sale.id
- ).quantity;
+ );
+ sale.quantity = quantity;
throw e;
}
+};
+
+const updateQuantity = async ({ quantity, id }) => {
+ const params = { quantity: quantity };
+ await axios.post(`Sales/${id}/updateQuantity`, params);
notify('globals.dataSaved', 'positive');
};
@@ -219,19 +236,6 @@ const addSale = async (sale) => {
window.location.reload();
};
-const changeQuantity = async (sale) => {
- canProceed.value = await isSalePrepared(sale);
- if (!canProceed.value) return;
- if (
- !sale.itemFk ||
- sale.quantity == null ||
- edit.value?.oldQuantity === sale.quantity
- )
- return;
- if (!sale.id) return addSale(sale);
- await updateQuantity(sale);
-};
-
const updateConcept = async (sale) => {
canProceed.value = await isSalePrepared(sale);
if (!canProceed.value) return;
@@ -778,16 +782,12 @@ watch(
- (rowToUpdate = row)"
@focus="edit.oldQuantity = row.quantity"
/>
{{ row.quantity }}
diff --git a/src/pages/Ticket/Card/TicketSaleTracking.vue b/src/pages/Ticket/Card/TicketSaleTracking.vue
index 03e2336eb..7a33df795 100644
--- a/src/pages/Ticket/Card/TicketSaleTracking.vue
+++ b/src/pages/Ticket/Card/TicketSaleTracking.vue
@@ -471,7 +471,7 @@ const qCheckBoxController = (sale, action) => {
url="Shelvings"
hide-selected
option-label="code"
- option-value="code"
+ option-value="id"
v-model="row.shelvingFk"
@update:model-value="updateShelving(row)"
style="max-width: 120px"
diff --git a/src/pages/Ticket/Card/TicketSummary.vue b/src/pages/Ticket/Card/TicketSummary.vue
index eeef65cd3..2f5f69e1c 100644
--- a/src/pages/Ticket/Card/TicketSummary.vue
+++ b/src/pages/Ticket/Card/TicketSummary.vue
@@ -258,7 +258,7 @@ function toTicketUrl(section) {
es:
- raidDays: Si se marca "Redada", la fecha de entrega se moverá automáticamente los días indicados.
+ raidDays: El travel se desplaza automáticamente cada día para estar desde hoy al número de días indicado. Si se deja vacio no se moverá
en:
- raidDays: If "Raid" is checked, the landing date will automatically shift by the specified number of days.
+ raidDays: The travel adjusts itself daily to match the number of days set, starting from today. If left blank, it won’t move
diff --git a/src/pages/Travel/Card/TravelCard.vue b/src/pages/Travel/Card/TravelCard.vue
index 50cecef34..fd442d58b 100644
--- a/src/pages/Travel/Card/TravelCard.vue
+++ b/src/pages/Travel/Card/TravelCard.vue
@@ -7,13 +7,13 @@ import filter from './TravelFilter.js';
diff --git a/src/pages/Travel/TravelList.vue b/src/pages/Travel/TravelList.vue
index 852003a95..0e69250a8 100644
--- a/src/pages/Travel/TravelList.vue
+++ b/src/pages/Travel/TravelList.vue
@@ -208,6 +208,7 @@ const columns = computed(() => [
ref="tableRef"
data-key="TravelList"
url="Travels/filter"
+ redirect="travel"
:create="{
urlCreate: 'Travels',
title: t('Create Travels'),
@@ -221,9 +222,7 @@ const columns = computed(() => [
order="landed DESC"
:columns="columns"
auto-load
- redirect="travel"
:is-editable="false"
- :use-model="true"
>
diff --git a/src/pages/Zone/Card/ZoneEventExclusionForm.vue b/src/pages/Zone/Card/ZoneEventExclusionForm.vue
index 4b54f6743..0882036c1 100644
--- a/src/pages/Zone/Card/ZoneEventExclusionForm.vue
+++ b/src/pages/Zone/Card/ZoneEventExclusionForm.vue
@@ -1,5 +1,5 @@