Exemplo n.º 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;
            }
        }
        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;
            }
        }