Browse Source

[fix]销售管理:

客户报价
修改客户报价新增页面:当选择客户编号的时候,自动赋值 币种和 国内税率
修改根据币种的不同,如果是RMB,表格只能先填写 不含税单价人民币;
如果是美元 表格只能先填写 不含税单价美元
新增根据客户编号查询币种和国内税率语句
dev
liuxiaoxu 5 months ago
parent
commit
b870324179
  1. 2
      ruoyi-admin/src/main/resources/mapper/system/SysCustomerMapper.xml
  2. 166
      ruoyi-admin/src/main/resources/templates/system/customerQuote/add.html

2
ruoyi-admin/src/main/resources/mapper/system/SysCustomerMapper.xml

@ -136,7 +136,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectSysCustomerByCustomerId" parameterType="String" resultMap="SysCustomerResult"> <select id="selectSysCustomerByCustomerId" parameterType="String" resultMap="SysCustomerResult">
select enterprise_code as customerId,enterprise_name as customerName from select enterprise_code as customerId,enterprise_name as customerName, common_currency,confirm_tax,tax_rate from
sys_customer sys_customer
where enterprise_code = #{customerId} where enterprise_code = #{customerId}
</select> </select>

166
ruoyi-admin/src/main/resources/templates/system/customerQuote/add.html

@ -55,12 +55,11 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-6 control-label is-required">是否含税:</label> <label class="col-sm-4 control-label is-required">是否含税:</label>
<div class="col-sm-6"> <div class="col-sm-8">
<div class="radio-box" th:each="dict : ${@dict.getType('sys_confirm_tax')}"> <div class="radio-box" th:each="dict : ${@dict.getType('sys_confirm_tax')}">
<input required type="radio" th:id="${'confirmFax_' + dict.dictCode}" <input type="radio" th:id="${dict.dictCode}" name="confirmFax" th:value="${dict.dictValue}" th:checked="${dict.default}">
name="confirmFax" th:value="${dict.dictValue}" th:checked="${dict.default}"> <label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label>
<label th:for="${'confirmFax_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div> </div>
</div> </div>
</div> </div>
@ -168,9 +167,7 @@
} }
} }
//获取客户信息 //获取客户信息
$(document).ready(function() {
// 初始化时默认加载客户编号列表
loadCustomerIds();
// 监听客户编号下拉框的变化 // 监听客户编号下拉框的变化
$('#customerCode').on('change', function() { $('#customerCode').on('change', function() {
@ -189,6 +186,17 @@
$.modal.alertWarning('未能获取到客户名称!'); $.modal.alertWarning('未能获取到客户名称!');
} }
$('input[name="customerName"]').val(data.data.customerName); $('input[name="customerName"]').val(data.data.customerName);
$("input[name='rmbTax']").val(data.data.taxRate);
// 根据data.data.confirmTax的值(0或1)来选中对应的单选按钮
if(data.data.confirmTax === '0' || data.data.confirmTax === '1') {
console.log("data.data.confirmTax:",data.data.confirmTax)
$('input:radio[name="confirmFax"][value="' + data.data.confirmTax + '"]').attr('checked', 'checked');
} else {
// 如果返回的值不是预期的0或1,可处理异常情况
console.warn("Unexpected confirmTax value:", data.data.confirmTax);
}
$("#commonCurrency_add").val(data.data.commonCurrency).trigger('change');
commonCurrency = $("#commonCurrency_add option:selected").val();
}, },
error: function(jqXHR, textStatus, errorThrown) { error: function(jqXHR, textStatus, errorThrown) {
console.error('Error:', textStatus, errorThrown); console.error('Error:', textStatus, errorThrown);
@ -200,7 +208,12 @@
$('input[name="customerName"]').val(''); $('input[name="customerName"]').val('');
} }
}); });
});
$(document).ready(function() {
// 初始化时默认加载客户编号列表
loadCustomerIds();
});
// 假设的加载客户编号列表函数 // 假设的加载客户编号列表函数
function loadCustomerIds() { function loadCustomerIds() {
var url = ctx + 'system/customer/getCustomers'; var url = ctx + 'system/customer/getCustomers';
@ -222,7 +235,7 @@
// 假设item有id和name两个属性,分别代表客户ID和客户编号 // 假设item有id和name两个属性,分别代表客户ID和客户编号
selectElement.append('<option value="' + item.customerId + '">' + item.customerId + '</option>'); selectElement.append('<option value="' + item.customerId + '">' + item.customerId + '</option>');
}); });
$('#customerCode').val(customerId); // $('#customerCode').val(customerId);
} else { } else {
$.modal.errMsg("数据为空"); $.modal.errMsg("数据为空");
} }
@ -257,16 +270,6 @@
} }
// // 逻辑删除收款凭证前端的一行数据
// function removeRow(receivablesRecordsId){
// console.log(receivablesRecordsId);
// // 直接使用 receivablesRecordsId 值进行删除操作
// $("#bootstrap-receivablesVoucher-table").bootstrapTable('remove', {
// field: 'receivablesRecordsId',
// values: receivablesRecordsId
// });
// }
$(function() { $(function() {
@ -484,6 +487,7 @@
// // 计算不含税价格 // // 计算不含税价格
// var noTaxPrice = noTaxValue.toFixed(2); // var noTaxPrice = noTaxValue.toFixed(2);
// 根据选择的货币类型计算其他值 // 根据选择的货币类型计算其他值
if (commonCurrency1 === '1') { if (commonCurrency1 === '1') {
// RMB为基准货币 // RMB为基准货币
@ -512,6 +516,37 @@
} }
}; };
$.table.init(options); $.table.init(options);
// 初始化表格
var bootstrapSubTableQuoteChild = $('#bootstrap-sub-table-quoteChild').bootstrapTable(options);
// 监听货币类型选择器变化
// $("#commonCurrency_add").on('change', function() {
// var currencyVal = $(this).val();
// var columns = bootstrapSubTableQuoteChild.bootstrapTable('getColumns');
// columns.forEach(function(column) {
// // 根据货币类型和列名决定是否启用编辑
// if (column.field !== 'materialNoRmb' && column.field !== 'materialNoUsd') {
// column.editable.enabled = function() {
// return (currencyVal === '1' && row.materialNoRmb) || (currencyVal === '2' && row.materialNoUsd);
// };
// }
// });
// // bootstrapSubTableQuoteChild.bootstrapTable('refreshOptions', { columns: columns });
// });
// 添加编辑保存事件监听器
bootstrapSubTableQuoteChild.on('editable-save.bs.table', function(e, field, row, oldValue, $el) {
var currencyVal = $("#commonCurrency_add").val();
var requiredField = (currencyVal === '1') ? 'materialNoRmb' : 'materialNoUsd';
// 检查是否尝试编辑除requiredField外的字段,且requiredField未填写
if (field !== requiredField && (!row[requiredField] || row[requiredField].trim() === '')) {
$.modal.alertWarning((currencyVal === '1' ? "请首先填写物料的不含税单价(RMB)" : "请首先填写物料的不含税单价(美元)"));
// 可以选择取消这次编辑操作,但Bootstrap Table默认不会提供直接的API来取消编辑后的保存,您可能需要手动恢复数据或采取其他策略。
}
});
// 初始化时也需要根据当前的货币类型设置一次
$("#commonCurrency_add").trigger('change');
}); });
//获取单号 //获取单号
$.ajax({ $.ajax({
@ -624,97 +659,6 @@
minView: "month", minView: "month",
autoclose: true autoclose: true
}); });
//计算金额
// function getTotalAmount() {
// // 获取表格数据
// const data = $("#bootstrap-sub-table-quoteChild").bootstrapTable('getData', true);
// // 初始化汇总对象,减少代码重复并提高清晰度
// const sums = {
// enterprise: "", // 用于拼接物料名称和数量
// enterpriseSum: 0, // 物料总数量
// currencies: {
// noRmb: { total: 0, single: 0 }, // 非人民币数量与总金额
// rmb: { total: 0, single: 0 }, // 人民币
// noUsd: { total: 0, single: 0 }, // 非美元
// usd: { total: 0, single: 0 } // 美元
// }
// };
// // 遍历数据进行计算
// for (let i = 0; i < data.length; i++) {
// const item = data[i];
// // 拼接物料信息
// sums.enterprise += "" + item.materialName + ": 数量 : " + item.materialNum;
// sums.enterpriseSum += parseFloat(item.materialNum); // 累加物料数量
// // 分别累加各货币的单个金额和总金额
// ['noRmb', 'rmb', 'noUsd', 'usd'].forEach(currency => {
// sums.currencies[currency].single += parseFloat(item['material' + [currency] ]);
// sums.currencies[currency].total += parseFloat(item['material' + [currency] + 'Sum']);
// });
// }
// updateFormValues(sums);
// }
// function updateFormValues(sums) {
// // 物料合计与数量合计没有在sums中直接给出,这里假设它们需要单独处理或已存在于页面其他部分
// $("#enterprise_add").val(sums.enterprise);
// $("#enterpriseSum_add").val(sums.enterpriseSum);
//
// // 更新不含税单价和总价
// $("#noRmb_add").val(sums.currencies.noRmb.single);
// $("#noRmbSum_add").val(sums.currencies.noRmb.total);
//
// $("#rmb_add").val(sums.currencies.rmb.single);
// $("#rmbSum_add").val(sums.currencies.rmb.total);
//
// $("#noUsd_add").val(sums.currencies.noUsd.single);
// $("#noUsdSum_add").val(sums.currencies.noUsd.total);
//
// $("#usd_add").val(sums.currencies.usd.single);
// $("#usdSum_add").val(sums.currencies.usd.total);
// }
// $(document).ready(function() {
// // 监听货币选项变化
// $("#commonCurrency_add").on("change", function() {
// var isEditable = $(this).val() === "1";
// var fieldName = "";
// var materialColumnCells = $('#bootstrap-sub-table-quoteChild tbody tr td [field=" '+ fieldName+' "]');
// // 根据是否可编辑,添加或移除xEditable
// materialColumnCells.each(function() {
// var cell = $(this);
// var currentValue = cell.text().trim(); // 获取当前单元格的值
//
// if (isEditable) {
// // 如果允许编辑且尚未添加xEditable
// if (!cell.hasClass('editable')) {
// cell.addClass('editable'); // 添加标记类,以便跟踪状态
// cell.editable({
// type: 'text',
// pk: cell.closest('tr').data('id'), // 假设每行有唯一ID
// title: '物料的数量',
// validate: function(value) {
// if (!value) return '金额不能为空';
// if (isNaN(value)) return '金额必须为数字';
// return true;
// },
// success: function(response, newValue) {
// // 成功后的回调,这里可以根据需要处理服务器响应
// }
// });
// }
// } else {
// // 如果不允许编辑且已添加了xEditable
// if (cell.hasClass('editable')) {
// cell.removeClass('editable');
// // 这里简化处理,实际中可能需要更复杂的逻辑来销毁xEditable实例
// cell.off('.editable'); // 移除xEditable绑定的事件
// cell.text(currentValue); // 还原原始文本
// }
// }
// });
// });
//
// // 初始化时触发一次,根据默认状态设置可编辑性
// $("#commonCurrency_add").trigger("change");
// });
function getTotalAmount() { function getTotalAmount() {
var getData = $("#bootstrap-sub-table-quoteChild").bootstrapTable('getData'); var getData = $("#bootstrap-sub-table-quoteChild").bootstrapTable('getData');
var enterprise = 0; var enterprise = 0;

Loading…
Cancel
Save