gongchunyi
4 天以前 d336a25aae76f8baf8a8a5dfce18521b9a7d0f03
fix: 含税总价计算错误
已修改1个文件
57 ■■■■ 文件已修改
src/views/salesManagement/salesLedger/index.vue 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/salesLedger/index.vue
@@ -580,7 +580,7 @@
                                style="width: 100%"
                                placeholder="请输入"
                                clearable
                                @change="recalcAreaTotals"
                                @change="() => { recalcAreaTotals(); calculateFromUnitPrice(true); }"
                            />
                        </el-form-item>
                    </el-col>
@@ -1649,8 +1649,9 @@
    productData.value = products.map((p) => {
        const quantity = Number(p.quantity ?? 0) || 0;
        const unitPrice = Number(p.unitPrice ?? 0) || 0;
        const settlePieceArea = Number(p.settlePieceArea ?? 0) || 1;
        const taxRate = "13"; // 默认 13%,便于直接提交(如需可在产品中自行修改)
        const taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
        const taxInclusiveTotalPrice = (unitPrice * settlePieceArea * quantity).toFixed(2);
        const taxExclusiveTotalPrice = proxy.calculateTaxExclusiveTotalPrice(taxInclusiveTotalPrice, taxRate);
        return {
            // 台账字段
@@ -2153,10 +2154,11 @@
    if (!productForm.value.quantity) {
        return;
    }
    // 含税总价计算
    const settlePieceArea = parseFloat(productForm.value.settlePieceArea) || 1;
    // 含税总价计算 = 单价 * 结算面积 * 数量
    productForm.value.taxInclusiveTotalPrice =
        proxy.calculateTaxIncludeTotalPrice(
            productForm.value.taxInclusiveUnitPrice,
            productForm.value.taxInclusiveUnitPrice * settlePieceArea,
            productForm.value.quantity
        );
    if (productForm.value.taxRate) {
@@ -2219,15 +2221,12 @@
    const computed = Number(computedPieceArea.toFixed(5));
    productForm.value.actualPieceArea = computed;
    // settlePieceArea:若用户未填写/为0,则默认使用宽高计算值
    const settlePieceRaw = Number(productForm.value.settlePieceArea ?? 0) || 0;
    if (!settlePieceRaw) {
        productForm.value.settlePieceArea = computed;
    }
    productForm.value.settlePieceArea = computed;
    recalcPerimeterFromWidthHeight();
    recalcAreaTotals();
    // 面积更新后,重新计算含税总价 = 单价 * 结算面积 * 数量
    calculateFromUnitPrice(true);
};
// 根据含税总价计算含税单价和数量
@@ -2294,19 +2293,20 @@
        return;
    }
    if (isCalculating.value) return;
    const quantity = parseFloat(productForm.value.quantity);
    const unitPrice = parseFloat(productForm.value.taxInclusiveUnitPrice);
    const settlePieceArea = parseFloat(productForm.value.settlePieceArea) || 1;
    if (!quantity || quantity <= 0 || !unitPrice) {
        return;
    }
    isCalculating.value = true;
    // 计算含税总价
    productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
    // 计算含税总价 = 单价 * 结算面积 * 数量
    productForm.value.taxInclusiveTotalPrice = (unitPrice * settlePieceArea * quantity).toFixed(2);
    // 如果有税率,计算不含税总价
    if (productForm.value.taxRate) {
        productForm.value.taxExclusiveTotalPrice =
@@ -2315,30 +2315,31 @@
                productForm.value.taxRate
            );
    }
    isCalculating.value = false;
};
// 根据含税单价变化计算总价
const calculateFromUnitPrice = () => {
const calculateFromUnitPrice = (silent = false) => {
    if (!productForm.value.taxRate) {
        proxy.$modal.msgWarning("请先选择税率");
        if (!silent) proxy.$modal.msgWarning("请先选择税率");
        return;
    }
    if (isCalculating.value) return;
    const quantity = parseFloat(productForm.value.quantity);
    const unitPrice = parseFloat(productForm.value.taxInclusiveUnitPrice);
    const settlePieceArea = parseFloat(productForm.value.settlePieceArea) || 1;
    if (!quantity || quantity <= 0 || !unitPrice) {
        return;
    }
    isCalculating.value = true;
    // 计算含税总价
    productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
    // 计算含税总价 = 单价 * 结算面积 * 数量
    productForm.value.taxInclusiveTotalPrice = (unitPrice * settlePieceArea * quantity).toFixed(2);
    // 如果有税率,计算不含税总价
    if (productForm.value.taxRate) {
        productForm.value.taxExclusiveTotalPrice =
@@ -2347,7 +2348,7 @@
                productForm.value.taxRate
            );
    }
    isCalculating.value = false;
};