mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-04-21 20:24:06 +00:00
Tax calculation issue (#38)
* fix initial tax per item issue * remove commit in estimate storage * add changes in tax per item calculation * add validation on requests * fix minimum total issue * fix table pagination filter issue * minor fix * remove compound interest and remove unused code --------- Co-authored-by: yashkanakiya <yashkanakiya281297@gmail.com> Co-authored-by: dhruvbhattt <dhruvbhatt7790@gmail.com> Co-authored-by: gdarko <dg@darkog.com>
This commit is contained in:
committed by
GitHub
parent
0d006846d5
commit
8788f3d504
@@ -138,6 +138,7 @@
|
||||
|
||||
<script setup>
|
||||
import { computed, ref, watch, onMounted } from 'vue'
|
||||
import { cloneDeep } from 'lodash'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import {
|
||||
@@ -257,11 +258,30 @@ async function submitForm() {
|
||||
|
||||
isSaving.value = true
|
||||
|
||||
let data = {
|
||||
let data = cloneDeep({
|
||||
...estimateStore.newEstimate,
|
||||
sub_total: estimateStore.getSubTotal,
|
||||
total: estimateStore.getTotal,
|
||||
tax: estimateStore.getTotalTax,
|
||||
})
|
||||
if (data.discount_per_item === 'YES') {
|
||||
data.items.forEach((item, index) => {
|
||||
if (item.discount_type === 'fixed'){
|
||||
data.items[index].discount = Math.round(item.discount * 100)
|
||||
}
|
||||
})
|
||||
}
|
||||
else {
|
||||
if (data.discount_type === 'fixed'){
|
||||
data.discount = Math.round(data.discount * 100)
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
!estimateStore.newEstimate.tax_per_item === 'YES'
|
||||
&& data.taxes.length
|
||||
){
|
||||
data.tax_type_ids = data.taxes.map(_t => _t.tax_type_id)
|
||||
}
|
||||
|
||||
const action = isEdit.value
|
||||
|
||||
@@ -147,6 +147,7 @@ import {
|
||||
decimal,
|
||||
} from '@vuelidate/validators'
|
||||
import useVuelidate from '@vuelidate/core'
|
||||
import { cloneDeep } from 'lodash'
|
||||
|
||||
import { useInvoiceStore } from '@/scripts/admin/stores/invoice'
|
||||
import { useModuleStore } from '@/scripts/admin/stores/module'
|
||||
@@ -258,11 +259,29 @@ async function submitForm() {
|
||||
|
||||
isSaving.value = true
|
||||
|
||||
let data = {
|
||||
let data = cloneDeep({
|
||||
...invoiceStore.newInvoice,
|
||||
sub_total: invoiceStore.getSubTotal,
|
||||
total: invoiceStore.getTotal,
|
||||
tax: invoiceStore.getTotalTax,
|
||||
})
|
||||
if (data.discount_per_item === 'YES') {
|
||||
data.items.forEach((item, index) => {
|
||||
if (item.discount_type === 'fixed'){
|
||||
data.items[index].discount = item.discount * 100
|
||||
}
|
||||
})
|
||||
}
|
||||
else {
|
||||
if (data.discount_type === 'fixed'){
|
||||
data.discount = data.discount * 100
|
||||
}
|
||||
}
|
||||
if (
|
||||
!invoiceStore.newInvoice.tax_per_item === 'YES'
|
||||
&& data.taxes.length
|
||||
){
|
||||
data.tax_type_ids = data.taxes.map(_t => _t.tax_type_id)
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
@@ -20,21 +20,6 @@
|
||||
:data="fetchData"
|
||||
:columns="taxTypeColumns"
|
||||
>
|
||||
<template #cell-compound_tax="{ row }">
|
||||
<BaseBadge
|
||||
:bg-color="
|
||||
utils.getBadgeStatusColor(row.data.compound_tax ? 'YES' : 'NO')
|
||||
.bgColor
|
||||
"
|
||||
:color="
|
||||
utils.getBadgeStatusColor(row.data.compound_tax ? 'YES' : 'NO')
|
||||
.color
|
||||
"
|
||||
>
|
||||
{{ row.data.compound_tax ? 'Yes' : 'No'.replace('_', ' ') }}
|
||||
</BaseBadge>
|
||||
</template>
|
||||
|
||||
<template #cell-percent="{ row }"> {{ row.data.percent }} % </template>
|
||||
|
||||
<template v-if="hasAtleastOneAbility()" #cell-actions="{ row }">
|
||||
@@ -91,11 +76,6 @@ const taxTypeColumns = computed(() => {
|
||||
thClass: 'extra',
|
||||
tdClass: 'font-medium text-gray-900',
|
||||
},
|
||||
{
|
||||
key: 'compound_tax',
|
||||
label: t('settings.tax_types.compound_tax'),
|
||||
tdClass: 'font-medium text-gray-900',
|
||||
},
|
||||
{
|
||||
key: 'percent',
|
||||
label: t('settings.tax_types.percent'),
|
||||
|
||||
Reference in New Issue
Block a user