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

---
 service/material.go         |    4 ++--
 controllers/operation.go    |   33 ++++++++++++++++++++++++++++++++-
 models/operation_details.go |    3 +++
 3 files changed, 37 insertions(+), 3 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())
diff --git a/models/operation_details.go b/models/operation_details.go
index 22b9de5..8f01f39 100644
--- a/models/operation_details.go
+++ b/models/operation_details.go
@@ -29,6 +29,9 @@
 		AuxiliaryUnit    string          `json:"auxiliaryUnit" gorm:"type:varchar(191);comment:杈呭姪鍗曚綅"`
 		Remark           string          `gorm:"type:varchar(1024);comment:澶囨敞" json:"remark"`
 		IsInternalOutput bool            `json:"isInternalOutput"` //鏄惁璋冩嫧浜х敓鐨勫嚭搴�
+
+		Cost      decimal.Decimal `json:"cost"`      //鎴愭湰鍗曚环
+		SalePrice decimal.Decimal `json:"salePrice"` //閿�鍞崟浠�
 	}
 
 	OperationDetailsSearch struct {
diff --git a/service/material.go b/service/material.go
index ea42769..adabc1d 100644
--- a/service/material.go
+++ b/service/material.go
@@ -183,10 +183,10 @@
 
 	}
 	err = models.WithTransaction(func(db *gorm.DB) error {
-		if err := models.NewMaterialSearch().CreateBatch(materialList); err != nil {
+		if err := models.NewMaterialSearch().SetOrm(db).CreateBatch(materialList); err != nil {
 			return err
 		}
-		if err := models.NewAttributeValueSearch().CreateBatch(attributeValueList); err != nil {
+		if err := models.NewAttributeValueSearch().SetOrm(db).CreateBatch(attributeValueList); err != nil {
 			return err
 		}
 		return nil

--
Gitblit v1.8.0