/// <summary> /// This method is used to issue credit note. - JJ /// </summary> /// <param name="SupplierReturnId">Id of SupplierReturnDetail</param> /// <param name="BranchId"></param> /// <param name="Comment"></param> /// <param name="CompanyId"></param> /// <returns>status</returns> public bool IssueCreditNote(int SupplierReturnId, int?BranchId, int CompanyId, string Comment) { try { var supplierReturnItem = _supplierReturnItemContext.Fetch(x => x.SupplierReturnId == SupplierReturnId).ToList(); var amount = 0M; var supplierReturnDetailId = 0; foreach (var item in supplierReturnItem) { supplierReturnDetailId = item.SupplierReturnId; amount = amount + (item.CostPrice * item.ReturnQuantity); } var creditNoteDetail = new CreditNoteDetail { Amount = amount, BranchId = BranchId, CreatedDateTime = DateTime.UtcNow, InitiationComment = Comment, InitiationDate = DateTime.UtcNow, IsCollected = false, TypeId = _paramTypeContext.FirstOrDefault(x => x.ValueEn == StringConstants.SupplierReturnNote).Id, CreditNoteNo = CreditNoteNumberGenerator(CompanyId) }; _creditNoteDetailContext.Add(creditNoteDetail); _creditNoteDetailContext.SaveChanges(); foreach (var item in supplierReturnItem) { var creditNoteItem = new CreditNoteItem { CostPrice = item.CostPrice, CreatedDateTime = DateTime.UtcNow, CreditNoteId = creditNoteDetail.Id, ItemId = item.ItemId, Quantity = item.ReturnQuantity, }; _creditNoteItemContext.Add(creditNoteItem); _creditNoteItemContext.SaveChanges(); } var supoplierReturnCreditNote = new SupplierReturnCreditNote { CreatedDateTime = DateTime.UtcNow, CreditNoteId = creditNoteDetail.Id, SuppierReturnId = supplierReturnDetailId }; _supplierReturnCreditNoteContext.Add(supoplierReturnCreditNote); _supplierReturnCreditNoteContext.SaveChanges(); return(true); } catch (Exception ex) { _errorLog.LogException(ex); throw; } }
/// <summary> /// This method used for add credit notes detail. -An /// </summary> /// <param name="creditNoteItems"></param> /// <returns></returns> public int AddCreditNoteDetail(CreditNoteDetail creditNoteDetail) { try { _creditNoteDetailContext.Add(creditNoteDetail); _creditNoteDetailContext.SaveChanges(); return(creditNoteDetail.Id); } catch (Exception ex) { _errorLog.LogException(ex); throw; } }
/// <summary> /// This method used for update credit note. -An /// </summary> /// <param name="creditNoteDetail"></param> /// <returns></returns> public int UpdateCreditNoteDetail(CreditNoteDetail creditNoteDetail) { try { creditNoteDetail.ModifiedDateTime = DateTime.UtcNow; _creditNoteDetailContext.Update(creditNoteDetail); _creditNoteDetailContext.SaveChanges(); return(creditNoteDetail.Id); } catch (Exception ex) { _errorLog.LogException(ex); throw; } }
public ActionResult Create(CreditNoteVM v) { var userid = Convert.ToInt32(Session["UserID"]); int BranchID = Convert.ToInt32(Session["CurrentBranchID"].ToString()); AcJournalMaster ajm = new AcJournalMaster(); int fyearid = Convert.ToInt32(Session["fyearid"].ToString()); if (v.AcJournalID > 0) { ajm = db.AcJournalMasters.Find(v.AcJournalID); var ajmd = db.AcJournalDetails.Where(cc => cc.AcJournalID == v.AcJournalID).ToList(); db.AcJournalDetails.RemoveRange(ajmd); db.AcJournalMasters.Remove(ajm); db.SaveChanges(); v.AcJournalID = 0; } if (v.AcJournalID == 0) { int acjm = 0; acjm = (from c in db.AcJournalMasters orderby c.AcJournalID descending select c.AcJournalID).FirstOrDefault(); ajm.AcJournalID = acjm + 1; ajm.AcCompanyID = Convert.ToInt32(Session["CurrentCompanyID"].ToString()); ajm.BranchID = Convert.ToInt32(Session["CurrentBranchID"].ToString()); ajm.AcFinancialYearID = fyearid; ajm.PaymentType = 1; ajm.Remarks = v.Description; // "Credit Note for " + v.CustomerName + " invoice : " + v.InvoiceNo; ajm.StatusDelete = false; ajm.VoucherNo = AccountsDAO.GetMaxVoucherNo(v.TransType, fyearid); ajm.TransDate = v.Date; ajm.TransType = 2; ajm.VoucherType = v.TransType; db.AcJournalMasters.Add(ajm); db.SaveChanges(); } AcJournalDetail a = new AcJournalDetail(); a = db.AcJournalDetails.Where(cc => cc.AcJournalID == ajm.AcJournalID && cc.Amount < 0).FirstOrDefault(); if (a == null) { a = new AcJournalDetail(); a.AcJournalDetailID = 0; } if (a.AcJournalDetailID == 0) { int maxacj = (from c in db.AcJournalDetails orderby c.AcJournalDetailID descending select c.AcJournalDetailID).FirstOrDefault(); a.AcJournalDetailID = maxacj + 1; a.AcJournalID = ajm.AcJournalID; a.AcHeadID = v.AcHeadID;// customercon.AcHeadID; ; } if (v.TransType == "CN") { a.Amount = -1 * v.Amount; } else { a.Amount = v.Amount; } a.BranchID = Convert.ToInt32(Session["CurrentBranchID"].ToString()); a.Remarks = v.Description; if (a.ID == 0) { db.AcJournalDetails.Add(a); db.SaveChanges(); } else { db.Entry(a).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } foreach (var detail in v.Details) { AcJournalDetail b = new AcJournalDetail(); b.AcJournalDetailID = 0; if (b.AcJournalDetailID == 0) { int maxacj = 0; maxacj = (from c in db.AcJournalDetails orderby c.AcJournalDetailID descending select c.AcJournalDetailID).FirstOrDefault(); b.AcJournalDetailID = maxacj + 1; b.AcJournalID = ajm.AcJournalID; } b.AcHeadID = detail.AcHeadID; if (v.TransType == "CN") { b.Amount = detail.Amount; } else { b.Amount = -1 * detail.Amount; } b.BranchID = Convert.ToInt32(Session["CurrentBranchID"].ToString()); b.Remarks = detail.Remarks; if (b.ID == 0) { db.AcJournalDetails.Add(b); db.SaveChanges(); } else { db.Entry(b).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } } var invid = 0; int?recpayid = 0; CreditNote d = new CreditNote(); if (v.CreditNoteID == 0) { int maxid = 0; var data = (from c in db.CreditNotes orderby c.CreditNoteID descending select c).FirstOrDefault(); if (data == null) { maxid = 1; } else { maxid = data.CreditNoteID + 1; } d.CreditNoteID = maxid; d.CreditNoteNo = AccountsDAO.GetMaxCreditNoteNo(fyearid); d.FYearID = Convert.ToInt32(Session["fyearid"].ToString()); d.AcCompanyID = Convert.ToInt32(Session["CurrentCompanyID"].ToString()); d.BranchID = Convert.ToInt32(Session["CurrentBranchID"].ToString()); d.statusclose = false; d.CreatedBy = userid; d.CreatedDate = CommanFunctions.GetCurrentDateTime(); d.ModifiedBy = userid; d.ModifiedDate = CommanFunctions.GetCurrentDateTime(); } else { d = db.CreditNotes.Find(v.CreditNoteID); var det = db.CreditNoteDetails.Where(cc => cc.CreditNoteID == v.CreditNoteID).ToList(); if (det != null) { db.CreditNoteDetails.RemoveRange(det); db.SaveChanges(); } d.ModifiedBy = userid; d.ModifiedDate = CommanFunctions.GetCurrentDateTime(); } d.InvoiceType = v.InvoiceType; d.CreditNoteDate = v.Date; if (v.TransType == "CN") { d.Amount = v.Amount; } else { d.Amount = -1 * v.Amount; } d.AcJournalID = ajm.AcJournalID; d.AcHeadID = v.AcHeadID; d.CustomerID = v.CustomerID; d.Description = v.Description; d.TransType = v.TransType; if (v.InvoiceID != 0) { if (v.TransType == "CN") { d.InvoiceID = v.InvoiceID; } else { d.RecPayID = v.InvoiceID; } } else { d.InvoiceID = 0; } //d.IsShipping = true; if (v.CreditNoteID == 0) { db.CreditNotes.Add(d); db.SaveChanges(); TempData["SuccessMsg"] = "Successfully Added Credit Note"; } else { db.Entry(d).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); TempData["SuccessMsg"] = "Successfully Updated Credit Note"; } foreach (var detail in v.Details) { CreditNoteDetail det = new CreditNoteDetail(); det.AcHeadID = detail.AcHeadID; det.Amount = detail.Amount; det.Remarks = detail.Remarks; det.CreditNoteID = d.CreditNoteID; db.CreditNoteDetails.Add(det); db.SaveChanges(); } return(RedirectToAction("Index", "CreditNote")); }
private void InsertIntoAccounting(CreditNoteReceivingAC creditNoteRecevingAC, CreditNoteDetail creditNoteDetail) { try { List <DoubleEntry> listOfDoubleEntry = new List <DoubleEntry>(); var ledgersForSupplier = _iAccountingRepository.GetAccountLedgerBySupplier(creditNoteRecevingAC.ListOfCreditNotes[0].SupplierId); var ledgersForCash = _iAccountingRepository.GetAccountLedgerByName(StringConstants.CashInHand, Convert.ToInt32(creditNoteDetail.BranchId)); var ledgersForBank = _iAccountingRepository.GetAccountLedgerByName(StringConstants.Bank, Convert.ToInt32(creditNoteDetail.BranchId)); if (ledgersForSupplier != null && ledgersForCash != null && ledgersForBank != null) { decimal totalAmount = 0; totalAmount = (creditNoteRecevingAC.Cheque + creditNoteRecevingAC.Cash); listOfDoubleEntry.Add(new DoubleEntry { LedgerId = ledgersForSupplier.Id, TransactionDate = DateTime.UtcNow, Credit = totalAmount, Debit = 0, CreatedDateTime = DateTime.UtcNow, ActivityName = StringConstants.ReceivingCreditNote, Description = "Credit Note Number :" + creditNoteDetail.CreditNoteNo }); if (creditNoteRecevingAC.Cash != 0) { listOfDoubleEntry.Add(new DoubleEntry { LedgerId = ledgersForCash.Id, TransactionDate = DateTime.UtcNow, Credit = 0, Debit = creditNoteRecevingAC.Cash, CreatedDateTime = DateTime.UtcNow, ActivityName = StringConstants.ReceivingCreditNote, Description = "Credit Note Number :" + creditNoteDetail.CreditNoteNo }); } if (creditNoteRecevingAC.Cheque != 0) { listOfDoubleEntry.Add(new DoubleEntry { LedgerId = ledgersForBank.Id, TransactionDate = DateTime.UtcNow, Credit = 0, Debit = creditNoteRecevingAC.Cheque, CreatedDateTime = DateTime.UtcNow, ActivityName = StringConstants.ReceivingCreditNote, Description = "Credit Note Number :" + creditNoteDetail.CreditNoteNo }); } } if (listOfDoubleEntry.Any()) { _iAccountingRepository.AddAccountingEntries(listOfDoubleEntry); } } catch (Exception ex) { _errorLog.LogException(ex); throw; } }