Merge remote-tracking branch 'origin/dev_1.4.1'
# Conflicts: # config/settings.yml
This commit is contained in:
commit
5abaddf3fd
|
@ -308,7 +308,7 @@ func QueryName(c *gin.Context) {
|
|||
}
|
||||
|
||||
var detailReq models.ErpStockCommodityListReq
|
||||
detailReq.CommodityName = req.CommodityName
|
||||
detailReq.CommodityName = append(detailReq.CommodityName, req.CommodityName)
|
||||
detailReq.PageIndex = req.PageIndex
|
||||
detailReq.PageSize = req.PageSize
|
||||
detailReq.StoreId = req.StoreId
|
||||
|
|
|
@ -699,7 +699,7 @@ type HmPayUnifiedOrderRsp struct {
|
|||
}
|
||||
|
||||
func ParsePrivateKeyDeovo() (*rsa.PrivateKey, error) {
|
||||
//fp := "/Users/max/Documents/code/deovo/mh_goadmin_server/config/hm_pay/private_key.pem"
|
||||
//fp := "/Users/max/Documents/code/deovo/mh_goadmin_server/config/hm_pay/deovo_private_key.pem"
|
||||
fp := "./config/hm_pay/deovo_private_key.pem"
|
||||
privateKey, err := os.ReadFile(fp)
|
||||
if err != nil {
|
||||
|
@ -1063,7 +1063,7 @@ func HmJsPayBToCOrder(storeId uint32, orderId string, totalFee float64, authCode
|
|||
|
||||
if config.ApplicationConfig.Mode == "dev" {
|
||||
biz.CreateIp = clientIpDev
|
||||
publicPara.AppId = HmPayMerchantId
|
||||
biz.TerminalId = "test999" // 测试终端
|
||||
}
|
||||
|
||||
unifiedOrderReq.HmPayPublicPara = publicPara
|
||||
|
@ -1080,21 +1080,12 @@ func HmJsPayBToCOrder(storeId uint32, orderId string, totalFee float64, authCode
|
|||
return nil, err
|
||||
}
|
||||
|
||||
if config.ApplicationConfig.Mode == "dev" {
|
||||
sign, err := GenHmPaySign(m)
|
||||
if err != nil {
|
||||
logger.Error("HmJsPayUnifiedOrder GenHmPaySign err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
unifiedOrderReq.Sign = sign
|
||||
} else {
|
||||
sign, err := GenHmPaySignDeovo(m)
|
||||
if err != nil {
|
||||
logger.Error("HmJsPayUnifiedOrder GenHmPaySign err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
unifiedOrderReq.Sign = sign
|
||||
sign, err := GenHmPaySignDeovo(m)
|
||||
if err != nil {
|
||||
logger.Error("HmJsPayUnifiedOrder GenHmPaySign err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
unifiedOrderReq.Sign = sign
|
||||
|
||||
unifiedOrderResp, err := HmPayUnifiedOrder(unifiedOrderReq)
|
||||
if err != nil {
|
||||
|
@ -1108,18 +1099,10 @@ func HmJsPayBToCOrder(storeId uint32, orderId string, totalFee float64, authCode
|
|||
return nil, err
|
||||
}
|
||||
|
||||
if config.ApplicationConfig.Mode == "dev" {
|
||||
err = HmVerifySha1Rsa(signContent, unifiedOrderResp.Sign)
|
||||
if err != nil {
|
||||
logger.Errorf("HmVerifySha1Rsa err:", err)
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
err = HmVerifySha1RsaDeovo(signContent, unifiedOrderResp.Sign)
|
||||
if err != nil {
|
||||
logger.Errorf("HmVerifySha1Rsa err:", err)
|
||||
return nil, err
|
||||
}
|
||||
err = HmVerifySha1RsaDeovo(signContent, unifiedOrderResp.Sign)
|
||||
if err != nil {
|
||||
logger.Errorf("HmVerifySha1Rsa err:", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
//fmt.Println("unifiedOrderResp:", unifiedOrderResp.Data)
|
||||
|
@ -1141,7 +1124,7 @@ func HmQueryOrder(orderId string) (*HmPayTradeQueryResp, error) {
|
|||
|
||||
unifiedOrderReq := HmJsPayUnifiedOrderReq{}
|
||||
publicPara := HmPayPublicPara{
|
||||
AppId: HmPayMerchantId,
|
||||
AppId: HmPayMerchantIdDeovo,
|
||||
Method: "trade.query",
|
||||
SignType: "RSA",
|
||||
Sign: "",
|
||||
|
@ -1166,7 +1149,7 @@ func HmQueryOrder(orderId string) (*HmPayTradeQueryResp, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
sign, err := GenHmPaySign(m)
|
||||
sign, err := GenHmPaySignDeovo(m)
|
||||
if err != nil {
|
||||
logger.Error("HmJsPayUnifiedOrder GenHmPaySign err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
|
@ -1184,7 +1167,7 @@ func HmQueryOrder(orderId string) (*HmPayTradeQueryResp, error) {
|
|||
logger.Errorf("ToSignContent err:", err)
|
||||
return nil, err
|
||||
}
|
||||
err = HmVerifySha1Rsa(signContent, unifiedOrderResp.Sign)
|
||||
err = HmVerifySha1RsaDeovo(signContent, unifiedOrderResp.Sign)
|
||||
if err != nil {
|
||||
logger.Errorf("HmVerifySha1Rsa err:", err)
|
||||
return nil, err
|
||||
|
@ -1210,7 +1193,7 @@ func HmCancelOrder(orderId string) (*HmPayTradeCancelResp, error) {
|
|||
|
||||
unifiedOrderReq := HmJsPayUnifiedOrderReq{}
|
||||
publicPara := HmPayPublicPara{
|
||||
AppId: HmPayMerchantId,
|
||||
AppId: HmPayMerchantIdDeovo,
|
||||
Method: "trade.cancel",
|
||||
SignType: "RSA",
|
||||
Sign: "",
|
||||
|
@ -1235,7 +1218,7 @@ func HmCancelOrder(orderId string) (*HmPayTradeCancelResp, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
sign, err := GenHmPaySign(m)
|
||||
sign, err := GenHmPaySignDeovo(m)
|
||||
if err != nil {
|
||||
logger.Error("HmJsPayUnifiedOrder GenHmPaySign err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
|
@ -1253,7 +1236,7 @@ func HmCancelOrder(orderId string) (*HmPayTradeCancelResp, error) {
|
|||
logger.Errorf("ToSignContent err:", err)
|
||||
return nil, err
|
||||
}
|
||||
err = HmVerifySha1Rsa(signContent, unifiedOrderResp.Sign)
|
||||
err = HmVerifySha1RsaDeovo(signContent, unifiedOrderResp.Sign)
|
||||
if err != nil {
|
||||
logger.Errorf("HmVerifySha1Rsa err:", err)
|
||||
return nil, err
|
||||
|
|
|
@ -31,7 +31,7 @@ func TestHmJsPayBToCOrder(t *testing.T) {
|
|||
authCode := "6264900646139788518"
|
||||
notifyUrl := "https://dev.switch.deovo.com:8004/api/v1/wxpay/notice"
|
||||
|
||||
order, err := HmJsPayBToCOrder(orderId, totalFee, authCode, notifyUrl)
|
||||
order, err := HmJsPayBToCOrder(13, orderId, totalFee, authCode, notifyUrl)
|
||||
if err != nil {
|
||||
fmt.Println("err:", err)
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ func TestHmJsPayBToCOrder(t *testing.T) {
|
|||
|
||||
// 查询
|
||||
func TestHmQueryOrder(t *testing.T) {
|
||||
orderId := "sale2023122225067733"
|
||||
orderId := "sale2024070569804727"
|
||||
|
||||
order, err := HmQueryOrder(orderId)
|
||||
if err != nil {
|
||||
|
|
|
@ -2261,7 +2261,7 @@ type ErpStockCommodityListReq struct {
|
|||
ErpStockId uint32 `json:"erp_stock_id"` // 库存id
|
||||
ErpCommodityId uint32 `json:"erp_commodity_id"` // 商品id
|
||||
SerialNumber string `json:"serial_number"` // 商品编号
|
||||
CommodityName string `json:"commodity_name"` // 商品名称
|
||||
CommodityName []string `json:"commodity_name"` // 商品名称
|
||||
ErpCategoryId uint32 `json:"erp_category_id"` // 商品分类Id
|
||||
IsIMEI uint32 `json:"is_imei"` // 是否串码:0-查全部 1-查串码类 2-查非串码
|
||||
IMEI string `json:"imei"` // 串码
|
||||
|
@ -2277,6 +2277,7 @@ type ErpStockCommodityListReq struct {
|
|||
PageIndex int `json:"pageIndex"` // 页码
|
||||
PageSize int `json:"pageSize"` // 每页展示数据条数
|
||||
IsExport uint32 `json:"is_export"` // 是否导出excel:1-导出
|
||||
StockSortFlag uint32 `json:"stock_sort_flag"` // 排序方式:0-按入库时间降序排列(默认),1-按入库时间升序排列
|
||||
//Sn string `json:"sn"` // 首次入库订单编号
|
||||
}
|
||||
|
||||
|
@ -2362,7 +2363,7 @@ func (m *ErpStockCommodityListReq) GetDetailList(c *gin.Context, nType uint32) (
|
|||
//获取库存商品列表
|
||||
var commodities []ErpStockCommodity
|
||||
if m.IsExport == 1 {
|
||||
err := qs.Find(&commodities).Order("id DESC").Error
|
||||
err := qs.Find(&commodities).Order("stock_time DESC,id DESC").Error
|
||||
if err != nil && !errors.Is(err, RecordNotFound) {
|
||||
//logger.Error("dailys err:", err)
|
||||
return resp, err
|
||||
|
@ -2374,7 +2375,11 @@ func (m *ErpStockCommodityListReq) GetDetailList(c *gin.Context, nType uint32) (
|
|||
}
|
||||
resp.ExportUrl = listExport
|
||||
} else {
|
||||
err := qs.Offset(page * m.PageSize).Limit(m.PageSize).Order("stock_time DESC,id DESC").Find(&commodities).Error
|
||||
if m.StockSortFlag == 1 {
|
||||
err = qs.Offset(page * m.PageSize).Limit(m.PageSize).Order("stock_time ASC,id ASC").Find(&commodities).Error
|
||||
} else {
|
||||
err = qs.Offset(page * m.PageSize).Limit(m.PageSize).Order("stock_time DESC,id DESC").Find(&commodities).Error
|
||||
}
|
||||
if err != nil && !errors.Is(err, RecordNotFound) {
|
||||
//logger.Error("erp commodity list err:", err)
|
||||
return resp, err
|
||||
|
@ -2537,11 +2542,11 @@ func (m *ErpStockCommodityListReq) buildQueryConditions(qs *gorm.DB, nType uint3
|
|||
qs = qs.Where("commodity_serial_number=?", m.SerialNumber)
|
||||
}
|
||||
|
||||
if m.CommodityName != "" { //商品名称
|
||||
if len(m.CommodityName) != 0 { //商品名称
|
||||
if nType == 1 {
|
||||
qs = qs.Where("erp_commodity_name = ?", m.CommodityName)
|
||||
qs = qs.Where("erp_commodity_name IN (?)", m.CommodityName)
|
||||
} else {
|
||||
qs = qs.Where("erp_commodity_name like ?", "%"+m.CommodityName+"%")
|
||||
qs = qs.Where("erp_commodity_name like ?", "%"+m.CommodityName[0]+"%")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -83,6 +83,7 @@ type ErpOrder struct {
|
|||
RejectedTotalCount uint32 `json:"rejected_total_count" gorm:"-"` // 订单总退货数量
|
||||
StorePer float64 `json:"store_per"` // 门店提成:订单总员工毛利X该门店设置好的提成比例,保留到小数后两位多余舍去
|
||||
TotalDiscount float64 `json:"total_discount"` // 订单总优惠:订单所有商品零售优惠+会员优惠+会员积分抵扣之和
|
||||
BankTrxNo string `json:"bank_trx_no" gorm:"-"` // 银行流水号
|
||||
Commodities []ErpOrderCommodity `json:"commodities" gorm:"-"` // 零售订单商品信息
|
||||
Cashiers []ErpOrderCashier `json:"cashiers" gorm:"-"` // 收付款方式
|
||||
Salesman []ErpOrderSales `json:"salesman" gorm:"-"` // 销售员信息
|
||||
|
@ -162,6 +163,7 @@ type ErpOrderRecord struct {
|
|||
OutOrderNo string `json:"out_order_no"` // 商户订单号
|
||||
PlatTrxNo string `json:"plat_trx_no"` // 平台交易流水号
|
||||
BankOrderNo string `json:"bank_order_no"` // 银行订单号
|
||||
BankTrxNo string `json:"bank_trx_no"` // 银行流水号
|
||||
TotalAmount float64 `json:"total_amount"` // 订单总金额
|
||||
PayWay string `json:"pay_way"` // 支付方式
|
||||
Status string `json:"status"` // 支付状态
|
||||
|
@ -331,6 +333,8 @@ type ErpOrderRetailDetailReq struct {
|
|||
IMEI string `json:"imei"` // 串码
|
||||
StartTime string `json:"start_time"` // 开始时间
|
||||
EndTime string `json:"end_time"` // 结束时间
|
||||
BankTrxNo string `json:"bank_trx_no"` // 银联流水号
|
||||
CashierId uint32 `json:"cashier_id"` // 收付款方式id
|
||||
PageIndex int `json:"pageIndex"` // 页码
|
||||
PageSize int `json:"pageSize"` // 页面条数
|
||||
IsExport uint32 `json:"is_export"` // 1-导出
|
||||
|
@ -594,6 +598,7 @@ func (m *ErpOrderListReq) List(c *gin.Context) (*ErpOrderListResp, error) {
|
|||
erpOrderListSetCommodity(orders)
|
||||
erpOrderListSetCashier(orders)
|
||||
erpOrderListSetSalesman(orders)
|
||||
erpOrderSetBankTrxNo(orders)
|
||||
|
||||
resp.List = orders
|
||||
|
||||
|
@ -802,7 +807,8 @@ func stringToIntArray(str string) ([]uint32, error) {
|
|||
}
|
||||
|
||||
// 更新零售订单商品表的库存商品表主键id字段
|
||||
func updateErpStockCommodityID(gdb *gorm.DB, id uint32, nIdList []uint32) error {
|
||||
func updateErpStockCommodityID(gdb *gorm.DB, commodity ErpOrderCommodity, nIdList []uint32) error {
|
||||
fmt.Println("nIdList is:", nIdList)
|
||||
strId := intArrayToString(nIdList)
|
||||
|
||||
// 查找在库的非串码商品
|
||||
|
@ -813,12 +819,14 @@ func updateErpStockCommodityID(gdb *gorm.DB, id uint32, nIdList []uint32) error
|
|||
return err
|
||||
}
|
||||
|
||||
err = gdb.Table("erp_order_commodity").Where("id = ?", id).
|
||||
err = gdb.Table("erp_order_commodity").Where("id = ?", commodity.ID).
|
||||
Updates(map[string]interface{}{
|
||||
"erp_stock_commodity_id": strId,
|
||||
"retail_price": stockCommodity.RetailPrice,
|
||||
"wholesale_price": stockCommodity.WholesalePrice,
|
||||
"staff_cost_price": stockCommodity.StaffCostPrice,
|
||||
"sales_profit": commodity.SalePrice - stockCommodity.WholesalePrice,
|
||||
"staff_profit": commodity.SalePrice - stockCommodity.WholesalePrice - stockCommodity.StaffCostPrice,
|
||||
}).Error
|
||||
//Update("erp_stock_commodity_id", strId).Error
|
||||
if err != nil {
|
||||
|
@ -829,8 +837,8 @@ func updateErpStockCommodityID(gdb *gorm.DB, id uint32, nIdList []uint32) error
|
|||
return nil
|
||||
}
|
||||
|
||||
// 找一个可用的库存商品表主键ID
|
||||
func findRightErpStockCommodityId(idList map[uint32][]uint32, commodityId uint32, stockCommodity []ErpStockCommodity) (uint32, error) {
|
||||
// FindRightErpStockCommodityId 找一个可用的库存商品表主键ID
|
||||
func FindRightErpStockCommodityId(idList map[uint32][]uint32, commodityId uint32, stockCommodity []ErpStockCommodity) (uint32, error) {
|
||||
// 获取给定商品ID对应的ID列表
|
||||
existingIds, ok := idList[commodityId]
|
||||
if !ok || len(existingIds) == 0 {
|
||||
|
@ -967,12 +975,18 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error {
|
|||
}
|
||||
|
||||
// 找一个可用的库存商品表主键ID,使用零售商品表的主键ID作为key
|
||||
rightId, err := findRightErpStockCommodityId(usedStockCommodityIdList,
|
||||
rightId, err := FindRightErpStockCommodityId(usedStockCommodityIdList,
|
||||
commodities[i].ErpCommodityId, stockCommodity)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
logger.Info("rightId is:", logger.Field("rightId", rightId))
|
||||
if rightId == 0 {
|
||||
logger.Error("rightId is 0")
|
||||
return errors.New("查询商品库存出错")
|
||||
}
|
||||
|
||||
// 优先出库库存时间最长的数据
|
||||
err = gdb.Table("erp_stock_commodity").Where("id = ?", rightId).
|
||||
Updates(map[string]interface{}{"state": state}).Error // 状态更新为销售锁定中;反审核则更新为在库
|
||||
|
@ -993,7 +1007,7 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error {
|
|||
stockCommodityIdList = append(stockCommodityIdList, rightId)
|
||||
usedStockCommodityIdList[commodities[i].ErpCommodityId] = append(usedStockCommodityIdList[commodities[i].ErpCommodityId], rightId)
|
||||
|
||||
err = updateErpStockCommodityID(gdb, commodities[i].ID, stockCommodityIdList)
|
||||
err = updateErpStockCommodityID(gdb, commodities[i], stockCommodityIdList)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -1026,7 +1040,8 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error {
|
|||
var stockCommodity []ErpStockCommodity
|
||||
var stockCommodityIdList []uint32
|
||||
|
||||
if commodities[i].ErpStockCommodityID != "" {
|
||||
stockCommodityID, _ := tools.StringToInt(commodities[i].ErpStockCommodityID)
|
||||
if stockCommodityID > 0 {
|
||||
err = gdb.Table("erp_stock_commodity").Where("id = ?", commodities[i].ErpStockCommodityID).
|
||||
Updates(map[string]interface{}{"state": InStock}).Error // 状态更新为在库
|
||||
if err != nil {
|
||||
|
@ -1057,7 +1072,7 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error {
|
|||
}
|
||||
|
||||
// 找一个可用的库存商品表主键ID
|
||||
rightId, err := findRightErpStockCommodityId(usedStockCommodityIdList,
|
||||
rightId, err := FindRightErpStockCommodityId(usedStockCommodityIdList,
|
||||
commodities[i].ErpCommodityId, stockCommodity)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -1080,7 +1095,7 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error {
|
|||
stockCommodityIdList = append(stockCommodityIdList, rightId)
|
||||
usedStockCommodityIdList[commodities[i].ID] = append(usedStockCommodityIdList[commodities[i].ID], rightId)
|
||||
}
|
||||
err = updateErpStockCommodityID(gdb, commodities[i].ID, stockCommodityIdList)
|
||||
err = updateErpStockCommodityID(gdb, commodities[i], stockCommodityIdList)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -1176,6 +1191,23 @@ func NewErpBillSn() string {
|
|||
}
|
||||
}
|
||||
|
||||
// 添加零售订单的银行流水号
|
||||
func erpOrderSetBankTrxNo(list []ErpOrder) {
|
||||
for i, _ := range list {
|
||||
list[i].SetBankTrxNo()
|
||||
}
|
||||
}
|
||||
|
||||
func (m *ErpOrder) SetBankTrxNo() {
|
||||
var orderPayWay ErpOrderRecord
|
||||
err := orm.Eloquent.Table("erp_order_record").Where("bill_sn = ? and status = ?", m.BillSn, PayOk).Find(&orderPayWay).Error
|
||||
if err != nil {
|
||||
logger.Error("SetBankTrxNo query erp_order_record err:", logger.Field("err", err))
|
||||
}
|
||||
|
||||
m.BankTrxNo = orderPayWay.BankTrxNo
|
||||
}
|
||||
|
||||
// ErpOrderRetailDetailSetCommodity 添加零售明细中订单的商品信息
|
||||
func ErpOrderRetailDetailSetCommodity(list []ErpOrder) {
|
||||
for i, _ := range list {
|
||||
|
@ -1317,7 +1349,10 @@ func mergeOrderCommodities(orderCommodities []ErpOrderCommodity) []ErpOrderCommo
|
|||
existingCommodity.SaleDiscount += commodity.SaleDiscount
|
||||
existingCommodity.MemberDiscount += commodity.MemberDiscount
|
||||
existingCommodity.ReceivedAmount += commodity.ReceivedAmount
|
||||
existingCommodity.ErpStockCommodityID = strings.Join([]string{existingCommodity.ErpStockCommodityID, commodity.ErpStockCommodityID}, ",")
|
||||
stockCommodityID, _ := tools.StringToInt(commodity.ErpStockCommodityID)
|
||||
if stockCommodityID > 0 {
|
||||
existingCommodity.ErpStockCommodityID = strings.Join([]string{existingCommodity.ErpStockCommodityID, commodity.ErpStockCommodityID}, ",")
|
||||
}
|
||||
} else {
|
||||
// 使用commodity的副本避免对原始数据的修改
|
||||
commodityCopy := commodity
|
||||
|
@ -1926,6 +1961,7 @@ func ErpOrderPay(req *ErpOrderPayReq, c *gin.Context) (*ErpOrderPayResp, error)
|
|||
updateInfo := map[string]interface{}{
|
||||
"bank_order_no": hmPayResp.BankOrderNo,
|
||||
"plat_trx_no": hmPayResp.PlatTrxNo,
|
||||
"bank_trx_no": hmPayResp.BankTrxNo,
|
||||
"total_amount": hmPayResp.TotalAmount,
|
||||
"pay_way": hmPayResp.PayWay,
|
||||
"status": payStatus,
|
||||
|
@ -2017,6 +2053,7 @@ func QueryErpOrderPayStatus(billSn string) (*ErpOrderPayResp, error) {
|
|||
updateInfo := map[string]interface{}{
|
||||
"bank_order_no": hmQueryResp.BankOrderNo,
|
||||
"plat_trx_no": hmQueryResp.PlatTrxNo,
|
||||
"bank_trx_no": hmQueryResp.BankTrxNo,
|
||||
"total_amount": hmQueryResp.TotalAmount,
|
||||
"pay_way": hmQueryResp.PayWayCode,
|
||||
"status": payStatus,
|
||||
|
@ -2724,6 +2761,18 @@ func float64ToPercentage(value float64) string {
|
|||
func QueryRetailDetail(req *ErpOrderRetailDetailReq, c *gin.Context) (*ErpOrderRetailDetailResp, error) {
|
||||
resp := &ErpOrderRetailDetailResp{}
|
||||
|
||||
// 通过银行流水号查询
|
||||
if req.BankTrxNo != "" {
|
||||
var orderPayWay ErpOrderRecord
|
||||
err := orm.Eloquent.Table("erp_order_record").Where("bank_trx_no = ? and status = ?",
|
||||
req.BankTrxNo, PayOk).Find(&orderPayWay).Error
|
||||
if err != nil {
|
||||
logger.Error("query erp_order_record err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
req.BillSn = orderPayWay.BillSn
|
||||
}
|
||||
|
||||
var err error
|
||||
if (req.ErpCategoryId != 0 || req.ErpCommodityName != "" || req.IMEI != "") && req.BillSn == "" { // 商品分类or商品名称不为空且订单编号为空
|
||||
// 联表查询
|
||||
|
@ -3014,7 +3063,7 @@ func retailDetailExport(list []ErpOrder, sumData RetailDetailTotalData) (string,
|
|||
fileName := time.Now().Format(TimeFormat) + "零售明细" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
title := []interface{}{"订单编号", "订单类型", "用户ID", "客户手机号", "审核时间", "店铺", "销售员", "商品分类", "商品名称",
|
||||
title := []interface{}{"订单编号", "订单类型", "用户ID", "客户手机号", "审核时间", "店铺", "银联流水号", "销售员", "商品分类", "商品名称",
|
||||
"供应商", "是否串码", "商品串码", "是否赠送", "销售数量", "指导零售价", "零售价", "零售优惠", "会员优惠", "实际零售价/退货价",
|
||||
"采购单价", "员工成本价", "销售毛利", "员工毛利", "订单总指导零售价", "订单总优惠", "订单实收", "【扫码付", "现金收款", "pos机收款",
|
||||
"商场积分抵扣", "其他付款方式】", "订单总销售毛利", "订单总员工毛利", "销售毛利提成", "员工毛利提成", "销售员提成", "门店提成", "备注"}
|
||||
|
@ -3040,7 +3089,7 @@ func retailDetailExport(list []ErpOrder, sumData RetailDetailTotalData) (string,
|
|||
return "", errors.New("RetailMarginDataExport, 订单类型异常:" + list[i].RetailType)
|
||||
}
|
||||
|
||||
commodityIdMap := make(map[uint32]bool)
|
||||
orderFlag := false
|
||||
// 先判断商品数量,确定要写几行数据
|
||||
for rowId := 0; rowId < len(list[i].Commodities); rowId++ {
|
||||
if list[i].RetailType == RetailTypeSale {
|
||||
|
@ -3083,8 +3132,8 @@ func retailDetailExport(list []ErpOrder, sumData RetailDetailTotalData) (string,
|
|||
}
|
||||
|
||||
// 单个订单的汇总数据只记录一次
|
||||
if !commodityIdMap[list[i].Commodities[rowId].ErpCommodityId] {
|
||||
commodityIdMap[list[i].Commodities[rowId].ErpCommodityId] = true
|
||||
if !orderFlag {
|
||||
orderFlag = true
|
||||
salesMan := ""
|
||||
nSalesProfitPer := 0.0
|
||||
nStaffProfitPer := 0.0
|
||||
|
@ -3102,6 +3151,7 @@ func retailDetailExport(list []ErpOrder, sumData RetailDetailTotalData) (string,
|
|||
list[i].Tel,
|
||||
list[i].AuditTime,
|
||||
list[i].StoreName,
|
||||
list[i].BankTrxNo,
|
||||
salesMan, //销售员
|
||||
list[i].Commodities[rowId].ErpCategoryName,
|
||||
list[i].Commodities[rowId].ErpCommodityName,
|
||||
|
@ -3144,6 +3194,7 @@ func retailDetailExport(list []ErpOrder, sumData RetailDetailTotalData) (string,
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
list[i].Salesman[1].Name, //销售员
|
||||
list[i].Commodities[rowId].ErpCategoryName,
|
||||
list[i].Commodities[rowId].ErpCommodityName,
|
||||
|
@ -3185,6 +3236,7 @@ func retailDetailExport(list []ErpOrder, sumData RetailDetailTotalData) (string,
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"", //销售员
|
||||
list[i].Commodities[rowId].ErpCategoryName,
|
||||
list[i].Commodities[rowId].ErpCommodityName,
|
||||
|
@ -3238,6 +3290,7 @@ func retailDetailExport(list []ErpOrder, sumData RetailDetailTotalData) (string,
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
list[i].Salesman[1].Name, //销售员
|
||||
"",
|
||||
"",
|
||||
|
@ -3285,7 +3338,7 @@ func retailDetailExport(list []ErpOrder, sumData RetailDetailTotalData) (string,
|
|||
}
|
||||
|
||||
totalData := "订单数:" + strconv.FormatInt(int64(len(list)), 10)
|
||||
end := []interface{}{totalData, "", "", "", "", "", "", "", "", "", "", "", "",
|
||||
end := []interface{}{totalData, "", "", "", "", "", "", "", "", "", "", "", "", "",
|
||||
sumData.Count,
|
||||
sumData.RetailPrice,
|
||||
sumData.SalePrice,
|
||||
|
@ -3330,15 +3383,15 @@ func retailDetailExport(list []ErpOrder, sumData RetailDetailTotalData) (string,
|
|||
_ = file.SetCellStyle("Sheet1", "A1", endRow, style)
|
||||
|
||||
//需要自动换行的列
|
||||
endRow1 := fmt.Sprintf("G%d", nExcelStartRow+2)
|
||||
endRow2 := fmt.Sprintf("AH%d", nExcelStartRow+2)
|
||||
endRow3 := fmt.Sprintf("AI%d", nExcelStartRow+2)
|
||||
endRow4 := fmt.Sprintf("AJ%d", nExcelStartRow+2)
|
||||
_ = file.SetCellStyle("Sheet1", "A1", "AL1", style1)
|
||||
_ = file.SetCellStyle("Sheet1", "G2", endRow1, style1)
|
||||
_ = file.SetCellStyle("Sheet1", "AH2", endRow2, style1)
|
||||
_ = file.SetCellStyle("Sheet1", "AI2", endRow3, style1)
|
||||
_ = file.SetCellStyle("Sheet1", "AJ2", endRow4, style1)
|
||||
endRow1 := fmt.Sprintf("H%d", nExcelStartRow+2)
|
||||
endRow2 := fmt.Sprintf("AI%d", nExcelStartRow+2)
|
||||
endRow3 := fmt.Sprintf("AJ%d", nExcelStartRow+2)
|
||||
endRow4 := fmt.Sprintf("AK%d", nExcelStartRow+2)
|
||||
_ = file.SetCellStyle("Sheet1", "A1", "AM1", style1)
|
||||
_ = file.SetCellStyle("Sheet1", "H2", endRow1, style1)
|
||||
_ = file.SetCellStyle("Sheet1", "AI2", endRow2, style1)
|
||||
_ = file.SetCellStyle("Sheet1", "AJ2", endRow3, style1)
|
||||
_ = file.SetCellStyle("Sheet1", "AK2", endRow4, style1)
|
||||
|
||||
fmt.Println("save fileName:", config.ExportConfig.Path+fileName)
|
||||
if err := file.SaveAs(config.ExportConfig.Path + fileName); err != nil {
|
||||
|
@ -3541,6 +3594,25 @@ func queryRetailDetailByJoin(req *ErpOrderRetailDetailReq, c *gin.Context) (*Erp
|
|||
logger.Error("query erp_order_pay_way sum data err:", logger.Field("err", err))
|
||||
return resp, err
|
||||
}
|
||||
|
||||
// 支付方式筛选
|
||||
if req.CashierId != 0 {
|
||||
var tempCashier TotalCashierData
|
||||
switch req.CashierId {
|
||||
case 1:
|
||||
tempCashier.ScanAmount = cashier.ScanAmount
|
||||
case 2:
|
||||
tempCashier.CashAmount = cashier.CashAmount
|
||||
case 3:
|
||||
tempCashier.PosAmount = cashier.PosAmount
|
||||
case 4:
|
||||
tempCashier.StoreVmAmount = cashier.StoreVmAmount
|
||||
default:
|
||||
tempCashier = cashier
|
||||
}
|
||||
cashier = tempCashier
|
||||
}
|
||||
|
||||
// 退货订单支付汇总:目前零售退货订单暂时不展示各个方式的付款金额
|
||||
var rejectedCashier TotalCashierData
|
||||
//rejectedCashierQs := qs
|
||||
|
@ -3562,11 +3634,17 @@ func queryRetailDetailByJoin(req *ErpOrderRetailDetailReq, c *gin.Context) (*Erp
|
|||
sumData.TotalAmount = 0 // 订单实收金额
|
||||
sumData.StorePer = 0 // 门店提成
|
||||
|
||||
sumData.ScanAmount = cashier.ScanAmount
|
||||
sumData.CashAmount = cashier.CashAmount
|
||||
sumData.PosAmount = cashier.PosAmount
|
||||
sumData.StoreVmAmount = cashier.StoreVmAmount
|
||||
sumData.OtherAmount = cashier.OtherAmount
|
||||
//sumData.ScanAmount = cashier.ScanAmount
|
||||
//sumData.CashAmount = cashier.CashAmount
|
||||
//sumData.PosAmount = cashier.PosAmount
|
||||
//sumData.StoreVmAmount = cashier.StoreVmAmount
|
||||
//sumData.OtherAmount = cashier.OtherAmount
|
||||
|
||||
sumData.ScanAmount = 0
|
||||
sumData.CashAmount = 0
|
||||
sumData.PosAmount = 0
|
||||
sumData.StoreVmAmount = 0
|
||||
sumData.OtherAmount = 0
|
||||
|
||||
var result []RetailDetailByJoin
|
||||
|
||||
|
@ -3585,6 +3663,7 @@ func queryRetailDetailByJoin(req *ErpOrderRetailDetailReq, c *gin.Context) (*Erp
|
|||
}
|
||||
|
||||
orders := packData(result)
|
||||
erpOrderSetBankTrxNo(orders)
|
||||
fileUrl, err := retailDetailExport(orders, sumData)
|
||||
if err != nil {
|
||||
logger.Error("retailDetailExport err:", logger.Field("err", err))
|
||||
|
@ -3609,6 +3688,7 @@ func queryRetailDetailByJoin(req *ErpOrderRetailDetailReq, c *gin.Context) (*Erp
|
|||
orders := packData(result)
|
||||
erpOrderListSetCashier(orders)
|
||||
erpOrderListSetSalesman(orders)
|
||||
erpOrderSetBankTrxNo(orders)
|
||||
pagedOrders := paginate(orders, page, req.PageSize)
|
||||
|
||||
resp.List = pagedOrders
|
||||
|
@ -3751,6 +3831,11 @@ func packData(result []RetailDetailByJoin) []ErpOrder {
|
|||
orders = append(orders, item)
|
||||
}
|
||||
|
||||
// 根据AuditTime进行降序排序
|
||||
sort.SliceStable(orders, func(i, j int) bool {
|
||||
return orders[i].AuditTime.After(*orders[j].AuditTime)
|
||||
})
|
||||
|
||||
return orders
|
||||
}
|
||||
|
||||
|
@ -3826,6 +3911,10 @@ func queryRetailDetailCommon(req *ErpOrderRetailDetailReq, c *gin.Context) (*Erp
|
|||
qs = qs.Where("JSON_CONTAINS(salesman_list, ?)", fmt.Sprintf(`{"userId":%d}`, req.Salesman))
|
||||
totalPerQs = totalPerQs.Where("erp_order_sales.uid = ?", req.Salesman)
|
||||
}
|
||||
if req.CashierId != 0 { // 支付方式
|
||||
qs = qs.Where("JSON_CONTAINS(cashier_list, ?)", fmt.Sprintf(`{"cashier_id":%d}`, req.CashierId))
|
||||
//totalPerQs = totalPerQs.Where("erp_order_pay_way.cashier_id = ?", req.CashierId)
|
||||
}
|
||||
if req.StartTime != "" { // 审核开始时间
|
||||
parse, err := time.Parse(QueryTimeFormat, req.StartTime)
|
||||
if err != nil {
|
||||
|
@ -3895,6 +3984,25 @@ func queryRetailDetailCommon(req *ErpOrderRetailDetailReq, c *gin.Context) (*Erp
|
|||
logger.Error("query erp_order_pay_way sum data err:", logger.Field("err", err))
|
||||
return resp, err
|
||||
}
|
||||
|
||||
// 支付方式筛选
|
||||
if req.CashierId != 0 {
|
||||
var tempCashier TotalCashierData
|
||||
switch req.CashierId {
|
||||
case 1:
|
||||
tempCashier.ScanAmount = cashier.ScanAmount
|
||||
case 2:
|
||||
tempCashier.CashAmount = cashier.CashAmount
|
||||
case 3:
|
||||
tempCashier.PosAmount = cashier.PosAmount
|
||||
case 4:
|
||||
tempCashier.StoreVmAmount = cashier.StoreVmAmount
|
||||
default:
|
||||
tempCashier = cashier
|
||||
}
|
||||
cashier = tempCashier
|
||||
}
|
||||
|
||||
// 退货订单支付汇总:目前零售退货订单暂时不展示各个方式的付款金额
|
||||
var rejectedCashier TotalCashierData
|
||||
//rejectedCashierQs := qs
|
||||
|
@ -3926,6 +4034,7 @@ func queryRetailDetailCommon(req *ErpOrderRetailDetailReq, c *gin.Context) (*Erp
|
|||
}
|
||||
ErpOrderRetailDetailSetCommodity(orders)
|
||||
erpOrderListSetSalesman(orders)
|
||||
erpOrderSetBankTrxNo(orders)
|
||||
|
||||
fileUrl, err := retailDetailExport(orders, sumData)
|
||||
if err != nil {
|
||||
|
@ -3952,6 +4061,7 @@ func queryRetailDetailCommon(req *ErpOrderRetailDetailReq, c *gin.Context) (*Erp
|
|||
ErpOrderRetailDetailSetCommodity(orders)
|
||||
erpOrderListSetSalesman(orders)
|
||||
erpOrderListSetCashier(orders)
|
||||
erpOrderSetBankTrxNo(orders)
|
||||
//erpOrderListSetSalesmanByRetailDetail(req.Salesman, orders)
|
||||
|
||||
resp.List = orders
|
||||
|
@ -4608,7 +4718,8 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) {
|
|||
// 串码商品直接查询;非串码商品查询库存时间最久的商品
|
||||
var commodities []ErpStockCommodity
|
||||
if len(imeiList) != 0 {
|
||||
err := orm.Eloquent.Table("erp_stock_commodity").Where("imei IN (?)", imeiList).
|
||||
err := orm.Eloquent.Table("erp_stock_commodity").Where("imei IN (?) and state = ? "+
|
||||
"and store_id = ?", imeiList, InStock, req.StoreId).
|
||||
Find(&commodities).Error
|
||||
if err != nil {
|
||||
logger.Error("get commodities err:", logger.Field("err", err))
|
||||
|
@ -4622,7 +4733,8 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) {
|
|||
|
||||
if len(commodityIds) != 0 {
|
||||
commodities = nil
|
||||
err = orm.Eloquent.Table("erp_stock_commodity").Where("erp_commodity_id IN (?)", commodityIds).
|
||||
err = orm.Eloquent.Table("erp_stock_commodity").Where("erp_commodity_id IN (?) and state = ? "+
|
||||
"and store_id = ?", commodityIds, InStock, req.StoreId).
|
||||
Find(&commodities).Error
|
||||
if err != nil {
|
||||
logger.Error("get commodities err:", logger.Field("err", err))
|
||||
|
@ -5071,50 +5183,22 @@ func updateSalesData(gdb *gorm.DB, orderId uint32, req *ErpOrderCreateReq) error
|
|||
return errors.New("操作失败:" + err.Error())
|
||||
}
|
||||
|
||||
var newOrderSales []ErpOrderSales
|
||||
var deletedOrderSales []ErpOrderSales
|
||||
var matchingOrderSales []ErpOrderSales
|
||||
// 找到新增的商品
|
||||
for _, reqSales := range req.Salesman {
|
||||
var found bool
|
||||
for _, dbSales := range orderSales {
|
||||
if reqSales.Uid == dbSales.Uid {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
reqSales.ID = 0
|
||||
reqSales.CreatedAt = Now()
|
||||
newOrderSales = append(newOrderSales, reqSales)
|
||||
}
|
||||
}
|
||||
|
||||
// 找到删除的商品
|
||||
for _, dbSales := range orderSales {
|
||||
var found bool
|
||||
for _, reqSales := range req.Salesman {
|
||||
if reqSales.Uid == dbSales.Uid {
|
||||
found = true
|
||||
// 找到匹配的商品,加入匹配列表
|
||||
matchingOrderSales = append(matchingOrderSales, dbSales)
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
deletedOrderSales = append(deletedOrderSales, dbSales)
|
||||
}
|
||||
}
|
||||
|
||||
// 更新
|
||||
for _, orderSaleInfo := range matchingOrderSales {
|
||||
if err = gdb.Model(&ErpOrderSales{}).Where("id = ?", orderSaleInfo.ID).Updates(orderSaleInfo).Error; err != nil {
|
||||
logger.Error("更新订单销售员信息-更新 error")
|
||||
// 1-删除所有的零售订单支付方式
|
||||
if len(orderSales) != 0 {
|
||||
err = gdb.Delete(&orderSales).Error
|
||||
if err != nil {
|
||||
logger.Error("更新订单销售员信息-删除 error")
|
||||
return errors.New("操作失败:" + err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// 新增
|
||||
var newOrderSales []ErpOrderSales
|
||||
for _, reqSales := range req.Salesman {
|
||||
reqSales.ID = 0
|
||||
newOrderSales = append(newOrderSales, reqSales)
|
||||
}
|
||||
|
||||
// 2-新增所有的零售订单支付方式
|
||||
if len(newOrderSales) != 0 {
|
||||
err = gdb.Create(&newOrderSales).Error
|
||||
if err != nil {
|
||||
|
@ -5123,15 +5207,6 @@ func updateSalesData(gdb *gorm.DB, orderId uint32, req *ErpOrderCreateReq) error
|
|||
}
|
||||
}
|
||||
|
||||
// 删除
|
||||
if len(deletedOrderSales) != 0 {
|
||||
err = gdb.Delete(&deletedOrderSales).Error
|
||||
if err != nil {
|
||||
logger.Error("更新订单销售员信息-删除 error")
|
||||
return errors.New("操作失败:" + err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -5145,54 +5220,27 @@ func updatePayWayData(gdb *gorm.DB, orderId uint32, req *ErpOrderCreateReq) erro
|
|||
return errors.New("操作失败:" + err.Error())
|
||||
}
|
||||
|
||||
var newOrderPayWay []ErpOrderPayWay
|
||||
var deletedOrderPayWay []ErpOrderPayWay
|
||||
var matchingOrderPayWay []ErpOrderPayWay
|
||||
// 找到新增的商品
|
||||
for _, reqPayWay := range req.Cashiers {
|
||||
var found bool
|
||||
for _, dbPayWay := range orderPayWay {
|
||||
if reqPayWay.CashierId == dbPayWay.CashierId {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
payWay := ErpOrderPayWay{
|
||||
ErpOrderId: orderId,
|
||||
CashierId: reqPayWay.CashierId,
|
||||
Name: reqPayWay.Name,
|
||||
Amount: reqPayWay.Amount,
|
||||
}
|
||||
newOrderPayWay = append(newOrderPayWay, payWay)
|
||||
}
|
||||
}
|
||||
|
||||
// 找到删除的商品
|
||||
for _, dbPayWay := range orderPayWay {
|
||||
var found bool
|
||||
for _, reqPayWay := range req.Cashiers {
|
||||
if reqPayWay.CashierId == dbPayWay.CashierId {
|
||||
found = true
|
||||
// 找到匹配的商品,加入匹配列表
|
||||
matchingOrderPayWay = append(matchingOrderPayWay, dbPayWay)
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
deletedOrderPayWay = append(deletedOrderPayWay, dbPayWay)
|
||||
}
|
||||
}
|
||||
|
||||
// 更新
|
||||
for _, orderPayWayInfo := range matchingOrderPayWay {
|
||||
if err = gdb.Model(&ErpOrderPayWay{}).Where("id = ?", orderPayWayInfo.ID).Updates(orderPayWayInfo).Error; err != nil {
|
||||
logger.Error("更新零售订单支付方式-更新 error")
|
||||
// 1-删除所有的零售订单支付方式
|
||||
if len(orderPayWay) != 0 {
|
||||
err = gdb.Delete(&orderPayWay).Error
|
||||
if err != nil {
|
||||
logger.Error("更新零售订单支付方式-删除 error")
|
||||
return errors.New("操作失败:" + err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// 新增
|
||||
var newOrderPayWay []ErpOrderPayWay
|
||||
for _, reqPayWay := range req.Cashiers {
|
||||
payWay := ErpOrderPayWay{
|
||||
ErpOrderId: orderId,
|
||||
CashierId: reqPayWay.CashierId,
|
||||
Name: reqPayWay.Name,
|
||||
Amount: reqPayWay.Amount,
|
||||
}
|
||||
newOrderPayWay = append(newOrderPayWay, payWay)
|
||||
}
|
||||
|
||||
// 2-新增所有的零售订单支付方式
|
||||
if len(newOrderPayWay) != 0 {
|
||||
err = gdb.Create(&newOrderPayWay).Error
|
||||
if err != nil {
|
||||
|
@ -5201,14 +5249,5 @@ func updatePayWayData(gdb *gorm.DB, orderId uint32, req *ErpOrderCreateReq) erro
|
|||
}
|
||||
}
|
||||
|
||||
// 删除
|
||||
if len(deletedOrderPayWay) != 0 {
|
||||
err = gdb.Delete(&deletedOrderPayWay).Error
|
||||
if err != nil {
|
||||
logger.Error("更新零售订单支付方式-删除 error")
|
||||
return errors.New("操作失败:" + err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -531,11 +531,11 @@ func checkStockExcel(sheetCols [][]string) error {
|
|||
// }
|
||||
//}
|
||||
|
||||
if i < len(sheetCols[5]) {
|
||||
if employeeCost, err := strconv.ParseFloat(sheetCols[5][i], 64); err != nil || employeeCost <= 0 {
|
||||
return errors.New("第" + strconv.Itoa(i+1) + "行员工成本价必须是大于0的数字")
|
||||
}
|
||||
}
|
||||
//if i < len(sheetCols[5]) {
|
||||
// if employeeCost, err := strconv.ParseFloat(sheetCols[5][i], 64); err != nil || employeeCost <= 0 {
|
||||
// return errors.New("第" + strconv.Itoa(i+1) + "行员工成本价必须是大于0的数字")
|
||||
// }
|
||||
//}
|
||||
|
||||
// 供应商不能为空
|
||||
if i < len(sheetCols[6]) {
|
||||
|
|
|
@ -1534,6 +1534,7 @@ func MemberExpirationReminderDay(days int64) {
|
|||
}
|
||||
}
|
||||
|
||||
// ExpireMemberSMSSend 用户过期如果一直不还卡,最多会收到12条短信,过期超过3个月就不会发送了
|
||||
func ExpireMemberSMSSend() {
|
||||
nowTime := time.Now()
|
||||
days := []uint32{1, 2, 3, 4, 5, 6, 7, 14, 21, 28, 60, 90}
|
||||
|
|
|
@ -818,7 +818,7 @@ func handleInventoryReduce(gdb *gorm.DB, changeOrder ErpInventoryChangeOrder) er
|
|||
}
|
||||
|
||||
// 找一个可用的库存商品表主键ID
|
||||
rightId, err := findRightErpStockCommodityId(usedStockCommodityIdList,
|
||||
rightId, err := FindRightErpStockCommodityId(usedStockCommodityIdList,
|
||||
trimCommodities[i].CommodityId, stockCommodity)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -1008,7 +1008,7 @@ func handleCancelInventoryReduce(gdb *gorm.DB, changeOrder ErpInventoryChangeOrd
|
|||
}
|
||||
|
||||
// 找一个可用的库存商品表主键ID
|
||||
rightId, err := findRightErpStockCommodityId(usedStockCommodityIdList,
|
||||
rightId, err := FindRightErpStockCommodityId(usedStockCommodityIdList,
|
||||
trimCommodities[i].CommodityId, stockCommodity)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -18,7 +18,6 @@ import (
|
|||
"go-admin/tools"
|
||||
"go-admin/tools/config"
|
||||
"golang.org/x/sync/errgroup"
|
||||
"gorm.io/gorm"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -232,6 +231,7 @@ func (m *OrderListReq) List(exportFlag int, c *gin.Context) ([]Order, int64, str
|
|||
func (m *OrderListReq) queryListFormOrderCard(exportFlag int, c *gin.Context) ([]Order, int64, error) {
|
||||
var orderCards []OrderCard
|
||||
orders := make([]Order, 0)
|
||||
|
||||
qs := orm.Eloquent.Table("order_card").Where("card_status=?", m.CardStatus)
|
||||
|
||||
// 非管理员才判断所属门店
|
||||
|
@ -250,9 +250,9 @@ func (m *OrderListReq) queryListFormOrderCard(exportFlag int, c *gin.Context) ([
|
|||
} else {
|
||||
if len(storeList) > 0 {
|
||||
if len(storeList) == 1 {
|
||||
qs = qs.Where("store_id = ?", storeList[0])
|
||||
qs = qs.Where("store_id = ? OR revert_store_id = ?", storeList[0], storeList[0])
|
||||
} else {
|
||||
qs = qs.Where("store_id IN (?)", storeList)
|
||||
qs = qs.Where("store_id IN (?) OR revert_store_id IN (?)", storeList, storeList)
|
||||
}
|
||||
} else {
|
||||
return nil, 0, errors.New("用户未绑定门店")
|
||||
|
@ -276,7 +276,7 @@ func (m *OrderListReq) queryListFormOrderCard(exportFlag int, c *gin.Context) ([
|
|||
}
|
||||
|
||||
if m.StoreId != 0 { // 门店id,共有
|
||||
qs = qs.Where("store_id", m.StoreId)
|
||||
qs = qs.Where("store_id = ? OR revert_store_id = ?", m.StoreId, m.StoreId)
|
||||
}
|
||||
if !m.StartTime.IsZero() { // 共有
|
||||
fmt.Println("起始时间:", m.StartTime.Unix())
|
||||
|
@ -365,8 +365,13 @@ func (m *OrderListReq) queryListFormOrder(exportFlag int, c *gin.Context) ([]Ord
|
|||
if m.PageSize == 0 {
|
||||
m.PageSize = 10
|
||||
}
|
||||
var qs *gorm.DB
|
||||
qs = orm.Eloquent.Table("order").Where("pay_status", 2)
|
||||
|
||||
qs := orm.Eloquent.Table("order").Select("DISTINCT `order`.*").Joins("JOIN order_card ON order.id = order_card.order_id").
|
||||
Where("order.pay_status = ?", 2)
|
||||
|
||||
orderQs := orm.Eloquent.Table("(?) as unique_orders", qs).Order("unique_orders.created_at DESC")
|
||||
|
||||
//qs = orm.Eloquent.Table("order").Where("pay_status", 2)
|
||||
|
||||
// 非管理员才判断所属门店
|
||||
if !(tools.GetRoleName(c) == "admin" || tools.GetRoleName(c) == "系统管理员") {
|
||||
|
@ -384,9 +389,9 @@ func (m *OrderListReq) queryListFormOrder(exportFlag int, c *gin.Context) ([]Ord
|
|||
} else {
|
||||
if len(storeList) > 0 {
|
||||
if len(storeList) == 1 {
|
||||
qs = qs.Where("store_id = ?", storeList[0])
|
||||
qs = qs.Where("order.store_id = ? OR order_card.revert_store_id = ?", storeList[0], storeList[0])
|
||||
} else {
|
||||
qs = qs.Where("store_id IN (?)", storeList)
|
||||
qs = qs.Where("order.store_id IN (?) OR order_card.revert_store_id IN (?)", storeList, storeList)
|
||||
}
|
||||
} else {
|
||||
return nil, 0, errors.New("用户未绑定门店")
|
||||
|
@ -410,46 +415,46 @@ func (m *OrderListReq) queryListFormOrder(exportFlag int, c *gin.Context) ([]Ord
|
|||
orderIds = append(orderIds, orderCards[i].OrderId)
|
||||
}
|
||||
|
||||
qs = qs.Where("id in (?)", orderIds)
|
||||
qs = qs.Where("order.id in (?)", orderIds)
|
||||
}
|
||||
|
||||
if m.PickupCode != "" {
|
||||
isDeliver = false
|
||||
qs = qs.Where("pickup_code", m.PickupCode)
|
||||
qs = qs.Where("order.pickup_code", m.PickupCode)
|
||||
}
|
||||
if m.PayStatus != 0 {
|
||||
qs = qs.Where("pay_status", m.PayStatus)
|
||||
qs = qs.Where("order.pay_status", m.PayStatus)
|
||||
}
|
||||
if m.DeliveryType != 0 {
|
||||
qs = qs.Where("delivery_type", m.DeliveryType)
|
||||
qs = qs.Where("order.delivery_type", m.DeliveryType)
|
||||
}
|
||||
if m.OrderId != 0 {
|
||||
isDeliver = false
|
||||
qs = qs.Where("id", m.OrderId)
|
||||
qs = qs.Where("order.id", m.OrderId)
|
||||
}
|
||||
if isDeliver {
|
||||
if m.Uid != 0 {
|
||||
qs = qs.Where("uid", m.Uid)
|
||||
qs = qs.Where("order.uid", m.Uid)
|
||||
}
|
||||
if m.GameCardId != 0 {
|
||||
qs = qs.Where("game_card_id", m.GameCardId)
|
||||
qs = qs.Where("order.game_card_id", m.GameCardId)
|
||||
}
|
||||
|
||||
if m.StoreId != 0 {
|
||||
qs = qs.Where("store_id", m.StoreId)
|
||||
qs = qs.Where("order.store_id = ? OR order_card.revert_store_id = ?", m.StoreId, m.StoreId)
|
||||
}
|
||||
if !m.StartTime.IsZero() {
|
||||
fmt.Println("起始时间:", m.StartTime.Unix())
|
||||
qs = qs.Where("created_at > ?", m.StartTime)
|
||||
qs = qs.Where("order.created_at > ?", m.StartTime)
|
||||
}
|
||||
if !m.EndTime.IsZero() {
|
||||
fmt.Println("时间:", m.StartTime.Unix())
|
||||
qs = qs.Where("created_at < ?", m.EndTime)
|
||||
qs = qs.Where("order.created_at < ?", m.EndTime)
|
||||
}
|
||||
}
|
||||
|
||||
var count int64
|
||||
err := qs.Count(&count).Error
|
||||
err := orderQs.Count(&count).Error
|
||||
if err != nil {
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
return nil, 0, err
|
||||
|
@ -462,11 +467,11 @@ func (m *OrderListReq) queryListFormOrder(exportFlag int, c *gin.Context) ([]Ord
|
|||
}
|
||||
|
||||
if exportFlag == 1 { //一次性导出excel
|
||||
qs = qs.Preload("User").Order("created_at DESC")
|
||||
orderQs = orderQs.Preload("User")
|
||||
} else {
|
||||
qs = qs.Preload("User").Order("created_at DESC").Offset(page * pageSize).Limit(pageSize)
|
||||
orderQs = orderQs.Preload("User").Offset(page * pageSize).Limit(pageSize)
|
||||
}
|
||||
err = qs.Find(&orders).Error
|
||||
err = orderQs.Find(&orders).Error
|
||||
if err != nil {
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
return nil, 0, err
|
||||
|
|
|
@ -183,11 +183,51 @@ func (m *Store) Add() error {
|
|||
func (m *Store) Modify() error {
|
||||
para := m.getModifyPara()
|
||||
if len(para) > 0 {
|
||||
err := orm.Eloquent.Table(m.TableName()).Unscoped().Where("id", m.ID).Updates(para).Error
|
||||
// 查询门店信息
|
||||
oldStoreInfo, err := GetStore(m.ID)
|
||||
if err != nil {
|
||||
logger.Errorf("GetStore err:", logger.Field("err", err))
|
||||
return err
|
||||
}
|
||||
|
||||
begin := orm.Eloquent.Begin()
|
||||
err = begin.Table(m.TableName()).Unscoped().Where("id", m.ID).Updates(para).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
return err
|
||||
}
|
||||
|
||||
if oldStoreInfo.Name != m.Name {
|
||||
// 更新库存表
|
||||
err = begin.Table("erp_stock").Where("store_id=?", m.ID).
|
||||
Updates(map[string]interface{}{
|
||||
"store_name": m.Name,
|
||||
}).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("Update erp_stock err:", logger.Field("err", err))
|
||||
return err
|
||||
}
|
||||
|
||||
// 更新库存详情表
|
||||
err = begin.Table("erp_stock_commodity").Where("store_id=?", m.ID).
|
||||
Updates(map[string]interface{}{
|
||||
"store_name": m.Name,
|
||||
}).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("Update erp_stock_commodity err:", logger.Field("err", err))
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
err = begin.Commit().Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("commit err:", logger.Field("err", err))
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -2773,18 +2773,34 @@ func (m *CooperativeBusiness) UserInviteReport(userInfo UserInfo) {
|
|||
return
|
||||
}
|
||||
report := &InviteMemberReport{
|
||||
Uid: userInfo.Uid,
|
||||
StoreId: uint32(userInfo.StoreId),
|
||||
GoldCount: 0,
|
||||
PlatinumCount: 0,
|
||||
BlackGoldCount: 0,
|
||||
Date: reportTime,
|
||||
DeductAmount: 0,
|
||||
CooperativeBusinessId: userInfo.CooperativeBusinessId,
|
||||
CooperativeName: userInfo.CooperativeName,
|
||||
//GoldDeduct: m.CooperativeAssistantMemberDeduct.GoldDeduct,
|
||||
//PlatinumDeduct: m.CooperativeAssistantMemberDeduct.PlatinumDeduct,
|
||||
//BlackGoldDeduct: m.CooperativeAssistantMemberDeduct.BlackGoldDeduct,
|
||||
Uid: userInfo.Uid,
|
||||
StoreId: uint32(userInfo.StoreId),
|
||||
GoldCount: 0,
|
||||
GoldCountHalf: 0,
|
||||
GoldCountQuarter: 0,
|
||||
PlatinumCount: 0,
|
||||
BlackGoldCount: 0,
|
||||
Date: reportTime,
|
||||
DeductAmount: 0,
|
||||
CooperativeBusinessId: userInfo.CooperativeBusinessId,
|
||||
CooperativeName: userInfo.CooperativeName,
|
||||
GoldDeduct: m.CooperativeAssistantMemberDeduct.GoldDeduct,
|
||||
PlatinumDeduct: m.CooperativeAssistantMemberDeduct.PlatinumDeduct,
|
||||
BlackGoldDeduct: m.CooperativeAssistantMemberDeduct.BlackGoldDeduct,
|
||||
RenewalGoldCount: 0,
|
||||
RenewalGoldCountHalf: 0,
|
||||
RenewalGoldCountQuarter: 0,
|
||||
RenewalPlatinumCount: 0,
|
||||
RenewalBlackGoldCount: 0,
|
||||
UpgradeGoldToPlatinumCount: 0,
|
||||
UpgradeGoldToBlackCount: 0,
|
||||
UpgradePlatinumToBlackCount: 0,
|
||||
InviteRenewalGoldCount: 0,
|
||||
InviteRenewalPlatinumCount: 0,
|
||||
InviteRenewalBlackGoldCount: 0,
|
||||
InviteUpgradeGoldToPlatinumCount: 0,
|
||||
InviteUpgradeGoldToBlackCount: 0,
|
||||
InviteUpgradePlatinumToBlackCount: 0,
|
||||
}
|
||||
|
||||
//for i, _ := range userInvites {
|
||||
|
@ -2928,13 +2944,13 @@ func (m *AssistantInviteMemberReportReq) List(c *gin.Context) (*AssistantInviteM
|
|||
//totalPage := int(count)/m.PageSize + 1
|
||||
|
||||
if m.IsExport == 1 { // 导出excel
|
||||
err = qs.Order("store_id DESC,id DESC").Find(&memberReport).Error
|
||||
err = qs.Order("STR_TO_DATE(date, '%Y-%m-%d') DESC, store_id ASC").Find(&memberReport).Error
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
err = qs.Order("store_id DESC,id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&memberReport).Error
|
||||
err = qs.Order("STR_TO_DATE(date, '%Y-%m-%d') DESC, store_id ASC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&memberReport).Error
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
|
|
93
docs/docs.go
93
docs/docs.go
|
@ -5374,7 +5374,7 @@ const docTemplate = `{
|
|||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/basic.SupplierListRequest"
|
||||
"$ref": "#/definitions/models.GetSupplierRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
@ -5384,7 +5384,7 @@ const docTemplate = `{
|
|||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/models.Supplier"
|
||||
"$ref": "#/definitions/models.GetSupplierResp"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6374,19 +6374,6 @@ const docTemplate = `{
|
|||
}
|
||||
}
|
||||
},
|
||||
"basic.SupplierListRequest": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"description": "供应商名称",
|
||||
"type": "string"
|
||||
},
|
||||
"number": {
|
||||
"description": "供应商编号",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"basic.SupplierUpdateRequest": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
|
@ -8802,6 +8789,10 @@ const docTemplate = `{
|
|||
"description": "审核人姓名",
|
||||
"type": "string"
|
||||
},
|
||||
"bank_trx_no": {
|
||||
"description": "银行流水号",
|
||||
"type": "string"
|
||||
},
|
||||
"bill_sn": {
|
||||
"description": "单据编号",
|
||||
"type": "string"
|
||||
|
@ -9449,10 +9440,18 @@ const docTemplate = `{
|
|||
"models.ErpOrderRetailDetailReq": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"bank_trx_no": {
|
||||
"description": "银行流水号",
|
||||
"type": "string"
|
||||
},
|
||||
"bill_sn": {
|
||||
"description": "单据编号",
|
||||
"type": "string"
|
||||
},
|
||||
"cashier_id": {
|
||||
"description": "收付款方式id",
|
||||
"type": "integer"
|
||||
},
|
||||
"end_time": {
|
||||
"description": "结束时间",
|
||||
"type": "string"
|
||||
|
@ -11123,7 +11122,10 @@ const docTemplate = `{
|
|||
},
|
||||
"commodity_name": {
|
||||
"description": "商品名称",
|
||||
"type": "string"
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"erp_category_id": {
|
||||
"description": "商品分类Id",
|
||||
|
@ -11171,6 +11173,13 @@ const docTemplate = `{
|
|||
},
|
||||
"state": {
|
||||
"description": "库存状态:1-在库 2-已售 3-采购退货 4-调拨中 5-出库(前端只看1,4)",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"stock_sort_flag": {
|
||||
"description": "排序方式:0-按入库时间降序排列(默认),1-按入库时间升序排列",
|
||||
"type": "integer"
|
||||
},
|
||||
"stock_time_end": {
|
||||
|
@ -11759,6 +11768,54 @@ const docTemplate = `{
|
|||
}
|
||||
}
|
||||
},
|
||||
"models.GetSupplierRequest": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"cooperativeBusinessId": {
|
||||
"description": "合作商id",
|
||||
"type": "integer"
|
||||
},
|
||||
"name": {
|
||||
"description": "供应商名称",
|
||||
"type": "string"
|
||||
},
|
||||
"number": {
|
||||
"description": "供应商编号",
|
||||
"type": "string"
|
||||
},
|
||||
"pageIndex": {
|
||||
"description": "页码",
|
||||
"type": "integer"
|
||||
},
|
||||
"pageSize": {
|
||||
"description": "每页展示数据条数",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.GetSupplierResp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"list": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/models.Supplier"
|
||||
}
|
||||
},
|
||||
"pageIndex": {
|
||||
"description": "页码",
|
||||
"type": "integer"
|
||||
},
|
||||
"pageSize": {
|
||||
"description": "每页展示条数",
|
||||
"type": "integer"
|
||||
},
|
||||
"total": {
|
||||
"description": "数据总条数",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.GoodsOrderListReq": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -16183,11 +16240,11 @@ const docTemplate = `{
|
|||
"properties": {
|
||||
"DJ": {
|
||||
"description": "商品指导零售价",
|
||||
"type": "integer"
|
||||
"type": "number"
|
||||
},
|
||||
"JE": {
|
||||
"description": "商品指导零售价乘以销售数量",
|
||||
"type": "integer"
|
||||
"type": "number"
|
||||
},
|
||||
"SL": {
|
||||
"description": "销售数量",
|
||||
|
|
|
@ -5363,7 +5363,7 @@
|
|||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/basic.SupplierListRequest"
|
||||
"$ref": "#/definitions/models.GetSupplierRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
@ -5373,7 +5373,7 @@
|
|||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/models.Supplier"
|
||||
"$ref": "#/definitions/models.GetSupplierResp"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6363,19 +6363,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"basic.SupplierListRequest": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"description": "供应商名称",
|
||||
"type": "string"
|
||||
},
|
||||
"number": {
|
||||
"description": "供应商编号",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"basic.SupplierUpdateRequest": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
|
@ -8791,6 +8778,10 @@
|
|||
"description": "审核人姓名",
|
||||
"type": "string"
|
||||
},
|
||||
"bank_trx_no": {
|
||||
"description": "银行流水号",
|
||||
"type": "string"
|
||||
},
|
||||
"bill_sn": {
|
||||
"description": "单据编号",
|
||||
"type": "string"
|
||||
|
@ -9438,10 +9429,18 @@
|
|||
"models.ErpOrderRetailDetailReq": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"bank_trx_no": {
|
||||
"description": "银行流水号",
|
||||
"type": "string"
|
||||
},
|
||||
"bill_sn": {
|
||||
"description": "单据编号",
|
||||
"type": "string"
|
||||
},
|
||||
"cashier_id": {
|
||||
"description": "收付款方式id",
|
||||
"type": "integer"
|
||||
},
|
||||
"end_time": {
|
||||
"description": "结束时间",
|
||||
"type": "string"
|
||||
|
@ -11112,7 +11111,10 @@
|
|||
},
|
||||
"commodity_name": {
|
||||
"description": "商品名称",
|
||||
"type": "string"
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"erp_category_id": {
|
||||
"description": "商品分类Id",
|
||||
|
@ -11160,6 +11162,13 @@
|
|||
},
|
||||
"state": {
|
||||
"description": "库存状态:1-在库 2-已售 3-采购退货 4-调拨中 5-出库(前端只看1,4)",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"stock_sort_flag": {
|
||||
"description": "排序方式:0-按入库时间降序排列(默认),1-按入库时间升序排列",
|
||||
"type": "integer"
|
||||
},
|
||||
"stock_time_end": {
|
||||
|
@ -11748,6 +11757,54 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"models.GetSupplierRequest": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"cooperativeBusinessId": {
|
||||
"description": "合作商id",
|
||||
"type": "integer"
|
||||
},
|
||||
"name": {
|
||||
"description": "供应商名称",
|
||||
"type": "string"
|
||||
},
|
||||
"number": {
|
||||
"description": "供应商编号",
|
||||
"type": "string"
|
||||
},
|
||||
"pageIndex": {
|
||||
"description": "页码",
|
||||
"type": "integer"
|
||||
},
|
||||
"pageSize": {
|
||||
"description": "每页展示数据条数",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.GetSupplierResp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"list": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/models.Supplier"
|
||||
}
|
||||
},
|
||||
"pageIndex": {
|
||||
"description": "页码",
|
||||
"type": "integer"
|
||||
},
|
||||
"pageSize": {
|
||||
"description": "每页展示条数",
|
||||
"type": "integer"
|
||||
},
|
||||
"total": {
|
||||
"description": "数据总条数",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.GoodsOrderListReq": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -16172,11 +16229,11 @@
|
|||
"properties": {
|
||||
"DJ": {
|
||||
"description": "商品指导零售价",
|
||||
"type": "integer"
|
||||
"type": "number"
|
||||
},
|
||||
"JE": {
|
||||
"description": "商品指导零售价乘以销售数量",
|
||||
"type": "integer"
|
||||
"type": "number"
|
||||
},
|
||||
"SL": {
|
||||
"description": "销售数量",
|
||||
|
|
|
@ -177,15 +177,6 @@ definitions:
|
|||
- bank_list
|
||||
- name
|
||||
type: object
|
||||
basic.SupplierListRequest:
|
||||
properties:
|
||||
name:
|
||||
description: 供应商名称
|
||||
type: string
|
||||
number:
|
||||
description: 供应商编号
|
||||
type: string
|
||||
type: object
|
||||
basic.SupplierUpdateRequest:
|
||||
properties:
|
||||
account_holder:
|
||||
|
@ -1943,6 +1934,9 @@ definitions:
|
|||
auditor_name:
|
||||
description: 审核人姓名
|
||||
type: string
|
||||
bank_trx_no:
|
||||
description: 银行流水号
|
||||
type: string
|
||||
bill_sn:
|
||||
description: 单据编号
|
||||
type: string
|
||||
|
@ -2418,9 +2412,15 @@ definitions:
|
|||
type: object
|
||||
models.ErpOrderRetailDetailReq:
|
||||
properties:
|
||||
bank_trx_no:
|
||||
description: 银行流水号
|
||||
type: string
|
||||
bill_sn:
|
||||
description: 单据编号
|
||||
type: string
|
||||
cashier_id:
|
||||
description: 收付款方式id
|
||||
type: integer
|
||||
end_time:
|
||||
description: 结束时间
|
||||
type: string
|
||||
|
@ -3638,7 +3638,9 @@ definitions:
|
|||
type: integer
|
||||
commodity_name:
|
||||
description: 商品名称
|
||||
type: string
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
erp_category_id:
|
||||
description: 商品分类Id
|
||||
type: integer
|
||||
|
@ -3674,6 +3676,11 @@ definitions:
|
|||
type: string
|
||||
state:
|
||||
description: 库存状态:1-在库 2-已售 3-采购退货 4-调拨中 5-出库(前端只看1,4)
|
||||
items:
|
||||
type: integer
|
||||
type: array
|
||||
stock_sort_flag:
|
||||
description: 排序方式:0-按入库时间降序排列(默认),1-按入库时间升序排列
|
||||
type: integer
|
||||
stock_time_end:
|
||||
description: 最近入库结束时间
|
||||
|
@ -4091,6 +4098,40 @@ definitions:
|
|||
total_page:
|
||||
type: integer
|
||||
type: object
|
||||
models.GetSupplierRequest:
|
||||
properties:
|
||||
cooperativeBusinessId:
|
||||
description: 合作商id
|
||||
type: integer
|
||||
name:
|
||||
description: 供应商名称
|
||||
type: string
|
||||
number:
|
||||
description: 供应商编号
|
||||
type: string
|
||||
pageIndex:
|
||||
description: 页码
|
||||
type: integer
|
||||
pageSize:
|
||||
description: 每页展示数据条数
|
||||
type: integer
|
||||
type: object
|
||||
models.GetSupplierResp:
|
||||
properties:
|
||||
list:
|
||||
items:
|
||||
$ref: '#/definitions/models.Supplier'
|
||||
type: array
|
||||
pageIndex:
|
||||
description: 页码
|
||||
type: integer
|
||||
pageSize:
|
||||
description: 每页展示条数
|
||||
type: integer
|
||||
total:
|
||||
description: 数据总条数
|
||||
type: integer
|
||||
type: object
|
||||
models.GoodsOrderListReq:
|
||||
properties:
|
||||
goods_id:
|
||||
|
@ -7282,10 +7323,10 @@ definitions:
|
|||
properties:
|
||||
DJ:
|
||||
description: 商品指导零售价
|
||||
type: integer
|
||||
type: number
|
||||
JE:
|
||||
description: 商品指导零售价乘以销售数量
|
||||
type: integer
|
||||
type: number
|
||||
SL:
|
||||
description: 销售数量
|
||||
type: integer
|
||||
|
@ -11290,7 +11331,7 @@ paths:
|
|||
name: request
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/basic.SupplierListRequest'
|
||||
$ref: '#/definitions/models.GetSupplierRequest'
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
|
@ -11298,7 +11339,7 @@ paths:
|
|||
description: OK
|
||||
schema:
|
||||
items:
|
||||
$ref: '#/definitions/models.Supplier'
|
||||
$ref: '#/definitions/models.GetSupplierResp'
|
||||
type: array
|
||||
summary: 供应商列表
|
||||
tags:
|
||||
|
|
|
@ -52,6 +52,24 @@ func TestStock(t *testing.T) {
|
|||
|
||||
}
|
||||
|
||||
func TestFindRightErpStockCommodityId(t *testing.T) {
|
||||
|
||||
usedStockCommodityIdList := make(map[uint32][]uint32)
|
||||
commodityId := 23
|
||||
var stockCommodity []models.ErpStockCommodity
|
||||
//stockCommodity1 := models.ErpStockCommodity{}
|
||||
//stockCommodity1.ID = 4350
|
||||
//
|
||||
//stockCommodity2 := models.ErpStockCommodity{}
|
||||
//stockCommodity2.ID = 4351
|
||||
//
|
||||
//stockCommodity = append(stockCommodity, stockCommodity1)
|
||||
//stockCommodity = append(stockCommodity, stockCommodity2)
|
||||
|
||||
rightId, _ := models.FindRightErpStockCommodityId(usedStockCommodityIdList, uint32(commodityId), stockCommodity)
|
||||
fmt.Println("rightId is:", rightId)
|
||||
}
|
||||
|
||||
func TestSetGameCardStock(t *testing.T) {
|
||||
SetGameCardStock()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user