diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseQuoteChildService.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseQuoteChildService.java
index b6e25db6..e3ee35ea 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseQuoteChildService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseQuoteChildService.java
@@ -2,6 +2,7 @@ package com.ruoyi.purchase.service;
import java.util.List;
import com.ruoyi.purchase.domain.PurchaseQuoteChild;
+import org.springframework.transaction.annotation.Transactional;
/**
* 采购报价单物料信息Service接口
@@ -59,6 +60,13 @@ public interface IPurchaseQuoteChildService
*/
public int deletePurchaseQuoteChildById(Long purchaseQuoteChildId);
+ /**
+ * 根据报价单号逻辑删除采购报价单物料信息
+ * @param quoteCode
+ * @return
+ */
+ public int deletePurchaseQuoteChildByQuoteCode(String purchaseQuoteCode);
+
/**
* 作废采购报价单物料信息
* @param purchaseQuoteChildId 采购报价单物料信息ID
@@ -72,4 +80,5 @@ public interface IPurchaseQuoteChildService
* @return
*/
int restorePurchaseQuoteChildById(Long purchaseQuoteChildId);
+
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseQuoteService.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseQuoteService.java
index 292923ab..412d65e3 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseQuoteService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseQuoteService.java
@@ -2,6 +2,7 @@ package com.ruoyi.purchase.service;
import java.util.List;
import com.ruoyi.purchase.domain.PurchaseQuote;
+import org.springframework.transaction.annotation.Transactional;
/**
* 采购报价单Service接口
@@ -33,6 +34,7 @@ public interface IPurchaseQuoteService
* @param purchaseQuote 采购报价单
* @return 结果
*/
+ @Transactional(rollbackFor = Exception.class)
public int insertPurchaseQuote(PurchaseQuote purchaseQuote);
/**
@@ -41,6 +43,7 @@ public interface IPurchaseQuoteService
* @param purchaseQuote 采购报价单
* @return 结果
*/
+ @Transactional(rollbackFor = Exception.class)
public int updatePurchaseQuote(PurchaseQuote purchaseQuote);
/**
@@ -72,4 +75,11 @@ public interface IPurchaseQuoteService
* @return
*/
int restorePurchaseQuoteById(Long purchaseQuoteId);
+
+ /**
+ * 生成采购报价单单号
+ * @param
+ * @return 结果
+ */
+ Object getId();
}
diff --git a/ruoyi-admin/src/main/resources/templates/system/salesOrder/add.html b/ruoyi-admin/src/main/resources/templates/system/salesOrder/add.html
index 4b630275..e201b5cd 100644
--- a/ruoyi-admin/src/main/resources/templates/system/salesOrder/add.html
+++ b/ruoyi-admin/src/main/resources/templates/system/salesOrder/add.html
@@ -343,27 +343,83 @@
{ title: '对外售价',field: 'materialSole',editable: true},
{title: '国内税率',field: 'countTax',align: 'center',editable: {type: 'text',mode: 'inline',},},
{ title: '美元汇率',field: 'usdTax', align: 'center',editable: {type: 'text',mode: 'inline', }},
- {field: 'materialNum',align: 'center',title: '物料的数量',editable: {type: 'text',mode: 'inline', }},
- { title: '物料的不含税单价(RMB)', field: 'materialNoRmb',align: 'center',
- editable: {
- type: 'text', mode: 'inline', // 同样设定为行内编辑模式
- enabled: function() {return ($("#commonCurrency_add").val() === '1');},
- options: {placeholder: '请输入USD单价...',maxlength: 10}
+ { title: '物料的不含税单价(RMB)',
+ field: 'materialNoRmb',
+ align: 'center',
+ editable:{
+ type: 'text', // 使用'text'类型,因为我们需自定义验证小数
+ mode: 'inline',
+ enabled: function() {
+ return ($("#commonCurrency_add").val() === '1'); // 当货币类型为2时启用
+ },
+ title: '物料的不含税单价(RMB)',
+ validate: function(value) {
+ // 验证是否为空
+ if (!value) {
+ return '金额不能为空';
+ }
+ // 尝试转换为浮点数并检查是否成功
+ var num = parseFloat(value);
+ if (isNaN(num)) {
+ return '请输入有效的数字';
+ }
+ // 检查小数点后是否有超过两位的数字
+ var decimalPart = num.toString().split('.')[1]; // 获取小数部分
+ if (decimalPart && decimalPart.length > 2) {
+ return '请输入精确到小数点后两位的数字';
+ }
+ }
}
},
- {title: '物料的不含税单价(美元)',field: 'materialNoUsd',align: 'center',
+ { title: '物料的含税单价(RMB)',field: 'materialRmb',align: 'center',},
+ {field: 'materialNum',align: 'center',title: '物料的数量',
+ editable:{
+ type : 'text',
+ mode: 'inline',
+ title : '物料的数量',
+ validate : function(value) {
+ if (!value) {
+ return '用量不能为空';
+ }
+ if (isNaN(value)) {
+ return '用量必须为数字';
+ }
+ }
+ },
+ },
+ {title: '物料的不含税总价(RMB)',field: 'materialNoRmbSum',align: 'center',},
+ { title: '物料的含税总价(RMB)',field: 'materialRmbSum',align: 'center',},
+ {title: '物料的不含税单价(美元)',
+ field: 'materialNoUsd',
+ align: 'center',
editable: {
- type: 'text', mode: 'inline', // 同样设定为行内编辑模式
- enabled: function() {return ($("#commonCurrency_add").val() === '2'); },
- options: {placeholder: '请输入USD单价...', maxlength: 10}
+ type: 'text', // 使用'text'类型,因为我们需自定义验证小数
+ mode: 'inline',
+ enabled: function() {
+ return ($("#commonCurrency_add").val() === '2'); // 当货币类型为2时启用
+ },
+ title: '物料的不含税单价(美元)',
+ validate: function(value) {
+ // 验证是否为空
+ if (!value) {
+ return '金额不能为空';
+ }
+ // 尝试转换为浮点数并检查是否成功
+ var num = parseFloat(value);
+ if (isNaN(num)) {
+ return '请输入有效的数字';
+ }
+ // 检查小数点后是否有超过两位的数字
+ var decimalPart = num.toString().split('.')[1]; // 获取小数部分
+ if (decimalPart && decimalPart.length > 2) {
+ return '请输入精确到小数点后两位的数字';
+ }
+ }
}
},
{ title: '物料的含税单价(美元)',field: 'materialUsd',align: 'center',},
{ title: '物料的含税总价(美元)',field: 'materialUsdSum', align: 'center',},
{ title: '物料的不含税总价(美元)',field: 'materialNoUsdSum',align: 'center',},
- { title: '物料的含税单价(RMB)',field: 'materialRmb',align: 'center',},
- { title: '物料的含税总价(RMB)',field: 'materialNoRmbSum', align: 'center',},
- {title: '物料的不含税总价(RMB)',field: 'materialRmbSum',align: 'center',},
{ title: '计划交付时间',field: 'deliveryTime',align: 'center',editable: {type: 'date',title: '计划交付时间',} },
{title: '质保天数',align: 'center',field: 'expiryDay',
editable: {
@@ -384,7 +440,7 @@
{title: '操作', align: 'center',
formatter: function (value, row, index) {
var actions = [];
- actions.push('删除 ');
+ actions.push('删除 ');
return actions.join('');
}
}
@@ -424,6 +480,24 @@
},
};
$.table.init(options);
+
+ // 初始化表格
+ var bootstrapSubTableQuoteChild = $('#bootstrap-sub-table-order').bootstrapTable(options);
+ // 添加编辑保存事件监听器
+ 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');
+
selectBuniesessMembers();
});
@@ -602,7 +676,7 @@
countTax: $("#taxRate_add").val(),
usdTax: $("#usdTax_add").val(),
materialSole: "",
- materialNum: 1,
+ materialNum: "",
materialNoRmb: 0.00,
materialNoUsd: 0.00,
materialRmb: 0.00,
@@ -626,9 +700,15 @@
return;
}
if ($("#taxRate_add").val() == null || $("#taxRate_add").val() == '') {
- $.modal.alertWarning("请先选择输入国内的税率");
+ $.modal.alertWarning("请输入国内的税率");
+ return;
+ }
+
+ if ($("#usdTax_add").val() == null || $("#usdTax_add").val() == '') {
+ $.modal.alertWarning("请输入美元的汇率");
return;
}
+
var url = ctx + "erp/material/select";
var options = {
title: '选择料号',
@@ -638,14 +718,13 @@
$.modal.openOptions(options);
}
/* 删除指定表格行 */
- function removeRow(rowIndex){
- $('.delete-btn').click(function() {
- var rowId = $(this).data('id'); // 获取点击按钮的data-id值
- $(this).closest('tr').remove();
- $("#bootstrap-sub-table-editOrder1").bootstrapTable('remove', {index:rowIndex});
- $("#bootstrap-sub-table-editOrder1").bootstrapTable('refresh');
- });
+ function removeRow(materialCode){
+ $("#bootstrap-sub-table-order").bootstrapTable('remove', {
+ field: 'materialCode',
+ values: materialCode
+ })
}
+
function getTotalAmount(){
let getData = $("#bootstrap-sub-table-order").bootstrapTable('getData', true);
var enterprise = 0;