diff --git a/app/admin/apis/inventorymanage/allot.go b/app/admin/apis/inventorymanage/allot.go index 93e3eef..5b93443 100644 --- a/app/admin/apis/inventorymanage/allot.go +++ b/app/admin/apis/inventorymanage/allot.go @@ -119,7 +119,7 @@ func InventoryAllotAudit(c *gin.Context) { err := models.AuditAllotInventory(req, c) if err != nil { - app.Error(c, http.StatusInternalServerError, err, "审核失败:"+err.Error()) + app.Error(c, http.StatusInternalServerError, err, "审核失败:"+err.Error()) return } diff --git a/app/admin/apis/inventorymanage/change.go b/app/admin/apis/inventorymanage/change.go index 34a954b..96ec865 100644 --- a/app/admin/apis/inventorymanage/change.go +++ b/app/admin/apis/inventorymanage/change.go @@ -123,7 +123,7 @@ func InventoryChangeAudit(c *gin.Context) { err := models.AuditChangeInventory(req, c) if err != nil { - app.Error(c, http.StatusInternalServerError, err, "审核失败:"+err.Error()) + app.Error(c, http.StatusInternalServerError, err, "审核失败:"+err.Error()) return } diff --git a/app/admin/apis/inventorymanage/product.go b/app/admin/apis/inventorymanage/product.go index c444a42..b73f019 100644 --- a/app/admin/apis/inventorymanage/product.go +++ b/app/admin/apis/inventorymanage/product.go @@ -118,7 +118,7 @@ func ProductInventoryAudit(c *gin.Context) { err := models.AuditProductInventory(req, c) if err != nil { - app.Error(c, http.StatusInternalServerError, err, "审核失败:"+err.Error()) + app.Error(c, http.StatusInternalServerError, err, "审核失败:"+err.Error()) return } diff --git a/app/admin/apis/purchasemanage/purchase.go b/app/admin/apis/purchasemanage/purchase.go index af450dd..4ec67eb 100644 --- a/app/admin/apis/purchasemanage/purchase.go +++ b/app/admin/apis/purchasemanage/purchase.go @@ -372,6 +372,10 @@ func ErpPurchaseAudit(c *gin.Context) { app.Error(c, http.StatusInternalServerError, err, "取消审核失败:[已终止]订单不能取消") return } else { + if model.IsMonthEndClosed(*erpPurchaseOrder.AuditTime) { + app.Error(c, http.StatusInternalServerError, errors.New("反审核失败,财务已月结"), "反审核失败,财务已月结") + return + } orderState = model.ErpPurchaseOrderUnAudit // 更新库存信息 err = model.CancelAuditUpdateStock(begin, erpPurchaseOrder) diff --git a/app/admin/models/inventory_allot.go b/app/admin/models/inventory_allot.go index eafd79c..62b4027 100644 --- a/app/admin/models/inventory_allot.go +++ b/app/admin/models/inventory_allot.go @@ -596,6 +596,9 @@ func AuditAllotInventory(req *InventoryAllotAuditReq, c *gin.Context) error { if inventoryAllotOrder.State == ErpInventoryAllotOrderUnAudit { // 订单未审核 return errors.New("订单是未审核状态,无需取消审核") } + if IsMonthEndClosed(*inventoryAllotOrder.AuditTime) { + return errors.New("财务已月结") + } // 更新商品的库存状态 err = cancelAllotAuditAndUpdateStock(begin, inventoryAllotOrder) if err != nil { diff --git a/app/admin/models/inventory_change.go b/app/admin/models/inventory_change.go index f466eaa..38c54b0 100644 --- a/app/admin/models/inventory_change.go +++ b/app/admin/models/inventory_change.go @@ -573,6 +573,9 @@ func AuditChangeInventory(req *InventoryChangeAuditReq, c *gin.Context) error { if inventoryChangeOrder.State == ErpInventoryChangeOrderUnAudit { // 订单未审核 return errors.New("订单是未审核状态,无需取消审核") } + if IsMonthEndClosed(*inventoryChangeOrder.AuditTime) { + return errors.New("财务已月结") + } orderState = ErpInventoryChangeOrderUnAudit default: logger.Error("order err, req.State is:", logger.Field("req.State", req.State)) diff --git a/app/admin/models/inventory_product.go b/app/admin/models/inventory_product.go index add47bc..747a1db 100644 --- a/app/admin/models/inventory_product.go +++ b/app/admin/models/inventory_product.go @@ -485,6 +485,9 @@ func AuditProductInventory(req *ProductInventoryAuditReq, c *gin.Context) error if inventoryProductOrder.State == ErpInventoryProductOrderUnAudit { // 订单未审核 return errors.New("订单是未审核状态,无需取消审核") } + if IsMonthEndClosed(*inventoryProductOrder.AuditTime) { + return errors.New("财务已月结") + } // 退库-更新库存信息 err = cancelProductAuditAndUpdateStock(begin, inventoryProductOrder) if err != nil { diff --git a/app/admin/models/month_end_closing.go b/app/admin/models/month_end_closing.go index dcbc6c7..508d406 100644 --- a/app/admin/models/month_end_closing.go +++ b/app/admin/models/month_end_closing.go @@ -304,3 +304,27 @@ type ErpMonthEndClosingAuditReq struct { type ErpMonthEndClosingDateResp struct { StartDate string `json:"start_date"` // 月结开始时间 } + +// IsMonthEndClosed 判断当前日期是否已月结 +func IsMonthEndClosed(date time.Time) bool { + // 获取当前月份的第一天 + firstDayOfMonth := time.Date(date.Year(), date.Month(), 1, 0, 0, 0, 0, date.Location()) + + // 查询已月结的记录,找到最新的月结记录 + var erpMonthEndOrder ErpMonthEndClosing + err := orm.Eloquent.Table("erp_month_end_closing"). + Where("closing_end_date >= ? AND state = ?", firstDayOfMonth, ErpMonthEndClosingAudited). + Order("closing_end_date desc"). + First(&erpMonthEndOrder).Error + if err != nil { + // 如果没有找到已月结记录,直接返回 false + if err == RecordNotFound { + return false + } + logger.Error("Query month end closing record error:", logger.Field("err", err)) + return false + } + + // 判断传入的时间是否早于已月结记录的截止日期 + return date.Before(erpMonthEndOrder.ClosingEndDate) +}