From 69f0410081da54e6cea8a04a07fd0119a8edc623 Mon Sep 17 00:00:00 2001 From: liujiandao <274878379@qq.com> Date: 星期六, 30 三月 2024 11:38:42 +0800 Subject: [PATCH] 采购单修改 --- service/purchase/purchase.go | 75 ++++++++++++++++++++++--------------- 1 files changed, 44 insertions(+), 31 deletions(-) diff --git a/service/purchase/purchase.go b/service/purchase/purchase.go index f77f0c2..aeba8f3 100644 --- a/service/purchase/purchase.go +++ b/service/purchase/purchase.go @@ -120,6 +120,11 @@ return } +func (slf *PurchaseService) GetPurchaseByNumber(number string) (purchase purchase.Purchase, err error) { + err = global.GVA_DB.Where("number = ?", number).Preload("Supplier").First(&purchase).Error + return +} + //@function: GetPurchaseList //@description: 鍒嗛〉鑾峰彇閲囪喘鍗曞垪琛� //@param: info request.PageInfo @@ -132,12 +137,13 @@ var ids []uint var purchaseList = make([]*purchase.Purchase, 0) if info.Keyword != "" { + kw := "%" + info.Keyword + "%" db.Distinct("srm_purchase.id").Joins("left join srm_purchase_products on srm_purchase_products.purchase_id = srm_purchase.id"). Joins("left join srm_supplier_material on srm_supplier_material.supplier_id = srm_purchase.id"). Joins("left join srm_supplier on srm_supplier.Id = srm_purchase.supplier_id"). - Where("srm_purchase.name like ?", "%"+info.Keyword+"%"). - Or("srm_supplier_material.name like ?", "%"+info.Keyword+"%"). - Or("srm_supplier.name like ?", "%"+info.Keyword+"%") + Where("srm_purchase.name like ? or srm_purchase.source_order like ? or srm_purchase.number like ?", kw, kw, kw). + Or("srm_supplier_material.name like ?", kw). + Or("srm_supplier.name like ?", kw) err = db.Limit(limit).Offset(offset).Find(&ids).Error if err != nil { return purchaseList, total, err @@ -294,7 +300,7 @@ return int(total), err } -func (slf *PurchaseService) SavePurchaseProductConfirm(list []*purchase.PurchaseProductConfirm) (err error) { +func (slf *PurchaseService) SavePurchaseProductConfirm(list []*purchase.PurchaseProductConfirm, first bool) (err error) { if len(list) == 0 { return errors.New("浜у搧鍒楄〃涓嶈兘涓虹┖") } @@ -306,26 +312,23 @@ } m := make(map[string]interface{}) - now := int64(0) - yu := int64(0) - for _, confirm := range list { - if !confirm.NowReceiveAmount.IsZero() { - now = confirm.NowReceiveAmount.IntPart() - } - if !confirm.SurplusReceiveAmount.IsZero() { - yu = confirm.SurplusReceiveAmount.IntPart() - } - confirm.OverReceiveAmount = confirm.OverReceiveAmount.Add(confirm.NowReceiveAmount) - confirm.NotReceiveAmount = confirm.Amount.Sub(confirm.OverReceiveAmount) - } - if now == 0 && yu > 0 { + if first { m["status"] = purchase.OrderStatusWaitReceive - } - if now > 0 && yu > 0 { - m["status"] = purchase.OrderStatusPartReceive - } - if now > 0 && yu == 0 { - m["status"] = purchase.OrderStatusWaitQuality + } else { + yu := int64(0) + for _, confirm := range list { + confirm.OverReceiveAmount = confirm.OverReceiveAmount.Add(confirm.NowReceiveAmount) + confirm.NotReceiveAmount = confirm.Amount.Sub(confirm.OverReceiveAmount) + if !confirm.SurplusReceiveAmount.IsZero() { + yu = confirm.SurplusReceiveAmount.IntPart() + } + } + if yu > 0 { + m["status"] = purchase.OrderStatusPartReceive + } + if yu == 0 { + m["status"] = purchase.OrderStatusWaitQuality + } } err = global.GVA_DB.Transaction(func(tx *gorm.DB) error { @@ -354,13 +357,16 @@ return list, err } -func (slf *PurchaseService) SavePurchaseQualityInspection(list []*purchase.PurchaseProductConfirm) (err error) { +func (slf *PurchaseService) SavePurchaseQualityInspection(list []*purchase.PurchaseProductConfirm) ([]*purchase.PurchaseQualityInspection, error) { if len(list) == 0 { - return errors.New("浜у搧鍒楄〃涓嶈兘涓虹┖") + return nil, errors.New("浜у搧鍒楄〃涓嶈兘涓虹┖") } purchaseNumber := list[0].PurchaseNumber qualityList := make([]*purchase.PurchaseQualityInspection, 0) for _, confirm := range list { + if confirm.NowReceiveAmount.IsZero() { + continue + } var pqi purchase.PurchaseQualityInspection pqi.PurchaseNumber = purchaseNumber pqi.Principal = confirm.Principal @@ -374,8 +380,8 @@ pqi.Type = confirm.Type qualityList = append(qualityList, &pqi) } - err = global.GVA_DB.Model(purchase.PurchaseQualityInspection{}).Create(qualityList).Error - return err + err := global.GVA_DB.Model(purchase.PurchaseQualityInspection{}).Create(qualityList).Error + return qualityList, err } func (slf *PurchaseService) GetPurchaseQualityInspection(params purchaserequest.GetQualityInspectionInfo) ([]*purchase.PurchaseQualityInspection, error) { @@ -402,17 +408,24 @@ return list, err } -func (slf *PurchaseService) UpdatePurchaseStatus(purchaseId uint, status int) error { +func (slf *PurchaseService) UpdatePurchaseStatus(number string, status int) error { var total int64 - err := global.GVA_DB.Model(&purchase.PurchaseQualityInspection{}).Where("status = ?", status).Count(&total).Error + err := global.GVA_DB.Model(&purchase.Purchase{}).Where("number = ?", number).Where("status = ?", purchase.OrderStatusWaitQuality).Count(&total).Error if err != nil { return err } - if total == 0 { - err = global.GVA_DB.Model(&purchase.Purchase{}).Where("id = ?", purchaseId).Updates(map[string]interface{}{"status": purchase.OrderStatusReceived}).Error + if total > 0 { + err = global.GVA_DB.Model(&purchase.PurchaseQualityInspection{}).Where("purchase_number = ?", number).Where("status = ?", status).Count(&total).Error if err != nil { return err } + + if total == 0 { + err = global.GVA_DB.Model(&purchase.Purchase{}).Where("number = ?", number).Updates(map[string]interface{}{"status": purchase.OrderStatusReceived}).Error + if err != nil { + return err + } + } } return nil } -- Gitblit v1.8.0