private void Page_Load(object sender, System.EventArgs e) { Usr.KickUserIfNotLoggedIn(); ContainerPage.SslPage = true; if (!Page.IsPostBack) { DonateLoggedOut.Visible = Usr.Current == null; DonateLoggedIn.Visible = Usr.Current != null; if (Usr.Current != null) { UsrDonationIcon udi = new UsrDonationIcon { DonationIconK = DonationIcon.K, UsrK = Usr.Current.K, BuyableLockDateTime = DateTime.Now, Enabled = false }; udi.Update(); InvoiceDataHolder i = new InvoiceDataHolder(); InvoiceItemDataHolder iidh = new InvoiceItemDataHolder(); if (DonationIcon.Vatable.Value) iidh.VatCode = InvoiceItem.VATCodes.T1; else iidh.VatCode = InvoiceItem.VATCodes.T9; if (DonationIcon.Charity) { iidh.Type = InvoiceItem.Types.CharityDonation; iidh.Description = "Charity donation"; iidh.ShortDescription = "Charity donation"; } else { iidh.Type = InvoiceItem.Types.UsrDonate; iidh.Description = "Profile icon"; iidh.ShortDescription = "Profile icon"; } iidh.SetTotal(DonationIcon.Price); iidh.KeyData = Usr.Current.K; iidh.BuyableObjectK = udi.K; iidh.BuyableObjectType = Model.Entities.ObjectType.UsrDonationIcon; iidh.RevenueStartDate = DateTime.Today; iidh.RevenueEndDate = DateTime.Today; i.InvoiceItemDataHolderList.Add(iidh); i.Type = Invoice.Types.Invoice; i.UsrK = Usr.Current.K; Payment.Invoices.Clear(); Payment.Invoices.Add(i); Payment.PromoterK = 0; Payment.Initialize(); } } }
private void ProcessInvoiceTotals() { invoiceTotalDone = true; invoiceTotal = 0.0m; invoiceTotalAsCampaignCredits = 0; decimal totalMoneyForFixedDiscountCampaignCredits = 0; int totalNumberOfFixedDiscountCampaignCredits = 0; if (CampaignCredits.Count > 0) { string invoiceItemDescription = ""; paymentTypeIsCampaignCredits = true; bool fixedDiscountUsed = false; foreach (CampaignCredit cc in CampaignCredits) { if (cc.BuyableObject != null && cc.BuyableObject is IBuyableCredits) { // We need to regenerate campaign credits from saved buyable object to verify any price changes. List<CampaignCredit> generatedCampaignCredits = ((IBuyableCredits)cc.BuyableObject).ToCampaignCredits(Usr.Current, CurrentPromoter.K, false); foreach (CampaignCredit genCC in generatedCampaignCredits) { if (genCC.InvoiceItemType == cc.InvoiceItemType) { cc.Credits = genCC.Credits; cc.IsPriceFixed = genCC.IsPriceFixed; cc.FixedDiscount = genCC.FixedDiscount; cc.Description = genCC.Description; cc.Update(); break; } } invoiceItemDescription += cc.Description + " | "; } // campaign credits come in negative invoiceTotalAsCampaignCredits += (-cc.Credits); if (cc.IsPriceFixed) { fixedDiscountUsed = true; totalMoneyForFixedDiscountCampaignCredits += CampaignCredit.CalculateTotalCostForCredits(-cc.Credits, cc.FixedDiscount, cc.Promoter); totalNumberOfFixedDiscountCampaignCredits += -cc.Credits; } } if (invoiceItemDescription.Length > 2) invoiceItemDescription = invoiceItemDescription.Substring(0, invoiceItemDescription.Length - 3); AllowPayWithCampaignCredits = !fixedDiscountUsed; this.PayOptionRadioButtonPayWithCampaignCredit.Enabled = AllowPayWithCampaignCredits; if (!fixedDiscountUsed) { invoiceTotalAsCampaignCredits -= CampaignCreditsApplied; } double nonFixedCampaignCreditDiscount = CampaignCredit.GetDiscountForCredits(invoiceTotalAsCampaignCredits, CurrentPromoter); totalCampaignCreditsAsMoney = Math.Round(CampaignCredit.CalculateTotalCostForCredits(invoiceTotalAsCampaignCredits - totalNumberOfFixedDiscountCampaignCredits, nonFixedCampaignCreditDiscount, CurrentPromoter) + totalMoneyForFixedDiscountCampaignCredits, 2); // then we actually want to make the equivalent money cost to be the cost of the total credits // including bulk discount totalVatOnCampaignCreditsAsMoney = Math.Round(((decimal)Invoice.VATRate(Invoice.VATCodes.T1, DateTime.Now)) * totalCampaignCreditsAsMoney, 2); invoiceTotal = Math.Round(totalCampaignCreditsAsMoney + totalVatOnCampaignCreditsAsMoney, 2); //ViewState["InvoiceTotal"] = invoiceTotal; // avoid adding this invoice item multiple times if (Invoices.Count == 0) { SetInvoiceTotalAsCampaignCreditsDiscount(fixedDiscountUsed); // Generate Positive Campaign Credit to balance account and an invoice to pay for it CampaignCredit campaignCredit = new CampaignCredit() { Credits = invoiceTotalAsCampaignCredits, ActionDateTime = DateTime.Now, BuyableLockDateTime = DateTime.Now, BuyableObjectType = Model.Entities.ObjectType.Invoice, Description = invoiceTotalAsCampaignCredits.ToString() + " credits", Enabled = false, PromoterK = CurrentPromoter.K, InvoiceItemType = InvoiceItem.Types.CampaignCredits, DisplayOrder = 0 }; if(invoiceItemDescription.Length > 0) campaignCredit.Description += " [" + invoiceItemDescription + "]"; if (fixedDiscountUsed) campaignCredit.FixedDiscount = invoiceTotalAsCampaignCreditsDiscount; campaignCredit.SetUsrAndActionUsr(Usr.Current, false); campaignCredit.Update(); InvoiceDataHolder idh = new InvoiceDataHolder() { ActionUsrK = Usr.Current.K, CreatedDateTime = DateTime.Now, DueDateTime = DateTime.Now, Paid = false, PromoterK = CurrentPromoter.K, Type = Invoice.Types.Invoice, VatCode = Invoice.VATCodes.T1 }; InvoiceItemDataHolder iidh = new InvoiceItemDataHolder() { BuyableObjectK = campaignCredit.K, BuyableObjectType = Model.Entities.ObjectType.CampaignCredit, Description = campaignCredit.Credits.ToString() + " credits", PriceBeforeDiscount = campaignCredit.Credits * CurrentPromoter.CostPerCampaignCredit, RevenueStartDate = DateTime.Today, RevenueEndDate = DateTime.Today, ShortDescription = campaignCredit.Credits.ToString() + " credits", State = DataHolderState.Added, Type = InvoiceItem.Types.CampaignCredits, VatCode = InvoiceItem.VATCodes.T1 }; if (invoiceItemDescription.Length > 0) iidh.Description += " [" + invoiceItemDescription + "]"; iidh.Discount = invoiceTotalAsCampaignCreditsDiscount; idh.InvoiceItemDataHolderList.Add(iidh); this.Invoices.Add(idh); } else if(Invoices.Count == 1 && Invoices[0].InvoiceItemDataHolderList.Count > 0) { if (Invoices[0].InvoiceItemDataHolderList[0].BuyableObjectType == Model.Entities.ObjectType.CampaignCredit && Invoices[0].InvoiceItemDataHolderList[0].BuyableObjectK > 0) { SetInvoiceTotalAsCampaignCreditsDiscount(fixedDiscountUsed); CampaignCredit campaignCredit = new CampaignCredit(Invoices[0].InvoiceItemDataHolderList[0].BuyableObjectK); campaignCredit.Credits = invoiceTotalAsCampaignCredits; campaignCredit.ActionDateTime = DateTime.Now; campaignCredit.BuyableLockDateTime = DateTime.Now; campaignCredit.Description = invoiceTotalAsCampaignCredits.ToString() + " credits"; campaignCredit.FixedDiscount = invoiceTotalAsCampaignCreditsDiscount; campaignCredit.IsPriceFixed = true; Invoices[0].InvoiceItemDataHolderList[0].Description = campaignCredit.Description; Invoices[0].InvoiceItemDataHolderList[0].ShortDescription = campaignCredit.Description; Invoices[0].InvoiceItemDataHolderList[0].PriceBeforeDiscount = campaignCredit.Credits * CurrentPromoter.CostPerCampaignCredit; Invoices[0].InvoiceItemDataHolderList[0].Discount = invoiceTotalAsCampaignCreditsDiscount; if (invoiceItemDescription.Length > 0) { campaignCredit.Description += " [" + invoiceItemDescription + "]"; Invoices[0].InvoiceItemDataHolderList[0].Description += " [" + invoiceItemDescription + "]"; } campaignCredit.SetUsrAndActionUsr(Usr.Current, false); campaignCredit.Update(); } } } else { paymentTypeIsCampaignCredits = false; foreach (InvoiceDataHolder idh in Invoices) { invoiceTotal += idh.AmountDue; } } }
public void Buy_Click(object o, System.EventArgs e) { EnsureSecure(); if (Page.IsValid) { GuestlistCredit gc = new GuestlistCredit(); gc.DateTimeCreated = DateTime.Now; gc.Credits = int.Parse(BuyCredits.Text); gc.PromoterK = CurrentPromoter.K; gc.TotalPrice = CurrentPromoter.GuestlistCharge * int.Parse(BuyCredits.Text); gc.Done = false; gc.Update(); ChangePanel(PanelPay); this.ViewState["GuestlistCreditK"] = gc.K; InvoiceDataHolder i = new InvoiceDataHolder(); InvoiceItemDataHolder iidh = new InvoiceItemDataHolder(); iidh.VatCode = InvoiceItem.VATCodes.T1; iidh.PriceBeforeDiscount = gc.TotalPrice; iidh.Type = InvoiceItem.Types.GuestlistCredit; iidh.KeyData = gc.K; iidh.BuyableObjectK = gc.K; iidh.BuyableObjectType = Model.Entities.ObjectType.GuestlistCredit; iidh.RevenueStartDate = DateTime.Today; iidh.RevenueEndDate = DateTime.Today; iidh.Description = gc.Credits.ToString("#,###") + " guestlist credits"; i.InvoiceItemDataHolderList.Add(iidh); i.PromoterK = CurrentPromoter.K; i.UsrK = Usr.Current.K; i.VatCode = Invoice.VATCodes.T1; Payment.Invoices.Clear(); Payment.Invoices.Add(i); Payment.PromoterK = CurrentPromoter.K; Payment.Initialize(); ContainerPage.SslPage = true; //Response.Redirect("https://www.paypal.com/xclick/business=paypal%40dontstayin.com&item_name=Payment+for+"+int.Parse(BuyCredits.Text).ToString()+"+guestlist+credits+code+guestlist-"+gc.K.ToString()+"&amount="+gc.TotalPrice.ToString("0.00")+"&no_note=1¤cy_code=GBP"); } }
public static void Refund(Usr actionUsr, List<Ticket> tickets, bool refundIncludeBookingFee, decimal chargeToPromoter) { try { if (tickets.Count > 0 && actionUsr.IsSuperAdmin) { chargeToPromoter = Math.Abs(chargeToPromoter); List<int> ticketRunKs = new List<int>(); int promoterK = tickets[0].TicketRun.PromoterK; int eventK = tickets[0].TicketRun.EventK; foreach (Ticket ticket in tickets) { if (promoterK != ticket.TicketRun.PromoterK) throw new Exception("Cannot automate refund for tickets belonging to more than 1 promoter."); if (eventK != ticket.TicketRun.EventK) throw new Exception("Cannot automate refund for tickets belonging to more than 1 event."); } TicketPromoterEvent ticketPromoterEvent = new TicketPromoterEvent(promoterK, eventK); bool chargePromoterTicketPrice = ticketPromoterEvent.FundsReleased && ticketPromoterEvent.FundsTransfer != null && ticketPromoterEvent.FundsTransfer.Status == Transfer.StatusEnum.Success; bool areFundsAlreadyReleased = chargePromoterTicketPrice; decimal sumTicketPrice = 0; string failedTicketKs = ""; List<Exception> failedRefundExceptions = new List<Exception>(); int successfulRefundTransferCount = 0; int successfulRefundQuantity = 0; foreach (Ticket ticket in tickets) { try { RefundTicket(actionUsr, ticket, refundIncludeBookingFee, areFundsAlreadyReleased); if (ticket.Cancelled) { if (!ticketRunKs.Contains(ticket.TicketRunK)) ticketRunKs.Add(ticket.TicketRunK); successfulRefundTransferCount++; successfulRefundQuantity += ticket.Quantity; if (chargePromoterTicketPrice) sumTicketPrice += ticket.Price; } } catch (Exception ex) { failedRefundExceptions.Add(ex); failedTicketKs += ticket.K.ToString() + ", "; } } if (successfulRefundTransferCount > 0 && (chargePromoterTicketPrice || chargeToPromoter > 0)) { // create invoice with tickets.count * chargeToPromoter invoice item for refund. DateTime now = DateTime.Now; InvoiceDataHolder refundChargeInvoiceDH = new InvoiceDataHolder(); refundChargeInvoiceDH.ActionUsrK = Usr.Current.K; refundChargeInvoiceDH.CreatedDateTime = now; refundChargeInvoiceDH.DueDateTime = now.AddDays(tickets[0].TicketRun.Promoter.InvoiceDueDaysEffective > Vars.InvoiceDueDaysDefault ? tickets[0].TicketRun.Promoter.InvoiceDueDaysEffective : Vars.InvoiceDueDaysDefault); refundChargeInvoiceDH.DuplicateGuid = Guid.NewGuid(); refundChargeInvoiceDH.PromoterK = tickets[0].TicketRun.PromoterK; refundChargeInvoiceDH.TaxDateTime = now; refundChargeInvoiceDH.Type = Invoice.Types.Invoice; if (tickets[0].TicketRun.Promoter.PrimaryUsrK != 0) refundChargeInvoiceDH.UsrK = tickets[0].TicketRun.Promoter.PrimaryUsrK; else refundChargeInvoiceDH.UsrK = Usr.Current.K; refundChargeInvoiceDH.VatCode = Invoice.VATCodes.T1; if (chargePromoterTicketPrice) { InvoiceItemDataHolder iidhPrice = new InvoiceItemDataHolder(); iidhPrice.RevenueStartDate = now; iidhPrice.RevenueEndDate = now; iidhPrice.Description = "Ticket price refund charge for " + successfulRefundQuantity.ToString() + " ticket" + (successfulRefundQuantity > 1 ? "s" : ""); iidhPrice.ShortDescription = "Ticket price refund charge"; iidhPrice.Type = InvoiceItem.Types.Misc; iidhPrice.VatCode = InvoiceItem.VATCodes.T9; iidhPrice.SetTotal(Math.Round(sumTicketPrice, 2)); refundChargeInvoiceDH.InvoiceItemDataHolderList.Add(iidhPrice); } InvoiceItemDataHolder iidh = new InvoiceItemDataHolder(); iidh.RevenueStartDate = now; iidh.RevenueEndDate = now; iidh.Description = "Ticket refund charge for " + successfulRefundTransferCount.ToString() + " ticket" + (successfulRefundTransferCount > 1 ? "s" : "") + " transfers"; iidh.ShortDescription = "Ticket refund charge"; iidh.Type = InvoiceItem.Types.Misc; iidh.VatCode = InvoiceItem.VATCodes.T1; iidh.SetTotal(Math.Round(successfulRefundTransferCount * chargeToPromoter, 2)); refundChargeInvoiceDH.InvoiceItemDataHolderList.Add(iidh); Invoice refundChargeInovice = refundChargeInvoiceDH.UpdateInsertDelete(); foreach (int ticketRunK in ticketRunKs) { new TicketRun(ticketRunK).CalculateSoldTicketsAndUpdate(); } refundChargeInovice.UpdateAndAutoApplySuccessfulTransfersWithAvailableMoney(); Utilities.EmailInvoice(refundChargeInovice, true); if (areFundsAlreadyReleased) ticketPromoterEvent.CalculateTotalFundsAndVat(); } failedTicketKs = failedTicketKs.Trim(); if (failedTicketKs.Length > 0) { string exceptionMessages = ""; foreach (Exception ex in failedRefundExceptions) exceptionMessages += ex.Message + "\n\n"; failedTicketKs = failedTicketKs.Substring(0, failedTicketKs.Length - 1); throw new Exception("Failed to refund the following tickets #" + failedTicketKs + ". Exception messages: " + exceptionMessages); } } } catch (Exception ex) { Utilities.AdminEmailAlert("Exception in Ticket.Refund(List<Ticket> tickets)", "Exception in Ticket.Refund(List<Ticket> tickets)", ex, tickets.ConvertAll(ticket => (IBobAsHTML)ticket)); throw ex; } }
public CampaignCredit PurchaseCampaignCreditsWithRemainingFunds(Usr actionUsr, double discountForCredits) { decimal total = this.AmountRemaining(); if (actionUsr.IsAdmin && total > 0) { DateTime now = Time.Now; InvoiceDataHolder idh = new InvoiceDataHolder() { CreatedDateTime = now, DueDateTime = now, DuplicateGuid = new Guid(), PromoterK = this.PromoterK, SalesUsrK = this.Promoter.SalesUsrK, TaxDateTime = now, Type = Invoice.Types.Invoice, VatCode = Invoice.VATCodes.T1 }; InvoiceItemDataHolder iidh = new InvoiceItemDataHolder() { //BuyableObjectK = campaingCredit.K, BuyableObjectType = Model.Entities.ObjectType.CampaignCredit, //Description = campaingCredit.Description, Discount = discountForCredits, RevenueStartDate = now, RevenueEndDate = now, //ShortDescription = campaingCredit.Description, Type = InvoiceItem.Types.CampaignCredits, VatCode = InvoiceItem.VATCodes.T1 }; iidh.SetTotal(total); int credits = CampaignCredit.CalculateTotalCreditsForMoney(iidh.Price, discountForCredits, this.Promoter); if (credits > 0) { iidh.Discount = 1 - (double)Math.Round(iidh.Price / credits, 4); iidh.SetTotal(total); string description = credits.ToString() + " credits"; iidh.Description = description; iidh.ShortDescription = description; idh.InvoiceItemDataHolderList.Add(iidh); Invoice invoice = idh.UpdateInsertDelete(); invoice.SetUsrAndActionUsr(actionUsr); invoice.AssignSalesUsrAndAmount(); invoice.ApplyTransfersToThisInvoice(this); invoice.UpdateAndSetPaidStatus(); CampaignCredit campaingCredit = new CampaignCredit() { ActionDateTime = now, ActionUsrK = actionUsr.K, BuyableObjectK = invoice.K, BuyableObjectType = Model.Entities.ObjectType.Invoice, Credits = credits, Description = description, DisplayOrder = 0, Enabled = true, FixedDiscount = iidh.Discount, InvoiceItemType = InvoiceItem.Types.CampaignCredits, IsPriceFixed = true, PromoterK = this.PromoterK }; campaingCredit.SetUsrAndActionUsr(actionUsr); campaingCredit.UpdateWithRecalculateBalance(); invoice.Items[0].BuyableObjectK = campaingCredit.K; invoice.Items[0].Update(); return campaingCredit; } else return null; } else return null; }
private void LoadTicketsToPaymentControl() { Payment.Reset(); if (Usr.Current == null) throw new DsiUserFriendlyException("You must be logged in to purchase tickets."); InvoiceDataHolder idh = new InvoiceDataHolder(); idh.ActionUsrK = Usr.Current.K; idh.CreatedDateTime = DateTime.Now; idh.DuplicateGuid = (Guid)ViewState["DuplicateGuid"]; idh.PromoterK = 0; idh.Type = Invoice.Types.Invoice; idh.VatCode = Invoice.VATCodes.T1; DateTime now = DateTime.Now; foreach (Ticket ticket in TicketsToPurchase) { InvoiceItemDataHolder iidhTicket = new InvoiceItemDataHolder(); InvoiceItemDataHolder iidhBookingFee = new InvoiceItemDataHolder(); if (ticket.TicketRun.Promoter.VatStatus == Promoter.VatStatusEnum.Registered) iidhTicket.VatCode = InvoiceItem.VATCodes.T1; else iidhTicket.VatCode = InvoiceItem.VATCodes.T0; iidhTicket.SetTotal(ticket.Price); iidhTicket.Type = InvoiceItem.Types.EventTickets; iidhTicket.KeyData = ticket.K; iidhTicket.BuyableObjectK = ticket.K; iidhTicket.BuyableObjectType = Model.Entities.ObjectType.Ticket; iidhTicket.RevenueStartDate = now; iidhTicket.RevenueEndDate = now; iidhTicket.Description = ticket.Description; iidhTicket.ShortDescription = ticket.ShortDescription; iidhBookingFee.VatCode = InvoiceItem.VATCodes.T1; iidhBookingFee.SetTotal(ticket.BookingFee); iidhBookingFee.Type = InvoiceItem.Types.EventTicketsBookingFee; iidhBookingFee.KeyData = ticket.K; iidhBookingFee.BuyableObjectK = ticket.K; iidhBookingFee.BuyableObjectType = Model.Entities.ObjectType.Ticket; iidhBookingFee.RevenueStartDate = now; iidhBookingFee.RevenueEndDate = now; iidhBookingFee.Description = "Booking fee"; iidhBookingFee.ShortDescription = "Booking fee"; idh.InvoiceItemDataHolderList.Add(iidhTicket); idh.InvoiceItemDataHolderList.Add(iidhBookingFee); } //how many visits has this user had? Query qVisits = new Query(); qVisits.QueryCondition = new Q(Visit.Columns.UsrK, Usr.Current.K); qVisits.ReturnCountOnly = true; VisitSet vsCount = new VisitSet(qVisits); if (vsCount.Count <= 20) Payment.FraudCheck = Transfer.FraudCheckEnum.Strict; Payment.Invoices.Add(idh); Payment.PromoterK = 0; Payment.AllowPayWithBalance = false; Payment.ShowItemsIncVat = true; Payment.UsrK = Usr.Current.K; Payment.Initialize(); Payment.LoadBuyerDetailsToScreen(); //this.TicketsPanel.Visible = false; //this.PayForTicketsPanel.Visible = true; }
private void LoadPaymentControl() { int credits = int.Parse(SelectedCredits.Value); Payment.Reset(); if (CurrentCampaignCredit == null) { CampaignCredit cc = new CampaignCredit() { Credits = credits, Enabled = false, ActionDateTime = Time.Now, PromoterK = CurrentPromoter.K, Description = credits.ToString() + " credits", DisplayOrder = 0, BuyableObjectType = Model.Entities.ObjectType.Invoice }; cc.SetUsrAndActionUsr(Usr.Current); cc.UpdateWithRecalculateBalance(); CurrentCampaignCredit = cc; } if (CurrentCampaignCredit.Credits != credits) { CurrentCampaignCredit.Credits = credits; CurrentCampaignCredit.UpdateWithRecalculateBalance(); } InvoiceDataHolder idh = new InvoiceDataHolder() { CreatedDateTime = Time.Now, PromoterK = CurrentPromoter.K, VatCode = Invoice.VATCodes.T1, ActionUsrK = Usr.Current.K, Type = Invoice.Types.Invoice, UsrK = Usr.Current.K }; InvoiceItemDataHolder iidh = new InvoiceItemDataHolder() { Description = credits + " credits", ShortDescription = credits + " credits", BuyableObjectK = CurrentCampaignCredit.K, BuyableObjectType = Model.Entities.ObjectType.CampaignCredit, VatCode = InvoiceItem.VATCodes.T1, Type = InvoiceItem.Types.CampaignCredits, RevenueStartDate = Time.Now, RevenueEndDate = Time.Now }; iidh.PriceBeforeDiscount = (credits * CurrentPromoter.CostPerCampaignCredit); if (CurrentCampaignCredit.IsPriceFixed) iidh.Discount = CurrentCampaignCredit.FixedDiscount; else iidh.Discount = CampaignCredit.GetDiscountForCredits(credits, CurrentPromoter); idh.InvoiceItemDataHolderList.Add(iidh); idh.DuplicateGuid = DuplicateGuid; Payment.Invoices.Add(idh); Payment.PromoterK = CurrentPromoter.K; Payment.Initialize(); CreditsPanel.Visible = false; PaymentPanel.Visible = true; SuccessPanel.Visible = false; }
public void LoadTicketsToPaymentControl(TicketSet ticketsToPurchase) { Payment.Reset(); if (Usr.Current == null) throw new DsiUserFriendlyException("You must be logged in to purchase tickets."); if (!Usr.Current.IsEmailVerified || Usr.Current.IsEmailBroken) HttpContext.Current.Response.Redirect("/pages/emailverify?url=" + HttpContext.Current.Server.UrlEncode(HttpContext.Current.Request.Url.ToString()) + "&er=" + HttpContext.Current.Server.UrlEncode("You need to verify your email to buy tickets")); InvoiceDataHolder idh = new InvoiceDataHolder(); idh.ActionUsrK = Usr.Current.K; idh.CreatedDateTime = DateTime.Now; idh.DuplicateGuid = (Guid)ViewState["DuplicateGuid"]; idh.PromoterK = 0; idh.Type = Invoice.Types.Invoice; idh.VatCode = Invoice.VATCodes.T1; DateTime now = DateTime.Now; bool requiresDeliveryAddress = false; foreach (Ticket ticket in ticketsToPurchase) { InvoiceItemDataHolder ticketInvoiceItem = new InvoiceItemDataHolder(); InvoiceItemDataHolder bookingFeeInvoiceItem = new InvoiceItemDataHolder(); if (ticket.TicketRun.Promoter.VatStatus == Promoter.VatStatusEnum.Registered) ticketInvoiceItem.VatCode = InvoiceItem.VATCodes.T1; else ticketInvoiceItem.VatCode = InvoiceItem.VATCodes.T0; ticketInvoiceItem.SetTotal(ticket.Price); ticketInvoiceItem.Type = InvoiceItem.Types.EventTickets; ticketInvoiceItem.KeyData = ticket.K; ticketInvoiceItem.BuyableObjectK = ticket.K; ticketInvoiceItem.BuyableObjectType = Model.Entities.ObjectType.Ticket; ticketInvoiceItem.RevenueStartDate = now; ticketInvoiceItem.RevenueEndDate = now; ticketInvoiceItem.Description = ticket.Description; ticketInvoiceItem.ShortDescription = ticket.ShortDescription; bookingFeeInvoiceItem.VatCode = InvoiceItem.VATCodes.T1; bookingFeeInvoiceItem.SetTotal(ticket.BookingFee); bookingFeeInvoiceItem.Type = InvoiceItem.Types.EventTicketsBookingFee; bookingFeeInvoiceItem.KeyData = ticket.K; bookingFeeInvoiceItem.BuyableObjectK = ticket.K; bookingFeeInvoiceItem.BuyableObjectType = Model.Entities.ObjectType.Ticket; bookingFeeInvoiceItem.RevenueStartDate = now; bookingFeeInvoiceItem.RevenueEndDate = now; bookingFeeInvoiceItem.Description = "Booking fee"; bookingFeeInvoiceItem.ShortDescription = "Booking fee"; idh.InvoiceItemDataHolderList.Add(ticketInvoiceItem); idh.InvoiceItemDataHolderList.Add(bookingFeeInvoiceItem); if (ticket.TicketRun.DeliveryMethod == TicketRun.DeliveryMethodType.SpecialDelivery) { requiresDeliveryAddress = true; } } if (requiresDeliveryAddress){ TicketRun ticketRun = ticketsToPurchase[0].TicketRun; InvoiceItemDataHolder deliveryFeeInvoiceItem = new InvoiceItemDataHolder() { VatCode = InvoiceItem.VATCodes.T1, Type = InvoiceItem.Types.EventTicketsDelivery, Description = "Delivery by " + ticketRun.DeliveryMethod.ToString(), ShortDescription = "Delivery by " + ticketRun.DeliveryMethod.ToString(), RevenueStartDate = now, RevenueEndDate = now/*, BuyableObjectK = ticketsToPurchase[0].K, BuyableObjectType = Model.Entities.ObjectType.Ticket*/ }; deliveryFeeInvoiceItem.SetTotal(Convert.ToDecimal(ticketsToPurchase[0].TicketRun.DeliveryCharge)); idh.InvoiceItemDataHolderList.Add(deliveryFeeInvoiceItem); Payment.GetFullAddress = true; Payment.LockCountryK(224); Payment.FraudCheck = Transfer.FraudCheckEnum.Strict; } //how many visits has this user had? Query qVisits = new Query(); qVisits.QueryCondition = new Q(Visit.Columns.UsrK, Usr.Current.K); qVisits.ReturnCountOnly = true; VisitSet vsCount = new VisitSet(qVisits); if (vsCount.Count <= 20) Payment.FraudCheck = Transfer.FraudCheckEnum.Strict; Payment.Invoices.Add(idh); Payment.PromoterK = 0; Payment.AllowPayWithBalance = false; Payment.ShowItemsIncVat = true; Payment.UsrK = Usr.Current.K; Payment.Initialize(); Payment.LoadBuyerDetailsToScreen(); //this.TicketsPanel.Visible = false; this.PayForTicketsPanel.Visible = true; }
private List<InvoiceItemDataHolder> CreateCreditInvoiceItems() { Query InvoiceItemQuery = new Query(new Q(InvoiceItem.Columns.InvoiceK, this.K)); InvoiceItemSet InvoiceItems = new InvoiceItemSet(InvoiceItemQuery); List<InvoiceItemDataHolder> creditItems = new List<InvoiceItemDataHolder>(); foreach (InvoiceItem ii in InvoiceItems) { InvoiceItemDataHolder creditItem = new InvoiceItemDataHolder(); creditItem.BuyableObjectK = ii.BuyableObjectK; creditItem.BuyableObjectType = ii.BuyableObjectType; creditItem.Description = CREDIT + " INV#" + this.K.ToString() + ": " + ii.Description; creditItem.ShortDescription = "CRD for item #" + ii.K.ToString(); //creditItem.Price = -1 * ii.Price; //creditItem.Vat = -1 * ii.Vat; creditItem.RevenueStartDate = DateTime.Now; creditItem.RevenueEndDate = DateTime.Now; creditItem.Type = ii.Type; creditItem.VatCode = ii.VatCode; creditItem.SetTotal(-1 * ii.Total); creditItems.Add(creditItem); } return creditItems; }