public Transfer CreateFundsReleaseTransfer() { Transfer releaseFundsTransfer = new Transfer(); if (Usr.Current != null) { releaseFundsTransfer.ActionUsrK = Usr.Current.K; } releaseFundsTransfer.AddNote("Funds released from Event K=" + this.EventK, "System"); releaseFundsTransfer.Amount = this.TotalFunds; releaseFundsTransfer.DateTimeCreated = DateTime.Now; releaseFundsTransfer.DateTimeComplete = DateTime.Now; //releaseFundsTransfer.DSIBankAccount = Transfer.DSIBankAccounts.Client; releaseFundsTransfer.DuplicateGuid = Guid.NewGuid(); releaseFundsTransfer.Method = Transfer.Methods.TicketSales; releaseFundsTransfer.Company = Model.Entities.Transfer.CompanyEnum.DH; releaseFundsTransfer.PromoterK = this.PromoterK; releaseFundsTransfer.Status = Transfer.StatusEnum.Success; releaseFundsTransfer.Type = Transfer.TransferTypes.Payment; releaseFundsTransfer.UsrK = this.Promoter.PrimaryUsrK; return releaseFundsTransfer; }
//protected void GenBannerStats_Click(object sender, EventArgs eventArgs) //{ // Banner.GeneratePositionStats(); //} #endregion #region UpdateOldDBInvoices_Click public void UpdateOldDBInvoices_Click(object o, System.EventArgs e) { Cambro.Web.Helpers.WriteAlertHeader(); Cambro.Web.Helpers.WriteAlert("Selecting xxx...", 1); Query InvoiceQuery = new Query(); InvoiceQuery.OrderBy = new OrderBy(Invoice.Columns.K, OrderBy.OrderDirection.Ascending); InvoiceSet bs = new InvoiceSet(InvoiceQuery); for (int count = 0; count < bs.Count; count++) { Invoice invoice = bs[count]; try { invoice.Type = Invoice.Types.Invoice; invoice.IsImmediateCreditCardPayment = true; invoice.ActionUsrK = invoice.UsrK; invoice.VatCode = Invoice.VATCodes.T1; decimal invoicePrice = 0; decimal invoiceVat = 0; decimal invoiceTotal = 0; foreach (InvoiceItem invoiceItem in invoice.Items) { //invoiceItem.Price = Math.Round(invoiceItem.Price, 2); //invoiceItem.Vat = Math.Round(invoiceItem.Vat, 2); //invoiceItem.Total = Math.Round(invoiceItem.Total, 2); invoicePrice += invoiceItem.Price; invoiceVat += invoiceItem.Vat; invoiceTotal += invoiceItem.Total; if (invoiceItem.Type == InvoiceItem.Types.CharityDonation) invoiceItem.VatCode = InvoiceItem.VATCodes.T9; else if(invoiceItem.Vat.Equals(0)) invoiceItem.VatCode = InvoiceItem.VATCodes.T0; else invoiceItem.VatCode = InvoiceItem.VATCodes.T1; if (invoiceItem.Type == InvoiceItem.Types.Banner || invoiceItem.Type == InvoiceItem.Types.BannerEmail || invoiceItem.Type == InvoiceItem.Types.BannerHotbox || invoiceItem.Type == InvoiceItem.Types.BannerPhoto || invoiceItem.Type == InvoiceItem.Types.BannerSkyscraper || invoiceItem.Type == InvoiceItem.Types.BannerTop) { try { Banner banner = new Banner(invoiceItem.KeyData); invoiceItem.RevenueStartDate = banner.FirstDay; invoiceItem.RevenueEndDate = banner.LastDay; } catch (Exception) { } } else { invoiceItem.RevenueStartDate = invoice.CreatedDateTime; invoiceItem.RevenueEndDate = invoice.CreatedDateTime; } invoiceItem.Update(); } invoice.Price = Math.Round(invoicePrice,2); invoice.Vat = Math.Round(invoiceVat,2); invoice.Total = Math.Round(invoiceTotal, 2); if (invoice.DueDateTime.Equals(DateTime.MinValue)) invoice.DueDateTime = invoice.CreatedDateTime.AddDays(30); invoice.UpdateAndSetPaidStatus(); // If there arent transfers paying for this invoices yet, then create them. decimal amountPaid = invoice.AmountPaid; if (Math.Round(invoice.Total,2) > Math.Round(amountPaid,2)) { InvoiceTransferSet invoiceTransferSet = new InvoiceTransferSet(new Query(new Q(InvoiceTransfer.Columns.InvoiceK, invoice.K))); if (invoiceTransferSet.Count == 0) { Transfer transfer = new Transfer(); transfer.ActionUsrK = invoice.UsrK; transfer.Amount = Math.Round(invoice.Total - amountPaid, 2); transfer.DateTimeComplete = invoice.CreatedDateTime; transfer.DateTimeCreated = invoice.CreatedDateTime; transfer.Method = Transfer.Methods.Card; transfer.AddNote("Autogenerated Transfer to create transfer for old system invoice.", "System"); transfer.PromoterK = invoice.PromoterK; transfer.Status = Transfer.StatusEnum.Success; transfer.Type = Transfer.TransferTypes.Payment; transfer.UsrK = invoice.UsrK; // Will be fully applied transfer.IsFullyApplied = true; transfer.CardAddress1 = invoice.Address; transfer.CardName = invoice.Name; transfer.CardPostcode = invoice.Postcode; transfer.Update(); InvoiceTransfer invoiceTransfer = new InvoiceTransfer(); invoiceTransfer.InvoiceK = invoice.K; invoiceTransfer.TransferK = transfer.K; invoiceTransfer.Amount = transfer.Amount; invoiceTransfer.Update(); invoice.UpdateAndSetPaidStatus(); } } invoice.PaidDateTime = invoice.CreatedDateTime; invoice.Update(); if (count % 10 == 0) Cambro.Web.Helpers.WriteAlert("Done " + count + "/" + bs.Count, 2); } catch (Exception ex) { Cambro.Web.Helpers.WriteAlert("Exception " + count + "/" + bs.Count + " - " + ex.ToString(), 3); } bs.Kill(count); } Cambro.Web.Helpers.WriteAlert("Done!", 3); Cambro.Web.Helpers.WriteAlertFooter(); }
public void UpdateAndSetPaidStatus() { decimal totalPaid = this.AmountPaid; if (Math.Round(this.Total, 2) == Math.Round(totalPaid, 2)) { this.SetPaidAndPaidDateTime(true); } // If Invoice has been overpaid, remove InvoiceTransfer link amounts until totalPaid == this.Total else if (Math.Round(this.Total, 2) < Math.Round(totalPaid, 2) && this.Type.Equals(Invoice.Types.Invoice)) { Query invoiceTransfersAppliedQuery = new Query(new And(new Q(InvoiceTransfer.Columns.InvoiceK, this.K), new Q(Transfer.Columns.Type, Transfer.TransferTypes.Payment))); invoiceTransfersAppliedQuery.TableElement = new Join(InvoiceTransfer.Columns.TransferK, Transfer.Columns.K); invoiceTransfersAppliedQuery.OrderBy = new OrderBy(Transfer.Columns.DateTimeComplete, OrderBy.OrderDirection.Ascending); InvoiceTransferSet invoiceTransferSet = new InvoiceTransferSet(invoiceTransfersAppliedQuery); string invoiceNote = "Invoice overpaid by " + ((double)(totalPaid - this.Total)).ToString("c") + "."; decimal amountToUnApply = 0; for (int i = invoiceTransferSet.Count - 1; i >= 0; i--) { if (totalPaid > this.Total) { Transfer transfer = new Transfer(invoiceTransferSet[i].TransferK); if (invoiceTransferSet[i].Amount <= totalPaid - this.Total) { amountToUnApply = invoiceTransferSet[i].Amount; invoiceTransferSet[i].Delete(); } else { amountToUnApply = totalPaid - this.Total; invoiceTransferSet[i].Amount -= amountToUnApply; invoiceTransferSet[i].Update(); } // if(transfer.Method == Transfer.Methods.TicketSales) // BankExport.GenerateBankExportForTicketFundsUsed(transfer, -1 * amountToUnApply, this); invoiceNote += string.Format("\nAutomatically unapplied {0} from transfer #{1}.", amountToUnApply.ToString("c"), transfer.K); totalPaid -= amountToUnApply; transfer.AddNote(string.Format("Invoice #{0} was overpaid. {1:} has been unapplied from this transfer.", this.K, amountToUnApply.ToString("c")), "System"); transfer.IsFullyApplied = false; transfer.Update(); } } this.AddNote(invoiceNote, "System"); this.SetPaidAndPaidDateTime(true); //this.AddNote("This invoice has been overpaid by the sum of " + ((decimal)Math.Round(totalPaid - this.Total, 2)).ToString("0.00"), "Admin"); } else this.SetPaidAndPaidDateTime(false); this.Update(); }