コード例 #1
0
        public static AccountSummaryMain FillAccountSummaryMain(out Dictionary <string, decimal> topViewTotal)
        {
            AccountSummaryMain accountSummaryMain = new AccountSummaryMain();

            accountSummaryMain.ArSummary = GetAccSummaryByParentAccId("171").Take(5).ToList();
            //accountSummaryMain.ApSummary = GetAccSummaryByParentAccId("281", true).Take(5).ToList();
            accountSummaryMain.AgentSummary        = GetAccSummaryByParentAccId("178").Take(5).ToList();
            accountSummaryMain.CashInBankSummary   = GetBankListRpt("193").ToList();
            accountSummaryMain.ApCarrierSummary    = GetAccSummaryByParentAccId("2811", true).Take(5).ToList();
            accountSummaryMain.ApContractorSummary = GetAccSummaryByParentAccId("2812", true).Take(5).ToList();

            accountSummaryMain.TreasurySummary = GetAccSummaryByParentAccId("194").Take(5).ToList();

            //Get Total Collected
            AccountingEntities db = new AccountingEntities();

            accountSummaryMain.TotalCollectedByCurrency = db.CashInReceipts.Include("Currency")
                                                          .Where(x => x.IsDeleted == false)
                                                          .GroupBy(x => x.Currency.CurrencySign)
                                                          .Select(x => new { CurrSign = x.Key, Amount = x.Sum(y => y.ReceiptAmount) })
                                                          .ToDictionary(x => x.CurrSign, x => x.Amount);

            accountSummaryMain.TotalPaidByCurrency = db.CashOutReceipts.Include("Currency")
                                                     .Where(x => x.IsDeleted == false)
                                                     .GroupBy(x => x.Currency.CurrencySign)
                                                     .Select(x => new { CurrSign = x.Key, Amount = x.Sum(y => y.ReceiptAmount) })
                                                     .ToDictionary(x => x.CurrSign, x => x.Amount);

            //Fill Balance Top View Report
            accountSummaryMain.TopViewBalance = GetTopViewBalanceRpt();

            topViewTotal = GetTopBalanceTotals(accountSummaryMain.TopViewBalance);

            return(accountSummaryMain);
        }
コード例 #2
0
        public static CashInVm GetCashReceiptInfo(int cashReceiptId = 0)
        {
            CashInVm           cashVm = new CashInVm();
            AccountingEntities db     = new AccountingEntities();

            var cashReceiptObj = db.ArCashDepositViews.Where(x => x.ReceiptId == cashReceiptId).FirstOrDefault();

            Mapper.CreateMap <ArCashDepositView, CashInVm>()
            .ForMember(x => x.CashInReceiptChecks, y => y.Ignore())
            .ForMember(x => x.CashInReceiptInvs, y => y.Ignore())
            .ForMember(x => x.PaymentTermName, y => y.MapFrom(u => u.PaymentTermEn));

            Mapper.Map(cashReceiptObj, cashVm);

            cashVm.CustomerName = string.IsNullOrEmpty(cashReceiptObj.ShipperNameEn) ? cashReceiptObj.ConsigneeNameEn : cashReceiptObj.ShipperNameEn;

            //for bank
            if (cashVm.PaymentTermId == (byte)PaymentTermEnum.BankCashDeposit)
            {
                int bankAccId = cashVm.BankAccId.Value;
                var bankInfo  = db.BankAccounts.Include("Bank").Where(x => x.BankAccId == bankAccId).FirstOrDefault();
                cashVm.BankDetailsVm = new BankDetailsVm()
                {
                    AccountName   = bankInfo.AccountName,
                    AccountNumber = bankInfo.AccountNumber,
                    BankNameEn    = bankInfo.Bank.BankNameEn,
                    BankAddressEn = bankInfo.Bank.BankAddressEn
                };
            }

            return(cashVm);
        }
コード例 #3
0
        public static List <CCCashDepositVm> GetCCCashDepositList(int operationId)
        {
            AccountingEntities     db = new AccountingEntities();
            List <CCCashDepositVm> cashDepositVmList = new List <CCCashDepositVm>();
            var cashDepositDbList = db.CashOutCCCashDeposits.Include("CashOutReceipt")
                                    .Where(x => x.OperationId == operationId)
                                    .Select(x => new
            {
                x.OperationId,
                x.ReceiptId,
                x.CashOutReceipt.ReceiptAmount,
                x.CashOutReceipt.Currency.CurrencySign,
                x.CashOutReceipt.CreateDate,
                x.CashOutReceipt.ReceiptCode
            }).ToList();

            CCCashDepositVm cashDepositVm;

            foreach (var item in cashDepositDbList)
            {
                cashDepositVm = new CCCashDepositVm()
                {
                    CreateDate    = item.CreateDate,
                    CurrencySign  = item.CurrencySign,
                    OperationId   = item.OperationId,
                    ReceiptId     = item.ReceiptId,
                    ReceiptAmount = item.ReceiptAmount,
                    ReceiptCode   = item.ReceiptCode
                };

                cashDepositVmList.Add(cashDepositVm);
            }
            return(cashDepositVmList);
        }
コード例 #4
0
ファイル: BankHelper.cs プロジェクト: amorsi/EasyFreight
        internal static BankDetailsVm GetBankDetByCurrency(int bankId, int currencyId)
        {
            BankDetailsVm bankDetails = new BankDetailsVm();

            AccountingEntities db = new AccountingEntities();
            Bank bankDbObj        = db.Banks.Include("BankAccounts")
                                    .Where(x => x.BankId == bankId).FirstOrDefault();

            Mapper.CreateMap <Bank, BankDetailsVm>()
            .ForMember(x => x.BankAccounts, y => y.Ignore())
            .IgnoreAllNonExisting();
            Mapper.Map(bankDbObj, bankDetails);

            var bankAccountObj = bankDbObj.BankAccounts.Where(x => x.CurrencyId == currencyId).FirstOrDefault();

            if (bankAccountObj != null)
            {
                bankDetails.AccountName   = bankAccountObj.AccountName;
                bankDetails.AccountNumber = bankAccountObj.AccountNumber;
                bankDetails.BankAccId     = bankAccountObj.BankAccId;
            }
            else
            {
                bankDetails.AccountName = "false";
            }

            return(bankDetails);
        }
コード例 #5
0
        public static List <CashInInvoiceVm> GetCashInvList(int invId)
        {
            List <CashInInvoiceVm> cashInVmList = new List <CashInInvoiceVm>();
            AccountingEntities     db           = new AccountingEntities();
            var cashDbList = db.CashOutReceiptInvs
                             .Include("CashOutReceipt")
                             .Include("CashOutReceipt.PaymentTerm")
                             .Include("CashOutReceipt.Currency")
                             .Where(x => x.InvoiceId == invId).ToList();

            Mapper.CreateMap <CashOutReceiptInv, CashInInvoiceVm>()
            .IgnoreAllNonExisting();
            Mapper.CreateMap <CashOutReceipt, CashInVm>()
            .ForMember(x => x.CashInReceiptChecks, y => y.Ignore())
            .IgnoreAllNonExisting();

            Mapper.Map(cashDbList, cashInVmList);

            foreach (var item in cashInVmList)
            {
                var cashDbObj = cashDbList
                                .Where(x => x.ReceiptId == item.ReceiptId && x.InvoiceId == item.InvoiceId).FirstOrDefault();
                Mapper.Map(cashDbObj.CashOutReceipt, item.CashInReceipt);
                item.CurrencySign = cashDbObj.CashOutReceipt.Currency.CurrencySign;
                item.CashInReceipt.PaymentTermName = cashDbObj.CashOutReceipt.PaymentTerm.PaymentTermEn;
                item.CashInReceipt.CashType        = "cashout";
            }

            return(cashInVmList);
        }
コード例 #6
0
        public static List <CashInInvoiceVm> GetCashAgNoteList(int agNoteId)
        {
            List <CashInInvoiceVm> cashInVmList = new List <CashInInvoiceVm>();
            AccountingEntities     db           = new AccountingEntities();
            var cashDbList = db.CashOutReceiptAgNotes
                             .Include("CashOutReceipt")
                             .Include("CashOutReceipt.PaymentTerm")
                             .Include("CashOutReceipt.Currency")
                             .Where(x => x.AgentNoteId == agNoteId).ToList();

            Mapper.CreateMap <CashOutReceiptAgNote, CashInInvoiceVm>().IgnoreAllNonExisting();

            Mapper.Map(cashDbList, cashInVmList);

            Mapper.CreateMap <CashOutReceipt, CashInVm>();

            foreach (var item in cashInVmList)
            {
                int receiptId = item.ReceiptId;
                Mapper.Map(cashDbList.Where(x => x.ReceiptId == receiptId).FirstOrDefault().CashOutReceipt, item.CashInReceipt);
                var cashDbObj = cashDbList
                                .Where(x => x.ReceiptId == item.ReceiptId && x.AgentNoteId == item.AgentNoteId).FirstOrDefault();
                item.CurrencySign = cashDbObj.CashOutReceipt.Currency.CurrencySign;
                item.CashInReceipt.PaymentTermName = cashDbObj.CashOutReceipt.PaymentTerm.PaymentTermEn;
            }

            return(cashInVmList);
        }
コード例 #7
0
        /// <summary>
        /// Delete accounting transaction the transaction table
        /// </summary>
        /// <param name="transID"></param>
        /// <returns></returns>
        public static bool DeleteTransaction(int transID)
        {
            bool isDeleted        = false;
            AccountingEntities db = new AccountingEntities();

            AccTransaction transDb = new AccTransaction();
            List <AccTransactionDetail> transDetailDb = new List <AccTransactionDetail>();

            transDb = db.AccTransactions.Where(x => x.TransId == transID).FirstOrDefault();
            if (transDb != null)
            {
                transDetailDb = db.AccTransactionDetails.Where(x => x.TransId == transID).ToList();
                try
                {
                    db.AccTransactions.Remove(transDb);
                    foreach (var item in transDetailDb)
                    {
                        db.AccTransactionDetails.Remove(item);
                    }
                    db.SaveChanges();
                    isDeleted = true;
                }
                catch
                {
                    isDeleted = false;
                }
            }
            return(isDeleted);
        }
コード例 #8
0
        /// <summary>
        /// Get Cash Receipt info for Agent Note ..Not like invoices ..
        /// Will allow only to collect from one agent note only .. not for all notes for that agent
        /// </summary>
        /// <param name="agNoteId"></param>
        /// <param name="cashVm"></param>
        private static void FillCashVmForAgNote(int agNoteId, ref CashInVm cashVm)
        {
            AccountingEntities     db             = new AccountingEntities();
            List <CashInInvoiceVm> cashAgNoteList = new List <CashInInvoiceVm>();
            List <AgentNoteView>   agNoteList     = new List <AgentNoteView>();

            agNoteList = db.AgentNoteViews
                         .Where(x => x.AgentNoteId == agNoteId && (x.InvStatusId != 4 && x.InvStatusId != 1)).ToList();
            Mapper.CreateMap <AgentNoteView, CashInInvoiceVm>().IgnoreAllNonExisting();
            Mapper.Map(agNoteList, cashAgNoteList);

            cashVm.CashInReceiptInvs = cashAgNoteList;

            List <int> invIds    = agNoteList.Select(x => x.AgentNoteId).ToList();
            var        cashInvDb = db.CashOutReceiptAgNotes
                                   .Where(x => invIds.Contains(x.AgentNoteId))
                                   .GroupBy(x => x.AgentNoteId)
                                   .ToList();

            foreach (var item in cashVm.CashInReceiptInvs)
            {
                item.CollectedAmount = cashInvDb.Where(x => x.Key == item.AgentNoteId)
                                       .Select(x => x.Sum(y => y.PaidAmount)).FirstOrDefault();
                item.AmountDue = item.TotalAmount - item.CollectedAmount;
            }
            cashVm.CashType = "cashout";
        }
コード例 #9
0
ファイル: AgentNoteHelper.cs プロジェクト: amorsi/EasyFreight
        public static List <AgentNoteVm> GetAgentNoteList(int operId)
        {
            AccountingEntities db            = new AccountingEntities();
            List <AgentNoteVm> agentNoteList = new List <AgentNoteVm>();
            var agNoteDb = db.AgentNotes.Where(x => x.OperationId == operId).ToList();

            Mapper.CreateMap <AgentNote, AgentNoteVm>()
            .ForMember(x => x.AgentNoteDetails, y => y.Ignore())
            .IgnoreAllNonExisting();

            Mapper.Map(agNoteDb, agentNoteList);
            //Get agent Name
            List <int>          agentIds = agentNoteList.Select(x => x.AgentId).ToList();
            EasyFreightEntities db1      = new EasyFreightEntities();
            var agentInfo = db1.Agents.Where(x => agentIds.Contains(x.AgentId))
                            .Select(x => new { x.AgentId, x.AgentNameEn }).ToList();
            // update to show status 24/01/2017
            var invStatusLib = db.InvStatusLibs.Select(a => a).ToList();

            foreach (var item in agentNoteList)
            {
                item.AgentName = agentInfo.Where(x => x.AgentId == item.AgentId).FirstOrDefault().AgentNameEn;
                // update to show status 24/01/2017
                item.InvStatusName = invStatusLib.Where(x => x.InvStatusId == item.InvStatusId)
                                     .FirstOrDefault().InvStatusNameEn;
                if (item.AgentNoteType == 1) //Debit .. will collect
                {
                    item.InvStatusName = item.InvStatusName.Replace("Paid", "Collected");
                }
            }

            return(agentNoteList);
        }
コード例 #10
0
ファイル: BankHelper.cs プロジェクト: amorsi/EasyFreight
        internal static List <BankVm> GetAllBankAndAccountList()
        {
            List <BankVm>      bankList = new List <BankVm>();
            AccountingEntities db       = new AccountingEntities();
            var carrDbList = db.Banks.ToList();

            Mapper.CreateMap <Bank, BankVm>()
            .ForMember(x => x.BankAccounts, y => y.Ignore())
            .IgnoreAllNonExisting();
            Mapper.Map(carrDbList, bankList);

            //Accounts
            List <BankAccountVm> bankAccountVm = new List <BankAccountVm>();

            List <BankAccount> bankAccountDb = db.BankAccounts.Include("Currency").ToList();

            Mapper.CreateMap <BankAccount, BankAccountVm>()
            .IgnoreAllNonExisting();
            Mapper.Map(bankAccountDb, bankAccountVm);

            foreach (var item in bankAccountVm)
            {
                item.CurrencySign = bankAccountDb.Where(x => x.BankAccId == item.BankAccId).FirstOrDefault().Currency.CurrencySign;
            }



            foreach (var item in bankList)
            {
                item.BankAccounts = bankAccountVm.Where(x => x.BankId == item.BankId).ToList();
            }

            return(bankList);
        }
コード例 #11
0
        public static string AddEditArDepBalance(int?shipperId, int?consigneeId,
                                                 int currId, decimal amountToAdd, AccountingEntities db)
        {
            string isSaved = "true";

            //AccountingEntities db = new AccountingEntities();

            var arDepBalance = GetBalanceObj(shipperId, consigneeId, currId, db);

            //New balance case
            if (arDepBalance.BalanceAmount == 0)
            {
                arDepBalance.BalanceAmount = amountToAdd;
                arDepBalance.ConsigneeId   = consigneeId;
                arDepBalance.ShipperId     = shipperId;
                arDepBalance.CurrencyId    = currId;
                db.ArCashDepositBalances.Add(arDepBalance);
            }
            else
            {
                db.ArCashDepositBalances.Attach(arDepBalance);
                arDepBalance.BalanceAmount = arDepBalance.BalanceAmount + amountToAdd;
            }

            db.SaveChanges();

            return(isSaved);
        }
コード例 #12
0
        public static List <ExpenseLib> GetExpenseLibList()
        {
            AccountingEntities db           = new AccountingEntities();
            List <ExpenseLib>  expensesList = db.ExpenseLibs.ToList();

            return(expensesList);
        }
コード例 #13
0
        /// <summary>
        /// Get current deposit balance for client and currency
        /// </summary>
        /// <param name="shipperId"></param>
        /// <param name="consigneeId"></param>
        /// <param name="currId"></param>
        /// <returns>decimal balance amount</returns>
        public static decimal GetDepositBalance(int?shipperId, int?consigneeId, int currId)
        {
            AccountingEntities db = new AccountingEntities();
            var arDepBalance      = GetBalanceObj(shipperId, consigneeId, currId, db);

            return(arDepBalance?.BalanceAmount ?? 0);
        }
コード例 #14
0
        internal static List <InvoiceLightVm> GetInvListForHb(int hbId)
        {
            AccountingEntities db2 = new AccountingEntities();

            var invList = db2.Invoices.Where(x => x.HouseBillId == hbId)
                          .Select(x => new InvoiceLightVm
            {
                InvoiceCode = x.InvoiceCode,
                InvoiceId   = x.InvoiceId,
                InvoiceDate = x.InvoiceDate,
                InvoiceType = x.InvoiceType,
                HouseBillId = x.HouseBillId
            })
                          .ToList();

            //Get Cost list
            var operCostObj = AccountingHelper.GetOperationCost(0, hbId);

            var operCostList = operCostObj.OperationCostAccVms;


            foreach (var item in invList)
            {
                var operCostTotalList = operCostObj.OperationCostTotalAccVms;
                GetHbInvTotal(item.InvoiceType, ref operCostList, ref operCostTotalList);
                item.OperationCostTotalAccVms = operCostTotalList;
            }
            return(invList);
        }
コード例 #15
0
        internal static Dictionary <byte, string> GetPaymentTerm(string langCode = "en", bool includeDepositOption = false)
        {
            AccountingEntities db = new AccountingEntities();

            Dictionary <byte, string> paymentTermList = new Dictionary <byte, string>();
            var operationCostListDb = db.PaymentTerms.ToList();

            if (!includeDepositOption)
            {
                operationCostListDb = operationCostListDb.Where(x => x.PaymentTermId != 5).ToList();
            }

            if (langCode == "en")
            {
                paymentTermList = operationCostListDb
                                  .OrderBy(x => x.PaymentTermId)
                                  .ToDictionary(x => x.PaymentTermId, x => x.PaymentTermEn);
            }
            else
            {
                paymentTermList = operationCostListDb
                                  .OrderBy(x => x.PaymentTermId)
                                  .ToDictionary(x => x.PaymentTermId, x => x.PaymentTermAr);
            }


            return(paymentTermList);
        }
コード例 #16
0
        private static void AddExpenseReceiptToTrans(CashInVm cashInVmObj)
        {
            string creditAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(cashInVmObj.CurrencyId, "Currency", "CurrencyId");

            if (string.IsNullOrEmpty(creditAccId))
            {
                string parentAccountId = ((int)AccountingChartEnum.Cash).ToString();
                //Add new accountId to the chart
                creditAccId = AccountingChartHelper
                              .AddAccountToChart(cashInVmObj.CurrencySign, cashInVmObj.CurrencySign, parentAccountId);
                AccountingChartHelper.AddAccountIdToObj(creditAccId, "Currency", cashInVmObj.CurrencyId, "CurrencyId");
            }


            AccTransactionVm accTrans = new AccTransactionVm()
            {
                CreateDate        = DateTime.Now,
                CreateBy          = EasyFreight.DAL.AdminHelper.GetCurrentUserId(),
                TransactionName   = "Cash Out Receipt Number " + cashInVmObj.ReceiptCode,
                TransactionNameAr = "ايصال صرف نقدية رقم " + cashInVmObj.ReceiptCode
            };

            AccountingEntities db = new AccountingEntities();
            var expensesLibList   = db.ExpenseLibs.Select(x => new { x.ExpenseId, x.AccountId }).ToList();

            AccTransactionDetailVm accTransDetDebit;

            //Loop through expenses for debit accounts
            foreach (var item in cashInVmObj.CashOutReceiptExpenses)
            {
                string debitAccId = expensesLibList.Where(x => x.ExpenseId == item.ExpenseId).FirstOrDefault().AccountId;
                accTransDetDebit = new AccTransactionDetailVm()
                {
                    AccountId    = debitAccId,
                    DebitAmount  = item.PaidAmount.Value,
                    CurrencyId   = cashInVmObj.CurrencyId,
                    CreditAmount = 0
                };
                accTrans.AccTransactionDetails.Add(accTransDetDebit);
            }

            // Add Cash as credit
            AccTransactionDetailVm accTransDetCredit = new AccTransactionDetailVm()
            {
                AccountId    = creditAccId,
                CreditAmount = cashInVmObj.ReceiptAmount.Value,
                CurrencyId   = cashInVmObj.CurrencyId,
                DebitAmount  = 0
            };

            accTrans.AccTransactionDetails.Add(accTransDetCredit);



            int transId = AccountingHelper.AddTransaction(accTrans);

            //Update TransId in invoice table
            AccountingChartHelper.AddTransIdToObj(transId, "CashOutReceipt", cashInVmObj.ReceiptId, "ReceiptId");
        }
コード例 #17
0
        public int populateModel()
        {
            using (var accountingEntities = new AccountingEntities()) {
                accountingEntities.account_document
            }

            return(0);
        }
コード例 #18
0
ファイル: OrmTests.cs プロジェクト: zaguan/Accounting
 public void Setup()
 {
     using (var dbContext = new AccountingEntities())
     {
         dbContext.Budgets.RemoveRange(dbContext.Budgets);
         dbContext.SaveChanges();
     }
 }
コード例 #19
0
ファイル: AgentNoteHelper.cs プロジェクト: amorsi/EasyFreight
        internal static void ChangeAgNoteStatus(int agNoteId, InvStatusEnum invStatusEnum)
        {
            byte invStatusId      = (byte)invStatusEnum;
            AccountingEntities db = new AccountingEntities();
            var invDb             = db.AgentNotes.Where(x => x.AgentNoteId == agNoteId).FirstOrDefault();

            invDb.InvStatusId = invStatusId;

            db.SaveChanges();
        }
コード例 #20
0
ファイル: BankHelper.cs プロジェクト: amorsi/EasyFreight
        public static string AddEditBank(BankVm bankVm)
        {
            int                bankId  = bankVm.BankId;
            string             isSaved = "true";
            AccountingEntities db      = new AccountingEntities();
            Bank               bankDb;
            List <BankAccount> dbContactList = new List <BankAccount>();

            if (bankId == 0) //Add new case
            {
                bankDb = new Bank();
            }
            else
            {
                bankDb = db.Banks.Include("BankAccounts").Where(x => x.BankId == bankId).FirstOrDefault();
                //delete any removed contact on the screen
                dbContactList = bankDb.BankAccounts.ToList();

                //Get contact Ids sent from the screen
                List <int> contactVmIds = bankVm.BankAccounts.Select(x => x.BankAccId).ToList();
                var        contactDel   = dbContactList.Where(x => !contactVmIds.Contains(x.BankAccId)).ToList();

                foreach (var item in contactDel)
                {
                    db.BankAccounts.Remove(item);
                }
            }

            Mapper.CreateMap <BankVm, Bank>().IgnoreAllNonExisting();
            Mapper.CreateMap <BankAccountVm, BankAccount>().IgnoreAllNonExisting();
            Mapper.Map(bankVm, bankDb);



            if (bankId == 0)
            {
                db.Banks.Add(bankDb);
            }


            try
            {
                db.SaveChanges();
            }
            catch (DbEntityValidationException e)
            {
                isSaved = "false " + e.Message;
            }
            catch (Exception e)
            {
                isSaved = "false " + e.Message;
            }

            return(isSaved);
        }
コード例 #21
0
        /// <summary>
        /// Get Account Summary Grouped By Currency .. Used to fill summary table at page top
        /// </summary>
        /// <param name="parentAccId"></param>
        /// <param name="isCreditAccount"></param>
        /// <param name="fromDate"></param>
        /// <param name="toDate"></param>
        /// <returns>AccountSummary object</returns>
        public static AccountSummary GetAccountSummaryGrouped(string parentAccId, bool isCreditAccount = false,
                                                              DateTime?fromDate = null, DateTime?toDate = null, int bId = 0)
        {
            AccountSummary accountSummary = new AccountSummary();

            var accSummaryList = GetAccSummaryByParentAccId(parentAccId, isCreditAccount, fromDate, toDate);

            AccountingEntities db = new AccountingEntities();

            accountSummary.AccountNameEn = db.AccountingCharts.Where(x => x.AccountId == parentAccId).FirstOrDefault().AccountNameEn;

            //Cash in Bank .. get for specific bank ID
            if (parentAccId == "193" && bId != 0)
            {
                var accIdsForBank = db.BankAccounts.Where(x => x.BankId == bId).Select(x => x.AccountId).ToList();

                accSummaryList = accSummaryList.Where(x => accIdsForBank.Contains(x.AccountId)).ToList();
            }


            if (accSummaryList.Count > 0)
            {
                var grouped = accSummaryList.GroupBy(x => x.CurrencySign)
                              .Select(x => new
                {
                    Currency  = x.Key,
                    DebitSum  = x.Sum(y => y.DebitAmout),
                    CreditSum = x.Sum(y => y.CreditAmount)
                }).ToList();

                List <AccountSummaryTotal> sumByCurrency = new List <AccountSummaryTotal>();
                AccountSummaryTotal        accountSummaryTotal;
                decimal diffAmount;
                foreach (var item in grouped)
                {
                    accountSummaryTotal = new AccountSummaryTotal();
                    accountSummaryTotal.CurrencySign = item.Currency;
                    diffAmount = item.DebitSum - item.CreditSum;
                    if (diffAmount > 0)
                    {
                        accountSummaryTotal.DebitAmout = diffAmount;
                    }
                    else
                    {
                        accountSummaryTotal.CreditAmount = diffAmount * -1;
                    }

                    sumByCurrency.Add(accountSummaryTotal);
                }

                accountSummary.TotalByCurrency = sumByCurrency;
            }

            return(accountSummary);
        }
コード例 #22
0
        internal static string Delete(int invId, string deleteReason)
        {
            string isSaved = "false";

            if (invId == 0)
            {
                return(isSaved);
            }

            AccountingEntities db = new AccountingEntities();

            InvoiceAP invDb = new InvoiceAP();

            invDb = db.InvoiceAPs
                    .Where(x => x.InvoiceId == invId).FirstOrDefault();

            int?transID = null;

            if (invDb.TransId != null)
            {
                transID = invDb.TransId.Value;
            }

            if (invDb.InvStatusId == 1 || invDb.InvStatusId == 2)
            {
                invDb.IsDeleted    = true;
                invDb.DeleteReason = deleteReason;
                invDb.DeletedBy    = EasyFreight.DAL.AdminHelper.GetCurrentUserId();
                invDb.TransId      = null;

                // invoice total
                var invTotal = db.InvoiceTotalAPs.Where(x => x.InvoiceId == invId).FirstOrDefault();

                try
                {
                    db.SaveChanges();

                    db.InvoiceTotalAPs.Remove(invTotal);

                    if (transID.HasValue)
                    {
                        AccountingHelper.DeleteTransaction(transID.Value);
                    }


                    isSaved = "true";
                }
                catch
                {
                    isSaved = "false";
                }
            }

            return(isSaved);
        }
コード例 #23
0
        internal static JObject GetCashReceiptsJson()
        {
            AccountingEntities db = new AccountingEntities();

            var receiptList = db.ArCashDepositViews.OrderByDescending(x => x.CreateDate).ToList();


            JTokenWriter pJTokenWriter = new JTokenWriter();
            JObject      ordersJson    = new JObject();

            pJTokenWriter.WriteStartObject();
            pJTokenWriter.WritePropertyName("data");
            pJTokenWriter.WriteStartArray();

            foreach (var item in receiptList)
            {
                pJTokenWriter.WriteStartObject();

                pJTokenWriter.WritePropertyName("ReceiptId");
                pJTokenWriter.WriteValue(item.ReceiptId);

                pJTokenWriter.WritePropertyName("ReceiptCode");
                pJTokenWriter.WriteValue(item.ReceiptCode);

                pJTokenWriter.WritePropertyName("ReceiptDate");
                pJTokenWriter.WriteValue(item.ReceiptDate.ToString("dd/MM/yyyy"));

                pJTokenWriter.WritePropertyName("ReceiptAmount");
                pJTokenWriter.WriteValue(item.ReceiptAmount.ToString() + " " + item.CurrencySign);

                pJTokenWriter.WritePropertyName("Notes");
                pJTokenWriter.WriteValue(item.Notes ?? "");

                pJTokenWriter.WritePropertyName("Client");
                pJTokenWriter.WriteValue(string.IsNullOrEmpty(item.ShipperNameEn) ? item.ConsigneeNameEn : item.ShipperNameEn);

                pJTokenWriter.WritePropertyName("CreateDate");
                pJTokenWriter.WriteValue(item.CreateDate.ToString("dd/MM/yyyy"));

                pJTokenWriter.WritePropertyName("UserName");
                pJTokenWriter.WriteValue(item.UserName);

                pJTokenWriter.WritePropertyName("PaymentTermEn");
                pJTokenWriter.WriteValue(item.PaymentTermEn);

                pJTokenWriter.WriteEndObject();
            }


            pJTokenWriter.WriteEndArray();
            pJTokenWriter.WriteEndObject();
            ordersJson = (JObject)pJTokenWriter.Token;
            return(ordersJson);
        }
コード例 #24
0
ファイル: BankHelper.cs プロジェクト: amorsi/EasyFreight
        internal static List <BankVm> GetBankList()
        {
            List <BankVm>      bankList = new List <BankVm>();
            AccountingEntities db       = new AccountingEntities();
            var carrDbList = db.Banks.ToList();

            Mapper.CreateMap <Bank, BankVm>()
            .ForMember(x => x.BankAccounts, y => y.Ignore())
            .IgnoreAllNonExisting();
            Mapper.Map(carrDbList, bankList);
            return(bankList);
        }
コード例 #25
0
        public static string AddEditExpense(int expenseId, string expenseNameEn, string expenseNameAr)
        {
            string             isSaved = "";
            AccountingEntities db      = new AccountingEntities();
            ExpenseLib         expenseLibDb;

            if (expenseId != 0)
            {
                expenseLibDb = db.ExpenseLibs.Where(x => x.ExpenseId == expenseId).FirstOrDefault();
            }
            else
            {
                expenseLibDb = new ExpenseLib();
            }

            expenseLibDb.ExpenseNameEn = expenseNameEn;
            expenseLibDb.ExpenseNameAr = expenseNameAr;

            if (expenseId == 0)
            {
                db.ExpenseLibs.Add(expenseLibDb);
            }

            using (TransactionScope transaction = new TransactionScope())
            {
                try
                {
                    db.SaveChanges();
                    if (expenseId == 0)
                    {
                        expenseId = expenseLibDb.ExpenseId;
                        string parentAccountId = ((int)AccountingChartEnum.GeneralAndAdministrativeExpenses).ToString();
                        string accountId       = AccountingChartHelper.AddAccountToChart(expenseNameEn, expenseNameAr, parentAccountId);
                        AccountingChartHelper.AddAccountIdToObj(accountId, "ExpenseLib", expenseId, "ExpenseId");

                        isSaved = expenseId.ToString();
                    }

                    transaction.Complete();
                }
                catch (DbEntityValidationException e)
                {
                    isSaved = "false " + e.Message;
                }
                catch (Exception e)
                {
                    isSaved = "false " + e.Message;
                }
            }

            return(isSaved);
        }
コード例 #26
0
        internal static Dictionary <int, string> GetBankAccList()
        {
            AccountingEntities db = new AccountingEntities();

            Dictionary <int, string> banksList = new Dictionary <int, string>();
            var bankAccListDb = db.BankAccounts.ToList();

            banksList = bankAccListDb
                        .OrderBy(x => x.BankId)
                        .ToDictionary(x => x.BankAccId, x => x.AccountName + " (" + x.AccountNumber + ")");

            return(banksList);
        }
コード例 #27
0
        public static string AddCashToChart(int currencyId)
        {
            string             parentAccountId = "", accountId;
            AccountingEntities db = new AccountingEntities();
            var currObj = db.CurrencyAccs.Where(x => x.CurrencyId == currencyId).FirstOrDefault();

            parentAccountId = ((int)AccountingChartEnum.Cash).ToString();
            //Add new accountId to the chart
            accountId = AccountingChartHelper
                        .AddAccountToChart(currObj.CurrencySign, currObj.CurrencySign, parentAccountId);
            AccountingChartHelper.AddAccountIdToObj(accountId, "Currency", currObj.CurrencyId, "CurrencyId");

            return(accountId);
        }
コード例 #28
0
ファイル: BankHelper.cs プロジェクト: amorsi/EasyFreight
        internal static BankAccountVm GetBankAccountInfo(int bankAccId)
        {
            BankAccountVm      bankAccountVm = new BankAccountVm();
            AccountingEntities db            = new AccountingEntities();

            BankAccount bankAccountDb = db.BankAccounts.Include("Currency").Where(x => x.BankAccId == bankAccId).FirstOrDefault();

            Mapper.CreateMap <BankAccount, BankAccountVm>()
            .IgnoreAllNonExisting();
            Mapper.Map(bankAccountDb, bankAccountVm);

            bankAccountVm.CurrencySign = bankAccountDb.Currency.CurrencySign;

            return(bankAccountVm);
        }
コード例 #29
0
        public static string AddArCashDeposit(CashInVm cashInVm)
        {
            string             isSaved       = "true";
            AccountingEntities db            = new AccountingEntities();
            ArCashDeposit      arCashDeposit = new ArCashDeposit();

            Mapper.CreateMap <CashInVm, ArCashDeposit>()
            .IgnoreAllNonExisting();
            Mapper.Map(cashInVm, arCashDeposit);

            using (TransactionScope transaction = new TransactionScope())
            {
                try
                {
                    arCashDeposit.ReceiptCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.CashIn, true);
                    db.ArCashDeposits.Add(arCashDeposit);

                    db.SaveChanges();



                    cashInVm.ReceiptId   = arCashDeposit.ReceiptId;
                    cashInVm.ReceiptCode = arCashDeposit.ReceiptCode;

                    string creditAccountId = ((int)AccountingChartEnum.DepositRevenues).ToString();

                    //Add invoice to accounting transactions table
                    CashHelper.AddReceiptToTransTable(creditAccountId, cashInVm, "ArCashDeposit");

                    //Add or update deposit balance for this client
                    CashDepositBalanceHelper.AddEditArDepBalance(cashInVm.ShipperId, cashInVm.ConsigneeId,
                                                                 cashInVm.CurrencyId, cashInVm.ReceiptAmount.Value, db);

                    transaction.Complete();
                }
                catch (DbEntityValidationException e)
                {
                    isSaved = "false " + e.Message;
                }
                catch (Exception e)
                {
                    isSaved = "false " + e.Message;
                }
            }


            return(isSaved);
        }
コード例 #30
0
        public static string AddAccountToChart(string accountNameEn, string accountNameAr, string parentAccountId)
        {
            AccountingEntities db = new AccountingEntities();
            // string accountRecCode = ((int) AccountingChartEnum.AccountsRecievable).ToString();
            // int addOne = db.AccountingCharts.Where(x => x.ParentAccountId == parentAccountId).Count() + 1;
            var    addOne       = db.AccountingCharts.Where(x => x.ParentAccountId == parentAccountId).ToList();
            string newAccountId = "";

            if (addOne.Count() > 0)
            {
                var accNumberAddOne = long.Parse(addOne.Max(x => long.Parse(x.AccountId)).ToString()
                                                 .Replace(parentAccountId, "")) + 1;
                newAccountId = parentAccountId + accNumberAddOne;
            }

            else
            {
                newAccountId = parentAccountId + "1";
            }

            AccountingChart accChart = new AccountingChart()
            {
                AccountId       = newAccountId,
                AccountNameAr   = accountNameAr,
                AccountNameEn   = accountNameEn,
                CreateDate      = DateTime.Now,
                ParentAccountId = parentAccountId
            };

            db.AccountingCharts.Add(accChart);

            try
            {
                db.SaveChanges();
            }
            catch (DbEntityValidationException e)
            {
                newAccountId = "false " + e.Message;
                throw;
            }
            catch (Exception e)
            {
                newAccountId = "false " + e.InnerException;
                throw;
            }

            return(newAccountId);
        }