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)); } }
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()); }
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)); }
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)); }
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); }
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()); }
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); }