Ejemplo n.º 1
0
 public void TestMethodCanProcessDepretiatin()
 {
     Assert.IsFalse(DataManipulation.CanProcessDepretiatin(new DateTime(2017, 1, 1), new DateTime(2017, 1, 1)));
     Assert.IsFalse(DataManipulation.CanProcessDepretiatin(new DateTime(2017, 2, 1), new DateTime(2017, 1, 1)));
     Assert.IsTrue(DataManipulation.CanProcessDepretiatin(new DateTime(2016, 2, 1), new DateTime(2017, 3, 1)));
     Assert.IsFalse(DataManipulation.CanProcessDepretiatin(new DateTime(2017, 8, 1), new DateTime(2016, 3, 1)));
     Assert.IsTrue(DataManipulation.CanProcessDepretiatin(new DateTime(2017, 8, 1), new DateTime(2017, 9, 1)));
 }
Ejemplo n.º 2
0
        public void CalculatePlanForAssets(DepreciationPlanList depreciationPlanList,
                                           MyDataSet myDataSet,
                                           bool posting)
        {
            foreach (DepreciationPlan depreciationPlan in depreciationPlanList.DepreciationPlans)
            {
                foreach (Asset asset in myDataSet.AssetList)
                {
                    if (DataManipulation.CanProcessDepretiatin(asset.StartUsingDate, new DateTime(depreciationPlan.Year, depreciationPlan.Month, 1)))
                    {
                        DepreciationType depreciationType = myDataSet.DepreciationTypes[asset.DepreciationTypeId];
                        AssetType        assetType        = myDataSet.AssetTypes.Where(at => at.Id == asset.AssetTypeId).FirstOrDefault();
                        decimal          depreciation     = 0;
                        if (assetType.LowValueAsset)
                        {
                            depreciation = asset.InitialValue;
                        }
                        else
                        {
                            depreciation = decimal.Round(asset.InitialValue * ((depreciationType.DepreciationRate / 100) / 12), 2);
                        }

                        if (!myDataSet.DepreciationCharges.ContainsKey(depreciationPlan.Year.ToString() + depreciationPlan.Month.ToString("00") + asset.Id.ToString()) && depreciation != 0)
                        {
                            if (asset.AmortisedValue + depreciation > asset.InitialValue)
                            {
                                depreciation = asset.InitialValue - asset.AmortisedValue;
                            }
                            asset.AmortisedValue += depreciation;
                            //Księgowanie umożenia
                            if (posting && asset.AmortisedValue <= asset.InitialValue && asset.IsUsed && !asset.Depreciated && depreciation != 0)
                            {
                                DepreciationCharge depreciationCharge = new DepreciationCharge();
                                depreciationCharge.Month              = depreciationPlan.Month;
                                depreciationCharge.Year               = depreciationPlan.Year;
                                depreciationCharge.AssetId            = asset.Id;
                                depreciationCharge.CurrentCharge      = depreciation;
                                depreciationCharge.RemainingAmount    = asset.InitialValue - asset.AmortisedValue;
                                depreciationCharge.CumulativelyCharge = asset.AmortisedValue;
                                depreciationCharge.No = db.T_DepreciationCharges.Where(dc => dc.AssetId == asset.Id).ToList().Count + 1;
                                db.T_DepreciationCharges.Add(depreciationCharge);

                                Asset assetForModfy = db.T_Assets.Find(asset.Id);
                                assetForModfy.AmortisedValue += depreciation;
                                if (assetForModfy.AmortisedValue == assetForModfy.InitialValue)
                                {
                                    assetForModfy.Depreciated = true;
                                }

                                db.SaveChanges();
                            }
                        }
                        DepreciationItem depr = new DepreciationItem();
                        depr.AssetName     = asset.AssetName;
                        depr.CurrentCharge = depreciation;
                        if (depreciation != 0)
                        {
                            depreciationPlan.Depreciacions.Add(depr);
                        }
                        depreciationPlan.CurrentCharge          += depreciation;
                        depreciationPlanList.TotalCurrentCharge += depreciation;
                    }
                }
            }
        }