*/
public class SalaryStandard {
/** 管理的工資 */
private double ManagedPayroll;
/** 銷售的工資 */
private double SalesWage;
/** 技術的工資 */
private double TechnicalSalary;
/** 行政的工資 */
private double ExecutivePay;
/** 公司總利潤 */
@SuppressWarnings("unused")
private double GrossProfitOfCompany;
/** 回款獎勵 */
private double CashReward;
/** 業務利潤提成 */
private double BusinessProfitRoyalty;
/** 技術人員加班提成 */
private double OvertimePay;
/**
- 技術人員加班費 day 加班的天數 level 技術人員級別
*/
private double OPay(int day, int level) {
if (day != 0) {
switch (level) {
case 1:
this.OvertimePay = day * 150;
break;
case 2:
this.OvertimePay = day * 100;
break;
case 3:
this.OvertimePay = day * 50;
}
} else {
this.OvertimePay = 0;
}
return this.OvertimePay;
}
/**
- 回款規則 .NoOfDay :為回款的天數
*/
private double PaymentRules(int NoOfDay, double BProfit) {
if (NoOfDay < 30) {
this.CashReward = 0.005 * BProfit;
} else if (NoOfDay >= 30 && NoOfDay < 45) {
this.CashReward = 0.002 * BProfit;
} else if (NoOfDay >= 60) {
this.CashReward = -0.002 * BProfit;
}
return this.CashReward;
}
/**
- 業務利潤提成 .BProfit 業務所得利潤
*/
private double Commission(double BProfit) {
if (BProfit <= 1000000) {
this.BusinessProfitRoyalty = 0.02 * BProfit;
} else if (BProfit > 1000000 && BProfit <= 5000000) {
this.BusinessProfitRoyalty = 0.035 * BProfit;
} else if (BProfit > 5000000) {
this.BusinessProfitRoyalty = 0.055 * BProfit;
}
return this.BusinessProfitRoyalty;
}
/**
- 部門經理的工資標准
-
- GrossProfitOfCompany 公司利潤
-
- ManagerNum 經理人數
- 既1級部門有幾個部門經理,2級部門有幾個部門經理,3級部門有幾個部門經理
*/
public double ManagerSalary(int level, double GrossProfitOfCompany , int ManagerNum) {
switch (level) {
case 1:
this.ManagedPayroll = 9000 * 12 + GrossProfitOfCompany * 0.04 / 3 / ManagerNum;
break;
case 2:
this.ManagedPayroll = 8000 * 12 + GrossProfitOfCompany * 0.04 / 3 / ManagerNum;
break;
case 3:
this.ManagedPayroll = 7000 * 12 + GrossProfitOfCompany * 0.04 / 3 / ManagerNum;
}
return this.ManagedPayroll;
}
/**
- 銷售部人員的工資標准 .分級別: 1級為銷售部副經理, 2級為銷售部員工, 3級為銷售部試用期員工 NoOfDay 回款天數 BProfit
- 業務所得利潤
*/
public double SalesSalary(int level, int NoOfDay, double BProfit) {
if (level == 3) {
this.SalesWage = 2000 + this.PaymentRules(NoOfDay, BProfit)
+ this.Commission(BProfit);
} else {
switch (level) {
case 1:
this.SalesWage = 3000 + this.PaymentRules(NoOfDay, BProfit)
+ this.Commission(BProfit);
break;
case 2:
this.SalesWage = 2200 + this.PaymentRules(NoOfDay, BProfit)
+ this.Commission(BProfit);
}
}
return this.SalesWage;
}
/**
-
技術人員工資標准 level 技術人員級別:1級為高級工程師 ,2級為中級工程師 , 3級為初級技術人員 day 加工天數
*/
public double engineer(int level, int day) {
switch (level) {
case 1:
this.TechnicalSalary = 15000 + this.OPay(day, level);
break;
case 2:
this.TechnicalSalary = 10000 + this.OPay(day, level);
break;
case 3:
this.TechnicalSalary = 5000 + this.OPay(day, level);
}
return this.TechnicalSalary;
}
/**
- 行政人員工資標准
-
- level 行政人員等級
- 1級為行政副經理,2級為行政人員,3為試用期人員
*
*/
public double AdminiSalary( int level ){
switch(level){
case 1:
this.ExecutivePay = 2300;
case 2:
this.ExecutivePay = 2000;
case 3:
this.ExecutivePay = 2000 * 0.8;
}
return this.ExecutivePay;
}