Item tax #337
|
@ -124,11 +124,16 @@ async function onSubmit() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
isLoading.value = true;
|
isLoading.value = true;
|
||||||
await saveChanges();
|
await saveChanges($props.saveFn ? formData.value : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function saveChanges(data) {
|
async function saveChanges(data) {
|
||||||
if ($props.saveFn) return $props.saveFn(data, getChanges);
|
if ($props.saveFn) {
|
||||||
|
$props.saveFn(data, getChanges);
|
||||||
|
isLoading.value = false;
|
||||||
|
hasChanges.value = false;
|
||||||
|
|||||||
|
return;
|
||||||
|
}
|
||||||
const changes = data || getChanges();
|
const changes = data || getChanges();
|
||||||
try {
|
try {
|
||||||
await axios.post($props.saveUrl || $props.url + '/crud', changes);
|
await axios.post($props.saveUrl || $props.url + '/crud', changes);
|
||||||
|
|
|
@ -990,7 +990,7 @@ supplier:
|
||||||
billingData: Billing data
|
billingData: Billing data
|
||||||
payMethod: Pay method
|
payMethod: Pay method
|
||||||
payDeadline: Pay deadline
|
payDeadline: Pay deadline
|
||||||
payDay: Día de pago
|
payDay: Pay day
|
||||||
account: Account
|
account: Account
|
||||||
fiscalData: Fiscal data
|
fiscalData: Fiscal data
|
||||||
sageTaxType: Sage tax type
|
sageTaxType: Sage tax type
|
||||||
|
@ -1132,9 +1132,9 @@ item:
|
||||||
fixedPrice: Fixed prices
|
fixedPrice: Fixed prices
|
||||||
wasteBreakdown: Waste breakdown
|
wasteBreakdown: Waste breakdown
|
||||||
itemCreate: New item
|
itemCreate: New item
|
||||||
log: Log
|
barcode: Barcodes
|
||||||
tax: Tax
|
tax: Tax
|
||||||
barcode: Barcode
|
log: Log
|
||||||
botanical: Botanical
|
botanical: Botanical
|
||||||
itemTypeCreate: New item type
|
itemTypeCreate: New item type
|
||||||
family: Item Type
|
family: Item Type
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
@ -11,10 +11,6 @@ const route = useRoute();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
||||||
const customerContactsRef = ref(null);
|
const customerContactsRef = ref(null);
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
if (customerContactsRef.value) customerContactsRef.value.reload();
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div class="full-width flex justify-center">
|
<div class="full-width flex justify-center">
|
||||||
|
@ -30,6 +26,7 @@ onMounted(() => {
|
||||||
model="CustomerContacts"
|
model="CustomerContacts"
|
||||||
ref="customerContactsRef"
|
ref="customerContactsRef"
|
||||||
url="ClientContacts"
|
url="ClientContacts"
|
||||||
|
auto-load
|
||||||
>
|
>
|
||||||
<template #body="{ rows }">
|
<template #body="{ rows }">
|
||||||
<QCard class="q-pl-lg q-py-md">
|
<QCard class="q-pl-lg q-py-md">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed, onMounted } from 'vue';
|
import { ref, computed } from 'vue';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
@ -21,10 +21,6 @@ const sortEntryObservationOptions = (data) => {
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
if (entryObservationsRef.value) entryObservationsRef.value.reload();
|
|
||||||
});
|
|
||||||
|
|
||||||
const columns = computed(() => [
|
const columns = computed(() => [
|
||||||
{
|
{
|
||||||
name: 'observationType',
|
name: 'observationType',
|
||||||
|
@ -65,6 +61,7 @@ const columns = computed(() => [
|
||||||
ref="entryObservationsRef"
|
ref="entryObservationsRef"
|
||||||
:data-required="{ entryFk: params.id }"
|
:data-required="{ entryFk: params.id }"
|
||||||
v-model:selected="selected"
|
v-model:selected="selected"
|
||||||
|
auto-load
|
||||||
>
|
>
|
||||||
<template #body="{ rows, validate }">
|
<template #body="{ rows, validate }">
|
||||||
<QTable
|
<QTable
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted, nextTick } from 'vue';
|
import { ref, nextTick } from 'vue';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
@ -23,10 +23,6 @@ const focusLastInput = () => {
|
||||||
if (lastInput) lastInput.focus();
|
if (lastInput) lastInput.focus();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(async () => {
|
|
||||||
if (itemBarcodeRef.value) itemBarcodeRef.value.reload();
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div class="full-width flex justify-center">
|
<div class="full-width flex justify-center">
|
||||||
|
@ -42,6 +38,7 @@ onMounted(async () => {
|
||||||
model="ItemBarcodes"
|
model="ItemBarcodes"
|
||||||
ref="itemBarcodeRef"
|
ref="itemBarcodeRef"
|
||||||
url="ItemBarcodes"
|
url="ItemBarcodes"
|
||||||
|
auto-load
|
||||||
>
|
>
|
||||||
<template #body="{ rows }">
|
<template #body="{ rows }">
|
||||||
<QCard class="q-px-lg q-py-md">
|
<QCard class="q-px-lg q-py-md">
|
||||||
|
|
|
@ -1 +1,91 @@
|
||||||
<template>Item tax</template>
|
<script setup>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import { useRoute } from 'vue-router';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
import FetchData from 'components/FetchData.vue';
|
||||||
|
import VnInput from 'src/components/common/VnInput.vue';
|
||||||
|
import VnRow from 'components/ui/VnRow.vue';
|
||||||
|
import CrudModel from 'components/CrudModel.vue';
|
||||||
|
import VnSelect from 'src/components/common/VnSelect.vue';
|
||||||
|
|
||||||
|
import axios from 'axios';
|
||||||
|
import useNotify from 'src/composables/useNotify.js';
|
||||||
|
|
||||||
|
const route = useRoute();
|
||||||
|
const { t } = useI18n();
|
||||||
|
const { notify } = useNotify();
|
||||||
|
|
||||||
|
const taxesFilter = {
|
||||||
|
fields: ['id', 'countryFk', 'taxClassFk'],
|
||||||
|
include: [
|
||||||
|
{
|
||||||
|
relation: 'country',
|
||||||
|
scope: {
|
||||||
|
fields: ['country'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
const ItemTaxRef = ref(null);
|
||||||
|
const taxesOptions = ref([]);
|
||||||
|
|
||||||
|
const submitTaxes = async (data) => {
|
||||||
|
try {
|
||||||
|
let payload = data.map((tax) => ({
|
||||||
|
id: tax.id,
|
||||||
|
taxClassFk: tax.taxClassFk,
|
||||||
|
}));
|
||||||
|
|
||||||
|
await axios.post(`Items/updateTaxes`, payload);
|
||||||
|
notify(t('globals.dataSaved'), 'positive');
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Error saving taxes', err);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<FetchData
|
||||||
jsegarra
commented
PArece que...no es la unica . PArece que...no es la unica .
Si buscas ".value.reload();"...hay unos 9 resultados. Voy a ver....
jsegarra
commented
Mmm...parece que, en este caso no se puso el auto-load, y por tanto hace falta el reload Mmm...parece que, en este caso no se puso el auto-load, y por tanto hace falta el reload
jsegarra
commented
Corregido @alexm Corregido @alexm
|
|||||||
|
url="TaxClasses"
|
||||||
|
:filter="{
|
||||||
|
fields: ['id', 'description', 'code'],
|
||||||
|
}"
|
||||||
|
@on-fetch="(data) => (taxesOptions = data)"
|
||||||
|
auto-load
|
||||||
|
/>
|
||||||
|
<CrudModel
|
||||||
|
:url="`items/${route.params.id}/taxes`"
|
||||||
|
:save-fn="submitTaxes"
|
||||||
|
:filter="taxesFilter"
|
||||||
|
:default-remove="false"
|
||||||
|
data-key="ItemTax"
|
||||||
|
model="ItemTax"
|
||||||
|
ref="ItemTaxRef"
|
||||||
|
auto-load
|
||||||
|
>
|
||||||
|
<template #body="{ rows }">
|
||||||
|
<QCard class="q-px-lg q-py-md">
|
||||||
|
<VnRow
|
||||||
|
v-for="(row, index) in rows"
|
||||||
|
:key="index"
|
||||||
|
class="row q-gutter-md q-mb-md"
|
||||||
|
>
|
||||||
|
<VnInput
|
||||||
|
:label="t('tax.country')"
|
||||||
|
v-model="row.country.country"
|
||||||
|
disable
|
||||||
|
/>
|
||||||
|
<VnSelect
|
||||||
|
:label="t('tax.class')"
|
||||||
|
v-model="row.taxClassFk"
|
||||||
|
:options="taxesOptions"
|
||||||
|
option-label="description"
|
||||||
|
option-value="id"
|
||||||
|
hide-selected
|
||||||
|
/>
|
||||||
|
</VnRow>
|
||||||
|
</QCard>
|
||||||
|
</template>
|
||||||
|
</CrudModel>
|
||||||
|
</template>
|
||||||
|
|
|
@ -11,3 +11,6 @@ itemDiary:
|
||||||
showBefore: Show what's before the inventory
|
showBefore: Show what's before the inventory
|
||||||
since: Since
|
since: Since
|
||||||
warehouse: Warehouse
|
warehouse: Warehouse
|
||||||
|
tax:
|
||||||
|
country: Country
|
||||||
|
class: Class
|
||||||
|
|
|
@ -11,3 +11,6 @@ itemDiary:
|
||||||
showBefore: Mostrar lo anterior al inventario
|
showBefore: Mostrar lo anterior al inventario
|
||||||
since: Desde
|
since: Desde
|
||||||
warehouse: Almacén
|
warehouse: Almacén
|
||||||
|
tax:
|
||||||
|
country: País
|
||||||
|
class: Clase
|
||||||
|
|
|
@ -3,9 +3,9 @@ import { useI18n } from 'vue-i18n';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
|
import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
|
||||||
import FetchData from 'components/FetchData.vue';
|
import FetchData from 'components/FetchData.vue';
|
||||||
import { onMounted, ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import CrudModel from 'components/CrudModel.vue';
|
import CrudModel from 'components/CrudModel.vue';
|
||||||
import RoadmapAddStopForm from "pages/Route/Roadmap/RoadmapAddStopForm.vue";
|
import RoadmapAddStopForm from 'pages/Route/Roadmap/RoadmapAddStopForm.vue';
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
@ -21,10 +21,6 @@ const updateDefaultStop = (data) => {
|
||||||
eta.setDate(eta.getDate() + 1);
|
eta.setDate(eta.getDate() + 1);
|
||||||
defaultStop.value.eta = eta.toISOString();
|
defaultStop.value.eta = eta.toISOString();
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
if (roadmapStopsCrudRef.value) roadmapStopsCrudRef.value.reload();
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<VnSubToolbar />
|
<VnSubToolbar />
|
||||||
|
@ -43,6 +39,7 @@ onMounted(() => {
|
||||||
:filter="{ where: { roadmapFk: route.params?.id } }"
|
:filter="{ where: { roadmapFk: route.params?.id } }"
|
||||||
:default-remove="false"
|
:default-remove="false"
|
||||||
:data-required="defaultStop"
|
:data-required="defaultStop"
|
||||||
|
auto-load
|
||||||
>
|
>
|
||||||
<template #body="{ rows }">
|
<template #body="{ rows }">
|
||||||
<QCard class="q-pa-md">
|
<QCard class="q-pa-md">
|
||||||
|
@ -51,7 +48,10 @@ onMounted(() => {
|
||||||
:key="index"
|
:key="index"
|
||||||
class="row no-wrap"
|
class="row no-wrap"
|
||||||
>
|
>
|
||||||
<RoadmapAddStopForm :roadmap-fk="route.params?.id" :form-data="row" />
|
<RoadmapAddStopForm
|
||||||
|
:roadmap-fk="route.params?.id"
|
||||||
|
:form-data="row"
|
||||||
|
/>
|
||||||
<div class="col-1 row justify-center items-center">
|
<div class="col-1 row justify-center items-center">
|
||||||
<QIcon
|
<QIcon
|
||||||
name="delete"
|
name="delete"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
@ -59,10 +59,6 @@ const setWireTransfer = async () => {
|
||||||
console.error('Error setting wire transfer', err);
|
console.error('Error setting wire transfer', err);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
if (supplierAccountRef.value) supplierAccountRef.value.reload();
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<FetchData
|
<FetchData
|
||||||
|
@ -94,6 +90,7 @@ onMounted(() => {
|
||||||
:default-remove="false"
|
:default-remove="false"
|
||||||
:data-required="{ supplierFk: route.params.id }"
|
:data-required="{ supplierFk: route.params.id }"
|
||||||
@save-changes="onChangesSaved()"
|
@save-changes="onChangesSaved()"
|
||||||
|
auto-load
|
||||||
>
|
>
|
||||||
<template #body="{ rows }">
|
<template #body="{ rows }">
|
||||||
<QCard class="q-pa-md">
|
<QCard class="q-pa-md">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { useRouter, useRoute } from 'vue-router';
|
import { useRouter, useRoute } from 'vue-router';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
@ -26,10 +26,6 @@ const supplierAgencyFilter = {
|
||||||
const redirectToCreateView = () => {
|
const redirectToCreateView = () => {
|
||||||
router.push({ name: 'SupplierAgencyTermCreate' });
|
router.push({ name: 'SupplierAgencyTermCreate' });
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
if (supplierAgencyTermRef.value) supplierAgencyTermRef.value.reload();
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<FetchData
|
<FetchData
|
||||||
|
@ -49,6 +45,7 @@ onMounted(() => {
|
||||||
:data-required="{
|
:data-required="{
|
||||||
supplierFk: route.params.id,
|
supplierFk: route.params.id,
|
||||||
}"
|
}"
|
||||||
|
auto-load
|
||||||
>
|
>
|
||||||
<template #body="{ rows }">
|
<template #body="{ rows }">
|
||||||
<QCard class="q-pa-md">
|
<QCard class="q-pa-md">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted, nextTick } from 'vue';
|
import { ref, nextTick } from 'vue';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
@ -19,10 +19,6 @@ const insertRow = () => {
|
||||||
if (lastInput) lastInput.focus();
|
if (lastInput) lastInput.focus();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
if (supplierContactRef.value) supplierContactRef.value.reload();
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -36,6 +32,7 @@ onMounted(() => {
|
||||||
ref="supplierContactRef"
|
ref="supplierContactRef"
|
||||||
:default-remove="false"
|
:default-remove="false"
|
||||||
:data-required="{ supplierFk: route.params.id }"
|
:data-required="{ supplierFk: route.params.id }"
|
||||||
|
auto-load
|
||||||
>
|
>
|
||||||
<template #body="{ rows }">
|
<template #body="{ rows }">
|
||||||
<QCard class="q-pa-md">
|
<QCard class="q-pa-md">
|
||||||
|
|
Loading…
Reference in New Issue
Falt añadir el hasChanges
Corregido:
4be559bbe8