|
@@ -70,7 +70,7 @@ type OrderGood struct { |
|
@@ -70,7 +70,7 @@ type OrderGood struct { |
70
|
UseGoodNumber int `json:"useGoodNumber"`
|
70
|
UseGoodNumber int `json:"useGoodNumber"`
|
71
|
//货品单价
|
71
|
//货品单价
|
72
|
Price float64 `json:"price"`
|
72
|
Price float64 `json:"price"`
|
73
|
- //合伙人分红比例
|
73
|
+ //合伙人分红比例 比如12.7等同于12.7%,使用负值表示分红比例未进行设置
|
74
|
PartnerBonusPercent float64 `json:"partnerBonusPercent"`
|
74
|
PartnerBonusPercent float64 `json:"partnerBonusPercent"`
|
75
|
//分红支付状态
|
75
|
//分红支付状态
|
76
|
BonusStatus int `json:"bonusStatus"`
|
76
|
BonusStatus int `json:"bonusStatus"`
|
|
@@ -87,6 +87,20 @@ type OrderGood struct { |
|
@@ -87,6 +87,20 @@ type OrderGood struct { |
87
|
DataFrom OrderDataFrom `json:"data_from"`
|
87
|
DataFrom OrderDataFrom `json:"data_from"`
|
88
|
}
|
88
|
}
|
89
|
|
89
|
|
|
|
90
|
+//NewOrderGood 初始值设定
|
|
|
91
|
+func NewOrderGood() OrderGood {
|
|
|
92
|
+ return OrderGood{
|
|
|
93
|
+ UseGoodNumber: -1,
|
|
|
94
|
+ BonusStatus: OrderGoodWaitPay,
|
|
|
95
|
+ PartnerBonusPercent: -1,
|
|
|
96
|
+ GoodCompute: GoodCompute{
|
|
|
97
|
+ UsePartnerBonus: -1,
|
|
|
98
|
+ UseAmount: -1,
|
|
|
99
|
+ },
|
|
|
100
|
+ CurrentBonusStatus: OrderGoodBonusWaitPay{},
|
|
|
101
|
+ }
|
|
|
102
|
+}
|
|
|
103
|
+
|
90
|
//GetCurrentGoodNumber 获取当前的商品数量
|
104
|
//GetCurrentGoodNumber 获取当前的商品数量
|
91
|
func (good OrderGood) GetCurrentGoodNumber() int {
|
105
|
func (good OrderGood) GetCurrentGoodNumber() int {
|
92
|
if good.UseGoodNumber >= 0 {
|
106
|
if good.UseGoodNumber >= 0 {
|
|
@@ -111,7 +125,7 @@ func (good OrderGood) GetCurrentPartnerBonus() float64 { |
|
@@ -111,7 +125,7 @@ func (good OrderGood) GetCurrentPartnerBonus() float64 { |
111
|
return good.GoodCompute.PlanPartnerBonus
|
125
|
return good.GoodCompute.PlanPartnerBonus
|
112
|
}
|
126
|
}
|
113
|
|
127
|
|
114
|
-//GetCurrentAmount 获取当前的商品合伙人分红
|
128
|
+//ModifyOrderGoodNumber 修改货品数量
|
115
|
func (good *OrderGood) ModifyOrderGoodNumber(number int, orderType int) error {
|
129
|
func (good *OrderGood) ModifyOrderGoodNumber(number int, orderType int) error {
|
116
|
if good.PlanGoodNumber < number {
|
130
|
if good.PlanGoodNumber < number {
|
117
|
return fmt.Errorf("修改数量不能大于初始值:%d", good.PlanGoodNumber)
|
131
|
return fmt.Errorf("修改数量不能大于初始值:%d", good.PlanGoodNumber)
|
|
@@ -120,6 +134,7 @@ func (good *OrderGood) ModifyOrderGoodNumber(number int, orderType int) error { |
|
@@ -120,6 +134,7 @@ func (good *OrderGood) ModifyOrderGoodNumber(number int, orderType int) error { |
120
|
return err
|
134
|
return err
|
121
|
}
|
135
|
}
|
122
|
|
136
|
|
|
|
137
|
+//ModifyPertnerBonusPercent 修改货品的分红比例
|
123
|
func (good *OrderGood) ModifyPertnerBonusPercent(percent float64, orderType int) error {
|
138
|
func (good *OrderGood) ModifyPertnerBonusPercent(percent float64, orderType int) error {
|
124
|
err := good.CurrentBonusStatus.ModifyPertnerBonusPercent(good, percent, orderType)
|
139
|
err := good.CurrentBonusStatus.ModifyPertnerBonusPercent(good, percent, orderType)
|
125
|
return err
|
140
|
return err
|
|
@@ -162,6 +177,7 @@ type OrderGoodBonusHasPay struct{} |
|
@@ -162,6 +177,7 @@ type OrderGoodBonusHasPay struct{} |
162
|
|
177
|
|
163
|
var _ OrderGoodBonusStatus = (*OrderGoodBonusHasPay)(nil)
|
178
|
var _ OrderGoodBonusStatus = (*OrderGoodBonusHasPay)(nil)
|
164
|
|
179
|
|
|
|
180
|
+//WartPayPartnerBonus 货品的支付状态从“待支付”状态变更为“待支付”
|
165
|
func (waitPay OrderGoodBonusWaitPay) WartPayPartnerBonus(good *OrderGood) error {
|
181
|
func (waitPay OrderGoodBonusWaitPay) WartPayPartnerBonus(good *OrderGood) error {
|
166
|
good.GoodCompute.PartnerBonusExpense = 0
|
182
|
good.GoodCompute.PartnerBonusExpense = 0
|
167
|
good.GoodCompute.PartnerBonusHas = 0
|
183
|
good.GoodCompute.PartnerBonusHas = 0
|
|
@@ -178,6 +194,7 @@ func (waitPay OrderGoodBonusWaitPay) WartPayPartnerBonus(good *OrderGood) error |
|
@@ -178,6 +194,7 @@ func (waitPay OrderGoodBonusWaitPay) WartPayPartnerBonus(good *OrderGood) error |
178
|
return nil
|
194
|
return nil
|
179
|
}
|
195
|
}
|
180
|
|
196
|
|
|
|
197
|
+//PayPartnerBonus 货品的支付状态从“待支付”状态变更为“已支付”
|
181
|
func (waitPay OrderGoodBonusWaitPay) PayPartnerBonus(good *OrderGood) error {
|
198
|
func (waitPay OrderGoodBonusWaitPay) PayPartnerBonus(good *OrderGood) error {
|
182
|
//待支付状态转支付时
|
199
|
//待支付状态转支付时
|
183
|
//合伙人已收收分红等于合伙人应收分红(或者调整的)
|
200
|
//合伙人已收收分红等于合伙人应收分红(或者调整的)
|
|
@@ -196,6 +213,7 @@ func (waitPay OrderGoodBonusWaitPay) PayPartnerBonus(good *OrderGood) error { |
|
@@ -196,6 +213,7 @@ func (waitPay OrderGoodBonusWaitPay) PayPartnerBonus(good *OrderGood) error { |
196
|
return nil
|
213
|
return nil
|
197
|
}
|
214
|
}
|
198
|
|
215
|
|
|
|
216
|
+//PayPartnerBonus 货品的支付状态从“已支付”状态变更为“已支付”
|
199
|
func (hasPay OrderGoodBonusHasPay) PayPartnerBonus(good *OrderGood) error {
|
217
|
func (hasPay OrderGoodBonusHasPay) PayPartnerBonus(good *OrderGood) error {
|
200
|
//已支付的值保持不变
|
218
|
//已支付的值保持不变
|
201
|
//未支付的值保持不变
|
219
|
//未支付的值保持不变
|
|
@@ -210,10 +228,12 @@ func (hasPay OrderGoodBonusHasPay) PayPartnerBonus(good *OrderGood) error { |
|
@@ -210,10 +228,12 @@ func (hasPay OrderGoodBonusHasPay) PayPartnerBonus(good *OrderGood) error { |
210
|
return nil
|
228
|
return nil
|
211
|
}
|
229
|
}
|
212
|
|
230
|
|
|
|
231
|
+//WartPayPartnerBonus 货品的支付状态从“已支付”状态变更为“待支付”
|
213
|
func (hasPay OrderGoodBonusHasPay) WartPayPartnerBonus(good *OrderGood) error {
|
232
|
func (hasPay OrderGoodBonusHasPay) WartPayPartnerBonus(good *OrderGood) error {
|
214
|
return errors.New("已支付的货单不能将状态回退为待支付")
|
233
|
return errors.New("已支付的货单不能将状态回退为待支付")
|
215
|
}
|
234
|
}
|
216
|
|
235
|
|
|
|
236
|
+//ModifyOrderGoodNumber 货品的支付状态为“已支付”状态变时,修改货品数量
|
217
|
func (hasPay OrderGoodBonusHasPay) ModifyOrderGoodNumber(good *OrderGood, number int, orderType int) error {
|
237
|
func (hasPay OrderGoodBonusHasPay) ModifyOrderGoodNumber(good *OrderGood, number int, orderType int) error {
|
218
|
//规则描述:
|
238
|
//规则描述:
|
219
|
//实际自建订单(orderType==1),已支付分红状态下“可以”修改货品数量
|
239
|
//实际自建订单(orderType==1),已支付分红状态下“可以”修改货品数量
|
|
@@ -233,6 +253,7 @@ func (hasPay OrderGoodBonusHasPay) ModifyOrderGoodNumber(good *OrderGood, number |
|
@@ -233,6 +253,7 @@ func (hasPay OrderGoodBonusHasPay) ModifyOrderGoodNumber(good *OrderGood, number |
233
|
return nil
|
253
|
return nil
|
234
|
}
|
254
|
}
|
235
|
|
255
|
|
|
|
256
|
+//ModifyOrderGoodNumber 货品的支付状态为“待支付”状态变时,修改货品数量
|
236
|
func (waitPay OrderGoodBonusWaitPay) ModifyOrderGoodNumber(good *OrderGood, number int, orderType int) error {
|
257
|
func (waitPay OrderGoodBonusWaitPay) ModifyOrderGoodNumber(good *OrderGood, number int, orderType int) error {
|
237
|
//规则描述:
|
258
|
//规则描述:
|
238
|
//实际自建订单(orderType==1),未支付分红状态下“可以”修改货品数量
|
259
|
//实际自建订单(orderType==1),未支付分红状态下“可以”修改货品数量
|
|
@@ -247,6 +268,7 @@ func (waitPay OrderGoodBonusWaitPay) ModifyOrderGoodNumber(good *OrderGood, numb |
|
@@ -247,6 +268,7 @@ func (waitPay OrderGoodBonusWaitPay) ModifyOrderGoodNumber(good *OrderGood, numb |
247
|
return nil
|
268
|
return nil
|
248
|
}
|
269
|
}
|
249
|
|
270
|
|
|
|
271
|
+//ModifyPertnerBonusPercent 货品的支付状态为“待支付”状态变时,修改货品合伙人分红比例
|
250
|
func (waitPay OrderGoodBonusWaitPay) ModifyPertnerBonusPercent(good *OrderGood, percent float64, orderType int) error {
|
272
|
func (waitPay OrderGoodBonusWaitPay) ModifyPertnerBonusPercent(good *OrderGood, percent float64, orderType int) error {
|
251
|
//规则描述:
|
273
|
//规则描述:
|
252
|
//实际自建订单(orderType==1),未支付分红状态下“不可以”修改合伙人分红比例
|
274
|
//实际自建订单(orderType==1),未支付分红状态下“不可以”修改合伙人分红比例
|
|
@@ -276,20 +298,6 @@ func (hasPay OrderGoodBonusHasPay) ModifyPertnerBonusPercent(good *OrderGood, pe |
|
@@ -276,20 +298,6 @@ func (hasPay OrderGoodBonusHasPay) ModifyPertnerBonusPercent(good *OrderGood, pe |
276
|
return errors.New("已支付分红的货品订单,不能修改合伙人分红比例")
|
298
|
return errors.New("已支付分红的货品订单,不能修改合伙人分红比例")
|
277
|
}
|
299
|
}
|
278
|
|
300
|
|
279
|
-//NewOrderGood 初始值设定
|
|
|
280
|
-func NewOrderGood() OrderGood {
|
|
|
281
|
- return OrderGood{
|
|
|
282
|
- UseGoodNumber: -1,
|
|
|
283
|
- BonusStatus: OrderGoodWaitPay,
|
|
|
284
|
- PartnerBonusPercent: -1,
|
|
|
285
|
- GoodCompute: GoodCompute{
|
|
|
286
|
- UsePartnerBonus: -1,
|
|
|
287
|
- UseAmount: -1,
|
|
|
288
|
- },
|
|
|
289
|
- CurrentBonusStatus: OrderGoodBonusWaitPay{},
|
|
|
290
|
- }
|
|
|
291
|
-}
|
|
|
292
|
-
|
|
|
293
|
//Compute 数据汇总核算
|
301
|
//Compute 数据汇总核算
|
294
|
func (good *OrderGood) Compute() error {
|
302
|
func (good *OrderGood) Compute() error {
|
295
|
//计算预计货品总值
|
303
|
//计算预计货品总值
|
|
@@ -299,15 +307,17 @@ func (good *OrderGood) Compute() error { |
|
@@ -299,15 +307,17 @@ func (good *OrderGood) Compute() error { |
299
|
if good.PlanGoodNumber < 0 {
|
307
|
if good.PlanGoodNumber < 0 {
|
300
|
planGoodNumber = 0
|
308
|
planGoodNumber = 0
|
301
|
}
|
309
|
}
|
302
|
- planamount := price.Mul(decimal.NewFromInt(int64(planGoodNumber))) //price*planGoodNumber
|
310
|
+ //计算预计货品总值(planamount), 货品单价*预计货品数量(price*planGoodNumber)
|
|
|
311
|
+ planamount := price.Mul(decimal.NewFromInt(int64(planGoodNumber)))
|
303
|
var partnerBonusPercent float64
|
312
|
var partnerBonusPercent float64
|
304
|
if good.PartnerBonusPercent < 0 {
|
313
|
if good.PartnerBonusPercent < 0 {
|
305
|
partnerBonusPercent = 0
|
314
|
partnerBonusPercent = 0
|
306
|
} else {
|
315
|
} else {
|
307
|
partnerBonusPercent = good.PartnerBonusPercent
|
316
|
partnerBonusPercent = good.PartnerBonusPercent
|
308
|
}
|
317
|
}
|
309
|
- //price*useGoodNumber
|
318
|
+ //计算预计合伙人分红(planPartnerBonus), 预计货品总值*合伙人分成比例/100(planamount*partnerBonusPercent/100)
|
310
|
planPartnerBonus := planamount.Mul(decimal.NewFromFloat(partnerBonusPercent)).Div(decimal.NewFromInt(100)) //price*planGoodNumber*PartnerBonusPercent
|
319
|
planPartnerBonus := planamount.Mul(decimal.NewFromFloat(partnerBonusPercent)).Div(decimal.NewFromInt(100)) //price*planGoodNumber*PartnerBonusPercent
|
|
|
320
|
+ //货品预计总值
|
311
|
good.GoodCompute.PlanAmount, _ = planamount.Round(2).BigFloat().Float64()
|
321
|
good.GoodCompute.PlanAmount, _ = planamount.Round(2).BigFloat().Float64()
|
312
|
good.GoodCompute.PlanPartnerBonus, _ = planPartnerBonus.Round(2).BigFloat().Float64()
|
322
|
good.GoodCompute.PlanPartnerBonus, _ = planPartnerBonus.Round(2).BigFloat().Float64()
|
313
|
if good.UseGoodNumber < 0 {
|
323
|
if good.UseGoodNumber < 0 {
|
|
@@ -316,8 +326,8 @@ func (good *OrderGood) Compute() error { |
|
@@ -316,8 +326,8 @@ func (good *OrderGood) Compute() error { |
316
|
good.GoodCompute.UseAmount = -1
|
326
|
good.GoodCompute.UseAmount = -1
|
317
|
} else {
|
327
|
} else {
|
318
|
//计算调整后的货品总值
|
328
|
//计算调整后的货品总值
|
319
|
- //计算调整后的合伙人分红
|
|
|
320
|
- useamount := price.Mul(decimal.NewFromInt(int64(good.UseGoodNumber))) //price*useGoodNumber/price*useGoodNumber
|
329
|
+ useamount := price.Mul(decimal.NewFromInt(int64(good.UseGoodNumber)))
|
|
|
330
|
+ //计算调整后的合伙人分红 //price*useGoodNumber/price*useGoodNumber
|
321
|
usePartnerBonus := useamount.Mul(decimal.NewFromFloat(partnerBonusPercent)).Div(decimal.NewFromInt(100)) //price*useGoodNumber*PartnerBonusPercent
|
331
|
usePartnerBonus := useamount.Mul(decimal.NewFromFloat(partnerBonusPercent)).Div(decimal.NewFromInt(100)) //price*useGoodNumber*PartnerBonusPercent
|
322
|
good.GoodCompute.UsePartnerBonus, _ = usePartnerBonus.Round(2).BigFloat().Float64()
|
332
|
good.GoodCompute.UsePartnerBonus, _ = usePartnerBonus.Round(2).BigFloat().Float64()
|
323
|
good.GoodCompute.UseAmount, _ = useamount.Round(2).BigFloat().Float64()
|
333
|
good.GoodCompute.UseAmount, _ = useamount.Round(2).BigFloat().Float64()
|