Ejemplo n.º 1
0
 private static Contract_DivideType[] getdividetypelist()
 {
     if (typelist.Length == 0)
     {
         typelist = Contract_DivideType.GetContract_DivideTypes().ToArray();
     }
     return(typelist);
 }
Ejemplo n.º 2
0
        public static decimal calculate_cost(int ID, decimal SellCost, string DivideType)
        {
            if (totalcostdic.ContainsKey(ID))
            {
                return(totalcostdic[ID]);
            }
            if (SellCost <= 0)
            {
                return(0);
            }
            Contract_DivideType[] mytypelist = new Contract_DivideType[] { };
            if (typedic.ContainsKey(ID))
            {
                mytypelist = typedic[ID];
            }
            else
            {
                mytypelist = getdividetypelist().Where(p => p.Contract_DivideID == ID).ToArray();
                typedic.Add(ID, mytypelist);
            }
            if (mytypelist.Length == 0)
            {
                return(0);
            }
            decimal cost = 0;

            if (DivideType.Equals(Utility.EnumModel.ContractDivideTypeDefine.fixedpercent.ToString()))
            {
                var mytype = mytypelist.FirstOrDefault(p => p.DivideType.Equals(DivideType));
                if (mytype == null)
                {
                    return(0);
                }
                if (mytype.Divide_Percent <= 0)
                {
                    return(0);
                }
                cost = SellCost * mytype.Divide_Percent / 100;
            }
            else if (DivideType.Equals(Utility.EnumModel.ContractDivideTypeDefine.jietipercent.ToString()))
            {
                var mytypes = mytypelist.Where(p => p.DivideType.Equals(DivideType)).OrderBy(p => p.DivideStartCost).ToArray();
                foreach (var item in mytypes)
                {
                    if (item.DivideEndCost < item.DivideStartCost)
                    {
                        continue;
                    }
                    if (item.DivideEndCost <= SellCost)
                    {
                        cost += (item.DivideEndCost - item.DivideStartCost) * item.Divide_Percent / 100;
                    }
                }
            }
            totalcostdic.Add(ID, cost);
            return(cost);
        }