diff --git a/oms_web/oms_vue/src/api/finance/invoice.js b/oms_web/oms_vue/src/api/finance/invoice.js index f619ffba..1151753d 100644 --- a/oms_web/oms_vue/src/api/finance/invoice.js +++ b/oms_web/oms_vue/src/api/finance/invoice.js @@ -5,7 +5,10 @@ import {tansParams} from "@/utils/ruoyi" export function listInvoice(query) { return request({ url: '/finance/invoice/list', - method: 'get', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, params: query }) } @@ -90,3 +93,35 @@ export function revokeInvoice(id) { method: 'delete' }) } + +// 查询开票审批列表 +export function listInvoiceApprove(query) { + return request({ + url: '/finance/invoice/approve/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: query + }) +} + +// 查询已审批开票列表 +export function listInvoiceApproved(query) { + return request({ + url: '/finance/invoice/approved/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: query + }) +} + +// 查询开票单详细 +export function getInvoiceDetail(id) { + return request({ + url: '/finance/invoice/' + id, + method: 'get' + }) +} diff --git a/oms_web/oms_vue/src/router/index.js b/oms_web/oms_vue/src/router/index.js index eed3f62a..f63afeba 100644 --- a/oms_web/oms_vue/src/router/index.js +++ b/oms_web/oms_vue/src/router/index.js @@ -119,6 +119,11 @@ export const constantRoutes = [ component: () => import('@/views/approve/finance/receiptRefound/approved/index.vue'), hidden: true }, + { + path: 'receivableInvoiceLog', + component: () => import('@/views/approve/finance/receivableInvoice/approved/index.vue'), + hidden: true + }, ] }, { diff --git a/oms_web/oms_vue/src/views/approve/finance/receipt/components/ReceiptDetail.vue b/oms_web/oms_vue/src/views/approve/finance/receipt/components/ReceiptDetail.vue index 7511e2ae..c1aee931 100644 --- a/oms_web/oms_vue/src/views/approve/finance/receipt/components/ReceiptDetail.vue +++ b/oms_web/oms_vue/src/views/approve/finance/receipt/components/ReceiptDetail.vue @@ -63,6 +63,8 @@ + + diff --git a/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/components/ReceivableInvoiceDetail.vue b/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/components/ReceivableInvoiceDetail.vue new file mode 100644 index 00000000..44166a92 --- /dev/null +++ b/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/components/ReceivableInvoiceDetail.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/index.vue b/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/index.vue new file mode 100644 index 00000000..5d50bfab --- /dev/null +++ b/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/index.vue @@ -0,0 +1,298 @@ + + + + + diff --git a/oms_web/oms_vue/src/views/finance/invoice/components/ApplyInvoice.vue b/oms_web/oms_vue/src/views/finance/invoice/components/ApplyInvoice.vue index 6934e2b3..b19118af 100644 --- a/oms_web/oms_vue/src/views/finance/invoice/components/ApplyInvoice.vue +++ b/oms_web/oms_vue/src/views/finance/invoice/components/ApplyInvoice.vue @@ -84,57 +84,70 @@
- + - + - + + + + @@ -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 @@ - - - + + + + - - + + @@ -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