Beispiel #1
0
        private void UpdateCreditorAccount(BankExpenditureNoteModel model, IdentityService identityService)
        {
            List <CreditorAccountViewModel> postedData = new List <CreditorAccountViewModel>();

            foreach (var item in model.Details)
            {
                CreditorAccountViewModel viewModel = new CreditorAccountViewModel()
                {
                    Code         = model.DocumentNo,
                    Date         = model.Date,
                    Id           = (int)model.Id,
                    InvoiceNo    = item.InvoiceNo,
                    Mutation     = item.TotalPaid,
                    SupplierCode = model.SupplierCode,
                    SupplierName = model.SupplierName
                };
                postedData.Add(viewModel);
            }


            var httpClient = (IHttpClientService)this.serviceProvider.GetService(typeof(IHttpClientService));
            var response   = httpClient.PutAsync($"{APIEndpoint.Finance}{CREDITOR_ACCOUNT_URI}", new StringContent(JsonConvert.SerializeObject(postedData).ToString(), Encoding.UTF8, General.JsonMediaType)).Result;

            response.EnsureSuccessStatusCode();
        }
        private List <CreditorAccountViewModel> GetPreviousMonthReport(IQueryable <CreditorAccountModel> supplierQuery, int month, int year, int offSet)
        {
            List <CreditorAccountViewModel> result = new List <CreditorAccountViewModel>();
            List <CreditorAccountModel>     previousMonthCreditorAccount = new List <CreditorAccountModel>();
            var timeOffset = new TimeSpan(IdentityService.TimezoneOffset, 0, 0);
            var dateSearch = new DateTimeOffset(year, month, 1, 0, 0, 0, timeOffset);
            var debtQuery  = supplierQuery.Where(x => x.FinalBalance > 0 && x.UnitReceiptNoteDate.HasValue && x.UnitReceiptNoteDate.Value < dateSearch).ToList();
            var paidQuery  = supplierQuery.Where(x => x.FinalBalance == 0 && x.BankExpenditureNoteDate.HasValue && x.BankExpenditureNoteDate.Value.Month == month && x.BankExpenditureNoteDate.Value.Year == year && x.UnitReceiptNoteDate.HasValue && x.UnitReceiptNoteDate.Value < dateSearch).ToList();

            previousMonthCreditorAccount.AddRange(debtQuery);
            previousMonthCreditorAccount.AddRange(paidQuery);

            foreach (var item in previousMonthCreditorAccount.OrderBy(x => x.UnitReceiptNoteDate.GetValueOrDefault()))
            {
                decimal unitReceiptMutaion      = 0;
                decimal bankExpenditureMutation = 0;
                decimal memoMutation            = 0;
                //if (!string.IsNullOrEmpty(item.UnitReceiptNoteNo))
                //{
                CreditorAccountViewModel vm = new CreditorAccountViewModel
                {
                    UnitReceiptNoteNo = item.UnitReceiptNoteNo,
                    Date      = item.UnitReceiptNoteDate.Value,
                    InvoiceNo = item.InvoiceNo,
                    DPP       = item.UnitReceiptNoteDPP,
                    PPN       = item.UnitReceiptNotePPN,
                    Total     = item.UnitReceiptMutation,
                    Mutation  = item.UnitReceiptMutation,
                };
                unitReceiptMutaion = vm.Mutation;
                //}

                if (!string.IsNullOrEmpty(item.BankExpenditureNoteNo))
                {
                    //CreditorAccountViewModel vm = new CreditorAccountViewModel
                    //{
                    vm.BankExpenditureNoteNo = item.BankExpenditureNoteNo;
                    vm.Date      = item.BankExpenditureNoteDate.Value;
                    vm.InvoiceNo = item.InvoiceNo;
                    vm.DPP       = item.BankExpenditureNoteDPP;
                    vm.PPN       = item.BankExpenditureNotePPN;
                    vm.Total     = item.BankExpenditureNoteMutation;
                    vm.Mutation  = item.BankExpenditureNoteMutation * -1;

                    //};
                    bankExpenditureMutation = vm.Mutation;
                    //result.Add(vm);
                }
                //if (!string.IsNullOrEmpty(item.MemoNo))
                //{
                //    //CreditorAccountViewModel vm = new CreditorAccountViewModel
                //    //{
                //    vm.MemoNo = item.MemoNo;
                //    vm.Date = item.MemoDate.Value;
                //    vm.InvoiceNo = item.InvoiceNo;
                //    vm.DPP = item.MemoDPP;
                //    vm.PPN = item.MemoPPN;
                //    vm.Total = item.MemoMutation;
                //    vm.Mutation = item.MemoMutation;

                //    //};
                //    memoMutation = vm.Mutation;
                //    //result.Add(vm);
                //}

                result.Add(vm);
            }

            if (result.Count > 0)
            {
                CreditorAccountViewModel totalPrevious = new CreditorAccountViewModel()
                {
                    FinalBalance = result.Sum(x => x.Mutation)
                };
                result.Add(totalPrevious);
            }

            return(result);
        }
        public (List <CreditorAccountViewModel>, decimal) GetReport(string suplierName, int month, int year, int offSet)
        {
            var supplierQuery = DbContext.CreditorAccounts.AsQueryable().Where(x => x.SupplierName == suplierName);
            var result        = GetPreviousMonthReport(supplierQuery, month, year, offSet);

            //var currentQuery = supplierQuery.Where(x => x.UnitReceiptNoteDate.HasValue && x.UnitReceiptNoteDate.Value.Month == month && x.UnitReceiptNoteDate.Value.Year == year);
            var currentQuery = supplierQuery.Where(x => (x.UnitReceiptNoteDate.HasValue && x.UnitReceiptNoteDate.Value.Month == month && x.UnitReceiptNoteDate.Value.Year == year) || (x.UnitPaymentCorrectionDate.HasValue && x.UnitPaymentCorrectionDate.Value.Month == month && x.UnitPaymentCorrectionDate.Value.Year == year));

            //if (currentQuery.Count() == 0)
            //{
            //    return (new List<CreditorAccountViewModel>(), 0);
            //}

            var items = currentQuery.OrderBy(x => x.UnitReceiptNoteDate.GetValueOrDefault()).ToList();

            foreach (var item in items)
            {
                decimal unitReceiptMutation     = 0;
                decimal bankExpenditureMutation = 0;
                //decimal memoMutation = 0;
                //if (!string.IsNullOrEmpty(item.UnitReceiptNoteNo))
                //{
                CreditorAccountViewModel vm = new CreditorAccountViewModel
                {
                    UnitReceiptNoteNo = item.UnitReceiptNoteNo,
                    Products          = item.Products,
                    Date            = item.UnitReceiptNoteDate.GetValueOrDefault(),
                    InvoiceNo       = item.InvoiceNo,
                    DPP             = item.CurrencyRate == 1 ? item.UnitReceiptNoteDPP : 0,
                    DPPCurrency     = item.CurrencyRate != 1 ? item.UnitReceiptNoteDPP : 0,
                    PPN             = item.UnitReceiptNotePPN,
                    Total           = item.UnitReceiptMutation,
                    Mutation        = item.CurrencyRate != 1 ? item.UnitReceiptMutation * item.CurrencyRate : item.UnitReceiptMutation,
                    PaymentDuration = item.PaymentDuration,
                    MemoNo          = item.MemoNo,
                    CorrectionNo    = item.UnitPaymentCorrectionNo
                };
                unitReceiptMutation = vm.Mutation;
                //result.Add(vm);
                //}

                if (!string.IsNullOrEmpty(item.BankExpenditureNoteNo))
                {
                    vm.BankExpenditureNoteNo = item.BankExpenditureNoteNo;
                    //vm.Date = item.BankExpenditureNoteDate.GetValueOrDefault();
                    vm.InvoiceNo       = item.InvoiceNo;
                    vm.DPP             = item.BankExpenditureNoteDPP;
                    vm.PPN             = item.BankExpenditureNotePPN;
                    vm.Total           = item.BankExpenditureNoteMutation;
                    vm.Mutation        = item.BankExpenditureNoteMutation * -1;
                    vm.MemoNo          = item.MemoNo;
                    vm.PaymentDuration = item.PaymentDuration;
                    vm.Products        = item.Products;
                    //};
                    bankExpenditureMutation = vm.Mutation;
                    //}
                }

                if (!string.IsNullOrEmpty(item.UnitPaymentCorrectionNo))
                {
                    vm.BankExpenditureNoteNo = item.BankExpenditureNoteNo;
                    //vm.Date = item.BankExpenditureNoteDate.GetValueOrDefault();
                    vm.InvoiceNo       = item.InvoiceNo;
                    vm.DPP             = item.UnitPaymentCorrectionDPP;
                    vm.PPN             = item.UnitPaymentCorrectionPPN;
                    vm.Total           = item.UnitPaymentCorrectionDPP + item.UnitPaymentCorrectionPPN;
                    vm.Mutation        = item.UnitPaymentCorrectionMutation;
                    vm.MemoNo          = item.MemoNo;
                    vm.PaymentDuration = item.PaymentDuration;
                    vm.Products        = item.Products;
                    //};
                    //bankExpenditureMutation = vm.Mutation.GetValueOrDefault();
                    //}
                }
                result.Add(vm);

                //if (!string.IsNullOrEmpty(item.MemoNo))
                //{
                //    if (item.MemoDate.HasValue && item.MemoDate.Value.Month == month && item.MemoDate.Value.Year == year)
                //    {
                //        CreditorAccountViewModel vm = new CreditorAccountViewModel
                //        {
                //            MemoNo = item.MemoNo,
                //            Date = item.MemoDate.Value,
                //            InvoiceNo = item.InvoiceNo,
                //            DPP = item.MemoDPP,
                //            PPN = item.MemoPPN,
                //            Total = item.MemoMutation,
                //            Mutation = item.MemoMutation,

                //        };
                //        memoMutation = vm.Mutation.GetValueOrDefault();
                //        result.Add(vm);
                //    }

                //}

                CreditorAccountViewModel resultVM = new CreditorAccountViewModel()
                {
                    InvoiceNo    = item.InvoiceNo,
                    Mutation     = unitReceiptMutation - bankExpenditureMutation,
                    FinalBalance = unitReceiptMutation - bankExpenditureMutation,
                    Currency     = item.CurrencyCode,
                    CurrencyRate = item.CurrencyRate,
                    DPPCurrency  = item.DPPCurrency
                };
                result.Add(resultVM);
            }

            return(result, result.Sum(x => x.FinalBalance));
        }
        public (List <CreditorAccountViewModel>, decimal) GetReport(string suplierName, int month, int year, int offSet)
        {
            IQueryable <CreditorAccountModel> supplierQuery = DbContext.CreditorAccounts.AsQueryable().Where(x => x.SupplierName == suplierName);

            var currentQuery = supplierQuery.Where(x => x.UnitReceiptNoteDate.HasValue && x.UnitReceiptNoteDate.Value.Month == month && x.UnitReceiptNoteDate.Value.Year == year);

            if (currentQuery.Count() == 0)
            {
                return(new List <CreditorAccountViewModel>(), 0);
            }
            var result = GetPreviousMonthReport(supplierQuery, month, year, offSet);

            foreach (var item in currentQuery.OrderBy(x => x.UnitReceiptNoteDate.GetValueOrDefault()).ToList())
            {
                decimal unitReceiptMutation     = 0;
                decimal bankExpenditureMutation = 0;
                decimal memoMutation            = 0;
                if (!string.IsNullOrEmpty(item.UnitReceiptNoteNo))
                {
                    CreditorAccountViewModel vm = new CreditorAccountViewModel
                    {
                        UnitReceiptNoteNo = item.UnitReceiptNoteNo,
                        Products          = item.Products,
                        Date            = item.UnitReceiptNoteDate.Value,
                        InvoiceNo       = item.InvoiceNo,
                        DPP             = item.CurrencyRate == 1 ? item.UnitReceiptNoteDPP : 0,
                        DPPCurrency     = item.CurrencyRate != 1 ? item.UnitReceiptNoteDPP : 0,
                        PPN             = item.UnitReceiptNotePPN,
                        Total           = item.UnitReceiptMutation,
                        Mutation        = item.CurrencyRate != 1 ? item.UnitReceiptMutation * item.CurrencyRate : item.UnitReceiptMutation,
                        PaymentDuration = item.PaymentDuration
                    };
                    unitReceiptMutation = vm.Mutation.GetValueOrDefault();
                    result.Add(vm);
                }

                if (!string.IsNullOrEmpty(item.BankExpenditureNoteNo))
                {
                    if (item.BankExpenditureNoteDate.HasValue && item.BankExpenditureNoteDate.Value.Month == month && item.BankExpenditureNoteDate.Value.Year == year)
                    {
                        CreditorAccountViewModel vm = new CreditorAccountViewModel
                        {
                            BankExpenditureNoteNo = item.BankExpenditureNoteNo,
                            Date      = item.BankExpenditureNoteDate.Value,
                            InvoiceNo = item.InvoiceNo,
                            DPP       = item.BankExpenditureNoteDPP,
                            PPN       = item.BankExpenditureNotePPN,
                            Total     = item.BankExpenditureNoteMutation,
                            Mutation  = item.BankExpenditureNoteMutation * -1,
                        };
                        bankExpenditureMutation = vm.Mutation.GetValueOrDefault();
                        result.Add(vm);
                    }
                }
                if (!string.IsNullOrEmpty(item.MemoNo))
                {
                    if (item.MemoDate.HasValue && item.MemoDate.Value.Month == month && item.MemoDate.Value.Year == year)
                    {
                        CreditorAccountViewModel vm = new CreditorAccountViewModel
                        {
                            MemoNo    = item.MemoNo,
                            Date      = item.MemoDate.Value,
                            InvoiceNo = item.InvoiceNo,
                            DPP       = item.MemoDPP,
                            PPN       = item.MemoPPN,
                            Total     = item.MemoMutation,
                            Mutation  = item.MemoMutation,
                        };
                        memoMutation = vm.Mutation.GetValueOrDefault();
                        result.Add(vm);
                    }
                }

                CreditorAccountViewModel resultVM = new CreditorAccountViewModel()
                {
                    InvoiceNo    = item.InvoiceNo,
                    Mutation     = unitReceiptMutation + bankExpenditureMutation,
                    FinalBalance = unitReceiptMutation + bankExpenditureMutation,
                    Currency     = item.CurrencyCode,
                    CurrencyRate = item.CurrencyRate,
                    DPPCurrency  = item.DPPCurrency
                };
                result.Add(resultVM);
            }

            return(result, result.Sum(x => x.FinalBalance).GetValueOrDefault());
        }