From 9e3a239ec0fa13909cb3a98e2ad238b42ac63eaa Mon Sep 17 00:00:00 2001
From: lishihai <dslsh@dscom>
Date: 星期三, 19 六月 2024 20:32:24 +0800
Subject: [PATCH] 概述->新建或编辑(出库/入库)信息,产品的Cost成本单价和SalePrice销售单价的值不会更新的BUG

---
 controllers/operation.go |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/controllers/operation.go b/controllers/operation.go
index 3ccb6e2..f48a1e2 100644
--- a/controllers/operation.go
+++ b/controllers/operation.go
@@ -47,6 +47,7 @@
 func (slf OperationController) Add(c *gin.Context) {
 	var reqParams request.AddOperation
 	var params models.Operation
+
 	if err := c.BindJSON(&reqParams); err != nil {
 		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
 		return
@@ -90,8 +91,26 @@
 		util.ResponseFormat(c, code.RequestParamError, "鍗曞彿宸插瓨鍦�")
 		return
 	}
+	err = models.WithTransaction(func(db *gorm.DB) error {
+		if err := models.NewOperationSearch().Create(&params); err != nil {
+			return err
+		}
+		od := params.Details
+		for _, v := range od {
+			material, err := models.NewMaterialSearch().SetID(v.ProductId).First()
+			if err != nil {
+				return err
+			}
+			material.Cost = v.Cost
+			material.SalePrice = v.SalePrice
+			if err := models.NewMaterialSearch().SetOrm(db).Update(material); err != nil {
+				return err
+			}
+		}
+		return nil
+	})
 
-	if err := models.NewOperationSearch().Create(&params); err != nil {
+	if err != nil {
 		logx.Errorf("Operation create err: %v", err)
 		util.ResponseFormat(c, code.SaveFail, "娣诲姞澶辫触锛�"+err.Error())
 		return
@@ -314,6 +333,18 @@
 		if err := models.NewOperationSearch().SetOrm(tx).SetID(params.Id).Save(&params); err != nil {
 			return err
 		}
+		od := params.Details
+		for _, v := range od {
+			material, err := models.NewMaterialSearch().SetID(v.ProductId).First()
+			if err != nil {
+				return err
+			}
+			material.Cost = v.Cost
+			material.SalePrice = v.SalePrice
+			if err := models.NewMaterialSearch().SetOrm(tx).Update(material); err != nil {
+				return err
+			}
+		}
 		return nil
 	}); err != nil {
 		util.ResponseFormat(c, code.RequestParamError, "淇敼澶辫触锛�"+err.Error())

--
Gitblit v1.8.0