/// <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; } }
public IHttpActionResult GetCreditNote(int SupplierId) { try { List <CreditNoteAC> listOfCreditNoteAc = new List <CreditNoteAC>(); List <CreditNoteDetail> listOfCreditNote = _iCreditNoteRepository.GetListOfCreditNoteDetailByBranchId(Convert.ToInt32(MerchantContext.UserDetails.BranchId), MerchantContext.Permission.IsAllowToAccessAllBranch); if (listOfCreditNote.Count > 0) { foreach (var creditNote in listOfCreditNote) { CreditNoteAC creditNoteAC = new CreditNoteAC(); creditNoteAC.Id = creditNote.Id; creditNoteAC.Amount = creditNote.Amount; creditNoteAC.RemaningAmount = creditNote.RemainigAmount; creditNoteAC.IsCollected = creditNote.IsCollected; creditNoteAC.CreditNoteNo = creditNote.CreditNoteNo; creditNoteAC.InitiationDate = creditNote.InitiationDate.ToString("dd-MM-yyyy hh:mm tt"); if (creditNote.TypeId == Convert.ToInt32(CreditNoteType.SupplierItemOfferNote)) { ItemOfferCreditNote itemOfferCreditNote = _iCreditNoteRepository.GetItemOfferCreditNoteByCreditId(creditNote.Id); if (itemOfferCreditNote != null) { creditNoteAC.SupplierId = itemOfferCreditNote.SupplierId; creditNoteAC.SupplierName = itemOfferCreditNote.SupplierProfile.NameEn; } } else if (creditNote.TypeId == Convert.ToInt32(CreditNoteType.SupplierDestructionNote)) { ItemDestructionCreditNote itemDestructionCreditNote = _iCreditNoteRepository.GetItemDestructionCreditNoteByCreditId(creditNote.Id); if (itemDestructionCreditNote != null) { creditNoteAC.SupplierId = itemDestructionCreditNote.Destruction.SupplierId; creditNoteAC.SupplierName = itemDestructionCreditNote.Destruction.SupplierProfile.NameEn; } } else if (creditNote.TypeId == Convert.ToInt32(CreditNoteType.SupplierReturnNote)) { SupplierReturnCreditNote supplierReturnCreditNotes = _iCreditNoteRepository.GetSupplierReturnCreditNoteByCreditNoteId(creditNote.Id); if (supplierReturnCreditNotes != null) { creditNoteAC.SupplierId = supplierReturnCreditNotes.SupplierReturnDetail.SupplierId; creditNoteAC.SupplierName = supplierReturnCreditNotes.SupplierReturnDetail.SupplierProfile.NameEn; } } if (creditNoteAC.SupplierId == SupplierId) { if (creditNoteAC.IsCollected) { if (creditNoteAC.RemaningAmount > 0) { creditNoteAC.ActualAmount = creditNoteAC.RemaningAmount; listOfCreditNoteAc.Add(creditNoteAC); } } else { creditNoteAC.ActualAmount = creditNoteAC.Amount; listOfCreditNoteAc.Add(creditNoteAC); } } } } return(Ok(listOfCreditNoteAc)); } catch (Exception ex) { _errorLog.LogException(ex); throw; } }