1.修复编辑商品资料后更新创建时间为空的缺陷;
2.修复进销存报表通过分类、名称查询报错的问题; 3.零售订单开单优化,允许非会员手机号为空的情况; 4.修复库存调拨、库存变动、采购订单、供应商等功能编辑时部分数据不能置为空,且创建时间会更新为空的问题;
This commit is contained in:
parent
2033896d43
commit
e45772ab7c
|
@ -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, "操作失败")
|
||||
|
|
|
@ -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, "更新失败")
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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))
|
||||
|
|
Loading…
Reference in New Issue
Block a user