1.修复缺陷;

2.新增系统生成串码接口;
This commit is contained in:
chenlin 2024-04-22 09:51:41 +08:00
parent 82639e2076
commit 55b2ddd8ef
15 changed files with 922 additions and 618 deletions

View File

@ -13,35 +13,17 @@ import (
"net/http"
)
type CommodityCreateRequest struct {
Name string `json:"name" binding:"required"` // 商品名称
ErpCategoryId uint32 `json:"erp_category_id" binding:"required"` // 商品分类id
IsIMEI uint32 `json:"is_imei" binding:"required"` // 是否串码1-串码类 2-非串码
ErpBarcode string `json:"erp_barcode"` // 商品条码
IMEIType uint32 `json:"imei_type"` // 系统生成串码2-是(系统生成) 3-否(手动添加)
ErpSupplierId uint32 `json:"erp_supplier_id" binding:"required"` // 主供应商
RetailPrice float64 `json:"retail_price"` // 指导零售价
MinRetailPrice float64 `json:"min_retail_price"` // 最低零售价
StaffCostPrice float64 `json:"staff_cost_price"` // 员工成本价加价
WholesalePrice float64 `json:"wholesale_price"` // 指导采购价
Brokerage1 float64 `json:"brokerage_1"` // 销售毛利提成
Brokerage2 float64 `json:"brokerage_2"` // 员工毛利提成
MemberDiscount float64 `json:"member_discount"` // 会员优惠
Origin string `json:"origin"` // 产地
Remark string `json:"remark" gorm:"type:varchar(512)"` // 备注
}
// CommodityCreate 新增商品
// @Summary 新增商品
// @Tags 商品资料
// @Produce json
// @Accept json
// @Param request body CommodityCreateRequest true "商品新增模型"
// @Param request body models.CommodityCreateRequest true "商品新增模型"
// @Success 200 {object} models.ErpCommodity
// @Router /api/v1/commodity/create [post]
// 规则:商品名称/商品编号相同则为同一商品,创建的时候由于商品编号不重复,无需判断
func CommodityCreate(c *gin.Context) {
var req = new(CommodityCreateRequest)
var req = new(models.CommodityCreateRequest)
err := c.ShouldBindJSON(&req)
if err != nil {
@ -175,21 +157,16 @@ func CommodityList(c *gin.Context) {
return
}
type CommodityDetailRequest struct {
ErpCommodityId uint32 `json:"erp_commodity_id"` // 商品id
SerialNumber string `json:"serial_number"` // 商品编号
}
// CommodityDetail 商品详情
// @Summary 商品详情
// @Tags 商品资料
// @Produce json
// @Accept json
// @Param request body CommodityDetailRequest true "商品详情模型"
// @Param request body models.CommodityDetailRequest true "商品详情模型"
// @Success 200 {object} models.ErpCommodity
// @Router /api/v1/commodity/detail [post]
func CommodityDetail(c *gin.Context) {
var req = new(CommodityDetailRequest)
var req = new(models.CommodityDetailRequest)
if err := c.ShouldBindJSON(&req); err != nil {
//logger.Error(err)
@ -232,35 +209,16 @@ func CommodityDetail(c *gin.Context) {
return
}
type CommodityEditRequest struct {
Id uint32 `json:"id" binding:"required"` // 商品id
Name string `json:"name" binding:"required"` // 商品名称
ErpCategoryId uint32 `json:"erp_category_id" binding:"required"` // 商品分类id
ErpBarcode string `json:"erp_barcode"` // 商品条码
IsIMEI uint32 `json:"is_imei" binding:"required"` // 是否串码1-串码类 2-非串码
IMEIType uint32 `json:"imei_type" binding:"required"` // 1-无串码 2-串码(系统生成) 3-串码(手动添加)
ErpSupplierId uint32 `json:"erp_supplier_id" binding:"required"` // 主供应商id
RetailPrice float64 `json:"retail_price"` // 指导零售价
MinRetailPrice float64 `json:"min_retail_price"` // 最低零售价
StaffCostPrice float64 `json:"staff_cost_price"` // 员工成本价加价
WholesalePrice float64 `json:"wholesale_price"` // 指导采购价
Brokerage1 float64 `json:"brokerage_1"` // 销售毛利提成
Brokerage2 float64 `json:"brokerage_2"` // 员工毛利提成
MemberDiscount float64 `json:"member_discount"` // 会员优惠
Origin string `json:"origin"` // 产地
Remark string `json:"remark" gorm:"type:varchar(512)"` // 备注
}
// CommodityEdit 编辑商品
// @Summary 编辑商品
// @Tags 商品资料
// @Produce json
// @Accept json
// @Param request body CommodityEditRequest true "编辑商品模型"
// @Param request body models.CommodityEditRequest true "编辑商品模型"
// @Success 200 {object} models.ErpCommodity
// @Router /api/v1/commodity/edit [post]
func CommodityEdit(c *gin.Context) {
var req = new(CommodityEditRequest)
var req = new(models.CommodityEditRequest)
err := c.ShouldBindJSON(&req)
if err != nil {
@ -378,7 +336,7 @@ func CommodityEdit(c *gin.Context) {
}
// 同步更新库存表和库存商品表的"指导零售价"和"最低零售价"、"分类id"、"分类名称";库存商品表的"商品条码"
err = models.UpdateErpStockAmountInfo(begin, req.Id, req.RetailPrice, req.MinRetailPrice, barCode, commodity.ErpCategory)
err = models.UpdateErpStockAmountInfo(begin, req, barCode, commodity.ErpCategory)
if err != nil {
begin.Rollback()
logger.Error("UpdateErpStockAmountInfo err:", logger.Field("err", err))
@ -398,20 +356,16 @@ func CommodityEdit(c *gin.Context) {
return
}
type CommodityDelRequest struct {
ErpCommodityId uint32 `json:"erp_commodity_id" binding:"required"` // 商品id
}
// CommodityDel 删除商品
// @Summary 删除商品
// @Tags 商品资料
// @Produce json
// @Accept json
// @Param request body CommodityDelRequest true "删除商品模型"
// @Param request body models.CommodityDelRequest true "删除商品模型"
// @Success 200 {object} app.Response
// @Router /api/v1/commodity/delete [post]
func CommodityDel(c *gin.Context) {
var req = new(CommodityDelRequest)
var req = new(models.CommodityDelRequest)
if err := c.ShouldBindJSON(&req); err != nil {
//logger.Error(err)

View File

@ -214,7 +214,7 @@ func ErpOrderAudit(c *gin.Context) {
}
// 更新库存
err = model.UpdateStock(begin, erpOrder, stockState)
err = model.UpdateStock(begin, erpOrder, stockState, req.State)
if err != nil {
begin.Rollback()
logger.Error("UpdateStock err:", logger.Field("err", err))

View File

@ -98,7 +98,7 @@ func ProductInventoryAudit(c *gin.Context) {
req := &models.ProductInventoryAuditReq{}
if err := c.ShouldBindJSON(&req); err != nil {
//logger.Error(err)
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误:"+err.Error())
return
}
@ -130,8 +130,7 @@ func ProductInventoryAudit(c *gin.Context) {
func ProductInventoryDelete(c *gin.Context) {
req := &models.ProductInventoryDeleteReq{}
if err := c.ShouldBindJSON(&req); err != nil {
//logger.Error(err)
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误:"+err.Error())
return
}
@ -216,8 +215,7 @@ func ProductInventoryDelete(c *gin.Context) {
func ProductInventoryList(c *gin.Context) {
req := &models.ProductInventoryListReq{}
if err := c.ShouldBindJSON(&req); err != nil {
//logger.Error(err)
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误:"+err.Error())
return
}
@ -242,8 +240,7 @@ func ProductInventoryList(c *gin.Context) {
func ProductInventoryDetail(c *gin.Context) {
req := &models.ProductInventoryDetailReq{}
if err := c.ShouldBindJSON(&req); err != nil {
//logger.Error(err)
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误:"+err.Error())
return
}
@ -281,3 +278,53 @@ func ProductInventoryDetail(c *gin.Context) {
app.OK(c, productOrder, "查询成功")
return
}
// ProductInventoryGetIMEI 系统生成串码
// @Summary 系统生成串码
// @Tags 产品入库V1.4.0
// @Produce json
// @Accept json
// @Param request body models.ProductInventoryGetIMEIReq true "系统生成串码模型"
// @Success 200 {object} models.ProductInventoryGetIMEIResp
// @Router /api/v1/inventory/product/getIMEI [post]
func ProductInventoryGetIMEI(c *gin.Context) {
req := &models.ProductInventoryGetIMEIReq{}
if err := c.ShouldBindJSON(&req); err != nil {
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误:"+err.Error())
return
}
err := tools.Validate(req) //必填参数校验
if err != nil {
app.Error(c, http.StatusBadRequest, err, err.Error())
return
}
// 检查商品是否为串码商品,如果是,则判断是否为系统自动生成串码
commodity, err := models.GetCommodity(req.CommodityId)
if err != nil {
app.Error(c, http.StatusBadRequest, err, "获取失败")
return
}
if commodity.ID == 0 {
app.Error(c, http.StatusBadRequest, err, "获取失败商品id有误未查询到商品信息")
return
}
if commodity.IMEIType == models.NoIMEICommodity { // 非串码商品
app.Error(c, http.StatusBadRequest, errors.New("获取失败:该商品是非串码商品"), "获取失败:该商品是非串码商品")
return
}
imei, err := models.GenerateSerialCode(commodity.ErpCategoryId)
if err != nil {
logger.Error("GenerateIMEI err:", logger.Field("err", err))
app.Error(c, http.StatusBadRequest, err, "获取失败")
return
}
var resp models.ProductInventoryGetIMEIResp
resp.IMEI = imei
app.OK(c, resp, "获取成功")
return
}

View File

@ -41,10 +41,10 @@ func RecycleCardOrderList(c *gin.Context) {
req.CooperativeBusinessId = sysUser.CooperativeBusinessId
//uc = &auth.UserClaims{Uid: 8588420}
rsp, err := req.List()
rsp, err := req.List(c)
if err != nil {
logger.Error("game cassette err", err)
app.Error(c, http.StatusInternalServerError, err, "查询失败")
app.Error(c, http.StatusInternalServerError, err, "查询失败"+err.Error())
return
}

View File

@ -684,7 +684,7 @@ func (m *StockImporter) ImportStockData(colsMap []map[string]interface{}) error
return fmt.Errorf("指导采购价转换有误:[%v]", err)
}
if nStaffCostPrice < nWholesalePrice {
return fmt.Errorf("导入价格有误,员工成本价低于指导采购价")
return fmt.Errorf("导入价格有误,员工成本价低于采购价")
}
nCount, err := strconv.ParseUint(list[i].Count, 10, 32)
@ -1865,7 +1865,7 @@ type ErpStockCommodityListReq struct {
StoreId uint32 `json:"store_id"` // 门店编号
SupplierId uint32 `json:"supplier_id"` // 供应商id
State uint32 `json:"state"` // 库存状态:1-在库 2-已售 3-采购退货 4-调拨中 5-出库前端只看14
Sn string `json:"sn"` // 首次入库订单编号
OriginalSn string `json:"original_sn"` // 首次入库订单编号
StorageType uint32 `json:"storage_type"` // 首次入库方式1-系统入库 2-采购入库
StockTimeStart string `json:"stock_time_start"` // 最近入库开始时间
StockTimeEnd string `json:"stock_time_end"` // 最近入库结束时间
@ -1874,6 +1874,7 @@ type ErpStockCommodityListReq struct {
PageIndex int `json:"pageIndex"` // 页码
PageSize int `json:"pageSize"` // 每页展示数据条数
IsExport uint32 `json:"is_export"` // 是否导出excel1-导出
//Sn string `json:"sn"` // 首次入库订单编号
}
// ErpStockCommodityListResp 库存详情接口响应参数
@ -2083,7 +2084,8 @@ func (m *ErpStockCommodityListReq) buildQueryConditions(qs *gorm.DB) {
}
if m.CommodityName != "" { //商品名称
qs = qs.Where("erp_commodity_name LIKE ?", "%"+m.CommodityName+"%")
//qs = qs.Where("erp_commodity_name LIKE ?", "%"+m.CommodityName+"%")
qs = qs.Where("erp_commodity_name = ?", m.CommodityName)
}
if m.ErpCategoryId != 0 { //商品分类id
@ -2109,8 +2111,8 @@ func (m *ErpStockCommodityListReq) buildQueryConditions(qs *gorm.DB) {
qs = qs.Where("state IN (?)", defaultStates)
}
if m.Sn != "" { //首次入库订单编号
qs = qs.Where("original_sn=?", m.Sn)
if m.OriginalSn != "" { //首次入库订单编号
qs = qs.Where("original_sn=?", m.OriginalSn)
}
if m.StorageType != 0 { //首次入库方式
@ -2498,3 +2500,49 @@ func GetErpCommodityMap(ids []uint32) (map[uint32]ErpCommodity, error) {
return commodityMap, nil
}
type CommodityCreateRequest struct {
Name string `json:"name" binding:"required"` // 商品名称
ErpCategoryId uint32 `json:"erp_category_id" binding:"required"` // 商品分类id
IsIMEI uint32 `json:"is_imei" binding:"required"` // 是否串码1-串码类 2-非串码
ErpBarcode string `json:"erp_barcode"` // 商品条码
IMEIType uint32 `json:"imei_type"` // 系统生成串码2-是(系统生成) 3-否(手动添加)
ErpSupplierId uint32 `json:"erp_supplier_id" binding:"required"` // 主供应商
RetailPrice float64 `json:"retail_price"` // 指导零售价
MinRetailPrice float64 `json:"min_retail_price"` // 最低零售价
StaffCostPrice float64 `json:"staff_cost_price"` // 员工成本价加价
WholesalePrice float64 `json:"wholesale_price"` // 指导采购价
Brokerage1 float64 `json:"brokerage_1"` // 销售毛利提成
Brokerage2 float64 `json:"brokerage_2"` // 员工毛利提成
MemberDiscount float64 `json:"member_discount"` // 会员优惠
Origin string `json:"origin"` // 产地
Remark string `json:"remark" gorm:"type:varchar(512)"` // 备注
}
type CommodityEditRequest struct {
Id uint32 `json:"id" binding:"required"` // 商品id
Name string `json:"name" binding:"required"` // 商品名称
ErpCategoryId uint32 `json:"erp_category_id" binding:"required"` // 商品分类id
ErpBarcode string `json:"erp_barcode"` // 商品条码
IsIMEI uint32 `json:"is_imei" binding:"required"` // 是否串码1-串码类 2-非串码
IMEIType uint32 `json:"imei_type" binding:"required"` // 1-无串码 2-串码(系统生成) 3-串码(手动添加)
ErpSupplierId uint32 `json:"erp_supplier_id" binding:"required"` // 主供应商id
RetailPrice float64 `json:"retail_price"` // 指导零售价
MinRetailPrice float64 `json:"min_retail_price"` // 最低零售价
StaffCostPrice float64 `json:"staff_cost_price"` // 员工成本价加价
WholesalePrice float64 `json:"wholesale_price"` // 指导采购价
Brokerage1 float64 `json:"brokerage_1"` // 销售毛利提成
Brokerage2 float64 `json:"brokerage_2"` // 员工毛利提成
MemberDiscount float64 `json:"member_discount"` // 会员优惠
Origin string `json:"origin"` // 产地
Remark string `json:"remark" gorm:"type:varchar(512)"` // 备注
}
type CommodityDetailRequest struct {
ErpCommodityId uint32 `json:"erp_commodity_id"` // 商品id
SerialNumber string `json:"serial_number"` // 商品编号
}
type CommodityDelRequest struct {
ErpCommodityId uint32 `json:"erp_commodity_id" binding:"required"` // 商品id
}

View File

@ -14,6 +14,7 @@ import (
"gorm.io/gorm"
"math"
"math/rand"
"sort"
"strconv"
"strings"
"time"
@ -249,6 +250,7 @@ type ErpOrderStoreManageDataReq struct {
PageIndex int `json:"pageIndex"` // 页码
PageSize int `json:"pageSize"` // 页面条数
IsExport uint32 `json:"is_export"` // 1-导出
SortType string `json:"sort_type"` // 排序类型desc 降序、asc 升序
}
// ErpOrderStoreManageDataResp 查询门店经营出参
@ -806,7 +808,7 @@ func findRightErpStockCommodityId(idList map[uint32][]uint32, commodityId uint32
// 有串码,通过串码查找库存详情表,然后更改对应库存的状态为"在库"
// 非串码通过门店id、商品id、商品名称查找库存详情表找到状态为"已售"且时间最近的单,将其状态改为"在库"
// 同时扣减库存表对应的数量,+1
func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state int) error {
func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error {
var commodities []ErpOrderCommodity
err := orm.Eloquent.Table("erp_order_commodity").Where("erp_order_id = ?", erpOrder.ID).
Find(&commodities).Error
@ -975,7 +977,12 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state int) error {
var vmCount int
var describe, event string
if erpOrder.RetailType == RetailTypeSale && state == SoldOut { // 零售订单,而且订单已支付,更新用户积分
describe = "零售销售获得积分"
if auditState == 2 {
describe = "零售退货反审核获得积分"
} else {
describe = "零售销售获得积分"
}
event = VmEventErpOrderSale
vmCount = tools.RoundFloat64(erpOrder.TotalAmount)
} else if erpOrder.RetailType == RetailTypeRejected { // 退货订单,扣减用户积分
@ -1175,11 +1182,11 @@ func (m *ErpOrder) SetOrderSalesman() error {
item.Name = userInfo.NickName
item.SalesmanPer = staffProfit * userInfo.SalesCommRate / float64(len(salesmanInfo))
if m.RetailType == RetailTypeRejected {
item.SalesProfitPer = -item.SalesProfitPer
item.StaffProfitPer = -item.StaffProfitPer
item.SalesmanPer = -item.SalesmanPer
}
//if m.RetailType == RetailTypeRejected {
// item.SalesProfitPer = -item.SalesProfitPer
// item.StaffProfitPer = -item.StaffProfitPer
// item.SalesmanPer = -item.SalesmanPer
//}
salesmanList = append(salesmanList, item)
}
@ -1750,7 +1757,7 @@ func updateErpStockCommodity(gdb *gorm.DB, billSn string) error {
return errors.New("未查询到订单")
}
err = UpdateStock(gdb, erpOrderInfo[0], SoldOut)
err = UpdateStock(gdb, erpOrderInfo[0], SoldOut, 0)
if err != nil {
gdb.Rollback()
logger.Error("updateErpStockCommodity UpdateStock err:", logger.Field("err", err))
@ -1844,12 +1851,21 @@ func QueryStoreManageData(req *ErpOrderStoreManageDataReq, c *gin.Context) (*Erp
qs = qs.Where("maker_time IS NOT NULL")
// 查询数据
err = qs.Select("DATE_FORMAT(maker_time, '%Y-%m-%d') AS date, SUM(total_amount) AS total_sales_amount, " +
"(SUM(total_retail_price) - SUM(total_amount)) AS promotion_fee, " +
"SUM(total_sales_profit) AS sales_profit, SUM(total_staff_profit) AS staff_profit, SUM(total_count) AS count").
Group("date").
Order("date DESC").
Find(&storeManageDataList).Error
if req.SortType == "asc" {
err = qs.Select("DATE_FORMAT(maker_time, '%Y-%m-%d') AS date, SUM(total_amount) AS total_sales_amount, " +
"(SUM(total_retail_price) - SUM(total_amount)) AS promotion_fee, " +
"SUM(total_sales_profit) AS sales_profit, SUM(total_staff_profit) AS staff_profit, SUM(total_count) AS count").
Group("date").
Order("date ASC").
Find(&storeManageDataList).Error
} else {
err = qs.Select("DATE_FORMAT(maker_time, '%Y-%m-%d') AS date, SUM(total_amount) AS total_sales_amount, " +
"(SUM(total_retail_price) - SUM(total_amount)) AS promotion_fee, " +
"SUM(total_sales_profit) AS sales_profit, SUM(total_staff_profit) AS staff_profit, SUM(total_count) AS count").
Group("date").
Order("date DESC").
Find(&storeManageDataList).Error
}
if err != nil {
logger.Error("QueryStoreManageData err:", logger.Field("err", err))
return nil, err
@ -1912,7 +1928,23 @@ func constructFinalStoreManageDataList(storeManageDataList []StoreManageData, re
return storeManageDataList
}
for d := startDate; d.Before(endDate) || d.Equal(endDate); d = d.AddDate(0, 0, 1) {
//for d := startDate; d.Before(endDate) || d.Equal(endDate); d = d.AddDate(0, 0, 1) {
// dateStr := d.Format("2006-01-02")
// data, found := storeDataMap[dateStr]
// if !found {
// data = StoreManageData{
// Date: dateStr,
// TotalSalesAmount: 0,
// PromotionFee: 0,
// SalesProfit: 0,
// StaffProfit: 0,
// Count: 0,
// }
// }
// finalStoreManageDataList = append(finalStoreManageDataList, data)
//}
for d := endDate; d.After(startDate) || d.Equal(startDate); d = d.AddDate(0, 0, -1) {
dateStr := d.Format("2006-01-02")
data, found := storeDataMap[dateStr]
if !found {
@ -2146,7 +2178,15 @@ func QueryRetailMargin(req *ErpOrderRetailMarginReq, c *gin.Context) (*ErpOrderR
qs.Where("erp_order.pay_status = ? or (erp_order.retail_type = ? and erp_order.state != ?)",
HavePaid, RetailTypeRejected, ErpOrderStateUnAudit)
// 添加排序规则
qs = qs.Order("erp_order_commodity.erp_commodity_id ASC, erp_order.store_id ASC, erp_order.retail_type ASC")
//qs = qs.Order("erp_order_commodity.erp_commodity_id ASC, erp_order.store_id ASC, erp_order.retail_type ASC")
qs = qs.Order(`
erp_order_commodity.erp_commodity_id ASC,
erp_order.store_id ASC,
CASE erp_order.retail_type
WHEN 'sale' THEN 0
WHEN 'rejected' THEN 1
ELSE 2
END ASC`)
if req.IsExport == 1 { //导出excel
err := qs.Find(&result).Error
@ -2265,6 +2305,21 @@ func QueryRetailMargin(req *ErpOrderRetailMarginReq, c *gin.Context) (*ErpOrderR
resp.TotalSalesMargin += data.SalesMargin
}
// 对列表按照您想要的顺序进行排序
sort.Slice(list, func(i, j int) bool {
// 按照 StoreId 升序排列
if list[i].StoreId != list[j].StoreId {
return list[i].StoreId < list[j].StoreId
}
// 按照 ErpCommodityId 升序排列
if list[i].ErpCommodityId != list[j].ErpCommodityId {
return list[i].ErpCommodityId < list[j].ErpCommodityId
}
// 按照 RetailType 的顺序进行排序
retailTypeOrder := map[string]int{"sale": 0, "rejected": 1}
return retailTypeOrder[list[i].RetailType] < retailTypeOrder[list[j].RetailType]
})
// 将结果赋值给 resp.List
resp.List = list

View File

@ -1208,52 +1208,55 @@ func GenerateSerialNumber(categoryId uint32) (string, error) {
}
// UpdateErpStockAmountInfo 更新库存和库存商品表的金额:指导零售价、最低零售价
func UpdateErpStockAmountInfo(begin *gorm.DB, commodityId uint32, retailPrice, minRetailPrice float64, barCode string,
category *ErpCategory) error {
func UpdateErpStockAmountInfo(begin *gorm.DB, req *CommodityEditRequest, barCode string, category *ErpCategory) error {
if category != nil && category.ID != 0 { // 分类信息有值
// 更新库存表
err := begin.Table("erp_stock").Where("erp_commodity_id=?", commodityId).
err := begin.Table("erp_stock").Where("erp_commodity_id=?", req.Id).
Updates(map[string]interface{}{
"retail_price": retailPrice,
"min_retail_price": minRetailPrice,
"erp_category_id": category.ID,
"erp_category_name": category.Name,
"retail_price": req.RetailPrice,
"min_retail_price": req.MinRetailPrice,
"erp_category_id": category.ID,
"erp_category_name": category.Name,
"erp_commodity_name": req.Name,
}).Error
if err != nil {
return err
}
// 更新库存商品表
err = begin.Table("erp_stock_commodity").Where("erp_commodity_id=? and state not in (2,5)", commodityId).
err = begin.Table("erp_stock_commodity").Where("erp_commodity_id=? and state not in (2,5)", req.Id).
Updates(map[string]interface{}{
"retail_price": retailPrice,
"min_retail_price": minRetailPrice,
"retail_price": req.RetailPrice,
"min_retail_price": req.MinRetailPrice,
//"staff_cost_price": staffCostPrice,
"erp_barcode": barCode,
"erp_category_id": category.ID,
"erp_category_name": category.Name,
"erp_barcode": barCode,
"erp_category_id": category.ID,
"erp_category_name": category.Name,
"erp_commodity_name": req.Name,
}).Error
if err != nil {
return err
}
} else {
// 更新库存表
err := begin.Table("erp_stock").Where("erp_commodity_id=?", commodityId).
err := begin.Table("erp_stock").Where("erp_commodity_id=?", req.Id).
Updates(map[string]interface{}{
"retail_price": retailPrice,
"min_retail_price": minRetailPrice,
"retail_price": req.RetailPrice,
"min_retail_price": req.MinRetailPrice,
"erp_commodity_name": req.Name,
}).Error
if err != nil {
return err
}
// 更新库存商品表
err = begin.Table("erp_stock_commodity").Where("erp_commodity_id=? and state not in (2,5)", commodityId).
err = begin.Table("erp_stock_commodity").Where("erp_commodity_id=? and state not in (2,5)", req.Id).
Updates(map[string]interface{}{
"retail_price": retailPrice,
"min_retail_price": minRetailPrice,
"retail_price": req.RetailPrice,
"min_retail_price": req.MinRetailPrice,
//"staff_cost_price": staffCostPrice,
"erp_barcode": barCode,
"erp_barcode": barCode,
"erp_commodity_name": req.Name,
}).Error
if err != nil {
return err

View File

@ -745,3 +745,13 @@ func (m *ProductInventoryListReq) List() (*ProductInventoryListResp, error) {
resp.List = orders
return resp, nil
}
// ProductInventoryGetIMEIReq 系统生成串码入参
type ProductInventoryGetIMEIReq struct {
CommodityId uint32 `json:"commodity_id" binding:"required"` // 商品id
}
// ProductInventoryGetIMEIResp 系统生成串码出参
type ProductInventoryGetIMEIResp struct {
IMEI string `json:"imei"` // 商品串码
}

View File

@ -1557,7 +1557,7 @@ func ExecuteErpPurchase(req *ErpPurchaseExecuteReq, c *gin.Context) (*ErpPurchas
imei := "" // 默认退货单执行时不需要串码
if inventory.PurchaseType == ErpProcureOrder && commodityInfo.IMEIType == 2 { // 采购单
// 调用函数B生成商品串码
imei, err = generateIMEI(inventory.ErpCommodityId)
imei, err = GenerateIMEI(inventory.ErpCommodityId)
if err != nil {
return nil, err
}
@ -1596,8 +1596,8 @@ func ExecuteErpPurchase(req *ErpPurchaseExecuteReq, c *gin.Context) (*ErpPurchas
return resp, nil
}
// 生成串码
func generateIMEI(commodityId uint32) (string, error) {
// GenerateIMEI 生成串码
func GenerateIMEI(commodityId uint32) (string, error) {
commodity, err := GetCommodity(commodityId)
if err != nil {
return "", err
@ -5151,6 +5151,7 @@ func GetReportDetail(req *ErpPurchaseReportDetailReq, c *gin.Context) (*ErpPurch
resp.List[i].Price = -price
resp.List[i].DifferencePrice = -resp.List[i].DifferencePrice
resp.List[i].RejectPrice = -resp.List[i].RejectPrice
resp.List[i].EmployeePrice = -resp.List[i].EmployeePrice
resp.List[i].DifferencePrice = resp.List[i].Price - resp.List[i].RejectPrice
}

View File

@ -2,10 +2,13 @@ package models
import (
"encoding/json"
"errors"
"fmt"
"github.com/gin-gonic/gin"
"github.com/xuri/excelize/v2"
orm "go-admin/common/global"
"go-admin/logger"
"go-admin/tools"
"time"
)
@ -74,7 +77,7 @@ type RecycleCardOrderListRsp struct {
Url string `json:"url"`
}
func (m *RecycleCardOrderListReq) List() (RecycleCardOrderListRsp, error) {
func (m *RecycleCardOrderListReq) List(c *gin.Context) (RecycleCardOrderListRsp, error) {
rsp := RecycleCardOrderListRsp{
PageIndex: m.PageIdx,
}
@ -89,6 +92,46 @@ func (m *RecycleCardOrderListReq) List() (RecycleCardOrderListRsp, error) {
var list []RecycleCardOrder
qs := orm.Eloquent.Table("recycle_card_order")
// 非管理员才判断所属门店
if !(tools.GetRoleName(c) == "admin" || tools.GetRoleName(c) == "系统管理员") {
sysUser, err := GetSysUserByCtx(c)
if err != nil {
return RecycleCardOrderListRsp{}, err
}
// 返回sysUser未过期的门店id列表
storeList := GetValidStoreIDs(sysUser.StoreData)
if m.StoreId != 0 {
if !Contains(storeList, m.StoreId) {
return RecycleCardOrderListRsp{}, errors.New("您没有该门店权限")
}
} else {
if len(storeList) > 0 {
qs = qs.Where("store_id IN (?)", storeList)
} else {
return RecycleCardOrderListRsp{}, errors.New("用户未绑定门店")
}
}
} else {
if m.CooperativeBusinessId != 0 {
var stores []Store
err := orm.Eloquent.Table("store").Where("cooperative_business_id=?", m.CooperativeBusinessId).
Find(&stores).Error
if err != nil {
logger.Error("stores err:", logger.Field("err", err))
return rsp, err
}
storeIds := make([]uint32, 0, len(stores))
for i, _ := range stores {
storeIds = append(storeIds, stores[i].ID)
}
if len(storeIds) > 0 && m.StoreId == 0 {
qs = qs.Where("store_id IN (?)", storeIds)
}
}
}
if m.Uid != 0 {
qs = qs.Where("uid=?", m.Uid)
}
@ -138,22 +181,7 @@ func (m *RecycleCardOrderListReq) List() (RecycleCardOrderListRsp, error) {
parse = parse.AddDate(0, 0, 1)
qs = qs.Where("check_time < ?", parse)
}
if m.CooperativeBusinessId != 0 {
var stores []Store
err := orm.Eloquent.Table("store").Where("cooperative_business_id=?", m.CooperativeBusinessId).
Find(&stores).Error
if err != nil {
logger.Error("stores err:", logger.Field("err", err))
return rsp, err
}
storeIds := make([]uint32, 0, len(stores))
for i, _ := range stores {
storeIds = append(storeIds, stores[i].ID)
}
if len(storeIds) > 0 && m.StoreId == 0 {
qs = qs.Where("store_id IN (?)", storeIds)
}
}
//qs := NewRecycleCardOrderQuerySet(DB).UidEq(m.Uid)
var count int64
err := qs.Count(&count).Error

View File

@ -2883,6 +2883,9 @@ func (m *AssistantInviteMemberReportReq) List() (*AssistantInviteMemberReportLis
//}
if m.InviteName != "" {
m.Uid = uids[m.InviteName]
if m.Uid == 0 {
qs = qs.Where("uid=?", m.Uid)
}
}
if m.Uid != 0 {
qs = qs.Where("uid=?", m.Uid)

View File

@ -19,12 +19,13 @@ func registerInventoryManageRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJ
// 产品入库
r1 := v1.Group("/inventory/product").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
r1.POST("add", inventorymanage.ProductInventoryAdd) // 新增
r1.POST("edit", inventorymanage.ProductInventoryEdit) // 编辑
r1.POST("audit", inventorymanage.ProductInventoryAudit) // 审核
r1.POST("delete", inventorymanage.ProductInventoryDelete) // 删除
r1.POST("list", inventorymanage.ProductInventoryList) // 列表
r1.POST("detail", inventorymanage.ProductInventoryDetail) // 详情
r1.POST("add", inventorymanage.ProductInventoryAdd) // 新增
r1.POST("edit", inventorymanage.ProductInventoryEdit) // 编辑
r1.POST("audit", inventorymanage.ProductInventoryAudit) // 审核
r1.POST("delete", inventorymanage.ProductInventoryDelete) // 删除
r1.POST("list", inventorymanage.ProductInventoryList) // 列表
r1.POST("detail", inventorymanage.ProductInventoryDetail) // 详情
r1.POST("getIMEI", inventorymanage.ProductInventoryGetIMEI) // 系统生成串码
// 库存调拨
r3 := v1.Group("/inventory/allot").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())

View File

@ -427,7 +427,7 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/basic.CommodityCreateRequest"
"$ref": "#/definitions/models.CommodityCreateRequest"
}
}
],
@ -460,7 +460,7 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/basic.CommodityDelRequest"
"$ref": "#/definitions/models.CommodityDelRequest"
}
}
],
@ -493,7 +493,7 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/basic.CommodityDetailRequest"
"$ref": "#/definitions/models.CommodityDetailRequest"
}
}
],
@ -526,7 +526,7 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/basic.CommodityEditRequest"
"$ref": "#/definitions/models.CommodityEditRequest"
}
}
],
@ -3578,6 +3578,39 @@ const docTemplate = `{
}
}
},
"/api/v1/inventory/product/getIMEI": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"产品入库V1.4.0"
],
"summary": "系统生成串码",
"parameters": [
{
"description": "系统生成串码模型",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.ProductInventoryGetIMEIReq"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.ProductInventoryGetIMEIResp"
}
}
}
}
},
"/api/v1/inventory/product/list": {
"post": {
"consumes": [
@ -6011,179 +6044,6 @@ const docTemplate = `{
}
}
},
"basic.CommodityCreateRequest": {
"type": "object",
"required": [
"erp_category_id",
"erp_supplier_id",
"is_imei",
"name"
],
"properties": {
"brokerage_1": {
"description": "销售毛利提成",
"type": "number"
},
"brokerage_2": {
"description": "员工毛利提成",
"type": "number"
},
"erp_barcode": {
"description": "商品条码",
"type": "string"
},
"erp_category_id": {
"description": "商品分类id",
"type": "integer"
},
"erp_supplier_id": {
"description": "主供应商",
"type": "integer"
},
"imei_type": {
"description": "系统生成串码2-是(系统生成) 3-否(手动添加)",
"type": "integer"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"
},
"member_discount": {
"description": "会员优惠",
"type": "number"
},
"min_retail_price": {
"description": "最低零售价",
"type": "number"
},
"name": {
"description": "商品名称",
"type": "string"
},
"origin": {
"description": "产地",
"type": "string"
},
"remark": {
"description": "备注",
"type": "string"
},
"retail_price": {
"description": "指导零售价",
"type": "number"
},
"staff_cost_price": {
"description": "员工成本价加价",
"type": "number"
},
"wholesale_price": {
"description": "指导采购价",
"type": "number"
}
}
},
"basic.CommodityDelRequest": {
"type": "object",
"required": [
"erp_commodity_id"
],
"properties": {
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
}
}
},
"basic.CommodityDetailRequest": {
"type": "object",
"properties": {
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
},
"serial_number": {
"description": "商品编号",
"type": "string"
}
}
},
"basic.CommodityEditRequest": {
"type": "object",
"required": [
"erp_category_id",
"erp_supplier_id",
"id",
"imei_type",
"is_imei",
"name"
],
"properties": {
"brokerage_1": {
"description": "销售毛利提成",
"type": "number"
},
"brokerage_2": {
"description": "员工毛利提成",
"type": "number"
},
"erp_barcode": {
"description": "商品条码",
"type": "string"
},
"erp_category_id": {
"description": "商品分类id",
"type": "integer"
},
"erp_supplier_id": {
"description": "主供应商id",
"type": "integer"
},
"id": {
"description": "商品id",
"type": "integer"
},
"imei_type": {
"description": "1-无串码 2-串码(系统生成) 3-串码(手动添加)",
"type": "integer"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"
},
"member_discount": {
"description": "会员优惠",
"type": "number"
},
"min_retail_price": {
"description": "最低零售价",
"type": "number"
},
"name": {
"description": "商品名称",
"type": "string"
},
"origin": {
"description": "产地",
"type": "string"
},
"remark": {
"description": "备注",
"type": "string"
},
"retail_price": {
"description": "指导零售价",
"type": "number"
},
"staff_cost_price": {
"description": "员工成本价加价",
"type": "number"
},
"wholesale_price": {
"description": "指导采购价",
"type": "number"
}
}
},
"basic.CreateCategoryRequest": {
"type": "object",
"required": [
@ -6640,6 +6500,179 @@ const docTemplate = `{
}
}
},
"models.CommodityCreateRequest": {
"type": "object",
"required": [
"erp_category_id",
"erp_supplier_id",
"is_imei",
"name"
],
"properties": {
"brokerage_1": {
"description": "销售毛利提成",
"type": "number"
},
"brokerage_2": {
"description": "员工毛利提成",
"type": "number"
},
"erp_barcode": {
"description": "商品条码",
"type": "string"
},
"erp_category_id": {
"description": "商品分类id",
"type": "integer"
},
"erp_supplier_id": {
"description": "主供应商",
"type": "integer"
},
"imei_type": {
"description": "系统生成串码2-是(系统生成) 3-否(手动添加)",
"type": "integer"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"
},
"member_discount": {
"description": "会员优惠",
"type": "number"
},
"min_retail_price": {
"description": "最低零售价",
"type": "number"
},
"name": {
"description": "商品名称",
"type": "string"
},
"origin": {
"description": "产地",
"type": "string"
},
"remark": {
"description": "备注",
"type": "string"
},
"retail_price": {
"description": "指导零售价",
"type": "number"
},
"staff_cost_price": {
"description": "员工成本价加价",
"type": "number"
},
"wholesale_price": {
"description": "指导采购价",
"type": "number"
}
}
},
"models.CommodityDelRequest": {
"type": "object",
"required": [
"erp_commodity_id"
],
"properties": {
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
}
}
},
"models.CommodityDetailRequest": {
"type": "object",
"properties": {
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
},
"serial_number": {
"description": "商品编号",
"type": "string"
}
}
},
"models.CommodityEditRequest": {
"type": "object",
"required": [
"erp_category_id",
"erp_supplier_id",
"id",
"imei_type",
"is_imei",
"name"
],
"properties": {
"brokerage_1": {
"description": "销售毛利提成",
"type": "number"
},
"brokerage_2": {
"description": "员工毛利提成",
"type": "number"
},
"erp_barcode": {
"description": "商品条码",
"type": "string"
},
"erp_category_id": {
"description": "商品分类id",
"type": "integer"
},
"erp_supplier_id": {
"description": "主供应商id",
"type": "integer"
},
"id": {
"description": "商品id",
"type": "integer"
},
"imei_type": {
"description": "1-无串码 2-串码(系统生成) 3-串码(手动添加)",
"type": "integer"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"
},
"member_discount": {
"description": "会员优惠",
"type": "number"
},
"min_retail_price": {
"description": "最低零售价",
"type": "number"
},
"name": {
"description": "商品名称",
"type": "string"
},
"origin": {
"description": "产地",
"type": "string"
},
"remark": {
"description": "备注",
"type": "string"
},
"retail_price": {
"description": "指导零售价",
"type": "number"
},
"staff_cost_price": {
"description": "员工成本价加价",
"type": "number"
},
"wholesale_price": {
"description": "指导采购价",
"type": "number"
}
}
},
"models.CommodityExcel": {
"type": "object",
"required": [
@ -9232,6 +9265,10 @@ const docTemplate = `{
"description": "页面条数",
"type": "integer"
},
"sort_type": {
"description": "排序类型desc 降序、asc 升序",
"type": "string"
},
"start_time": {
"description": "开始时间",
"type": "string"
@ -13232,6 +13269,27 @@ const docTemplate = `{
}
}
},
"models.ProductInventoryGetIMEIReq": {
"type": "object",
"required": [
"commodity_id"
],
"properties": {
"commodity_id": {
"description": "商品id",
"type": "integer"
}
}
},
"models.ProductInventoryGetIMEIResp": {
"type": "object",
"properties": {
"imei": {
"description": "商品串码",
"type": "string"
}
}
},
"models.ProductInventoryListReq": {
"type": "object",
"properties": {

View File

@ -416,7 +416,7 @@
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/basic.CommodityCreateRequest"
"$ref": "#/definitions/models.CommodityCreateRequest"
}
}
],
@ -449,7 +449,7 @@
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/basic.CommodityDelRequest"
"$ref": "#/definitions/models.CommodityDelRequest"
}
}
],
@ -482,7 +482,7 @@
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/basic.CommodityDetailRequest"
"$ref": "#/definitions/models.CommodityDetailRequest"
}
}
],
@ -515,7 +515,7 @@
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/basic.CommodityEditRequest"
"$ref": "#/definitions/models.CommodityEditRequest"
}
}
],
@ -3567,6 +3567,39 @@
}
}
},
"/api/v1/inventory/product/getIMEI": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"产品入库V1.4.0"
],
"summary": "系统生成串码",
"parameters": [
{
"description": "系统生成串码模型",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.ProductInventoryGetIMEIReq"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.ProductInventoryGetIMEIResp"
}
}
}
}
},
"/api/v1/inventory/product/list": {
"post": {
"consumes": [
@ -6000,179 +6033,6 @@
}
}
},
"basic.CommodityCreateRequest": {
"type": "object",
"required": [
"erp_category_id",
"erp_supplier_id",
"is_imei",
"name"
],
"properties": {
"brokerage_1": {
"description": "销售毛利提成",
"type": "number"
},
"brokerage_2": {
"description": "员工毛利提成",
"type": "number"
},
"erp_barcode": {
"description": "商品条码",
"type": "string"
},
"erp_category_id": {
"description": "商品分类id",
"type": "integer"
},
"erp_supplier_id": {
"description": "主供应商",
"type": "integer"
},
"imei_type": {
"description": "系统生成串码2-是(系统生成) 3-否(手动添加)",
"type": "integer"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"
},
"member_discount": {
"description": "会员优惠",
"type": "number"
},
"min_retail_price": {
"description": "最低零售价",
"type": "number"
},
"name": {
"description": "商品名称",
"type": "string"
},
"origin": {
"description": "产地",
"type": "string"
},
"remark": {
"description": "备注",
"type": "string"
},
"retail_price": {
"description": "指导零售价",
"type": "number"
},
"staff_cost_price": {
"description": "员工成本价加价",
"type": "number"
},
"wholesale_price": {
"description": "指导采购价",
"type": "number"
}
}
},
"basic.CommodityDelRequest": {
"type": "object",
"required": [
"erp_commodity_id"
],
"properties": {
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
}
}
},
"basic.CommodityDetailRequest": {
"type": "object",
"properties": {
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
},
"serial_number": {
"description": "商品编号",
"type": "string"
}
}
},
"basic.CommodityEditRequest": {
"type": "object",
"required": [
"erp_category_id",
"erp_supplier_id",
"id",
"imei_type",
"is_imei",
"name"
],
"properties": {
"brokerage_1": {
"description": "销售毛利提成",
"type": "number"
},
"brokerage_2": {
"description": "员工毛利提成",
"type": "number"
},
"erp_barcode": {
"description": "商品条码",
"type": "string"
},
"erp_category_id": {
"description": "商品分类id",
"type": "integer"
},
"erp_supplier_id": {
"description": "主供应商id",
"type": "integer"
},
"id": {
"description": "商品id",
"type": "integer"
},
"imei_type": {
"description": "1-无串码 2-串码(系统生成) 3-串码(手动添加)",
"type": "integer"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"
},
"member_discount": {
"description": "会员优惠",
"type": "number"
},
"min_retail_price": {
"description": "最低零售价",
"type": "number"
},
"name": {
"description": "商品名称",
"type": "string"
},
"origin": {
"description": "产地",
"type": "string"
},
"remark": {
"description": "备注",
"type": "string"
},
"retail_price": {
"description": "指导零售价",
"type": "number"
},
"staff_cost_price": {
"description": "员工成本价加价",
"type": "number"
},
"wholesale_price": {
"description": "指导采购价",
"type": "number"
}
}
},
"basic.CreateCategoryRequest": {
"type": "object",
"required": [
@ -6629,6 +6489,179 @@
}
}
},
"models.CommodityCreateRequest": {
"type": "object",
"required": [
"erp_category_id",
"erp_supplier_id",
"is_imei",
"name"
],
"properties": {
"brokerage_1": {
"description": "销售毛利提成",
"type": "number"
},
"brokerage_2": {
"description": "员工毛利提成",
"type": "number"
},
"erp_barcode": {
"description": "商品条码",
"type": "string"
},
"erp_category_id": {
"description": "商品分类id",
"type": "integer"
},
"erp_supplier_id": {
"description": "主供应商",
"type": "integer"
},
"imei_type": {
"description": "系统生成串码2-是(系统生成) 3-否(手动添加)",
"type": "integer"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"
},
"member_discount": {
"description": "会员优惠",
"type": "number"
},
"min_retail_price": {
"description": "最低零售价",
"type": "number"
},
"name": {
"description": "商品名称",
"type": "string"
},
"origin": {
"description": "产地",
"type": "string"
},
"remark": {
"description": "备注",
"type": "string"
},
"retail_price": {
"description": "指导零售价",
"type": "number"
},
"staff_cost_price": {
"description": "员工成本价加价",
"type": "number"
},
"wholesale_price": {
"description": "指导采购价",
"type": "number"
}
}
},
"models.CommodityDelRequest": {
"type": "object",
"required": [
"erp_commodity_id"
],
"properties": {
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
}
}
},
"models.CommodityDetailRequest": {
"type": "object",
"properties": {
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
},
"serial_number": {
"description": "商品编号",
"type": "string"
}
}
},
"models.CommodityEditRequest": {
"type": "object",
"required": [
"erp_category_id",
"erp_supplier_id",
"id",
"imei_type",
"is_imei",
"name"
],
"properties": {
"brokerage_1": {
"description": "销售毛利提成",
"type": "number"
},
"brokerage_2": {
"description": "员工毛利提成",
"type": "number"
},
"erp_barcode": {
"description": "商品条码",
"type": "string"
},
"erp_category_id": {
"description": "商品分类id",
"type": "integer"
},
"erp_supplier_id": {
"description": "主供应商id",
"type": "integer"
},
"id": {
"description": "商品id",
"type": "integer"
},
"imei_type": {
"description": "1-无串码 2-串码(系统生成) 3-串码(手动添加)",
"type": "integer"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"
},
"member_discount": {
"description": "会员优惠",
"type": "number"
},
"min_retail_price": {
"description": "最低零售价",
"type": "number"
},
"name": {
"description": "商品名称",
"type": "string"
},
"origin": {
"description": "产地",
"type": "string"
},
"remark": {
"description": "备注",
"type": "string"
},
"retail_price": {
"description": "指导零售价",
"type": "number"
},
"staff_cost_price": {
"description": "员工成本价加价",
"type": "number"
},
"wholesale_price": {
"description": "指导采购价",
"type": "number"
}
}
},
"models.CommodityExcel": {
"type": "object",
"required": [
@ -9221,6 +9254,10 @@
"description": "页面条数",
"type": "integer"
},
"sort_type": {
"description": "排序类型desc 降序、asc 升序",
"type": "string"
},
"start_time": {
"description": "开始时间",
"type": "string"
@ -13221,6 +13258,27 @@
}
}
},
"models.ProductInventoryGetIMEIReq": {
"type": "object",
"required": [
"commodity_id"
],
"properties": {
"commodity_id": {
"description": "商品id",
"type": "integer"
}
}
},
"models.ProductInventoryGetIMEIResp": {
"type": "object",
"properties": {
"imei": {
"description": "商品串码",
"type": "string"
}
}
},
"models.ProductInventoryListReq": {
"type": "object",
"properties": {

View File

@ -103,134 +103,6 @@ definitions:
description: 是否展示全部
type: boolean
type: object
basic.CommodityCreateRequest:
properties:
brokerage_1:
description: 销售毛利提成
type: number
brokerage_2:
description: 员工毛利提成
type: number
erp_barcode:
description: 商品条码
type: string
erp_category_id:
description: 商品分类id
type: integer
erp_supplier_id:
description: 主供应商
type: integer
imei_type:
description: 系统生成串码2-是(系统生成) 3-否(手动添加)
type: integer
is_imei:
description: 是否串码1-串码类 2-非串码
type: integer
member_discount:
description: 会员优惠
type: number
min_retail_price:
description: 最低零售价
type: number
name:
description: 商品名称
type: string
origin:
description: 产地
type: string
remark:
description: 备注
type: string
retail_price:
description: 指导零售价
type: number
staff_cost_price:
description: 员工成本价加价
type: number
wholesale_price:
description: 指导采购价
type: number
required:
- erp_category_id
- erp_supplier_id
- is_imei
- name
type: object
basic.CommodityDelRequest:
properties:
erp_commodity_id:
description: 商品id
type: integer
required:
- erp_commodity_id
type: object
basic.CommodityDetailRequest:
properties:
erp_commodity_id:
description: 商品id
type: integer
serial_number:
description: 商品编号
type: string
type: object
basic.CommodityEditRequest:
properties:
brokerage_1:
description: 销售毛利提成
type: number
brokerage_2:
description: 员工毛利提成
type: number
erp_barcode:
description: 商品条码
type: string
erp_category_id:
description: 商品分类id
type: integer
erp_supplier_id:
description: 主供应商id
type: integer
id:
description: 商品id
type: integer
imei_type:
description: 1-无串码 2-串码(系统生成) 3-串码(手动添加)
type: integer
is_imei:
description: 是否串码1-串码类 2-非串码
type: integer
member_discount:
description: 会员优惠
type: number
min_retail_price:
description: 最低零售价
type: number
name:
description: 商品名称
type: string
origin:
description: 产地
type: string
remark:
description: 备注
type: string
retail_price:
description: 指导零售价
type: number
staff_cost_price:
description: 员工成本价加价
type: number
wholesale_price:
description: 指导采购价
type: number
required:
- erp_category_id
- erp_supplier_id
- id
- imei_type
- is_imei
- name
type: object
basic.CreateCategoryRequest:
properties:
name:
@ -562,6 +434,134 @@ definitions:
$ref: '#/definitions/models.CategoryModel'
type: array
type: object
models.CommodityCreateRequest:
properties:
brokerage_1:
description: 销售毛利提成
type: number
brokerage_2:
description: 员工毛利提成
type: number
erp_barcode:
description: 商品条码
type: string
erp_category_id:
description: 商品分类id
type: integer
erp_supplier_id:
description: 主供应商
type: integer
imei_type:
description: 系统生成串码2-是(系统生成) 3-否(手动添加)
type: integer
is_imei:
description: 是否串码1-串码类 2-非串码
type: integer
member_discount:
description: 会员优惠
type: number
min_retail_price:
description: 最低零售价
type: number
name:
description: 商品名称
type: string
origin:
description: 产地
type: string
remark:
description: 备注
type: string
retail_price:
description: 指导零售价
type: number
staff_cost_price:
description: 员工成本价加价
type: number
wholesale_price:
description: 指导采购价
type: number
required:
- erp_category_id
- erp_supplier_id
- is_imei
- name
type: object
models.CommodityDelRequest:
properties:
erp_commodity_id:
description: 商品id
type: integer
required:
- erp_commodity_id
type: object
models.CommodityDetailRequest:
properties:
erp_commodity_id:
description: 商品id
type: integer
serial_number:
description: 商品编号
type: string
type: object
models.CommodityEditRequest:
properties:
brokerage_1:
description: 销售毛利提成
type: number
brokerage_2:
description: 员工毛利提成
type: number
erp_barcode:
description: 商品条码
type: string
erp_category_id:
description: 商品分类id
type: integer
erp_supplier_id:
description: 主供应商id
type: integer
id:
description: 商品id
type: integer
imei_type:
description: 1-无串码 2-串码(系统生成) 3-串码(手动添加)
type: integer
is_imei:
description: 是否串码1-串码类 2-非串码
type: integer
member_discount:
description: 会员优惠
type: number
min_retail_price:
description: 最低零售价
type: number
name:
description: 商品名称
type: string
origin:
description: 产地
type: string
remark:
description: 备注
type: string
retail_price:
description: 指导零售价
type: number
staff_cost_price:
description: 员工成本价加价
type: number
wholesale_price:
description: 指导采购价
type: number
required:
- erp_category_id
- erp_supplier_id
- id
- imei_type
- is_imei
- name
type: object
models.CommodityExcel:
properties:
category:
@ -2455,6 +2455,9 @@ definitions:
pageSize:
description: 页面条数
type: integer
sort_type:
description: 排序类型desc 降序、asc 升序
type: string
start_time:
description: 开始时间
type: string
@ -5348,6 +5351,20 @@ definitions:
- store_id
- store_name
type: object
models.ProductInventoryGetIMEIReq:
properties:
commodity_id:
description: 商品id
type: integer
required:
- commodity_id
type: object
models.ProductInventoryGetIMEIResp:
properties:
imei:
description: 商品串码
type: string
type: object
models.ProductInventoryListReq:
properties:
audit_time_end:
@ -7357,7 +7374,7 @@ paths:
name: request
required: true
schema:
$ref: '#/definitions/basic.CommodityCreateRequest'
$ref: '#/definitions/models.CommodityCreateRequest'
produces:
- application/json
responses:
@ -7378,7 +7395,7 @@ paths:
name: request
required: true
schema:
$ref: '#/definitions/basic.CommodityDelRequest'
$ref: '#/definitions/models.CommodityDelRequest'
produces:
- application/json
responses:
@ -7399,7 +7416,7 @@ paths:
name: request
required: true
schema:
$ref: '#/definitions/basic.CommodityDetailRequest'
$ref: '#/definitions/models.CommodityDetailRequest'
produces:
- application/json
responses:
@ -7420,7 +7437,7 @@ paths:
name: request
required: true
schema:
$ref: '#/definitions/basic.CommodityEditRequest'
$ref: '#/definitions/models.CommodityEditRequest'
produces:
- application/json
responses:
@ -9366,6 +9383,27 @@ paths:
summary: 编辑
tags:
- 产品入库V1.4.0
/api/v1/inventory/product/getIMEI:
post:
consumes:
- application/json
parameters:
- description: 系统生成串码模型
in: body
name: request
required: true
schema:
$ref: '#/definitions/models.ProductInventoryGetIMEIReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.ProductInventoryGetIMEIResp'
summary: 系统生成串码
tags:
- 产品入库V1.4.0
/api/v1/inventory/product/list:
post:
consumes: