From 14326e1cb51f91ccc3da00b00bf613926d756f12 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期一, 08 四月 2024 14:53:42 +0800
Subject: [PATCH] 采购单数量修改
---
proto/purchase_wms/server.go | 133 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 129 insertions(+), 4 deletions(-)
diff --git a/proto/purchase_wms/server.go b/proto/purchase_wms/server.go
index 6eabcf6..523a7b8 100644
--- a/proto/purchase_wms/server.go
+++ b/proto/purchase_wms/server.go
@@ -20,8 +20,12 @@
if req.Number == "" {
return nil, errors.New("閲囪喘缂栧彿涓嶈兘涓虹┖")
}
- err := global.GVA_DB.Model(&purchase.Purchase{}).Where("number = ?", req.Number).
- Updates(map[string]interface{}{"status": purchase.OrderStatusStored}).Error
+ m := make(map[string]interface{})
+ m["status"] = purchase.OrderStatusStored
+ if req.Status > 0 {
+ m["status"] = req.Status
+ }
+ err := global.GVA_DB.Model(&purchase.Purchase{}).Where("number = ?", req.Number).Updates(m).Error
return new(UpdatePurchaseStatusResponse), err
}
@@ -139,15 +143,39 @@
if err != nil {
return nil, err
}
+ purchaseIds := make([]uint, 0)
+ for _, p := range ps {
+ purchaseIds = append(purchaseIds, p.ID)
+ }
+ if len(purchaseIds) == 0 {
+ return nil, errors.New("娌℃湁鏌ュ埌閲囪喘鍗�")
+ }
+ pps := make([]*purchase.PurchaseProducts, 0)
+ err = global.GVA_DB.Model(&purchase.PurchaseProducts{}).Where("purchase_id in (?)", purchaseIds).Preload("Product").Find(&pps).Error
+ if err != nil {
+ return nil, err
+ }
infos := make([]*PurchaseInfo, 0)
for _, p := range ps {
var info PurchaseInfo
info.PurchaseNumber = p.Number
info.PurchaseName = p.Name
info.SupplierName = p.Supplier.Name
- info.Amount = p.Quantity.IntPart()
info.Status = int64(p.Status)
- infos = append(infos, &info)
+ if p.Status == purchase.OrderStatusStored || p.Status == purchase.OrderStatusCompleted {
+ info.FinishAmount = info.Amount
+ }
+ for _, pp := range pps {
+ if int(p.ID) == pp.PurchaseId {
+ ni := info
+ ni.ProductId = pp.Product.Number
+ ni.ProductName = pp.Product.Name
+ ni.Specs = pp.Product.Specifications
+ ni.Unit = pp.Product.Unit
+ ni.Amount = pp.Amount.IntPart()
+ infos = append(infos, &ni)
+ }
+ }
}
resp := new(GetPurchaseInfoResponse)
resp.Infos = infos
@@ -181,3 +209,100 @@
resp.Exist = true
return resp, nil
}
+
+func (s *Server) CreatePurchaseByAps(ctx context.Context, req *CreatePurchaseByApsRequest) (*CreatePurchaseByWmsResponse, error) {
+ if len(req.Req) == 0 {
+ return nil, errors.New("浜у搧id涓虹┖")
+ }
+ productIds := make([]string, 0)
+ amount := int64(0)
+ numMap := make(map[string]int64)
+ for _, request := range req.Req {
+ productIds = append(productIds, request.ProductId)
+ numMap[request.ProductId] = request.Amount
+ amount += request.Amount
+ }
+ var products []test.SupplierMaterial
+ var newProducts []test.SupplierMaterial
+ err := global.GVA_DB.Model(&test.SupplierMaterial{}).Where("number in (?)", productIds).Order("id desc").Find(&products).Error
+ if err != nil {
+ return nil, err
+ }
+ for _, id := range productIds {
+ flag := false
+ for _, product := range products {
+ if id == product.Number {
+ newProducts = append(newProducts, product)
+ flag = true
+ break
+ }
+ }
+ if !flag {
+ var material test.Material
+ var product test.SupplierMaterial
+ err = global.GVA_DB.Model(&test.Material{}).Where("id = ?", id).First(&material).Error
+ if err != nil {
+ return nil, err
+ }
+ product.Name = material.Name
+ product.Number = material.ID
+ product.Unit = material.Unit
+ product.PurchasePrice = material.PurchasePrice.InexactFloat64()
+ product.Specifications = material.Specs
+ product.ModelNumber = material.Type
+ err = global.GVA_DB.Create(&product).Error
+ if err != nil {
+ return nil, err
+ }
+ newProducts = append(newProducts, product)
+ }
+ }
+
+ //閲囪喘鍗�
+ var purchaseRecord purchase.Purchase
+ purchaseRecord.OrderSource = "APS鎺ㄩ��"
+ purchaseRecord.Name = "APS閲囪喘"
+ purchaseRecord.ID = 0
+ purchaseRecord.Status = purchase.OrderStatusConfirmed
+ purchaseRecord.HandledBy = "admin"
+ purchaseRecord.Creator = "admin"
+ purchaseRecord.Number = fmt.Sprintf("CG%v", time.Now().Unix())
+ purchaseRecord.Principal = "admin"
+ purchaseRecord.OrderType = "閲囪喘璁㈠崟"
+ purchaseRecord.Quantity = decimal.NewFromInt(amount)
+ purchaseRecord.SourceOrder = req.SourceOrder
+
+ price := float64(0)
+ var pps []purchase.PurchaseProducts
+ for _, product := range newProducts {
+ //浜у搧
+ var pp purchase.PurchaseProducts
+ pp.ProductId = int(product.ID)
+ pp.Amount = decimal.NewFromInt(numMap[product.Number])
+ pp.Price = decimal.NewFromFloat(product.PurchasePrice)
+ price += product.PurchasePrice
+ pp.Total = pp.Amount.Mul(pp.Price)
+ pp.Remark = "APS閲囪喘"
+ pps = append(pps, pp)
+ }
+ purchaseRecord.TotalPrice = purchaseRecord.Quantity.Mul(decimal.NewFromFloat(price))
+ purchaseRecord.UnInvoiceAmount = purchaseRecord.TotalPrice
+ purchaseRecord.ShouldPayAmount = purchaseRecord.TotalPrice
+
+ err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
+ err = tx.Create(&purchaseRecord).Error
+ if err != nil {
+ return err
+ }
+ for i := 0; i < len(pps); i++ {
+ pps[i].PurchaseId = int(purchaseRecord.ID)
+ }
+ return tx.Create(&pps).Error
+ })
+ if err != nil {
+ return nil, err
+ }
+ resp := new(CreatePurchaseByWmsResponse)
+ resp.PurchaseNumber = purchaseRecord.Number
+ return resp, nil
+}
--
Gitblit v1.8.0