fix:
This commit is contained in:
parent
39a1f1f028
commit
41e41bf444
|
@ -42,7 +42,7 @@ func ErpOrderCreate(c *gin.Context) {
|
|||
ErpOrderCommodities []model.ErpOrderCommodity `json:"erp_order_commodities"`
|
||||
}{}
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
logger.Error(err)
|
||||
logger.Error("para err:", err)
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
|
@ -231,6 +231,211 @@ func ErpOrderCreate(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
func ErpOrderModify(c *gin.Context) {
|
||||
req := struct {
|
||||
//StoreId uint32 `json:"store_id"`
|
||||
Id uint32 `json:"id" binding:"required"`
|
||||
Cashiers []model.ErpCashier `json:"cashiers" binding:"required"`
|
||||
Salesman1 uint32 `json:"salesman_1" binding:"required"`
|
||||
Salesman2 uint32 `json:"salesman_2"`
|
||||
RetailType string `json:"retail_type" binding:"required"`
|
||||
Tel string `json:"tel" binding:"required"`
|
||||
MemberType string `json:"member_type"` // 会员类型:
|
||||
ErpOrderCommodities []model.ErpOrderCommodity `json:"erp_order_commodities"`
|
||||
}{}
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
logger.Error("para err:", err)
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
|
||||
if len(req.Cashiers) == 0 {
|
||||
logger.Error("cashiers is nil")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
if len(req.ErpOrderCommodities) == 0 {
|
||||
logger.Error("commodities is nil")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
jCashier, err := json.Marshal(req.Cashiers)
|
||||
if err != nil {
|
||||
logger.Error("cashiers marshal err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
|
||||
//uc := &auth.UserClaims{Uid: 8588420}
|
||||
assistant := model.GetUserByUid(uc.Uid)
|
||||
if assistant.UserType != 2 {
|
||||
logger.Error("not assistant")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
store, err := model.GetStore(uint32(assistant.StoreId))
|
||||
if err != nil {
|
||||
logger.Error("assistant store err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
var originErpOrder model.ErpOrder
|
||||
err = model.DB.Table("erp_order").Where("id=?", req.Id).Find(&originErpOrder).Error
|
||||
if err != nil {
|
||||
logger.Error("origin erp order err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
erpOrder := &model.ErpOrder{
|
||||
BillSn: originErpOrder.BillSn,
|
||||
RetailType: req.RetailType,
|
||||
Tel: req.Tel,
|
||||
StoreId: uint32(assistant.StoreId),
|
||||
StoreName: store.Name,
|
||||
MakerId: uint32(originErpOrder.MakerId),
|
||||
MakerName: originErpOrder.MakerName,
|
||||
CashierList: string(jCashier),
|
||||
Salesman1: req.Salesman1,
|
||||
Salesman2: req.Salesman2,
|
||||
MemberType: req.MemberType,
|
||||
State: model.ErpOrderStateUnAudit,
|
||||
}
|
||||
erpOrder.ID = req.Id
|
||||
commodityMap := make(map[uint32]model.ErpCommodity)
|
||||
if req.RetailType == model.RetailTypeSale {
|
||||
commodityIds := make([]uint32, 0, len(req.ErpOrderCommodities))
|
||||
for i, _ := range req.ErpOrderCommodities {
|
||||
commodityIds = append(commodityIds, req.ErpOrderCommodities[i].ErpCommodityId)
|
||||
}
|
||||
var commodities []model.ErpCommodity
|
||||
err = model.DB.Table("erp_commodity").Where("id IN (?)", commodityIds).Find(&commodities).Error
|
||||
if err != nil {
|
||||
logger.Error("commodities err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
for i, _ := range commodities {
|
||||
commodityMap[commodities[i].ID] = commodities[i]
|
||||
}
|
||||
|
||||
model.SetUserInfo(req.Tel)
|
||||
}
|
||||
|
||||
var orderCommodityMap map[uint32]model.ErpOrderCommodity
|
||||
if req.RetailType == model.RetailTypeRejected {
|
||||
ids := make([]uint32, 0, len(req.ErpOrderCommodities))
|
||||
for i, _ := range req.ErpOrderCommodities {
|
||||
ids = append(ids, req.ErpOrderCommodities[i].RejectedOrderCommodityId)
|
||||
}
|
||||
orderCommodityMap, err = model.GetErpOrderCommodityMap(ids)
|
||||
if err != nil {
|
||||
logger.Error("order commodity map err:", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
begin := model.DB.Begin()
|
||||
err = begin.Table("erp_order_commodity").Where("erp_order_id=?", req.Id).Delete(&model.ErpOrderCommodity{}).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("commodities err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
err = begin.Save(erpOrder).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("create erp order err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
for i, _ := range req.ErpOrderCommodities {
|
||||
req.ErpOrderCommodities[i].ErpOrderId = erpOrder.ID
|
||||
|
||||
if req.RetailType == model.RetailTypeRejected {
|
||||
v, ok := orderCommodityMap[req.ErpOrderCommodities[i].RejectedOrderCommodityId]
|
||||
if ok {
|
||||
v.RejectedPrice = req.ErpOrderCommodities[i].RejectedPrice
|
||||
v.RejectedCount = req.ErpOrderCommodities[i].RejectedCount
|
||||
v.RejectedAmount = v.RejectedCount * v.RejectedPrice
|
||||
} else {
|
||||
logger.Error("rejected order commodity id is null")
|
||||
return
|
||||
}
|
||||
v.ID = 0
|
||||
req.ErpOrderCommodities[i] = v
|
||||
// 添加库存 TODO
|
||||
if req.ErpOrderCommodities[i].RejectedPrice > req.ErpOrderCommodities[i].RetailPrice {
|
||||
logger.Error("rejected price gt retail price ")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
if req.ErpOrderCommodities[i].RejectedCount > req.ErpOrderCommodities[i].Count {
|
||||
logger.Error("rejected count gt retail count ")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
} else if req.RetailType == model.RetailTypeSale {
|
||||
|
||||
v, ok := commodityMap[req.ErpOrderCommodities[i].ErpCommodityId]
|
||||
if ok {
|
||||
req.ErpOrderCommodities[i].ErpCommodityName = v.Name
|
||||
req.ErpOrderCommodities[i].ErpCategoryId = v.ErpCategoryId
|
||||
req.ErpOrderCommodities[i].ErpCategoryName = v.ErpCategoryName
|
||||
req.ErpOrderCommodities[i].RetailPrice = v.RetailPrice
|
||||
//req.ErpOrderCommodities[i].MemberPrice = v.MemberPrice
|
||||
}
|
||||
if req.ErpOrderCommodities[i].PresentType == 2 {
|
||||
req.ErpOrderCommodities[i].RetailPrice = 0
|
||||
}
|
||||
|
||||
// 减库存 TODO
|
||||
if erpOrder.MemberType == model.ErpOrderMemberTypeMember {
|
||||
req.ErpOrderCommodities[i].Amount = req.ErpOrderCommodities[i].Count * req.ErpOrderCommodities[i].MemberPrice
|
||||
} else {
|
||||
req.ErpOrderCommodities[i].Amount = req.ErpOrderCommodities[i].Count * req.ErpOrderCommodities[i].RetailPrice
|
||||
}
|
||||
}
|
||||
|
||||
erpOrder.TotalAmount += req.ErpOrderCommodities[i].Amount
|
||||
erpOrder.TotalCount += req.ErpOrderCommodities[i].Count
|
||||
}
|
||||
|
||||
for _, commodity := range req.ErpOrderCommodities {
|
||||
err = begin.Create(&commodity).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("create erp order commodities err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
}
|
||||
err = begin.Commit().Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("commit err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
erpOrder.Commodities = req.ErpOrderCommodities
|
||||
erpOrder.Cashiers = req.Cashiers
|
||||
|
||||
RespOK(c, erpOrder)
|
||||
return
|
||||
}
|
||||
|
||||
func ErpOrderDetail(c *gin.Context) {
|
||||
req := &struct {
|
||||
ErpOrderId uint32 `json:"erp_order_id"`
|
||||
|
@ -352,8 +557,27 @@ func ErpOrderAudit(c *gin.Context) {
|
|||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
|
||||
err := model.DB.Table("erp_order").Where("id = ?", req.ErpOrderId).Update("state", model.ErpOrderStateAudited).Error
|
||||
//uc = &auth.UserClaims{Uid: 8588420}
|
||||
assistant := model.GetUserByUid(uc.Uid)
|
||||
if assistant.UserType != 2 {
|
||||
logger.Error("not assistant")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
err := model.DB.Table("erp_order").Where("id = ?", req.ErpOrderId).Updates(map[string]interface{}{
|
||||
"state": model.ErpOrderStateAudited,
|
||||
"audit_time": time.Now(),
|
||||
"auditor_id": uc.Uid,
|
||||
"auditor_name": assistant.ShopAssistantName,
|
||||
}).Error
|
||||
if err != nil {
|
||||
logger.Error("order err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
|
|
|
@ -288,6 +288,7 @@ func ConfigAppRouter(r gin.IRouter) {
|
|||
retail.Use(auth.UserAccessAuth)
|
||||
retail.POST("order/list", controller.ErpOrderList)
|
||||
retail.POST("order/create", controller.ErpOrderCreate)
|
||||
retail.POST("order_modify", controller.ErpOrderModify)
|
||||
retail.POST("order_detail", controller.ErpOrderDetail)
|
||||
retail.POST("shop_assistant_list", controller.ShopAssistantList)
|
||||
retail.POST("order_audit", controller.ErpOrderAudit)
|
||||
|
|
Loading…
Reference in New Issue
Block a user