From 1fc5652567b9668bde0c4f174bc9b2458de751eb Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 18 八月 2023 16:36:09 +0800
Subject: [PATCH] 销售明细修改产品

---
 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