wangpengfei
2023-08-18 f264456b1e4fd284f53ecc4c70a3b951578bfd2d
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
   }