public async Task <IActionResult> Edit(int id, [Bind("Id,PaymentName,PaymentMonth,ActuialPaymentMonth,DataCreatedDate,DataUpdateDate,Memo,MoneyAmount")] PaymentHeader paymentHeader) { if (id != paymentHeader.PaymentHeaderId) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(paymentHeader); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!PaymentHeaderExists(paymentHeader.PaymentHeaderId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(paymentHeader)); }
public void Edit( DateTime date, string invoiceNo, IEnumerable <PaymentDetailViewModel> detail) { var invoice = ctx.InvoiceHeaders.SingleOrDefault(inv => inv.InvoiceNo == invoiceNo); if (invoice != null) { PaymentHeader h = ctx.PaymentHeaders.SingleOrDefault(pay => pay.InvoiceID == invoice.ID); if (h != null) { ctx.PaymentDetails.DeleteAllOnSubmit( ctx.PaymentDetails.Where(pay => pay.PaymentID == h.ID)); h.Date = date; h.InvoiceID = invoice.ID; EntityHelper.SetAuditFieldForInsert(h, HttpContext.Current.User.Identity.Name); foreach (var model in detail) { PaymentDetail d = new PaymentDetail(); d.CreditCardTypeID = model.CreditCardTypeID; d.PaymentTypeID = model.PaymentTypeID; d.Amount = model.Amount; d.ApprovalCode = model.ApprovalCode; h.PaymentDetails.Add(d); ctx.PaymentHeaders.InsertOnSubmit(h); } autoNumberProvider.Increment("PM", invoice.BranchID, date.Year); ctx.SubmitChanges(); } } }
public string Update(PaymentHeader entity) { var originalEntity = this.Context.PaymentHeaders.Find(entity.Id); this.Context.Entry(originalEntity).CurrentValues.SetValues(entity); this.Context.Entry(originalEntity).State = EntityState.Modified; this.Commit(); return(entity.Id.ToString()); }
/// <summary> /// Work out the changes when a Payment is edited /// </summary> protected override void calculatePaymentChanges(PaymentDocument json, decimal amount, out decimal changeInDocumentAmount, out decimal changeInOutstanding) { PaymentHeader document = json.header; PaymentHeader original = getDocument(document); changeInDocumentAmount = document.DocumentAmount - original.DocumentAmount; changeInOutstanding = document.DocumentOutstanding - original.DocumentOutstanding; Utils.Check(document.DocumentOutstanding == document.Remaining, "Remaining {0:0.00} does not agree with outstanding {1:0.00}", document.Remaining, document.DocumentOutstanding); }
protected override void calculatePaymentChanges(PaymentDocument json, decimal amount, out decimal changeInDocumentAmount, out decimal changeInOutstanding) { PaymentHeader document = json.header; PaymentHeader original = getDocument(document); changeInDocumentAmount = -(document.DocumentAmount - original.DocumentAmount); changeInOutstanding = 0; Utils.Check(-changeInDocumentAmount == amount, "Change in document amount {0:0.00} does not agree with payments {1:0.00}", -changeInDocumentAmount, amount); }
public async Task <IActionResult> Create([Bind("Id,PaymentName,PaymentMonth,ActuialPaymentMonth,DataCreatedDate,DataUpdateDate,Memo,MoneyAmount")] PaymentHeader paymentHeader) { if (ModelState.IsValid) { _context.Add(paymentHeader); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(paymentHeader)); }
public int ProcessBillingUnpaidInvoice(string fileName) { // accepted List <BillingAcceptedViewModel> acceptedInvoices = ReadBillingUnpaidAcceptedFile(fileName).ToList(); foreach (BillingAcceptedViewModel acceptedInvoice in acceptedInvoices) { InvoiceHeader invoice = context.InvoiceHeaders.SingleOrDefault(ih => ih.InvoiceNo == acceptedInvoice.InvoiceNo); if (invoice != null) { Customer cust = invoice.Customer; var payments = invoice.PaymentHeaders.Where(ph => !ph.VoidDate.HasValue); foreach (var payment in payments) { payment.VoidDate = DateTime.Today; //payment.VoidReason = "AUTO PAY DECLINED: " + acceptedInvoice.DeclineCode; } string paymentNo = autoNumberProvider.Generate(invoice.BranchID, "PM", DateTime.Today.Month, DateTime.Today.Year); var h = new PaymentHeader(); h.Date = DateTime.Today; h.InvoiceID = invoice.ID; h.PaymentNo = paymentNo; h.VoidDate = null; EntityHelper.SetAuditFieldForInsert(h, principal.Identity.Name); var d = new PaymentDetail(); d.CreditCardTypeID = cust.CreditCardTypeID; d.PaymentTypeID = 4; // credit card d.Amount = invoice.InvoiceDetails.Sum(inv => (inv.Quantity * inv.UnitPrice) - (inv.Discount / 100 * (inv.Quantity * inv.UnitPrice))); d.ApprovalCode = acceptedInvoice.VerificationCode; h.PaymentDetails.Add(d); context.Add(h); autoNumberProvider.Increment("PM", invoice.BranchID, DateTime.Today.Year); var status = new CustomerStatusHistory(); status.Customer = invoice.Customer; status.Date = DateTime.Today; status.CustomerStatusID = 1; // OK status.Notes = "AUTO PAY ACCEPTED FOR INVOICE " + invoice.InvoiceNo; status.StartDate = DateTime.Today; EntityHelper.SetAuditFieldForInsert(status, principal.Identity.Name); } } context.SaveChanges(); return(acceptedInvoices.Count); }
public static void Update(PaymentViewModel payment) { PaymentHeader entity = getEntityByModel(payment); string result = string.Empty; if (entity.IsValid()) { if (payment.Id > 0) { result = service.Update(entity); } else { result = service.Insert(entity); } if (!string.IsNullOrEmpty(result)) { var savedLines = getpaymentLinesbyPaymentId(result); if (savedLines.Count() > payment.PaymentInvoiceLines.Count()) { var tobeDeleted = savedLines.Take(savedLines.Count() - payment.PaymentInvoiceLines.Count()); foreach (var item in tobeDeleted) { service.DeleteLine(item.Id, AuthenticationHelper.CompanyId.Value); } savedLines = getpaymentLinesbyPaymentId(result); } foreach (var line in payment.PaymentInvoiceLines) { PaymentInvoiceLines lineEntity = getEntityByModel(line); if (lineEntity.IsValid()) { lineEntity.PaymentId = Convert.ToInt64(result); if (savedLines.Count() > 0) { lineEntity.Id = savedLines.FirstOrDefault().Id; savedLines.Remove(savedLines.FirstOrDefault(rec => rec.Id == lineEntity.Id)); service.Update(lineEntity); } else { service.Insert(lineEntity); } } } } } }
/// <summary> /// Instantiates the payment service and injects a PaymentHeader /// </summary> /// <returns>PaymentService</returns> protected PaymentService Initialize() { PaymentHeader header = new PaymentHeader(); header.APIVersion = _apiVersion; header.MerchantEmail = _merchantEmail; header.MerchantKey = _merchantKey; header.SvcType = _serviceType; header.UseIntMode = _integrationMode; PaymentService service = new PaymentService(); service.PaymentHeaderValue = header; return(service); }
private void LoadPayment(string paymentNo) { PaymentHeader pay = PaymentService.GetPayment(paymentNo); IList <PaymentDetailViewModel> paymentDetail = null; if (pay != null) { lblPaymentNo.Text = pay.PaymentNo; lblPaymentDate.Text = pay.Date.ToString("dddd, dd MMMM yyyy"); lblStatusPayment.Text = pay.VoidDate.HasValue ? "Void" : "Active"; paymentDetail = PaymentService.GetDetail(pay.InvoiceHeader.InvoiceNo); lblTotalPayment.Text = (paymentDetail.Any() ? paymentDetail.Sum(payment => payment.Amount) : 0).ToString("###,##0.00"); gvwPayment.DataSource = paymentDetail; gvwPayment.DataBind(); } }
protected void Page_Load(object sender, EventArgs e) { if (!String.IsNullOrEmpty(Request.QueryString["InvoiceNo"])) { string invoiceNo = Request.QueryString["InvoiceNo"]; PaymentHeader pay = PaymentService.GetPaymentOfInvoice(invoiceNo); if (pay != null) { LoadInvoice(invoiceNo); LoadPayment(pay.PaymentNo); } } btnPrint.Visible = Request.QueryString["HidePrint"] == null; btnClose.Visible = Request.QueryString["HidePrint"] != null; }
private void LoadPayment(string paymentNo) { IEnumerable <PaymentDetailViewModel> paymentDetail = null; PaymentHeader pay = paymentProvider.GetPayment(paymentNo); if (pay != null) { lblPaymentNo.Text = pay.PaymentNo; lblPaymentDate.Text = pay.Date.ToString("dddd, dd MMMM yyyy"); lblStatusPayment.Text = pay.VoidDate.HasValue ? "Void" : "Active"; paymentDetail = paymentProvider.GetDetail(pay.InvoiceHeader.InvoiceNo); gvwPayment.DataSource = paymentDetail; gvwPayment.DataBind(); lblTotalPayment.Text = (paymentDetail.Any() ? paymentDetail.Sum(inv => inv.Amount) : 0M).ToString("###,##0.00"); } }
public PaymentModel(PaymentHeader entity) { this.Id = entity.Id; this.Amount = entity.Amount; this.BankAccountId = entity.BankAccountId; this.BankId = entity.BankId; this.CreateBy = entity.CreateBy; this.CreateDate = entity.CreateDate; this.PaymentDate = entity.PaymentDate; this.PaymentNo = entity.PaymentNo; this.PeriodId = entity.PeriodId; this.SOBId = entity.SOBId; this.Status = entity.Status; this.UpdateBy = entity.UpdateBy; this.UpdateDate = entity.UpdateDate; this.VendorId = entity.VendorId; this.VendorSiteId = entity.VendorSiteId; }
/// <summary> /// Retrieve a payment, or prepare a new one /// </summary> PaymentDocument getPayment(int?id) { PaymentHeader header = getDocument <PaymentHeader>(id); if (header.idDocument == null) { header.DocumentTypeId = (int)PaymentDoc; header.DocumentDate = Utils.Today; header.DocumentName = ""; header.DocumentIdentifier = "Payment"; if (GetParameters["acct"].IsInteger()) { header.DocumentAccountId = int.Parse(GetParameters["acct"]); } else if (Settings.DefaultBankAccount > 0) { header.DocumentAccountId = (int)Settings.DefaultBankAccount; } if (GetParameters["name"].IsInteger()) { JObject name = Database.QueryOne("*", "WHERE idNameAddress = " + GetParameters["name"], "NameAddress"); if (name != null) { checkNameType(name.AsString("Type"), NameType); header.DocumentNameAddressId = name.AsInt("idNameAddress"); header.DocumentAddress = name.AsString("Address"); header.DocumentName = name.AsString("Name"); } } } else { checkDocType(header.DocumentTypeId, PaymentDoc); checkNameType(header.DocumentNameAddressId, NameType); } PaymentDocument previous = new PaymentDocument() { header = header, detail = PaymentListing(header.idDocument, header.DocumentNameAddressId).ToList() }; return(previous); }
public string Create( DateTime date, string invoiceNo, IEnumerable <PaymentDetailViewModel> detail) { string paymentNo = String.Empty; var invoice = context.InvoiceHeaders.SingleOrDefault(inv => inv.InvoiceNo == invoiceNo); if (invoice != null) { paymentNo = autoNumberProvider.Generate(invoice.BranchID, "PM", date.Month, date.Year); PaymentHeader h = new PaymentHeader(); h.Date = date; h.InvoiceID = invoice.ID; h.PaymentNo = paymentNo; h.VoidDate = (DateTime?)null; context.Add(h); EntityHelper.SetAuditFieldForInsert(h, principal.Identity.Name); foreach (var model in detail) { PaymentDetail d = new PaymentDetail(); d.CreditCardTypeID = model.CreditCardTypeID; d.PaymentTypeID = model.PaymentTypeID; d.Amount = model.Amount; d.ApprovalCode = model.ApprovalCode; d.PaymentHeader = h; context.Add(d); } autoNumberProvider.Increment("PM", invoice.BranchID, date.Year); context.SaveChanges(); } return(paymentNo); }
private static PaymentHeader getEntityByModel(PaymentViewModel model) { if (model == null) { return(null); } PaymentHeader entity = new PaymentHeader(); if (model.Id == 0) { entity.CreateBy = AuthenticationHelper.UserId; entity.CreateDate = DateTime.Now; entity.CompanyId = AuthenticationHelper.CompanyId.Value; } else { entity.CreateBy = model.CreateBy; entity.CreateDate = model.CreateDate; entity.CompanyId = AuthenticationHelper.CompanyId.Value; //Not exist.. have to do this.. } entity.Amount = model.Amount; entity.BankId = model.BankId; entity.Id = model.Id; entity.PaymentDate = model.PaymentDate; entity.PaymentNo = model.PaymentNo; entity.Status = model.Status; entity.SOBId = model.SOBId; entity.BankAccountId = model.BankAccountId; entity.VendorId = model.VendorId; entity.PeriodId = model.PeriodId; entity.VendorSiteId = model.VendorSiteId; entity.UpdateBy = AuthenticationHelper.UserId; entity.UpdateDate = DateTime.Now; return(entity); }
public InvoiceHeader CreateExistingMemberInvoiceForBilling( int branchID, DateTime date, string customerCode, int employeeID, string notes, decimal discountValue, IEnumerable <InvoiceDetailViewModel> detail, IEnumerable <PaymentDetailViewModel> paymentDetail) { Customer cust = ctx.Customers.SingleOrDefault(c => c.Barcode == customerCode); if (cust != null) { InvoiceHeader header = new InvoiceHeader(); header.InvoiceNo = autoNumberProvider.Generate(branchID, "OR", date.Month, date.Year); header.BranchID = branchID; header.Date = date; header.Customer = cust; header.EmployeeID = employeeID; header.InvoiceType = EXISTING_MEMBER_INVOICE; header.Notes = notes; header.DiscountValue = discountValue; EntityHelper.SetAuditFieldForInsert(header, HttpContext.Current.User.Identity.Name); foreach (var model in detail) { InvoiceDetail d = new InvoiceDetail(); d.InvoiceID = model.InvoiceID; d.ItemID = model.ItemID; d.Quantity = model.Quantity; d.UnitPrice = model.UnitPrice; d.Discount = model.Discount; d.IsTaxable = model.IsTaxable; header.InvoiceDetails.Add(d); ctx.InvoiceDetails.InsertOnSubmit(d); } PaymentHeader pay = new PaymentHeader(); pay.Date = date; pay.InvoiceHeader = header; pay.PaymentNo = autoNumberProvider.Generate(branchID, "PM", date.Month, date.Year); pay.VoidDate = null; EntityHelper.SetAuditFieldForInsert(pay, HttpContext.Current.User.Identity.Name); foreach (var payDetail in paymentDetail) { PaymentDetail payd = new PaymentDetail(); payd.Amount = payDetail.Amount; payd.CreditCardTypeID = payDetail.CreditCardTypeID; payd.PaymentTypeID = payDetail.PaymentTypeID; payd.ApprovalCode = payDetail.ApprovalCode; payd.Notes = payDetail.Notes; pay.PaymentDetails.Add(payd); ctx.PaymentDetails.InsertOnSubmit(payd); } autoNumberProvider.Increment("OR", header.BranchID, date.Year); autoNumberProvider.Increment("PM", header.BranchID, date.Year); return(header); } return(null); }
public string Insert(PaymentHeader entity) { return(this.repository.Insert(entity)); }
public string Insert(PaymentHeader entity) { this.Context.PaymentHeaders.Add(entity); this.Commit(); return(entity.Id.ToString()); }
public string Update(PaymentHeader entity) { return(this.repository.Update(entity)); }
public string CreateFreshMemberInvoice( int branchID, string contractNo, DateTime purchasedate, int employeeID, string notes, decimal discountValue, IEnumerable <PackageDetailViewModel> detail, IEnumerable <PaymentDetailViewModel> paymentDetail) { Contract contract = ctx.Contracts.SingleOrDefault(con => con.ContractNo == contractNo); if (contract != null) { InvoiceHeader header = new InvoiceHeader(); header.InvoiceNo = autoNumberProvider.Generate(branchID, "OR", purchasedate.Month, purchasedate.Year); header.BranchID = branchID; header.Contract = contract; header.Date = purchasedate; header.EmployeeID = employeeID; header.InvoiceType = FRESH_MEMBER_INVOICE; header.Notes = notes; header.DiscountValue = discountValue; header.CustomerID = contract.CustomerID; header.VoidDate = (DateTime?)null; EntityHelper.SetAuditFieldForInsert(header, HttpContext.Current.User.Identity.Name); foreach (var model in detail) { InvoiceDetail d = new InvoiceDetail(); d.ItemID = model.ItemID; d.Quantity = model.Quantity; d.UnitPrice = model.UnitPrice; d.Discount = model.Discount; d.IsTaxable = model.IsTaxed; header.InvoiceDetails.Add(d); ctx.InvoiceDetails.InsertOnSubmit(d); } PaymentHeader pay = new PaymentHeader(); pay.Date = purchasedate; pay.InvoiceHeader = header; pay.PaymentNo = autoNumberProvider.Generate(branchID, "PM", purchasedate.Month, purchasedate.Year); pay.VoidDate = (DateTime?)null; EntityHelper.SetAuditFieldForInsert(pay, HttpContext.Current.User.Identity.Name); foreach (var payDetail in paymentDetail) { PaymentDetail payd = new PaymentDetail(); payd.Amount = payDetail.Amount; payd.CreditCardTypeID = payDetail.CreditCardTypeID; payd.PaymentTypeID = payDetail.PaymentTypeID; payd.ApprovalCode = payDetail.ApprovalCode; payd.Notes = payDetail.Notes; pay.PaymentDetails.Add(payd); ctx.PaymentDetails.InsertOnSubmit(payd); } //CustomerStatusHistory custStatusHist = new CustomerStatusHistory(); //custStatusHist.Customer = cust; //custStatusHist.CustomerStatusID = contract.PurchaseDate = purchasedate; //contract.ActiveDate = DateTime.Now; contract.Status = FitnessManagement.Providers.ContractStatus.PAID; autoNumberProvider.Increment("OR", header.BranchID, purchasedate.Year); autoNumberProvider.Increment("PM", header.BranchID, purchasedate.Year); ctx.SubmitChanges(); return(header.InvoiceNo); } return(null); }
public AjaxReturn PaymentSave(PaymentDocument json) { decimal amount = 0; Database.BeginTransaction(); PaymentHeader document = json.header; checkDocType(document.DocumentTypeId, PaymentDoc); checkNameType(document.DocumentNameAddressId, NameType); checkAccountIsAcctType(document.DocumentAccountId, AcctType.Bank, AcctType.CreditCard); if (document.idDocument == null) { allocateDocumentIdentifier(document); } PaymentDocument oldDoc = getPayment(document.idDocument); int sign = -SignFor(PaymentDoc); // Update the outstanding on the paid documents foreach (PaymentLine payment in json.detail) { Utils.Check(!SecurityOn || !Settings.RequireAuthorisation || Authorise || NameType != "S" || payment.Authorised > 0, "Cannot pay unauthorised document"); decimal a = payment.AmountPaid; PaymentLine old = oldDoc.PaymentFor(payment.idDocument); if (old != null) { a -= old.AmountPaid; // reduce update by the amount paid last time it was saved } int?docId = payment.idDocument; if (a != 0) { Database.Execute("UPDATE Journal SET Outstanding = Outstanding - " + sign * a + " WHERE DocumentId = " + Database.Quote(docId) + " AND AccountId = " + (int)LedgerAccount); amount += a; } } json.detail = json.detail.Where(l => l.AmountPaid != 0).ToList(); document.DocumentOutstanding = json.header.Remaining; decimal changeInDocumentAmount; decimal changeInOutstanding; // Virtual method, as calculation is different for customers and suppliers calculatePaymentChanges(json, amount, out changeInDocumentAmount, out changeInOutstanding); document.DocumentTypeId = (int)PaymentDoc; Database.Update(document); // Now delete the old cross reference records, and replace with new Database.Execute("DELETE FROM Payments WHERE idPayment = " + document.idDocument); foreach (PaymentLine payment in json.detail) { if (payment.AmountPaid != 0) { Database.Execute("INSERT INTO Payments (idPayment, idPaid, PaymentAmount) VALUES(" + document.idDocument + ", " + payment.idDocument + ", " + payment.AmountPaid + ")"); } } // Journal between bank account and sales/purchase ledger Journal journal = Database.Get(new Journal() { DocumentId = (int)document.Id, JournalNum = 1 }); journal.DocumentId = (int)document.idDocument; journal.JournalNum = 1; journal.NameAddressId = document.DocumentNameAddressId; journal.Memo = document.DocumentMemo; journal.AccountId = document.DocumentAccountId; journal.Amount += changeInDocumentAmount; journal.Outstanding += changeInOutstanding; Database.Update(journal); journal = Database.Get(new Journal() { DocumentId = (int)document.Id, JournalNum = 2 }); journal.DocumentId = (int)document.idDocument; journal.JournalNum = 2; journal.NameAddressId = document.DocumentNameAddressId; journal.Memo = document.DocumentMemo; journal.AccountId = (int)LedgerAccount; journal.Amount -= changeInDocumentAmount; journal.Outstanding -= changeInOutstanding; Database.Update(journal); Line line = Database.Get(new Line() { idLine = journal.idJournal }); line.idLine = journal.idJournal; line.LineAmount += PaymentDoc == DocType.BillPayment ? -changeInDocumentAmount : changeInDocumentAmount; Database.Update(line); oldDoc = PaymentGetAudit(document.idDocument); Database.AuditUpdate("Payment", document.idDocument, oldDoc == null ? null : oldDoc.ToJObject(), json.ToJObject()); Database.Commit(); return(new AjaxReturn() { message = "Payment saved", id = document.idDocument }); }
public string CreateExistingMemberInvoice( int branchID, DateTime date, string customerCode, int employeeID, string notes, decimal discountValue, IEnumerable <InvoiceDetailViewModel> detail, IEnumerable <PaymentDetailViewModel> paymentDetail) { Customer cust = context.Customers.SingleOrDefault(c => c.Barcode == customerCode); var header = new InvoiceHeader(); header.InvoiceNo = autoNumberProvider.Generate(branchID, "OR", date.Month, date.Year); header.BranchID = branchID; header.Date = date; if (cust == null) { header.Customer = null; header.CustomerName = customerCode; } else { header.Customer = cust; header.CustomerName = null; } header.EmployeeID = employeeID; header.InvoiceType = InvoiceConstants.EXISTING_MEMBER_INVOICE; header.Notes = notes; header.DiscountValue = discountValue; EntityHelper.SetAuditFieldForInsert(header, principal.Identity.Name); foreach (var model in detail) { var d = new InvoiceDetail(); d.InvoiceID = model.InvoiceID; d.ItemID = model.ItemID; d.Quantity = model.Quantity; d.UnitName = model.UnitName; d.UnitPrice = model.UnitPrice; d.Discount = model.Discount; d.IsTaxable = model.IsTaxable; d.InvoiceHeader = header; context.Add(d); if (cust != null) { CreateTrainingSession(branchID, model.ItemID, cust.ID, header, d); } } var payments = paymentDetail.ToList(); if (payments.Count > 0) { var pay = new PaymentHeader(); pay.Date = date; pay.InvoiceHeader = header; pay.PaymentNo = autoNumberProvider.Generate(branchID, "PM", date.Month, date.Year); pay.VoidDate = null; EntityHelper.SetAuditFieldForInsert(pay, principal.Identity.Name); foreach (var payDetail in payments) { var payd = new PaymentDetail(); payd.Amount = payDetail.Amount; payd.CreditCardTypeID = payDetail.CreditCardTypeID; payd.PaymentTypeID = payDetail.PaymentTypeID; payd.ApprovalCode = payDetail.ApprovalCode; payd.Notes = payDetail.Notes; payd.PaymentHeader = pay; context.Add(payd); } autoNumberProvider.Increment("PM", header.BranchID, date.Year); context.Add(pay); } context.Add(header); autoNumberProvider.Increment("OR", header.BranchID, date.Year); context.SaveChanges(); return(header.InvoiceNo); }