1
This commit is contained in:
@@ -173,6 +173,10 @@ public class JDOrder extends BaseEntity {
|
|||||||
/** 利润是否手动锁定(1 是:保存时不再自动重算) */
|
/** 利润是否手动锁定(1 是:保存时不再自动重算) */
|
||||||
private Integer profitManual;
|
private Integer profitManual;
|
||||||
|
|
||||||
|
/** 额外成本(计入自动利润:从 netReceipt − 成本中再减去此项,默认 0) */
|
||||||
|
@Excel(name = "额外成本")
|
||||||
|
private Double extraCost;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public class JDOrderProfitServiceImpl implements IJDOrderProfitService {
|
|||||||
|
|
||||||
if ("H-TF".equals(mark)) {
|
if ("H-TF".equals(mark)) {
|
||||||
if (!profitLocked) {
|
if (!profitLocked) {
|
||||||
// 与 F 单一致:利润 = 对客实收 − (下单付款 − 后返)。列表未填售价时默认直款并从型号配置取价。
|
// 与 F 单一致:利润 = 对客实收 − (下单付款 − 后返) − 额外成本。列表未填售价时默认直款并从型号配置取价。
|
||||||
String type = order.getSellingPriceType();
|
String type = order.getSellingPriceType();
|
||||||
if (type == null || type.isEmpty()) {
|
if (type == null || type.isEmpty()) {
|
||||||
order.setSellingPriceType("direct");
|
order.setSellingPriceType("direct");
|
||||||
@@ -61,7 +61,9 @@ public class JDOrderProfitServiceImpl implements IJDOrderProfitService {
|
|||||||
} else {
|
} else {
|
||||||
String buyer = order.getBuyer();
|
String buyer = order.getBuyer();
|
||||||
boolean fan = buyer != null && buyer.trim().startsWith("凡-");
|
boolean fan = buyer != null && buyer.trim().startsWith("凡-");
|
||||||
order.setProfit(fan ? 65.0 : 15.0);
|
double base = fan ? 65.0 : 15.0;
|
||||||
|
order.setProfit(BigDecimal.valueOf(base - extraCostOrZero(order))
|
||||||
|
.setScale(2, RoundingMode.HALF_UP).doubleValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@@ -127,13 +129,19 @@ public class JDOrderProfitServiceImpl implements IJDOrderProfitService {
|
|||||||
order.setProfit(null);
|
order.setProfit(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 成本 = 下单付款 - 后返金额;利润 = 对客实收(直款=售价,闲鱼=扣点后的到账)- 成本
|
// 成本 = 下单付款 - 后返金额;利润 = 对客实收 − 成本 − 额外成本
|
||||||
double cost = BigDecimal.valueOf(pay).subtract(BigDecimal.valueOf(rebate))
|
double cost = BigDecimal.valueOf(pay).subtract(BigDecimal.valueOf(rebate))
|
||||||
.setScale(2, RoundingMode.HALF_UP).doubleValue();
|
.setScale(2, RoundingMode.HALF_UP).doubleValue();
|
||||||
order.setProfit(BigDecimal.valueOf(netReceipt - cost)
|
double net = netReceipt - cost - extraCostOrZero(order);
|
||||||
|
order.setProfit(BigDecimal.valueOf(net)
|
||||||
.setScale(2, RoundingMode.HALF_UP).doubleValue());
|
.setScale(2, RoundingMode.HALF_UP).doubleValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static double extraCostOrZero(JDOrder order) {
|
||||||
|
Double e = order == null ? null : order.getExtraCost();
|
||||||
|
return e != null ? e : 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int syncAutoProfitIfChanged(List<Long> ids) {
|
public int syncAutoProfitIfChanged(List<Long> ids) {
|
||||||
if (ids == null || ids.isEmpty()) {
|
if (ids == null || ids.isEmpty()) {
|
||||||
|
|||||||
@@ -42,6 +42,7 @@
|
|||||||
<result property="profit" column="profit"/>
|
<result property="profit" column="profit"/>
|
||||||
<result property="sellingPriceManual" column="selling_price_manual"/>
|
<result property="sellingPriceManual" column="selling_price_manual"/>
|
||||||
<result property="profitManual" column="profit_manual"/>
|
<result property="profitManual" column="profit_manual"/>
|
||||||
|
<result property="extraCost" column="extra_cost"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectJDOrderBase">
|
<sql id="selectJDOrderBase">
|
||||||
@@ -50,7 +51,7 @@
|
|||||||
is_refunded, refund_date, is_refund_received, refund_received_date, is_rebate_received, rebate_received_date,
|
is_refunded, refund_date, is_refund_received, refund_received_date, is_rebate_received, rebate_received_date,
|
||||||
is_price_protected, price_protected_date, is_invoice_opened, invoice_opened_date, is_review_posted, review_posted_date,
|
is_price_protected, price_protected_date, is_invoice_opened, invoice_opened_date, is_review_posted, review_posted_date,
|
||||||
rebate_remark_json, rebate_remark_has_abnormal,
|
rebate_remark_json, rebate_remark_has_abnormal,
|
||||||
selling_price_type, selling_price, profit, selling_price_manual, profit_manual
|
selling_price_type, selling_price, profit, selling_price_manual, profit_manual, extra_cost
|
||||||
from jd_order
|
from jd_order
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
@@ -174,7 +175,7 @@
|
|||||||
order_id, buyer, order_time, create_time, update_time, status, is_count_enabled, third_party_order_no, jingfen_actual_price,
|
order_id, buyer, order_time, create_time, update_time, status, is_count_enabled, third_party_order_no, jingfen_actual_price,
|
||||||
is_refunded, refund_date, is_refund_received, refund_received_date, is_rebate_received, rebate_received_date,
|
is_refunded, refund_date, is_refund_received, refund_received_date, is_rebate_received, rebate_received_date,
|
||||||
is_price_protected, price_protected_date, is_invoice_opened, invoice_opened_date, is_review_posted, review_posted_date,
|
is_price_protected, price_protected_date, is_invoice_opened, invoice_opened_date, is_review_posted, review_posted_date,
|
||||||
selling_price_type, selling_price, profit, selling_price_manual, profit_manual
|
selling_price_type, selling_price, profit, selling_price_manual, profit_manual, extra_cost
|
||||||
) values (
|
) values (
|
||||||
#{remark}, #{distributionMark}, #{modelNumber}, #{link},
|
#{remark}, #{distributionMark}, #{modelNumber}, #{link},
|
||||||
#{paymentAmount}, #{rebateAmount}, #{address}, #{logisticsLink},
|
#{paymentAmount}, #{rebateAmount}, #{address}, #{logisticsLink},
|
||||||
@@ -182,7 +183,7 @@
|
|||||||
#{orderId}, #{buyer}, #{orderTime}, now(), now(), #{status}, #{isCountEnabled}, #{thirdPartyOrderNo}, #{jingfenActualPrice},
|
#{orderId}, #{buyer}, #{orderTime}, now(), now(), #{status}, #{isCountEnabled}, #{thirdPartyOrderNo}, #{jingfenActualPrice},
|
||||||
#{isRefunded}, #{refundDate}, #{isRefundReceived}, #{refundReceivedDate}, #{isRebateReceived}, #{rebateReceivedDate},
|
#{isRefunded}, #{refundDate}, #{isRefundReceived}, #{refundReceivedDate}, #{isRebateReceived}, #{rebateReceivedDate},
|
||||||
#{isPriceProtected}, #{priceProtectedDate}, #{isInvoiceOpened}, #{invoiceOpenedDate}, #{isReviewPosted}, #{reviewPostedDate},
|
#{isPriceProtected}, #{priceProtectedDate}, #{isInvoiceOpened}, #{invoiceOpenedDate}, #{isReviewPosted}, #{reviewPostedDate},
|
||||||
#{sellingPriceType}, #{sellingPrice}, #{profit}, #{sellingPriceManual}, #{profitManual}
|
#{sellingPriceType}, #{sellingPrice}, #{profit}, #{sellingPriceManual}, #{profitManual}, #{extraCost,jdbcType=DOUBLE}
|
||||||
)
|
)
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
@@ -220,6 +221,7 @@
|
|||||||
<if test="reviewPostedDate != null"> review_posted_date = #{reviewPostedDate},</if>
|
<if test="reviewPostedDate != null"> review_posted_date = #{reviewPostedDate},</if>
|
||||||
<if test="rebateRemarkJson != null"> rebate_remark_json = #{rebateRemarkJson},</if>
|
<if test="rebateRemarkJson != null"> rebate_remark_json = #{rebateRemarkJson},</if>
|
||||||
<if test="rebateRemarkHasAbnormal != null"> rebate_remark_has_abnormal = #{rebateRemarkHasAbnormal},</if>
|
<if test="rebateRemarkHasAbnormal != null"> rebate_remark_has_abnormal = #{rebateRemarkHasAbnormal},</if>
|
||||||
|
<if test="extraCost != null"> extra_cost = #{extraCost},</if>
|
||||||
<if test="params != null and params.applyProfitFields != null and params.applyProfitFields == true">
|
<if test="params != null and params.applyProfitFields != null and params.applyProfitFields == true">
|
||||||
selling_price_type = #{sellingPriceType,jdbcType=VARCHAR},
|
selling_price_type = #{sellingPriceType,jdbcType=VARCHAR},
|
||||||
selling_price = #{sellingPrice,jdbcType=DOUBLE},
|
selling_price = #{sellingPrice,jdbcType=DOUBLE},
|
||||||
|
|||||||
2
sql/jd_order_extra_cost.sql
Normal file
2
sql/jd_order_extra_cost.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
-- JD 订单:额外成本(计入 F/H-TF 自动利润:利润 = 对客实收 − (付款−后返) − extra_cost)
|
||||||
|
ALTER TABLE jd_order ADD COLUMN extra_cost DOUBLE NOT NULL DEFAULT 0 COMMENT '额外成本,手动录入,默认0' AFTER profit_manual;
|
||||||
Reference in New Issue
Block a user