public ActionResult Edit(string id) { ReceiptViewModel model = ReceiptHelper.GetReceipt(id); if (model.CustomerSites == null) { model.CustomerSites = CustomerHelper.GetCustomerSites(model.CustomerId).Select(a => new SelectListItem { Text = a.SiteName.ToString(), Value = a.Id.ToString() }).ToList(); } if (model.Banks == null) { model.Banks = BankHelper.GetBankList(model.SOBId); } if (model.BankAccounts == null) { model.BankAccounts = BankHelper.GetBankAccountList(model.BankId); } SessionHelper.Calendar = CalendarHelper.GetCalendar(model.PeriodId.ToString()); SessionHelper.PrecisionLimit = CurrencyHelper.GetCurrency(model.CurrencyId.ToString()).Precision; return(View("Create", model)); }
public void ProcessReceiptTest() { // Arrange var byteList = new List <byte>(); byteList.Add(Convert.ToByte(22)); var receiptSegments = new List <List <ReceiptSegmentType> >(); var segmentList = new List <ReceiptSegmentType> { new ReceiptSegmentType { MimeData = byteList, Sequence = -1 } }; receiptSegments.Add(segmentList); var mimeType = "application/pdf"; var mockReceiptIntegration = new Mock <IReceiptIntegration>(); mockReceiptIntegration.Setup(x => x.MergePdf(It.IsAny <List <byte[]> >())).Returns(() => new byte[1]); // Act var result = ReceiptHelper.ProcessReceipt(receiptSegments, mimeType, mockReceiptIntegration.Object); // Assert Assert.IsTrue(result.Any()); }
/// <summary> /// Generates the receipt. /// </summary> /// <param name="rockContext">The rock context.</param> /// <returns></returns> protected InteractionComponent GenerateReceipt(RockContext rockContext) { var interactionService = new InteractionService(rockContext); var receipt = new InteractionComponent(); new InteractionComponentService(rockContext).Add(receipt); receipt.ChannelId = InteractionChannelCache.Get(com.shepherdchurch.CubeDown.SystemGuid.InteractionChannel.CUBE_DOWN_RECEIPTS.AsGuid()).Id; receipt.Name = "Temporary Receipt"; receipt.ComponentSummary = string.Format("Total {0:c}", Cart.Total); if (Customer != null) { receipt.EntityId = Customer.PrimaryAliasId; } foreach (var item in Cart.Items) { var interaction = new Interaction { EntityId = null, Operation = "Buy", InteractionDateTime = RockDateTime.Now, InteractionData = item.ToJson() }; if (item.Quantity == 1) { interaction.InteractionSummary = item.Name; } else { interaction.InteractionSummary = string.Format("{0} (qty {1})", item.Name, item.Quantity); } interactionService.Add(interaction); } rockContext.SaveChanges(); receipt = new InteractionComponentService(rockContext).Get(receipt.Id); var receiptCode = ReceiptHelper.EncodeReceiptCode(receipt); Cart.ReceiptCode = receiptCode; receipt.Name = string.Format("Receipt #{0}", receiptCode); receipt.ComponentData = Cart.ToJson(); rockContext.SaveChanges(); return(receipt); }
public ActionResult Delete(string id) { try { ReceiptHelper.DeleteReceipt(id); return(RedirectToAction("Index")); } catch (Exception ex) { return(RedirectToAction("Index", new { message = ex.Message })); } }
public List <DatColStockModel> MapToDatCol(Int32 vendorId, List <Model.WehkampStockMutation> mutations) { using (var pDb = new PetaPoco.Database(Environments.Current.Connection, "System.Data.SqlClient")) { int connectorID = pDb.FirstOrDefault <int>(@"select connectorid from contentproduct where vendorid = @0 and isassortment = 1", vendorId); int shopNumber = ConnectorHelper.GetStoreNumber(connectorID); int differenteShopNumber = VendorHelper.GetDifferenceShopNumber(vendorId); string employeeNumber = VendorHelper.GetEmployeeNumber(vendorId); var salesSlipNumber = ReceiptHelper.GetSlipNumber(vendorId); int _receiptIndex = GenericSlipNumberHelper.GetSlipNumberForTransfer(vendorId, ReceiptHelper.STOCK_SALESSLIP_RECEIPT_NUMBER_SETTING_KEY); int _receiptIndexSurplu = GenericSlipNumberHelper.GetSlipNumberForTransfer(vendorId, ReceiptHelper.STOCK_SALESSLIP_RECEIPT_NUMBER_SETTING_KEY_SURPLUS); mutations.ForEach(mutation => { _index += 200; var line = new DatColStockModel { StoreNumber = (mutation.MutationQuantity > 0 ? differenteShopNumber : shopNumber).ToString("D3") + " 01", EmployeeNumber = employeeNumber, ReceiptNumber = salesSlipNumber, TransactionType = "20", DateNotified = mutation.MutationDate.ToString("yyyyMMddHHmm"), RecordType = "01", SubType = "00", NumberOfSkus = Math.Abs(mutation.MutationQuantity), MancoOrSurplus = mutation.MutationQuantity > 0 ? shopNumber : differenteShopNumber, FixedField1 = "000000000+", RecordSequence = _index, FixedField2 = "000", FixedField3 = "000000000+", FixedField4 = "000", FixedField5 = "000000000+", FixedField6 = "000", OriginalSellingPrice = (int)Math.Round(PriceHelper.GetPrice(mutation.ProductID, vendorId) * 100), FixedField7 = "00", ArticleNumberColorCodeSizeCode = ProductHelper.GetPFAItemNumber(mutation.Articlenumber, mutation.Colorcode, mutation.ProductID), Barcode = BarcodeHelper.GetBarcode(mutation.ProductID), Receipt = string.Format("{0}{1}{2}", 0, mutation.MutationQuantity > 0 ? differenteShopNumber.ToString("D3") : shopNumber.ToString(), _receiptIndex.ToString().PadLeft(4, '0')), TaxCode = "1", EmployeeNumber2 = employeeNumber, ScannedWithBarcodeReader = 0 }; _list.Add(line); }); ReceiptHelper.IncrementSalesSlipNumber(ref salesSlipNumber, vendorId, ReceiptHelper.STOCK_SALESSLIP_NUMBER_SETTINGKEY); return(_list); } }
public AcApiResponse <CompleteSessionResponse, ReceiptsApiData> CompleteSession(CompleteSessionRequest req) { var resp = agentConnectIntegration.CompleteSession(req); var additionalData = ReceiptHelper.GenerateAdditionalDataReceipts(resp.Payload?.Receipts, receiptIntegration); var apiResp = new AcApiResponse <CompleteSessionResponse, ReceiptsApiData> { BusinessMetadata = MapperHelper.SetResponseProperties(resp.Payload?.Flags, DataSource.AgentConnect), ResponseData = resp, AdditionalData = additionalData }; return(apiResp); }
public AcApiResponse <BPValidationResponse, ReceiptsApiData> BPValidation(BPValidationRequest req) { var resp = agentConnectIntegration.BPValidation(req); // Process Receipt var additionalData = ReceiptHelper.GenerateAdditionalDataReceipts(resp.Payload?.Receipts, receiptIntegration); // Return Response View Model var apiResp = new AcApiResponse <BPValidationResponse, ReceiptsApiData> { BusinessMetadata = MapperHelper.SetResponseProperties(resp.Payload?.Flags, DataSource.AgentConnect), ResponseData = resp, AdditionalData = additionalData }; return(apiResp); }
public AcApiResponse <ReceiveValidationResponse, ReceiptsApiData> ReceiveValidation(ReceiveValidationRequest req) { // AgentConnect Validate call for RECV var resp = _agentConnectIntegration.ReceiveValidation(req); var additionalData = ReceiptHelper.GenerateAdditionalDataReceipts(resp.Payload?.Receipts, _receiptIntegration); // Map: Response Domain->Response View Model var apiResp = new AcApiResponse <ReceiveValidationResponse, ReceiptsApiData> { BusinessMetadata = MapperHelper.SetResponseProperties(resp.Payload?.Flags, DataSource.AgentConnect), ResponseData = resp, AdditionalData = additionalData }; return(apiResp); }
public void ProcessTextReceiptTest() { // Arrange var receiptData = new List <byte[]>(); var unitTestString = "Test receipt data string"; // Convert to base64 var base64EncodedString = Convert.ToBase64String(Encoding.UTF8.GetBytes(unitTestString)); // Convert base64 string to byte array var base64ByteArray = Encoding.UTF8.GetBytes(base64EncodedString); receiptData.Add(base64ByteArray); // Act var result = ReceiptHelper.ProcessTextReceipt(receiptData, "UTF-8"); var base64EncodedBytes = Convert.FromBase64String(result); var plainText = Encoding.UTF8.GetString(base64EncodedBytes); // Assert Assert.AreEqual(unitTestString, plainText); }
public AcApiResponse <SendValidationResponse, ReceiptsApiData> SendValidation(SendValidationRequest req) { //Create request business object for agent connect service call req.PrimaryReceiptLanguage = AuthIntegration.GetAgentPrimaryReceiptLanguage(); req.SecondaryReceiptLanguage = AuthIntegration.GetAgentSecondaryReceiptLanguage(); // AgentConnect sendValidation call for SEND var resp = _agentConnectIntegration.SendValidation(req); // Process Receipt var additionalData = ReceiptHelper.GenerateAdditionalDataReceipts(resp.Payload?.Receipts, _receiptIntegration); // Return Response View Model var apiResp = new AcApiResponse <SendValidationResponse, ReceiptsApiData> { BusinessMetadata = MapperHelper.SetResponseProperties(resp.Payload?.Flags, DataSource.AgentConnect), ResponseData = resp, AdditionalData = additionalData }; return(apiResp); }
public ActionResult Create(ReceiptViewModel model) { if (ModelState.IsValid) { bool validated = false; string result = ""; model.PeriodId = SessionHelper.Calendar.Id; model.CompanyId = AuthenticationHelper.CompanyId.Value; //Validation.. if (model.ReceiptDate >= SessionHelper.Calendar.StartDate && model.ReceiptDate <= SessionHelper.Calendar.EndDate) { validated = true; } if (validated) { result = ReceiptHelper.SaveReceipt(model); } return(RedirectToAction("Index")); } return(View(model)); }
private static ReceiptsApiData GenerateAdditionalDataPrecompletionTest(string mimeType) { var byteList = new List <byte> { Convert.ToByte(22) }; var segmentList = new List <ReceiptSegmentType> { new ReceiptSegmentType { MimeData = byteList, Sequence = -1 } }; var preCompletionReceiptType = new PreCompletionReceiptType { ReceiptMimeType = mimeType, Disclosure1MimeData = segmentList, Disclosure2MimeData = segmentList }; var mockReceiptIntegration = new Mock <IReceiptIntegration>(); mockReceiptIntegration.Setup(x => x.MergePdf(It.IsAny <List <byte[]> >())).Returns(() => new byte[1]); return(ReceiptHelper.GenerateAdditionalDataReceipts(preCompletionReceiptType, mockReceiptIntegration.Object)); }
public string GetReceipt() { var shoppingCart = _undoRedoStack.GetCart(); return(ReceiptHelper.Generate(shoppingCart)); }
public ActionResult ListPartial(long periodId, long customerId, long currencyId) { SessionHelper.Calendar = CalendarHelper.GetCalendar(ReceivablePeriodHelper.GetReceivablePeriod(periodId.ToString()).CalendarId.ToString()); return(PartialView("_List", ReceiptHelper.GetReceipts(SessionHelper.SOBId, SessionHelper.Calendar.Id, customerId, currencyId))); }
protected override void Process() { using (var unit = GetUnitOfWork()) { var vendors = unit.Scope.Repository <Vendor>().GetAll().ToList().Where(c => ((VendorType)c.VendorType).Has(VendorType.SupportsPFATransferOrders)).ToList(); int transferOrderType = (int)OrderTypes.TransferOrder; var ledgerRepo = unit.Scope.Repository <OrderLedger>(); vendors.ForEach((vendor, indexer) => { var mutationEngine = new FileHelperEngine(typeof(ReceivedTransferMutation)); var fileName = String.Format("{0}{1}", "mancosurplus", DateTime.Now.ToString("yyyyMMddHHmmss")); var mutations = new List <ReceivedTransferMutation>(); var rule = vendor.ContentProducts.FirstOrDefault(c => c.IsAssortment); rule.ThrowIfNull("Publication rule with IsAssortment is missing for vendor " + vendor.Name); List <OrderLine> lines = unit .Scope .Repository <OrderLine>() .GetAll(x => x.Order.OrderType == transferOrderType && x.Order.ConnectorID == rule.ConnectorID && x.OrderLedgers.Any(y => y.Status == (int)OrderLineStatus.ReceivedTransfer) && !x.OrderLedgers.Any(y => y.Status == (int)OrderLineStatus.ProcessedReceivedTransfer)).ToList(); var storeID = ConnectorHelper.GetStoreNumber(rule.ConnectorID); var employeeNumber = VendorHelper.GetEmployeeNumber(vendor.VendorID); var salesSlipNumber = ReceiptHelper.GetSlipNumber(vendor.VendorID); //ReceiptHelper.IncrementSalesSlipNumber(ref salesSlipNumber); var toProcess = lines.GroupBy(k => k.Order).ToList().Select(c => new { Order = c.Key, OrderLines = c.ToList(), ExtraOrderLines = c.Key.OrderLines.Except(c.ToList()) }).ToList(); foreach (var order in toProcess) { PfaOrderHelper helper = new PfaOrderHelper(vendor.VendorID); if (order.OrderLines.Count == 0) { continue; } order.OrderLines.AddRange(order.ExtraOrderLines); var receivedByWehkampDate = order.OrderLines.FirstOrDefault().OrderLedgers.FirstOrDefault(c => c.Status == (int)OrderLineStatus.ReceivedTransfer).LedgerDate.ToLocalTime(); List <TransferOrderModel> list = helper.GetShippedQuantitiesForOrder(order.Order.WebSiteOrderNumber, order.Order.ConnectorID); if (list.Count > 0) { List <TransferOrderLine> orderLinesToBeProcessed = GetOrderLineStatus(order.OrderLines, list, order.Order.OrderID, vendor.VendorID, unit); if (list.Count > order.OrderLines.Count()) { //more lines are in PFA than in the Concentrator log.AuditInfo(string.Format("For order {0} there are {1} order lines in Concentrator and {2} in PFA. Difference found of {3} lines." , order.Order.WebSiteOrderNumber, order.OrderLines.Count(), list.Count, order.ExtraOrderLines.Count())); } if (orderLinesToBeProcessed.Any(c => c.ShippedFromPFA != c.ReceivedFromWehkamp)) { var differences = orderLinesToBeProcessed.Where(c => c.ShippedFromPFA != c.ReceivedFromWehkamp); //add each quantity unmatched product differences.ForEach((difference, index) => { var unmatchedQuantityLine = GetDifferenceRuleForIncompleteShipping(difference, orderLinesToBeProcessed.Sum(x => x.ReceivedFromWehkamp), orderLinesToBeProcessed.Sum(x => x.ShippedFromPFA), storeID, employeeNumber, vendor.VendorID, receivedByWehkampDate, salesSlipNumber); mutations.Add(unmatchedQuantityLine); }); //add the total rule mutations.AddRange(GetTotalRuleForIncompleteShipping(order.Order, orderLinesToBeProcessed.Sum(x => x.ReceivedFromWehkamp), orderLinesToBeProcessed.Sum(x => x.ShippedFromPFA), storeID, employeeNumber, vendor.VendorID, receivedByWehkampDate, salesSlipNumber)); } else { //add quantity matched list mutations.AddRange(GetCompletelyShippedRule(order.Order, orderLinesToBeProcessed.Sum(x => x.ReceivedFromWehkamp), storeID, employeeNumber, vendor.VendorID, receivedByWehkampDate, salesSlipNumber)); } } else { log.AuditError("Ignoring order " + order.Order.WebSiteOrderNumber + ": No lines found in PFA"); } foreach (var line in order.OrderLines) { line.SetStatus(OrderLineStatus.ProcessedReceivedTransfer, ledgerRepo); } ReceiptHelper.IncrementSalesSlipNumber(ref salesSlipNumber, vendor.VendorID); } if (mutations.Count > 0) { var file = mutationEngine.WriteString(mutations); var path = CommunicatorService.GetMessagePath(vendor.VendorID, MessageTypes.TransferOrderConfirmation); File.WriteAllText(Path.Combine(path.MessagePath, fileName), file); } unit.Save(); }); } }
/// <summary> /// Shows the receipt. /// </summary> /// <param name="receiptCode">The receipt code.</param> protected void ShowReceipt(string receiptCode) { var rockContext = new RockContext(); ShoppingCart cart = null; Person customer = null; int? receiptId = null; int entityTypeId = EntityTypeCache.Get(typeof(InteractionComponent)).Id; int maxAgeInDays = GetAttributeValue("MaxReceiptAge").AsInteger(); nbNotFound.Visible = true; lReceipt.Text = string.Empty; if (string.IsNullOrWhiteSpace(receiptCode)) { return; } // // Attempt to decode the receipt code. // ushort?receiptSecret; receiptId = ReceiptHelper.DecodeReceiptCode(receiptCode, out receiptSecret); if (!receiptId.HasValue) { return; } // // Load the receipt and validate the code. // var receipt = new InteractionComponentService(rockContext).Get(receiptId.Value); if (receipt == null || !ReceiptHelper.ValidateReceiptCode(receipt, receiptCode)) { return; } // // Verify the receipt is not past the age limit. // if (maxAgeInDays > 0 && RockDateTime.Now.Subtract(receipt.CreatedDateTime.Value).TotalDays >= maxAgeInDays) { return; } // // Load the cart and the customer if we have one. // cart = receipt.ComponentData.FromJsonOrNull <ShoppingCart>(); if (cart == null) { return; } if (receipt.EntityId.HasValue) { customer = new PersonAliasService(rockContext).GetPerson(receipt.EntityId.Value); } // // Load any related payments. // var payments = new FinancialTransactionService(rockContext).Queryable() .Where(t => t.TransactionDetails.Any(d => d.EntityTypeId == entityTypeId && d.EntityId == receiptId)); // // Setup the lava merge and display the receipt. // var mergeFields = Rock.Lava.LavaHelper.GetCommonMergeFields(RockPage, CurrentPerson); mergeFields.Add("Cart", cart); mergeFields.Add("Person", customer); mergeFields.Add("Payments", payments); nbNotFound.Visible = false; lReceipt.Text = GetAttributeValue("ReceiptTemplate").ResolveMergeFields(mergeFields, CurrentPerson); }