From e45772ab7c177fedbe91299c69fcef3bd5493212 Mon Sep 17 00:00:00 2001 From: chenlin Date: Fri, 16 Aug 2024 17:42:37 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=BE=91=E5=95=86?= =?UTF-8?q?=E5=93=81=E8=B5=84=E6=96=99=E5=90=8E=E6=9B=B4=E6=96=B0=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E6=97=B6=E9=97=B4=E4=B8=BA=E7=A9=BA=E7=9A=84=E7=BC=BA?= =?UTF-8?q?=E9=99=B7=EF=BC=9B=202.=E4=BF=AE=E5=A4=8D=E8=BF=9B=E9=94=80?= =?UTF-8?q?=E5=AD=98=E6=8A=A5=E8=A1=A8=E9=80=9A=E8=BF=87=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E3=80=81=E5=90=8D=E7=A7=B0=E6=9F=A5=E8=AF=A2=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=9B=203.=E9=9B=B6=E5=94=AE?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=BC=80=E5=8D=95=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E9=9D=9E=E4=BC=9A=E5=91=98=E6=89=8B=E6=9C=BA?= =?UTF-8?q?=E5=8F=B7=E4=B8=BA=E7=A9=BA=E7=9A=84=E6=83=85=E5=86=B5=EF=BC=9B?= =?UTF-8?q?=204.=E4=BF=AE=E5=A4=8D=E5=BA=93=E5=AD=98=E8=B0=83=E6=8B=A8?= =?UTF-8?q?=E3=80=81=E5=BA=93=E5=AD=98=E5=8F=98=E5=8A=A8=E3=80=81=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E8=AE=A2=E5=8D=95=E3=80=81=E4=BE=9B=E5=BA=94=E5=95=86?= =?UTF-8?q?=E7=AD=89=E5=8A=9F=E8=83=BD=E7=BC=96=E8=BE=91=E6=97=B6=E9=83=A8?= =?UTF-8?q?=E5=88=86=E6=95=B0=E6=8D=AE=E4=B8=8D=E8=83=BD=E7=BD=AE=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=EF=BC=8C=E4=B8=94=E5=88=9B=E5=BB=BA=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E4=BC=9A=E6=9B=B4=E6=96=B0=E4=B8=BA=E7=A9=BA=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/apis/basic/commodity.go | 2 +- app/admin/apis/basic/supplier.go | 42 +++++--- app/admin/apis/erpordermanage/erp_order.go | 10 ++ app/admin/models/decision.go | 17 +-- app/admin/models/erp_order.go | 119 ++++++++++++--------- app/admin/models/inventory_allot.go | 2 +- app/admin/models/inventory_change.go | 2 +- app/admin/models/inventory_product.go | 2 +- app/admin/models/purchase.go | 3 +- 9 files changed, 120 insertions(+), 79 deletions(-) diff --git a/app/admin/apis/basic/commodity.go b/app/admin/apis/basic/commodity.go index 520b4db..422021d 100644 --- a/app/admin/apis/basic/commodity.go +++ b/app/admin/apis/basic/commodity.go @@ -330,7 +330,7 @@ func CommodityEdit(c *gin.Context) { } begin := orm.Eloquent.Begin() - err = begin.Save(commodity).Error + err = begin.Omit("created_at").Save(commodity).Error if err != nil { logger.Error("create commodity err:", logger.Field("err", err)) app.Error(c, http.StatusInternalServerError, err, "操作失败") diff --git a/app/admin/apis/basic/supplier.go b/app/admin/apis/basic/supplier.go index 6225c89..f2f5af0 100644 --- a/app/admin/apis/basic/supplier.go +++ b/app/admin/apis/basic/supplier.go @@ -115,22 +115,32 @@ func SupplierUpdate(c *gin.Context) { app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误") return } + + var supplierInfo models.Supplier + err := orm.Eloquent.Model(models.Supplier{}).Where("id", req.Id).Find(&supplierInfo).Error + if err != nil || err == models.RecordNotFound { + app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误") + return + } + supplier := &models.Supplier{ - Name: req.Name, - Contact: req.Contact, - Tel: req.Tel, - Address: req.Address, - OpeningBank: req.OpeningBank, - BankAccount: req.BankAccount, - PaymentCycle: req.PaymentCycle, - TaxNumber: req.TaxNumber, - Landline: req.Landline, - Email: req.Email, - CompanyWebsite: req.CompanyWebsite, - Province: req.Province, - City: req.City, - Area: req.Area, - AccountHolder: req.AccountHolder, + Number: supplierInfo.Number, + Name: req.Name, + Contact: req.Contact, + Tel: req.Tel, + Address: req.Address, + OpeningBank: req.OpeningBank, + BankAccount: req.BankAccount, + PaymentCycle: req.PaymentCycle, + TaxNumber: req.TaxNumber, + Landline: req.Landline, + Email: req.Email, + CompanyWebsite: req.CompanyWebsite, + Province: req.Province, + City: req.City, + Area: req.Area, + AccountHolder: req.AccountHolder, + CooperativeBusinessId: middleware.GetCooperativeBusinessId(c), } if len(req.BankList) != 0 { @@ -144,7 +154,7 @@ func SupplierUpdate(c *gin.Context) { supplier.BankData = "" } - err := orm.Eloquent.Where("id", req.Id).Updates(supplier).Error + err = orm.Eloquent.Where("id", req.Id).Omit("created_at").Save(&supplier).Error if err != nil { logger.Error("update supplier err :", logger.Field("err", err), logger.Field("s", supplier)) app.Error(c, http.StatusInternalServerError, err, "更新失败") diff --git a/app/admin/apis/erpordermanage/erp_order.go b/app/admin/apis/erpordermanage/erp_order.go index 07980c2..b8d5284 100644 --- a/app/admin/apis/erpordermanage/erp_order.go +++ b/app/admin/apis/erpordermanage/erp_order.go @@ -35,6 +35,11 @@ func ErpOrderCreate(c *gin.Context) { return } + // 如果用户是会员,手机号不能为空 + if req.MemberType == model.ErpOrderMemberTypeMember && req.Tel == "" { + app.Error(c, http.StatusBadRequest, errors.New("参数错误:缺少会员手机号"), "参数错误:缺少会员手机号") + } + err = model.CreateErpOrder(req, c) if err != nil { logger.Error("CreateErpOrder err:", logger.Field("err", err)) @@ -68,6 +73,11 @@ func ErpOrderEdit(c *gin.Context) { return } + // 如果用户是会员,手机号不能为空 + if req.MemberType == model.ErpOrderMemberTypeMember && req.Tel == "" { + app.Error(c, http.StatusBadRequest, errors.New("参数错误:缺少会员手机号"), "参数错误:缺少会员手机号") + } + err = model.EditErpOrder(req, c) if err != nil { logger.Error("EditErpOrder err:", logger.Field("err", err)) diff --git a/app/admin/models/decision.go b/app/admin/models/decision.go index 34594de..9d917b3 100644 --- a/app/admin/models/decision.go +++ b/app/admin/models/decision.go @@ -125,7 +125,7 @@ func (m *ErpDecisionReportReq) DecisionReportList(c *gin.Context) (*ErpDecisionR storeIDs = append(storeIDs, store) } if len(storeIDs) == 1 { - qs = qs.Where("store_id IN = ?", storeIDs[0]) + qs = qs.Where("store_id = ?", storeIDs[0]) } else { qs = qs.Where("store_id IN (?)", storeIDs) } @@ -422,6 +422,7 @@ func calculateInventoryReport(m *ErpDecisionReportReq, item ErpStock) (DecisionR return reportData, nil } +// 查询期初库存和金额 func getSystemStartCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionReportData, error) { var reportData DecisionReportData @@ -1556,9 +1557,9 @@ func getSumStartCount(req *ErpDecisionReportReq) (DecisionReportData, error) { storeIDs = append(storeIDs, store) } if len(storeIDs) == 1 { - qs = qs.Where("store_id IN = ?", storeIDs[0]) - es = es.Where("store_id IN = ?", storeIDs[0]) - ts = ts.Where("store_id IN = ?", storeIDs[0]) + qs = qs.Where("store_id = ?", storeIDs[0]) + es = es.Where("store_id = ?", storeIDs[0]) + ts = ts.Where("store_id = ?", storeIDs[0]) } else { qs = qs.Where("store_id IN (?)", storeIDs) es = es.Where("store_id IN (?)", storeIDs) @@ -1697,8 +1698,8 @@ func getSumEndCount(req *ErpDecisionReportReq) (DecisionReportData, error) { storeIDs = append(storeIDs, store) } if len(storeIDs) == 1 { - qs = qs.Where("store_id IN = ?", storeIDs[0]) - es = es.Where("store_id IN = ?", storeIDs[0]) + qs = qs.Where("store_id = ?", storeIDs[0]) + es = es.Where("store_id = ?", storeIDs[0]) } else { qs = qs.Where("store_id IN (?)", storeIDs) es = es.Where("store_id IN (?)", storeIDs) @@ -2140,9 +2141,9 @@ func getSumAllotData(req *ErpDecisionReportReq) (DecisionReportData, error) { categoryIDs = append(categoryIDs, category) } if len(categoryIDs) == 1 { - qs = qs.Where("erp_inventory_allot_commodity.erp_category_id = ?", categoryIDs[0]) + qs = qs.Where("erp_inventory_allot_commodity.category_id = ?", categoryIDs[0]) } else { - qs = qs.Where("erp_inventory_allot_commodity.erp_category_id IN (?)", categoryIDs) + qs = qs.Where("erp_inventory_allot_commodity.category_id IN (?)", categoryIDs) } } diff --git a/app/admin/models/erp_order.go b/app/admin/models/erp_order.go index 0cd8a12..2fb5cfd 100644 --- a/app/admin/models/erp_order.go +++ b/app/admin/models/erp_order.go @@ -175,7 +175,7 @@ type ErpOrderCreateReq struct { StoreId uint32 `json:"store_id" binding:"required"` // 门店id StoreName string `json:"store_name" binding:"required"` // 门店名称 RetailType string `json:"retail_type" binding:"required"` // 销售类型:sale 零售销售; rejected 零售退货 - Tel string `json:"tel" binding:"required"` // 会员手机号 + Tel string `json:"tel"` // 会员手机号 MemberType string `json:"member_type" binding:"required"` // 会员类型:general 普通; member 会员 TotalRetailPrice float64 `json:"total_retail_price"` // 订单总指导零售价:如果是赠送商品,金额可以为0 TotalAmount float64 `json:"total_amount"` // 订单实收金额:如果只有1个赠送商品,金额可以为0 @@ -730,6 +730,10 @@ func QueryListByCommodityName(req *ErpOrderListReq, showConfig string, c *gin.Co qs = qs.Where("invoice_code != ?", 0) } + if req.BillSn != "" { + qs = qs.Where("erp_order.bill_sn=?", req.BillSn) + } + if req.Tel != "" { // 用户手机号 qs = qs.Where("erp_order.tel=?", req.Tel) } @@ -4953,29 +4957,31 @@ func CreateErpOrder(req *ErpOrderCreateReq, c *gin.Context) error { } begin := orm.Eloquent.Begin() - // 0-创建用户信息 - userInfo, err := GetUserInfoByTel(req.Tel) - if err != nil { - logger.Error("checkOrderData GetUserInfoByTel err:", logger.Field("err", err)) - return errors.New("操作失败:" + err.Error()) - } - - if userInfo.Uid == 0 { - user := UserInfo{ - Uid: uint32(erpOrder.Uid), - Tel: req.Tel, - StoreId: uint64(req.StoreId), - UserType: UserTypeConsumer, // 用户 - OpenMemberLevel: MemberLevelConsumer, // 普通用户 - MemberLevel: MemberLevelConsumer, // 普通用户 - CooperativeBusinessId: 1, // 合作商默认为1 - } - err = begin.Create(&user).Error + if req.Tel != "" { + // 0-创建用户信息 + userInfo, err := GetUserInfoByTel(req.Tel) if err != nil { - begin.Rollback() - logger.Error("create user err:", logger.Field("err", err)) + logger.Error("checkOrderData GetUserInfoByTel err:", logger.Field("err", err)) return errors.New("操作失败:" + err.Error()) } + + if userInfo.Uid == 0 { + user := UserInfo{ + Uid: uint32(erpOrder.Uid), + Tel: req.Tel, + StoreId: uint64(req.StoreId), + UserType: UserTypeConsumer, // 用户 + OpenMemberLevel: MemberLevelConsumer, // 普通用户 + MemberLevel: MemberLevelConsumer, // 普通用户 + CooperativeBusinessId: 1, // 合作商默认为1 + } + err = begin.Create(&user).Error + if err != nil { + begin.Rollback() + logger.Error("create user err:", logger.Field("err", err)) + return errors.New("操作失败:" + err.Error()) + } + } } // 1-创建零售订单 @@ -5063,7 +5069,8 @@ func EditErpOrder(req *ErpOrderCreateReq, c *gin.Context) error { erpOrder.BillSn = orderInfo.BillSn // 编辑的订单单据号不能改变 begin := orm.Eloquent.Begin() // 1-更新零售订单 - err = begin.Model(&ErpOrder{}).Where("id = ?", orderInfo.ID).Updates(erpOrder).Error + //err = begin.Model(&ErpOrder{}).Where("id = ?", orderInfo.ID).Updates(erpOrder).Error + err = begin.Model(&ErpOrder{}).Where("id = ?", orderInfo.ID).Save(&erpOrder).Error if err != nil { begin.Rollback() logger.Error("update erp_order err:", logger.Field("err", err)) @@ -5185,18 +5192,20 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) { return nil, errors.New("操作失败:" + err.Error()) } - // 通过手机号查询用户id,如果没有,则新建一个用户id - userInfo, err := GetUserInfoByTel(req.Tel) - if err != nil { - logger.Error("checkOrderData GetUserInfoByTel err:", logger.Field("err", err)) - return nil, errors.New("操作失败:" + err.Error()) - } - var userUid uint32 - if userInfo.Uid == 0 { - userUid = CreateUid() // 没有用户则新建 - } else { - userUid = userInfo.Uid + if req.Tel != "" { + // 通过手机号查询用户id,如果没有,则新建一个用户id + userInfo, err := GetUserInfoByTel(req.Tel) + if err != nil { + logger.Error("checkOrderData GetUserInfoByTel err:", logger.Field("err", err)) + return nil, errors.New("操作失败:" + err.Error()) + } + + if userInfo.Uid == 0 { + userUid = CreateUid() // 没有用户则新建 + } else { + userUid = userInfo.Uid + } } erpOrder := &ErpOrder{ @@ -5277,7 +5286,9 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) { } // 更新用户信息表,添加首次零售订单时间 - SetUserInfo(req.Tel) + if req.Tel != "" { + SetUserInfo(req.Tel) + } } //var orderCommodityMap map[uint32]ErpOrderCommodity @@ -5580,25 +5591,32 @@ func checkRejectedOrderRule(req *ErpOrderCreateReq) (uint32, error) { rejectOrderSalesMap := make(map[string]bool) for _, item := range req.ErpOrderCommodities { // 查询退货商品之前的销售情况 - if item.IMEIType == NoIMEICommodity { //非串码商品 - var commodities []ErpOrderCommodity - err := orm.Eloquent.Table("erp_order_commodity"). - Joins("JOIN erp_order ON erp_order_commodity.erp_order_id = erp_order.id "). - Where("erp_order_commodity.erp_commodity_id = ? and erp_order.store_id = ? "+ - "and erp_order.retail_type = ? and erp_order.pay_status = ? and erp_order.tel = ?", - item.ErpCommodityId, req.StoreId, RetailTypeSale, HavePaid, req.Tel). - Find(&commodities).Order("audit_time DESC").Error - if err != nil { - logger.Error("query erp_order_commodity err:", logger.Field("err", err)) - return 0, errors.New("操作失败:" + err.Error()) - } + if item.IMEIType == NoIMEICommodity { + var saleOrderId uint32 + if req.Tel != "" { //非串码商品,且手机号不为空才校验 + var commodities []ErpOrderCommodity + err := orm.Eloquent.Table("erp_order_commodity"). + Joins("JOIN erp_order ON erp_order_commodity.erp_order_id = erp_order.id "). + Where("erp_order_commodity.erp_commodity_id = ? and erp_order.store_id = ? "+ + "and erp_order.retail_type = ? and erp_order.pay_status = ? and erp_order.tel = ?", + item.ErpCommodityId, req.StoreId, RetailTypeSale, HavePaid, req.Tel). + Find(&commodities).Order("audit_time DESC").Error + if err != nil { + logger.Error("query erp_order_commodity err:", logger.Field("err", err)) + return 0, errors.New("操作失败:" + err.Error()) + } - if len(commodities) == 0 { - return 0, errors.New(fmt.Sprintf("未查询到商品[%s]销售情况", item.ErpCommodityName)) + if len(commodities) == 0 { + return 0, errors.New(fmt.Sprintf("未查询到商品[%s]销售情况", item.ErpCommodityName)) + } + + saleOrderId = commodities[0].ErpOrderId + } else { + saleOrderId = item.ErpOrderId } var orderInfo ErpOrder - err = orm.Eloquent.Table("erp_order").Where("id = ?", commodities[0].ErpOrderId). + err := orm.Eloquent.Table("erp_order").Where("id = ?", saleOrderId). Find(&orderInfo).Error if err != nil { logger.Error("query erp_order err:", logger.Field("err", err)) @@ -5613,6 +5631,7 @@ func checkRejectedOrderRule(req *ErpOrderCreateReq) (uint32, error) { return 0, errors.New("只可添加相同零售订单的商品") } salesId = orderInfo.ID + } else { // 串码商品 if item.IMEI == "" { return 0, errors.New("退货商品串码为空") @@ -5683,7 +5702,7 @@ func updateCommodityData(gdb *gorm.DB, orderId uint32, req *ErpOrderCreateReq) e for i, _ := range req.ErpOrderCommodities { req.ErpOrderCommodities[i].ID = 0 - if req.ErpOrderCommodities[i].ErpOrderId == 0 { //发现前端有时会没传,后端打补丁 + if req.ErpOrderCommodities[i].ErpOrderId == 0 || req.ErpOrderCommodities[i].ErpOrderId != orderId { //发现前端有时会没传,后端打补丁 req.ErpOrderCommodities[i].ErpOrderId = orderId } } diff --git a/app/admin/models/inventory_allot.go b/app/admin/models/inventory_allot.go index 0ba0a9d..3dd3f49 100644 --- a/app/admin/models/inventory_allot.go +++ b/app/admin/models/inventory_allot.go @@ -351,7 +351,7 @@ func EditAllotInventory(req *InventoryAllotEditReq) (*ErpInventoryAllotOrder, er inventoryAllotOrder.TotalCount = nTotalCount err = begin.Model(&ErpInventoryAllotOrder{}).Where("id = ?", inventoryAllotOrder.ID). - Updates(inventoryAllotOrder).Error + Omit("created_at").Save(inventoryAllotOrder).Error if err != nil { begin.Rollback() logger.Error("update allot order err:", logger.Field("err", err)) diff --git a/app/admin/models/inventory_change.go b/app/admin/models/inventory_change.go index fbc7aa8..5672173 100644 --- a/app/admin/models/inventory_change.go +++ b/app/admin/models/inventory_change.go @@ -356,7 +356,7 @@ func EditChangeInventory(req *InventoryChangeEditReq) (*ErpInventoryChangeOrder, inventoryChangeOrder.TotalAmount = nTotalAmount err = begin.Model(&ErpInventoryChangeOrder{}).Where("id = ?", inventoryChangeOrder.ID). - Updates(inventoryChangeOrder).Error + Omit("created_at").Save(inventoryChangeOrder).Error if err != nil { begin.Rollback() logger.Error("update change order err:", logger.Field("err", err)) diff --git a/app/admin/models/inventory_product.go b/app/admin/models/inventory_product.go index bc00eb3..039720e 100644 --- a/app/admin/models/inventory_product.go +++ b/app/admin/models/inventory_product.go @@ -339,7 +339,7 @@ func EditProductInventory(req *ProductInventoryEditReq) (*ErpInventoryProductOrd inventoryProductOrder.TotalAmount = nTotalAmount err = begin.Model(&ErpInventoryProductOrder{}).Where("id = ?", inventoryProductOrder.ID). - Updates(inventoryProductOrder).Error + Omit("created_at").Save(inventoryProductOrder).Error if err != nil { begin.Rollback() logger.Error("update erp_order err:", logger.Field("err", err)) diff --git a/app/admin/models/purchase.go b/app/admin/models/purchase.go index ed40f06..73a32e9 100644 --- a/app/admin/models/purchase.go +++ b/app/admin/models/purchase.go @@ -1022,7 +1022,8 @@ func EditErpPurchaseOrder(req *ErpPurchaseEditReq, sysUser *SysUser) (*ErpPurcha return nil, err } - err = begin.Model(&ErpPurchaseOrder{}).Where("id = ?", req.ErpPurchaseOrderId).Updates(purchaseOrder).Error + err = begin.Model(&ErpPurchaseOrder{}).Where("id = ?", req.ErpPurchaseOrderId). + Omit("created_at").Save(purchaseOrder).Error if err != nil { begin.Rollback() logger.Error("update erp_order err:", logger.Field("err", err))