예제 #1
0
        /// <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;
     }
 }
예제 #4
0
        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"));
        }
예제 #5
0
        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;
            }
        }