|
|
@ -132,10 +132,6 @@ |
|
|
|
"noTaxDevelopCosts": null, // 初始化为 null 或 0 |
|
|
|
"noTaxShippingCosts": null, |
|
|
|
"noTaxServiceCosts": null, |
|
|
|
"noTaxLaborCosts": null, |
|
|
|
"noTaxPromotionalCosts": null, |
|
|
|
"noTaxBusinessCosts": null, |
|
|
|
"noTaxManagesCosts": null, |
|
|
|
"noTaxMaterialCosts": null, |
|
|
|
"noTaxOperatingCosts": null, |
|
|
|
"taxOperatingCosts": null, |
|
|
@ -149,10 +145,6 @@ |
|
|
|
var noTaxDevelopCosts = $('#noTaxDevelopCosts' + index).val(); |
|
|
|
var noTaxShippingCosts = $('#noTaxShippingCosts' + index).val(); |
|
|
|
var noTaxServiceCosts = $('#noTaxServiceCosts' + index).val(); |
|
|
|
var noTaxLaborCosts = $('#noTaxLaborCosts' + index).val(); |
|
|
|
var noTaxPromotionalCosts = $('#noTaxPromotionalCosts' + index).val(); |
|
|
|
var noTaxBusinessCosts = $('#noTaxBusinessCosts' + index).val(); |
|
|
|
var noTaxManagesCosts = $('#noTaxManagesCosts' + index).val(); |
|
|
|
var noTaxMaterialCosts = $('#noTaxMaterialCosts' + index).val(); |
|
|
|
var noTaxOperatingCosts = $('#noTaxOperatingCosts' + index).val(); |
|
|
|
var taxOperatingCosts = $('#taxOperatingCosts' + index).val(); |
|
|
@ -174,27 +166,6 @@ |
|
|
|
hasError = true; |
|
|
|
return; // 退出循环,阻止进一步处理 |
|
|
|
} |
|
|
|
|
|
|
|
if (!noTaxLaborCosts && noTaxLaborCosts !== '0') { |
|
|
|
$.modal.alertWarning("人工成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的人工成本"); |
|
|
|
hasError = true; |
|
|
|
return; // 退出循环,阻止进一步处理 |
|
|
|
} |
|
|
|
if (!noTaxPromotionalCosts && noTaxPromotionalCosts !== '0') { |
|
|
|
$.modal.alertWarning("推广成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的推广成本"); |
|
|
|
hasError = true; |
|
|
|
return; // 退出循环,阻止进一步处理 |
|
|
|
} |
|
|
|
if (!noTaxBusinessCosts && noTaxBusinessCosts !== '0') { |
|
|
|
$.modal.alertWarning("业务成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的业务成本"); |
|
|
|
hasError = true; |
|
|
|
return; // 退出循环,阻止进一步处理 |
|
|
|
} |
|
|
|
if (!noTaxManagesCosts && noTaxManagesCosts !== '0') { |
|
|
|
$.modal.alertWarning("管理成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的管理成本"); |
|
|
|
hasError = true; |
|
|
|
return; // 退出循环,阻止进一步处理 |
|
|
|
} |
|
|
|
if (!noTaxMaterialCosts && noTaxMaterialCosts !== '0') { |
|
|
|
$.modal.alertWarning("物料成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的物料成本"); |
|
|
|
hasError = true; |
|
|
@ -220,10 +191,6 @@ |
|
|
|
estimateMaterialDataList[index].noTaxDevelopCosts = noTaxDevelopCosts; |
|
|
|
estimateMaterialDataList[index].noTaxShippingCosts = noTaxShippingCosts; |
|
|
|
estimateMaterialDataList[index].noTaxServiceCosts = noTaxServiceCosts; |
|
|
|
estimateMaterialDataList[index].noTaxLaborCosts = noTaxLaborCosts; |
|
|
|
estimateMaterialDataList[index].noTaxPromotionalCosts = noTaxPromotionalCosts; |
|
|
|
estimateMaterialDataList[index].noTaxBusinessCosts = noTaxBusinessCosts; |
|
|
|
estimateMaterialDataList[index].noTaxManagesCosts = noTaxManagesCosts; |
|
|
|
estimateMaterialDataList[index].noTaxMaterialCosts = noTaxMaterialCosts; |
|
|
|
estimateMaterialDataList[index].noTaxOperatingCosts = noTaxOperatingCosts; |
|
|
|
estimateMaterialDataList[index].taxOperatingCosts = taxOperatingCosts; |
|
|
@ -489,8 +456,8 @@ |
|
|
|
var firstRow = data[0].rows[0]; |
|
|
|
|
|
|
|
// 初始化累积变量 |
|
|
|
let noTaxPurchaseRmb = 0; |
|
|
|
let taxPurchaseRmb = 0; |
|
|
|
let noTaxPurchaseRmb = 0; //不含税采购总成本 |
|
|
|
let taxPurchaseRmb = 0; //含税采购总成本 |
|
|
|
|
|
|
|
// 累加无税购买金额 |
|
|
|
data[0].rows.forEach(function (row) { |
|
|
@ -517,32 +484,31 @@ |
|
|
|
|
|
|
|
// 从 `salesEstimateDetailVo` 中获取其他成本信息 |
|
|
|
const { |
|
|
|
noTaxLaborCosts = '', |
|
|
|
noTaxPromotionalCosts = '', |
|
|
|
noTaxBusinessCosts = '', |
|
|
|
noTaxManagesCosts = '', |
|
|
|
noTaxMaterialCosts = '' |
|
|
|
totalOperatingCosts = '', //上一年度的总经营不含税成本合计 |
|
|
|
noTaxMaterialCosts = '' // 上一年度总物料不含税成本合计 |
|
|
|
} = salesEstimateDetailVo || {}; |
|
|
|
|
|
|
|
// 计算不含税总经营成本 |
|
|
|
const noAllTaxOperatingCosts = ( |
|
|
|
parseFloat(noTaxLaborCosts) + |
|
|
|
parseFloat(noTaxBusinessCosts) + |
|
|
|
parseFloat(noTaxManagesCosts) + |
|
|
|
parseFloat(noTaxPromotionalCosts) |
|
|
|
).toFixed(2) || ''; |
|
|
|
|
|
|
|
// 计算含税总经营成本,假设增值税率为 13% |
|
|
|
// 计算上一年度含税总经营成本,假设增值税率为 13% |
|
|
|
const allTaxOperatingCosts = ( |
|
|
|
parseFloat(noAllTaxOperatingCosts) * 1.13 |
|
|
|
parseFloat(totalOperatingCosts) * 1.13 |
|
|
|
).toFixed(2) || ''; |
|
|
|
|
|
|
|
//上一年度总物料含税成本合计 |
|
|
|
const allTaxMaterialCosts = ( |
|
|
|
parseFloat(noTaxMaterialCosts) * 1.13 |
|
|
|
).toFixed(2) || ''; |
|
|
|
//该料号的不含税经营成本 |
|
|
|
|
|
|
|
|
|
|
|
//该料号的不含税经营成本 (RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计 |
|
|
|
const noTaxOperatingCosts = ( |
|
|
|
(noTaxPurchaseRmb/noTaxMaterialCosts) * noAllTaxOperatingCosts |
|
|
|
(noTaxPurchaseRmb/noTaxMaterialCosts) * totalOperatingCosts |
|
|
|
).toFixed(2) || ''; |
|
|
|
// 该料号的含税经营成本 |
|
|
|
|
|
|
|
|
|
|
|
// 该料号的含税经营成本 (RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计 |
|
|
|
const taxOperatingCosts = ( |
|
|
|
(taxPurchaseRmb/noTaxMaterialCosts) * allTaxOperatingCosts |
|
|
|
(taxPurchaseRmb/allTaxMaterialCosts) * allTaxOperatingCosts |
|
|
|
).toFixed(2) || ''; |
|
|
|
// 根据 `parentRow.profitRate` 设置利润率 |
|
|
|
let profitRateKey = 'aprofitRate'; |
|
|
@ -572,10 +538,7 @@ |
|
|
|
noTaxDevelopCosts, |
|
|
|
noTaxShippingCosts, |
|
|
|
noTaxServiceCosts, |
|
|
|
noTaxLaborCosts, |
|
|
|
noTaxPromotionalCosts, |
|
|
|
noTaxBusinessCosts, |
|
|
|
noTaxManagesCosts, |
|
|
|
totalOperatingCosts, |
|
|
|
noTaxMaterialCosts, |
|
|
|
noTaxOperatingCosts, |
|
|
|
taxOperatingCosts, |
|
|
@ -590,10 +553,7 @@ |
|
|
|
noTaxDevelopCosts: '', |
|
|
|
noTaxShippingCosts: '', |
|
|
|
noTaxServiceCosts: '', |
|
|
|
noTaxLaborCosts: '', |
|
|
|
noTaxPromotionalCosts: '', |
|
|
|
noTaxBusinessCosts: '', |
|
|
|
noTaxManagesCosts: '', |
|
|
|
totalOperatingCosts: '', |
|
|
|
noTaxMaterialCosts: '', |
|
|
|
noTaxOperatingCosts: '', |
|
|
|
taxOperatingCosts: '', |
|
|
@ -616,24 +576,12 @@ |
|
|
|
formHtml += '<label for="noTaxServiceCosts' + index + '">不含税服务成本(RMB):</label>'; |
|
|
|
formHtml += '<input type="text" class="form-control" id="noTaxServiceCosts' + index + '" name="noTaxServiceCosts' + index + '" value="' + costs.noTaxServiceCosts + '" readonly>'; |
|
|
|
formHtml += '</div>'; |
|
|
|
formHtml += '<h3>总经营成本</h3>'; |
|
|
|
formHtml += '<h3>上一年度总经营成本</h3>'; |
|
|
|
formHtml += '<div class="form-group">'; |
|
|
|
formHtml += '<label for="noTaxLaborCosts' + index + '">不含税人工成本(RMB):</label>'; |
|
|
|
formHtml += '<input type="text" class="form-control" id="noTaxLaborCosts' + index + '" name="noTaxLaborCosts' + index + '" value="' + costs.noTaxLaborCosts + '">'; |
|
|
|
formHtml += '<label for="totalOperatingCosts' + index + '">不含税总经营成本(RMB):</label>'; |
|
|
|
formHtml += '<input type="text" class="form-control" id="totalOperatingCosts' + index + '" name="totalOperatingCosts' + index + '" value="' + costs.totalOperatingCosts + '">'; |
|
|
|
formHtml += '</div>'; |
|
|
|
formHtml += '<div class="form-group">'; |
|
|
|
formHtml += '<label for="noTaxPromotionalCosts' + index + '">不含税推广成本(RMB):</label>'; |
|
|
|
formHtml += '<input type="text" class="form-control" id="noTaxPromotionalCosts' + index + '" name="noTaxPromotionalCosts' + index + '" value="' + costs.noTaxPromotionalCosts + '">'; |
|
|
|
formHtml += '</div>'; |
|
|
|
formHtml += '<div class="form-group">'; |
|
|
|
formHtml += '<label for="noTaxBusinessCosts' + index + '">不含税业务成本(RMB):</label>'; |
|
|
|
formHtml += '<input type="text" class="form-control" id="noTaxBusinessCosts' + index + '" name="noTaxBusinessCosts' + index + '" value="' + costs.noTaxBusinessCosts + '">'; |
|
|
|
formHtml += '</div>'; |
|
|
|
formHtml += '<div class="form-group">'; |
|
|
|
formHtml += '<label for="noTaxManagesCosts' + index + '">不含税管理成本(RMB):</label>'; |
|
|
|
formHtml += '<input type="text" class="form-control" id="noTaxManagesCosts' + index + '" name="noTaxManagesCosts' + index + '" value="' + costs.noTaxManagesCosts + '">'; |
|
|
|
formHtml += '</div>'; |
|
|
|
formHtml += '<h3>总物料成本</h3>'; |
|
|
|
formHtml += '<h3>上一年度总物料成本</h3>'; |
|
|
|
formHtml += '<div class="form-group">'; |
|
|
|
formHtml += '<label for="noTaxMaterialCosts' + index + '">不含税总物料成本(RMB):</label>'; |
|
|
|
formHtml += '<input type="text" class="form-control" id="noTaxMaterialCosts' + index + '" name="noTaxMaterialCosts' + index + '" value="' + costs.noTaxMaterialCosts + '">'; |
|
|
@ -669,17 +617,8 @@ |
|
|
|
|
|
|
|
// 根据 input 的 id 或 name 进行相应的计算 |
|
|
|
switch (inputId) { |
|
|
|
case 'noTaxLaborCosts' + index: |
|
|
|
calculateOperatingCosts(inputValue, 'noTaxLaborCosts'); |
|
|
|
break; |
|
|
|
case 'noTaxPromotionalCosts' + index: |
|
|
|
calculateOperatingCosts(inputValue, 'noTaxPromotionalCosts'); |
|
|
|
break; |
|
|
|
case 'noTaxBusinessCosts' + index: |
|
|
|
calculateOperatingCosts(inputValue, 'noTaxBusinessCosts'); |
|
|
|
break; |
|
|
|
case 'noTaxManagesCosts' + index: |
|
|
|
calculateOperatingCosts(inputValue, 'noTaxManagesCosts'); |
|
|
|
case 'totalOperatingCosts' + index: |
|
|
|
calculateOperatingCosts(inputValue, 'totalOperatingCosts'); |
|
|
|
break; |
|
|
|
case 'noTaxMaterialCosts' + index: |
|
|
|
updateMaterialCosts(inputValue); |
|
|
@ -692,21 +631,21 @@ |
|
|
|
}); |
|
|
|
|
|
|
|
function calculateOperatingCosts(value, costType) { |
|
|
|
var noAllTaxOperatingCosts = 0; |
|
|
|
// var totalOperatingCosts = 0; |
|
|
|
var allNoTaxPurchaseRmb = 0; |
|
|
|
var allTaxPurchaseRmb = 0; |
|
|
|
|
|
|
|
// 获取所有相关的不含税成本 |
|
|
|
['noTaxLaborCosts', 'noTaxPromotionalCosts', 'noTaxBusinessCosts', 'noTaxManagesCosts'].forEach(function(cost) { |
|
|
|
var currentCost = parseFloat($form.find('#' + cost + index).val()); |
|
|
|
noAllTaxOperatingCosts += currentCost; |
|
|
|
}); |
|
|
|
// // 获取所有相关的不含税成本 |
|
|
|
// ['noTaxLaborCosts', 'noTaxPromotionalCosts', 'noTaxBusinessCosts', 'noTaxManagesCosts'].forEach(function(cost) { |
|
|
|
// var currentCost = parseFloat($form.find('#' + cost + index).val()); |
|
|
|
// noAllTaxOperatingCosts += currentCost; |
|
|
|
// }); |
|
|
|
|
|
|
|
// 更新不含税总经营成本 |
|
|
|
$form.find('#noAllTaxOperatingCosts' + index).val(noAllTaxOperatingCosts.toFixed(2)); |
|
|
|
// 更新上一年度不含税总经营成本 |
|
|
|
var totalOperatingCosts = parseFloat($form.find('#totalOperatingCosts' + index).val()); |
|
|
|
|
|
|
|
// 计算含税总经营成本 |
|
|
|
var allTaxOperatingCosts = noAllTaxOperatingCosts * 1.13; |
|
|
|
// 计算上一年度含税总经营成本 |
|
|
|
var allTaxOperatingCosts = totalOperatingCosts * 1.13; |
|
|
|
$form.find('#allTaxOperatingCosts' + index).val(allTaxOperatingCosts.toFixed(2)); |
|
|
|
|
|
|
|
// 遍历数据集计算不含税采购成本和含税采购成本 |
|
|
@ -720,13 +659,16 @@ |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
// 该料号的不含税经营成本 |
|
|
|
var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val()); |
|
|
|
var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * noAllTaxOperatingCosts; |
|
|
|
|
|
|
|
var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val());//不含税总物料成本 |
|
|
|
var allTaxMaterialCosts = noTaxMaterialCosts * 1.13;//含税总物料成本 |
|
|
|
|
|
|
|
// 该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计 |
|
|
|
var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * totalOperatingCosts; |
|
|
|
$form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2)); |
|
|
|
|
|
|
|
// 该料号的含税经营成本 |
|
|
|
var taxOperatingCosts = (allTaxPurchaseRmb / noTaxMaterialCosts) * allTaxOperatingCosts; |
|
|
|
// 该料号含税经营成本(RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计 |
|
|
|
var taxOperatingCosts = (allTaxPurchaseRmb / allTaxMaterialCosts) * allTaxOperatingCosts; |
|
|
|
$form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2)); |
|
|
|
} |
|
|
|
|
|
|
@ -747,14 +689,33 @@ |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
// 更新不含税经营成本 |
|
|
|
var noAllTaxOperatingCosts = parseFloat($form.find('#noAllTaxOperatingCosts' + index).val()); |
|
|
|
var noTaxOperatingCosts = (noTaxPurchaseRmb / value) * noAllTaxOperatingCosts; |
|
|
|
// // 更新不含税经营成本 |
|
|
|
// var noAllTaxOperatingCosts = parseFloat($form.find('#noAllTaxOperatingCosts' + index).val()); |
|
|
|
// var noTaxOperatingCosts = (noTaxPurchaseRmb / value) * noAllTaxOperatingCosts; |
|
|
|
// $form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2)); |
|
|
|
// |
|
|
|
// // 更新含税经营成本 |
|
|
|
// var taxOperatingCosts = (taxPurchaseRmb / value) * noAllTaxOperatingCosts; |
|
|
|
// $form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2)); |
|
|
|
|
|
|
|
// 更新上一年度不含税总经营成本 |
|
|
|
var totalOperatingCosts = parseFloat($form.find('#totalOperatingCosts' + index).val()); |
|
|
|
|
|
|
|
// 计算上一年度含税总经营成本 |
|
|
|
var allTaxOperatingCosts = totalOperatingCosts * 1.13; |
|
|
|
$form.find('#allTaxOperatingCosts' + index).val(allTaxOperatingCosts.toFixed(2)); |
|
|
|
|
|
|
|
// 该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计 |
|
|
|
var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val()); |
|
|
|
var allTaxMaterialCosts = noTaxMaterialCosts * 1.13; |
|
|
|
var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * totalOperatingCosts; |
|
|
|
$form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2)); |
|
|
|
|
|
|
|
// 更新含税经营成本 |
|
|
|
var taxOperatingCosts = (taxPurchaseRmb / value) * noAllTaxOperatingCosts; |
|
|
|
// 该料号含税经营成本(RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计 |
|
|
|
var taxOperatingCosts = (allTaxPurchaseRmb / allTaxMaterialCosts) * allTaxOperatingCosts; |
|
|
|
$form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2)); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|