package cn.palmte.work.model;

import cn.palmte.work.bean.ApproveStatusEnum;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 项目预算中的概算信息
 * @author Yuanping Zhang
 */
@Entity
@Table(name = "project_budget")
public class ProjectBudget {
    public static final int STATUS_ESTIMATE = 1;
    public static final int STATUS_BUDGET = 5;
    public static final int STATUS_SETTLE = 10;
    public static final int STATUS_FINAL = 15;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @GenericGenerator(name = "persistenceGenerator", strategy = "increment")
    private int id;
    /**
     * 关联项目id
     */
    @Column(name = "project_id")
    private int projectId;
    /**
     * 项目编号
     */
    @Column(name = "project_no_budget")
    private String projectNoBudget;
    /**
     * 项目名称
     */
    @Column(name = "name_budget")
    private String nameBudget;
    /**
     * 合同名称
     */
    @Column(name = "contract_budget")
    private String contractBudget;
    /**
     * 项目类型：1工程集成类、2设备集成类、3战略合作类
     */
    @Column(name = "type_budget")
    private int typeBudget;

    @Column(name = "type_desc_budget")
    private String typeDescBudget;

    /**
     * 项目部门id
     */
    @Column(name = "dept_id_budget")
    private int deptIdBudget;

    @Column(name = "dept_name_budget")
    private String deptNameBudget;
    /**
     * 项目开始时间，精确到月
     */
    @Column(name = "start_date_budget")
    @Temporal(TemporalType.TIMESTAMP)
    private Date startDateBudget;
    /**
     * 项目结束时间，精确到月
     */
    @Column(name = "end_date_budget")
    @Temporal(TemporalType.TIMESTAMP)
    private Date endDateBudget;
    /**
     * 垫资模式：1A类-不垫资（战略合作），2B类-不垫资（背靠背），3C类-垫资（账期覆盖），4D类-垫资（账期不覆盖）
     */
    @Column(name = "underwritten_mode_budget")
    private int underwrittenModeBudget;
    /**
     * 合作对象
     */
    @Column(name = "collaborator_budget")
    private String collaboratorBudget;
    /**
     * 合作对象url
     */
    @Column(name = "collaborator_url_budget")
    private String collaboratorUrlBudget;
    /**
     * 客户名称
     */
    @Column(name = "customer_budget")
    private String customerBudget;
    /**
     * 最终用户名称
     */
    @Column(name = "terminal_customer_budget")
    private String terminalCustomerBudget;
    /**
     * 垫资利息（元为单位）
     */
    @Column(name = "advance_interest_amount_budget")
    private BigDecimal advanceInterestAmountBudget;
    /**
     * 垫资峰值
     */
    @Column(name = "advance_peak_amount_budget")
    private BigDecimal advancePeakAmountBudget;
    /**
     * 合同金额
     */
    @Column(name = "contract_amount_budget")
    private BigDecimal contractAmountBudget;
    /**
     * 行业场景应用
     */
    @Column(name = "industry_scene_budget")
    private Integer industrySceneBudget;
    /**
     * 行业场景应用
     */
    @Column(name = "industry_scenario_budget")
    private String industryScenarioBudget;
    /**
     *华智产品金额
     */
    @Column(name = "huazhi_product_amount_budget")
    private BigDecimal huazhiProductAmountBudget;
    /**
     *其他产品金额
     */
    @Column(name = "ziguang_other_amount_budget")
    private BigDecimal ziguangOtherAmountBudget;
    /**
     * 主合同收款条款
     */
    @Column(name = "main_contract_collection_terms_budget")
    private String mainContractCollectionTermsBudget;
    /**
     * 价值及风险
     */
    @Column(name = "value_risk_budget")
    private String valueRiskBudget;

    @Column(name = "underwritten_mode_str_budget")
    private String underwrittenModeStrBudget;

    @Column(name = "cooperate_type_budget")
    private Integer cooperateTypeBudget;

    @Column(name = "cooperate_type_str_budget")
    private String cooperateTypeStrBudget;

    @Column(name = "certainty_budget")
    private Integer certaintyBudget;

    @Column(name = "certainty_str_budget")
    private String certaintyStrBudget;

    @Column(name = "gross_profit_budget")
    private BigDecimal grossProfitBudget;

    @Column(name = "gross_profit_margin_budget")
    private BigDecimal grossProfitMarginBudget;

    @Column(name = "huizhi_product_amount_budget")
    private BigDecimal huizhiProductAmountBudget;

    @Column(name = "huasan_product_amount_budget")
    private BigDecimal huasanProductAmountBudget;

    @Column(name = "principal_budget")
    private String principalBudget;

    @Column(name = "contract_time_budget")
    private Date contractTimeBudget;

    @Column(name = "bids_time_budget")
    private Date bidsTimeBudget;

    @Column(name = "is_second_budget")
    private Integer isSecondBudget;

    @Column(name = "is_second_str_budget")
    private String isSecondStrBudget;

    @Column(name = "sign_type_budget")
    private Integer signTypeBudget;

    @Column(name = "sign_type_str_budget")
    private String signTypeStrBudget;

    @Column(name = "resolve_plan_budget")
    private Integer resolvePlanBudget;

    @Column(name = "resolve_plan_str_budget")
    private String resolvePlanStrBudget;

    @Column(name = "main_contract_resolve_plan_budget")
    private String mainContractResolvePlanBudget;

    @Column(name = "calculation_collection_budget")
    private String calculationCollectionBudget;

    @Transient
    private String contractRoundBudget;

    @Transient
    private String huazhiRoundBudget;

    @Transient
    private String ziguangRoundBudget;

    @Transient
    private String huizhiRoundBudget;

    @Transient
    private String huasanRoundBudget;

    @Transient
    private String grossProfitRoundBudget;

    @Transient
    private String grossProfitMarginRoundBudget;

    @Transient
    private String advanceInterestAmountRoundBudget;

    @Transient
    private String advancePeakAmountRoundBudget;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getProjectId() {
        return projectId;
    }

    public void setProjectId(int projectId) {
        this.projectId = projectId;
    }

    public String getProjectNoBudget() {
        return projectNoBudget;
    }

    public void setProjectNoBudget(String projectNoBudget) {
        this.projectNoBudget = projectNoBudget;
    }

    public String getNameBudget() {
        return nameBudget;
    }

    public void setNameBudget(String nameBudget) {
        this.nameBudget = nameBudget;
    }

    public String getContractBudget() {
        return contractBudget;
    }

    public void setContractBudget(String contractBudget) {
        this.contractBudget = contractBudget;
    }

    public int getTypeBudget() {
        return typeBudget;
    }

    public void setTypeBudget(int typeBudget) {
        this.typeBudget = typeBudget;
    }

    public String getTypeDescBudget() {
        return typeDescBudget;
    }

    public void setTypeDescBudget(String typeDescBudget) {
        this.typeDescBudget = typeDescBudget;
    }

    public int getDeptIdBudget() {
        return deptIdBudget;
    }

    public void setDeptIdBudget(int deptIdBudget) {
        this.deptIdBudget = deptIdBudget;
    }

    public String getDeptNameBudget() {
        return deptNameBudget;
    }

    public void setDeptNameBudget(String deptNameBudget) {
        this.deptNameBudget = deptNameBudget;
    }

    public Date getStartDateBudget() {
        return startDateBudget;
    }

    public void setStartDateBudget(Date startDateBudget) {
        this.startDateBudget = startDateBudget;
    }

    public Date getEndDateBudget() {
        return endDateBudget;
    }

    public void setEndDateBudget(Date endDateBudget) {
        this.endDateBudget = endDateBudget;
    }

    public int getUnderwrittenModeBudget() {
        return underwrittenModeBudget;
    }

    public void setUnderwrittenModeBudget(int underwrittenModeBudget) {
        this.underwrittenModeBudget = underwrittenModeBudget;
    }

    public String getCollaboratorBudget() {
        return collaboratorBudget;
    }

    public void setCollaboratorBudget(String collaboratorBudget) {
        this.collaboratorBudget = collaboratorBudget;
    }

    public String getCollaboratorUrlBudget() {
        return collaboratorUrlBudget;
    }

    public void setCollaboratorUrlBudget(String collaboratorUrlBudget) {
        this.collaboratorUrlBudget = collaboratorUrlBudget;
    }

    public String getCustomerBudget() {
        return customerBudget;
    }

    public void setCustomerBudget(String customerBudget) {
        this.customerBudget = customerBudget;
    }

    public String getTerminalCustomerBudget() {
        return terminalCustomerBudget;
    }

    public void setTerminalCustomerBudget(String terminalCustomerBudget) {
        this.terminalCustomerBudget = terminalCustomerBudget;
    }

    public BigDecimal getAdvanceInterestAmountBudget() {
        return advanceInterestAmountBudget;
    }

    public void setAdvanceInterestAmountBudget(BigDecimal advanceInterestAmountBudget) {
        this.advanceInterestAmountBudget = advanceInterestAmountBudget;
    }

    public BigDecimal getAdvancePeakAmountBudget() {
        return advancePeakAmountBudget;
    }

    public void setAdvancePeakAmountBudget(BigDecimal advancePeakAmountBudget) {
        this.advancePeakAmountBudget = advancePeakAmountBudget;
    }

    public BigDecimal getContractAmountBudget() {
        return contractAmountBudget;
    }

    public void setContractAmountBudget(BigDecimal contractAmountBudget) {
        this.contractAmountBudget = contractAmountBudget;
    }

    public Integer getIndustrySceneBudget() {
        return industrySceneBudget;
    }

    public void setIndustrySceneBudget(Integer industrySceneBudget) {
        this.industrySceneBudget = industrySceneBudget;
    }

    public String getIndustryScenarioBudget() {
        return industryScenarioBudget;
    }

    public void setIndustryScenarioBudget(String industryScenarioBudget) {
        this.industryScenarioBudget = industryScenarioBudget;
    }

    public BigDecimal getHuazhiProductAmountBudget() {
        return huazhiProductAmountBudget;
    }

    public void setHuazhiProductAmountBudget(BigDecimal huazhiProductAmountBudget) {
        this.huazhiProductAmountBudget = huazhiProductAmountBudget;
    }

    public BigDecimal getZiguangOtherAmountBudget() {
        return ziguangOtherAmountBudget;
    }

    public void setZiguangOtherAmountBudget(BigDecimal ziguangOtherAmountBudget) {
        this.ziguangOtherAmountBudget = ziguangOtherAmountBudget;
    }

    public String getMainContractCollectionTermsBudget() {
        return mainContractCollectionTermsBudget;
    }

    public void setMainContractCollectionTermsBudget(String mainContractCollectionTermsBudget) {
        this.mainContractCollectionTermsBudget = mainContractCollectionTermsBudget;
    }

    public String getValueRiskBudget() {
        return valueRiskBudget;
    }

    public void setValueRiskBudget(String valueRiskBudget) {
        this.valueRiskBudget = valueRiskBudget;
    }

    public String getUnderwrittenModeStrBudget() {
        return underwrittenModeStrBudget;
    }

    public void setUnderwrittenModeStrBudget(String underwrittenModeStrBudget) {
        this.underwrittenModeStrBudget = underwrittenModeStrBudget;
    }

    public Integer getCooperateTypeBudget() {
        return cooperateTypeBudget;
    }

    public void setCooperateTypeBudget(Integer cooperateTypeBudget) {
        this.cooperateTypeBudget = cooperateTypeBudget;
    }

    public String getCooperateTypeStrBudget() {
        return cooperateTypeStrBudget;
    }

    public void setCooperateTypeStrBudget(String cooperateTypeStrBudget) {
        this.cooperateTypeStrBudget = cooperateTypeStrBudget;
    }

    public Integer getCertaintyBudget() {
        return certaintyBudget;
    }

    public void setCertaintyBudget(Integer certaintyBudget) {
        this.certaintyBudget = certaintyBudget;
    }

    public String getCertaintyStrBudget() {
        return certaintyStrBudget;
    }

    public void setCertaintyStrBudget(String certaintyStrBudget) {
        this.certaintyStrBudget = certaintyStrBudget;
    }

    public BigDecimal getGrossProfitBudget() {
        return grossProfitBudget;
    }

    public void setGrossProfitBudget(BigDecimal grossProfitBudget) {
        this.grossProfitBudget = grossProfitBudget;
    }

    public BigDecimal getGrossProfitMarginBudget() {
        return grossProfitMarginBudget;
    }

    public void setGrossProfitMarginBudget(BigDecimal grossProfitMarginBudget) {
        this.grossProfitMarginBudget = grossProfitMarginBudget;
    }

    public BigDecimal getHuizhiProductAmountBudget() {
        return huizhiProductAmountBudget;
    }

    public void setHuizhiProductAmountBudget(BigDecimal huizhiProductAmountBudget) {
        this.huizhiProductAmountBudget = huizhiProductAmountBudget;
    }

    public BigDecimal getHuasanProductAmountBudget() {
        return huasanProductAmountBudget;
    }

    public void setHuasanProductAmountBudget(BigDecimal huasanProductAmountBudget) {
        this.huasanProductAmountBudget = huasanProductAmountBudget;
    }

    public String getPrincipalBudget() {
        return principalBudget;
    }

    public void setPrincipalBudget(String principalBudget) {
        this.principalBudget = principalBudget;
    }

    public Date getContractTimeBudget() {
        return contractTimeBudget;
    }

    public void setContractTimeBudget(Date contractTimeBudget) {
        this.contractTimeBudget = contractTimeBudget;
    }

    public Date getBidsTimeBudget() {
        return bidsTimeBudget;
    }

    public void setBidsTimeBudget(Date bidsTimeBudget) {
        this.bidsTimeBudget = bidsTimeBudget;
    }

    public Integer getIsSecondBudget() {
        return isSecondBudget;
    }

    public void setIsSecondBudget(Integer isSecondBudget) {
        this.isSecondBudget = isSecondBudget;
    }

    public String getIsSecondStrBudget() {
        return isSecondStrBudget;
    }

    public void setIsSecondStrBudget(String isSecondStrBudget) {
        this.isSecondStrBudget = isSecondStrBudget;
    }

    public Integer getSignTypeBudget() {
        return signTypeBudget;
    }

    public void setSignTypeBudget(Integer signTypeBudget) {
        this.signTypeBudget = signTypeBudget;
    }

    public String getSignTypeStrBudget() {
        return signTypeStrBudget;
    }

    public void setSignTypeStrBudget(String signTypeStrBudget) {
        this.signTypeStrBudget = signTypeStrBudget;
    }

    public Integer getResolvePlanBudget() {
        return resolvePlanBudget;
    }

    public void setResolvePlanBudget(Integer resolvePlanBudget) {
        this.resolvePlanBudget = resolvePlanBudget;
    }

    public String getResolvePlanStrBudget() {
        return resolvePlanStrBudget;
    }

    public void setResolvePlanStrBudget(String resolvePlanStrBudget) {
        this.resolvePlanStrBudget = resolvePlanStrBudget;
    }

    public String getMainContractResolvePlanBudget() {
        return mainContractResolvePlanBudget;
    }

    public void setMainContractResolvePlanBudget(String mainContractResolvePlanBudget) {
        this.mainContractResolvePlanBudget = mainContractResolvePlanBudget;
    }

    public String getCalculationCollectionBudget() {
        return calculationCollectionBudget;
    }

    public void setCalculationCollectionBudget(String calculationCollectionBudget) {
        this.calculationCollectionBudget = calculationCollectionBudget;
    }

    public String getContractRoundBudget() {
        return contractRoundBudget;
    }

    public void setContractRoundBudget(String contractRoundBudget) {
        this.contractRoundBudget = contractRoundBudget;
    }

    public String getHuazhiRoundBudget() {
        return huazhiRoundBudget;
    }

    public void setHuazhiRoundBudget(String huazhiRoundBudget) {
        this.huazhiRoundBudget = huazhiRoundBudget;
    }

    public String getZiguangRoundBudget() {
        return ziguangRoundBudget;
    }

    public void setZiguangRoundBudget(String ziguangRoundBudget) {
        this.ziguangRoundBudget = ziguangRoundBudget;
    }

    public String getHuizhiRoundBudget() {
        return huizhiRoundBudget;
    }

    public void setHuizhiRoundBudget(String huizhiRoundBudget) {
        this.huizhiRoundBudget = huizhiRoundBudget;
    }

    public String getHuasanRoundBudget() {
        return huasanRoundBudget;
    }

    public void setHuasanRoundBudget(String huasanRoundBudget) {
        this.huasanRoundBudget = huasanRoundBudget;
    }

    public String getGrossProfitRoundBudget() {
        return grossProfitRoundBudget;
    }

    public void setGrossProfitRoundBudget(String grossProfitRoundBudget) {
        this.grossProfitRoundBudget = grossProfitRoundBudget;
    }

    public String getGrossProfitMarginRoundBudget() {
        return grossProfitMarginRoundBudget;
    }

    public void setGrossProfitMarginRoundBudget(String grossProfitMarginRoundBudget) {
        this.grossProfitMarginRoundBudget = grossProfitMarginRoundBudget;
    }

    public String getAdvanceInterestAmountRoundBudget() {
        return advanceInterestAmountRoundBudget;
    }

    public void setAdvanceInterestAmountRoundBudget(String advanceInterestAmountRoundBudget) {
        this.advanceInterestAmountRoundBudget = advanceInterestAmountRoundBudget;
    }

    public String getAdvancePeakAmountRoundBudget() {
        return advancePeakAmountRoundBudget;
    }

    public void setAdvancePeakAmountRoundBudget(String advancePeakAmountRoundBudget) {
        this.advancePeakAmountRoundBudget = advancePeakAmountRoundBudget;
    }
}
