@@ -193,7 +206,7 @@ export default {
loading: false,
companyOptions: [],
form: {
- invoiceType: this.rowData.invoiceType || '-',
+ invoiceType: this.rowData.invoiceType || '2',
buyerName: undefined,
buyerCreditCode: undefined,
buyerBank: undefined,
@@ -204,7 +217,7 @@ export default {
sellerBankAccount: undefined,
remark: undefined,
invoiceBillCode: this.rowData.invoiceBillCode,
- detailList: [
+ detailItemList: [
{
projectName: '',
productModel: '',
@@ -231,7 +244,7 @@ export default {
computed: {
totalAmountNumber() {
let total = 0;
- this.form.detailList.forEach(item => {
+ this.form.detailItemList.forEach(item => {
const amount = parseFloat(item.amount) || 0;
const tax = parseFloat(item.taxAmount) || 0;
total += (amount + tax);
@@ -263,7 +276,7 @@ export default {
},
reset() {
this.form = {
- invoiceType: 'ELECTRONIC',
+ invoiceType: '2',
buyerName: undefined,
buyerCreditCode: undefined,
buyerBank: undefined,
@@ -273,7 +286,7 @@ export default {
sellerBank: undefined,
sellerBankAccount: undefined,
remark: undefined,
- detailList: []
+ detailItemList: []
};
this.resetForm("form");
},
@@ -283,7 +296,7 @@ export default {
this.form.buyerCreditCode = this.rowData.buyerCreditCode ;
this.form.buyerBank = this.rowData.buyerBank ;
this.form.buyerBankAccount = this.rowData.buyerBankAccount ;
-
+
if (this.rowData.sellerName) {
this.form.sellerName = this.rowData.sellerName;
this.form.sellerCreditCode = this.rowData.sellerCreditCode;
@@ -302,18 +315,23 @@ export default {
if (this.rowData.invoiceBillCode) {
getInvoiceProducts(this.rowData.invoiceBillCode).then(response => {
if (response.data && response.data.length > 0) {
- this.form.detailList = response.data.map(item => {
+ this.form.detailItemList = response.data.map(item => {
const row = {
projectName: item.projectName,
+ id: item.id,
+ orderCode: item.orderCode,
+ productCode: item.productCode,
productModel: item.productModel, // Mapping projectCode to productModel as requested
+ productName: item.productName, // Mapping projectCode to productModel as requested
+ unit: item.unit || '',
quantity: item.quantity,
unitPrice: item.price, // Mapping price to unitPrice
taxRate: item.taxRate,
- amount: '',
- taxAmount: ''
+ amount: item.allPrice,
+ taxAmount: item.taxAmount
};
// Calculate initial amounts
- this.calculateAmount(row);
+ // this.calculateAmount(row);
return row;
});
} else {
@@ -345,7 +363,7 @@ export default {
this.$emit("update:visible", false);
},
addDetailRow() {
- this.form.detailList.push({
+ this.form.detailItemList.push({
projectName: '',
productModel: '',
unit: '',
@@ -357,9 +375,12 @@ export default {
});
},
removeDetailRow(index) {
- this.form.detailList.splice(index, 1);
+ this.form.detailItemList.splice(index, 1);
},
calculateAmount(row) {
+ if (row.productCode){
+ return
+ }
if (row.unitPrice && row.quantity) {
row.amount = this.$calc.mul(row.unitPrice, row.quantity);
this.calculateTax(row);
@@ -381,7 +402,7 @@ export default {
if (column.property === 'amount' || column.property === 'taxAmount') {
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
- sums[index] = values.reduce((prev, curr) => {
+ const sum = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
@@ -389,7 +410,7 @@ export default {
return prev;
}
}, 0);
- sums[index] = sums[index].toFixed(2);
+ sums[index] = '¥' + sum.toFixed(2);
} else {
sums[index] = '';
}
@@ -402,6 +423,22 @@ export default {
handleSubmit() {
this.$refs["form"].validate(valid => {
if (valid) {
+ // 校验表格明细
+ if (this.form.detailItemList.length === 0) {
+ this.$modal.msgError("请至少添加一条开票明细");
+ return;
+ }
+ for (let i = 0; i < this.form.detailItemList.length; i++) {
+ const item = this.form.detailItemList[i];
+
+ if (!item.productName || !item.productModel || (item.quantity??false) || !item.unit || !item.unitPrice || !item.amount || !item.taxAmount || !item.taxRate) {
+ this.$modal.msgError(`表格第 ${i + 1} 行数据不完整,请填写所有必填字段`);
+ return;
+ }
+ item.invoiceBillCode=this.rowData.invoiceBillCode;
+ item.price=item.unitPrice;
+ item.allPrice=item.amount;
+ }
this.loading = true;
applyInvoice(this.form).then(response => {
this.$modal.msgSuccess("申请提交成功");
@@ -526,7 +563,7 @@ export default {
}
.invoice-type-select {
- width: 150px;
+ width: 160px;
}
/* Hide select border to blend in */
@@ -741,4 +778,9 @@ export default {
border: none;
resize: none;
}
+
+.invoice-table ::v-deep .el-table__body-wrapper {
+ height: 250px;
+ overflow-y: auto;
+}
diff --git a/oms_web/oms_vue/src/views/finance/invoice/components/InvoiceDialog.vue b/oms_web/oms_vue/src/views/finance/invoice/components/InvoiceDialog.vue
index e78264e3..abd28abe 100644
--- a/oms_web/oms_vue/src/views/finance/invoice/components/InvoiceDialog.vue
+++ b/oms_web/oms_vue/src/views/finance/invoice/components/InvoiceDialog.vue
@@ -342,7 +342,7 @@ export default {
invoicePriceWithTax: '',
invoicePriceWithoutTax: '',
invoiceAmount: '',
- invoiceType: '',
+ invoiceType: this.invoiceData.invoiceType,
remark: '',
file: null
};
diff --git a/oms_web/oms_vue/src/views/finance/invoice/components/InvoiceInfoView.vue b/oms_web/oms_vue/src/views/finance/invoice/components/InvoiceInfoView.vue
new file mode 100644
index 00000000..8dbd43f3
--- /dev/null
+++ b/oms_web/oms_vue/src/views/finance/invoice/components/InvoiceInfoView.vue
@@ -0,0 +1,387 @@
+
+
+
+
+
diff --git a/oms_web/oms_vue/src/views/finance/invoice/index.vue b/oms_web/oms_vue/src/views/finance/invoice/index.vue
index 1d3bc670..fcd2999e 100644
--- a/oms_web/oms_vue/src/views/finance/invoice/index.vue
+++ b/oms_web/oms_vue/src/views/finance/invoice/index.vue
@@ -1,6 +1,6 @@
-
+
-
+
-
+
-
+
-
+
@@ -56,8 +56,8 @@
/>
-
-
+
+
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
搜索
重置
@@ -134,15 +134,16 @@
-
-
-
+
+
+
+
{{ $calc.sub(scope.row.totalPriceWithTax, scope.row.totalPriceWithoutTax) }}
-
-
+
+
{{ $calc.sub(scope.row.totalPriceWithTax, scope.row.invoicePriceWithoutTax) }}
@@ -183,7 +184,7 @@
size="mini"
type="text"
icon="el-icon-s-ticket"
- v-show="scope.row.invoiceStatus==='1' &&(scope.row.approveStatus==='0'||scope.row.approveStatus==='3')"
+ v-show="scope.row.invoiceStatus==='1' &&(scope.row.approveStatus==='0')"
@click="handleApplyInvoice(scope.row)"
>申请开票
{
const data = response.data || [];
data.sort((a, b) => new Date(b.createTime) - new Date(a.createTime));
diff --git a/oms_web/oms_vue/src/views/finance/receive/index.vue b/oms_web/oms_vue/src/views/finance/receive/index.vue
index 2f5dfb7d..286de5ac 100644
--- a/oms_web/oms_vue/src/views/finance/receive/index.vue
+++ b/oms_web/oms_vue/src/views/finance/receive/index.vue
@@ -41,9 +41,9 @@
@keyup.enter.native="handleQuery"
/>
-
-
-
+
+
+
@@ -261,9 +261,9 @@ export default {
receiptBillCode: null,
partnerName: null,
receivableBillCode: null,
- receiveBillType: null,
+ receiptBillType: null,
approveStatus: null,
- receiveStatus: null,
+ receiptStatus: null,
approveNode: null,
},
// 日期范围
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OmsInvoiceBillController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OmsInvoiceBillController.java
index 974d8bbd..b217b1c0 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OmsInvoiceBillController.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OmsInvoiceBillController.java
@@ -6,6 +6,7 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.config.flow.ProcessConfig;
+import com.ruoyi.common.enums.ApproveStatusEnum;
import com.ruoyi.sip.domain.OmsFinAttachment;
import com.ruoyi.sip.flowable.service.TodoService;
import com.ruoyi.sip.service.IOmsFinAttachmentService;
@@ -48,37 +49,40 @@ public class OmsInvoiceBillController extends BaseController
* 查询销售开票单列表
*/
@RequiresPermissions("sip:invoiceBill:list")
- @GetMapping("/list")
+ @PostMapping("/list")
public TableDataInfo list(OmsInvoiceBill omsInvoiceBill)
{
startPage();
List list = omsInvoiceBillService.selectOmsInvoiceBillList(omsInvoiceBill);
clearPage();
-// todoService.fillApproveNode(list,
-// Arrays.asList(processConfig.getDefinition().getFiananceInvoice(), processConfig.getDefinition().getFinanceInvoiceRefound())
-// , OmsInvoiceBill::getInvoiceBillCode, (a, b) -> a.setApproveNode(b.get(a.getInvoiceBillCode())));
+ todoService.fillApproveNode(list,
+ Arrays.asList(processConfig.getDefinition().getFinanceInvoiceRefound(), processConfig.getDefinition().getFinanceInvoiceApprove())
+ , OmsInvoiceBill::getInvoiceBillCode,
+ (a, b) -> a.setApproveNode(a.getApproveStatus().equals(ApproveStatusEnum.WAIT_APPROVE.getCode())?b.get(a.getInvoiceBillCode()):"-"));
return getDataTable(list);
}
@PostMapping("/approve/list")
- public TableDataInfo listApprove(@RequestBody OmsInvoiceBill omsInvoiceBill) {
+ public TableDataInfo listApprove(OmsInvoiceBill omsInvoiceBill) {
startPage();
List list = omsInvoiceBillService.listApprove(omsInvoiceBill);
clearPage();
-// todoService.fillApproveNode(list,
-// Arrays.asList(omsInvoiceBill.getProcessKey())
-// , OmsInvoiceBill::getInvoiceBillCode, (a, b) -> a.setApproveNode(b.get(a.getInvoiceBillCode())));
+ todoService.fillApproveNode(list,
+ Arrays.asList(omsInvoiceBill.getProcessKey())
+ , OmsInvoiceBill::getInvoiceBillCode,
+ (a, b) -> a.setApproveNode(a.getApproveStatus().equals(ApproveStatusEnum.WAIT_APPROVE.getCode())?b.get(a.getInvoiceBillCode()):"-"));
return getDataTable(list);
}
@PostMapping("/approved/list")
- public TableDataInfo listApproved(@RequestBody OmsInvoiceBill omsInvoiceBill) {
+ public TableDataInfo listApproved( OmsInvoiceBill omsInvoiceBill) {
startPage();
List list = omsInvoiceBillService.listApproved(omsInvoiceBill);
clearPage();
-// todoService.fillApproveNode(list,
-// Arrays.asList(processConfig.getDefinition().getFiananceInvoice(), processConfig.getDefinition().getFinanceInvoiceRefound())
-// , OmsInvoiceBill::getInvoiceBillCode, (a, b) -> a.setApproveNode(b.get(a.getInvoiceBillCode())));
+ todoService.fillApproveNode(list,
+ Arrays.asList(omsInvoiceBill.getProcessKey())
+ , OmsInvoiceBill::getInvoiceBillCode,
+ (a, b) -> a.setApproveNode(b.get(a.getInvoiceBillCode())));
return getDataTable(list);
}
@@ -102,7 +106,12 @@ public class OmsInvoiceBillController extends BaseController
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
- return AjaxResult.success(omsInvoiceBillService.selectOmsInvoiceBillById(id));
+ OmsInvoiceBill data = omsInvoiceBillService.selectOmsInvoiceBillById(id);
+ todoService.fillApproveNode(Collections.singletonList(data),
+ Arrays.asList(processConfig.getDefinition().getFinanceInvoiceRefound(), processConfig.getDefinition().getFinanceInvoiceApprove())
+ , OmsInvoiceBill::getInvoiceBillCode,
+ (a, b) -> a.setApproveNode(a.getApproveStatus().equals(ApproveStatusEnum.WAIT_APPROVE.getCode())?b.get(a.getInvoiceBillCode()):"-"));
+ return AjaxResult.success(data);
}
@RequiresPermissions("sip:invoiceBill:query")
@PostMapping(value = "/apply")
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/InventoryOuter.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/InventoryOuter.java
index 5f6d377e..9249df91 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/InventoryOuter.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/InventoryOuter.java
@@ -86,6 +86,7 @@ public class InventoryOuter extends BaseEntity
// @Excel(name = "发货时间选择(0:立即发货 1:自定义)")
private String deliveryTimeType;
private Long warehouseId;
+ private String receivableBillCode;
private List detailList;
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsInvoiceBill.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsInvoiceBill.java
index b6524719..0f59a5fc 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsInvoiceBill.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsInvoiceBill.java
@@ -101,6 +101,7 @@ public class OmsInvoiceBill extends BaseEntity
/** 关联的原始开票单ID */
private Long originalBillId;
+ private String invoiceApplyUser;
private Long approveUser;
private Date applyTime;
private Date todoApproveTime;
@@ -118,7 +119,12 @@ public class OmsInvoiceBill extends BaseEntity
private String sellerBankAccount;
+ private String projectCode;
+ private String projectName;
+
+
private List detailDTOList;
+ private List detailItemList;
public BigDecimal getTaxAmount() {
if (null != totalPriceWithTax && null != totalPriceWithoutTax){
return totalPriceWithTax.subtract(totalPriceWithoutTax);
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsReceivableInvoiceDetailItem.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsReceivableInvoiceDetailItem.java
new file mode 100644
index 00000000..6c896bd2
--- /dev/null
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsReceivableInvoiceDetailItem.java
@@ -0,0 +1,74 @@
+package com.ruoyi.sip.domain;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+
+/**
+ * 应收单开票明细项-发票明细(OmsReceivableInvoiceDetailItem)实体类
+ *
+ * @author ch
+ * @since 2025-12-29 17:00:47
+ */
+@Data
+
+public class OmsReceivableInvoiceDetailItem {
+ /**
+ * 主键
+ */
+
+ private Long id;
+ /**
+ * 开票编号
+ */
+
+ private String invoiceBillCode;
+ /**
+ * 项目名称
+ */
+
+ private String projectName;
+ /**
+ * 合同编号
+ */
+
+ private String orderCode;
+ private String unit;
+ /**
+ * 产品编码
+ */
+ private String productCode;
+ /**
+ * 产品名称
+ */
+ private String productName;
+ /**
+ * 产品型号
+ */
+ private String productModel;
+ /**
+ * 数量
+ */
+ private Long quantity;
+ /**
+ * 单价
+ */
+ private BigDecimal price;
+ /**
+ * 总价
+ */
+ private BigDecimal allPrice;
+ /**
+ * 税额
+ */
+ private BigDecimal taxAmount;
+ /**
+ * 税率
+ */
+ private BigDecimal taxRate;
+
+}
+
+
+
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/dto/InvoiceProductDto.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/dto/InvoiceProductDto.java
index 6816182a..07e76b67 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/dto/InvoiceProductDto.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/dto/InvoiceProductDto.java
@@ -1,6 +1,7 @@
package com.ruoyi.sip.domain.dto;
+import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
@@ -19,16 +20,22 @@ import java.math.BigDecimal;
* 2025/12/22 ch 1.0 Why & What is modified: <修改原因描述> *
*/
@Data
-public class InvoiceProductDto {
+public class InvoiceProductDto extends BaseEntity {
+ private Long id;
private String projectName;
private Long projectId;
private String productName;
private String productCode;
+ private String orderCode;
private String productModel;
private String productDesc;
private Long quantity;
private BigDecimal price;
+ private BigDecimal allPrice;
+ private BigDecimal taxAmount;
private BigDecimal taxRate;
+ private String unit;
+ private String invoiceBillCode;
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/flowable/service/impl/TodoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/flowable/service/impl/TodoServiceImpl.java
index 76fdd695..dc4bd388 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/flowable/service/impl/TodoServiceImpl.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/flowable/service/impl/TodoServiceImpl.java
@@ -450,7 +450,7 @@ public class TodoServiceImpl implements TodoService {
StringBuilder joinQuerySql = new StringBuilder();
StringBuilder joinSql = new StringBuilder();
if ("bu_todo".equals(tableName)){
- joinQuerySql.append( " ,t3.apply_time,t3.process_key,t3.todo_id,t3.task_id");
+ joinQuerySql.append( " ,flow.apply_time,flow.process_key,flow.todo_id,flow.task_id");
joinSql.append(" inner join ( ");
joinSql.append(" select bt.business_key,bt.apply_time,bt.process_key,bt.todo_id,bt.task_id from bu_todo bt where ");
joinSql.append(StrUtil.format(" bt.process_key IN ({})", processKeyList.stream().map(processKey -> "'" + processKey + "'").collect(Collectors.joining(","))));
@@ -460,9 +460,9 @@ public class TodoServiceImpl implements TodoService {
joinSql.append(notInTaskName.stream().map(taskName -> "'" + taskName + "'").collect(Collectors.joining(",")));
joinSql.append(") ");
}
- joinSql.append(") t3 on t3.business_key =");
+ joinSql.append(") flow on flow.business_key =");
}else{
- joinQuerySql.append( " ,t3.apply_time,t3.approve_time as todo_approve_time,t3.process_key ");
+ joinQuerySql.append( " ,flow.apply_time,flow.approve_time as todo_approve_time,flow.process_key ");
joinSql.append(" inner join ( SELECT business_key, max(btc.approve_time) approve_time, max(btc.apply_time) apply_time, max(btc.process_key) process_key FROM bu_todo_completed btc");
joinSql.append(StrUtil.format(" where btc.process_key IN ({})", processKeyList.stream().map(processKey -> "'" + processKey + "'").collect(Collectors.joining(","))));
joinSql.append(" AND btc.approve_user = ").append(approveUser).append(" ");
@@ -471,7 +471,7 @@ public class TodoServiceImpl implements TodoService {
joinSql.append(notInTaskName.stream().map(taskName -> "'" + taskName + "'").collect(Collectors.joining(",")));
joinSql.append(") ");
}
- joinSql.append(" GROUP BY business_key) t3 on t3.business_key = ");
+ joinSql.append(" GROUP BY business_key) flow on flow.business_key = ");
}
joinSql.append(function.get());
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsInvoiceBillMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsInvoiceBillMapper.java
index 558c1dac..32063eeb 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsInvoiceBillMapper.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsInvoiceBillMapper.java
@@ -1,6 +1,7 @@
package com.ruoyi.sip.mapper;
import com.ruoyi.sip.domain.OmsInvoiceBill;
+import com.ruoyi.sip.flowable.domain.FlowRelationDto;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -85,7 +86,7 @@ public interface OmsInvoiceBillMapper
*/
public int updateOmsInvoiceBillByCode(OmsInvoiceBill omsInvoiceBill);
- List listApprove(@Param("entity") OmsInvoiceBill omsInvoiceBill, @Param("tableName") String tableName);
+ List listApprove(@Param("entity") OmsInvoiceBill omsInvoiceBill, @Param("flowRelationDto") FlowRelationDto flowRelationDto);
void clearRelationReceivable(String invoiceBillCode);
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsReceivableInvoiceDetailItemMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsReceivableInvoiceDetailItemMapper.java
new file mode 100644
index 00000000..921e3166
--- /dev/null
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsReceivableInvoiceDetailItemMapper.java
@@ -0,0 +1,52 @@
+package com.ruoyi.sip.mapper;
+
+import com.ruoyi.sip.domain.OmsReceivableInvoiceDetailItem;
+
+import java.util.List;
+
+/**
+ * @Author ch
+ * @Desc 应收单开票明细项-发票明细(OmsReceivableInvoiceDetailItem)表数据库访问层
+ * @Date 2025-12-29 17:00:47
+ */
+public interface OmsReceivableInvoiceDetailItemMapper {
+
+ /**
+ * 通过实体作为筛选条件查询
+ *
+ * @param omsReceivableInvoiceDetailItem 实例对象
+ * @return 对象列表
+ */
+ List queryAll(OmsReceivableInvoiceDetailItem omsReceivableInvoiceDetailItem);
+
+ /**
+ * 根据ID查详情
+ */
+ OmsReceivableInvoiceDetailItem queryById(Long id);
+
+
+ /**
+ * 新增数据
+ */
+ int insert(OmsReceivableInvoiceDetailItem omsReceivableInvoiceDetailItem);
+
+
+ /**
+ * 修改数据
+ */
+ int update(OmsReceivableInvoiceDetailItem omsReceivableInvoiceDetailItem);
+
+ /**
+ * 通过主键删除数据
+ */
+ int deleteById(Long id);
+
+ /**
+ * 通过id批量删除应收单开票明细项-发票明细
+ */
+ int batchRemove(Long[] ids);
+
+ int insertBatch(List omsReceivableInvoiceDetailItems);
+
+ void updateBatch(List updateList);
+}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsReceivableInvoiceDetailItemService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsReceivableInvoiceDetailItemService.java
new file mode 100644
index 00000000..499a23a3
--- /dev/null
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsReceivableInvoiceDetailItemService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.sip.service;
+
+import com.ruoyi.sip.domain.OmsReceivableInvoiceDetailItem;
+
+import java.util.List;
+
+/**
+ * @Author ch
+ * @Desc 应收单开票明细项-发票明细(OmsReceivableInvoiceDetailItem)表服务接口
+ * @Date 2025-12-29 17:00:47
+ */
+public interface IOmsReceivableInvoiceDetailItemService {
+
+ /**
+ * 通过实体作为筛选条件查询
+ */
+ List queryAll(OmsReceivableInvoiceDetailItem omsReceivableInvoiceDetailItem);
+
+
+ /**
+ * 根据ID查详情
+ */
+ OmsReceivableInvoiceDetailItem queryById(Long id);
+
+ /**
+ * 新增数据
+ */
+ int insert(OmsReceivableInvoiceDetailItem omsReceivableInvoiceDetailItem);
+ void saveBatch(List omsReceivableInvoiceDetailItems);
+
+ /**
+ * 修改数据
+ */
+ int update(OmsReceivableInvoiceDetailItem omsReceivableInvoiceDetailItem);
+
+ /**
+ * 通过主键删除数据
+ */
+ int deleteById(Long id);
+
+ /**
+ * 通过id批量删除应收单开票明细项-发票明细
+ */
+ int batchRemove(Long[] ids);
+
+}
+
+
+
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInvoiceBillServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInvoiceBillServiceImpl.java
index dfb47056..37737c24 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInvoiceBillServiceImpl.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInvoiceBillServiceImpl.java
@@ -9,6 +9,7 @@ import java.util.stream.Collectors;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
+import com.ruoyi.common.config.flow.ProcessConfig;
import com.ruoyi.common.enums.ApproveStatusEnum;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
@@ -21,6 +22,7 @@ import com.ruoyi.sip.dto.WriteOffInvoiceRequestDto;
import com.ruoyi.sip.flowable.domain.Todo;
import com.ruoyi.sip.service.*;
import org.flowable.engine.runtime.ProcessInstance;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -66,7 +68,11 @@ public class OmsInvoiceBillServiceImpl implements IOmsInvoiceBillService, TodoCo
@Lazy
private IOmsReceivableInvoiceWriteOffService writeOffService;
+ @Autowired
+ private IOmsReceivableInvoiceDetailItemService detailItemService;
+ @Autowired
+ private ProcessConfig processConfig;
/**
* 查询销售开票单
@@ -81,7 +87,10 @@ public class OmsInvoiceBillServiceImpl implements IOmsInvoiceBillService, TodoCo
// 如果需要关联查询其他数据,可以在这里添加
List receiptDetailDTOS = detailService.listReceivableByInvoiceBillCode(omsInvoiceBill.getInvoiceBillCode());
omsInvoiceBill.setDetailDTOList(receiptDetailDTOS);
-
+ OmsReceivableInvoiceDetailItem queryItem = new OmsReceivableInvoiceDetailItem();
+ queryItem.setInvoiceBillCode(omsInvoiceBill.getInvoiceBillCode());
+ List omsReceivableInvoiceDetailItems = detailItemService.queryAll(queryItem);
+ omsInvoiceBill.setDetailItemList(omsReceivableInvoiceDetailItems);
return omsInvoiceBill;
}
@@ -222,7 +231,13 @@ public class OmsInvoiceBillServiceImpl implements IOmsInvoiceBillService, TodoCo
@Override
public List listApprove(OmsInvoiceBill omsInvoiceBill) {
omsInvoiceBill.setApproveUser(ShiroUtils.getUserId());
- return omsInvoiceBillMapper.listApprove(omsInvoiceBill, "bu_todo");
+ return omsInvoiceBillMapper.listApprove(omsInvoiceBill, todoService.getFlowRelationSql("bu_todo",
+ Arrays.asList(omsInvoiceBill.getProcessKey()),
+ ShiroUtils.getUserId(),
+ Collections.singletonList("商务"),
+ ()->{
+ return "t1.invoice_bill_code";
+ }));
}
/**
@@ -234,7 +249,13 @@ public class OmsInvoiceBillServiceImpl implements IOmsInvoiceBillService, TodoCo
@Override
public List listApproved(OmsInvoiceBill omsInvoiceBill) {
omsInvoiceBill.setApproveUser(ShiroUtils.getUserId());
- return omsInvoiceBillMapper.listApprove(omsInvoiceBill, "bu_todo_completed");
+ return omsInvoiceBillMapper.listApprove(omsInvoiceBill, todoService.getFlowRelationSql("bu_todo_completed",
+ Arrays.asList(omsInvoiceBill.getProcessKey()),
+ ShiroUtils.getUserId(),
+ Collections.singletonList("商务"),
+ ()->{
+ return "t1.invoice_bill_code";
+ }));
}
/**
@@ -353,6 +374,17 @@ public class OmsInvoiceBillServiceImpl implements IOmsInvoiceBillService, TodoCo
@Override
public List listProduct(String code) {
+ OmsReceivableInvoiceDetailItem omsReceivableInvoiceDetailItem = new OmsReceivableInvoiceDetailItem();
+ omsReceivableInvoiceDetailItem.setInvoiceBillCode(code);
+ List omsReceivableInvoiceDetailItems = detailItemService.queryAll(omsReceivableInvoiceDetailItem);
+ if (CollUtil.isNotEmpty(omsReceivableInvoiceDetailItems)){
+ return omsReceivableInvoiceDetailItems.stream().map(item -> {
+ InvoiceProductDto invoiceProductDto = new InvoiceProductDto();
+ BeanUtils.copyProperties(item, invoiceProductDto);
+ return invoiceProductDto;
+ }).collect(Collectors.toList());
+ }
+
List inventoryOuters = outerService.listByInvoiceBillCode(code);
if (CollUtil.isEmpty(inventoryOuters)){
return Collections.emptyList();
@@ -365,11 +397,17 @@ public class OmsInvoiceBillServiceImpl implements IOmsInvoiceBillService, TodoCo
Map> priceMap = projectProductInfos.stream().collect(Collectors.groupingBy(ProjectProductInfo::getProjectId,
Collectors.toMap(ProjectProductInfo::getProductBomCode, Function.identity() , (v1, v2) -> v1))
);
+ List receiptDetailDTOS = detailService.listReceivableByInvoiceBillCode(code);
+
+ Map detailMap = receiptDetailDTOS.stream().collect(Collectors.toMap(ReceiptDetailDTO::getReceivableBillCode, ReceiptDetailDTO::getReceiptAmount));
+
return inventoryOuters.stream().map(inventoryOuter -> {
InvoiceProductDto invoiceProductDto = new InvoiceProductDto();
+ invoiceProductDto.setAllPrice(detailMap.getOrDefault(inventoryOuter.getReceivableBillCode(), BigDecimal.ZERO));
invoiceProductDto.setProductCode(inventoryOuter.getProductCode());
- invoiceProductDto.setQuantity(inventoryOuter.getQuantity());
+ invoiceProductDto.setOrderCode(inventoryOuter.getOrderCode());
+
invoiceProductDto.setProjectName(inventoryOuter.getProjectName());
invoiceProductDto.setProjectId(inventoryOuter.getProjectId());
Map productInfoMap = priceMap.get(inventoryOuter.getProjectId());
@@ -379,10 +417,13 @@ public class OmsInvoiceBillServiceImpl implements IOmsInvoiceBillService, TodoCo
invoiceProductDto.setProductModel(productInfo.getModel());
invoiceProductDto.setProductName(productInfo.getProductName());
invoiceProductDto.setProductDesc(productInfo.getProductDesc());
- invoiceProductDto.setPrice(productInfo.getPrice().divide(
+ invoiceProductDto.setPrice(productInfo.getPrice());
+ BigDecimal allPriceWithoutTax = invoiceProductDto.getAllPrice().divide(
BigDecimal.ONE.add(productInfo.getTaxRate().divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP))
- , 2, RoundingMode.HALF_UP));
+ , 2, RoundingMode.HALF_UP);
+ invoiceProductDto.setTaxAmount(invoiceProductDto.getAllPrice().subtract(allPriceWithoutTax));
invoiceProductDto.setTaxRate(productInfo.getTaxRate());
+ invoiceProductDto.setQuantity(invoiceProductDto.getAllPrice().divide(invoiceProductDto.getPrice(), 0, RoundingMode.HALF_UP).longValue());
}
}
return invoiceProductDto;
@@ -391,8 +432,13 @@ public class OmsInvoiceBillServiceImpl implements IOmsInvoiceBillService, TodoCo
@Override
public AjaxResult applyInvoice(OmsInvoiceBill omsInvoiceBill) {
-// todo 保存detailList
- //todo 开启审批流程
+ detailItemService.saveBatch(omsInvoiceBill.getDetailItemList());
+ todoService.startProcessDeleteBefore(omsInvoiceBill.getInvoiceBillCode(), omsInvoiceBill.getInvoiceBillCode()
+ , new HashMap() {{
+ put("applyUserName", ShiroUtils.getSysUser().getUserName());
+ put("applyUser", ShiroUtils.getUserId());
+ }}
+ , processConfig.getDefinition().getFinanceInvoiceApprove());
omsInvoiceBill.setApproveStatus(ApproveStatusEnum.WAIT_APPROVE.getCode());
omsInvoiceBillMapper.applyInvoice(omsInvoiceBill);
return AjaxResult.success();
@@ -535,6 +581,38 @@ public class OmsInvoiceBillServiceImpl implements IOmsInvoiceBillService, TodoCo
@Override
public boolean todoApproveCallback(Todo todo) {
+
+ if (CollUtil.isEmpty(todo.getVariables())) {
+ return TodoCommonTemplate.super.todoApproveCallback(todo);
+ }
+
+ Integer approveBtn = (Integer) todo.getVariables().get("approveBtn");
+ if (approveBtn == null) {
+ return TodoCommonTemplate.super.todoApproveCallback(todo);
+ }
+ String taskName = todo.getTaskName();
+ String businessKey = todo.getBusinessKey();
+ OmsInvoiceBill invoiceBill = selectOmsInvoiceBillByCode(businessKey);
+ OmsInvoiceBill updateBill = new OmsInvoiceBill();
+ updateBill.setId(invoiceBill.getId());
+ if (approveBtn==0){
+ //驳回
+ updateBill.setApproveStatus(ApproveStatusEnum.APPROVE_REJECT.getCode());
+ updateOmsInvoiceBill(updateBill);
+ }else{
+ //通过
+ if (todo.getProcessKey().equals(processConfig.getDefinition().getFinanceInvoiceApprove()) && taskName.startsWith("财务")){
+ updateBill.setApproveStatus(ApproveStatusEnum.APPROVE_COMPLETE.getCode());
+ updateBill.setApproveTime(new Date());
+ updateOmsInvoiceBill(updateBill);
+ } else if(todo.getProcessKey().equals(processConfig.getDefinition().getFinanceInvoiceRefound()) && taskName.startsWith("财务")){
+ updateBill.setApproveStatus(ApproveStatusEnum.APPROVE_COMPLETE.getCode());
+ updateBill.setApproveTime(new Date());
+ updateOmsInvoiceBill(updateBill);
+ }
+ }
+
+
return TodoCommonTemplate.super.todoApproveCallback(todo);
}
@@ -542,30 +620,5 @@ public class OmsInvoiceBillServiceImpl implements IOmsInvoiceBillService, TodoCo
public boolean multiInstanceApproveCallback(String activityName, ProcessInstance processInstance) {
return TodoCommonTemplate.super.multiInstanceApproveCallback(activityName, processInstance);
}
-// @Override
-// public String getBusinessKey() {
-// return "invoiceBillCode";
-// }
-//
-// @Override
-// public void reject(String businessKey) {
-// OmsInvoiceBill omsInvoiceBill = new OmsInvoiceBill();
-// omsInvoiceBill.setInvoiceBillCode(businessKey);
-// omsInvoiceBill.setApproveStatus(ApproveStatusEnum.APPROVE_REJECT.getCode());
-// omsInvoiceBillMapper.updateOmsInvoiceBillByCode(omsInvoiceBill);
-// }
-//
-// @Override
-// public void approve(String businessKey) {
-// OmsInvoiceBill omsInvoiceBill = new OmsInvoiceBill();
-// omsInvoiceBill.setInvoiceBillCode(businessKey);
-// omsInvoiceBill.setApproveStatus(ApproveStatusEnum.APPROVE_COMPLETE.getCode());
-// omsInvoiceBill.setInvoiceStatus(OmsInvoiceBill.InvoiceStatusEnum.INVOICE.getCode());
-// omsInvoiceBill.setApproveTime(DateUtils.getNowDate());
-// omsInvoiceBillMapper.updateOmsInvoiceBillByCode(omsInvoiceBill);
-//
-// OmsInvoiceBill existBill = selectOmsInvoiceBillByCode(businessKey);
-// // 如果需要更新关联的应收单状态,可以在这里添加逻辑
-// // omsReceivableBillService.updateInvoiceAmount(existBill.getReceivableBillCode(), existBill.getTotalPriceWithTax());
-// }
+
}
\ No newline at end of file
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsReceivableInvoiceDetailItemServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsReceivableInvoiceDetailItemServiceImpl.java
new file mode 100644
index 00000000..8eed8b82
--- /dev/null
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsReceivableInvoiceDetailItemServiceImpl.java
@@ -0,0 +1,84 @@
+package com.ruoyi.sip.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.ruoyi.sip.domain.OmsReceivableInvoiceDetailItem;
+import com.ruoyi.sip.mapper.OmsReceivableInvoiceDetailItemMapper;
+import com.ruoyi.sip.service.IOmsReceivableInvoiceDetailItemService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Author ch
+ * @Desc 应收单开票明细项-发票明细(OmsReceivableInvoiceDetailItem)表服务实现类
+ * @Date 2025-12-29 17:00:47
+ */
+
+@Service
+public class OmsReceivableInvoiceDetailItemServiceImpl implements IOmsReceivableInvoiceDetailItemService {
+
+ @Resource
+ private OmsReceivableInvoiceDetailItemMapper omsReceivableInvoiceDetailItemMapper;
+
+
+ /**
+ * 查询列表数据
+ *
+ * @param omsReceivableInvoiceDetailItem 实例对象
+ * @return 对象列表
+ */
+ @Override
+ public List queryAll(OmsReceivableInvoiceDetailItem omsReceivableInvoiceDetailItem) {
+ List dataList = omsReceivableInvoiceDetailItemMapper.queryAll(omsReceivableInvoiceDetailItem);
+ return dataList;
+ }
+
+ @Override
+ public OmsReceivableInvoiceDetailItem queryById(Long id) {
+ return omsReceivableInvoiceDetailItemMapper.queryById(id);
+ }
+
+
+ @Override
+ public int insert(OmsReceivableInvoiceDetailItem omsReceivableInvoiceDetailItem) {
+ return omsReceivableInvoiceDetailItemMapper.insert(omsReceivableInvoiceDetailItem);
+ }
+
+ @Override
+ public void saveBatch(List omsReceivableInvoiceDetailItems) {
+ List addList = omsReceivableInvoiceDetailItems.stream().filter(item -> item.getId() == null).collect(Collectors.toList());
+ if (CollUtil.isNotEmpty(addList)){
+ omsReceivableInvoiceDetailItemMapper.insertBatch(omsReceivableInvoiceDetailItems);
+ }
+ List updateList = omsReceivableInvoiceDetailItems.stream().filter(item -> item.getId() != null).collect(Collectors.toList());
+ if (CollUtil.isNotEmpty(updateList)){
+ omsReceivableInvoiceDetailItemMapper.updateBatch(updateList);
+ }
+ }
+
+
+ @Override
+ public int update(OmsReceivableInvoiceDetailItem omsReceivableInvoiceDetailItem) {
+ return omsReceivableInvoiceDetailItemMapper.update(omsReceivableInvoiceDetailItem);
+ }
+
+
+ @Override
+ public int deleteById(Long id) {
+ return omsReceivableInvoiceDetailItemMapper.deleteById(id);
+ }
+
+ /**
+ * 通过id批量删除应收单开票明细项-发票明细
+ */
+ @Override
+ public int batchRemove(Long[] ids) {
+ return omsReceivableInvoiceDetailItemMapper.batchRemove(ids);
+ }
+
+}
+
+
+
diff --git a/ruoyi-sip/src/main/resources/mapper/OmsReceiptBill/OmsReceiptBillMapper.xml b/ruoyi-sip/src/main/resources/mapper/OmsReceiptBill/OmsReceiptBillMapper.xml
index d691593c..b2bcd769 100644
--- a/ruoyi-sip/src/main/resources/mapper/OmsReceiptBill/OmsReceiptBillMapper.xml
+++ b/ruoyi-sip/src/main/resources/mapper/OmsReceiptBill/OmsReceiptBillMapper.xml
@@ -59,8 +59,8 @@
and t1.receipt_bill_code in (
- select t1.receipt_bill_code from oms_payable_ticket_detail t1
- inner join oms_payable_bill t2 on t1.payable_bill_id=t2.id
+ select t1.receipt_bill_code from oms_receivable_receipt_detail t1
+ inner join oms_receivable_bill t2 on t1.receivable_bill_id=t2.id
inner join project_order_info t3 on t2.order_code=t3.order_code
inner join project_info t4 on t3.project_id=t4.id
where t4.project_code = #{projectCode}
@@ -68,15 +68,15 @@
and t1.receipt_bill_code in (
- select t1.receipt_bill_code from oms_payable_ticket_detail t1
- inner join oms_payable_bill t2 on t1.payable_bill_id=t2.id
+ select t1.receipt_bill_code from oms_receivable_receipt_detail t1
+ inner join oms_receivable_bill t2 on t1.receivable_bill_id=t2.id
inner join project_order_info t3 on t2.order_code=t3.order_code
inner join project_info t4 on t3.project_id=t4.id
where t4.project_name like concat('%',#{projectName},'%')
)
- t1.receipt_bill_code in (
+ and t1.receipt_bill_code in (
select receipt_bill_code from oms_receivable_receipt_detail orrd
left join oms_receivable_bill orb on orrd.receivable_bill_id=orb.ID
where orb.receivable_bill_code=#{receivableBillCode}
@@ -154,7 +154,7 @@
and t1.receipt_bill_code in
(
select business_key from bu_todo where approve_user_name like concat('%', #{approveNode}, '%') and process_key in (
- 'finance_ticket_refound','fianance_ticket')
+ 'finance_receipt_approve','finance_receipt_refound')
)
@@ -271,8 +271,8 @@
and t1.receipt_bill_code in (
- select t1.receipt_bill_code from oms_payable_ticket_detail t1
- inner join oms_payable_bill t2 on t1.payable_bill_id=t2.id
+ select t1.receipt_bill_code from oms_receivable_receipt_detail t1
+ inner join oms_receivable_bill t2 on t1.receivable_bill_id=t2.id
inner join project_order_info t3 on t2.order_code=t3.order_code
inner join project_info t4 on t3.project_id=t4.id
where t4.project_code = #{entity.projectCode}
@@ -280,8 +280,8 @@
and t1.receipt_bill_code in (
- select t1.receipt_bill_code from oms_payable_ticket_detail t1
- inner join oms_payable_bill t2 on t1.payable_bill_id=t2.id
+ select t1.receipt_bill_code from oms_receivable_receipt_detail t1
+ inner join oms_receivable_bill t2 on t1.receivable_bill_id=t2.id
inner join project_order_info t3 on t2.order_code=t3.order_code
inner join project_info t4 on t3.project_id=t4.id
where t4.project_name like concat('%',#{entity.projectName},'%')
@@ -332,13 +332,13 @@
- and t3.apply_time between #{entity.params.beginApplyTime} and #{entity.params.endApplyTime}
+ and flow.apply_time between #{entity.params.beginApplyTime} and #{entity.params.endApplyTime}
- and t3.apply_time = ]]> #{entity.params.beginApplyTime}
+ and flow.apply_time = ]]> #{entity.params.beginApplyTime}
- and t3.apply_time #{entity.params.endApplyTime}
+ and flow.apply_time #{entity.params.endApplyTime}
diff --git a/ruoyi-sip/src/main/resources/mapper/OmsReceivableInvoiceDetailItem/OmsReceivableInvoiceDetailItemMapper.xml b/ruoyi-sip/src/main/resources/mapper/OmsReceivableInvoiceDetailItem/OmsReceivableInvoiceDetailItemMapper.xml
new file mode 100644
index 00000000..60ce3c65
--- /dev/null
+++ b/ruoyi-sip/src/main/resources/mapper/OmsReceivableInvoiceDetailItem/OmsReceivableInvoiceDetailItemMapper.xml
@@ -0,0 +1,302 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, invoice_bill_code, project_name, order_code, product_code, product_name, product_model, quantity, price, all_price, tax_amount, tax_rate,unit
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO oms_receivable_invoice_detail_item
+
+
+ invoice_bill_code,
+
+
+ project_name,
+
+
+ order_code,
+
+
+ product_code,
+
+
+ product_name,
+
+
+ product_model,
+
+
+ quantity,
+
+
+ price,
+
+
+ all_price,
+
+
+ tax_amount,
+
+
+ tax_rate,
+
+
+ unit,
+
+
+
+
+ #{invoiceBillCode},
+
+
+ #{projectName},
+
+
+ #{orderCode},
+
+
+ #{productCode},
+
+
+ #{productName},
+
+
+ #{productModel},
+
+
+ #{quantity},
+
+
+ #{price},
+
+
+ #{allPrice},
+
+
+ #{taxAmount},
+
+
+ #{taxRate},
+
+
+ #{unit},
+
+
+
+
+ INSERT INTO oms_receivable_invoice_detail_item
+ (
+ invoice_bill_code,project_name,order_code,product_code,product_name,product_model
+ ,quantity,price,all_price,tax_amount,tax_rate,unit)
+
+
+ values
+ (
+ #{item.invoiceBillCode},
+ #{item.projectName},
+ #{item.orderCode},
+ #{item.productCode},
+ #{item.productName},
+ #{item.productModel},
+ #{item.quantity},
+ #{item.price},
+ #{item.allPrice},
+ #{item.taxAmount},
+ #{item.taxRate},
+ #{item.unit}
+ )
+
+
+
+
+
+ UPDATE oms_receivable_invoice_detail_item
+
+
+ invoice_bill_code = #{invoiceBillCode},
+
+
+ project_name = #{projectName},
+
+
+ order_code = #{orderCode},
+
+
+ product_code = #{productCode},
+
+
+ product_name = #{productName},
+
+
+ product_model = #{productModel},
+
+
+ quantity = #{quantity},
+
+
+ price = #{price},
+
+
+ all_price = #{allPrice},
+
+
+ tax_amount = #{taxAmount},
+
+
+ tax_rate = #{taxRate},
+
+
+ unit = #{unit},
+
+
+ WHERE id = #{id}
+
+
+
+ UPDATE oms_receivable_invoice_detail_item
+
+
+ invoice_bill_code = #{item.invoiceBillCode},
+
+
+ project_name = #{item.projectName},
+
+
+ order_code = #{item.orderCode},
+
+
+ product_code = #{item.productCode},
+
+
+ product_name = #{item.productName},
+
+
+ product_model = #{item.productModel},
+
+
+ quantity = #{item.quantity},
+
+
+ price = #{item.price},
+
+
+ all_price = #{item.allPrice},
+
+
+ tax_amount = #{item.taxAmount},
+
+
+ tax_rate = #{item.taxRate},
+
+
+ unit = #{item.unit},
+
+
+ WHERE id = #{item.id}
+
+
+
+
+
+ DELETE
+ FROM oms_receivable_invoice_detail_item
+ WHERE id = #{id}
+
+
+
+
+ delete from oms_receivable_invoice_detail_item where id in
+
+ #{id}
+
+
+
+
+
+
+
diff --git a/ruoyi-sip/src/main/resources/mapper/inventory/InventoryOuterMapper.xml b/ruoyi-sip/src/main/resources/mapper/inventory/InventoryOuterMapper.xml
index 111adb31..72ae0a4e 100644
--- a/ruoyi-sip/src/main/resources/mapper/inventory/InventoryOuterMapper.xml
+++ b/ruoyi-sip/src/main/resources/mapper/inventory/InventoryOuterMapper.xml
@@ -166,12 +166,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
diff --git a/ruoyi-sip/src/main/resources/mapper/sip/OmsInvoiceBillMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/OmsInvoiceBillMapper.xml
index 826bb827..911febcb 100644
--- a/ruoyi-sip/src/main/resources/mapper/sip/OmsInvoiceBillMapper.xml
+++ b/ruoyi-sip/src/main/resources/mapper/sip/OmsInvoiceBillMapper.xml
@@ -30,6 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
@@ -41,34 +42,62 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- select id, invoice_bill_code, invoice_type, invoice_bill_type,
- invoice_time, partner_code,partner_name, total_price_with_tax, total_price_without_tax,invoice_price_with_tax,invoice_price_without_tax,
- tax_rate, create_by, create_time, update_by, update_time,
- remark, del_flag, actual_invoice_time, invoice_status,
- approve_status, approve_time, refund_status
- , original_bill_id, buyer_name, buyer_credit_code, buyer_bank, buyer_bank_account,
- seller_name, seller_credit_code, seller_bank, seller_bank_account
- from oms_invoice_bill
+ select t1.id, t1.invoice_bill_code, t1.invoice_type, t1.invoice_bill_type,
+ t1.invoice_time, t1.partner_code,t1.partner_name, t1.total_price_with_tax, t1.total_price_without_tax,t1.invoice_price_with_tax,t1.invoice_price_without_tax,
+ t1.tax_rate, t1.create_by, t1.create_time, t1.update_by, t1.update_time,
+ t1.remark, t1.del_flag, t1.actual_invoice_time, t1.invoice_status,
+ t1.approve_status, t1.approve_time, t1.refund_status
+ , t1.original_bill_id, t1.invoice_apply_user, t1.buyer_name, t1.buyer_credit_code, t1.buyer_bank, t1.buyer_bank_account,
+ t1.seller_name, t1.seller_credit_code, t1.seller_bank, t1.seller_bank_account
+ from oms_invoice_bill t1
@@ -250,6 +311,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
seller_bank_account,
+
+ invoice_apply_user,
+
@@ -349,6 +413,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{sellerBankAccount},
+
+ #{invoiceApplyUser},
+
@@ -450,6 +517,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
seller_bank_account = #{sellerBankAccount},
+
+ invoice_apply_user = #{invoiceApplyUser},
+
where id = #{id}
@@ -488,7 +558,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
seller_credit_code = #{sellerCreditCode},
seller_bank = #{sellerBank},
seller_bank_account = #{sellerBankAccount},
- approve_status=#{approveStatus}
+ approve_status=#{approveStatus},
+ invoice_type=#{invoiceType},
+ remark=#{remark}
where invoice_bill_code = #{invoiceBillCode}
@@ -527,17 +599,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
diff --git a/ruoyi-sip/src/main/resources/mapper/sip/OmsReceivableInvoiceDetailMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/OmsReceivableInvoiceDetailMapper.xml
index 0c31fa27..273fc03e 100644
--- a/ruoyi-sip/src/main/resources/mapper/sip/OmsReceivableInvoiceDetailMapper.xml
+++ b/ruoyi-sip/src/main/resources/mapper/sip/OmsReceivableInvoiceDetailMapper.xml
@@ -93,7 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
order by create_time desc