Esempio n. 1
0
 public static string GetLastVoucher(int transType)
 {
     using (ApprosysAccDB.AprosysAccountingEntities db = new ApprosysAccDB.AprosysAccountingEntities())
     {
         var alpha = db.GetLastVoucherNo(transType).FirstOrDefault();
         return(alpha);
     }
 }
        public static List <BussinessObject.BO_Report_SalesPerson> GetReportData(DateTime startDate, DateTime endDate, List <int> SalesPersonID, List <int> CustomerID)
        {
            List <BussinessObject.BO_Report_SalesPerson> toret = new List <BussinessObject.BO_Report_SalesPerson>();

            using (ApprosysAccDB.AprosysAccountingEntities db = new ApprosysAccDB.AprosysAccountingEntities())
            {
                bool       FilterGL = false;
                List <int> custIDs  = new List <int>();
                if (custIDs != null && custIDs.Count > 0)
                {
                    custIDs  = custIDs.ToList();
                    FilterGL = true;
                }
                else if (SalesPersonID != null && SalesPersonID.Count > 0)
                {
                    custIDs  = db.Customers.Where(x => SalesPersonID.Contains(x.SalesPersonId.Value)).Select(x => x.Id).ToList();
                    FilterGL = true;
                }
                else
                {
                    FilterGL = false;
                }
                var filteredList1 = db.Acc_GL.Where(x =>


                                                    x.IsActive == true &&
                                                    (
                                                        (x.TranTypeId == (int)Constants.TransactionTypes.Sales && x.CoaId == (int)Constants.COAID.TransactionParent)
                                                        ||
                                                        (x.TranTypeId == (int)Constants.TransactionTypes.PaymentAgainstCreditSales

                                                         && x.CoaId == (int)Constants.COAID.CASH)

                                                        ||
                                                        (x.TranTypeId == (int)Constants.TransactionTypes.Sales && (x.CoaId == (int)Constants.COAID.CASH)



                                                        )
                                                    )
                                                    );
                if (FilterGL)
                {
                    filteredList1 = filteredList1.Where(x => custIDs.Contains(x.CustId.Value));
                }
                //First Get Opening balance
                var lst = filteredList1.Where(x => x.ActivityTimestamp < startDate)
                          .GroupBy(x => new { x.CoaId, x.GlId, x.CustId }).Select(x => new BussinessObject.BO_Report_SalesPerson
                {
                    OpeningBalance  = (x.Key.CoaId == 0) ? (x.Sum(y => y.Debit.Value)) : (0 - x.Sum(y => y.Debit.Value)),
                    CustomerID      = x.Key.CustId.Value,
                    TransactionDate = startDate
                }).ToList();

                toret.AddRange(lst);
                lst = filteredList1.Where(x => x.ActivityTimestamp > startDate && x.ActivityTimestamp < endDate).Select(x => new BussinessObject.BO_Report_SalesPerson
                {
                    Sales              = x.CoaId == 0 ? x.Debit.Value : 0,
                    Recieved           = x.CoaId != 0 ? x.Debit.Value : 0,
                    Comment            = x.Comments,
                    DocID              = x.DocumentId,
                    InvoiceID          = x.InvoiceNo,
                    CustomerID         = x.CustId.Value,
                    TransactionDate    = x.ActivityTimestamp.Value,
                    OrinalSalePersonId = x.SalesPersonId.Value,
                }).ToList();
                toret.AddRange(lst);
                var cust         = db.Customers.ToDictionary(x => x.Id);
                var salesPersons = db.SalesPersons.ToDictionary(x => x.Id);
                foreach (var item in toret)
                {
                    var currentCust = cust[item.CustomerID];

                    item.CustomerName  = currentCust.FirstName + " " + currentCust.LastName;
                    item.SalesPersonID = currentCust.SalesPersonId.GetValueOrDefault();
                    if (salesPersons.ContainsKey(item.SalesPersonID))
                    {
                        item.SalesPersonName = salesPersons[item.SalesPersonID].FirstName + " " + salesPersons[item.SalesPersonID].LastName;
                        if (item.OrinalSalePersonId > 0)
                        {
                            item.OrignalSalesPersonName = salesPersons[item.OrinalSalePersonId].FirstName + " " + salesPersons[item.OrinalSalePersonId].LastName;
                        }
                    }
                }
                return(toret);
            }
        }