forked from verdnatura/salix-front
Item tax
This commit is contained in:
parent
da89f4d731
commit
cf193b07c5
|
@ -124,11 +124,15 @@ 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;
|
||||||
|
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);
|
||||||
|
|
|
@ -1123,6 +1123,9 @@ item:
|
||||||
fixedPrice: Fixed prices
|
fixedPrice: Fixed prices
|
||||||
wasteBreakdown: Waste breakdown
|
wasteBreakdown: Waste breakdown
|
||||||
itemCreate: New item
|
itemCreate: New item
|
||||||
|
botanical: Botanical
|
||||||
|
barcode: Barcodes
|
||||||
|
tax: Tax
|
||||||
descriptor:
|
descriptor:
|
||||||
item: Item
|
item: Item
|
||||||
buyer: Buyer
|
buyer: Buyer
|
||||||
|
|
|
@ -1 +1,102 @@
|
||||||
<template>Item tax</template>
|
<script setup>
|
||||||
|
import { ref, onMounted } 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 VnSelectFilter from 'src/components/common/VnSelectFilter.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);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
if (ItemTaxRef.value) ItemTaxRef.value.reload();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<FetchData
|
||||||
|
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"
|
||||||
|
>
|
||||||
|
<template #body="{ rows }">
|
||||||
|
<QCard class="q-pl-lg q-py-md">
|
||||||
|
<VnRow
|
||||||
|
v-for="(row, index) in rows"
|
||||||
|
:key="index"
|
||||||
|
class="row q-gutter-md q-mb-md"
|
||||||
|
>
|
||||||
|
<VnRow class="row q-gutter-md q-mb-md">
|
||||||
|
<VnInput
|
||||||
|
:label="t('Country')"
|
||||||
|
v-model="row.country.country"
|
||||||
|
disable
|
||||||
|
/>
|
||||||
|
<VnSelectFilter
|
||||||
|
:label="t('Class')"
|
||||||
|
v-model="row.taxClassFk"
|
||||||
|
:options="taxesOptions"
|
||||||
|
option-label="description"
|
||||||
|
option-value="id"
|
||||||
|
hide-selected
|
||||||
|
/>
|
||||||
|
</VnRow>
|
||||||
|
</VnRow>
|
||||||
|
</QCard>
|
||||||
|
</template>
|
||||||
|
</CrudModel>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<i18n>
|
||||||
|
es:
|
||||||
|
Country: País
|
||||||
|
Class: Clase
|
||||||
|
</i18n>
|
||||||
|
|
Loading…
Reference in New Issue