1.零售管理基础资料增加图片上传功能;

2.采购需求和采购需求提报页面增加商品图片展示列;
This commit is contained in:
chenlin 2024-08-14 09:52:38 +08:00
parent 39589bfe0f
commit 4537477eff
7 changed files with 486 additions and 17 deletions

View File

@ -100,6 +100,7 @@ func CommodityCreate(c *gin.Context) {
MemberDiscount: memberDiscountFloat,
Origin: req.Origin,
Remark: req.Remark,
Img: req.Img,
}
err = commodity.SetErpCategory()
if err != nil {
@ -263,6 +264,7 @@ func CommodityEdit(c *gin.Context) {
MemberDiscount: memberDiscountFloat,
Origin: req.Origin,
Remark: req.Remark,
Img: req.Img,
}
commodity.ID = req.Id
err = commodity.SetErpCategory()

View File

@ -120,6 +120,7 @@ type ErpCommodity struct {
Origin string `json:"origin"` // 产地
Remark string `json:"remark" gorm:"type:varchar(512)"` // 备注
StockCount uint32 `json:"stock_count" gorm:"-"` // 库存数量
Img string `json:"img"` // 图片
ErpCategory *ErpCategory `json:"erp_category" gorm:"-"`
}
@ -3145,7 +3146,8 @@ type CommodityCreateRequest struct {
Brokerage2 float64 `json:"brokerage_2"` // 员工毛利提成
MemberDiscount float64 `json:"member_discount"` // 会员优惠
Origin string `json:"origin"` // 产地
Remark string `json:"remark" gorm:"type:varchar(512)"` // 备注
Remark string `json:"remark"` // 备注
Img string `json:"img"` // 图片
}
type CommodityEditRequest struct {
@ -3164,7 +3166,8 @@ type CommodityEditRequest struct {
Brokerage2 float64 `json:"brokerage_2"` // 员工毛利提成
MemberDiscount float64 `json:"member_discount"` // 会员优惠
Origin string `json:"origin"` // 产地
Remark string `json:"remark" gorm:"type:varchar(512)"` // 备注
Remark string `json:"remark"` // 备注
Img string `json:"img"` // 图片
}
type CommodityDetailRequest struct {

View File

@ -333,9 +333,28 @@ func (m *ErpDecisionReportReq) DecisionReportList(c *gin.Context) (*ErpDecisionR
}
}
//var sumData DecisionSumData
for _, data := range commodityMap {
//sumData.TotalBeginStock += data.BeginStock
//sumData.TotalBeginAmount += data.BeginAmount
//sumData.TotalPurchaseStock += data.PurchaseStock
//sumData.TotalPurchaseReturn += data.PurchaseReturn
//sumData.TotalOrderSale += data.OrderSale
//sumData.TotalOrderReject += data.OrderReject
//sumData.TotalAllotIn += data.AllotIn
//sumData.TotalAllotWaitIn += data.AllotWaitIn
//sumData.TotalAllotOut += data.AllotOut
//sumData.TotalAllotWaitOut += data.AllotWaitOut
//sumData.TotalProductIn += data.ProductIn
//sumData.TotalSystemOut += data.SystemOut
//sumData.TotalCheckIn += data.CheckIn
//sumData.TotalCheckOut += data.CheckOut
//sumData.TotalEndStock += data.EndStock
//sumData.TotalEndAmount += data.EndAmount
reportList = append(reportList, data)
}
//resp.SumData = sumData
// 排序规则:商品编号小
SortReportByDecisionCommodities(reportList)
@ -1445,7 +1464,295 @@ func getAllotOutCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionReport
return reportData, nil
}
// 查询库存汇总数据:期初库存、期初金额、采购退货数量、产品入库、系统出库、在途库存(入库)数量、期末库存、期末金额
// 查询汇总数据:期初库存,期初金额
func getSumStartCount(req *ErpDecisionReportReq) (DecisionReportData, error) {
var reportData DecisionReportData
if req.StartTime != "" { // 有开始时间
startTime, err := time.Parse(QueryTimeFormat, req.StartTime)
if err != nil {
logger.Errorf("getSystemStartCount err:", err)
return DecisionReportData{}, err
}
// 计算开始时间的前一天
previousDay := startTime.AddDate(0, 0, -1)
// 获取系统入库数量
var systemStartData DecisionReportData
qs := orm.Eloquent.Debug().Table("erp_stock_commodity").
Select("SUM(count) as begin_stock, SUM(wholesale_price) as begin_amount").
Where("storage_type = ?", SystemInventory).
Where("created_at <= ?", previousDay)
// 获取开始时间前一天的所有出库数量(包括销售出库、系统出库和盘点出库)
var outStockData struct {
SoldOut uint32 `json:"sold_out"`
SystemOut uint32 `json:"system_out"`
CheckOut uint32 `json:"check_out"`
}
es := orm.Eloquent.Debug().Table("erp_stock_commodity").
Select("SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS sold_out, "+
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS system_out, "+
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS check_out",
SoldOut, SystemOut, CheckOut).
Where("updated_at <= ?", previousDay).
Where("state IN (?)", []int{SoldOut, SystemOut, CheckOut})
// 获取开始时间前一天的所有入库数量(包括采购入库、产品入库和盘点入库)
var inStockData struct {
PurchaseIn uint32 `json:"purchase_in"`
ProductIn uint32 `json:"product_in"`
CheckIn uint32 `json:"check_in"`
}
ts := orm.Eloquent.Debug().Table("erp_stock_commodity").
Select("SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS purchase_in, "+
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS product_in, "+
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS check_in",
PurchaseInventory, ProductInventory, CheckInventory).
Where("created_at <= ?", previousDay)
if len(req.StoreId) > 0 { // 门店复选
var storeIDs []uint32
for _, store := range req.StoreId {
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])
} else {
qs = qs.Where("store_id IN (?)", storeIDs)
es = es.Where("store_id IN (?)", storeIDs)
ts = ts.Where("store_id IN (?)", storeIDs)
}
}
if len(req.CommodityName) > 0 { // 商品名称
var commodityNames []string
for _, commodityName := range req.CommodityName {
commodityNames = append(commodityNames, commodityName)
}
if len(commodityNames) == 1 {
qs = qs.Where("erp_commodity_name = ?", commodityNames[0])
es = es.Where("erp_commodity_name = ?", commodityNames[0])
ts = ts.Where("erp_commodity_name = ?", commodityNames[0])
} else {
qs = qs.Where("erp_commodity_name IN (?)", commodityNames)
es = es.Where("erp_commodity_name IN (?)", commodityNames)
ts = ts.Where("erp_commodity_name IN (?)", commodityNames)
}
}
if len(req.CategoryID) > 0 { // 商品分类id
var categoryIDs []uint32
for _, category := range req.CategoryID {
categoryIDs = append(categoryIDs, category)
}
if len(categoryIDs) == 1 {
qs = qs.Where("erp_category_id = ?", categoryIDs[0])
es = es.Where("erp_category_id = ?", categoryIDs[0])
ts = ts.Where("erp_category_id = ?", categoryIDs[0])
} else {
qs = qs.Where("erp_category_id IN (?)", categoryIDs)
es = es.Where("erp_category_id IN (?)", categoryIDs)
ts = ts.Where("erp_category_id IN (?)", categoryIDs)
}
}
err = qs.Find(&systemStartData).Error
if err != nil {
return DecisionReportData{}, err
}
err = es.Find(&outStockData).Error
if err != nil {
return DecisionReportData{}, err
}
err = ts.Find(&inStockData).Error
if err != nil {
return DecisionReportData{}, err
}
// 计算期初库存
beginStock := int64(systemStartData.BeginStock) - int64(outStockData.SoldOut) - int64(outStockData.SystemOut) - int64(outStockData.CheckOut) +
int64(inStockData.PurchaseIn) + int64(inStockData.ProductIn) + int64(inStockData.CheckIn)
if beginStock < 0 {
beginStock = 0 // 确保库存不会为负
}
reportData.BeginStock = uint32(beginStock)
reportData.BeginAmount = systemStartData.BeginAmount
} else {
// 如果没有开始时间,直接获取系统入库数量作为期初库存
qs := orm.Eloquent.Debug().Table("erp_stock_commodity").
Select("SUM(count) as begin_stock, SUM(wholesale_price) as begin_amount").
Where("storage_type = ?", SystemInventory)
if len(req.StoreId) > 0 { // 门店复选
var storeIDs []uint32
for _, store := range req.StoreId {
storeIDs = append(storeIDs, store)
}
if len(storeIDs) == 1 {
qs = qs.Where("store_id IN = ?", storeIDs[0])
} else {
qs = qs.Where("store_id IN (?)", storeIDs)
}
}
if len(req.CommodityName) > 0 { // 商品名称
var commodityNames []string
for _, commodityName := range req.CommodityName {
commodityNames = append(commodityNames, commodityName)
}
if len(commodityNames) == 1 {
qs = qs.Where("erp_commodity_name = ?", commodityNames[0])
} else {
qs = qs.Where("erp_commodity_name IN (?)", commodityNames)
}
}
if len(req.CategoryID) > 0 { // 商品分类id
var categoryIDs []uint32
for _, category := range req.CategoryID {
categoryIDs = append(categoryIDs, category)
}
if len(categoryIDs) == 1 {
qs = qs.Where("erp_category_id = ?", categoryIDs[0])
} else {
qs = qs.Where("erp_category_id IN (?)", categoryIDs)
}
}
err := qs.Find(&reportData).Error
if err != nil {
return DecisionReportData{}, err
}
}
return reportData, nil
}
// 查询汇总数据:期末库存,期末金额
func getSumEndCount(req *ErpDecisionReportReq) (DecisionReportData, error) {
var reportData DecisionReportData
qs := orm.Eloquent.Debug().Table("erp_stock_commodity")
es := orm.Eloquent.Debug().Table("erp_stock_commodity")
if len(req.StoreId) > 0 { // 门店复选
var storeIDs []uint32
for _, store := range req.StoreId {
storeIDs = append(storeIDs, store)
}
if len(storeIDs) == 1 {
qs = qs.Where("store_id IN = ?", storeIDs[0])
es = es.Where("store_id IN = ?", storeIDs[0])
} else {
qs = qs.Where("store_id IN (?)", storeIDs)
es = es.Where("store_id IN (?)", storeIDs)
}
}
if len(req.CommodityName) > 0 { // 商品名称
var commodityNames []string
for _, commodityName := range req.CommodityName {
commodityNames = append(commodityNames, commodityName)
}
if len(commodityNames) == 1 {
qs = qs.Where("erp_commodity_name = ?", commodityNames[0])
es = es.Where("erp_commodity_name = ?", commodityNames[0])
} else {
qs = qs.Where("erp_commodity_name IN (?)", commodityNames)
es = es.Where("erp_commodity_name IN (?)", commodityNames)
}
}
if len(req.CategoryID) > 0 { // 商品分类id
var categoryIDs []uint32
for _, category := range req.CategoryID {
categoryIDs = append(categoryIDs, category)
}
if len(categoryIDs) == 1 {
qs = qs.Where("erp_category_id = ?", categoryIDs[0])
es = es.Where("erp_category_id = ?", categoryIDs[0])
} else {
qs = qs.Where("erp_category_id IN (?)", categoryIDs)
es = es.Where("erp_category_id IN (?)", categoryIDs)
}
}
if req.EndTime != "" { // 有结束时间
endTime, err := time.Parse(QueryTimeFormat, req.EndTime)
if err != nil {
logger.Errorf("getSystemEndCount err:", err)
return DecisionReportData{}, err
}
// 获取结束时间之前的所有入库数量(包括系统入库、采购入库、产品入库和盘点入库)
var inStockData struct {
SystemIn uint32 `json:"system_in"`
PurchaseIn uint32 `json:"purchase_in"`
ProductIn uint32 `json:"product_in"`
CheckIn uint32 `json:"check_in"`
}
qs = qs.Select("SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS system_in, "+
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS purchase_in, "+
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS product_in, "+
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS check_in",
SystemInventory, PurchaseInventory, ProductInventory, CheckInventory).
Where("updated_at <= ?", endTime)
err = qs.Find(&inStockData).Error
if err != nil {
return DecisionReportData{}, err
}
// 获取结束时间之前的所有出库数量(包括销售出库、系统出库和盘点出库)
var outStockData struct {
SoldOut uint32 `json:"sold_out"`
SystemOut uint32 `json:"system_out"`
CheckOut uint32 `json:"check_out"`
}
es = es.Select("SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS sold_out, "+
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS system_out, "+
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS check_out",
SoldOut, SystemOut, CheckOut).
Where("updated_at <= ?", endTime).
Where("state IN (?)", []int{SoldOut, SystemOut, CheckOut})
err = es.Find(&outStockData).Error
if err != nil {
return DecisionReportData{}, err
}
// 计算期末库存
endStock := int64(inStockData.SystemIn) + int64(inStockData.PurchaseIn) + int64(inStockData.ProductIn) + int64(inStockData.CheckIn) -
int64(outStockData.SoldOut) - int64(outStockData.SystemOut) - int64(outStockData.CheckOut)
if endStock < 0 {
endStock = 0 // 确保库存不会为负
}
reportData.EndStock = uint32(endStock)
} else {
// 如果没有结束时间,直接获取系统入库数量作为期末库存
qs = qs.Select("SUM(count) as end_stock, SUM(wholesale_price) as end_amount").
Where("storage_type = ?", SystemInventory)
err := qs.Find(&reportData).Error
if err != nil {
return DecisionReportData{}, err
}
}
return reportData, nil
}
// 查询库存汇总数据:采购退货数量、产品入库、系统出库、在途库存(入库)数量
func getSumStockData(req *ErpDecisionReportReq) (DecisionReportData, error) {
var reportData DecisionReportData
qs := orm.Eloquent.Debug().Table("erp_stock_commodity")
@ -1476,18 +1783,36 @@ func getSumStockData(req *ErpDecisionReportReq) (DecisionReportData, error) {
}
}
if len(req.CommodityName) > 0 { // 商品名称
var commodityNames []string
for _, commodityName := range req.CommodityName {
commodityNames = append(commodityNames, commodityName)
}
if len(commodityNames) == 1 {
qs = qs.Where("erp_commodity_name = ?", commodityNames[0])
} else {
qs = qs.Where("erp_commodity_name IN (?)", commodityNames)
}
}
if len(req.CategoryID) > 0 { // 商品分类id
var categoryIDs []uint32
for _, category := range req.CategoryID {
categoryIDs = append(categoryIDs, category)
}
if len(categoryIDs) == 1 {
qs = qs.Where("erp_category_id = ?", categoryIDs[0])
} else {
qs = qs.Where("erp_category_id IN (?)", categoryIDs)
}
}
subQuery := qs.Select(`
SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS begin_stock,
SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS begin_amount,
SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS purchase_return,
SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS product_in,
SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS system_out,
SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS allot_wait_in,
SUM(CASE WHEN state IN (?) THEN count ELSE 0 END) AS end_stock,
SUM(CASE WHEN state IN (?) THEN wholesale_price ELSE 0 END) AS end_amount
`, SystemInventory, SystemInventory, PurchaseReturn,
ProductInventory, SystemOut, InAllot,
[]uint32{InStock, InAllot}, []uint32{InStock, InAllot})
SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS allot_wait_in
`, PurchaseReturn, ProductInventory, SystemOut, InAllot)
err := subQuery.Scan(&reportData).Error
if err != nil {
@ -1531,6 +1856,30 @@ func getSumPurchaseData(req *ErpDecisionReportReq) (DecisionReportData, error) {
}
}
if len(req.CommodityName) > 0 { // 商品名称
var commodityNames []string
for _, commodityName := range req.CommodityName {
commodityNames = append(commodityNames, commodityName)
}
if len(commodityNames) == 1 {
qs = qs.Where("erp_commodity_name = ?", commodityNames[0])
} else {
qs = qs.Where("erp_commodity_name IN (?)", commodityNames)
}
}
if len(req.CategoryID) > 0 { // 商品分类id
var categoryIDs []uint32
for _, category := range req.CategoryID {
categoryIDs = append(categoryIDs, category)
}
if len(categoryIDs) == 1 {
qs = qs.Where("erp_category_id = ?", categoryIDs[0])
} else {
qs = qs.Where("erp_category_id IN (?)", categoryIDs)
}
}
var err error
err = qs.Select("SUM(erp_purchase_inventory.count) AS purchase_stock").
Joins("JOIN erp_purchase_order ON erp_purchase_order.id = erp_purchase_inventory.erp_purchase_order_id").
@ -1576,6 +1925,30 @@ func getSumSalesData(req *ErpDecisionReportReq) (DecisionReportData, error) {
}
}
if len(req.CommodityName) > 0 { // 商品名称
var commodityNames []string
for _, commodityName := range req.CommodityName {
commodityNames = append(commodityNames, commodityName)
}
if len(commodityNames) == 1 {
qs = qs.Where("erp_commodity_name = ?", commodityNames[0])
} else {
qs = qs.Where("erp_commodity_name IN (?)", commodityNames)
}
}
if len(req.CategoryID) > 0 { // 商品分类id
var categoryIDs []uint32
for _, category := range req.CategoryID {
categoryIDs = append(categoryIDs, category)
}
if len(categoryIDs) == 1 {
qs = qs.Where("erp_category_id = ?", categoryIDs[0])
} else {
qs = qs.Where("erp_category_id IN (?)", categoryIDs)
}
}
subQuery := qs.Select(`
SUM(CASE WHEN erp_order.retail_type = ? AND erp_order.state = ? AND erp_order.pay_status = ? THEN erp_order_commodity.count ELSE 0 END) AS order_sale,
SUM(CASE WHEN erp_order.retail_type = ? AND erp_order.state = ? THEN erp_order_commodity.count ELSE 0 END) AS order_reject
@ -1617,9 +1990,21 @@ func getSumInventoryData(req *ErpDecisionReportReq) (DecisionReportData, error)
if len(req.StoreId) > 0 {
if len(req.StoreId) == 1 {
qs = qs.Where("store_id = ?", req.StoreId[0])
qs = qs.Where("erp_inventory_change_order.store_id = ?", req.StoreId[0])
} else {
qs = qs.Where("store_id IN (?)", req.StoreId)
qs = qs.Where("erp_inventory_change_order.store_id IN (?)", req.StoreId)
}
}
if len(req.CommodityName) > 0 { // 商品名称
var commodityNames []string
for _, commodityName := range req.CommodityName {
commodityNames = append(commodityNames, commodityName)
}
if len(commodityNames) == 1 {
qs = qs.Where("erp_inventory_change_commodity.commodity_name = ?", commodityNames[0])
} else {
qs = qs.Where("erp_inventory_change_commodity.commodity_name IN (?)", commodityNames)
}
}
@ -1664,6 +2049,30 @@ func getSumAllotData(req *ErpDecisionReportReq) (DecisionReportData, error) {
qs = qs.Where("erp_inventory_allot_commodity.created_at <= ?", parse)
}
if len(req.CommodityName) > 0 { // 商品名称
var commodityNames []string
for _, commodityName := range req.CommodityName {
commodityNames = append(commodityNames, commodityName)
}
if len(commodityNames) == 1 {
qs = qs.Where("erp_inventory_allot_commodity.commodity_name = ?", commodityNames[0])
} else {
qs = qs.Where("erp_inventory_allot_commodity.commodity_name IN (?)", commodityNames)
}
}
if len(req.CategoryID) > 0 { // 商品分类id
var categoryIDs []uint32
for _, category := range req.CategoryID {
categoryIDs = append(categoryIDs, category)
}
if len(categoryIDs) == 1 {
qs = qs.Where("erp_inventory_allot_commodity.erp_category_id = ?", categoryIDs[0])
} else {
qs = qs.Where("erp_inventory_allot_commodity.erp_category_id IN (?)", categoryIDs)
}
}
// Apply store_id filter if provided
if len(req.StoreId) > 1 {
subQuery := qs.Select(`
@ -1716,18 +2125,28 @@ func getSumAllotData(req *ErpDecisionReportReq) (DecisionReportData, error) {
func getSumDecisionReportData(req *ErpDecisionReportReq) (DecisionSumData, error) {
var sumData DecisionSumData
sumStartData, err := getSumStartCount(req)
if err != nil {
return DecisionSumData{}, err
}
sumData.TotalBeginStock = sumStartData.BeginStock
sumData.TotalBeginAmount = sumStartData.BeginAmount
sumEndData, err := getSumEndCount(req)
if err != nil {
return DecisionSumData{}, err
}
sumData.TotalEndStock = sumEndData.EndStock
sumData.TotalEndAmount = sumEndData.EndAmount
sumStockData, err := getSumStockData(req)
if err != nil {
return DecisionSumData{}, err
}
sumData.TotalBeginStock = sumStockData.BeginStock
sumData.TotalBeginAmount = sumStockData.BeginAmount
sumData.TotalPurchaseReturn = sumStockData.PurchaseReturn
sumData.TotalAllotWaitIn = sumStockData.AllotWaitIn
sumData.TotalProductIn = sumStockData.ProductIn
sumData.TotalSystemOut = sumStockData.SystemOut
sumData.TotalEndStock = sumStockData.EndStock
sumData.TotalEndAmount = sumStockData.EndAmount
sumPurchaseData, err := getSumPurchaseData(req)
if err != nil {
@ -1757,6 +2176,15 @@ func getSumDecisionReportData(req *ErpDecisionReportReq) (DecisionSumData, error
sumData.TotalAllotIn = sumAllotData.AllotIn
sumData.TotalAllotOut = sumAllotData.AllotOut
// Step 4: 计算调整库存逻辑(期初+入库-出库)
sumData.TotalEndStock = sumData.TotalBeginStock + sumData.TotalPurchaseStock + sumData.TotalAllotIn + sumData.TotalProductIn + sumData.TotalCheckIn
if sumData.TotalEndStock < (sumData.TotalPurchaseReturn + sumData.TotalOrderSale + sumData.TotalAllotOut + sumData.TotalSystemOut + sumData.TotalCheckOut) {
sumData.TotalEndStock = 0
sumData.TotalEndAmount = 0
} else {
sumData.TotalEndStock -= sumData.TotalPurchaseReturn + sumData.TotalOrderSale + sumData.TotalAllotOut + sumData.TotalSystemOut + sumData.TotalCheckOut
}
roundDecisionSumData(&sumData)
return sumData, nil

View File

@ -289,6 +289,7 @@ type DemandData struct {
ErpCommodityName string `json:"erp_commodity_name"` // 商品名称
ErpCategoryID uint32 `json:"erp_category_id"` // 商品分类id
ErpCategoryName string `json:"erp_category_name"` // 商品分类名称
Img string `json:"img"` // 图片
RetailPrice float64 `json:"retail_price"` // 指导零售价
LastWholesalePrice float64 `json:"last_wholesale_price"` // 最近采购价
TotalCount uint32 `json:"total_count"` // 需采购总数量
@ -2106,6 +2107,7 @@ func convertToDemandDataAll(commodity ErpCommodity, usedStore []uint32, stores [
ErpCategoryName: commodity.ErpCategoryName,
RetailPrice: commodity.RetailPrice,
Remark: demandRemarkMap[commodity.ID].Remark,
Img: commodity.Img,
}
var demands []ErpPurchaseDemand
@ -2405,6 +2407,7 @@ func convertToDemandData(commodity ErpCommodity, usedStore []uint32, stores []St
ErpCategoryName: commodity.ErpCategoryName,
RetailPrice: commodity.RetailPrice,
Remark: demandRemarksMap[commodity.ID].Remark,
Img: commodity.Img,
}
var demands []ErpPurchaseDemand

View File

@ -6893,6 +6893,10 @@ const docTemplate = `{
"description": "系统生成串码2-是(系统生成) 3-否(手动添加)",
"type": "integer"
},
"img": {
"description": "图片",
"type": "string"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"
@ -6995,6 +6999,10 @@ const docTemplate = `{
"description": "1-无串码 2-串码(系统生成) 3-串码(手动添加)",
"type": "integer"
},
"img": {
"description": "图片",
"type": "string"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"
@ -8063,6 +8071,10 @@ const docTemplate = `{
"description": "1-无串码 2-串码(系统生成) 3-串码(手动添加)",
"type": "integer"
},
"img": {
"description": "图片",
"type": "string"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"

View File

@ -6882,6 +6882,10 @@
"description": "系统生成串码2-是(系统生成) 3-否(手动添加)",
"type": "integer"
},
"img": {
"description": "图片",
"type": "string"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"
@ -6984,6 +6988,10 @@
"description": "1-无串码 2-串码(系统生成) 3-串码(手动添加)",
"type": "integer"
},
"img": {
"description": "图片",
"type": "string"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"
@ -8052,6 +8060,10 @@
"description": "1-无串码 2-串码(系统生成) 3-串码(手动添加)",
"type": "integer"
},
"img": {
"description": "图片",
"type": "string"
},
"is_imei": {
"description": "是否串码1-串码类 2-非串码",
"type": "integer"

View File

@ -510,6 +510,9 @@ definitions:
imei_type:
description: 系统生成串码2-是(系统生成) 3-否(手动添加)
type: integer
img:
description: 图片
type: string
is_imei:
description: 是否串码1-串码类 2-非串码
type: integer
@ -583,6 +586,9 @@ definitions:
imei_type:
description: 1-无串码 2-串码(系统生成) 3-串码(手动添加)
type: integer
img:
description: 图片
type: string
is_imei:
description: 是否串码1-串码类 2-非串码
type: integer
@ -1369,6 +1375,9 @@ definitions:
imei_type:
description: 1-无串码 2-串码(系统生成) 3-串码(手动添加)
type: integer
img:
description: 图片
type: string
is_imei:
description: 是否串码1-串码类 2-非串码
type: integer