public async Task Should_Success_Delete_Approval_Non_PO()
        {
            CashierApprovalService service = new CashierApprovalService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            VbRequestModel         model   = await _dataUtil(service).GetTestData();

            CashierApprovalViewModel data = new CashierApprovalViewModel()
            {
                VBRequestCategory = "NONPO",
                CashierApproval   = new List <CashierApprovalItemViewModel>()
                {
                    new CashierApprovalItemViewModel()
                    {
                        VBNo = model.VBNo,
                        Id   = model.Id
                    }
                }
            };
            var acceptedResponse = await service.CashierAproval(data);

            var newModel = await service.ReadByIdAsync(model.Id);

            var deleteResponse = await service.DeleteCashierAproval(newModel.Id);

            Assert.NotEqual(0, deleteResponse);
        }
        public VbRequestModel GetNewData()
        {
            VbRequestModel TestData = new VbRequestModel()
            {
                VBNo              = "VBNo",
                Date              = DateTimeOffset.UtcNow,
                DateEstimate      = DateTimeOffset.UtcNow,
                UnitId            = 1,
                UnitCode          = "UnitCode",
                UnitName          = "UnitName",
                CurrencyId        = 1,
                CurrencyCode      = "CurrencyCode",
                CurrencyRate      = 123,
                CurrencySymbol    = "CurrencySymbol",
                Amount            = 123,
                Usage             = "Usage",
                UnitLoad          = "UnitLoad",
                Apporve_Status    = false,
                Complete_Status   = false,
                VBRequestCategory = "NONPO",
                CreatedBy         = "CreatedBy"
            };

            return(TestData);
        }
        public async Task <IActionResult> GetDownPaymentPDF([FromRoute] int Id)
        {
            try
            {
                var            indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf");
                int            timeoffsset    = Convert.ToInt32(Request.Headers["x-timezone-offset"]);
                VbRequestModel model          = await _service.ReadByIdAsync(Id);

                if (model == null)
                {
                    Dictionary <string, object> Result =
                        new ResultFormatter(ApiVersion, General.NOT_FOUND_STATUS_CODE, General.NOT_FOUND_MESSAGE)
                        .Fail();
                    return(NotFound(Result));
                }
                else
                {
                    VbNonPORequestViewModel viewModel = _mapper.Map <VbNonPORequestViewModel>(model);

                    VbNonPORequestPDFTemplate PdfTemplate = new VbNonPORequestPDFTemplate();
                    MemoryStream stream = PdfTemplate.GeneratePdfTemplate(viewModel, timeoffsset);
                    return(new FileStreamResult(stream, "application/pdf")
                    {
                        FileDownloadName = "Permohonan VB Tanpa PO - " + viewModel.VBNo + ".pdf"
                    });
                }
            }
            catch (Exception e)
            {
                Dictionary <string, object> Result =
                    new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message)
                    .Fail();
                return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result));
            }
        }
示例#4
0
        public async Task <VbRequestModel> GetTestData_ById()
        {
            VbRequestModel model = GetNewData();
            await service.CreateAsync(model);

            return(await service.ReadByIdAsync(model.Id));
        }
        public Task <int> CreateAsync(VbRequestModel model, CashierApprovalViewModel viewmodel)
        {
            EntityExtension.FlagForCreate(model, IdentityService.Username, UserAgent);

            DbContext.VbRequests.Add(model);

            return(DbContext.SaveChangesAsync());
        }
示例#6
0
        public async Task <VbRequestModel> GetTestData()
        {
            VbRequestModel vbRequest = GetVbRequestModelToCreate();
            var            viewmodel = GetViewModel();
            await _service.CreateAsync(vbRequest, viewmodel);

            return(vbRequest);
        }
        public Task <int> CreateAsync(VbRequestModel model)
        {
            EntityExtension.FlagForCreate(model, _IdentityService.Username, _UserAgent);

            _DbContext.VbRequests.Add(model);

            return(_DbContext.SaveChangesAsync());
        }
        public void Should_Success_Map_VBWithPORequest()
        {
            var mapper = new MapperConfiguration(configuration => configuration.AddProfile <VBWithPORequestProfile>()).CreateMapper();
            var model  = new VbRequestModel();
            var vm     = mapper.Map <VbWithPORequestViewModel>(model);

            Assert.NotNull(vm);
        }
        public async Task <VbRequestModel> GetTestData_VbRequestModel()
        {
            VbRequestModel data = GetNewData_VbRequestModel();

            _dbContext.VbRequests.Add(data);
            await _dbContext.SaveChangesAsync();

            return(data);
        }
        public async Task <VbRequestModel> GetTestData()
        {
            VbRequestModel vbRequest = GetNewData();

            var viewmodel = GetDataToValidate();

            await Service.CreateAsync(vbRequest, viewmodel);

            return(vbRequest);
        }
        public async Task <int> CashierAproval(CashierApprovalViewModel data)
        {
            int updated = 0;

            using (var transaction = DbContext.Database.BeginTransaction())
            {
                try
                {
                    List <string> approvals = new List <string>();

                    if (data.VBRequestCategory.Equals("PO"))
                    {
                        foreach (var item in data.CashierApproval)
                        {
                            approvals.Add(item.VBNo);
                            VbRequestModel model = DbContext.VbRequests.Single(x => x.Id == item.Id);
                            model.Apporve_Status  = true;
                            model.Complete_Status = false;
                            model.ApproveDate     = DateTimeOffset.UtcNow;
                            model.Amount          = item.Amount;

                            EntityExtension.FlagForUpdate(model, IdentityService.Username, UserAgent);
                        }

                        updated = await DbContext.SaveChangesAsync();
                    }
                    else if (data.VBRequestCategory.Equals("NONPO"))
                    {
                        foreach (var item in data.CashierApproval)
                        {
                            approvals.Add(item.VBNo);
                            VbRequestModel model = DbContext.VbRequests.Single(x => x.Id == item.Id);
                            model.Apporve_Status  = true;
                            model.Complete_Status = false;
                            model.ApproveDate     = DateTimeOffset.UtcNow;

                            EntityExtension.FlagForUpdate(model, IdentityService.Username, UserAgent);
                        }

                        updated = await DbContext.SaveChangesAsync();
                    }
                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw e;
                }
            }

            return(updated);
        }
        public async Task <int> DeleteCashierAproval(int id)
        {
            int count = 0;

            if (DbContext.VbRequests.Count(x => x.Id == id && !x.IsDeleted).Equals(0))
            {
                return(0);
            }

            using (var transaction = DbContext.Database.BeginTransaction())
            {
                try
                {
                    VbRequestModel approvals = DbContext.VbRequests.Single(x => x.Id == id);

                    if (approvals.VBRequestCategory == "PO")
                    {
                        approvals.Apporve_Status  = false;
                        approvals.Complete_Status = false;
                        approvals.ApproveDate     = null;
                        approvals.Amount          = 0;

                        EntityExtension.FlagForUpdate(approvals, IdentityService.Username, UserAgent);

                        count = await DbContext.SaveChangesAsync();
                    }
                    else if (approvals.VBRequestCategory == "NONPO")
                    {
                        approvals.Apporve_Status  = false;
                        approvals.Complete_Status = false;
                        approvals.ApproveDate     = null;

                        EntityExtension.FlagForUpdate(approvals, IdentityService.Username, UserAgent);

                        count = await DbContext.SaveChangesAsync();
                    }

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw e;
                }
            }

            return(count);
        }
        public async Task Should_Success_UpdateStatusAsync()
        {
            var dbContext           = GetDbContext(GetCurrentMethod());
            var serviceProviderMock = GetServiceProviderMock();
            var service             = new VbNonPORequestService(dbContext, serviceProviderMock.Object);
            var dataUtil            = new VbNonPORequestDataUtil(service);

            List <VbRequestModel> modelList = new List <VbRequestModel>();
            VbRequestModel        model     = await dataUtil.GetTestData();

            modelList.Add(model);

            var result = await service.UpdateStatusAsync(modelList, "user");

            Assert.NotEqual(1, result);
        }
        public Task <int> CreateAsync(VbRequestModel model, VbNonPORequestViewModel viewmodel)
        {
            model.VBNo = GetVbNonPoNo(model);

            model.VBRequestCategory = "NONPO";

            model.Apporve_Status  = false;
            model.Complete_Status = false;

            model.UnitLoad = GetUnitLoad(viewmodel);

            EntityExtension.FlagForCreate(model, _identityService.Username, UserAgent);

            _dbContext.VbRequests.Add(model);

            return(_dbContext.SaveChangesAsync());
        }
        public async Task Should_Fail_Delete_Approval_Non_PO()
        {
            var serviceProvider = new Mock <IServiceProvider>();

            serviceProvider
            .Setup(x => x.GetService(typeof(IHttpClientService)))
            .Returns(new HttpClientTestService());

            Mock <IIdentityService> mockIdentity = new Mock <IIdentityService>();

            mockIdentity
            .Setup(s => s.Username)
            .Throws(new Exception());

            serviceProvider
            .Setup(x => x.GetService(typeof(IIdentityService)))
            .Returns(mockIdentity.Object);

            CashierApprovalService service   = new CashierApprovalService(serviceProvider.Object, _dbContext(GetCurrentAsyncMethod()));
            VbRequestModel         vbRequest = new VbRequestModel()
            {
                VBNo              = "VBNo",
                Date              = DateTimeOffset.UtcNow,
                DateEstimate      = DateTimeOffset.UtcNow,
                UnitId            = 1,
                UnitCode          = "UnitCode",
                UnitName          = "UnitName",
                CurrencyId        = 1,
                CurrencyCode      = "CurrencyCode",
                CurrencyRate      = 123,
                CurrencySymbol    = "CurrencySymbol",
                Amount            = 123,
                Usage             = "Usage",
                UnitLoad          = "UnitLoad",
                Apporve_Status    = false,
                Complete_Status   = false,
                VBRequestCategory = "NONPO",
                CreatedBy         = "CreatedBy"
            };

            service.DbContext.VbRequests.Add(vbRequest);
            service.DbContext.SaveChanges();


            await Assert.ThrowsAnyAsync <Exception>(() => service.DeleteCashierAproval(1));
        }
示例#16
0
        private string GetVbNonPoNo(VbRequestModel model)
        {
            var now   = model.Date;
            var year  = now.ToString("yy");
            var month = now.ToString("MM");

            var documentNo = $"VB-{month}{year}-";

            var countSameDocumentNo = _dbContext.VbRequests.Where(a => a.Date.Month == model.Date.Month).Count();

            if (countSameDocumentNo >= 0)
            {
                countSameDocumentNo += 1;

                documentNo += string.Format("{0:000}", countSameDocumentNo);
            }

            return(documentNo);
        }
        public async Task Should_Fail_Post_Approval_Non_PO()
        {
            CashierApprovalService service = new CashierApprovalService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            VbRequestModel         model   = await _dataUtil(service).GetTestData();

            CashierApprovalViewModel data = new CashierApprovalViewModel()
            {
                VBRequestCategory = "NONPO",
                CashierApproval   = new List <CashierApprovalItemViewModel>()
                {
                    new CashierApprovalItemViewModel()
                    {
                        VBNo = model.VBNo,
                        Id   = model.Id
                    }
                }
            };

            await Assert.ThrowsAnyAsync <Exception>(() => service.CashierAproval(null));
        }
示例#18
0
        public VbRequestModel GetNewData()
        {
            VbRequestModel TestData = new VbRequestModel()
            {
                VBNo               = "VBNo",
                Date               = DateTimeOffset.UtcNow,
                DateEstimate       = DateTimeOffset.UtcNow,
                UnitId             = 1,
                UnitName           = "UnitName",
                CreatedBy          = "CreatedBy",
                Usage              = "Usage",
                Amount             = 1000,
                Apporve_Status     = true,
                Realization_Status = true,
                Complete_Status    = true,
                IsDeleted          = false,
            };

            return(TestData);
        }
        public VbRequestModel GetNewData()
        {
            VbRequestModel TestData = new VbRequestModel()
            {
                VBNo               = "VBNo",
                CreatedBy          = "CreatedBy",
                UnitId             = 1,
                UnitName           = "UnitName",
                UnitDivisionId     = 1,
                UnitDivisionName   = "UnitDivisionName",
                Usage              = "Usage",
                CurrencyCode       = "IDR",
                Amount             = 1000,
                CompleteDate       = DateTimeOffset.UtcNow,
                Date               = DateTimeOffset.UtcNow,
                DateEstimate       = DateTimeOffset.UtcNow,
                Realization_Status = true,
            };

            return(TestData);
        }
        public async Task Should_Success_Post_Approval_With_PO()
        {
            CashierApprovalService service = new CashierApprovalService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            VbRequestModel         model   = await _dataUtil(service).GetTestData();

            CashierApprovalViewModel data = new CashierApprovalViewModel()
            {
                VBRequestCategory = "PO",
                CashierApproval   = new List <CashierApprovalItemViewModel>()
                {
                    new CashierApprovalItemViewModel()
                    {
                        VBNo   = model.VBNo,
                        Id     = model.Id,
                        Amount = model.Amount,
                    }
                }
            };

            var response = await service.CashierAproval(data);

            Assert.NotEqual(0, response);
        }
示例#21
0
        public Task <int> CreateAsync(VbRequestModel model, VbWithPORequestViewModel viewmodel)
        {
            decimal Amt = 0;

            model.VBNo = GetVbNonPoNo(model);

            model.VBRequestCategory = "PO";

            model.Apporve_Status  = false;
            model.Complete_Status = false;
            model.Usage_Input     = viewmodel.Usage;
            string temp = "";

            foreach (var itm in viewmodel.Items)
            {
                temp += itm.unit.Name + ", ";
                temp  = temp.Remove(temp.Length - 2);

                if (string.IsNullOrEmpty(itm.IncomeTax._id))
                {
                    model.IncomeTaxId = "";
                }
                else
                {
                    model.IncomeTaxId = itm.IncomeTax._id;
                }

                if (string.IsNullOrEmpty(itm.IncomeTax.Name))
                {
                    model.IncomeTaxName = "";
                }
                else
                {
                    model.IncomeTaxName = itm.IncomeTax.Name;
                }

                if (string.IsNullOrEmpty(itm.IncomeTax.Rate))
                {
                    model.IncomeTaxRate = "";
                }
                else
                {
                    model.IncomeTaxRate = itm.IncomeTax.Rate;
                }

                if (string.IsNullOrEmpty(itm.IncomeTaxBy))
                {
                    model.IncomeTaxBy = "";
                }
                else
                {
                    model.IncomeTaxBy = itm.IncomeTaxBy;
                }

                foreach (var itm2 in itm.Details)
                {
                    var price = itm2.priceBeforeTax * itm2.dealQuantity;
                    if (!itm2.includePpn && itm2.useVat)
                    {
                        price += price * (decimal)0.1;
                    }

                    Amt += price;
                }
            }

            model.Amount   = Amt;
            model.UnitLoad = temp;

            EntityExtension.FlagForCreate(model, _identityService.Username, UserAgent);

            _dbContext.VbRequests.Add(model);

            //foreach (var itm1 in viewmodel.Items)
            //{
            //    var updateModel = new POExternalUpdateModel()
            //    {
            //        IsCreateOnVBRequest = true
            //    };

            //    UpdateToPOExternal(itm1.no, updateModel);
            //}

            return(_dbContext.SaveChangesAsync());
        }
示例#22
0
        public VbRequestModel MappingData2(int id, VbWithPORequestViewModel viewModel)
        {
            var listDetail = new List <VbRequestDetailModel>();

            foreach (var itm1 in viewModel.Items)
            {
                foreach (var itm2 in itm1.Details)
                {
                    var item = new VbRequestDetailModel()
                    {
                        //Id = itm2.Id,
                        VBId              = id,
                        POId              = itm1._id.GetValueOrDefault(),
                        PONo              = itm1.no,
                        VBNo              = viewModel.VBNo,
                        UnitName          = itm1.unit.Name,
                        UnitId            = itm1.unit.Id,
                        Conversion        = itm2.Conversion,
                        DealQuantity      = itm2.dealQuantity,
                        DealUOMId         = itm2.dealUom._id,
                        DealUOMUnit       = itm2.dealUom.unit,
                        DefaultQuantity   = itm2.defaultQuantity,
                        DefaultUOMId      = itm2.defaultUom._id,
                        DefaultUOMUnit    = itm2.defaultUom.unit,
                        Price             = itm2.priceBeforeTax,
                        ProductCode       = itm2.product.code,
                        ProductId         = itm2.product._id,
                        ProductName       = itm2.product.name,
                        ProductRemark     = itm2.productRemark,
                        LastModifiedBy    = viewModel.LastModifiedBy,
                        LastModifiedAgent = viewModel.LastModifiedAgent,
                        DeletedBy         = "",
                        DeletedAgent      = "",
                        CreatedBy         = viewModel.CreatedBy,
                        CreatedAgent      = viewModel.CreatedAgent,
                        IsUseVat          = itm2.includePpn,
                    };

                    listDetail.Add(item);
                }
            }

            string  IncomeTaxBy   = "";
            string  IncomeTaxId   = "";
            string  IncomeTaxName = "";
            string  IncomeTaxRate = "";
            string  temp          = "";
            decimal Amount        = 0;

            foreach (var itm in viewModel.Items)
            {
                if (string.IsNullOrEmpty(itm.IncomeTax._id))
                {
                    IncomeTaxId = "";
                }
                else
                {
                    IncomeTaxId = itm.IncomeTax._id;
                }

                if (string.IsNullOrEmpty(itm.IncomeTax.Name))
                {
                    IncomeTaxName = "";
                }
                else
                {
                    IncomeTaxName = itm.IncomeTax.Name;
                }

                if (string.IsNullOrEmpty(itm.IncomeTax.Rate))
                {
                    IncomeTaxRate = "";
                }
                else
                {
                    IncomeTaxRate = itm.IncomeTax.Rate;
                }

                if (string.IsNullOrEmpty(itm.IncomeTaxBy))
                {
                    IncomeTaxBy = "";
                }
                else
                {
                    IncomeTaxBy = itm.IncomeTaxBy;
                }

                foreach (var itm2 in itm.Details)
                {
                    Amount += itm2.priceBeforeTax * itm2.dealQuantity;
                }

                IncomeTaxBy   = itm.IncomeTaxBy;
                IncomeTaxId   = itm.IncomeTax._id;
                IncomeTaxName = itm.IncomeTax.Name;
                IncomeTaxRate = itm.IncomeTax.Rate;

                temp += itm.unit.Name + ", ";
                temp  = temp.Remove(temp.Length - 2);
            }

            var result = new VbRequestModel()
            {
                VbRequestDetail = listDetail,
                Active          = viewModel.Active,

                Id                  = viewModel.Id,
                Date                = (DateTimeOffset)viewModel.Date,
                DateEstimate        = (DateTimeOffset)viewModel.DateEstimate,
                UnitId              = viewModel.Unit.Id,
                UnitCode            = viewModel.Unit.Code,
                UnitName            = viewModel.Unit.Name,
                VBNo                = viewModel.VBNo,
                CreatedUtc          = viewModel.CreatedUtc,
                CreatedBy           = viewModel.CreatedBy,
                CreatedAgent        = viewModel.CreatedAgent,
                LastModifiedUtc     = DateTime.Now,
                LastModifiedAgent   = viewModel.LastModifiedAgent,
                LastModifiedBy      = viewModel.LastModifiedBy,
                VBMoney             = viewModel.VBMoney,
                Usage_Input         = viewModel.Usage,
                CurrencyId          = viewModel.Currency.Id,
                CurrencyCode        = viewModel.Currency.Code,
                CurrencyRate        = viewModel.Currency.Rate,
                CurrencySymbol      = viewModel.Currency.Symbol,
                CurrencyDescription = viewModel.Currency.Symbol,
                Amount              = Amount,
                UnitDivisionId      = viewModel.Division.Id,
                UnitDivisionName    = viewModel.Division.Name,
                IncomeTaxBy         = IncomeTaxBy,
                IncomeTaxId         = IncomeTaxId,
                IncomeTaxName       = IncomeTaxName,
                IncomeTaxRate       = IncomeTaxRate,
                UnitLoad            = temp,
                VBRequestCategory   = "PO",
                Apporve_Status      = false,
                Complete_Status     = false
            };

            return(result);
        }
        public VbRequestModel MappingData2(VbNonPORequestViewModel viewModel)
        {
            var listDetail = new List <VbRequestDetailModel>();

            var myProperty = viewModel.GetType().GetProperties();

            int value = int.Parse(dbSet.OrderByDescending(p => p.Id)
                                  .Select(r => r.Id)
                                  .First().ToString());

            foreach (var prop in myProperty.Where(x => x.PropertyType == typeof(bool)))
            {
                if ((bool)prop.GetValue(viewModel))
                {
                    var item = new VbRequestDetailModel()
                    {
                        VBId              = value,
                        UnitName          = prop.Name,
                        LastModifiedBy    = viewModel.LastModifiedBy,
                        LastModifiedAgent = viewModel.LastModifiedAgent,
                        DeletedBy         = "",
                        DeletedAgent      = "",
                        CreatedBy         = viewModel.CreatedBy,
                        CreatedAgent      = viewModel.CreatedAgent,
                    };
                    if (prop.Name.ToUpper() == "OTHERS")
                    {
                        item.DetailOthers = viewModel.DetailOthers;
                    }
                    listDetail.Add(item);
                    //EntityExtension.FlagForCreate(item, _identityService.Username, UserAgent);
                    //_dbContext.VbRequestsDetails.Add(item);
                    //_dbContext.SaveChangesAsync();
                }
            }
            var result = new VbRequestModel()
            {
                VbRequestDetail = listDetail,
                Active          = viewModel.Active,
                Id                  = viewModel.Id,
                Date                = (DateTimeOffset)viewModel.Date,
                DateEstimate        = (DateTimeOffset)viewModel.DateEstimate,
                UnitId              = viewModel.Unit.Id,
                UnitCode            = viewModel.Unit.Code,
                UnitName            = viewModel.Unit.Name,
                UnitDivisionId      = viewModel.Division.Id,
                UnitDivisionName    = viewModel.Division.Name,
                VBNo                = viewModel.VBNo,
                CurrencyId          = viewModel.Currency.Id,
                CurrencyCode        = viewModel.Currency.Code,
                CurrencyRate        = viewModel.Currency.Rate,
                CurrencySymbol      = viewModel.Currency.Symbol,
                CurrencyDescription = viewModel.Currency.Description,
                Amount              = viewModel.Amount,
                Usage               = viewModel.Usage,
                UnitLoad            = viewModel.UnitLoad,
                CreatedBy           = viewModel.CreatedBy,
                CreatedAgent        = viewModel.CreatedAgent,
                LastModifiedAgent   = viewModel.LastModifiedAgent,
                LastModifiedBy      = viewModel.LastModifiedBy,
                LastModifiedUtc     = DateTime.Now,
                CreatedUtc          = viewModel.CreatedUtc
            };

            return(result);
        }