From d20acf38c36c11ee4428c3e74a17f5870dc61b51 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期四, 16 十一月 2023 09:51:00 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/SRM

---
 proto/purchase_wms/server.go |  108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 108 insertions(+), 0 deletions(-)

diff --git a/proto/purchase_wms/server.go b/proto/purchase_wms/server.go
new file mode 100644
index 0000000..579d914
--- /dev/null
+++ b/proto/purchase_wms/server.go
@@ -0,0 +1,108 @@
+package purchase_wms
+
+import (
+	"context"
+	"errors"
+	"fmt"
+	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
+	"srm/global"
+	"srm/model/purchase"
+	"srm/model/test"
+	"time"
+)
+
+type Server struct {
+	UnimplementedPurchaseServiceServer
+}
+
+func (s *Server) UpdatePurchaseStatus(ctx context.Context, req *UpdatePurchaseStatusRequest) (*UpdatePurchaseStatusResponse, error) {
+	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
+	return new(UpdatePurchaseStatusResponse), err
+}
+
+func (s *Server) GetSupplierListByProductId(ctx context.Context, req *GetSupplierListByProductIdRequest) (*GetSupplierListByProductIdResponse, error) {
+	if req.ProductId == "" {
+		return nil, errors.New("浜у搧缂栧彿涓嶈兘涓虹┖")
+	}
+	var products []test.Product
+	err := global.GVA_DB.Model(&test.Product{}).Where("number = ?", req.ProductId).Preload("Supplier").Find(&products).Error
+	if err != nil {
+		return nil, err
+	}
+	list := make([]*SupplierList, 0)
+	for _, product := range products {
+		if product.Supplier.Status != 1 {
+			continue
+		}
+		var sl SupplierList
+		sl.SupplierId = int64(product.SupplierId)
+		sl.SupplierName = product.Supplier.Name
+		sl.PurchasePrice = float32(product.PurchasePrice)
+		list = append(list, &sl)
+	}
+	resp := new(GetSupplierListByProductIdResponse)
+	resp.List = list
+	return resp, nil
+}
+
+func (s *Server) CreatePurchaseByWms(ctx context.Context, req *CreatePurchaseByWmsRequest) (*CreatePurchaseByWmsResponse, error) {
+	if req.SupplierId == 0 || req.ProductId == "" {
+		return nil, errors.New("渚涘簲鍟唅d鎴栦骇鍝乮d涓虹┖")
+	}
+	var pt purchase.PurchaseType
+	err := global.GVA_DB.Model(&purchase.PurchaseType{}).First(&pt).Error
+	if err != nil {
+		return nil, err
+	}
+	var product test.Product
+	err = global.GVA_DB.Model(&test.Product{}).Where("number = ? and supplier_id = ?", req.ProductId, req.SupplierId).First(&product).Error
+	if err != nil {
+		return nil, err
+	}
+
+	//閲囪喘鍗�
+	var purchaseRecord purchase.Purchase
+	purchaseRecord.PurchaseTypeId = int(pt.ID)
+	purchaseRecord.SupplierId = int(req.SupplierId)
+	purchaseRecord.OrderSource = "WMS鎺ㄩ��"
+	purchaseRecord.Name = "WMS琛ヨ揣"
+	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(req.Amount)
+	purchaseRecord.TotalPrice = purchaseRecord.Quantity.Mul(decimal.NewFromFloat(product.PurchasePrice))
+	purchaseRecord.UnInvoiceAmount = purchaseRecord.TotalPrice
+	purchaseRecord.ShouldPayAmount = purchaseRecord.TotalPrice
+
+	//浜у搧
+	var pp purchase.PurchaseProducts
+	pp.ProductId = int(product.ID)
+	pp.Amount = purchaseRecord.Quantity
+	pp.Price = decimal.NewFromFloat(product.PurchasePrice)
+	pp.Total = purchaseRecord.TotalPrice
+	pp.Remark = "WMS琛ヨ揣"
+
+	err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
+		err = tx.Create(&purchaseRecord).Error
+		if err != nil {
+			return err
+		}
+		pp.PurchaseId = int(purchaseRecord.ID)
+		return tx.Create(&pp).Error
+	})
+	if err != nil {
+		return nil, err
+	}
+	resp := new(CreatePurchaseByWmsResponse)
+	resp.PurchaseNumber = purchaseRecord.Number
+	return resp, nil
+}

--
Gitblit v1.8.0