package com.aps.macroplanner.output.dto;

/**
 * 销售需求满足结果 — 对应 Quintiq 中 LeafSalesDemandInPeriod 的回写数据。
 *
 * <p>每个销售需求在每个周期的满足量、缺口、优先级等。</p>
 */
public class SalesDemandResult {

    private String salesDemandId;
    private String productId;
    private String spId;
    private int periodIndex;
    private String periodStartDate;

    /** 需求量 */
    private double demandQty;
    /** 满足量 (SalesDemandQty) */
    private double fulfilledQty;
    /** 未满足量 = demandQty - fulfilledQty */
    private double unmetQty;
    /** 需求松弛 (DemandSlack, 防止不可行) */
    private double demandSlack;
    /** 满足率 = fulfilledQty / demandQty */
    private double fulfillmentRate;
    /** 优先级 */
    private double priority;

    // ==================== Getters / Setters ====================

    public String getSalesDemandId() { return salesDemandId; }
    public void setSalesDemandId(String v) { this.salesDemandId = v; }

    public String getProductId() { return productId; }
    public void setProductId(String v) { this.productId = v; }

    public String getSpId() { return spId; }
    public void setSpId(String v) { this.spId = v; }

    public int getPeriodIndex() { return periodIndex; }
    public void setPeriodIndex(int v) { this.periodIndex = v; }

    public String getPeriodStartDate() { return periodStartDate; }
    public void setPeriodStartDate(String v) { this.periodStartDate = v; }

    public double getDemandQty() { return demandQty; }
    public void setDemandQty(double v) { this.demandQty = v; }

    public double getFulfilledQty() { return fulfilledQty; }
    public void setFulfilledQty(double v) { this.fulfilledQty = v; }

    public double getUnmetQty() { return unmetQty; }
    public void setUnmetQty(double v) { this.unmetQty = v; }

    public double getDemandSlack() { return demandSlack; }
    public void setDemandSlack(double v) { this.demandSlack = v; }

    public double getFulfillmentRate() { return fulfillmentRate; }
    public void setFulfillmentRate(double v) { this.fulfillmentRate = v; }

    public double getPriority() { return priority; }
    public void setPriority(double v) { this.priority = v; }
}