gongchunyi
3 天以前 d48d302bd1da8047d10af89d42fb34dd9f8cdeb4
fix: 总金额计算缺失额外加工费用
已修改1个文件
52 ■■■■ 文件已修改
src/views/salesManagement/salesLedger/index.vue 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/salesLedger/index.vue
@@ -721,11 +721,12 @@
                                            <el-input-number
                                                v-model="item.quantity"
                                                :min="0"
                                                :step="0.1"
                                                :precision="2"
                                                :step="1"
                                                :precision="0"
                                                style="width: 100%;"
                                                placeholder="请输入数量"
                                                :disabled="operationType === 'view'"
                                                @change="calculateFromUnitPrice(true)"
                                            />
                                        </div>
                                        <el-button
@@ -1119,6 +1120,7 @@
        otherAmountSelectOptions.value = records.map((item) => ({
            id: item.id,
            processName: item.processName ?? "",
            unitPrice: item.unitPrice ?? 0,
        }));
    } finally {
        otherAmountSelectOptionsLoading.value = false;
@@ -1190,6 +1192,7 @@
        return {
            id: s.id,
            processName: opt?.processName ?? s.processName ?? "",
            unitPrice: opt?.unitPrice ?? s.unitPrice ?? 0,
            quantity: Number(s.quantity ?? 0) || 0,
        };
    });
@@ -1245,8 +1248,10 @@
    productForm.value.salesProductProcessList.push({
        id: opt.id,
        processName: opt.processName,
        unitPrice: opt.unitPrice ?? 0,
        quantity: 0,
    });
    calculateFromUnitPrice(true);
    // 选择完成后关闭弹窗,下一次可再次点击“新增”继续添加
    otherAmountAddDialogVisible.value = false;
@@ -1261,6 +1266,7 @@
    if (operationType.value === "view") return;
    if (!Array.isArray(productForm.value?.salesProductProcessList)) return;
    productForm.value.salesProductProcessList.splice(index, 1);
    calculateFromUnitPrice(true);
};
// 发货审批人节点(仿协同审批 infoFormDia.vue)
@@ -1893,6 +1899,7 @@
                .map((it) => ({
                    id: it?.id,
                    processName: it?.processName ?? "",
                unitPrice: Number(it?.unitPrice ?? 0) || 0,
                    quantity: Number(it?.quantity ?? 0) || 0,
                }))
                .filter((it) => it.id !== null && it.id !== undefined && it.id !== "");
@@ -2199,12 +2206,15 @@
        return;
    }
    const settlePieceArea = parseFloat(productForm.value.settlePieceArea) || 1;
    // 含税总价计算 = 单价 * 结算面积 * 数量
    productForm.value.taxInclusiveTotalPrice =
        proxy.calculateTaxIncludeTotalPrice(
    // 含税总价计算 = 单价 * 结算面积 * 数量 + 其他金额总和
    const basePrice = proxy.calculateTaxIncludeTotalPrice(
            productForm.value.taxInclusiveUnitPrice * settlePieceArea,
            productForm.value.quantity
        );
    const otherAmountTotal = (productForm.value.salesProductProcessList || []).reduce((total, item) => {
        return total + (Number(item.unitPrice) || 0) * (Number(item.quantity) || 0);
    }, 0);
    productForm.value.taxInclusiveTotalPrice = (parseFloat(basePrice) + otherAmountTotal).toFixed(2);
    if (productForm.value.taxRate) {
        // 不含税总价计算
        productForm.value.taxExclusiveTotalPrice =
@@ -2286,8 +2296,12 @@
    
    isCalculating.value = true;
    
    // 计算含税单价 = 含税总价 / 数量
    productForm.value.taxInclusiveUnitPrice = (totalPrice / quantity).toFixed(2);
    // 计算含税单价 = (含税总价 - 其他金额总和) / 数量
    const otherAmountTotal = (productForm.value.salesProductProcessList || []).reduce((total, item) => {
        return total + (Number(item.unitPrice) || 0) * (Number(item.quantity) || 0);
    }, 0);
    const basePrice = totalPrice - otherAmountTotal;
    productForm.value.taxInclusiveUnitPrice = (basePrice / quantity).toFixed(2);
    
    // 如果有税率,计算不含税总价
    if (productForm.value.taxRate) {
@@ -2324,8 +2338,12 @@
    const inclusiveTotalPrice = exclusiveTotalPrice / (1 - taxRateDecimal);
    productForm.value.taxInclusiveTotalPrice = inclusiveTotalPrice.toFixed(2);
    
    // 计算含税单价 = 含税总价 / 数量
    productForm.value.taxInclusiveUnitPrice = (inclusiveTotalPrice / quantity).toFixed(2);
    // 计算含税单价 = (含税总价 - 其他金额总和) / 数量
    const otherAmountTotal = (productForm.value.salesProductProcessList || []).reduce((total, item) => {
        return total + (Number(item.unitPrice) || 0) * (Number(item.quantity) || 0);
    }, 0);
    const basePrice = inclusiveTotalPrice - otherAmountTotal;
    productForm.value.taxInclusiveUnitPrice = (basePrice / quantity).toFixed(2);
    
    isCalculating.value = false;
};
@@ -2348,8 +2366,12 @@
    isCalculating.value = true;
    // 计算含税总价 = 单价 * 结算面积 * 数量
    productForm.value.taxInclusiveTotalPrice = (unitPrice * settlePieceArea * quantity).toFixed(2);
    // 计算含税总价 = 单价 * 结算面积 * 数量 + 其他金额总和
    const basePrice = unitPrice * settlePieceArea * quantity;
    const otherAmountTotal = (productForm.value.salesProductProcessList || []).reduce((total, item) => {
        return total + (Number(item.unitPrice) || 0) * (Number(item.quantity) || 0);
    }, 0);
    productForm.value.taxInclusiveTotalPrice = (basePrice + otherAmountTotal).toFixed(2);
    // 如果有税率,计算不含税总价
    if (productForm.value.taxRate) {
@@ -2381,8 +2403,12 @@
    isCalculating.value = true;
    // 计算含税总价 = 单价 * 结算面积 * 数量
    productForm.value.taxInclusiveTotalPrice = (unitPrice * settlePieceArea * quantity).toFixed(2);
    // 计算含税总价 = 单价 * 结算面积 * 数量 + 其他金额总和
    const basePrice = unitPrice * settlePieceArea * quantity;
    const otherAmountTotal = (productForm.value.salesProductProcessList || []).reduce((total, item) => {
        return total + (Number(item.unitPrice) || 0) * (Number(item.quantity) || 0);
    }, 0);
    productForm.value.taxInclusiveTotalPrice = (basePrice + otherAmountTotal).toFixed(2);
    // 如果有税率,计算不含税总价
    if (productForm.value.taxRate) {