Example #1
0
        public Int32 insertDisbursement(Models.TrnDisbursement disbursement)
        {
            try
            {
                var userId = (from d in db.MstUsers where d.UserId == User.Identity.GetUserId() select d.Id).SingleOrDefault();

                var lastCVBNumber  = from d in db.TrnDisbursements.OrderByDescending(d => d.Id) where d.BranchId == currentBranchId() select d;
                var CVNumberResult = "0000000001";

                if (lastCVBNumber.Any())
                {
                    var CVNumber = Convert.ToInt32(lastCVBNumber.FirstOrDefault().CVNumber) + 0000000001;
                    CVNumberResult = zeroFill(CVNumber, 10);
                }

                Data.TrnDisbursement newDisbursement = new Data.TrnDisbursement();
                newDisbursement.BranchId        = currentBranchId();
                newDisbursement.CVNumber        = CVNumberResult;
                newDisbursement.CVDate          = DateTime.Today;
                newDisbursement.SupplierId      = (from d in db.MstArticles where d.ArticleTypeId == 3 select d.Id).FirstOrDefault();
                newDisbursement.Payee           = (from d in db.MstArticles where d.ArticleTypeId == 3 select d.Article).FirstOrDefault();
                newDisbursement.PayTypeId       = (from d in db.MstPayTypes select d.Id).FirstOrDefault();
                newDisbursement.BankId          = (from d in db.MstArticles where d.ArticleTypeId == 5 select d.Id).FirstOrDefault();
                newDisbursement.ManualCVNumber  = "NA";
                newDisbursement.Particulars     = "NA";
                newDisbursement.CheckNumber     = "NA";
                newDisbursement.CheckDate       = DateTime.Today;
                newDisbursement.Amount          = 0;
                newDisbursement.IsCrossCheck    = false;
                newDisbursement.IsClear         = false;
                newDisbursement.PreparedById    = userId;
                newDisbursement.CheckedById     = userId;
                newDisbursement.ApprovedById    = userId;
                newDisbursement.IsLocked        = false;
                newDisbursement.CreatedById     = userId;
                newDisbursement.CreatedDateTime = DateTime.Now;
                newDisbursement.UpdatedById     = userId;
                newDisbursement.UpdatedDateTime = DateTime.Now;

                db.TrnDisbursements.InsertOnSubmit(newDisbursement);
                db.SubmitChanges();

                return(newDisbursement.Id);
            }
            catch
            {
                return(0);
            }
        }
Example #2
0
        public Int32 postDisbursement()
        {
            try
            {
                Data.TrnDisbursement newDisbursement = new Data.TrnDisbursement();
                newDisbursement.PeriodId           = PeriodId();
                newDisbursement.DisbursementDate   = DateTime.Today;
                newDisbursement.DisbursementNumber = "n/a";
                newDisbursement.DisbursementType   = "n/a";
                newDisbursement.Amount             = 0;
                newDisbursement.PayTypeId          = PayTypeId();
                newDisbursement.TerminalId         = TerminalId();
                newDisbursement.Remarks            = "n/a";
                newDisbursement.IsReturn           = false;
                newDisbursement.StockInId          = StockInId();
                newDisbursement.PreparedBy         = UserId();
                newDisbursement.CheckedBy          = UserId();
                newDisbursement.CheckedBy          = UserId();
                newDisbursement.ApprovedBy         = UserId();
                newDisbursement.IsLocked           = false;
                newDisbursement.EntryUserId        = UserId();
                newDisbursement.EntryDateTime      = DateTime.Today;
                newDisbursement.UpdateUserId       = UserId();
                newDisbursement.UpdateDateTime     = DateTime.Today;
                newDisbursement.Amount1000         = 0;
                newDisbursement.Amount500          = 0;
                newDisbursement.Amount200          = 0;
                newDisbursement.Amount100          = 0;
                newDisbursement.Amount50           = 0;
                newDisbursement.Amount20           = 0;
                newDisbursement.Amount10           = 0;
                newDisbursement.Amount5            = 0;
                newDisbursement.Amount1            = 0;
                newDisbursement.Amount025          = 0;
                newDisbursement.Amount010          = 0;
                newDisbursement.Amount005          = 0;
                newDisbursement.Amount001          = 0;
                newDisbursement.Payee = "n/a";
                db.TrnDisbursements.InsertOnSubmit(newDisbursement);
                db.SubmitChanges();

                return(newDisbursement.Id);
            }
            catch (Exception e)
            {
                return(0);
            }
        }
        public HttpResponseMessage AddFolderMonitoringDisbursement(List <Entities.FolderMonitoringTrnDisbursement> folderMonitoringTrnDisbursementObjects)
        {
            try
            {
                if (folderMonitoringTrnDisbursementObjects.Any())
                {
                    foreach (var folderMonitoringTrnDisbursementObject in folderMonitoringTrnDisbursementObjects)
                    {
                        Boolean isBranchExist            = false,
                                 isSupplierExist         = false,
                                 isPayTypeExist          = false,
                                 isBankExist             = false,
                                 isUserExist             = false,
                                 isAccountExist          = false,
                                 isArticleExist          = false,
                                 isReceivingReceiptExist = false;

                        IQueryable <Data.TrnReceivingReceipt> receivingReceipt = null;

                        var branch = from d in db.MstBranches where d.BranchCode.Equals(folderMonitoringTrnDisbursementObject.BranchCode) select d;
                        if (branch.Any())
                        {
                            isBranchExist = true;

                            if (!folderMonitoringTrnDisbursementObject.RRNumber.Equals("") || !folderMonitoringTrnDisbursementObject.RRNumber.Equals("NA"))
                            {
                                receivingReceipt = from d in db.TrnReceivingReceipts where d.BranchId == branch.FirstOrDefault().Id&& d.RRNumber.Equals(folderMonitoringTrnDisbursementObject.RRNumber) && d.IsLocked == true select d;
                                if (receivingReceipt.Any())
                                {
                                    isReceivingReceiptExist = true;
                                }
                            }
                        }

                        var supplier = from d in db.MstArticles where d.ArticleTypeId == 3 && d.ManualArticleCode.Equals(folderMonitoringTrnDisbursementObject.SupplierCode) && d.IsLocked == true select d;
                        if (supplier.Any())
                        {
                            isSupplierExist = true;
                        }

                        var payType = from d in db.MstPayTypes where d.PayType.Equals(folderMonitoringTrnDisbursementObject.PayType) select d;
                        if (payType.Any())
                        {
                            isPayTypeExist = true;
                        }

                        var bank = from d in db.MstArticles where d.ArticleTypeId == 5 && d.ManualArticleCode.Equals(folderMonitoringTrnDisbursementObject.BankCode) select d;
                        if (bank.Any())
                        {
                            isBankExist = true;
                        }

                        var user = from d in db.MstUsers where d.UserName.Equals(folderMonitoringTrnDisbursementObject.UserCode) select d;
                        if (user.Any())
                        {
                            isUserExist = true;
                        }

                        List <easyfis.Entities.MstArticle> listArticles = new List <easyfis.Entities.MstArticle>();

                        var account = from d in db.MstAccounts where d.AccountCode.Equals(folderMonitoringTrnDisbursementObject.AccountCode) select d;
                        if (account.Any())
                        {
                            isAccountExist = true;

                            var accountArticleTypes = from d in db.MstAccountArticleTypes where d.AccountId == Convert.ToInt32(account.FirstOrDefault().Id) select d;
                            if (accountArticleTypes.Any())
                            {
                                foreach (var accountArticleType in accountArticleTypes)
                                {
                                    var articles = from d in db.MstArticles where d.ArticleTypeId == accountArticleType.ArticleTypeId && d.IsLocked == true select d;
                                    if (articles.Any())
                                    {
                                        foreach (var articleObject in articles)
                                        {
                                            listArticles.Add(new easyfis.Entities.MstArticle()
                                            {
                                                Id = articleObject.Id,
                                                ManualArticleCode = articleObject.ManualArticleCode,
                                                Article           = articleObject.Article
                                            });
                                        }
                                    }
                                }
                            }
                        }

                        var article = from d in listArticles where d.ManualArticleCode.Equals(folderMonitoringTrnDisbursementObject.ArticleCode) select d;
                        if (article.Any())
                        {
                            isArticleExist = true;
                        }

                        if (isBranchExist && isSupplierExist && isPayTypeExist && isBankExist && isUserExist && isAccountExist && isArticleExist)
                        {
                            Int32 CVId = 0;

                            var currentDisbursement = from d in db.TrnDisbursements where d.BranchId == branch.FirstOrDefault().Id&& d.ManualCVNumber.Equals(folderMonitoringTrnDisbursementObject.ManualCVNumber) && d.IsLocked == true select d;
                            if (currentDisbursement.Any())
                            {
                                CVId = currentDisbursement.FirstOrDefault().Id;

                                var unlockDisbursement = currentDisbursement.FirstOrDefault();
                                unlockDisbursement.IsLocked        = false;
                                unlockDisbursement.UpdatedById     = user.FirstOrDefault().Id;
                                unlockDisbursement.UpdatedDateTime = Convert.ToDateTime(folderMonitoringTrnDisbursementObject.CreatedDateTime);
                                db.SubmitChanges();

                                journal.DeleteCashVoucherJournal(CVId);
                            }
                            else
                            {
                                var defaultCVNumber  = "0000000001";
                                var lastDisbursement = from d in db.TrnDisbursements.OrderByDescending(d => d.Id) where d.BranchId == branch.FirstOrDefault().Id select d;
                                if (lastDisbursement.Any())
                                {
                                    var CVNumber = Convert.ToInt32(lastDisbursement.FirstOrDefault().CVNumber) + 0000000001;
                                    defaultCVNumber = FillLeadingZeroes(CVNumber, 10);
                                }

                                Data.TrnDisbursement newDisbursement = new Data.TrnDisbursement
                                {
                                    BranchId        = branch.FirstOrDefault().Id,
                                    CVNumber        = defaultCVNumber,
                                    CVDate          = Convert.ToDateTime(folderMonitoringTrnDisbursementObject.CVDate),
                                    ManualCVNumber  = folderMonitoringTrnDisbursementObject.ManualCVNumber,
                                    Payee           = folderMonitoringTrnDisbursementObject.Payee,
                                    SupplierId      = supplier.FirstOrDefault().Id,
                                    PayTypeId       = payType.FirstOrDefault().Id,
                                    Particulars     = folderMonitoringTrnDisbursementObject.Remarks,
                                    BankId          = bank.FirstOrDefault().Id,
                                    CheckNumber     = folderMonitoringTrnDisbursementObject.CheckNumber,
                                    CheckDate       = Convert.ToDateTime(folderMonitoringTrnDisbursementObject.CheckDate),
                                    Amount          = 0,
                                    IsCrossCheck    = folderMonitoringTrnDisbursementObject.IsCrossCheck,
                                    PreparedById    = user.FirstOrDefault().Id,
                                    CheckedById     = user.FirstOrDefault().Id,
                                    ApprovedById    = user.FirstOrDefault().Id,
                                    IsClear         = folderMonitoringTrnDisbursementObject.IsClear,
                                    Status          = null,
                                    IsCancelled     = false,
                                    IsPrinted       = false,
                                    IsLocked        = false,
                                    CreatedById     = user.FirstOrDefault().Id,
                                    CreatedDateTime = Convert.ToDateTime(folderMonitoringTrnDisbursementObject.CreatedDateTime),
                                    UpdatedById     = user.FirstOrDefault().Id,
                                    UpdatedDateTime = Convert.ToDateTime(folderMonitoringTrnDisbursementObject.CreatedDateTime)
                                };

                                db.TrnDisbursements.InsertOnSubmit(newDisbursement);
                                db.SubmitChanges();

                                CVId = newDisbursement.Id;
                            }

                            Int32?RRId = null;
                            if (isReceivingReceiptExist)
                            {
                                RRId = receivingReceipt.FirstOrDefault().Id;
                            }

                            Data.TrnDisbursementLine newDisbursementLine = new Data.TrnDisbursementLine
                            {
                                CVId        = CVId,
                                BranchId    = branch.FirstOrDefault().Id,
                                AccountId   = account.FirstOrDefault().Id,
                                ArticleId   = article.FirstOrDefault().Id,
                                RRId        = RRId,
                                Particulars = folderMonitoringTrnDisbursementObject.Particulars,
                                Amount      = folderMonitoringTrnDisbursementObject.Amount
                            };

                            db.TrnDisbursementLines.InsertOnSubmit(newDisbursementLine);
                            db.SubmitChanges();

                            var disbursement = from d in db.TrnDisbursements where d.Id == CVId && d.IsLocked == false select d;
                            if (disbursement.Any())
                            {
                                Decimal amount            = 0;
                                var     disbursementLines = from d in db.TrnDisbursementLines where d.CVId == CVId select d;
                                if (disbursementLines.Any())
                                {
                                    amount = disbursementLines.Sum(d => d.Amount);
                                }

                                var lockDisbursement = disbursement.FirstOrDefault();
                                lockDisbursement.Amount          = amount;
                                lockDisbursement.IsLocked        = true;
                                lockDisbursement.UpdatedById     = user.FirstOrDefault().Id;
                                lockDisbursement.UpdatedDateTime = Convert.ToDateTime(folderMonitoringTrnDisbursementObject.CreatedDateTime);
                                db.SubmitChanges();

                                if (disbursementLines.Any())
                                {
                                    foreach (var disbursementLine in disbursementLines)
                                    {
                                        if (disbursementLine.RRId != null)
                                        {
                                            accountsPayable.UpdateAccountsPayable(Convert.ToInt32(disbursementLine.RRId));
                                        }
                                    }
                                }

                                journal.InsertCashVoucherJournal(CVId);
                            }
                        }
                    }

                    return(Request.CreateResponse(HttpStatusCode.OK));
                }
                else
                {
                    return(Request.CreateResponse(HttpStatusCode.NotFound, "No data found."));
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Something's went wrong from the server."));
            }
        }
Example #4
0
        public HttpResponseMessage AddDisbursement()
        {
            try
            {
                var currentUser = from d in db.MstUsers
                                  where d.UserId == User.Identity.GetUserId()
                                  select d;

                if (currentUser.Any())
                {
                    var currentUserId   = currentUser.FirstOrDefault().Id;
                    var currentBranchId = currentUser.FirstOrDefault().BranchId;

                    var userForms = from d in db.MstUserForms
                                    where d.UserId == currentUserId &&
                                    d.SysForm.FormName.Equals("DisbursementList")
                                    select d;

                    if (userForms.Any())
                    {
                        if (userForms.FirstOrDefault().CanAdd)
                        {
                            var defaultCVNumber  = "0000000001";
                            var lastDisbursement = from d in db.TrnDisbursements.OrderByDescending(d => d.Id)
                                                   where d.BranchId == currentBranchId
                                                   select d;

                            if (lastDisbursement.Any())
                            {
                                var CVNumber = Convert.ToInt32(lastDisbursement.FirstOrDefault().CVNumber) + 0000000001;
                                defaultCVNumber = FillLeadingZeroes(CVNumber, 10);
                            }

                            var suppliers = from d in db.MstArticles.OrderBy(d => d.Article)
                                            where d.ArticleTypeId == 3 &&
                                            d.IsLocked == true
                                            select d;

                            if (suppliers.Any())
                            {
                                var payTypes = from d in db.MstPayTypes.OrderBy(d => d.PayType)
                                               where d.IsLocked == true
                                               select d;

                                if (payTypes.Any())
                                {
                                    var banks = from d in db.MstArticles.OrderBy(d => d.Article)
                                                where d.ArticleTypeId == 5 &&
                                                d.IsLocked == true
                                                select d;

                                    if (banks.Any())
                                    {
                                        var users = from d in db.MstUsers.OrderBy(d => d.FullName)
                                                    where d.IsLocked == true
                                                    select d;

                                        if (users.Any())
                                        {
                                            Data.TrnDisbursement newDisbursement = new Data.TrnDisbursement
                                            {
                                                BranchId        = currentBranchId,
                                                CVNumber        = defaultCVNumber,
                                                CVDate          = DateTime.Today,
                                                ManualCVNumber  = "NA",
                                                Payee           = "NA",
                                                SupplierId      = suppliers.FirstOrDefault().Id,
                                                PayTypeId       = payTypes.FirstOrDefault().Id,
                                                Particulars     = "NA",
                                                BankId          = banks.FirstOrDefault().Id,
                                                CheckNumber     = "NA",
                                                CheckDate       = DateTime.Today,
                                                Amount          = 0,
                                                IsCrossCheck    = false,
                                                PreparedById    = currentUserId,
                                                CheckedById     = currentUserId,
                                                ApprovedById    = currentUserId,
                                                IsClear         = false,
                                                Status          = null,
                                                IsCancelled     = false,
                                                IsPrinted       = false,
                                                IsLocked        = false,
                                                CreatedById     = currentUserId,
                                                CreatedDateTime = DateTime.Now,
                                                UpdatedById     = currentUserId,
                                                UpdatedDateTime = DateTime.Now
                                            };

                                            db.TrnDisbursements.InsertOnSubmit(newDisbursement);
                                            db.SubmitChanges();

                                            String newObject = auditTrail.GetObjectString(newDisbursement);
                                            auditTrail.InsertAuditTrail(currentUser.FirstOrDefault().Id, GetType().Name, MethodBase.GetCurrentMethod().Name, "NA", newObject);

                                            return(Request.CreateResponse(HttpStatusCode.OK, newDisbursement.Id));
                                        }
                                        else
                                        {
                                            return(Request.CreateResponse(HttpStatusCode.NotFound, "No user found. Please setup more users for all transactions."));
                                        }
                                    }
                                    else
                                    {
                                        return(Request.CreateResponse(HttpStatusCode.NotFound, "No bank found. Please setup more banks for all transactions."));
                                    }
                                }
                                else
                                {
                                    return(Request.CreateResponse(HttpStatusCode.NotFound, "No pay type found. Please setup more pay types for all transactions."));
                                }
                            }
                            else
                            {
                                return(Request.CreateResponse(HttpStatusCode.NotFound, "No supplier found. Please setup more suppliers for all transactions."));
                            }
                        }
                        else
                        {
                            return(Request.CreateResponse(HttpStatusCode.BadRequest, "Sorry. You have no rights to add disbursement."));
                        }
                    }
                    else
                    {
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, "Sorry. You have no access for this disbursement page."));
                    }
                }
                else
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "Theres no current user logged in."));
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Something's went wrong from the server."));
            }
        }
Example #5
0
        public HttpResponseMessage AddFolderMonitoringDisbursement(List <Entities.FolderMonitoringTrnDisbursement> folderMonitoringTrnDisbursementObjects)
        {
            try
            {
                if (folderMonitoringTrnDisbursementObjects.Any())
                {
                    String returnMessage = "";

                    List <Entities.FolderMonitoringTrnDisbursementHeader> newFolderMonitoringTrnDisbursementHeaders = new List <Entities.FolderMonitoringTrnDisbursementHeader>();
                    List <Entities.FolderMonitoringTrnDisbursementLine>   newFolderMonitoringTrnDisbursementLines   = new List <Entities.FolderMonitoringTrnDisbursementLine>();

                    Boolean isDataValid = false;

                    foreach (var folderMonitoringTrnDisbursementObject in folderMonitoringTrnDisbursementObjects)
                    {
                        Boolean isBranchExist      = false,
                                 isSupplierExist   = false,
                                 isPayTypeExist    = false,
                                 isBankExist       = false,
                                 isUserExist       = false,
                                 isLineBranchExist = false,
                                 isAccountExist    = false,
                                 isArticleExist    = false;

                        var branch = from d in db.MstBranches where d.BranchCode.Equals(folderMonitoringTrnDisbursementObject.BranchCode) select d;
                        if (branch.Any())
                        {
                            isBranchExist = true;
                        }

                        var supplier = from d in db.MstArticles where d.ArticleTypeId == 3 && d.ManualArticleCode.Equals(folderMonitoringTrnDisbursementObject.SupplierCode) && d.IsLocked == true select d;
                        if (supplier.Any())
                        {
                            isSupplierExist = true;
                        }

                        var payType = from d in db.MstPayTypes where d.PayType.Equals(folderMonitoringTrnDisbursementObject.PayType) select d;
                        if (payType.Any())
                        {
                            isPayTypeExist = true;
                        }

                        var bank = from d in db.MstArticles where d.ArticleTypeId == 5 && d.ManualArticleCode.Equals(folderMonitoringTrnDisbursementObject.BankCode) select d;
                        if (bank.Any())
                        {
                            isBankExist = true;
                        }

                        var user = from d in db.MstUsers where d.UserName.Equals(folderMonitoringTrnDisbursementObject.UserCode) select d;
                        if (user.Any())
                        {
                            isUserExist = true;
                        }

                        var lineBranch = from d in db.MstBranches where d.BranchCode.Equals(folderMonitoringTrnDisbursementObject.LineBranchCode) select d;
                        if (lineBranch.Any())
                        {
                            isLineBranchExist = true;
                        }

                        List <easyfis.Entities.MstArticle> listArticles = new List <easyfis.Entities.MstArticle>();
                        var account = from d in db.MstAccounts where d.AccountCode.Equals(folderMonitoringTrnDisbursementObject.AccountCode) select d;
                        if (account.Any())
                        {
                            isAccountExist = true;

                            var accountArticleTypes = from d in db.MstAccountArticleTypes
                                                      where d.AccountId == Convert.ToInt32(account.FirstOrDefault().Id)
                                                      group d by d.ArticleTypeId into g
                                                      select g;

                            if (accountArticleTypes.Any())
                            {
                                foreach (var accountArticleType in accountArticleTypes)
                                {
                                    var articles = from d in db.MstArticles
                                                   where d.ArticleTypeId == accountArticleType.Key &&
                                                   d.IsLocked == true
                                                   select d;

                                    if (articles.Any())
                                    {
                                        foreach (var articleObject in articles)
                                        {
                                            listArticles.Add(new easyfis.Entities.MstArticle()
                                            {
                                                Id = articleObject.Id,
                                                ManualArticleCode = articleObject.ManualArticleCode,
                                                Article           = articleObject.Article
                                            });
                                        }
                                    }
                                }
                            }
                        }

                        var article = from d in listArticles where d.ManualArticleCode.Equals(folderMonitoringTrnDisbursementObject.ArticleCode) select d;
                        if (article.Any())
                        {
                            isArticleExist = true;
                        }

                        if (!isBranchExist)
                        {
                            returnMessage = "Invalid Branch Code: " + folderMonitoringTrnDisbursementObject.BranchCode; isDataValid = false; break;
                        }
                        else if (!isSupplierExist)
                        {
                            returnMessage = "Invalid Supplier Code: " + folderMonitoringTrnDisbursementObject.SupplierCode; isDataValid = false; break;
                        }
                        else if (!isPayTypeExist)
                        {
                            returnMessage = "Invalid Pay Type: " + folderMonitoringTrnDisbursementObject.PayType; isDataValid = false; break;
                        }
                        else if (!isBankExist)
                        {
                            returnMessage = "Invalid Bank Code: " + folderMonitoringTrnDisbursementObject.BankCode; isDataValid = false; break;
                        }
                        else if (!isUserExist)
                        {
                            returnMessage = "Invalid User Code: " + folderMonitoringTrnDisbursementObject.UserCode; isDataValid = false; break;
                        }
                        else if (!isLineBranchExist)
                        {
                            returnMessage = "Invalid Line Branch Code: " + folderMonitoringTrnDisbursementObject.LineBranchCode; isDataValid = false; break;
                        }
                        else if (!isAccountExist)
                        {
                            returnMessage = "Invalid Account Code: " + folderMonitoringTrnDisbursementObject.AccountCode; isDataValid = false; break;
                        }
                        else if (!isArticleExist)
                        {
                            returnMessage = "Invalid Article Code: " + folderMonitoringTrnDisbursementObject.ArticleCode; isDataValid = false; break;
                        }
                        else
                        {
                            var currentDisbursement = from d in db.TrnDisbursements
                                                      where d.BranchId == branch.FirstOrDefault().Id &&
                                                      d.ManualCVNumber.Equals(folderMonitoringTrnDisbursementObject.ManualCVNumber)
                                                      select d;

                            if (currentDisbursement.Any())
                            {
                                returnMessage = "This Manual CV No. " + folderMonitoringTrnDisbursementObject.ManualCVNumber + " is already exist!";
                                isDataValid   = false;

                                break;
                            }
                            else
                            {
                                Int32?RRId = null;
                                if (!folderMonitoringTrnDisbursementObject.ManualRRNumber.Equals("") || !folderMonitoringTrnDisbursementObject.ManualRRNumber.Equals("NA"))
                                {
                                    var receivingReceipt = from d in db.TrnReceivingReceipts
                                                           where d.BranchId == branch.FirstOrDefault().Id &&
                                                           d.ManualRRNumber.Equals(folderMonitoringTrnDisbursementObject.ManualRRNumber) &&
                                                           d.IsLocked == true
                                                           select d;

                                    if (receivingReceipt.Any())
                                    {
                                        RRId = receivingReceipt.FirstOrDefault().Id;
                                    }
                                }

                                var folderMonitoringTrnDisbursementHeader = from d in newFolderMonitoringTrnDisbursementHeaders
                                                                            where d.BranchId == branch.FirstOrDefault().Id &&
                                                                            d.ManualCVNumber.Equals(folderMonitoringTrnDisbursementObject.ManualCVNumber)
                                                                            select d;

                                if (folderMonitoringTrnDisbursementHeader.Any())
                                {
                                    var currentFolderMonitoringTrnDisbursementHeader = folderMonitoringTrnDisbursementHeader.FirstOrDefault();
                                    currentFolderMonitoringTrnDisbursementHeader.ListFolderMonitoringTrnDisbursementLines.Add(new Entities.FolderMonitoringTrnDisbursementLine()
                                    {
                                        ManualCVNumber = folderMonitoringTrnDisbursementObject.ManualCVNumber,
                                        BranchId       = lineBranch.FirstOrDefault().Id,
                                        AccountId      = account.FirstOrDefault().Id,
                                        ArticleId      = article.FirstOrDefault().Id,
                                        RRId           = RRId,
                                        Particulars    = folderMonitoringTrnDisbursementObject.Particulars,
                                        Amount         = folderMonitoringTrnDisbursementObject.Amount
                                    });
                                }
                                else
                                {
                                    newFolderMonitoringTrnDisbursementLines = new List <Entities.FolderMonitoringTrnDisbursementLine>
                                    {
                                        new Entities.FolderMonitoringTrnDisbursementLine()
                                        {
                                            ManualCVNumber = folderMonitoringTrnDisbursementObject.ManualCVNumber,
                                            BranchId       = lineBranch.FirstOrDefault().Id,
                                            AccountId      = account.FirstOrDefault().Id,
                                            ArticleId      = article.FirstOrDefault().Id,
                                            RRId           = RRId,
                                            Particulars    = folderMonitoringTrnDisbursementObject.Particulars,
                                            Amount         = folderMonitoringTrnDisbursementObject.Amount
                                        }
                                    };

                                    if (newFolderMonitoringTrnDisbursementLines.Any())
                                    {
                                        newFolderMonitoringTrnDisbursementHeaders.Add(new Entities.FolderMonitoringTrnDisbursementHeader()
                                        {
                                            BranchId        = branch.FirstOrDefault().Id,
                                            CVNumber        = "0000000000",
                                            CVDate          = Convert.ToDateTime(folderMonitoringTrnDisbursementObject.CVDate),
                                            SupplierId      = supplier.FirstOrDefault().Id,
                                            Payee           = folderMonitoringTrnDisbursementObject.Payee,
                                            PayTypeId       = payType.FirstOrDefault().Id,
                                            BankId          = bank.FirstOrDefault().Id,
                                            ManualCVNumber  = folderMonitoringTrnDisbursementObject.ManualCVNumber,
                                            Particulars     = folderMonitoringTrnDisbursementObject.Remarks,
                                            CheckNumber     = folderMonitoringTrnDisbursementObject.CheckNumber,
                                            CheckDate       = Convert.ToDateTime(folderMonitoringTrnDisbursementObject.CheckDate),
                                            Amount          = 0,
                                            IsCrossCheck    = folderMonitoringTrnDisbursementObject.IsCrossCheck,
                                            IsClear         = folderMonitoringTrnDisbursementObject.IsClear,
                                            PreparedById    = user.FirstOrDefault().Id,
                                            CheckedById     = user.FirstOrDefault().Id,
                                            ApprovedById    = user.FirstOrDefault().Id,
                                            Status          = null,
                                            IsCancelled     = false,
                                            IsPrinted       = false,
                                            IsLocked        = false,
                                            CreatedById     = user.FirstOrDefault().Id,
                                            CreatedDateTime = Convert.ToDateTime(folderMonitoringTrnDisbursementObject.CreatedDateTime),
                                            UpdatedById     = user.FirstOrDefault().Id,
                                            UpdatedDateTime = Convert.ToDateTime(folderMonitoringTrnDisbursementObject.CreatedDateTime),
                                            ListFolderMonitoringTrnDisbursementLines = newFolderMonitoringTrnDisbursementLines
                                        });
                                    }
                                }

                                isDataValid = true;
                            }
                        }
                    }

                    if (isDataValid)
                    {
                        if (newFolderMonitoringTrnDisbursementHeaders.Any())
                        {
                            foreach (var newFolderMonitoringTrnDisbursementHeader in newFolderMonitoringTrnDisbursementHeaders)
                            {
                                Int32 CVId = 0;

                                var defaultCVNumber  = "0000000001";
                                var lastDisbursement = from d in db.TrnDisbursements.OrderByDescending(d => d.Id) where d.BranchId == newFolderMonitoringTrnDisbursementHeader.BranchId select d;
                                if (lastDisbursement.Any())
                                {
                                    var CVNumber = Convert.ToInt32(lastDisbursement.FirstOrDefault().CVNumber) + 0000000001;
                                    defaultCVNumber = FillLeadingZeroes(CVNumber, 10);
                                }

                                Data.TrnDisbursement newDisbursement = new Data.TrnDisbursement
                                {
                                    BranchId        = newFolderMonitoringTrnDisbursementHeader.BranchId,
                                    CVNumber        = defaultCVNumber,
                                    CVDate          = newFolderMonitoringTrnDisbursementHeader.CVDate,
                                    ManualCVNumber  = newFolderMonitoringTrnDisbursementHeader.ManualCVNumber,
                                    Payee           = newFolderMonitoringTrnDisbursementHeader.Payee,
                                    SupplierId      = newFolderMonitoringTrnDisbursementHeader.SupplierId,
                                    PayTypeId       = newFolderMonitoringTrnDisbursementHeader.PayTypeId,
                                    Particulars     = newFolderMonitoringTrnDisbursementHeader.Particulars,
                                    BankId          = newFolderMonitoringTrnDisbursementHeader.BankId,
                                    CheckNumber     = newFolderMonitoringTrnDisbursementHeader.CheckNumber,
                                    CheckDate       = newFolderMonitoringTrnDisbursementHeader.CheckDate,
                                    Amount          = newFolderMonitoringTrnDisbursementHeader.Amount,
                                    IsCrossCheck    = newFolderMonitoringTrnDisbursementHeader.IsCrossCheck,
                                    PreparedById    = newFolderMonitoringTrnDisbursementHeader.PreparedById,
                                    CheckedById     = newFolderMonitoringTrnDisbursementHeader.CheckedById,
                                    ApprovedById    = newFolderMonitoringTrnDisbursementHeader.ApprovedById,
                                    IsClear         = newFolderMonitoringTrnDisbursementHeader.IsClear,
                                    Status          = newFolderMonitoringTrnDisbursementHeader.Status,
                                    IsCancelled     = newFolderMonitoringTrnDisbursementHeader.IsCancelled,
                                    IsPrinted       = newFolderMonitoringTrnDisbursementHeader.IsPrinted,
                                    IsLocked        = newFolderMonitoringTrnDisbursementHeader.IsLocked,
                                    CreatedById     = newFolderMonitoringTrnDisbursementHeader.CreatedById,
                                    CreatedDateTime = newFolderMonitoringTrnDisbursementHeader.CreatedDateTime,
                                    UpdatedById     = newFolderMonitoringTrnDisbursementHeader.UpdatedById,
                                    UpdatedDateTime = newFolderMonitoringTrnDisbursementHeader.UpdatedDateTime
                                };

                                db.TrnDisbursements.InsertOnSubmit(newDisbursement);
                                db.SubmitChanges();

                                CVId = newDisbursement.Id;

                                if (newFolderMonitoringTrnDisbursementHeader.ListFolderMonitoringTrnDisbursementLines.Any())
                                {
                                    foreach (var listFolderMonitoringTrnDisbursementLine in newFolderMonitoringTrnDisbursementHeader.ListFolderMonitoringTrnDisbursementLines)
                                    {
                                        Data.TrnDisbursementLine newDisbursementLine = new Data.TrnDisbursementLine
                                        {
                                            CVId        = CVId,
                                            BranchId    = listFolderMonitoringTrnDisbursementLine.BranchId,
                                            AccountId   = listFolderMonitoringTrnDisbursementLine.AccountId,
                                            ArticleId   = listFolderMonitoringTrnDisbursementLine.ArticleId,
                                            RRId        = listFolderMonitoringTrnDisbursementLine.RRId,
                                            Particulars = listFolderMonitoringTrnDisbursementLine.Particulars,
                                            Amount      = listFolderMonitoringTrnDisbursementLine.Amount
                                        };

                                        db.TrnDisbursementLines.InsertOnSubmit(newDisbursementLine);
                                    }

                                    db.SubmitChanges();
                                }

                                var disbursement = from d in db.TrnDisbursements
                                                   where d.Id == CVId
                                                   select d;

                                if (disbursement.Any())
                                {
                                    Decimal amount = 0;
                                    var     lines  = from d in db.TrnDisbursementLines where d.CVId == CVId select d;
                                    if (lines.Any())
                                    {
                                        amount = lines.Sum(d => d.Amount);
                                    }

                                    var lockDisbursement = disbursement.FirstOrDefault();
                                    lockDisbursement.Amount   = amount;
                                    lockDisbursement.IsLocked = true;
                                    db.SubmitChanges();

                                    journal.InsertCashVoucherJournal(CVId);
                                }

                                var disbursementLines = from d in db.TrnDisbursementLines
                                                        where d.CVId == CVId &&
                                                        d.RRId != null &&
                                                        d.TrnDisbursement.IsLocked == true
                                                        select d;

                                if (disbursementLines.Any())
                                {
                                    foreach (var disbursementLine in disbursementLines)
                                    {
                                        accountsPayable.UpdateAccountsPayable(Convert.ToInt32(disbursementLine.RRId));
                                    }
                                }
                            }
                        }
                    }

                    return(Request.CreateResponse(HttpStatusCode.OK, returnMessage));
                }
                else
                {
                    return(Request.CreateResponse(HttpStatusCode.NotFound, "Data Source is Invalid or Empty."));
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Backend Error: " + ex.Message));
            }
        }
        public Int32 insertDisbursement(Models.TrnDisbursement disbursement)
        {
            try
            {
                var userId = (from d in db.MstUsers where d.UserId == User.Identity.GetUserId() select d.Id).SingleOrDefault();

                var lastCVBNumber = from d in db.TrnDisbursements.OrderByDescending(d => d.Id) select d;
                var CVNumberResult = "0000000001";

                if (lastCVBNumber.Any())
                {
                    var CVNumber = Convert.ToInt32(lastCVBNumber.FirstOrDefault().CVNumber) + 0000000001;
                    CVNumberResult = zeroFill(CVNumber, 10);
                }

                Data.TrnDisbursement newDisbursement = new Data.TrnDisbursement();
                newDisbursement.BranchId = currentBranchId();
                newDisbursement.CVNumber = CVNumberResult;
                newDisbursement.CVDate = DateTime.Today;
                newDisbursement.SupplierId = (from d in db.MstArticles where d.ArticleTypeId == 3 select d.Id).FirstOrDefault();
                newDisbursement.Payee = "NA";
                newDisbursement.PayTypeId = (from d in db.MstPayTypes select d.Id).FirstOrDefault();
                newDisbursement.BankId = (from d in db.MstArticles where d.ArticleTypeId == 5 select d.Id).FirstOrDefault();
                newDisbursement.ManualCVNumber = "NA";
                newDisbursement.Particulars = "NA";
                newDisbursement.CheckNumber = "NA";
                newDisbursement.CheckDate = DateTime.Today;
                newDisbursement.Amount = 0;
                newDisbursement.IsCrossCheck = false;
                newDisbursement.IsClear = false;
                newDisbursement.PreparedById = userId;
                newDisbursement.CheckedById = userId;
                newDisbursement.ApprovedById = userId;
                newDisbursement.IsLocked = false;
                newDisbursement.CreatedById = userId;
                newDisbursement.CreatedDateTime = DateTime.Now;
                newDisbursement.UpdatedById = userId;
                newDisbursement.UpdatedDateTime = DateTime.Now;

                db.TrnDisbursements.InsertOnSubmit(newDisbursement);
                db.SubmitChanges();

                return newDisbursement.Id;
            }
            catch
            {
                return 0;
            }
        }