private static PurchaseOrderResponse GetPurchaseOrderResponseMessage(Cost cost) { var message = new PurchaseOrderResponse { ActivityType = "updated", CostNumber = cost.CostNumber, ClientName = "Pg", EventTimeStamp = DateTime.Now, Payload = JObject.Parse($@"{{ ""requisition"": ""135244"", ""poNumber"": ""8000103223"", ""approverEmail"": ""*****@*****.**"", ""ioNumberOwner"": ""*****@*****.**"", ""grNumber"": null, ""glAccount"": ""0033500001"", ""poDate"": ""2017-10-30T11:11:21+00:00"", ""grDate"": null, ""accountCode"": ""823-4776-KR-G4P~F1--004001597408-S821018AT-0033500001"", ""comments"": ""Management hierarchy approver. The approver is the manager of Esteban Sanchez with an approval limit of 100000.00 USD for requisition"", ""type"": null, ""itemIdCode"": ""199150"", ""approvalStatus"": ""approved"", ""totalAmount"": null }}") }; return(message); }
public async Task Consume_Always_Should_SavePurchaseOrderResponse_AndUpdatePaymentDetails() { // Arrange var activityType = ActivityTypes.Updated; var purchaseOrderResponse = new PurchaseOrderResponse { ActivityType = activityType, CostNumber = CostNumber, ClientName = BuType.Pg.ToString(), Payload = JObject.Parse(JsonConvert.SerializeObject(new PgPurchaseOrderResponse())) }; var operationResponse = new ApprovalServiceActionResult { Success = true }; _approvalServiceMock.Setup(a => a.Approve(It.IsAny <Guid>(), It.IsAny <UserIdentity>(), BuType.Pg, SourceSystem.Coupa)).Returns(Task.FromResult(operationResponse)); _emailNotificationServiceMock.Setup(em => em.CostHasBeenApproved(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <string>())).Returns(Task.FromResult(true)); // Act await _consumer.Consume(purchaseOrderResponse); // Assert _customDataServiceMock.Verify(ds => ds.Save(It.IsAny <Guid>(), It.Is <string>(s => s == CustomObjectDataKeys.PgPurchaseOrderResponse), It.IsAny <object>(), It.IsAny <UserIdentity>())); _customDataServiceMock.Verify(ds => ds.Save(It.IsAny <Guid>(), It.Is <string>(s => s == CustomObjectDataKeys.PgPaymentDetails), It.IsAny <object>(), It.IsAny <UserIdentity>())); }
public ActionResult CreateOrEditPurchaseOrder() { PurchaseOrderResponse _response = new PurchaseOrderResponse(); if (Request.QueryString["id"] != null) { var request = new PurchaseOrderRequest { Data = new PurchaseOrderModel { Id = long.Parse(Request.QueryString["id"].ToString()) } }; PurchaseOrderResponse resp = new PurchaseOrderHandler(_unitOfWork).GetDetail(request); PurchaseOrderModel _model = resp.Entity; ViewBag.Response = _response; return(View(_model)); } else { ViewBag.Response = _response; ViewBag.ActionType = ClinicEnums.Action.Add; return(View()); } }
public JsonResult searchpurchaseorder(string prefix) { var _draw = "1"; var _start = "0"; var _length = "10"; var _sortColumn = "Id"; var _sortColumnDir = "asc"; var _searchValue = prefix; int _pageSize = _length != null?Convert.ToInt32(_length) : 0; int _skip = _start != null?Convert.ToInt32(_start) : 0; var request = new PurchaseOrderRequest { Draw = _draw, SearchValue = _searchValue, SortColumn = _sortColumn, SortColumnDir = _sortColumnDir, PageSize = _pageSize, Skip = _skip }; var response = new PurchaseOrderResponse(); if (request.SearchValue != null) { response = new PurchaseOrderHandler(_unitOfWork).GetListData(request); } return(Json(new { data = response.Data, recordsFiltered = response.RecordsFiltered, recordsTotal = response.RecordsTotal, draw = response.Draw }, JsonRequestBehavior.AllowGet)); }
public async Task Consume_Send_Comments_To_ApprovalService(string comments) { // Arrange const string activityType = ActivityTypes.Updated; const string approvalStatus = ApprovalStatuses.Rejected; var purchaseOrderResponse = new PurchaseOrderResponse { ActivityType = activityType, CostNumber = CostNumber, ClientName = BuType.Pg.ToString(), Payload = JObject.Parse(JsonConvert.SerializeObject(new PgPurchaseOrderResponse { Comments = comments, ApprovalStatus = approvalStatus })) }; var operationResponse = new ApprovalServiceActionResult { Success = true }; _approvalServiceMock.Setup(a => a.Reject(It.IsAny <Guid>(), It.IsAny <UserIdentity>(), BuType.Pg, comments, It.IsAny <SourceSystem>())).Returns(Task.FromResult(operationResponse)); _emailNotificationServiceMock.Setup(em => em.CostHasBeenRejected(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <string>(), string.Empty)).Returns(Task.FromResult(true)); // Act await _consumer.Consume(purchaseOrderResponse); //Assert _approvalServiceMock.Verify(s => s.Reject(It.IsAny <Guid>(), It.IsAny <UserIdentity>(), BuType.Pg, comments, It.IsAny <SourceSystem>())); _emailNotificationServiceMock.Verify(s => s.CostHasBeenRejected(It.IsAny <Guid>(), It.IsAny <Guid>(), ApprovalType.Brand.ToString(), comments)); }
private async Task ActionOnCost(PurchaseOrderResponse message, PgPurchaseOrderResponse payload, Cost cost, SystemAdminUserIdentity adminUser) { var adminUserId = adminUser.Id; OperationResponse response; switch (message.ActivityType) { case ActivityTypes.Updated: switch (payload.ApprovalStatus) { case ApprovalStatuses.Approved: if (ApprovalRequired(cost)) { await ApproveCost(cost.Id, adminUser); } break; case ApprovalStatuses.Rejected: message.Payload.TryGetValue(nameof(PgPurchaseOrderResponse.Comments), StringComparison.OrdinalIgnoreCase, out var commentsToken); var comments = commentsToken != null?commentsToken.ToObject <string>() : string.Empty; response = await _approvalService.Reject(cost.Id, adminUser, BuType.Pg, comments, SourceSystem.Coupa); if (response.Success) { await _emailNotificationService.CostHasBeenRejected(cost.Id, adminUserId, ApprovalType.Brand.ToString(), comments); } break; // ADC-1731 Dealing with COUPA's limitations case ApprovalStatuses.AwaitingDecisionInCost: if (ApprovalRequired(cost) && await HasCostBeenApproved(cost, payload)) { await ApproveCost(cost.Id, adminUser); } break; } break; case ActivityTypes.Cancelled: response = await _costActionService.CompleteCancel(cost.Id, BuType.Pg); if (response.Success) { await _emailNotificationService.CostHasBeenCancelled(cost.Id); } break; case ActivityTypes.Recalled: await _costActionService.CompleteRecall(cost.Id, adminUser); break; } }
public void Create(PurchaseOrderResponse _response) { var searchPredicate = PredicateBuilder.New <Data.DataRepository.DeliveryOrder>(true); _response.Entity.approve = null; _response.Entity.approveby = null; var request = new DeliveryOrderRequest { Data = Mapper.Map <PurchaseOrderModel, DeliveryOrderModel>(_response.Entity) }; request.Data.dodate = DateTime.Now; request.Data.poid = Convert.ToInt32(_response.Entity.Id); request.Data.Id = 0; var lastponumber = _unitOfWork.DeliveryOrderRepository.Get(searchPredicate, orderBy: a => a.OrderByDescending(x => x.CreatedDate)).Select(a => a.donumber).FirstOrDefault(); DateTime?getmonth = _unitOfWork.DeliveryOrderRepository.Get(searchPredicate, orderBy: a => a.OrderByDescending(x => x.CreatedDate)).Select(a => a.dodate).FirstOrDefault(); DateTime?month = getmonth != null ? getmonth : DateTime.Now; string ponumber = lastponumber != null?GeneralHandler.stringincrement(lastponumber, Convert.ToDateTime(month)) : "00001"; request.Data.donumber = "DO" + _response.Entity.Account.Organization + DateTime.Now.Year + DateTime.Now.Month + ponumber; request.Data.Account = _response.Entity.Account; DeliveryOrderResponse deliveryorderresponse = new DeliveryOrderResponse(); new DeliveryOrderValidator(_unitOfWork).Validate(request, out deliveryorderresponse); if (_response.Entity.PurchaseOrderDetails != null) { int i = 0; foreach (var item in _response.Entity.PurchaseOrderDetails) { var deliveryorderdetailrequest = new DeliveryOrderDetailRequest { Data = Mapper.Map <PurchaseOrderDetailModel, DeliveryOrderDetailModel>(item) }; deliveryorderdetailrequest.Data.DeliveryOderId = Convert.ToInt32(deliveryorderresponse.Entity.Id); deliveryorderdetailrequest.Data.Account = _response.Entity.Account; deliveryorderdetailrequest.Data.Id = 0; // var requestnamabarang = new ProductRequest { Data = new ProductModel { Id = Convert.ToInt32(item.ProductId) } }; ProductResponse namabarang = new ProductHandler(_unitOfWork).GetDetail(requestnamabarang); deliveryorderdetailrequest.Data.namabarang = namabarang.Entity.Name; DeliveryOrderDetailResponse _deliveryorderdetailresponse = new DeliveryOrderDetailResponse(); new DeliveryOrderDetailValidator(_unitOfWork).Validate(deliveryorderdetailrequest, out _deliveryorderdetailresponse); i++; } } }
public void OneTimeSetUp() { var bpService = appHost.Container.Resolve<BusinessPartnerService>(); starbucksBPResponse = bpService.Post(starbucksBP); var poService = appHost.Container.Resolve<PurchaseOrderService>(); coffeePO.CustomerId = starbucksBPResponse.Id; coffeePOResponse = poService.Post(coffeePO); }
public void Validate(PurchaseOrderRequest request, out PurchaseOrderResponse response) { response = new PurchaseOrderResponse(); if ((request.Action != null && request.Action.Equals(ClinicEnums.Action.DELETE.ToString())) || (request.Action != null && request.Action.Equals(ClinicEnums.Action.APPROVE.ToString())) || (request.Action != null && request.Action.Equals(ClinicEnums.Action.VALIDASI.ToString()))) { if (request.Action != null && request.Action.Equals(ClinicEnums.Action.DELETE.ToString())) { ValidateForDelete(request, out response); } else if (request.Action.Equals(ClinicEnums.Action.APPROVE.ToString())) { ValidateForApprove(request, out response); } else { ValidateForValidasi(request, out response); } } else { bool isHavePrivilege = true; if (request.Data.ponumber == null || String.IsNullOrWhiteSpace(request.Data.ponumber)) { errorFields.Add("Ponumber"); } if (errorFields.Any()) { response.Status = false; response.Message = string.Format(Messages.ValidationErrorFields, String.Join(",", errorFields)); } if (request.Data.Id == 0) { isHavePrivilege = IsHaveAuthorization(ADD_M_PURCHASEORDER, request.Data.Account.Privileges.PrivilegeIDs); } else { isHavePrivilege = IsHaveAuthorization(EDIT_M_PURCHASEORDER, request.Data.Account.Privileges.PrivilegeIDs); } if (!isHavePrivilege) { response.Status = false; response.Message = Messages.UnauthorizedAccess; } if (response.Status) { response = new PurchaseOrderHandler(_unitOfWork).CreateOrEdit(request); } } }
private void SendToQueue(PurchaseOrderResponse response) { if (response?.Message == null) { return; } foreach (var item in response.Message) { this.Queue.Enqueue(item); } }
public async Task Consume_whenUpdatedAndStatusApprovedAndPendingApproval_shouldApproveTheCost() { // Arrange var activityType = ActivityTypes.Updated; var approvalStatus = ApprovalStatuses.Approved; var requisition = "requisitionId"; var purchaseOrderResponse = new PurchaseOrderResponse { ActivityType = activityType, CostNumber = CostNumber, ClientName = BuType.Pg.ToString(), Payload = JObject.Parse(JsonConvert.SerializeObject(new PgPurchaseOrderResponse { ApprovalStatus = approvalStatus })) }; var operationResponse = new ApprovalServiceActionResult { Success = true }; var dbPurchaseOrderResponse = new PgPurchaseOrderResponse() { Requisition = requisition, }; var dbPaymentDetails = new PgPaymentDetails() { Requisition = requisition, }; var cost = _efContext.Cost.Find(_costId); cost.Status = CostStageRevisionStatus.PendingBrandApproval; _efContext.Cost.Update(cost); await _efContext.SaveChangesAsync(); _customDataServiceMock.Setup(cds => cds.GetCustomData <PgPurchaseOrderResponse>(It.IsAny <Guid>(), It.IsAny <string>())).Returns(Task.FromResult(dbPurchaseOrderResponse)); _customDataServiceMock.Setup(cds => cds.GetCustomData <PgPaymentDetails>(It.IsAny <Guid>(), It.IsAny <string>())).Returns(Task.FromResult(dbPaymentDetails)); _customDataServiceMock.Setup(cds => cds.Save(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <object>(), It.IsAny <UserIdentity>())).Returns(Task.FromResult(new CustomObjectData())); _approvalServiceMock.Setup(a => a.Approve(It.IsAny <Guid>(), It.IsAny <UserIdentity>(), BuType.Pg, SourceSystem.Coupa)).Returns(Task.FromResult(operationResponse)); _emailNotificationServiceMock.Setup(em => em.CostHasBeenApproved(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <string>())).Returns(Task.FromResult(true)); // Act await _consumer.Consume(purchaseOrderResponse); // Assert _approvalServiceMock.Verify(s => s.Approve(It.IsAny <Guid>(), It.IsAny <UserIdentity>(), BuType.Pg, SourceSystem.Coupa), Times.Once); _emailNotificationServiceMock.Verify(em => em.CostHasBeenApproved(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <string>()), Times.Once); Assert.AreEqual(requisition, dbPurchaseOrderResponse.Requisition); Assert.AreEqual(requisition, dbPaymentDetails.Requisition); }
public async Task Consume_whenUpdatedAndStatusRejected_shouldRejectTheCost() { // Arrange var activityType = ActivityTypes.Updated; var approvalStatus = ApprovalStatuses.Rejected; var purchaseOrderResponse = new PurchaseOrderResponse { ActivityType = activityType, CostNumber = CostNumber, ClientName = BuType.Pg.ToString(), Payload = JObject.Parse(JsonConvert.SerializeObject(new PgPurchaseOrderResponse { ApprovalStatus = approvalStatus })) }; var operationResponse = new ApprovalServiceActionResult() { Success = true }; var dbPurchaseOrderResponse = new PgPurchaseOrderResponse() { Requisition = "requisitionId", }; var dbPaymentDetails = new PgPaymentDetails() { Requisition = "requisitionId", }; _customDataServiceMock.Setup(cds => cds.GetCustomData <PgPurchaseOrderResponse>(It.IsAny <Guid>(), It.IsAny <string>())).Returns(Task.FromResult(dbPurchaseOrderResponse)); _customDataServiceMock.Setup(cds => cds.GetCustomData <PgPaymentDetails>(It.IsAny <Guid>(), It.IsAny <string>())).Returns(Task.FromResult(dbPaymentDetails)); _customDataServiceMock.Setup(cds => cds.Save(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <object>(), It.IsAny <UserIdentity>())).Returns(Task.FromResult(new CustomObjectData())); _approvalServiceMock.Setup(a => a.Reject(It.IsAny <Guid>(), It.IsAny <UserIdentity>(), BuType.Pg, It.IsAny <string>(), It.IsAny <SourceSystem>())).Returns(Task.FromResult(operationResponse)); _emailNotificationServiceMock.Setup(em => em.CostHasBeenRejected(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>())).Returns(Task.FromResult(true)); // Act await _consumer.Consume(purchaseOrderResponse); // Assert _approvalServiceMock.Verify(s => s.Reject(It.IsAny <Guid>(), It.IsAny <UserIdentity>(), BuType.Pg, It.IsAny <string>(), It.IsAny <SourceSystem>()), Times.Once); _emailNotificationServiceMock.Verify(em => em.CostHasBeenRejected(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>()), Times.Once); _customDataServiceMock.Verify(cds => cds.GetCustomData <PgPurchaseOrderResponse>(It.IsAny <Guid>(), It.IsAny <string>()), Times.Once); _customDataServiceMock.Verify(cds => cds.GetCustomData <PgPaymentDetails>(It.IsAny <Guid>(), It.IsAny <string>()), Times.Once); Assert.IsNull(dbPurchaseOrderResponse.Requisition); Assert.IsNull(dbPaymentDetails.Requisition); }
public JsonResult ApprovePurchaseOrder(int id) { PurchaseOrderResponse _response = new PurchaseOrderResponse(); var request = new PurchaseOrderRequest { Data = new PurchaseOrderModel { Id = id, Account = Session["UserLogon"] == null ? new AccountModel() : (AccountModel)Session["UserLogon"] }, Action = ClinicEnums.Action.APPROVE.ToString() }; new PurchaseOrderValidator(_unitOfWork).Validate(request, out _response); return(Json(new { Status = _response.Status, Message = _response.Message }, JsonRequestBehavior.AllowGet)); }
public JsonResult CreateOrEditPurchaseOrder(PurchaseOrderModel _purchaseorder, List <PurchaseOrderDetailModel> purchaseOrderDetailModels) { if (Session["UserLogon"] != null) { _purchaseorder.Account = (AccountModel)Session["UserLogon"]; } _purchaseorder.Id = Convert.ToInt32(_purchaseorder.Id) > 0 ? _purchaseorder.Id : 0; var request = new PurchaseOrderRequest { Data = _purchaseorder }; PurchaseOrderResponse _response = new PurchaseOrderResponse(); new PurchaseOrderValidator(_unitOfWork).Validate(request, out _response); if (purchaseOrderDetailModels != null) { int i = 0; foreach (var item in purchaseOrderDetailModels) { item.OrderNumber = i + 1; var purchaseorderdetailrequest = new PurchaseOrderDetailRequest { Data = item }; purchaseorderdetailrequest.Data.PurchaseOrderId = Convert.ToInt32(_response.Entity.Id); purchaseorderdetailrequest.Data.Account = (AccountModel)Session["UserLogon"]; // var requestnamabarang = new ProductRequest { Data = new ProductModel { Id = item.ProductId } }; ProductResponse namabarang = new ProductHandler(_unitOfWork).GetDetail(requestnamabarang); purchaseorderdetailrequest.Data.namabarang = namabarang.Entity.Name; PurchaseOrderDetailResponse _purchaseorderdetailresponse = new PurchaseOrderDetailResponse(); new PurchaseOrderDetailValidator(_unitOfWork).Validate(purchaseorderdetailrequest, out _purchaseorderdetailresponse); i++; } } return(Json(new { data = _response.Data }, JsonRequestBehavior.AllowGet)); }
public async Task Consume_whenUpdated_And_StatusAwaitingDecisionInCost_And_TotalAmountTheSameAsCurrent_And_CostStatusIsPendingBrandApproval_shouldApproveTheCost() { // Arrange var activityType = ActivityTypes.Updated; var approvalStatus = ApprovalStatuses.AwaitingDecisionInCost; const decimal totalAmountIncoming = (decimal)10000.23; // 2 Digits precision defined on schema level const decimal totalAmountCurrent = (decimal)10000.226; // Rounded to 2 digits amount is still the same as totalAmountIncoming //_cost.Status = CostStageRevisionStatus.PendingBrandApproval; var cost = _efContext.Cost.Find(_costId); cost.Status = CostStageRevisionStatus.PendingBrandApproval; _efContext.Cost.Update(cost); await _efContext.SaveChangesAsync(); var purchaseOrderResponse = new PurchaseOrderResponse { ActivityType = activityType, CostNumber = CostNumber, ClientName = BuType.Pg.ToString(), Payload = JObject.Parse(JsonConvert.SerializeObject(new PgPurchaseOrderResponse { ApprovalStatus = approvalStatus, TotalAmount = totalAmountIncoming })) }; var operationResponse = new ApprovalServiceActionResult { Success = true }; _approvalServiceMock.Setup(a => a.Approve(It.IsAny <Guid>(), It.IsAny <UserIdentity>(), BuType.Pg, SourceSystem.Coupa)).ReturnsAsync(operationResponse); _emailNotificationServiceMock.Setup(em => em.CostHasBeenRejected(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>())).Returns(Task.FromResult(true)); _pgPaymentServiceMock.Setup(p => p.GetPaymentAmount(It.Is <Guid>(id => id == _cost.LatestCostStageRevisionId.Value), false)) .ReturnsAsync(new PaymentAmountResult { TotalCostAmount = totalAmountCurrent }); // Act await _consumer.Consume(purchaseOrderResponse); // Assert _approvalServiceMock.Verify(s => s.Approve(It.IsAny <Guid>(), It.IsAny <UserIdentity>(), BuType.Pg, SourceSystem.Coupa), Times.Once); _emailNotificationServiceMock.Verify(em => em.CostHasBeenApproved(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <string>()), Times.Once); }
public async Task Consume(PurchaseOrderResponse message) { var cost = await _efContext.Cost .AsNoTracking() .FirstOrDefaultAsync(c => c.CostNumber == message.CostNumber); if (cost == null) { throw new XmgException($"Could't find the cost with Cost Number {message.CostNumber}") { ClientName = message.ClientName }; } try { var payload = JsonConvert.DeserializeObject <PgPurchaseOrderResponse>(message.Payload.ToString()); var adminUser = await _efContext.CostUser.FirstOrDefaultAsync(u => u.Email == ApprovalMemberModel.BrandApprovalUserEmail); var adminUserIdentity = new SystemAdminUserIdentity(adminUser); await _efContext.InTransactionAsync(async() => { await SaveResponse(payload, cost, adminUserIdentity); await ActionOnCost(message, payload, cost, adminUserIdentity); if (payload.ApprovalStatus == ApprovalStatuses.Approved || // ADC-1731 (payload.ApprovalStatus == ApprovalStatuses.AwaitingDecisionInCost && ApprovalRequired(cost) && await HasCostBeenApproved(cost, payload))) { // payload details are required in the email so the response needs to be saved before we can send the email await _emailNotificationService.CostHasBeenApproved(cost.Id, adminUserIdentity.Id, ApprovalType.Brand.ToString()); } }, () => _eventService.SendAllPendingAsync()); } catch (Exception ex) { var messageJson = JsonConvert.SerializeObject(message); throw new XmgException($"Failed to consume response message: {messageJson} from Coupa {ex}", ex); } }
private void ValidateForDelete(PurchaseOrderRequest request, out PurchaseOrderResponse response) { response = new PurchaseOrderResponse(); if (request.Action == ClinicEnums.Action.DELETE.ToString()) { bool isHavePrivilege = IsHaveAuthorization(DELETE_M_PURCHASEORDER, request.Data.Account.Privileges.PrivilegeIDs); if (!isHavePrivilege) { response.Status = false; response.Message = Messages.UnauthorizedAccess; } } if (response.Status) { response = new PurchaseOrderHandler(_unitOfWork).RemoveData(request); } }
public async Task Handle_always_ShouldCallConsumer() { // Arrange var activityType = ActivityTypes.Updated; var costNumber = "test cost number"; var purchaseOrderResponse = new PurchaseOrderResponse { ActivityType = activityType, CostNumber = costNumber, ClientName = BuType.Pg.ToString() }; // Act await _handler.Handle(purchaseOrderResponse); // Assert _consumerMock.Verify(c => c.Consume(purchaseOrderResponse), Times.Once); }
public async Task Handle_whenException_ShouldSendEmailToSupport() { // Arrange var activityType = ActivityTypes.Updated; var costNumber = "test cost number"; var purchaseOrderResponse = new PurchaseOrderResponse { ActivityType = activityType, CostNumber = costNumber, ClientName = "Invalid" }; // Act await _handler.Handle(purchaseOrderResponse); // Assert _supportNotificationServiceMock.Verify(b => b.SendSupportErrorNotification(costNumber, It.IsAny <string>(), It.IsAny <string>()), Times.Once); }
public PurchaseOrderResponse GetPurchaseOrder(string externalId) { //ManagePurchaseOrderInReadRequest request = new ManagePurchaseOrderInReadRequest(); PurchaseOrderByIDQueryMessage_sync query = new PurchaseOrderByIDQueryMessage_sync(); query.PurchaseOrder = new PurchaseOrderByIDQuery(); query.PurchaseOrder.ID = new BusinessTransactionDocumentID[1]; query.PurchaseOrder.ID[0] = new BusinessTransactionDocumentID(); query.PurchaseOrder.ID[0].Value = externalId; //request.PurchaseOrderByIDQuery_sync = query; var sapResponse = _manageClient.ManagePurchaseOrderInRead(query); PurchaseOrderResponse response = new PurchaseOrderResponse(); response.ExternalId = sapResponse.PurchaseOrder[0].ID.Value; return(response); }
public void Handle_whenException_ShouldSendEmailToSupportAndRethrowException() { // Arrange var activityType = ActivityTypes.Updated; var costNumber = "test cost number"; var purchaseOrderResponse = new PurchaseOrderResponse { ActivityType = activityType, CostNumber = costNumber, ClientName = BuType.Pg.ToString() }; _consumerMock.Setup(c => c.Consume(It.IsAny <PurchaseOrderResponse>())).Throws <Exception>(); // Act/Assert _handler.Awaiting(h => h.Handle(purchaseOrderResponse)).ShouldThrow <Exception>(); _supportNotificationServiceMock.Verify(b => b.SendSupportErrorNotification(costNumber, It.IsAny <string>(), It.IsAny <string>()), Times.Once); }
private async Task Reject(PurchaseOrderResponse message, PurchaseOrderErrorMessage errorMessage) { var adminUser = await _efContext.CostUser.FirstOrDefaultAsync(u => u.Email == ApprovalMemberModel.BrandApprovalUserEmail); var adminUserIdentity = new SystemAdminUserIdentity(adminUser); var cost = await _efContext.Cost.SingleAsync(c => c.CostNumber == message.CostNumber); var result = await _approvalService.Reject(cost.Id, adminUserIdentity, GetBuType(message.ClientName), errorMessage.Message, SourceSystem.Coupa); if (!result.Success) { await OnTechnicalError(message.CostNumber, $"Failed to reject cost due to error! {result.Messages}"); } else { var error = $"Cost {message.CostNumber} rejected due to : {errorMessage.Type.GetStringValue()} {errorMessage.Message}"; _logger.Information(error); await _emailNotificationService.CostHasBeenRejected( cost.Id, adminUser.Id, ApprovalType.Brand.ToString(), error); } }
public PurchaseOrderResponse ParseSapManageResponse(PurchaseOrderMaintainConfirmationBundleMessage_sync sapResponse, List <PurchaseOrderLine> lines) { PurchaseOrderResponse response = new PurchaseOrderResponse(); BaseResponse tempRes = SapLogParser.ParseSapResponseLog(sapResponse.Log); response.Errors = tempRes.Errors; response.Warnings = tempRes.Warnings; if (sapResponse.PurchaseOrder != null) { response.ExternalId = sapResponse.PurchaseOrder[0].BusinessTransactionDocumentID.Value; } response.Items = new List <PairedIdsResponse>(); foreach (var line in lines) { response.Items.Add(new PairedIdsResponse { LocalId = line.ItemDetails.Id, ExternalId = line.ItemDetails.ExternalId }); } return(response); }
public ActionResult PrintPurchaseOrder(int id) { PurchaseOrderResponse _response = new PurchaseOrderResponse(); var request = new PurchaseOrderRequest { Data = new PurchaseOrderModel { Id = id } }; PurchaseOrderResponse resp = new PurchaseOrderHandler(_unitOfWork).GetDetail(request); PurchaseOrderModel _model = resp.Entity; ViewBag.Response = _response; return(new PartialViewAsPdf(_model) { PageOrientation = Orientation.Portrait, PageSize = Size.Folio, FileName = "PurchaseOrder" + _model.ponumber + ".pdf" }); }
public PurchaseOrderResponse SetPurchaseOrder(PurchaseOrderRequest purchaseOrder) { var request = new PurchaseOrderBundleMaintainRequestMessage_sync(); request.PurchaseOrderMaintainBundle = new PurchaseOrderMaintainRequestBundle[1]; var poRequest = new PurchaseOrderMaintainRequestBundle(); poRequest.BusinessTransactionDocumentTypeCode = new BusinessTransactionDocumentTypeCode(); poRequest.BusinessTransactionDocumentTypeCode.Value = "001"; poRequest.ItemListCompleteTransmissionIndicator = true; poRequest.ItemListCompleteTransmissionIndicatorSpecified = true; poRequest.SellerParty = new PurchaseOrderMaintainRequestBundleParty(); poRequest.SellerParty.ObjectNodePartyTechnicalID = "3"; poRequest.SellerParty.PartyKey = new PartyKey(); poRequest.SellerParty.PartyKey.PartyID = new PartyID(); poRequest.SellerParty.PartyKey.PartyID.Value = purchaseOrder.AccountExternalId; poRequest.BillToParty = new PurchaseOrderMaintainRequestBundleParty(); poRequest.BillToParty.ObjectNodePartyTechnicalID = "5"; poRequest.BillToParty.PartyKey = new PartyKey(); poRequest.BillToParty.PartyKey.PartyID = new PartyID(); poRequest.BillToParty.PartyKey.PartyID.Value = purchaseOrder.OrganizationID; poRequest.BuyerParty = new PurchaseOrderMaintainRequestBundleParty(); poRequest.BuyerParty.ObjectNodePartyTechnicalID = "2"; poRequest.BuyerParty.PartyKey = new PartyKey(); poRequest.BuyerParty.PartyKey.PartyID = new PartyID(); poRequest.BuyerParty.PartyKey.PartyID.Value = purchaseOrder.OrganizationID; poRequest.EmployeeResponsibleParty = new PurchaseOrderMaintainRequestBundleParty(); poRequest.EmployeeResponsibleParty.PartyKey = new PartyKey(); poRequest.EmployeeResponsibleParty.PartyKey.PartyID = new PartyID(); poRequest.EmployeeResponsibleParty.PartyKey.PartyID.Value = purchaseOrder.Ownership.LeadOwner.ExternalId; poRequest.DeliveryTerms = new PurchaseOrderMaintainRequestBundleDeliveryTerms(); poRequest.DeliveryTerms.IncoTerms = new Incoterms(); poRequest.DeliveryTerms.IncoTerms.ClassificationCode = purchaseOrder.IncotermID; poRequest.CashDiscountTerms = new PurchaseOrderMaintenanceCashDiscountTerms(); poRequest.CashDiscountTerms.Code = new CashDiscountTermsCode(); poRequest.CashDiscountTerms.Code.Value = purchaseOrder.PaymentTermID; poRequest.CurrencyCode = purchaseOrder.CurrencyID; poRequest.Date = new DateTime(); poRequest.Date = Convert.ToDateTime(purchaseOrder.OrderDate); if (purchaseOrder.ExternalId != null) { poRequest.PurchaseOrderID = new BusinessTransactionDocumentID(); poRequest.PurchaseOrderID.Value = purchaseOrder.ExternalId; } //lines if (purchaseOrder.Lines != null && purchaseOrder.Lines.Count > 0) { try { poRequest.Item = SetPurchaseOrderLines(purchaseOrder.Lines, purchaseOrder.ToLocationExternalId); } catch (Exception ex) { var error = new PurchaseOrderResponse(); error.Errors.Add(ex.Message); return(error); } } request.PurchaseOrderMaintainBundle[0] = poRequest; var sapResponse = _manageClient.ManagePurchaseOrderInMaintainBundle(request); var parsedSapResponse = ParseSapManageResponse(sapResponse, purchaseOrder.Lines); return(parsedSapResponse); }