作者 yangfu

账期结算修改

@@ -225,6 +225,7 @@ func (creditAccountService *CreditAccountService) CreateCreditAccount(createCred @@ -225,6 +225,7 @@ func (creditAccountService *CreditAccountService) CreateCreditAccount(createCred
225 // 变更分红预算单结算状态 225 // 变更分红预算单结算状态
226 for i, _ := range dividendsEstimates { 226 for i, _ := range dividendsEstimates {
227 dividendsEstimates[i].DividendsAccountStatus = 2 227 dividendsEstimates[i].DividendsAccountStatus = 2
  228 + dividendsEstimates[i].CreditAccountId = creditAccount.CreditAccountId
228 } 229 }
229 _, err3 := dividendsEstimateRepository.UpdateMany(dividendsEstimates) 230 _, err3 := dividendsEstimateRepository.UpdateMany(dividendsEstimates)
230 if err3 != nil { 231 if err3 != nil {
@@ -47,6 +47,8 @@ type ContractParticipant struct { @@ -47,6 +47,8 @@ type ContractParticipant struct {
47 DividendsAmount float64 `json:"dividendsAmount"` 47 DividendsAmount float64 `json:"dividendsAmount"`
48 // 合同内容 48 // 合同内容
49 ContractContent string `json:"contractContent"` 49 ContractContent string `json:"contractContent"`
  50 + // 支付凭证
  51 + PaymentDocument string `json:"paymentDocument"`
50 // 敏感标识 52 // 敏感标识
51 SensitiveFlag bool `json:"sensitiveFlag"` 53 SensitiveFlag bool `json:"sensitiveFlag"`
52 // 共创合约编号 54 // 共创合约编号
@@ -71,6 +71,8 @@ type DividendsEstimate struct { @@ -71,6 +71,8 @@ type DividendsEstimate struct {
71 OrderGoodId int64 `json:"orderGoodId"` 71 OrderGoodId int64 `json:"orderGoodId"`
72 // 订单产品金额 72 // 订单产品金额
73 OrderGoodAmount float64 `json:"orderGoodAmount"` 73 OrderGoodAmount float64 `json:"orderGoodAmount"`
  74 + // 账期结算Id
  75 + CreditAccountId int64 `json:"creditAccountId"`
74 } 76 }
75 77
76 type DividendsEstimateRepository interface { 78 type DividendsEstimateRepository interface {
@@ -289,14 +289,47 @@ func (ptr *CooperationStatisticsService) PersonCooperationProjectSharedInfo(quer @@ -289,14 +289,47 @@ func (ptr *CooperationStatisticsService) PersonCooperationProjectSharedInfo(quer
289 }) 289 })
290 290
291 // 3.计算合约用户的分红预算金额 291 // 3.计算合约用户的分红预算金额
  292 + var mapCreditAccount = make(map[string]*domain.CreditAccount)
  293 + var creditAccountIds = make([]int64, 0)
292 dividendsEstimateRepository, _ := repository.NewDividendsEstimateRepository(ptr.transactionContext) 294 dividendsEstimateRepository, _ := repository.NewDividendsEstimateRepository(ptr.transactionContext)
293 - _, dividends, err := dividendsEstimateRepository.Find(map[string]interface{}{"cooperationContractNumbers": contractNumbers, "companyId": project.Company.CompanyId, "orgId": project.Org.OrgId, "dividendsAccountStatus": int32(1), "offsetLimit": false}) 295 + _, dividends, err := dividendsEstimateRepository.Find(map[string]interface{}{"cooperationContractNumbers": contractNumbers, "companyId": project.Company.CompanyId, "orgId": project.Org.OrgId, "isCanceled": false, "offsetLimit": false})
  296 + if err != nil {
  297 + return nil, err
  298 + }
294 for i := range dividends { 299 for i := range dividends {
295 d := dividends[i] 300 d := dividends[i]
296 key := keyfun(d.CooperationContractNumber, d.DividendsUser.UserBaseId) 301 key := keyfun(d.CooperationContractNumber, d.DividendsUser.UserBaseId)
297 if v, ok := mapUser[key]; ok { 302 if v, ok := mapUser[key]; ok {
298 v.DividendsAmount += d.DividendsAmount 303 v.DividendsAmount += d.DividendsAmount
299 } 304 }
  305 + if d.PaymentStatus == 2 && d.CreditAccountId != 0 {
  306 + creditAccountIds = append(creditAccountIds, d.CreditAccountId)
  307 + }
  308 + }
  309 + // 3.1 用户账期结算记录 - 查询是否有支付凭证
  310 + if len(creditAccountIds) > 0 {
  311 + creditAccountRepository, _ := repository.NewCreditAccountRepository(ptr.transactionContext)
  312 + _, creditAccounts, err := creditAccountRepository.Find(map[string]interface{}{
  313 + "creditAccountIds": creditAccountIds,
  314 + })
  315 + if err != nil {
  316 + return nil, err
  317 + }
  318 + for i := range creditAccounts {
  319 + if len(creditAccounts[i].PaymentDocumentAttachments) == 0 {
  320 + continue
  321 + }
  322 + for j := range creditAccounts[i].AccountDetail {
  323 + detail := creditAccounts[i].AccountDetail[j]
  324 + key := keyfun(detail.CooperationContractNumber, creditAccounts[i].Participator.UserBaseId)
  325 + mapCreditAccount[key] = creditAccounts[i]
  326 + if v, ok := mapUser[key]; ok && len(v.PaymentDocument) == 0 {
  327 + if len(mapCreditAccount[key].PaymentDocumentAttachments) > 0 {
  328 + v.PaymentDocument = "查看"
  329 + }
  330 + }
  331 + }
  332 + }
300 } 333 }
301 334
302 for _, v := range mapUser { 335 for _, v := range mapUser {
@@ -55,4 +55,6 @@ type DividendsEstimate struct { @@ -55,4 +55,6 @@ type DividendsEstimate struct {
55 DeletedAt time.Time `comment:"删除时间" pg:",soft_delete"` 55 DeletedAt time.Time `comment:"删除时间" pg:",soft_delete"`
56 // 更新时间 56 // 更新时间
57 UpdatedAt time.Time `comment:"更新时间"` 57 UpdatedAt time.Time `comment:"更新时间"`
  58 + // 账期结算Id
  59 + CreditAccountId int64 `comment:"creditAccountId"`
58 } 60 }
@@ -33,5 +33,6 @@ func TransformToDividendsEstimateDomainModelFromPgModels(dividendsEstimateModel @@ -33,5 +33,6 @@ func TransformToDividendsEstimateDomainModelFromPgModels(dividendsEstimateModel
33 CreatedAt: dividendsEstimateModel.CreatedAt, 33 CreatedAt: dividendsEstimateModel.CreatedAt,
34 DeletedAt: dividendsEstimateModel.DeletedAt, 34 DeletedAt: dividendsEstimateModel.DeletedAt,
35 UpdatedAt: dividendsEstimateModel.UpdatedAt, 35 UpdatedAt: dividendsEstimateModel.UpdatedAt,
  36 + CreditAccountId: dividendsEstimateModel.CreditAccountId,
36 }, nil 37 }, nil
37 } 38 }
@@ -199,8 +199,12 @@ func (repository *CreditAccountRepository) Find(queryOptions map[string]interfac @@ -199,8 +199,12 @@ func (repository *CreditAccountRepository) Find(queryOptions map[string]interfac
199 var creditAccountModels []*models.CreditAccount 199 var creditAccountModels []*models.CreditAccount
200 creditAccounts := make([]*domain.CreditAccount, 0) 200 creditAccounts := make([]*domain.CreditAccount, 0)
201 query := sqlbuilder.BuildQuery(tx.Model(&creditAccountModels), queryOptions) 201 query := sqlbuilder.BuildQuery(tx.Model(&creditAccountModels), queryOptions)
  202 + if creditAccountIds, ok := queryOptions["creditAccountIds"]; ok && len(creditAccountIds.([]int64)) > 0 {
  203 + newCreditAccountIds := utils.SliceItoa(creditAccountIds.([]int64))
  204 + query.Where("credit_account_id in (?)", pg.In(newCreditAccountIds))
  205 + }
202 if creditAccountOrderNum, ok := queryOptions["creditAccountOrderNum"]; ok && creditAccountOrderNum != "" { 206 if creditAccountOrderNum, ok := queryOptions["creditAccountOrderNum"]; ok && creditAccountOrderNum != "" {
203 - query.Where("credit_account_order_num ilike ?", fmt.Sprintf("%%%s%%", creditAccountOrderNum)) 207 + query.Where("credit_account_order_num like ?", fmt.Sprintf("%%%s%%", creditAccountOrderNum))
204 } 208 }
205 if participatorName, ok := queryOptions["participatorName"]; ok && participatorName != "" { 209 if participatorName, ok := queryOptions["participatorName"]; ok && participatorName != "" {
206 query.Where(`(credit_account.participator->>'userName')::text LIKE ?`, fmt.Sprintf("%%%s%%", participatorName)) 210 query.Where(`(credit_account.participator->>'userName')::text LIKE ?`, fmt.Sprintf("%%%s%%", participatorName))
@@ -50,6 +50,7 @@ func (repository *DividendsEstimateRepository) Save(dividendsEstimate *domain.Di @@ -50,6 +50,7 @@ func (repository *DividendsEstimateRepository) Save(dividendsEstimate *domain.Di
50 "deleted_at", 50 "deleted_at",
51 "updated_at", 51 "updated_at",
52 "cooperation_contract_undertaker_id", 52 "cooperation_contract_undertaker_id",
  53 + "credit_account_id",
53 } 54 }
54 insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields) 55 insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
55 insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields) 56 insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields)
@@ -90,6 +91,7 @@ func (repository *DividendsEstimateRepository) Save(dividendsEstimate *domain.Di @@ -90,6 +91,7 @@ func (repository *DividendsEstimateRepository) Save(dividendsEstimate *domain.Di
90 &dividendsEstimate.DeletedAt, 91 &dividendsEstimate.DeletedAt,
91 &dividendsEstimate.UpdatedAt, 92 &dividendsEstimate.UpdatedAt,
92 &dividendsEstimate.CooperationContractUndertakerId, 93 &dividendsEstimate.CooperationContractUndertakerId,
  94 + &dividendsEstimate.CreditAccountId,
93 ), 95 ),
94 fmt.Sprintf("INSERT INTO dividends_estimates (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet), 96 fmt.Sprintf("INSERT INTO dividends_estimates (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet),
95 dividendsEstimate.DividendsEstimateId, 97 dividendsEstimate.DividendsEstimateId,
@@ -116,6 +118,7 @@ func (repository *DividendsEstimateRepository) Save(dividendsEstimate *domain.Di @@ -116,6 +118,7 @@ func (repository *DividendsEstimateRepository) Save(dividendsEstimate *domain.Di
116 nil, 118 nil,
117 dividendsEstimate.UpdatedAt, 119 dividendsEstimate.UpdatedAt,
118 dividendsEstimate.CooperationContractUndertakerId, 120 dividendsEstimate.CooperationContractUndertakerId,
  121 + dividendsEstimate.CreditAccountId,
119 ); err != nil { 122 ); err != nil {
120 return dividendsEstimate, err 123 return dividendsEstimate, err
121 } 124 }
@@ -146,6 +149,7 @@ func (repository *DividendsEstimateRepository) Save(dividendsEstimate *domain.Di @@ -146,6 +149,7 @@ func (repository *DividendsEstimateRepository) Save(dividendsEstimate *domain.Di
146 &dividendsEstimate.DeletedAt, 149 &dividendsEstimate.DeletedAt,
147 &dividendsEstimate.UpdatedAt, 150 &dividendsEstimate.UpdatedAt,
148 &dividendsEstimate.CooperationContractUndertakerId, 151 &dividendsEstimate.CooperationContractUndertakerId,
  152 + dividendsEstimate.CreditAccountId,
149 ), 153 ),
150 fmt.Sprintf("UPDATE dividends_estimates SET %s WHERE dividends_estimate_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet), 154 fmt.Sprintf("UPDATE dividends_estimates SET %s WHERE dividends_estimate_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet),
151 dividendsEstimate.DividendsEstimateId, 155 dividendsEstimate.DividendsEstimateId,
@@ -172,6 +176,7 @@ func (repository *DividendsEstimateRepository) Save(dividendsEstimate *domain.Di @@ -172,6 +176,7 @@ func (repository *DividendsEstimateRepository) Save(dividendsEstimate *domain.Di
172 nil, 176 nil,
173 dividendsEstimate.UpdatedAt, 177 dividendsEstimate.UpdatedAt,
174 dividendsEstimate.CooperationContractUndertakerId, 178 dividendsEstimate.CooperationContractUndertakerId,
  179 + dividendsEstimate.CreditAccountId,
175 dividendsEstimate.Identify(), 180 dividendsEstimate.Identify(),
176 ); err != nil { 181 ); err != nil {
177 return dividendsEstimate, err 182 return dividendsEstimate, err
@@ -266,6 +271,7 @@ func (repository *DividendsEstimateRepository) UpdateMany(dividendsEstimates []* @@ -266,6 +271,7 @@ func (repository *DividendsEstimateRepository) UpdateMany(dividendsEstimates []*
266 DeletedAt: dividendsEstimate.DeletedAt, 271 DeletedAt: dividendsEstimate.DeletedAt,
267 UpdatedAt: time.Now(), 272 UpdatedAt: time.Now(),
268 CooperationContractUndertakerId: dividendsEstimate.CooperationContractUndertakerId, 273 CooperationContractUndertakerId: dividendsEstimate.CooperationContractUndertakerId,
  274 + CreditAccountId: dividendsEstimate.CreditAccountId,
269 }) 275 })
270 } 276 }
271 if _, err := tx.Model(&dividendsEstimateModels).WherePK().Update(); err != nil { 277 if _, err := tx.Model(&dividendsEstimateModels).WherePK().Update(); err != nil {