Browse Source

fix(账单): 存在未结算的已出账单或未出账单,财务账号不可更改主用户

likai 4 years ago
parent
commit
5ba2116a91
1 changed files with 25 additions and 0 deletions
  1. 25 0
      service/account/account.go

+ 25 - 0
service/account/account.go

@@ -3,6 +3,7 @@ package account
 import (
 	"dashoo.cn/micro_libary/request"
 	"database/sql"
+	"errors"
 	"fmt"
 	"github.com/gogf/gf/os/gtime"
 	dao "lims_adapter/dao/account"
@@ -33,6 +34,30 @@ func (s AccountService) Save(req *account.BaseAccount, user request.UserInfo) er
 		req.CreateUserId = int(user.Id)
 		req.CreateBy = user.RealName
 		req.CreateOn = now
+	} else {
+		var original account.BaseAccount
+		err := s.Dao.Where("Id=?", req.Id).Scan(&original)
+		if err != nil {
+			return err
+		}
+		if req.MainUserId != original.MainUserId { // 更换了主用户,需要进行校验
+			count, err := s.Dao.DB.Model("settle_account_bill").Where(fmt.Sprintf("(Status='0' OR Status='1') AND AccountId='%v'", original.Id)).Count()
+			if err != nil {
+				return err
+			}
+			if count > 0 {
+				return errors.New("该主用户存在未结算的已出账单,不可更改")
+			}
+
+			// 该主用户存在未结算的未出账单(判断的是该主用户所有的账号)
+			count, err = s.Dao.DB.Model("settle_account_main").Where(fmt.Sprintf("AccountStatus<>'1' AND MainUserId='%v'", original.MainUserId)).Count()
+			if err != nil {
+				return err
+			}
+			if count > 0 {
+				return errors.New("该主用户存在未结算的未出账单,不可更改")
+			}
+		}
 	}
 	req.UpdateUserId = int(user.Id)
 	req.UpdateBy = user.RealName