liujiandao
2024-03-23 7236a0a5b966313ddefdd89df7fa6bf2370dd12f
采购单修改
2个文件已修改
51 ■■■■ 已修改文件
api/v1/purchase/purchase.go 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/purchase/purchase.go 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/purchase/purchase.go
@@ -461,7 +461,7 @@
        ppc.SurplusReceiveAmount = products.Amount
        list = append(list, &ppc)
    }
    err = service.NewPurchaseService().SavePurchaseProductConfirm(list)
    err = service.NewPurchaseService().SavePurchaseProductConfirm(list, true)
    if err != nil {
        global.GVA_LOG.Error("提交失败!", zap.Error(err))
@@ -519,7 +519,7 @@
    }
    server := service.NewPurchaseService()
    err = server.SavePurchaseProductConfirm(list)
    err = server.SavePurchaseProductConfirm(list, false)
    if err != nil {
        global.GVA_LOG.Error("保存失败!", zap.Error(err))
@@ -666,7 +666,7 @@
    }
    server := service.NewPurchaseService()
    err = server.SavePurchaseProductConfirm(list)
    err = server.SavePurchaseProductConfirm(list, false)
    if err != nil {
        global.GVA_LOG.Error("保存失败!", zap.Error(err))
service/purchase/purchase.go
@@ -299,7 +299,7 @@
    return int(total), err
}
func (slf *PurchaseService) SavePurchaseProductConfirm(list []*purchase.PurchaseProductConfirm) (err error) {
func (slf *PurchaseService) SavePurchaseProductConfirm(list []*purchase.PurchaseProductConfirm, first bool) (err error) {
    if len(list) == 0 {
        return errors.New("产品列表不能为空")
    }
@@ -311,26 +311,29 @@
    }
    m := make(map[string]interface{})
    now := int64(0)
    yu := int64(0)
    for _, confirm := range list {
        if !confirm.NowReceiveAmount.IsZero() {
            now = confirm.NowReceiveAmount.IntPart()
        }
        if !confirm.SurplusReceiveAmount.IsZero() {
            yu = confirm.SurplusReceiveAmount.IntPart()
        }
        confirm.OverReceiveAmount = confirm.OverReceiveAmount.Add(confirm.NowReceiveAmount)
        confirm.NotReceiveAmount = confirm.Amount.Sub(confirm.OverReceiveAmount)
    }
    if now == 0 && yu > 0 {
    newList := make([]*purchase.PurchaseProductConfirm, 0)
    if first {
        m["status"] = purchase.OrderStatusWaitReceive
    }
    if now > 0 && yu > 0 {
        m["status"] = purchase.OrderStatusPartReceive
    }
    if now > 0 && yu == 0 {
        m["status"] = purchase.OrderStatusWaitQuality
        newList = list
    } else {
        yu := int64(0)
        for _, confirm := range list {
            confirm.OverReceiveAmount = confirm.OverReceiveAmount.Add(confirm.NowReceiveAmount)
            confirm.NotReceiveAmount = confirm.Amount.Sub(confirm.OverReceiveAmount)
            if !confirm.SurplusReceiveAmount.IsZero() {
                yu = confirm.SurplusReceiveAmount.IntPart()
            }
            //过滤本次收货数量为0的数据
            if !confirm.NowReceiveAmount.IsZero() {
                newList = append(newList, confirm)
            }
        }
        if yu > 0 {
            m["status"] = purchase.OrderStatusPartReceive
        }
        if yu == 0 {
            m["status"] = purchase.OrderStatusWaitQuality
        }
    }
    err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
@@ -339,7 +342,7 @@
            return err
        }
        err = tx.Create(list).Error
        err = tx.Create(newList).Error
        if err != nil {
            return err
        }