| | |
| | | // @Tags SalesReturn |
| | | // @Summary 销售退货单列表 |
| | | // @Produce application/json |
| | | // @Param object body request.GetSalesReturnList true "参数" |
| | | // |
| | | // @Param object body request.GetSalesReturnList true "参数" |
| | | // |
| | | // @Success 200 {object} contextx.Response{data=response.SalesReturnResponse} |
| | | // @Router /api/salesReturn/list [post] |
| | | func (con *SalesReturnApi) List(c *gin.Context) { |
| | |
| | | return |
| | | } |
| | | |
| | | salesReturns, total, errCode := salesReturnService.GetSalesReturnList(params.Page, params.PageSize, params.Keyword) |
| | | salesReturns, total, errCode := salesReturnService.GetSalesReturnList(params.Page, params.PageSize, params.KeywordType, params.Keyword) |
| | | if errCode != ecode.OK { |
| | | ctx.Fail(errCode) |
| | | return |
| | |
| | | package constvar |
| | | |
| | | type SalesRefundKeywordType string |
| | | |
| | | const ( |
| | | SalesRefundKeywordRefundNumber SalesRefundKeywordType = "销售退货单编号" |
| | | SalesRefundKeywordClientName SalesRefundKeywordType = "客户名称" |
| | | SalesRefundKeywordRefundDate SalesRefundKeywordType = "退款日期" |
| | | SalesRefundKeywordAccount SalesRefundKeywordType = "账户" |
| | | SalesRefundKeywordIsInvoice SalesRefundKeywordType = "是否开票" |
| | | SalesRefundKeywordPaymentType SalesRefundKeywordType = "付款方式" |
| | | SalesRefundKeywordPrincipal SalesRefundKeywordType = "销售负责人" |
| | | SalesRefundKeywordUpdateAt SalesRefundKeywordType = "修改时间" |
| | | SalesRefundKeywordPriceTotal SalesRefundKeywordType = "价税合计" |
| | | ) |
| | |
| | | const ( |
| | | RefundSourceTypeSalesReturn RefundSourceType = 1 //销售退货 |
| | | ) |
| | | |
| | | type SalesRefundKeywordType string |
| | | |
| | | const ( |
| | | SalesRefundKeywordRefundNumber SalesRefundKeywordType = "销售退货单编号" |
| | | SalesRefundKeywordClientName SalesRefundKeywordType = "客户名称" |
| | | SalesRefundKeywordRefundDate SalesRefundKeywordType = "退款日期" |
| | | SalesRefundKeywordAccount SalesRefundKeywordType = "账户" |
| | | SalesRefundKeywordIsInvoice SalesRefundKeywordType = "是否开票" |
| | | SalesRefundKeywordPaymentType SalesRefundKeywordType = "付款方式" |
| | | SalesRefundKeywordPrincipal SalesRefundKeywordType = "销售负责人" |
| | | SalesRefundKeywordUpdateAt SalesRefundKeywordType = "修改时间" |
| | | SalesRefundKeywordPriceTotal SalesRefundKeywordType = "价税合计" |
| | | ) |
| | |
| | | const ( |
| | | SalesReturnSourceTypeSaleDetails SalesReturnSourceType = 1 //销售明细 |
| | | ) |
| | | |
| | | type SalesReturnKeywordType string |
| | | |
| | | const ( |
| | | SalesReturnKeywordReturnNumber SalesReturnKeywordType = "销售退货单编号" |
| | | SalesReturnKeywordClientName SalesReturnKeywordType = "客户名称" |
| | | SalesReturnKeywordReturnDate SalesReturnKeywordType = "退款日期" |
| | | SalesReturnKeywordStatus SalesReturnKeywordType = "状态" |
| | | SalesReturnKeywordRepository SalesReturnKeywordType = "退入仓库" |
| | | SalesReturnKeywordAmountShouldRefund SalesReturnKeywordType = "应退款" |
| | | SalesReturnKeywordAmountHasRefund SalesReturnKeywordType = "已退款" |
| | | SalesReturnKeywordPrincipal SalesReturnKeywordType = "销售负责人" |
| | | ) |
| | |
| | | "SalesRefundKeywordPriceTotal" |
| | | ] |
| | | }, |
| | | "constvar.SalesReturnKeywordType": { |
| | | "type": "string", |
| | | "enum": [ |
| | | "销售退货单编号", |
| | | "客户名称", |
| | | "退款日期", |
| | | "状态", |
| | | "退入仓库", |
| | | "应退款", |
| | | "已退款", |
| | | "销售负责人" |
| | | ], |
| | | "x-enum-varnames": [ |
| | | "SalesReturnKeywordReturnNumber", |
| | | "SalesReturnKeywordClientName", |
| | | "SalesReturnKeywordReturnDate", |
| | | "SalesReturnKeywordStatus", |
| | | "SalesReturnKeywordRepository", |
| | | "SalesReturnKeywordAmountShouldRefund", |
| | | "SalesReturnKeywordAmountHasRefund", |
| | | "SalesReturnKeywordPrincipal" |
| | | ] |
| | | }, |
| | | "constvar.SalesReturnSourceType": { |
| | | "type": "integer", |
| | | "enum": [ |
| | |
| | | "type": "integer" |
| | | }, |
| | | "isInvoice": { |
| | | "type": "integer" |
| | | "type": "string" |
| | | }, |
| | | "member": { |
| | | "$ref": "#/definitions/model.User" |
| | |
| | | "$ref": "#/definitions/model.SalesReturnStatus" |
| | | } |
| | | ] |
| | | }, |
| | | "amountHasRefund": { |
| | | "description": "已退款金额", |
| | | "type": "number" |
| | | }, |
| | | "amountShouldRefund": { |
| | | "description": "应退款金额", |
| | | "type": "number" |
| | | }, |
| | | "client": { |
| | | "$ref": "#/definitions/model.Client" |
| | |
| | | "keyword": { |
| | | "type": "string" |
| | | }, |
| | | "keywordType": { |
| | | "$ref": "#/definitions/constvar.SalesReturnKeywordType" |
| | | }, |
| | | "page": { |
| | | "description": "页码", |
| | | "type": "integer" |
| | |
| | | "type": "integer" |
| | | }, |
| | | "isInvoice": { |
| | | "type": "integer" |
| | | "type": "string" |
| | | }, |
| | | "memberId": { |
| | | "type": "integer" |
| | |
| | | "SalesRefundKeywordPriceTotal" |
| | | ] |
| | | }, |
| | | "constvar.SalesReturnKeywordType": { |
| | | "type": "string", |
| | | "enum": [ |
| | | "销售退货单编号", |
| | | "客户名称", |
| | | "退款日期", |
| | | "状态", |
| | | "退入仓库", |
| | | "应退款", |
| | | "已退款", |
| | | "销售负责人" |
| | | ], |
| | | "x-enum-varnames": [ |
| | | "SalesReturnKeywordReturnNumber", |
| | | "SalesReturnKeywordClientName", |
| | | "SalesReturnKeywordReturnDate", |
| | | "SalesReturnKeywordStatus", |
| | | "SalesReturnKeywordRepository", |
| | | "SalesReturnKeywordAmountShouldRefund", |
| | | "SalesReturnKeywordAmountHasRefund", |
| | | "SalesReturnKeywordPrincipal" |
| | | ] |
| | | }, |
| | | "constvar.SalesReturnSourceType": { |
| | | "type": "integer", |
| | | "enum": [ |
| | |
| | | "type": "integer" |
| | | }, |
| | | "isInvoice": { |
| | | "type": "integer" |
| | | "type": "string" |
| | | }, |
| | | "member": { |
| | | "$ref": "#/definitions/model.User" |
| | |
| | | "$ref": "#/definitions/model.SalesReturnStatus" |
| | | } |
| | | ] |
| | | }, |
| | | "amountHasRefund": { |
| | | "description": "已退款金额", |
| | | "type": "number" |
| | | }, |
| | | "amountShouldRefund": { |
| | | "description": "应退款金额", |
| | | "type": "number" |
| | | }, |
| | | "client": { |
| | | "$ref": "#/definitions/model.Client" |
| | |
| | | "keyword": { |
| | | "type": "string" |
| | | }, |
| | | "keywordType": { |
| | | "$ref": "#/definitions/constvar.SalesReturnKeywordType" |
| | | }, |
| | | "page": { |
| | | "description": "页码", |
| | | "type": "integer" |
| | |
| | | "type": "integer" |
| | | }, |
| | | "isInvoice": { |
| | | "type": "integer" |
| | | "type": "string" |
| | | }, |
| | | "memberId": { |
| | | "type": "integer" |
| | |
| | | - SalesRefundKeywordPrincipal |
| | | - SalesRefundKeywordUpdateAt |
| | | - SalesRefundKeywordPriceTotal |
| | | constvar.SalesReturnKeywordType: |
| | | enum: |
| | | - 销售退货单编号 |
| | | - 客户名称 |
| | | - 退款日期 |
| | | - 状态 |
| | | - 退入仓库 |
| | | - 应退款 |
| | | - 已退款 |
| | | - 销售负责人 |
| | | type: string |
| | | x-enum-varnames: |
| | | - SalesReturnKeywordReturnNumber |
| | | - SalesReturnKeywordClientName |
| | | - SalesReturnKeywordReturnDate |
| | | - SalesReturnKeywordStatus |
| | | - SalesReturnKeywordRepository |
| | | - SalesReturnKeywordAmountShouldRefund |
| | | - SalesReturnKeywordAmountHasRefund |
| | | - SalesReturnKeywordPrincipal |
| | | constvar.SalesReturnSourceType: |
| | | enum: |
| | | - 1 |
| | |
| | | id: |
| | | type: integer |
| | | isInvoice: |
| | | type: integer |
| | | type: string |
| | | member: |
| | | $ref: '#/definitions/model.User' |
| | | memberId: |
| | |
| | | allOf: |
| | | - $ref: '#/definitions/model.SalesReturnStatus' |
| | | description: 退货状态 |
| | | amountHasRefund: |
| | | description: 已退款金额 |
| | | type: number |
| | | amountShouldRefund: |
| | | description: 应退款金额 |
| | | type: number |
| | | client: |
| | | $ref: '#/definitions/model.Client' |
| | | clientId: |
| | |
| | | properties: |
| | | keyword: |
| | | type: string |
| | | keywordType: |
| | | $ref: '#/definitions/constvar.SalesReturnKeywordType' |
| | | page: |
| | | description: 页码 |
| | | type: integer |
| | |
| | | clientId: |
| | | type: integer |
| | | isInvoice: |
| | | type: integer |
| | | type: string |
| | | memberId: |
| | | type: integer |
| | | number: |
| | |
| | | RefundDate string `json:"refundDate"` |
| | | PaymentTypeId int `gorm:"column:payment_type_id;type:int;not null;default 0;comment:收款方式ID" json:"paymentTypeId"` // 收款方式ID |
| | | BankAccountId int `gorm:"column:bank_account_id;type:int;not null;default 0;comment:账户id" json:"bankAccountId"` // 账户id |
| | | IsInvoice int `json:"isInvoice"` |
| | | IsInvoice string `json:"isInvoice"` |
| | | Reason string `json:"reason"` |
| | | Products []*model.Product `json:"products"` |
| | | } |
| | |
| | | Number string `json:"number" gorm:"column:number;type:varchar(255);comment:退货单号"` |
| | | Repository string `json:"repository" gorm:"column:repository;type:varchar(255);comment:仓库"` |
| | | MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:负责人id"` |
| | | ReturnDate string `json:"returnDate" gorm:"column:return_date;type:datetime(3);comment:退货日期"` //退货日期 |
| | | SalesReturnStatusId int `json:"salesReturnStatusId" gorm:"column:sales_return_status;type:int;comment:退货状态"` //退货状态id |
| | | CreatorId int `json:"-" gorm:"column:creator_id;type:int;comment:创建人id"` //创建人ID |
| | | Creator User `json:"-" gorm:"foreignKey:CreatorId"` //创建人信息 |
| | | Reason string `json:"reason" gorm:"column:reason;type:varchar(255);comment:退货原因"` //退货原因 |
| | | Products []*model.Product `json:"products" gorm:"many2many:salesReturn_product;"` //退货产品 |
| | | ReturnDate string `json:"returnDate" gorm:"column:return_date;type:datetime(3);comment:退货日期"` //退货日期 |
| | | SalesReturnStatusId int `json:"salesReturnStatusId" gorm:"column:sales_return_status_id;type:int;comment:退货状态"` //退货状态id |
| | | CreatorId int `json:"-" gorm:"column:creator_id;type:int;comment:创建人id"` //创建人ID |
| | | Creator User `json:"-" gorm:"foreignKey:CreatorId"` //创建人信息 |
| | | Reason string `json:"reason" gorm:"column:reason;type:varchar(255);comment:退货原因"` //退货原因 |
| | | Products []*model.Product `json:"products" gorm:"many2many:salesReturn_product;"` //退货产品 |
| | | } |
| | | |
| | | type UpdateSalesReturnRequest struct { |
| | |
| | | |
| | | type GetSalesReturnList struct { |
| | | PageInfo |
| | | Keyword string `json:"keyword"` |
| | | Keyword string `json:"keyword"` |
| | | KeywordType constvar.SalesReturnKeywordType |
| | | } |
| | |
| | | PaymentType PaymentType `gorm:"foreignKey:PaymentTypeId" json:"paymentType"` |
| | | BankAccountId int `gorm:"column:bank_account_id;type:int;not null;default 0;comment:账户id" json:"bankAccountId"` // 账户id |
| | | BankAccount BankAccount `gorm:"foreignKey:BankAccountId" json:"bankAccount"` |
| | | IsInvoice int `json:"isInvoice" gorm:"column:is_invoice;type:int;comment:是否开票"` |
| | | IsInvoice string `json:"isInvoice" gorm:"column:is_invoice;type:varchar(255);comment:是否开票"` |
| | | Reason string `json:"reason" gorm:"column:reason;type:varchar(255);comment:退款原因"` |
| | | Products []*Product `json:"products" gorm:"many2many:salesRefund_product;"` |
| | | AmountTotal decimal.Decimal `gorm:"column:amount_total;type:decimal(12,2);comment:价税合计" json:"amountTotal"` // 价税合计 |
| | |
| | | import ( |
| | | "aps_crm/constvar" |
| | | "aps_crm/pkg/mysqlx" |
| | | "fmt" |
| | | "github.com/shopspring/decimal" |
| | | "gorm.io/gorm" |
| | | "gorm.io/gorm/clause" |
| | | ) |
| | | |
| | | type ( |
| | |
| | | Repository string `json:"repository" gorm:"column:repository;type:varchar(255);comment:仓库"` |
| | | MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:负责人id"` |
| | | Member User `json:"Member" gorm:"foreignKey:MemberId"` |
| | | ReturnDate string `json:"returnDate" gorm:"column:return_date;type:datetime(3);comment:退货日期"` //退货日期 |
| | | SalesReturnStatusId int `json:"salesReturnStatusId" gorm:"column:sales_return_status;type:int;comment:退货状态"` //退货状态id |
| | | SalesReturnStatus SalesReturnStatus `json:"SalesReturnStatus" gorm:"foreignKey:SalesReturnStatusId"` //退货状态 |
| | | CreatorId int `json:"-" gorm:"column:creator_id;type:int;comment:创建人id"` //创建人ID |
| | | Creator User `json:"-" gorm:"foreignKey:CreatorId"` //创建人信息 |
| | | Reason string `json:"reason" gorm:"column:reason;type:varchar(255);comment:退货原因"` //退货原因 |
| | | Products []*Product `json:"products" gorm:"many2many:salesReturn_product;"` //退货产品 |
| | | ReturnDate string `json:"returnDate" gorm:"column:return_date;type:datetime(3);comment:退货日期"` //退货日期 |
| | | SalesReturnStatusId int `json:"salesReturnStatusId" gorm:"column:sales_return_status;type:int;comment:退货状态"` //退货状态id |
| | | SalesReturnStatus SalesReturnStatus `json:"SalesReturnStatus" gorm:"foreignKey:SalesReturnStatusId"` //退货状态 |
| | | CreatorId int `json:"-" gorm:"column:creator_id;type:int;comment:创建人id"` //创建人ID |
| | | Creator User `json:"-" gorm:"foreignKey:CreatorId"` //创建人信息 |
| | | Reason string `json:"reason" gorm:"column:reason;type:varchar(255);comment:退货原因"` //退货原因 |
| | | Products []*Product `json:"products" gorm:"many2many:salesReturn_product;"` //退货产品 |
| | | AmountShouldRefund decimal.Decimal `gorm:"column:amount_should_refund;type:decimal(12,2);comment:应退款金额" json:"amountShouldRefund"` // 应退款金额 |
| | | AmountHasRefund decimal.Decimal `gorm:"column:amount_has_refund;type:decimal(12,2);comment:已退款金额" json:"amountHasRefund"` // 已退款金额 |
| | | |
| | | CrmModel |
| | | } |
| | | |
| | | SalesReturnSearch struct { |
| | | SalesReturn |
| | | |
| | | Orm *gorm.DB |
| | | Keyword string |
| | | OrderBy string |
| | | PageNum int |
| | | PageSize int |
| | | Orm *gorm.DB |
| | | KeywordType constvar.SalesReturnKeywordType |
| | | Keyword string |
| | | OrderBy string |
| | | PageNum int |
| | | PageSize int |
| | | Preload bool |
| | | } |
| | | ) |
| | | |
| | |
| | | |
| | | func (slf *SalesReturnSearch) build() *gorm.DB { |
| | | var db = slf.Orm.Model(&SalesReturn{}) |
| | | if slf.Keyword != "" { |
| | | db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") |
| | | } |
| | | if slf.Id != 0 { |
| | | db = db.Where("id = ?", slf.Id) |
| | | } |
| | | |
| | | if slf.Preload { |
| | | db = db.Preload("Client"). |
| | | Preload("Member"). |
| | | Preload("SalesReturnStatus"). |
| | | Preload("Products") |
| | | } |
| | | |
| | | if slf.KeywordType != "" { |
| | | switch slf.KeywordType { |
| | | case constvar.SalesReturnKeywordReturnNumber: |
| | | db = db.Where("number like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) |
| | | case constvar.SalesReturnKeywordClientName: |
| | | db = db.Joins("Client", clause.LeftJoin).Where("Client.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) |
| | | case constvar.SalesReturnKeywordReturnDate: |
| | | db = db.Where("return_date like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) |
| | | case constvar.SalesReturnKeywordStatus: |
| | | db = db.Joins("SalesReturnStatus").Where("SalesReturnStatus name like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) |
| | | case constvar.SalesReturnKeywordRepository: |
| | | db = db.Where("repository like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) |
| | | case constvar.SalesReturnKeywordAmountShouldRefund: |
| | | db = db.Where("amount_should_refund = ?", slf.Keyword) |
| | | case constvar.SalesReturnKeywordPrincipal: |
| | | db = db.Joins("left join user on user.id = sales_refund.member_id").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) |
| | | case constvar.SalesReturnKeywordAmountHasRefund: |
| | | db = db.Where("amount_has_refund = ?", slf.Keyword) |
| | | |
| | | } |
| | | } |
| | | |
| | | return db |
| | |
| | | return slf |
| | | } |
| | | |
| | | func (slf *SalesReturnSearch) SetKeywordType(keywordType constvar.SalesReturnKeywordType) *SalesReturnSearch { |
| | | slf.KeywordType = keywordType |
| | | return slf |
| | | } |
| | | |
| | | func (slf *SalesReturnSearch) SetPage(page, size int) *SalesReturnSearch { |
| | | slf.PageNum, slf.PageSize = page, size |
| | | return slf |
| | |
| | | slf.OrderBy = order |
| | | return slf |
| | | } |
| | | |
| | | func (slf *SalesReturnSearch) SetPreload(preload bool) *SalesReturnSearch { |
| | | slf.Preload = preload |
| | | return slf |
| | | } |
| | |
| | | return ecode.SalesRefundNotExist |
| | | } |
| | | |
| | | salesReturnRecord, err := model.NewSalesReturnSearch().SetId(salesRefund.SourceId).Find() |
| | | salesReturnRecord, err := model.NewSalesReturnSearch().SetId(salesRefund.SourceId).SetPreload(true).Find() |
| | | if err != nil { |
| | | return ecode.SalesReturnNotExist |
| | | } |
| | |
| | | package service |
| | | |
| | | import ( |
| | | "aps_crm/constvar" |
| | | "aps_crm/model" |
| | | "aps_crm/pkg/ecode" |
| | | ) |
| | |
| | | return ecode.OK |
| | | } |
| | | |
| | | func (SalesReturnService) GetSalesReturnList(page, pageSize int, keyword string) ([]*model.SalesReturn, int64, int) { |
| | | func (SalesReturnService) GetSalesReturnList(page, pageSize int, keywordType constvar.SalesReturnKeywordType, keyword string) ([]*model.SalesReturn, int64, int) { |
| | | // get contact list |
| | | contacts, total, err := model.NewSalesReturnSearch().SetKeyword(keyword).SetPage(page, pageSize).FindAll() |
| | | contacts, total, err := model.NewSalesReturnSearch(). |
| | | SetKeywordType(keywordType). |
| | | SetKeyword(keyword). |
| | | SetPage(page, pageSize). |
| | | SetPreload(true). |
| | | FindAll() |
| | | if err != nil { |
| | | return nil, 0, ecode.SalesReturnListErr |
| | | } |