diff --git a/app/admin/apis/purchasemanage/purchase.go b/app/admin/apis/purchasemanage/purchase.go index 98f6e9a..eebb6f9 100644 --- a/app/admin/apis/purchasemanage/purchase.go +++ b/app/admin/apis/purchasemanage/purchase.go @@ -178,6 +178,15 @@ func ErpPurchaseDetail(c *gin.Context) { return } + // 校验时间,如果为01-01-01 08:05,则赋值为空 + if purchaseOrder.MakerTime != nil && purchaseOrder.MakerTime.IsZero() { + purchaseOrder.MakerTime = nil + } + + if purchaseOrder.AuditTime != nil && purchaseOrder.AuditTime.IsZero() { + purchaseOrder.AuditTime = nil + } + var purchaseCommodities []model.ErpPurchaseCommodity err = orm.Eloquent.Table("erp_purchase_commodity").Where("erp_purchase_order_id=?", req.ErpPurchaseOrderId). Find(&purchaseCommodities).Error @@ -216,6 +225,9 @@ func ErpPurchaseDetail(c *gin.Context) { purchaseOrder.Commodities = commodityList + // 添加最新入库人信息 + purchaseOrder.InventoryId, purchaseOrder.InventoryName, _ = model.GetInventoryIdAndName(purchaseOrder.ID) + app.OK(c, purchaseOrder, "") return } @@ -511,11 +523,11 @@ func ErpPurchaseTerminate(c *gin.Context) { // @Tags 采购管理, V1.3.0 // @Produce json // @Accept json -// @Param request body models.ErpPurchaseInventoryReq true "执行(入库/退货)模型" +// @Param request body models.ErpPurchaseExecuteReq true "执行(入库/退货)模型" // @Success 200 {object} models.ErpPurchaseExecuteResp // @Router /api/v1/erp_purchase/execute [post] func ErpPurchaseExecute(c *gin.Context) { - req := new(model.ErpPurchaseInventoryReq) + req := new(model.ErpPurchaseExecuteReq) if err := c.ShouldBindJSON(&req); err != nil { logger.Error("ShouldBindJSON err:", logger.Field("err", err)) app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误") diff --git a/app/admin/models/commodity.go b/app/admin/models/commodity.go index 3c8a675..25dedde 100644 --- a/app/admin/models/commodity.go +++ b/app/admin/models/commodity.go @@ -75,7 +75,7 @@ type ErpStockCommodity struct { StorageType uint32 `json:"storage_type"` // 入库方式:1-系统入库 2-采购入库 FirstStockTime time.Time `json:"first_stock_time"` // 首次入库时间 StockSn string `json:"stock_sn"` // 库存订单编号 - OriginalSn string `json:"original_sn" gorm:"index"` // 首次入库订单编号 + OriginalSn string `json:"original_sn" gorm:"index"` // 首次入库订单编号(单据编号) StockStartTime time.Time `json:"stock_start_time" gorm:"-"` // 最近入库开始时间 StockEndTime time.Time `json:"stock_end_time" gorm:"-"` // 最近入库结束时间 Age uint32 `json:"age" gorm:"-"` // 最近库龄 diff --git a/app/admin/models/erp_order.go b/app/admin/models/erp_order.go index cd252d5..6853666 100644 --- a/app/admin/models/erp_order.go +++ b/app/admin/models/erp_order.go @@ -108,7 +108,8 @@ type ErpOrderCommodity struct { VmDiscount float64 `json:"vm_discount"` // 会员积分抵扣 Amount float64 `json:"amount"` // 实际零售价 ReceivedAmount float64 `json:"received_amount"` // 商品实收金额 - Remark string `json:"remark"` // 备注 + Remark string `json:"remark"` // 销售备注 + RejectedRemark string `json:"rejected_remark"` // 退货备注 RejectedPrice float64 `json:"rejected_price"` // 退货单价 RejectedCount uint32 `json:"rejected_count"` // 退货数量 RejectedAmount float64 `json:"rejected_amount"` // 退货金额 @@ -2908,6 +2909,9 @@ func checkOrderData(req *ErpOrderCreateReq, sysUser *SysUser) (*ErpOrder, error) return nil, errors.New("rejected order commodity id is null") } v.ID = 0 + v.Remark = req.ErpOrderCommodities[i].Remark // 备注 + v.RejectedRemark = req.ErpOrderCommodities[i].RejectedRemark // 退货备注 + req.ErpOrderCommodities[i] = v if req.ErpOrderCommodities[i].RejectedPrice > req.ErpOrderCommodities[i].Amount { // 退货单价不能大于实际零售价 logger.Error("rejected price gt retail price ") @@ -2941,7 +2945,6 @@ func checkOrderData(req *ErpOrderCreateReq, sysUser *SysUser) (*ErpOrder, error) req.ErpOrderCommodities[i].StaffProfit = StaffProfit // 员工毛利 erpOrder.TotalSalesProfit += salesProfit erpOrder.TotalStaffProfit += StaffProfit - } else if req.RetailType == RetailTypeSale { // 零售订单 var v ErpStockCommodity var ok bool @@ -3065,7 +3068,7 @@ func updateCommodityData(gdb *gorm.DB, orderId uint32, req *ErpOrderCreateReq) e if reqCommodity.ErpCommodityId == dbCommodity.ErpCommodityId { found = true // 找到匹配的商品,加入匹配列表 - matchingCommodities = append(matchingCommodities, dbCommodity) + matchingCommodities = append(matchingCommodities, reqCommodity) break } } diff --git a/app/admin/models/purchase.go b/app/admin/models/purchase.go index fd69586..1013370 100644 --- a/app/admin/models/purchase.go +++ b/app/admin/models/purchase.go @@ -35,31 +35,33 @@ const ( // ErpPurchaseOrder 采购订单表 type ErpPurchaseOrder struct { Model - SerialNumber string `json:"serial_number" gorm:"index"` // 单据编号 - PurchaseType string `json:"purchase_type"` // 类型:procure-采购 reject-退货 - StoreId uint32 `json:"store_id" gorm:"index"` // 门店id - StoreName string `json:"store_name"` // 门店名称 - ErpSupplierId uint32 `json:"erp_supplier_id" gorm:"index"` // 供应商id - ErpSupplierName string `json:"erp_supplier_name"` // 供应商名称 - HandlerId uint32 `json:"handler_id" gorm:"index"` // 经手人id - HandlerName string `json:"handler_name"` // 经手人名称 - MakerTime time.Time `json:"maker_time"` // 制单时间 - MakerId uint32 `json:"maker_id" gorm:"index"` // 制单人id - MakerName string `json:"maker_name"` // 制单人名称 - AuditTime time.Time `json:"audit_time"` // 审核时间 - AuditorId uint32 `json:"auditor_id" gorm:"index"` // 审核人id - AuditorName string `json:"auditor_name"` // 审核人名称 - State uint32 `json:"state"` // 1-待审核 2-待入库 3-待退货 4-已完成 5-已终止 - RejectedPurchaseOrderId uint32 `json:"rejected_purchase_order_id"` // 退货采购订单id - ErpCashierId uint32 `json:"erp_cashier_id"` // 付款方式/收款方式id - ErpCashierName string `json:"erp_cashier_name"` // 付款方式/收款方式名称 - AccountHolder string `json:"account_holder"` // 收款人 - OpeningBank string `json:"opening_bank"` // 开户行 - BankAccount string `json:"bank_account"` // 银行卡号 - DeliveryTime string `json:"delivery_time"` // 交货日期,如:2024-02-23 - DeliveryAddress string `json:"delivery_address"` // 交货地址 - Remark string `json:"remark"` // 备注 - Commodities []ErpPurchaseCommodity `json:"commodities" gorm:"-"` + SerialNumber string `json:"serial_number" gorm:"index"` // 单据编号 + PurchaseType string `json:"purchase_type"` // 类型:procure-采购 reject-退货 + StoreId uint32 `json:"store_id" gorm:"index"` // 门店id + StoreName string `json:"store_name"` // 门店名称 + ErpSupplierId uint32 `json:"erp_supplier_id" gorm:"index"` // 供应商id + ErpSupplierName string `json:"erp_supplier_name"` // 供应商名称 + HandlerId uint32 `json:"handler_id" gorm:"index"` // 经手人id + HandlerName string `json:"handler_name"` // 经手人名称 + MakerTime *time.Time `json:"maker_time"` // 制单时间 + MakerId uint32 `json:"maker_id" gorm:"index"` // 制单人id + MakerName string `json:"maker_name"` // 制单人名称 + AuditTime *time.Time `json:"audit_time"` // 审核时间 + AuditorId uint32 `json:"auditor_id" gorm:"index"` // 审核人id + AuditorName string `json:"auditor_name"` // 审核人名称 + State uint32 `json:"state"` // 1-待审核 2-待入库 3-待退货 4-已完成 5-已终止 6-入库中 7-退货中 + RejectedSerialNumber string `json:"rejected_serial_number"` // 退货的采购订单单据编号 + ErpCashierId uint32 `json:"erp_cashier_id"` // 付款方式/收款方式id + ErpCashierName string `json:"erp_cashier_name"` // 付款方式/收款方式名称 + AccountHolder string `json:"account_holder"` // 收款人 + OpeningBank string `json:"opening_bank"` // 开户行 + BankAccount string `json:"bank_account"` // 银行卡号 + DeliveryTime string `json:"delivery_time"` // 交货日期,如:2024-02-23 + DeliveryAddress string `json:"delivery_address"` // 交货地址 + Remark string `json:"remark"` // 备注 + Commodities []ErpPurchaseCommodity `json:"commodities" gorm:"-"` // + InventoryId uint32 `json:"inventory_id" gorm:"-"` // 最近入库人id + InventoryName string `json:"inventory_name" gorm:"-"` // 最近入库人名称 } // ErpPurchaseCommodity 采购订单商品表 @@ -105,6 +107,8 @@ type ErpPurchaseInventory struct { ImplementationPrice float64 `json:"implementation_price"` // 执行单价 Amount float64 `json:"amount"` // 执行金额 EmployeePrice float64 `json:"employee_price"` // 员工成本价 + InventoryId uint32 `json:"inventory_id"` // 最近入库人id + InventoryName string `json:"inventory_name"` // 最近入库人名称 } // ErpPurchaseCreateReq 新建采购订单入参 @@ -172,8 +176,17 @@ type ErpPurchaseDetailReq struct { ErpPurchaseOrderId uint32 `json:"erp_purchase_order_id" binding:"required"` // 采购订单id } -// ErpPurchaseInventoryReq 入库(退货)入参;执行(入库/退货)入参 +// ErpPurchaseInventoryReq 入库(退货)入参 type ErpPurchaseInventoryReq struct { + ErpPurchaseOrderId uint32 `json:"erp_purchase_order_id" binding:"required"` // 采购订单id + PurchaseType string `json:"purchase_type" binding:"required"` // 采购类型:procure-采购 reject-退货 + InventoryId uint32 `json:"inventory_id" binding:"required"` // 最近入库人id + InventoryName string `json:"inventory_name" binding:"required"` // 最近入库人名称 + Inventories []ErpPurchaseInventory `json:"inventories" binding:"required"` // 采购入库执行信息 +} + +// ErpPurchaseExecuteReq 执行(入库/退货)入参 +type ErpPurchaseExecuteReq struct { ErpPurchaseOrderId uint32 `json:"erp_purchase_order_id" binding:"required"` // 采购订单id PurchaseType string `json:"purchase_type" binding:"required"` // 采购类型:procure-采购 reject-退货 Inventories []ErpPurchaseInventory `json:"inventories" binding:"required"` // 采购入库执行信息 @@ -292,19 +305,19 @@ type FinishErpPurchaseDemandReq struct { // ErpPurchaseReportByOrderReq 采购报表(按单)入参 type ErpPurchaseReportByOrderReq struct { - SerialNumber string `json:"serial_number"` // 单据编号 - PurchaseType string `json:"purchase_type"` // 采购类型:procure-采购 reject-退货 - ErpCommodityName string `json:"erp_commodity_name"` // 商品名称 - ErpCategoryID uint32 `json:"erp_category_id"` // 商品分类id - StoreId uint32 `json:"store_id"` // 门店id - HandlerId uint32 `json:"handler_id"` // 经手人id - ErpSupplierId uint32 `json:"erp_supplier_id"` // 供应商id - State uint32 `json:"state"` // 1-待审核 2-待入库 3-待退货 4-已完成 5-已终止 - AuditTimeStart string `json:"audit_time_start"` // 审核开始时间 - AuditTimeEnd string `json:"audit_time_end"` // 审核结束时间 - IsExport uint32 `json:"is_export"` // 1-导出 - PageIndex int `json:"pageIndex"` // 页码 - PageSize int `json:"pageSize"` // 页面条数 + SerialNumber string `json:"serial_number"` // 单据编号 + PurchaseType string `json:"purchase_type"` // 采购类型:procure-采购 reject-退货 + ErpCommodityName string `json:"erp_commodity_name"` // 商品名称 + ErpCategoryID uint32 `json:"erp_category_id"` // 商品分类id + StoreId []uint32 `json:"store_id"` // 门店id + HandlerId uint32 `json:"handler_id"` // 经手人id + ErpSupplierId []uint32 `json:"erp_supplier_id"` // 供应商id + State uint32 `json:"state"` // 1-待审核 2-待入库 3-待退货 4-已完成 5-已终止 + AuditTimeStart string `json:"audit_time_start"` // 审核开始时间 + AuditTimeEnd string `json:"audit_time_end"` // 审核结束时间 + IsExport uint32 `json:"is_export"` // 1-导出 + PageIndex int `json:"pageIndex"` // 页码 + PageSize int `json:"pageSize"` // 页面条数 } // ErpPurchaseReportByOrderResp 采购报表(按单)出参 @@ -336,20 +349,21 @@ type CommodityData struct { } type CommonData struct { - SerialNumber string `json:"serial_number"` // 单据编号 - PurchaseType string `json:"purchase_type"` // 单据类型:procure-采购 reject-退货 - StoreId uint32 `json:"store_id"` // 门店id - StoreName string `json:"store_name"` // 门店名称 - ErpSupplierId uint32 `json:"erp_supplier_id"` // 供应商id - ErpSupplierName string `json:"erp_supplier_name"` // 供应商名称 - HandlerId uint32 `json:"handler_id"` // 经手人id - HandlerName string `json:"handler_name"` // 经手人名称 - MakerTime time.Time `json:"maker_time"` // 制单时间 - MakerId uint32 `json:"maker_id"` // 制单人id - MakerName string `json:"maker_name"` // 制单人名称 - AuditTime time.Time `json:"audit_time"` // 审核时间 - AuditorId uint32 `json:"auditor_id"` // 审核人id - AuditorName string `json:"auditor_name"` // 审核人名称 + ErpPurchaseOrderId uint32 `json:"erp_purchase_order_id"` // 采购订单id + SerialNumber string `json:"serial_number"` // 单据编号 + PurchaseType string `json:"purchase_type"` // 单据类型:procure-采购 reject-退货 + StoreId uint32 `json:"store_id"` // 门店id + StoreName string `json:"store_name"` // 门店名称 + ErpSupplierId uint32 `json:"erp_supplier_id"` // 供应商id + ErpSupplierName string `json:"erp_supplier_name"` // 供应商名称 + HandlerId uint32 `json:"handler_id"` // 经手人id + HandlerName string `json:"handler_name"` // 经手人名称 + MakerTime *time.Time `json:"maker_time"` // 制单时间 + MakerId uint32 `json:"maker_id"` // 制单人id + MakerName string `json:"maker_name"` // 制单人名称 + AuditTime *time.Time `json:"audit_time"` // 审核时间 + AuditorId uint32 `json:"auditor_id"` // 审核人id + AuditorName string `json:"auditor_name"` // 审核人名称 } // ErpPurchaseCommodityData 采购订单商品信息 @@ -362,19 +376,19 @@ type ErpPurchaseCommodityData struct { // ErpPurchaseReportByCommodityReq 采购报表(按商品)入参 type ErpPurchaseReportByCommodityReq struct { - SerialNumber string `json:"serial_number"` // 单据编号 - PurchaseType string `json:"purchase_type"` // 采购类型:procure-采购 reject-退货 - ErpCommodityName string `json:"erp_commodity_name"` // 商品名称 - ErpCategoryID uint32 `json:"erp_category_id"` // 商品分类id - StoreId uint32 `json:"store_id"` // 门店id - HandlerId uint32 `json:"handler_id"` // 经手人id - ErpSupplierId uint32 `json:"erp_supplier_id"` // 供应商id - State uint32 `json:"state"` // 1-待审核 2-待入库 3-待退货 4-已完成 5-已终止 - AuditTimeStart string `json:"audit_time_start"` // 审核开始时间 - AuditTimeEnd string `json:"audit_time_end"` // 审核结束时间 - IsExport uint32 `json:"is_export"` // 1-导出 - PageIndex int `json:"pageIndex"` // 页码 - PageSize int `json:"pageSize"` // 页面条数 + SerialNumber string `json:"serial_number"` // 单据编号 + PurchaseType string `json:"purchase_type"` // 采购类型:procure-采购 reject-退货 + ErpCommodityName string `json:"erp_commodity_name"` // 商品名称 + ErpCategoryID uint32 `json:"erp_category_id"` // 商品分类id + StoreId []uint32 `json:"store_id"` // 门店id + HandlerId uint32 `json:"handler_id"` // 经手人id + ErpSupplierId []uint32 `json:"erp_supplier_id"` // 供应商id + State uint32 `json:"state"` // 1-待审核 2-待入库 3-待退货 4-已完成 5-已终止 + AuditTimeStart string `json:"audit_time_start"` // 审核开始时间 + AuditTimeEnd string `json:"audit_time_end"` // 审核结束时间 + IsExport uint32 `json:"is_export"` // 1-导出 + PageIndex int `json:"pageIndex"` // 页码 + PageSize int `json:"pageSize"` // 页面条数 } // ErpPurchaseReportByCommodityResp 采购报表(按商品)出参 @@ -461,21 +475,17 @@ type ErpPurchaseReportBySupplierResp struct { // ErpPurchaseReportDetailReq 采购明细入参 type ErpPurchaseReportDetailReq struct { - SerialNumber string `json:"serial_number"` // 单据编号 - PurchaseType string `json:"purchase_type"` // 采购类型:procure-采购 reject-退货 - ErpCommodityName string `json:"erp_commodity_name"` // 商品名称 - ErpCategoryID uint32 `json:"erp_category_id"` // 商品分类id - ErpSupplierId uint32 `json:"erp_supplier_id"` // 供应商id - StartTime string `json:"startTime"` // 入/出库,开始时间 - EndTime string `json:"endTime"` // 入/出库,结束时间 - IsExport uint32 `json:"is_export"` // 1-导出 - PageIndex int `json:"pageIndex"` // 页码 - PageSize int `json:"pageSize"` // 页面条数 - StoreList []struct { - StoreID uint32 `json:"store_id"` // 门店id - StoreName string `json:"store_name"` // 门店名称 - } `json:"store_list"` // 门店复选 - + SerialNumber string `json:"serial_number"` // 单据编号 + PurchaseType string `json:"purchase_type"` // 采购类型:procure-采购 reject-退货 + ErpCommodityName string `json:"erp_commodity_name"` // 商品名称 + ErpCategoryID uint32 `json:"erp_category_id"` // 商品分类id + ErpSupplierId uint32 `json:"erp_supplier_id"` // 供应商id + StartTime string `json:"startTime"` // 入/出库,开始时间 + EndTime string `json:"endTime"` // 入/出库,结束时间 + IsExport uint32 `json:"is_export"` // 1-导出 + PageIndex int `json:"pageIndex"` // 页码 + PageSize int `json:"pageSize"` // 页面条数 + StoreId []uint32 `json:"store_id"` // 门店id } // ErpPurchaseReportDetailResp 采购明细出参 @@ -489,23 +499,24 @@ type ErpPurchaseReportDetailResp struct { DifferencePrice float64 `json:"difference_price"` // 差价 ExportUrl string `json:"export_url"` // 导出excel路径 List []struct { - OrderSerialNumber string `json:"order_serial_number"` // 单据编号 - PurchaseType string `json:"purchase_type"` // 单据类型:procure-采购 reject-退货 - ExecuteTime *time.Time `json:"execute_time"` // 出/入库时间 - StoreId uint32 `json:"store_id"` // 门店id - StoreName string `json:"store_name"` // 门店名称 - ErpSupplierId uint32 `json:"erp_supplier_id"` // 供应商id - ErpSupplierName string `json:"erp_supplier_name"` // 供应商名称 - ErpCommodityId uint32 `json:"erp_commodity_id"` // 商品id - ErpCommodityName string `json:"erp_commodity_name"` // 商品名称 - ErpCategoryID uint32 `json:"erp_category_id"` // 商品分类id - ErpCategoryName string `json:"erp_category_name"` // 商品分类名称 - IMEIType uint32 `json:"imei_type"` // 1-无串码 2-串码 - IMEI string `json:"imei"` // 商品串码 - Price float64 `json:"price"` // 采购价 - EmployeePrice float64 `json:"employee_price"` // 员工成本价 - RejectPrice float64 `json:"reject_price"` // 退货价 - DifferencePrice float64 `json:"difference_price"` // 差价 + ErpPurchaseOrderId uint32 `json:"erp_purchase_order_id"` // 采购订单id + OrderSerialNumber string `json:"order_serial_number"` // 单据编号 + PurchaseType string `json:"purchase_type"` // 单据类型:procure-采购 reject-退货 + ExecuteTime *time.Time `json:"execute_time"` // 出/入库时间 + StoreId uint32 `json:"store_id"` // 门店id + StoreName string `json:"store_name"` // 门店名称 + ErpSupplierId uint32 `json:"erp_supplier_id"` // 供应商id + ErpSupplierName string `json:"erp_supplier_name"` // 供应商名称 + ErpCommodityId uint32 `json:"erp_commodity_id"` // 商品id + ErpCommodityName string `json:"erp_commodity_name"` // 商品名称 + ErpCategoryID uint32 `json:"erp_category_id"` // 商品分类id + ErpCategoryName string `json:"erp_category_name"` // 商品分类名称 + IMEIType uint32 `json:"imei_type"` // 1-无串码 2-串码 + IMEI string `json:"imei"` // 商品串码 + Price float64 `json:"price"` // 采购价 + EmployeePrice float64 `json:"employee_price"` // 员工成本价 + RejectPrice float64 `json:"reject_price"` // 退货价 + DifferencePrice float64 `json:"difference_price"` // 差价 } `json:"list"` // 采购明细信息 } @@ -527,6 +538,7 @@ func (m *ErpPurchaseOrderListReq) List() (*ErpPurchaseOrderListResp, error) { if m.AuditFlag == "ON" { //2-待入库 4-已完成 5-已终止 stateList = []int{2, 4, 5} qs = qs.Where("state IN ?", stateList) + qs = qs.Where("purchase_type=?", ErpProcureOrder) } if m.SerialNumber != "" { qs = qs.Where("serial_number=?", m.SerialNumber) @@ -579,6 +591,17 @@ func (m *ErpPurchaseOrderListReq) List() (*ErpPurchaseOrderListResp, error) { return resp, err } + // 校验时间,如果为01-01-01 08:05,则赋值为空 + for i, v := range orders { + if v.MakerTime != nil && v.MakerTime.IsZero() { + orders[i].MakerTime = nil + } + + if v.AuditTime != nil && v.AuditTime.IsZero() { + orders[i].AuditTime = nil + } + } + resp.List = orders return resp, nil } @@ -775,7 +798,7 @@ func CreateErpPurchaseOrder(req *ErpPurchaseCreateReq, sysUser *SysUser) (*ErpPu PurchaseType: req.PurchaseType, StoreId: req.StoreId, ErpSupplierId: req.ErpSupplierId, - MakerTime: nowTime, + MakerTime: &nowTime, HandlerId: req.HandlerId, HandlerName: req.HandlerName, MakerId: uint32(sysUser.UserId), @@ -802,18 +825,19 @@ func CreateErpPurchaseOrder(req *ErpPurchaseCreateReq, sysUser *SysUser) (*ErpPu } purchaseOrder = &ErpPurchaseOrder{ - SerialNumber: "cgt" + NewErpPurchaseSn(), - PurchaseType: req.PurchaseType, - StoreId: erpPurchaseOrder.StoreId, - ErpSupplierId: erpPurchaseOrder.ErpSupplierId, - MakerTime: nowTime, - HandlerId: req.HandlerId, - HandlerName: req.HandlerName, - MakerId: uint32(sysUser.UserId), - MakerName: sysUser.NickName, - State: ErpPurchaseOrderUnAudit, // 1-待审核 - ErpCashierId: req.ErpCashierId, - Remark: req.Remark, + SerialNumber: "cgt" + NewErpPurchaseSn(), + PurchaseType: req.PurchaseType, + StoreId: erpPurchaseOrder.StoreId, + ErpSupplierId: erpPurchaseOrder.ErpSupplierId, + MakerTime: &nowTime, + HandlerId: req.HandlerId, + HandlerName: req.HandlerName, + MakerId: uint32(sysUser.UserId), + MakerName: sysUser.NickName, + State: ErpPurchaseOrderUnAudit, // 1-待审核 + ErpCashierId: req.ErpCashierId, + Remark: req.Remark, + RejectedSerialNumber: req.PurchaseOrderSn, } err = purchaseOrder.IdInit() } else { @@ -1018,7 +1042,9 @@ func InventoryErpPurchase(req *ErpPurchaseInventoryReq) error { logger.Error("update inventory count err:", logger.Field("err", err)) return err } - v.PurchaseType = req.PurchaseType // 记录采购类型 + v.PurchaseType = req.PurchaseType // 记录采购类型 + v.InventoryId = req.InventoryId // 记录入库人id + v.InventoryName = req.InventoryName // 记录入库人姓名 // 新建采购入库记录 err = begin.Create(&v).Error if err != nil { @@ -1036,10 +1062,13 @@ func InventoryErpPurchase(req *ErpPurchaseInventoryReq) error { return err } + var orderState int // 更新库存信息表 if purchaseOrder.PurchaseType == ErpProcureOrder { //采购入库订单 + orderState = ErpPurchaseOrderInInventory err = InventoryErpPurchaseUpdateStock(begin, req, purchaseOrder) } else if purchaseOrder.PurchaseType == ErpRejectOrder { // 采购退货订单 + orderState = ErpPurchaseOrderInReject err = InventoryErpPurchaseUpdateRejectStock(begin, req, purchaseOrder) } else { return errors.New("订单类型有误") @@ -1050,6 +1079,18 @@ func InventoryErpPurchase(req *ErpPurchaseInventoryReq) error { return err } + // 更新采购订单状态 + if purchaseOrder.State != uint32(orderState) { + err = begin.Table("erp_purchase_order").Where("id = ?", purchaseOrder.ID).Updates(map[string]interface{}{ + "state": orderState, + }).Error + if err != nil { + begin.Rollback() + logger.Error("update erp_purchase_order err:", logger.Field("err", err)) + return err + } + } + err = begin.Commit().Error if err != nil { begin.Rollback() @@ -1060,6 +1101,19 @@ func InventoryErpPurchase(req *ErpPurchaseInventoryReq) error { return nil } +// GetInventoryIdAndName 获取采购单最近入库人信息 +func GetInventoryIdAndName(orderId uint32) (uint32, string, error) { + var purchaseInventory ErpPurchaseInventory + err := orm.Eloquent.Table("erp_purchase_inventory").Where("erp_purchase_order_id=?", orderId). + First(&purchaseInventory).Order("created_at DESC").Error + if err != nil { + logger.Error("purchase order err:", logger.Field("err", err)) + return 0, "", err + } + + return purchaseInventory.InventoryId, purchaseInventory.InventoryName, nil +} + // InventoryErpPurchaseUpdateStock 采购订单入库更新库存信息 func InventoryErpPurchaseUpdateStock(gdb *gorm.DB, req *ErpPurchaseInventoryReq, purchaseOrder ErpPurchaseOrder) error { // 遍历采购入库商品信息 @@ -1131,6 +1185,7 @@ func InventoryErpPurchaseUpdateStock(gdb *gorm.DB, req *ErpPurchaseInventoryReq, MemberDiscount: commodityInfo.MemberDiscount, MinRetailPrice: commodityInfo.MinRetailPrice, RetailPrice: commodityInfo.RetailPrice, + OriginalSn: purchaseOrder.SerialNumber, } stockList = append(stockList, stockCommodity) } @@ -1180,7 +1235,7 @@ func InventoryErpPurchaseUpdateRejectStock(gdb *gorm.DB, req *ErpPurchaseInvento logger.Error("RetailTypeRejected commodities err:", logger.Field("err", err)) return err } - } else { // 非串码商品 + } else { // todo 非串码商品,需要判断下更新的数量和库存数量是否相同,如果库存数量不够不支持退货 var stockCommodity []ErpStockCommodity // 通过门店id,商品id,查找状态为1-在库的非串码商品 err := orm.Eloquent.Table("erp_stock_commodity").Where("erp_commodity_id = ? and store_id = ? "+ @@ -1293,8 +1348,13 @@ func checkPurchaseInventory(req *ErpPurchaseInventoryReq) error { } // ExecuteErpPurchase 执行(入库/退货) -func ExecuteErpPurchase(req *ErpPurchaseInventoryReq) (*ErpPurchaseExecuteResp, error) { - err := checkPurchaseInventory(req) +func ExecuteErpPurchase(req *ErpPurchaseExecuteReq) (*ErpPurchaseExecuteResp, error) { + reqParam := &ErpPurchaseInventoryReq{ + ErpPurchaseOrderId: req.ErpPurchaseOrderId, + PurchaseType: req.PurchaseType, + Inventories: req.Inventories, + } + err := checkPurchaseInventory(reqParam) if err != nil { logger.Error("checkPurchaseInventoryReq err:", logger.Field("err", err)) return nil, err @@ -1410,7 +1470,18 @@ func CreateErpPurchaseDemand(req *CreateErpPurchaseDemandReq, sysUser *SysUser) } } - err := begin.Commit().Error + // 更新备注 + err := begin.Model(&ErpPurchaseDemand{}).Where("erp_commodity_id = ? and state = 1", + req.ErpCommodityID).Updates(map[string]interface{}{ + "remark": req.Remark, + }).Error + if err != nil { + begin.Rollback() + logger.Error("update erp_order remark err:", logger.Field("err", err)) + return err + } + + err = begin.Commit().Error if err != nil { begin.Rollback() logger.Error("commit err:", logger.Field("err", err)) @@ -2748,6 +2819,7 @@ func getReportByOrderFromCommodityOrCategory(req *ErpPurchaseReportByOrderReq) ( if req.ErpCategoryID != 0 { qs = qs.Where("erp_category_id=?", req.ErpCategoryID) } + var inventoryList []ErpPurchaseInventory var err error if req.IsExport == 1 { // 导出excel @@ -2777,11 +2849,30 @@ func getReportByOrderFromCommodityOrCategory(req *ErpPurchaseReportByOrderReq) ( for _, v := range commodityMap { var purchaseOrder ErpPurchaseOrder var commodityList []ErpPurchaseCommodityData - err = orm.Eloquent.Table("erp_purchase_order").Where("id = ?", v).Find(&purchaseOrder).Error + + query := orm.Eloquent.Table("erp_purchase_order") + + if len(req.ErpSupplierId) > 0 { // 供应商复选 + var supplierIDs []uint32 + for _, supplier := range req.ErpSupplierId { + supplierIDs = append(supplierIDs, supplier) + } + query = query.Where("erp_purchase_order.erp_supplier_id IN (?)", supplierIDs) + } + if len(req.StoreId) > 0 { // 门店复选 + var storeIDs []uint32 + for _, store := range req.StoreId { + storeIDs = append(storeIDs, store) + } + query = query.Where("erp_purchase_order.store_id IN (?)", storeIDs) + } + + err = query.Where("id = ?", v).Find(&purchaseOrder).Error if err != nil { return nil, err } var reportByOrderData ReportByOrderData + reportByOrderData.ErpPurchaseOrderId = purchaseOrder.ID reportByOrderData.SerialNumber = purchaseOrder.SerialNumber reportByOrderData.PurchaseType = purchaseOrder.PurchaseType reportByOrderData.StoreId = purchaseOrder.StoreId @@ -2799,6 +2890,18 @@ func getReportByOrderFromCommodityOrCategory(req *ErpPurchaseReportByOrderReq) ( reportByOrderData.State = purchaseOrder.State reportByOrderData.Remark = purchaseOrder.Remark + if purchaseOrder.MakerTime != nil && purchaseOrder.MakerTime.IsZero() { + reportByOrderData.MakerTime = nil + } else { + reportByOrderData.MakerTime = purchaseOrder.MakerTime + } + + if purchaseOrder.AuditTime != nil && purchaseOrder.AuditTime.IsZero() { + reportByOrderData.AuditTime = nil + } else { + reportByOrderData.AuditTime = purchaseOrder.AuditTime + } + var nAmount float64 var nCount uint32 for _, inventory := range inventoryList { @@ -2865,11 +2968,19 @@ func getReportByOrderFromCommon(req *ErpPurchaseReportByOrderReq) (*ErpPurchaseR if req.PurchaseType != "" { // 采购类型 qs = qs.Where("purchase_type=?", req.PurchaseType) } - if req.StoreId != 0 { // 门店id - qs = qs.Where("store_id=?", req.StoreId) + if len(req.ErpSupplierId) > 0 { // 供应商复选 + var supplierIDs []uint32 + for _, supplier := range req.ErpSupplierId { + supplierIDs = append(supplierIDs, supplier) + } + qs = qs.Where("erp_supplier_id IN (?)", supplierIDs) } - if req.ErpSupplierId != 0 { // 供应商id - qs = qs.Where("erp_supplier_id=?", req.ErpSupplierId) + if len(req.StoreId) > 0 { // 门店复选 + var storeIDs []uint32 + for _, store := range req.StoreId { + storeIDs = append(storeIDs, store) + } + qs = qs.Where("store_id IN (?)", storeIDs) } if req.HandlerId != 0 { // 经手人id qs = qs.Where("handler_id=?", req.HandlerId) @@ -2922,6 +3033,7 @@ func getReportByOrderFromCommon(req *ErpPurchaseReportByOrderReq) (*ErpPurchaseR var reportByOrderData ReportByOrderData var nAmount float64 var nCount uint32 + reportByOrderData.ErpPurchaseOrderId = v.ID reportByOrderData.SerialNumber = v.SerialNumber reportByOrderData.PurchaseType = v.PurchaseType reportByOrderData.StoreId = v.StoreId @@ -2930,14 +3042,27 @@ func getReportByOrderFromCommon(req *ErpPurchaseReportByOrderReq) (*ErpPurchaseR reportByOrderData.ErpSupplierName = v.ErpSupplierName reportByOrderData.HandlerId = v.HandlerId reportByOrderData.HandlerName = v.HandlerName - reportByOrderData.MakerTime = v.MakerTime + //reportByOrderData.MakerTime = v.MakerTime reportByOrderData.MakerId = v.MakerId reportByOrderData.MakerName = v.MakerName reportByOrderData.AuditorId = v.AuditorId - reportByOrderData.AuditTime = v.AuditTime + //reportByOrderData.AuditTime = v.AuditTime reportByOrderData.AuditorName = v.AuditorName reportByOrderData.State = v.State reportByOrderData.Remark = v.Remark + + if v.MakerTime != nil && v.MakerTime.IsZero() { + reportByOrderData.MakerTime = nil + } else { + reportByOrderData.MakerTime = v.MakerTime + } + + if v.AuditTime != nil && v.AuditTime.IsZero() { + reportByOrderData.AuditTime = nil + } else { + reportByOrderData.AuditTime = v.AuditTime + } + reportByOrderData.CommodityData, nAmount, nCount, err = getOrderInventoryInfo(v.ID) if err != nil { return nil, err @@ -3230,7 +3355,7 @@ func getReportByCommodityFromCommodityOrCategory(req *ErpPurchaseReportByCommodi var totalPurchaseData PurchaseData var purchaseOrderDataList []ErpCommodityPurchaseOrderData for orderId := range orderIdSet { - purchaseOrderData, err := getPurchaseOrderData(orderId) + purchaseOrderData, err := getPurchaseOrderData(orderId, req) if err != nil { return nil, err } @@ -3288,11 +3413,27 @@ func getReportByCommodityFromCommodityOrCategory(req *ErpPurchaseReportByCommodi } // 查询采购订单信息 -func getPurchaseOrderData(orderID uint32) (ErpCommodityPurchaseOrderData, error) { +func getPurchaseOrderData(orderID uint32, req *ErpPurchaseReportByCommodityReq) (ErpCommodityPurchaseOrderData, error) { var purchaseOrderData ErpCommodityPurchaseOrderData // 查询采购订单信息 var purchaseOrder ErpPurchaseOrder - err := orm.Eloquent.Table("erp_purchase_order").Where("id = ?", orderID).Find(&purchaseOrder).Error + qs := orm.Eloquent.Table("erp_purchase_order") + + if len(req.ErpSupplierId) > 0 { // 供应商复选 + var supplierIDs []uint32 + for _, supplier := range req.ErpSupplierId { + supplierIDs = append(supplierIDs, supplier) + } + qs = qs.Where("erp_supplier_id IN (?)", supplierIDs) + } + if len(req.StoreId) > 0 { // 门店复选 + var storeIDs []uint32 + for _, store := range req.StoreId { + storeIDs = append(storeIDs, store) + } + qs = qs.Where("store_id IN (?)", storeIDs) + } + err := qs.Where("id = ?", orderID).Find(&purchaseOrder).Error if err != nil { return purchaseOrderData, err } @@ -3304,6 +3445,7 @@ func getPurchaseOrderData(orderID uint32) (ErpCommodityPurchaseOrderData, error) } // 组合数据 + purchaseOrderData.ErpPurchaseOrderId = purchaseOrder.ID purchaseOrderData.SerialNumber = purchaseOrder.SerialNumber purchaseOrderData.PurchaseType = purchaseOrder.PurchaseType purchaseOrderData.StoreId = purchaseOrder.StoreId @@ -3312,13 +3454,24 @@ func getPurchaseOrderData(orderID uint32) (ErpCommodityPurchaseOrderData, error) purchaseOrderData.ErpSupplierName = purchaseOrder.ErpSupplierName purchaseOrderData.HandlerId = purchaseOrder.HandlerId purchaseOrderData.HandlerName = purchaseOrder.HandlerName - purchaseOrderData.MakerTime = purchaseOrder.MakerTime + //purchaseOrderData.MakerTime = purchaseOrder.MakerTime purchaseOrderData.MakerId = purchaseOrder.MakerId purchaseOrderData.MakerName = purchaseOrder.MakerName purchaseOrderData.AuditorId = purchaseOrder.AuditorId - purchaseOrderData.AuditTime = purchaseOrder.AuditTime + //purchaseOrderData.AuditTime = purchaseOrder.AuditTime purchaseOrderData.AuditorName = purchaseOrder.AuditorName + if purchaseOrder.MakerTime != nil && purchaseOrder.MakerTime.IsZero() { + purchaseOrderData.MakerTime = nil + } else { + purchaseOrderData.MakerTime = purchaseOrder.MakerTime + } + if purchaseOrder.AuditTime != nil && purchaseOrder.AuditTime.IsZero() { + purchaseOrderData.AuditTime = nil + } else { + purchaseOrderData.AuditTime = purchaseOrder.AuditTime + } + purchaseOrderData.PlanCount = purchaseData.PlanCount purchaseOrderData.PlanPrice = purchaseData.PlanPrice purchaseOrderData.PlanAmount = purchaseData.PlanAmount @@ -3384,11 +3537,19 @@ func getReportByCommodityFromCommon(req *ErpPurchaseReportByCommodityReq) (*ErpP if req.PurchaseType != "" { // 采购类型 qs = qs.Where("purchase_type=?", req.PurchaseType) } - if req.StoreId != 0 { // 门店id - qs = qs.Where("store_id=?", req.StoreId) + if len(req.ErpSupplierId) > 0 { // 供应商复选 + var supplierIDs []uint32 + for _, supplier := range req.ErpSupplierId { + supplierIDs = append(supplierIDs, supplier) + } + qs = qs.Where("erp_supplier_id IN (?)", supplierIDs) } - if req.ErpSupplierId != 0 { // 供应商id - qs = qs.Where("erp_supplier_id=?", req.ErpSupplierId) + if len(req.StoreId) > 0 { // 门店复选 + var storeIDs []uint32 + for _, store := range req.StoreId { + storeIDs = append(storeIDs, store) + } + qs = qs.Where("store_id IN (?)", storeIDs) } if req.HandlerId != 0 { // 经手人id qs = qs.Where("handler_id=?", req.HandlerId) @@ -3495,20 +3656,21 @@ func getReportByCommodityFromCommon(req *ErpPurchaseReportByCommodityReq) (*ErpP purchaseOrderData := ErpCommodityPurchaseOrderData{ CommonData{ - SerialNumber: v.SerialNumber, - PurchaseType: v.PurchaseType, - StoreId: v.StoreId, - StoreName: v.StoreName, - ErpSupplierId: v.ErpSupplierId, - ErpSupplierName: v.ErpSupplierName, - HandlerId: v.HandlerId, - HandlerName: v.HandlerName, - MakerTime: v.MakerTime, - MakerId: v.MakerId, - MakerName: v.MakerName, - AuditorId: v.AuditorId, - AuditTime: v.AuditTime, - AuditorName: v.AuditorName, + ErpPurchaseOrderId: v.ErpPurchaseOrderId, + SerialNumber: v.SerialNumber, + PurchaseType: v.PurchaseType, + StoreId: v.StoreId, + StoreName: v.StoreName, + ErpSupplierId: v.ErpSupplierId, + ErpSupplierName: v.ErpSupplierName, + HandlerId: v.HandlerId, + HandlerName: v.HandlerName, + //MakerTime: v.MakerTime, + MakerId: v.MakerId, + MakerName: v.MakerName, + AuditorId: v.AuditorId, + //AuditTime: v.AuditTime, + AuditorName: v.AuditorName, }, PurchaseData{ PlanCount: v.PlanCount, @@ -3521,6 +3683,19 @@ func getReportByCommodityFromCommon(req *ErpPurchaseReportByCommodityReq) (*ErpP NonExecutionCount: v.NonExecutionCount, }, } + + if v.MakerTime != nil && v.MakerTime.IsZero() { + purchaseOrderData.MakerTime = nil + } else { + purchaseOrderData.MakerTime = v.MakerTime + } + + if v.AuditTime != nil && v.AuditTime.IsZero() { + purchaseOrderData.AuditTime = nil + } else { + purchaseOrderData.AuditTime = v.AuditTime + } + reportData.OrderInfo = append(reportData.OrderInfo, purchaseOrderData) } @@ -3596,6 +3771,7 @@ func getPurchaseOrderAndCommodityData(orderID, commodityId uint32) (ErpCommodity } // 组合数据 + purchaseOrderData.ErpPurchaseOrderId = purchaseOrder.ID purchaseOrderData.SerialNumber = purchaseOrder.SerialNumber purchaseOrderData.PurchaseType = purchaseOrder.PurchaseType purchaseOrderData.StoreId = purchaseOrder.StoreId @@ -3604,13 +3780,24 @@ func getPurchaseOrderAndCommodityData(orderID, commodityId uint32) (ErpCommodity purchaseOrderData.ErpSupplierName = purchaseOrder.ErpSupplierName purchaseOrderData.HandlerId = purchaseOrder.HandlerId purchaseOrderData.HandlerName = purchaseOrder.HandlerName - purchaseOrderData.MakerTime = purchaseOrder.MakerTime purchaseOrderData.MakerId = purchaseOrder.MakerId purchaseOrderData.MakerName = purchaseOrder.MakerName purchaseOrderData.AuditorId = purchaseOrder.AuditorId purchaseOrderData.AuditTime = purchaseOrder.AuditTime purchaseOrderData.AuditorName = purchaseOrder.AuditorName + if purchaseOrder.MakerTime != nil && purchaseOrder.MakerTime.IsZero() { + purchaseOrderData.MakerTime = nil + } else { + purchaseOrderData.MakerTime = purchaseOrder.MakerTime + } + + if purchaseOrder.AuditTime != nil && purchaseOrder.AuditTime.IsZero() { + purchaseOrderData.AuditTime = nil + } else { + purchaseOrderData.AuditTime = purchaseOrder.AuditTime + } + purchaseOrderData.PlanCount = purchaseData.PlanCount purchaseOrderData.PlanPrice = purchaseData.PlanPrice purchaseOrderData.PlanAmount = purchaseData.PlanAmount @@ -3982,7 +4169,7 @@ func GetReportBySupplier(req *ErpPurchaseReportBySupplierReq) (*ErpPurchaseRepor if req.PurchaseType != "" { query = query.Where("erp_purchase_inventory.purchase_type = ?", req.PurchaseType) } - if len(req.ErpCommodityName) != 0 { + if len(req.ErpCommodityName) > 0 { var commodityNameList []string for _, commodityName := range req.ErpCommodityName { commodityNameList = append(commodityNameList, commodityName) @@ -3990,7 +4177,7 @@ func GetReportBySupplier(req *ErpPurchaseReportBySupplierReq) (*ErpPurchaseRepor query = query.Where("erp_purchase_inventory.erp_commodity_name IN (?)", commodityNameList) } - if len(req.ErpCategoryID) != 0 { + if len(req.ErpCategoryID) > 0 { var erpCategoryIDs []uint32 for _, categoryID := range req.ErpCategoryID { erpCategoryIDs = append(erpCategoryIDs, categoryID) @@ -3998,7 +4185,7 @@ func GetReportBySupplier(req *ErpPurchaseReportBySupplierReq) (*ErpPurchaseRepor query = query.Where("erp_purchase_inventory.erp_category_id IN (?)", erpCategoryIDs) } - if len(req.ErpSupplierId) != 0 { + if len(req.ErpSupplierId) > 0 { var supplierIDs []uint32 for _, supplier := range req.ErpSupplierId { supplierIDs = append(supplierIDs, supplier) @@ -4038,10 +4225,14 @@ func GetReportBySupplier(req *ErpPurchaseReportBySupplierReq) (*ErpPurchaseRepor resp.Total = int(total) // 分页查询 + var err error if req.IsExport == 1 { // 导出excel - query.Find(&resp.List) + err = query.Find(&resp.List).Error } else { - query.Offset((req.PageIndex - 1) * req.PageSize).Limit(req.PageSize).Find(&resp.List) + err = query.Offset((req.PageIndex - 1) * req.PageSize).Limit(req.PageSize).Find(&resp.List).Error + } + if err != nil { + return nil, err } // 补充关联的供应商和店铺信息 @@ -4187,28 +4378,30 @@ func GetReportDetail(req *ErpPurchaseReportDetailReq) (*ErpPurchaseReportDetailR PageIndex: page + 1, PageSize: req.PageSize, List: make([]struct { - OrderSerialNumber string `json:"order_serial_number"` - PurchaseType string `json:"purchase_type"` - ExecuteTime *time.Time `json:"execute_time"` - StoreId uint32 `json:"store_id"` - StoreName string `json:"store_name"` - ErpSupplierId uint32 `json:"erp_supplier_id"` - ErpSupplierName string `json:"erp_supplier_name"` - ErpCommodityId uint32 `json:"erp_commodity_id"` - ErpCommodityName string `json:"erp_commodity_name"` - ErpCategoryID uint32 `json:"erp_category_id"` - ErpCategoryName string `json:"erp_category_name"` - IMEIType uint32 `json:"imei_type"` - IMEI string `json:"imei"` - Price float64 `json:"price"` - EmployeePrice float64 `json:"employee_price"` - RejectPrice float64 `json:"reject_price"` - DifferencePrice float64 `json:"difference_price"` + ErpPurchaseOrderId uint32 `json:"erp_purchase_order_id"` // 采购订单id + OrderSerialNumber string `json:"order_serial_number"` + PurchaseType string `json:"purchase_type"` + ExecuteTime *time.Time `json:"execute_time"` + StoreId uint32 `json:"store_id"` + StoreName string `json:"store_name"` + ErpSupplierId uint32 `json:"erp_supplier_id"` + ErpSupplierName string `json:"erp_supplier_name"` + ErpCommodityId uint32 `json:"erp_commodity_id"` + ErpCommodityName string `json:"erp_commodity_name"` + ErpCategoryID uint32 `json:"erp_category_id"` + ErpCategoryName string `json:"erp_category_name"` + IMEIType uint32 `json:"imei_type"` + IMEI string `json:"imei"` + Price float64 `json:"price"` + EmployeePrice float64 `json:"employee_price"` + RejectPrice float64 `json:"reject_price"` + DifferencePrice float64 `json:"difference_price"` }, 0), } qs := orm.Eloquent.Debug().Table("erp_purchase_order"). - Select("erp_purchase_order.serial_number as order_serial_number, "+ + Select("erp_purchase_order.id as erp_purchase_order_id, "+ + "erp_purchase_order.serial_number as order_serial_number, "+ "erp_purchase_order.purchase_type, "+ "erp_purchase_inventory.created_at as execute_time, "+ "erp_purchase_order.store_id, "+ @@ -4229,26 +4422,35 @@ func GetReportDetail(req *ErpPurchaseReportDetailReq) (*ErpPurchaseReportDetailR "WHEN erp_purchase_order.purchase_type = 'procure' THEN 0 "+ "WHEN erp_purchase_order.purchase_type = 'reject' THEN erp_purchase_inventory.implementation_price "+ "ELSE 0 END AS reject_price, "+ - "erp_purchase_inventory.implementation_price as price, "+ "erp_purchase_inventory.employee_price, "+ "(erp_purchase_inventory.implementation_price - erp_purchase_inventory.employee_price) as difference_price"). Joins("JOIN erp_purchase_inventory ON erp_purchase_order.id = erp_purchase_inventory.erp_purchase_order_id"). Where("erp_purchase_order.state <> ?", 5) // 排除已终止的订单 + // 创建一个新的查询对象,用于 count 查询 + countQuery := orm.Eloquent.Debug().Table("erp_purchase_order"). + Joins("JOIN erp_purchase_inventory ON erp_purchase_order.id = erp_purchase_inventory.erp_purchase_order_id"). + Where("erp_purchase_order.state <> ?", 5) // 排除已终止的订单 + if req.SerialNumber != "" { qs = qs.Where("erp_purchase_order.serial_number = ?", req.SerialNumber) + countQuery = countQuery.Where("erp_purchase_order.serial_number = ?", req.SerialNumber) } if req.PurchaseType != "" { qs = qs.Where("erp_purchase_order.purchase_type = ?", req.PurchaseType) + countQuery = countQuery.Where("erp_purchase_order.purchase_type = ?", req.PurchaseType) } if req.ErpCommodityName != "" { qs = qs.Where("erp_purchase_inventory.erp_commodity_name LIKE ?", "%"+req.ErpCommodityName+"%") + countQuery = countQuery.Where("erp_purchase_inventory.erp_commodity_name LIKE ?", "%"+req.ErpCommodityName+"%") } if req.ErpCategoryID != 0 { qs = qs.Where("erp_purchase_inventory.erp_category_id = ?", req.ErpCategoryID) + countQuery = countQuery.Where("erp_purchase_inventory.erp_category_id = ?", req.ErpCategoryID) } if req.ErpSupplierId != 0 { qs = qs.Where("erp_purchase_order.erp_supplier_id = ?", req.ErpSupplierId) + countQuery = countQuery.Where("erp_purchase_order.erp_supplier_id = ?", req.ErpSupplierId) } if req.StartTime != "" { // 入/出库开始时间 parse, err := time.Parse(QueryTimeFormat, req.StartTime) @@ -4257,6 +4459,7 @@ func GetReportDetail(req *ErpPurchaseReportDetailReq) (*ErpPurchaseReportDetailR return nil, err } qs = qs.Where("erp_purchase_inventory.created_at >= ?", parse) + countQuery = countQuery.Where("erp_purchase_inventory.created_at >= ?", parse) } if req.EndTime != "" { // 入/出库结束时间 parse, err := time.Parse(QueryTimeFormat, req.EndTime) @@ -4265,19 +4468,27 @@ func GetReportDetail(req *ErpPurchaseReportDetailReq) (*ErpPurchaseReportDetailR return nil, err } qs = qs.Where("erp_purchase_inventory.created_at <= ?", parse) + countQuery = countQuery.Where("erp_purchase_inventory.created_at <= ?", parse) } - if len(req.StoreList) > 0 { + if len(req.StoreId) > 0 { var storeIDs []uint32 - for _, store := range req.StoreList { - storeIDs = append(storeIDs, store.StoreID) + for _, store := range req.StoreId { + storeIDs = append(storeIDs, store) } qs = qs.Where("erp_purchase_order.store_id IN (?)", storeIDs) + countQuery = countQuery.Where("erp_purchase_order.store_id IN (?)", storeIDs) + } + + var count int64 + err := countQuery.Count(&count).Error + if err != nil { + logger.Errorf("GetReportDetail count err:", err) + return nil, err } - es := qs offset := (req.PageIndex - 1) * req.PageSize - err := qs.Order("erp_purchase_inventory.created_at desc"). + err = qs.Order("erp_purchase_inventory.created_at desc"). Offset(offset). Limit(req.PageSize). Scan(&resp.List).Error @@ -4295,13 +4506,6 @@ func GetReportDetail(req *ErpPurchaseReportDetailReq) (*ErpPurchaseReportDetailR } } - var count int64 - err = es.Count(&count).Error - if err != nil { - logger.Errorf("GetReportDetail count err:", err) - return nil, err - } - resp.Total = int(count) resp.Price, resp.EmployeePrice, resp.RejectPrice, resp.DifferencePrice = calculatePrices(resp.List) @@ -4319,23 +4523,24 @@ func GetReportDetail(req *ErpPurchaseReportDetailReq) (*ErpPurchaseReportDetailR // 计算价格信息 func calculatePrices(list []struct { - OrderSerialNumber string `json:"order_serial_number"` - PurchaseType string `json:"purchase_type"` - ExecuteTime *time.Time `json:"execute_time"` - StoreId uint32 `json:"store_id"` - StoreName string `json:"store_name"` - ErpSupplierId uint32 `json:"erp_supplier_id"` - ErpSupplierName string `json:"erp_supplier_name"` - ErpCommodityId uint32 `json:"erp_commodity_id"` - ErpCommodityName string `json:"erp_commodity_name"` - ErpCategoryID uint32 `json:"erp_category_id"` - ErpCategoryName string `json:"erp_category_name"` - IMEIType uint32 `json:"imei_type"` - IMEI string `json:"imei"` - Price float64 `json:"price"` - EmployeePrice float64 `json:"employee_price"` - RejectPrice float64 `json:"reject_price"` - DifferencePrice float64 `json:"difference_price"` + ErpPurchaseOrderId uint32 `json:"erp_purchase_order_id"` // 采购订单id + OrderSerialNumber string `json:"order_serial_number"` + PurchaseType string `json:"purchase_type"` + ExecuteTime *time.Time `json:"execute_time"` + StoreId uint32 `json:"store_id"` + StoreName string `json:"store_name"` + ErpSupplierId uint32 `json:"erp_supplier_id"` + ErpSupplierName string `json:"erp_supplier_name"` + ErpCommodityId uint32 `json:"erp_commodity_id"` + ErpCommodityName string `json:"erp_commodity_name"` + ErpCategoryID uint32 `json:"erp_category_id"` + ErpCategoryName string `json:"erp_category_name"` + IMEIType uint32 `json:"imei_type"` + IMEI string `json:"imei"` + Price float64 `json:"price"` + EmployeePrice float64 `json:"employee_price"` + RejectPrice float64 `json:"reject_price"` + DifferencePrice float64 `json:"difference_price"` }) (price, employeePrice, rejectPrice, differencePrice float64) { for _, item := range list { price += item.Price diff --git a/docs/docs.go b/docs/docs.go index 2031c34..19c9113 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -2433,7 +2433,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/models.ErpPurchaseInventoryReq" + "$ref": "#/definitions/models.ErpPurchaseExecuteReq" } } ], @@ -6707,6 +6707,10 @@ const docTemplate = `{ "description": "已执行数量", "type": "integer" }, + "erp_purchase_order_id": { + "description": "采购订单id", + "type": "integer" + }, "erp_supplier_id": { "description": "供应商id", "type": "integer" @@ -7082,8 +7086,12 @@ const docTemplate = `{ "description": "退货单价", "type": "number" }, + "rejected_remark": { + "description": "退货备注", + "type": "string" + }, "remark": { - "description": "备注", + "description": "销售备注", "type": "string" }, "retail_price": { @@ -7855,33 +7863,26 @@ const docTemplate = `{ "models.ErpPurchaseCreateReq": { "type": "object", "required": [ - "account_holder", - "bank_account", - "delivery_address", - "delivery_time", "erp_cashier_id", "erp_purchase_commodity", - "erp_supplier_id", "handler_id", - "opening_bank", - "purchase_type", - "store_id" + "purchase_type" ], "properties": { "account_holder": { - "description": "收款人", + "description": "收款人:入库必传", "type": "string" }, "bank_account": { - "description": "银行卡号", + "description": "银行卡号:入库必传", "type": "string" }, "delivery_address": { - "description": "交货地址", + "description": "交货地址:入库必传", "type": "string" }, "delivery_time": { - "description": "交货日期", + "description": "交货日期:入库必传", "type": "string" }, "erp_cashier_id": { @@ -7896,7 +7897,7 @@ const docTemplate = `{ } }, "erp_supplier_id": { - "description": "供应商id", + "description": "供应商id:入库必传", "type": "integer" }, "handler_id": { @@ -7908,11 +7909,11 @@ const docTemplate = `{ "type": "string" }, "opening_bank": { - "description": "开户行", + "description": "开户行:入库必传", "type": "string" }, "purchase_order_sn": { - "description": "采购退货订单号", + "description": "采购退货订单号:出库必传", "type": "string" }, "purchase_type": { @@ -7924,7 +7925,7 @@ const docTemplate = `{ "type": "string" }, "store_id": { - "description": "门店id", + "description": "门店id:入库必传", "type": "integer" } } @@ -7956,32 +7957,27 @@ const docTemplate = `{ "models.ErpPurchaseEditReq": { "type": "object", "required": [ - "bank_account", - "delivery_address", - "delivery_time", "erp_cashier_id", "erp_purchase_commodity", "erp_purchase_order_id", - "erp_supplier_id", - "opening_bank", - "purchase_type", - "store_id" + "handler_id", + "purchase_type" ], "properties": { "account_holder": { - "description": "收款人", + "description": "收款人:入库必传", "type": "string" }, "bank_account": { - "description": "银行卡号", + "description": "银行卡号:入库必传", "type": "string" }, "delivery_address": { - "description": "交货地址", + "description": "交货地址:入库必传", "type": "string" }, "delivery_time": { - "description": "交货日期", + "description": "交货日期:入库必传", "type": "string" }, "erp_cashier_id": { @@ -8000,7 +7996,7 @@ const docTemplate = `{ "type": "integer" }, "erp_supplier_id": { - "description": "供应商id", + "description": "供应商id:入库必传", "type": "integer" }, "handler_id": { @@ -8012,11 +8008,11 @@ const docTemplate = `{ "type": "string" }, "opening_bank": { - "description": "开户行", + "description": "开户行:入库必传", "type": "string" }, "purchase_order_sn": { - "description": "采购退货订单号", + "description": "采购退货订单号:出库必传", "type": "string" }, "purchase_type": { @@ -8028,11 +8024,36 @@ const docTemplate = `{ "type": "string" }, "store_id": { - "description": "门店id", + "description": "门店id:入库必传", "type": "integer" } } }, + "models.ErpPurchaseExecuteReq": { + "type": "object", + "required": [ + "erp_purchase_order_id", + "inventories", + "purchase_type" + ], + "properties": { + "erp_purchase_order_id": { + "description": "采购订单id", + "type": "integer" + }, + "inventories": { + "description": "采购入库执行信息", + "type": "array", + "items": { + "$ref": "#/definitions/models.ErpPurchaseInventory" + } + }, + "purchase_type": { + "description": "采购类型:procure-采购 reject-退货", + "type": "string" + } + } + }, "models.ErpPurchaseExecuteResp": { "type": "object", "properties": { @@ -8114,6 +8135,14 @@ const docTemplate = `{ "description": "执行单价", "type": "number" }, + "inventory_id": { + "description": "最近入库人id", + "type": "integer" + }, + "inventory_name": { + "description": "最近入库人名称", + "type": "string" + }, "purchase_type": { "description": "采购类型:procure-采购 reject-退货", "type": "string" @@ -8129,6 +8158,8 @@ const docTemplate = `{ "required": [ "erp_purchase_order_id", "inventories", + "inventory_id", + "inventory_name", "purchase_type" ], "properties": { @@ -8143,6 +8174,14 @@ const docTemplate = `{ "$ref": "#/definitions/models.ErpPurchaseInventory" } }, + "inventory_id": { + "description": "最近入库人id", + "type": "integer" + }, + "inventory_name": { + "description": "最近入库人名称", + "type": "string" + }, "purchase_type": { "description": "采购类型:procure-采购 reject-退货", "type": "string" @@ -8218,6 +8257,14 @@ const docTemplate = `{ "description": "数据库记录编号", "type": "integer" }, + "inventory_id": { + "description": "最近入库人id", + "type": "integer" + }, + "inventory_name": { + "description": "最近入库人名称", + "type": "string" + }, "maker_id": { "description": "制单人id", "type": "integer" @@ -8238,9 +8285,9 @@ const docTemplate = `{ "description": "类型:procure-采购 reject-退货", "type": "string" }, - "rejected_purchase_order_id": { - "description": "退货采购订单id", - "type": "integer" + "rejected_serial_number": { + "description": "退货的采购订单单据编号", + "type": "string" }, "remark": { "description": "备注", @@ -8251,7 +8298,7 @@ const docTemplate = `{ "type": "string" }, "state": { - "description": "1-待审核 2-待入库 3-待退货 4-已完成 5-已终止", + "description": "1-待审核 2-待入库 3-待退货 4-已完成 5-已终止 6-入库中 7-退货中", "type": "integer" }, "store_id": { @@ -8283,6 +8330,10 @@ const docTemplate = `{ "description": "供应商id", "type": "integer" }, + "handler_id": { + "description": "经手人id", + "type": "integer" + }, "pageIndex": { "description": "页码", "type": "integer" @@ -8353,7 +8404,10 @@ const docTemplate = `{ }, "erp_supplier_id": { "description": "供应商id", - "type": "integer" + "type": "array", + "items": { + "type": "integer" + } }, "handler_id": { "description": "经手人id", @@ -8385,7 +8439,10 @@ const docTemplate = `{ }, "store_id": { "description": "门店id", - "type": "integer" + "type": "array", + "items": { + "type": "integer" + } } } }, @@ -8474,7 +8531,10 @@ const docTemplate = `{ }, "erp_supplier_id": { "description": "供应商id", - "type": "integer" + "type": "array", + "items": { + "type": "integer" + } }, "handler_id": { "description": "经手人id", @@ -8506,7 +8566,10 @@ const docTemplate = `{ }, "store_id": { "description": "门店id", - "type": "integer" + "type": "array", + "items": { + "type": "integer" + } } } }, @@ -8748,21 +8811,11 @@ const docTemplate = `{ "description": "入/出库,开始时间", "type": "string" }, - "store_list": { - "description": "门店复选", + "store_id": { + "description": "门店id", "type": "array", "items": { - "type": "object", - "properties": { - "store_id": { - "description": "门店id", - "type": "integer" - }, - "store_name": { - "description": "门店名称", - "type": "string" - } - } + "type": "integer" } } } @@ -8812,6 +8865,10 @@ const docTemplate = `{ "description": "商品名称", "type": "string" }, + "erp_purchase_order_id": { + "description": "采购订单id", + "type": "integer" + }, "erp_supplier_id": { "description": "供应商id", "type": "integer" @@ -9045,7 +9102,7 @@ const docTemplate = `{ "type": "integer" }, "original_sn": { - "description": "首次入库订单编号", + "description": "首次入库订单编号(单据编号)", "type": "string" }, "remark": { @@ -10797,6 +10854,10 @@ const docTemplate = `{ "description": "已执行数量", "type": "integer" }, + "erp_purchase_order_id": { + "description": "采购订单id", + "type": "integer" + }, "erp_supplier_id": { "description": "供应商id", "type": "integer" diff --git a/docs/swagger.json b/docs/swagger.json index 2f85a33..042ef6f 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -2422,7 +2422,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/models.ErpPurchaseInventoryReq" + "$ref": "#/definitions/models.ErpPurchaseExecuteReq" } } ], @@ -6696,6 +6696,10 @@ "description": "已执行数量", "type": "integer" }, + "erp_purchase_order_id": { + "description": "采购订单id", + "type": "integer" + }, "erp_supplier_id": { "description": "供应商id", "type": "integer" @@ -7071,8 +7075,12 @@ "description": "退货单价", "type": "number" }, + "rejected_remark": { + "description": "退货备注", + "type": "string" + }, "remark": { - "description": "备注", + "description": "销售备注", "type": "string" }, "retail_price": { @@ -7844,33 +7852,26 @@ "models.ErpPurchaseCreateReq": { "type": "object", "required": [ - "account_holder", - "bank_account", - "delivery_address", - "delivery_time", "erp_cashier_id", "erp_purchase_commodity", - "erp_supplier_id", "handler_id", - "opening_bank", - "purchase_type", - "store_id" + "purchase_type" ], "properties": { "account_holder": { - "description": "收款人", + "description": "收款人:入库必传", "type": "string" }, "bank_account": { - "description": "银行卡号", + "description": "银行卡号:入库必传", "type": "string" }, "delivery_address": { - "description": "交货地址", + "description": "交货地址:入库必传", "type": "string" }, "delivery_time": { - "description": "交货日期", + "description": "交货日期:入库必传", "type": "string" }, "erp_cashier_id": { @@ -7885,7 +7886,7 @@ } }, "erp_supplier_id": { - "description": "供应商id", + "description": "供应商id:入库必传", "type": "integer" }, "handler_id": { @@ -7897,11 +7898,11 @@ "type": "string" }, "opening_bank": { - "description": "开户行", + "description": "开户行:入库必传", "type": "string" }, "purchase_order_sn": { - "description": "采购退货订单号", + "description": "采购退货订单号:出库必传", "type": "string" }, "purchase_type": { @@ -7913,7 +7914,7 @@ "type": "string" }, "store_id": { - "description": "门店id", + "description": "门店id:入库必传", "type": "integer" } } @@ -7945,32 +7946,27 @@ "models.ErpPurchaseEditReq": { "type": "object", "required": [ - "bank_account", - "delivery_address", - "delivery_time", "erp_cashier_id", "erp_purchase_commodity", "erp_purchase_order_id", - "erp_supplier_id", - "opening_bank", - "purchase_type", - "store_id" + "handler_id", + "purchase_type" ], "properties": { "account_holder": { - "description": "收款人", + "description": "收款人:入库必传", "type": "string" }, "bank_account": { - "description": "银行卡号", + "description": "银行卡号:入库必传", "type": "string" }, "delivery_address": { - "description": "交货地址", + "description": "交货地址:入库必传", "type": "string" }, "delivery_time": { - "description": "交货日期", + "description": "交货日期:入库必传", "type": "string" }, "erp_cashier_id": { @@ -7989,7 +7985,7 @@ "type": "integer" }, "erp_supplier_id": { - "description": "供应商id", + "description": "供应商id:入库必传", "type": "integer" }, "handler_id": { @@ -8001,11 +7997,11 @@ "type": "string" }, "opening_bank": { - "description": "开户行", + "description": "开户行:入库必传", "type": "string" }, "purchase_order_sn": { - "description": "采购退货订单号", + "description": "采购退货订单号:出库必传", "type": "string" }, "purchase_type": { @@ -8017,11 +8013,36 @@ "type": "string" }, "store_id": { - "description": "门店id", + "description": "门店id:入库必传", "type": "integer" } } }, + "models.ErpPurchaseExecuteReq": { + "type": "object", + "required": [ + "erp_purchase_order_id", + "inventories", + "purchase_type" + ], + "properties": { + "erp_purchase_order_id": { + "description": "采购订单id", + "type": "integer" + }, + "inventories": { + "description": "采购入库执行信息", + "type": "array", + "items": { + "$ref": "#/definitions/models.ErpPurchaseInventory" + } + }, + "purchase_type": { + "description": "采购类型:procure-采购 reject-退货", + "type": "string" + } + } + }, "models.ErpPurchaseExecuteResp": { "type": "object", "properties": { @@ -8103,6 +8124,14 @@ "description": "执行单价", "type": "number" }, + "inventory_id": { + "description": "最近入库人id", + "type": "integer" + }, + "inventory_name": { + "description": "最近入库人名称", + "type": "string" + }, "purchase_type": { "description": "采购类型:procure-采购 reject-退货", "type": "string" @@ -8118,6 +8147,8 @@ "required": [ "erp_purchase_order_id", "inventories", + "inventory_id", + "inventory_name", "purchase_type" ], "properties": { @@ -8132,6 +8163,14 @@ "$ref": "#/definitions/models.ErpPurchaseInventory" } }, + "inventory_id": { + "description": "最近入库人id", + "type": "integer" + }, + "inventory_name": { + "description": "最近入库人名称", + "type": "string" + }, "purchase_type": { "description": "采购类型:procure-采购 reject-退货", "type": "string" @@ -8207,6 +8246,14 @@ "description": "数据库记录编号", "type": "integer" }, + "inventory_id": { + "description": "最近入库人id", + "type": "integer" + }, + "inventory_name": { + "description": "最近入库人名称", + "type": "string" + }, "maker_id": { "description": "制单人id", "type": "integer" @@ -8227,9 +8274,9 @@ "description": "类型:procure-采购 reject-退货", "type": "string" }, - "rejected_purchase_order_id": { - "description": "退货采购订单id", - "type": "integer" + "rejected_serial_number": { + "description": "退货的采购订单单据编号", + "type": "string" }, "remark": { "description": "备注", @@ -8240,7 +8287,7 @@ "type": "string" }, "state": { - "description": "1-待审核 2-待入库 3-待退货 4-已完成 5-已终止", + "description": "1-待审核 2-待入库 3-待退货 4-已完成 5-已终止 6-入库中 7-退货中", "type": "integer" }, "store_id": { @@ -8272,6 +8319,10 @@ "description": "供应商id", "type": "integer" }, + "handler_id": { + "description": "经手人id", + "type": "integer" + }, "pageIndex": { "description": "页码", "type": "integer" @@ -8342,7 +8393,10 @@ }, "erp_supplier_id": { "description": "供应商id", - "type": "integer" + "type": "array", + "items": { + "type": "integer" + } }, "handler_id": { "description": "经手人id", @@ -8374,7 +8428,10 @@ }, "store_id": { "description": "门店id", - "type": "integer" + "type": "array", + "items": { + "type": "integer" + } } } }, @@ -8463,7 +8520,10 @@ }, "erp_supplier_id": { "description": "供应商id", - "type": "integer" + "type": "array", + "items": { + "type": "integer" + } }, "handler_id": { "description": "经手人id", @@ -8495,7 +8555,10 @@ }, "store_id": { "description": "门店id", - "type": "integer" + "type": "array", + "items": { + "type": "integer" + } } } }, @@ -8737,21 +8800,11 @@ "description": "入/出库,开始时间", "type": "string" }, - "store_list": { - "description": "门店复选", + "store_id": { + "description": "门店id", "type": "array", "items": { - "type": "object", - "properties": { - "store_id": { - "description": "门店id", - "type": "integer" - }, - "store_name": { - "description": "门店名称", - "type": "string" - } - } + "type": "integer" } } } @@ -8801,6 +8854,10 @@ "description": "商品名称", "type": "string" }, + "erp_purchase_order_id": { + "description": "采购订单id", + "type": "integer" + }, "erp_supplier_id": { "description": "供应商id", "type": "integer" @@ -9034,7 +9091,7 @@ "type": "integer" }, "original_sn": { - "description": "首次入库订单编号", + "description": "首次入库订单编号(单据编号)", "type": "string" }, "remark": { @@ -10786,6 +10843,10 @@ "description": "已执行数量", "type": "integer" }, + "erp_purchase_order_id": { + "description": "采购订单id", + "type": "integer" + }, "erp_supplier_id": { "description": "供应商id", "type": "integer" diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 198f567..74b618e 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -1267,6 +1267,9 @@ definitions: count: description: 已执行数量 type: integer + erp_purchase_order_id: + description: 采购订单id + type: integer erp_supplier_id: description: 供应商id type: integer @@ -1544,8 +1547,11 @@ definitions: rejected_price: description: 退货单价 type: number + rejected_remark: + description: 退货备注 + type: string remark: - description: 备注 + description: 销售备注 type: string retail_price: description: 指导零售价 @@ -2105,16 +2111,16 @@ definitions: models.ErpPurchaseCreateReq: properties: account_holder: - description: 收款人 + description: 收款人:入库必传 type: string bank_account: - description: 银行卡号 + description: 银行卡号:入库必传 type: string delivery_address: - description: 交货地址 + description: 交货地址:入库必传 type: string delivery_time: - description: 交货日期 + description: 交货日期:入库必传 type: string erp_cashier_id: description: 付款方式 @@ -2125,7 +2131,7 @@ definitions: $ref: '#/definitions/models.ErpPurchaseCommodity' type: array erp_supplier_id: - description: 供应商id + description: 供应商id:入库必传 type: integer handler_id: description: 经手人id @@ -2134,10 +2140,10 @@ definitions: description: 经手人名称 type: string opening_bank: - description: 开户行 + description: 开户行:入库必传 type: string purchase_order_sn: - description: 采购退货订单号 + description: 采购退货订单号:出库必传 type: string purchase_type: description: 采购类型:procure-采购 reject-退货 @@ -2146,20 +2152,13 @@ definitions: description: 备注 type: string store_id: - description: 门店id + description: 门店id:入库必传 type: integer required: - - account_holder - - bank_account - - delivery_address - - delivery_time - erp_cashier_id - erp_purchase_commodity - - erp_supplier_id - handler_id - - opening_bank - purchase_type - - store_id type: object models.ErpPurchaseDeleteReq: properties: @@ -2180,16 +2179,16 @@ definitions: models.ErpPurchaseEditReq: properties: account_holder: - description: 收款人 + description: 收款人:入库必传 type: string bank_account: - description: 银行卡号 + description: 银行卡号:入库必传 type: string delivery_address: - description: 交货地址 + description: 交货地址:入库必传 type: string delivery_time: - description: 交货日期 + description: 交货日期:入库必传 type: string erp_cashier_id: description: 付款方式 @@ -2203,7 +2202,7 @@ definitions: description: 采购订单id type: integer erp_supplier_id: - description: 供应商id + description: 供应商id:入库必传 type: integer handler_id: description: 经手人id @@ -2212,10 +2211,10 @@ definitions: description: 经手人名称 type: string opening_bank: - description: 开户行 + description: 开户行:入库必传 type: string purchase_order_sn: - description: 采购退货订单号 + description: 采购退货订单号:出库必传 type: string purchase_type: description: 采购类型:procure-采购 reject-退货 @@ -2224,19 +2223,32 @@ definitions: description: 备注 type: string store_id: - description: 门店id + description: 门店id:入库必传 type: integer required: - - bank_account - - delivery_address - - delivery_time - erp_cashier_id - erp_purchase_commodity - erp_purchase_order_id - - erp_supplier_id - - opening_bank + - handler_id + - purchase_type + type: object + models.ErpPurchaseExecuteReq: + properties: + erp_purchase_order_id: + description: 采购订单id + type: integer + inventories: + description: 采购入库执行信息 + items: + $ref: '#/definitions/models.ErpPurchaseInventory' + type: array + purchase_type: + description: 采购类型:procure-采购 reject-退货 + type: string + required: + - erp_purchase_order_id + - inventories - purchase_type - - store_id type: object models.ErpPurchaseExecuteResp: properties: @@ -2295,6 +2307,12 @@ definitions: implementation_price: description: 执行单价 type: number + inventory_id: + description: 最近入库人id + type: integer + inventory_name: + description: 最近入库人名称 + type: string purchase_type: description: 采购类型:procure-采购 reject-退货 type: string @@ -2314,12 +2332,20 @@ definitions: items: $ref: '#/definitions/models.ErpPurchaseInventory' type: array + inventory_id: + description: 最近入库人id + type: integer + inventory_name: + description: 最近入库人名称 + type: string purchase_type: description: 采购类型:procure-采购 reject-退货 type: string required: - erp_purchase_order_id - inventories + - inventory_id + - inventory_name - purchase_type type: object models.ErpPurchaseOrder: @@ -2373,6 +2399,12 @@ definitions: id: description: 数据库记录编号 type: integer + inventory_id: + description: 最近入库人id + type: integer + inventory_name: + description: 最近入库人名称 + type: string maker_id: description: 制单人id type: integer @@ -2388,9 +2420,9 @@ definitions: purchase_type: description: 类型:procure-采购 reject-退货 type: string - rejected_purchase_order_id: - description: 退货采购订单id - type: integer + rejected_serial_number: + description: 退货的采购订单单据编号 + type: string remark: description: 备注 type: string @@ -2398,7 +2430,7 @@ definitions: description: 单据编号 type: string state: - description: 1-待审核 2-待入库 3-待退货 4-已完成 5-已终止 + description: 1-待审核 2-待入库 3-待退货 4-已完成 5-已终止 6-入库中 7-退货中 type: integer store_id: description: 门店id @@ -2421,6 +2453,9 @@ definitions: erp_supplier_id: description: 供应商id type: integer + handler_id: + description: 经手人id + type: integer pageIndex: description: 页码 type: integer @@ -2472,7 +2507,9 @@ definitions: type: string erp_supplier_id: description: 供应商id - type: integer + items: + type: integer + type: array handler_id: description: 经手人id type: integer @@ -2496,7 +2533,9 @@ definitions: type: integer store_id: description: 门店id - type: integer + items: + type: integer + type: array type: object models.ErpPurchaseReportByCommodityResp: properties: @@ -2561,7 +2600,9 @@ definitions: type: string erp_supplier_id: description: 供应商id - type: integer + items: + type: integer + type: array handler_id: description: 经手人id type: integer @@ -2585,7 +2626,9 @@ definitions: type: integer store_id: description: 门店id - type: integer + items: + type: integer + type: array type: object models.ErpPurchaseReportByOrderResp: properties: @@ -2761,17 +2804,10 @@ definitions: startTime: description: 入/出库,开始时间 type: string - store_list: - description: 门店复选 + store_id: + description: 门店id items: - properties: - store_id: - description: 门店id - type: integer - store_name: - description: 门店名称 - type: string - type: object + type: integer type: array type: object models.ErpPurchaseReportDetailResp: @@ -2807,6 +2843,9 @@ definitions: erp_commodity_name: description: 商品名称 type: string + erp_purchase_order_id: + description: 采购订单id + type: integer erp_supplier_id: description: 供应商id type: integer @@ -2979,7 +3018,7 @@ definitions: description: 最低零售价 type: integer original_sn: - description: 首次入库订单编号 + description: 首次入库订单编号(单据编号) type: string remark: description: 备注 @@ -4236,6 +4275,9 @@ definitions: count: description: 已执行数量 type: integer + erp_purchase_order_id: + description: 采购订单id + type: integer erp_supplier_id: description: 供应商id type: integer @@ -7020,7 +7062,7 @@ paths: name: request required: true schema: - $ref: '#/definitions/models.ErpPurchaseInventoryReq' + $ref: '#/definitions/models.ErpPurchaseExecuteReq' produces: - application/json responses: