From f264456b1e4fd284f53ecc4c70a3b951578bfd2d Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期五, 18 八月 2023 17:13:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 service/salesDetails.go |   25 ++++++++++++++++++++++++-
 1 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/service/salesDetails.go b/service/salesDetails.go
index fb9b9dd..a2e5ad8 100644
--- a/service/salesDetails.go
+++ b/service/salesDetails.go
@@ -5,6 +5,7 @@
 	"aps_crm/model"
 	"aps_crm/pkg/ecode"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 )
 
 type SalesDetailsService struct{}
@@ -71,7 +72,29 @@
 	salesDetails.AmountReceivable = salesDetails.AmountTotal.Sub(salesDetails.AmountReceived)
 	salesDetails.AmountUnInvoiced = salesDetails.AmountTotal.Sub(salesDetails.AmountInvoiced)
 
-	err = model.NewSalesDetailsSearch().SetId(salesDetails.Id).Update(salesDetails)
+	err = model.WithTransaction(func(db *gorm.DB) error {
+		err = model.NewSalesDetailsSearch().SetId(salesDetails.Id).Update(salesDetails)
+		if err != nil {
+			return err
+		}
+		err = model.NewProductSearch(db).SetIds(removedProductIds).Delete()
+		if err != nil {
+			return err
+		}
+		err = model.NewProductSearch(db).CreateBatch(newProducts)
+		if err != nil {
+			return err
+		}
+		var rel []*model.SalesDetailsProduct
+		for _, p := range newProducts {
+			rel = append(rel, &model.SalesDetailsProduct{
+				SalesDetailsId: salesDetails.Id,
+				ProductId:      p.Id,
+			})
+		}
+		return model.NewSalesDetailsProductSearch().CreateBatch(rel)
+	})
+
 	if err != nil {
 		return ecode.SalesDetailsSetErr
 	}

--
Gitblit v1.8.0