zhangqian
2023-08-24 4616cadbd738da73565f39dc4709af211a9649e6
Merge branch 'hotfix'
3个文件已修改
42 ■■■■ 已修改文件
pkg/ecode/code.go 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pkg/ecode/msg.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/salesRefund.go 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pkg/ecode/code.go
@@ -214,14 +214,15 @@
    SalesReturnUpdateErr = 2900005 // 更新销售退货单失败
    SalesReturnDeleteErr = 2900006 // 删除销售退货单失败
    SalesRefundExist                   = 3000001 // 销售退款单已存在
    SalesRefundNotExist                = 3000002 // 销售退款单不存在
    SalesRefundListErr                 = 3000003 // 获取销售退款单列表失败
    SalesRefundSetErr                  = 3000004 // 设置销售退款单失败
    SalesRefundUpdateErr               = 3000005 // 更新销售退款单失败
    SalesRefundDeleteErr               = 3000006 // 删除销售退款单失败
    SalesRefundProductNotExist         = 3000007 // 退货产品不存在
    SalesRefundProductPriceOrAmountErr = 3000009 // 退货产品价格或数量错误
    SalesRefundExist                    = 3000001 // 销售退款单已存在
    SalesRefundNotExist                 = 3000002 // 销售退款单不存在
    SalesRefundListErr                  = 3000003 // 获取销售退款单列表失败
    SalesRefundSetErr                   = 3000004 // 设置销售退款单失败
    SalesRefundUpdateErr                = 3000005 // 更新销售退款单失败
    SalesRefundDeleteErr                = 3000006 // 删除销售退款单失败
    SalesRefundProductNotExist          = 3000007 // 退货产品不存在
    SalesRefundProductPriceOrAmountErr  = 3000009 // 退货产品价格或数量错误
    SalesRefundProductBeyondTotalAmount = 3000010 // 退货产品对应总价超出应退总价
    ContractExist     = 3100001 // 合同已存在
    ContractNotExist  = 3100002 // 合同不存在
pkg/ecode/msg.go
@@ -25,6 +25,7 @@
    SContractInvoiceProductPriceGreaterThanReceivableAmountErr: "开票总额高于应收金额",
    SalesRefundProductNotExist:                                 "退货产品不存在",
    SalesRefundProductPriceOrAmountErr:                         "退货产品价格或数量错误",
    SalesRefundProductBeyondTotalAmount:                        "退货产品对应总价超出应退总价",
}
func GetMsg(errCode int) (errMsg string) {
service/salesRefund.go
@@ -4,6 +4,7 @@
    "aps_crm/constvar"
    "aps_crm/model"
    "aps_crm/pkg/ecode"
    "errors"
    "github.com/shopspring/decimal"
    "gorm.io/gorm"
)
@@ -23,23 +24,29 @@
    for _, product := range salesRefund.Products {
        amount = amount.Add(product.Amount.Mul(product.Price))
    }
    code := ecode.OK
    err = model.WithTransaction(func(db *gorm.DB) error {
        err = model.NewSalesRefundSearch().Create(salesRefund)
        if err != nil {
            code = ecode.DBErr
            return err
        }
        salesReturnRecord.AmountHasRefund = salesReturnRecord.AmountHasRefund.Add(amount).Round(2)
        if salesReturnRecord.AmountHasRefund.GreaterThan(salesReturnRecord.AmountTotal) {
            code = ecode.SalesRefundProductBeyondTotalAmount
            return errors.New("退货产品对应总价超出应退总价")
        }
        salesReturnRecord.AmountShouldRefund = salesReturnRecord.AmountTotal.Sub(salesReturnRecord.AmountHasRefund).Round(2)
        err = model.NewSalesReturnSearch().SetId(salesRefund.SourceId).Update(salesReturnRecord)
        if err != nil {
            code = ecode.DBErr
            return err
        }
        return nil
    })
    if err != nil {
        return ecode.SalesRefundExist
        return code
    }
    return ecode.OK
@@ -54,7 +61,7 @@
        if returnProductsMap[product.Id] == nil {
            return ecode.SalesRefundProductNotExist
        }
        if returnProductsMap[product.Id].Price != product.Price || product.Amount.GreaterThan(returnProductsMap[product.Id].Amount) {
        if !returnProductsMap[product.Id].Price.Equal(product.Price) || product.Amount.GreaterThan(returnProductsMap[product.Id].Amount) {
            return ecode.SalesRefundProductPriceOrAmountErr
        }
    }
@@ -131,22 +138,31 @@
        diffAmount = diffAmount.Sub(product.Amount.Mul(product.Price))
    }
    code := ecode.OK
    err = model.WithTransaction(func(db *gorm.DB) error {
        err = model.NewSalesRefundSearch().SetId(salesRefund.Id).Update(salesRefund)
        if err != nil {
            code = ecode.DBErr
            return err
        }
        salesReturnRecord.AmountHasRefund = salesReturnRecord.AmountHasRefund.Sub(diffAmount).Round(2)
        salesReturnRecord.AmountShouldRefund = salesReturnRecord.AmountTotal.Sub(salesReturnRecord.AmountHasRefund).Round(2)
        if salesReturnRecord.AmountHasRefund.GreaterThan(salesReturnRecord.AmountTotal) {
            code = ecode.SalesRefundProductBeyondTotalAmount
            return errors.New("退货产品对应总价超出应退总价")
        }
        err = model.NewSalesReturnSearch().SetId(salesRefund.SourceId).Update(salesReturnRecord)
        if err != nil {
            code = ecode.DBErr
            return err
        }
        return nil
    })
    if err != nil {
        return ecode.SalesRefundSetErr
        return code
    }
    return ecode.OK