type Virtual struct {
Ts *gorm.DB
}
// VirtualWarehouseAdd 入库
func (vir *Virtual) VirtualWarehouseAdd(info *VirtualWarehouseInfo) error {
var Vir VirtualWarehouse
utils.Error(vir.Ts.Table("virtual_warehouse").
Select("total_num, ver, virid, bid, cid, shop_id, prodict_id, cbecskuid").
Scan(&Vir).Error)
if Vir.Virid == info.Virid &&
Vir.Bid == info.Bid &&
Vir.Cid == info.Cid &&
Vir.Cbecskuid == info.Cbecskuid &&
Vir.ShopId == info.ShopId {
utils.Error(vir.Ts.Table("virtual_warehouse").
Where("ver = ?", Vir.Ver).
Updates(map[string]interface{}{
"ver": gorm.Expr("ver + ?", 1),
"total_num": gorm.Expr("total_num + ?", info.Num),
}).Error)
InfoAdd(info, "1")
} else if info.Virid > 0 &&
info.Bid > 0 &&
info.Cid != "" &&
info.Cbecskuid != "" &&
info.ShopId > 0 {
InfoAdd(info, "1")
f := model.TbVirtualWarehouse{
WarehouseStatus: model.Delete,
Status: model.Normal,
Ctime: time.Now().Unix(),
Ver: 0,
}
utils.Error(vir.Ts.Table(model.TbSystemNotice{}.TableName()).Create(&f).Error)
} else {
return errors.New("参数错误")
}
return nil
}
// VirtualWarehouseDel 出库
func (vir *Virtual) VirtualWarehouseDel(info *VirtualWarehouseInfo) error {
var Vir VirtualWarehouse
utils.Error(vir.Ts.Table("virtual_warehouse").
Select("total_num, ver").
Scan(&Vir).Error)
if Vir.TotalNum > info.Num {
utils.Error(vir.Ts.Table("virtual_warehouse").
Where("ver = ?", Vir.Ver).
Updates(map[string]interface{}{
"ver": gorm.Expr("ver + ?", 1),
"total_num": gorm.Expr("total_num - ?", info.Num),
}).Error)
InfoAdd(info, "2")
} else if Vir.TotalNum == info.Num {
utils.Error(vir.Ts.Table("virtual_warehouse").
Where("ver = ?", Vir.Ver).
Updates(map[string]interface{}{
"ver": gorm.Expr("ver + ?", 1),
"warehouseStatus": 0,
"total_num": gorm.Expr("total_num - ?", info.Num),
}).Error)
InfoAdd(info, "2")
} else {
return errors.New("仓库数量不足")
}
return nil
}
// 出入库列表添加
func InfoAdd(info *VirtualWarehouseInfo, Type string) {
var a *gorm.DB
var id string
switch Type {
case "1":
id = "IN" + idGenerate.ID.Generate(idGenerate.Other)
case "2":
id = "OUT" + idGenerate.ID.Generate(idGenerate.Other)
}
f := model.TbVirtualWarehouseInfo{
InOutType: Type, //出入类型 1入库 2出库
InoutOrderNo: id, //出入库单号
InoutTime: time.Now().Unix(), //出入库时间
Status: "0",
Ctime: time.Now().Unix(),
Ver: 0,
}
utils.Error(copier.Copy(&f, info))
utils.Error(a.Table(model.TbSystemNotice{}.TableName()).Create(&f).Error)
}
最新发布