From c5a0eb549cba2cd358a2d0496c44f3a289f15d9c Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期一, 28 八月 2023 14:22:06 +0800
Subject: [PATCH] fix

---
 model/serviceContract.go |   54 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 51 insertions(+), 3 deletions(-)

diff --git a/model/serviceContract.go b/model/serviceContract.go
index 5eff55e..d4b8744 100644
--- a/model/serviceContract.go
+++ b/model/serviceContract.go
@@ -17,6 +17,7 @@
 		Client                  Client                `json:"client" gorm:"foreignKey:ClientId"`
 		Number                  string                `json:"number" gorm:"column:number;type:varchar(255);comment:鍚堝悓缂栧彿"`
 		MemberId                int                   `json:"memberId" gorm:"column:member_id;type:int;comment:璐熻矗浜篿d"`
+		Member                  User                  `json:"member" gorm:"foreignKey:MemberId"`
 		ContactId               int                   `json:"contactId" gorm:"column:contact_id;type:int;comment:鑱旂郴浜篿d"`
 		Contact                 Contact               `json:"contact" gorm:"foreignKey:ContactId"`
 		SaleChanceId            int                   `json:"saleChanceId" gorm:"column:sale_chance_id;type:int;comment:閿�鍞満浼歩d"`
@@ -39,8 +40,9 @@
 		AmountReceived          decimal.Decimal       `gorm:"column:amount_received;type:decimal(12,2);comment:宸叉敹閲戦" json:"amountReceived"`        // 宸叉敹閲戦
 		AmountInvoiced          decimal.Decimal       `gorm:"column:amount_invoiced;type:decimal(12,2);comment:宸插紑绁ㄩ噾棰�" json:"amountInvoiced"`       // 宸插紑绁ㄩ噾棰�
 		AmountUnInvoiced        decimal.Decimal       `gorm:"column:amount_not_invoiced;type:decimal(12,2);comment:鏈紑绁ㄩ噾棰�" json:"amountUnInvoiced"` // 鏈紑绁ㄩ噾棰�
+		AmountTotal             decimal.Decimal       `gorm:"column:amount_total;type:decimal(12,2);comment:浠风◣鍚堣" json:"amountTotal"`              // 浠风◣鍚堣
 		Products                []*Product            `json:"products" gorm:"many2many:service_contract_product;"`
-		gorm.Model              `json:"-"`
+		CrmModel
 	}
 
 	ServiceContractSearch struct {
@@ -56,7 +58,7 @@
 	}
 )
 
-func (ServiceContract) TableName() string {
+func (slf *ServiceContract) TableName() string {
 	return "service_contract"
 }
 
@@ -108,6 +110,9 @@
 	}
 	if slf.Preload {
 		db = db.
+			Preload("Client").
+			Preload("Member").
+			Preload("Contact").
 			Preload("SaleChance").
 			Preload("SalesDetails").
 			Preload("Quotation").
@@ -138,6 +143,12 @@
 	return db.Delete(&ServiceContract{}).Error
 }
 
+func (slf *ServiceContractSearch) DeleteByIds(ids []int) error {
+	var db = slf.build()
+	db = db.Where("id in ?", ids)
+	return db.Delete(&ServiceContract{}).Error
+}
+
 func (slf *ServiceContractSearch) Find() ([]*ServiceContract, int64, error) {
 	var db = slf.build()
 	var records = make([]*ServiceContract, 0)
@@ -149,7 +160,7 @@
 		db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
 	}
 
-	err := db.Find(&records).Error
+	err := db.Order("id desc").Order("id desc").Find(&records).Error
 	return records, total, err
 }
 
@@ -216,3 +227,40 @@
 
 	return record, nil
 }
+
+func (slf *ServiceContractSearch) AmountReceivableAdd(tx *gorm.DB, id int, amount decimal.Decimal) error {
+	slf.Orm = tx
+	record, err := slf.SetId(id).First()
+	if err != nil {
+		return err
+	}
+	amount = record.AmountReceivable.Add(amount)
+	return slf.UpdateByMap(map[string]interface{}{"amount_receivable": amount})
+}
+func (slf *ServiceContractSearch) AmountReceivedAdd(tx *gorm.DB, id int, amount decimal.Decimal) error {
+	slf.Orm = tx
+	record, err := slf.SetId(id).First()
+	if err != nil {
+		return err
+	}
+	amount = record.AmountReceived.Add(amount)
+	return slf.UpdateByMap(map[string]interface{}{"amount_received": amount})
+}
+func (slf *ServiceContractSearch) AmountInvoicedAdd(tx *gorm.DB, id int, amount decimal.Decimal) error {
+	slf.Orm = tx
+	record, err := slf.SetId(id).First()
+	if err != nil {
+		return err
+	}
+	amount = record.AmountInvoiced.Add(amount)
+	return slf.UpdateByMap(map[string]interface{}{"amount_invoiced": amount})
+}
+func (slf *ServiceContractSearch) AmountNotInvoicedAdd(tx *gorm.DB, id int, amount decimal.Decimal) error {
+	slf.Orm = tx
+	record, err := slf.SetId(id).First()
+	if err != nil {
+		return err
+	}
+	amount = record.AmountUnInvoiced.Add(amount)
+	return slf.UpdateByMap(map[string]interface{}{"amount_not_invoiced": amount})
+}

--
Gitblit v1.8.0