|
@@ -14,6 +14,7 @@ import (
|
|
|
"time"
|
|
|
|
|
|
"github.com/kataras/iris/v12"
|
|
|
+ "github.com/shopspring/decimal"
|
|
|
"go.mod/comm"
|
|
|
"go.mod/conf"
|
|
|
"go.mod/models"
|
|
@@ -46,15 +47,17 @@ func (s *contractService) PaidCreate(returnData *viewmodels.ContractsPaid, proje
|
|
|
if contract.Status == 2 {
|
|
|
return errors.New("合同已关闭")
|
|
|
}
|
|
|
+
|
|
|
// 1-3已支付的中金额不能超过 合同金额
|
|
|
- price, err := strconv.ParseFloat(returnData.Price, 64)
|
|
|
+ price, err := decimal.NewFromString(returnData.Price)
|
|
|
if err != nil {
|
|
|
return errors.New("金额填写有误")
|
|
|
}
|
|
|
- paidPrice, _ := strconv.ParseFloat(contract.Paid, 64)
|
|
|
- contractPrice, _ := strconv.ParseFloat(contract.Price, 64)
|
|
|
- resultPrice := contractPrice - paidPrice
|
|
|
- if price > resultPrice {
|
|
|
+ contractPrice, _ := decimal.NewFromString(contract.Price)
|
|
|
+ paidPrice, _ := decimal.NewFromString(contract.Paid)
|
|
|
+ resultPrice := contractPrice.Sub(paidPrice)
|
|
|
+
|
|
|
+ if price.GreaterThan(resultPrice) {
|
|
|
return errors.New("支付金额不能超过合同金额")
|
|
|
}
|
|
|
|
|
@@ -110,17 +113,23 @@ func (s *contractService) PaidUpdate(returnData *viewmodels.ContractsPaid, proje
|
|
|
if contract.Status == 2 {
|
|
|
return errors.New("合同已关闭")
|
|
|
}
|
|
|
+
|
|
|
// 1-3已支付的中金额不能超过 合同金额
|
|
|
- price, err := strconv.ParseFloat(returnData.Price, 64)
|
|
|
+ price, err := decimal.NewFromString(returnData.Price)
|
|
|
if err != nil {
|
|
|
return errors.New("金额填写有误")
|
|
|
}
|
|
|
- contractPrice, _ := strconv.ParseFloat(contract.Price, 64)
|
|
|
- paidPrice, _ := strconv.ParseFloat(contract.Paid, 64)
|
|
|
- // 合同金额-(已支付总金额-当前已支付金额)
|
|
|
- resultPrice := contractPrice - (paidPrice - price)
|
|
|
-
|
|
|
- if price > resultPrice {
|
|
|
+ contractPrice, _ := decimal.NewFromString(contract.Price)
|
|
|
+ paidPrice, _ := decimal.NewFromString(contract.Paid)
|
|
|
+ // 当前回款金额
|
|
|
+ returnedPresentPrice, _ := decimal.NewFromString(contractPaid.Price)
|
|
|
+ // 合同金额-(回款总金额-当前回款金额)
|
|
|
+ // 回款总金额-当前回款金额
|
|
|
+ subPrice := paidPrice.Sub(returnedPresentPrice)
|
|
|
+ // 合同金额-subPrice
|
|
|
+ resultPrice := contractPrice.Sub(subPrice)
|
|
|
+
|
|
|
+ if price.GreaterThan(resultPrice) {
|
|
|
return errors.New("支付金额不能超过合同金额")
|
|
|
}
|
|
|
|