Exemple #1
0
        private void Save()
        {
            try
            {
                if (objDriverRent.Current == null)
                {
                    return;
                }
                string Description = txtReason.Text.ToStr().Trim();
                if (string.IsNullOrEmpty(Description))
                {
                    ENUtils.ShowMessage("Required : Description");
                    return;
                }
                objDriverRent.Edit();
                objDriverRent.Current.Balance = numCurrBalance.Value.ToDecimal();

                Fleet_DriverRentExpense objDriverRentExpense = new Fleet_DriverRentExpense();
                if (rdoCredit.IsChecked)
                {
                    objDriverRentExpense.Credit = spnCommissionPay.Value.ToDecimal();
                    objDriverRentExpense.Amount = spnCommissionPay.Value.ToDecimal();
                }
                else
                {
                    objDriverRentExpense.Debit  = spnCommissionPay.Value.ToDecimal();
                    objDriverRentExpense.Amount = spnCommissionPay.Value.ToDecimal();
                }
                objDriverRentExpense.Date        = DateTime.Now;
                objDriverRentExpense.Description = Description;
                objDriverRentExpense.IsPaid      = true;

                objDriverRentExpense.AddBy = AppVars.LoginObj.UserName.ToStr().Trim();

                if (objDriverRent.Current.Fleet_DriverRentExpenses.Count == 0)
                {
                    objDriverRent.Current.Fleet_DriverRentExpenses.Add(objDriverRentExpense);
                }
                else
                {
                    objDriverRent.Current.Fleet_DriverRentExpenses.Add(objDriverRentExpense);
                }


                objDriverRent.Save();
                DisplayRecord();
                //this.Close();
            }
            catch (Exception ex)
            {
                if (objDriverRent.Errors.Count > 0)
                {
                    ENUtils.ShowMessage(objDriverRent.ShowErrors());
                }
                else
                {
                    ENUtils.ShowMessage(ex.Message);
                }
            }
        }
        void Grid_RowsChanging(object sender, GridViewCollectionChangingEventArgs e)
        {
            if (e.Action == Telerik.WinControls.Data.NotifyCollectionChangedAction.Remove)
            {
                objMaster = new DriverRentBO();

                try
                {
                    objMaster.GetByPrimaryKey(grdLister.CurrentRow.Cells["Id"].Value.ToInt());

                    string Transaction = grdLister.CurrentRow.Cells["TransNo"].Value.ToStr();
                    int    DriverId    = grdLister.CurrentRow.Cells["DriverID"].Value.ToInt();

                    var query = General.GetQueryable <DriverRent>(c => c.DriverId == DriverId).OrderByDescending(c => c.Id).FirstOrDefault();

                    if (query != null)
                    {
                        string Transno = query.TransNo.ToStr();

                        if (Transno == Transaction)
                        {
                            objMaster.Delete(objMaster.Current);
                        }
                        else
                        {
                            ENUtils.ShowMessage("You Can not delete a record..");
                        }
                    }
                }
                catch (Exception ex)
                {
                    if (objMaster.Errors.Count > 0)
                    {
                        ENUtils.ShowMessage(objMaster.ShowErrors());
                    }
                    else
                    {
                        ENUtils.ShowMessage(ex.Message);
                    }
                    e.Cancel = true;
                }
            }
        }
        private void btnDisplayRent_Click(object sender, EventArgs e)
        {
            try
            {
                //    decimal accJobsTotal = 0;
                decimal rentDue    = 0;
                int     DriverId   = 0;
                decimal DriverRent = 0.00m;
                decimal pdaRent    = 0.00m;

                decimal oldBalance = 0.00m;



                foreach (var row in grdDriverRent.Rows.Where(c => c.Cells["Check"].Value.ToBool()))
                {
                    DriverId   = row.Cells["Id"].Value.ToInt();
                    DriverRent = row.Cells["DriverRent"].Value.ToDecimal();

                    // add pda rent
                    pdaRent = row.Cells[COLS.DriverPDARent].Value.ToDecimal();


                    oldBalance = row.Cells[COLS.OldBalance].Value.ToDecimal();



                    rentDue = 0;


                    try
                    {
                        bool RentForProcessedJobs = AppVars.objPolicyConfiguration.RentForProcessedJobs.ToBool();

                        var rentList = General.GetGeneralList <DriverRent_Charge>(c => c.BookingId != null && c.TransId != null);

                        var list2 = (from a in General.GetGeneralList <Booking>(c => c.CompanyId != null && c.BookingStatusId == Enums.BOOKINGSTATUS.DISPATCHED

                                                                                && (c.FareRate != null) &&
                                                                                ((RentForProcessedJobs == true && (c.IsProcessed != null && c.IsProcessed == true)) || (RentForProcessedJobs == false && (c.IsProcessed == null || c.IsProcessed == false))) &&
                                                                                (c.DriverId == DriverId) &&
                                                                                (c.PickupDateTime.Value.Date >= dtpFromDate.Value.Value.Date && c.PickupDateTime.Value.Date <= dtpTillDate.Value.Value.Date))
                                     join b in rentList on a.Id equals b.BookingId into table2
                                     from b in table2.DefaultIfEmpty()
                                     where (b == null)
                                     select new
                        {
                            Id = a.Id,
                            TotalFare = a.FareRate.ToDecimal() + a.CongtionCharges.ToDecimal() + a.MeetAndGreetCharges.ToDecimal(),
                            //  TotalCharges = a.TotalCharges,
                            CompanyId = a.CompanyId,
                            AccountTypeId = a.Gen_Company.AccountTypeId,
                            DriverCommissionAmount = a.DriverCommission,
                            DriverCommissionType = a.DriverCommissionType,
                            IsCommissionWise = a.IsCommissionWise
                        }).ToList();



                        //if (list2.Count == 0)
                        //    continue;



                        decimal Total = list2.Sum(c => c.TotalFare).ToDecimal();

                        decimal ACCJobsTotal = list2.Where(c => c.CompanyId != null && c.AccountTypeId.ToInt() == Enums.ACCOUNT_TYPE.ACCOUNT)
                                               .Sum(c => c.TotalFare).ToDecimal();

                        decimal ACCCashJobsAmountTotal = list2.Where(c => c.CompanyId != null && c.AccountTypeId.ToInt() == Enums.ACCOUNT_TYPE.CASH &&
                                                                     c.IsCommissionWise.ToBool() && c.DriverCommissionType.ToStr().Trim() == "Amount")
                                                         .Sum(c => c.DriverCommissionAmount.ToDecimal()).ToDecimal();

                        decimal ACCCashJobsPercentTotal = list2.Where(c => c.CompanyId != null && c.AccountTypeId.ToInt() == Enums.ACCOUNT_TYPE.CASH &&
                                                                      c.IsCommissionWise.ToBool() && c.DriverCommissionType.ToStr().Trim() == "Percent")
                                                          .Sum(c => (c.DriverCommissionAmount.ToDecimal() * 100) / c.TotalFare).ToDecimal();



                        decimal owed = ACCJobsTotal - (DriverRent + pdaRent + (ACCCashJobsAmountTotal + ACCCashJobsPercentTotal));

                        owed    = owed + oldBalance;
                        rentDue = owed;



                        row.Cells[COLS.AccountsTotal].Value = ACCJobsTotal;
                        row.Cells[COLS.RentDue].Value       = rentDue;
                        row.Cells[COLS.CurrBalance].Value   = rentDue;

                        row.Cells[COLS.RentPay].Value = 0.00m;

                        row.Cells[COLS.RentId].Value = null;



                        dtpFromDate.Enabled = false;
                        dtpTillDate.Enabled = false;
                    }
                    catch (Exception ex)
                    {
                        if (objMaster.Errors.Count > 0)
                        {
                            ENUtils.ShowMessage(objMaster.ShowErrors());
                        }
                        else
                        {
                            ENUtils.ShowMessage(ex.Message);
                        }
                    }

                    //
                }
            }
            catch (Exception ex)
            {
            }
        }
        private bool OnSave(int DriverId, decimal oldBalance, decimal DriverRent, decimal pdaRent, decimal InitialBalance, decimal rentPayValue, ref decimal accJobs, ref long transId, ref decimal rentDue, ref decimal currBalance)
        {
            bool IsSaved = false;


            try
            {
                bool RentForProcessedJobs = AppVars.objPolicyConfiguration.RentForProcessedJobs.ToBool();

                //var list = (from b in list1
                //           join c in list2 on b.Id equals c.BookingId into table2
                //           from c in table2.DefaultIfEmpty()
                //           where (c == null)
                //           select new


                var rentList = General.GetGeneralList <DriverRent_Charge>(c => c.BookingId != null && c.TransId != null);


                Expression <Func <Booking, bool> > _exp = null;
                if (AppVars.objPolicyConfiguration.PickBookingOnInvoicingType.ToInt() == 2)
                {
                    _exp = c => c.CompanyId != null && ((c.PaymentTypeId != Enums.PAYMENT_TYPES.CASH && c.BookingStatusId == Enums.BOOKINGSTATUS.NOPICKUP) || c.BookingStatusId == Enums.BOOKINGSTATUS.DISPATCHED)

                           && (c.FareRate != null) &&
                           ((RentForProcessedJobs == true && (c.IsProcessed != null && c.IsProcessed == true)) || (RentForProcessedJobs == false && (c.IsProcessed == null || c.IsProcessed == false))) &&
                           (c.DriverId == DriverId) &&
                           (c.PickupDateTime.Value.Date >= dtpFromDate.Value.Value.Date && c.PickupDateTime.Value.Date <= dtpTillDate.Value.Value.Date);
                }
                else
                {
                    _exp = c => c.CompanyId != null && c.BookingStatusId == Enums.BOOKINGSTATUS.DISPATCHED

                           && (c.FareRate != null) &&
                           ((RentForProcessedJobs == true && (c.IsProcessed != null && c.IsProcessed == true)) || (RentForProcessedJobs == false && (c.IsProcessed == null || c.IsProcessed == false))) &&
                           (c.DriverId == DriverId) &&
                           (c.PickupDateTime.Value.Date >= dtpFromDate.Value.Value.Date && c.PickupDateTime.Value.Date <= dtpTillDate.Value.Value.Date);
                }

                var list2 = (from a in General.GetGeneralList <Booking>(_exp)
                             join b in rentList on a.Id equals b.BookingId into table2
                             from b in table2.DefaultIfEmpty()
                             where (b == null)
                             select new
                {
                    Id = a.Id,
                    TotalFare = a.FareRate.ToDecimal() + a.CongtionCharges.ToDecimal() + a.MeetAndGreetCharges.ToDecimal(),
                    //  TotalCharges = a.TotalCharges,
                    CompanyId = a.CompanyId,
                    AccountTypeId = a.Gen_Company.AccountTypeId,
                    DriverCommissionAmount = a.DriverCommission,
                    DriverCommissionType = a.DriverCommissionType,
                    IsCommissionWise = a.IsCommissionWise
                }).ToList();



                //if (list2.Count == 0)
                //    return false;



                objMaster = new DriverRentBO();
                objMaster.New();



                List <DriverRent_Charge> ListDetail = (from a in list2
                                                       select new DriverRent_Charge
                {
                    //Id = a.Id,
                    TransId = objMaster.Current.Id,
                    BookingId = a.Id
                }).ToList();



                decimal Total = list2.Sum(c => c.TotalFare).ToDecimal();

                decimal ACCJobsTotal = list2.Where(c => c.CompanyId != null && c.AccountTypeId.ToInt() == Enums.ACCOUNT_TYPE.ACCOUNT)
                                       .Sum(c => c.TotalFare).ToDecimal();

                decimal ACCCashJobsAmountTotal = list2.Where(c => c.CompanyId != null && c.AccountTypeId.ToInt() == Enums.ACCOUNT_TYPE.CASH &&
                                                             c.IsCommissionWise.ToBool() && c.DriverCommissionType.ToStr().Trim() == "Amount")
                                                 .Sum(c => c.DriverCommissionAmount.ToDecimal()).ToDecimal();

                decimal ACCCashJobsPercentTotal = list2.Where(c => c.CompanyId != null && c.AccountTypeId.ToInt() == Enums.ACCOUNT_TYPE.CASH &&
                                                              c.IsCommissionWise.ToBool() && c.DriverCommissionType.ToStr().Trim() == "Percent")
                                                  .Sum(c => (c.DriverCommissionAmount.ToDecimal() * 100) / c.TotalFare).ToDecimal();



                objMaster.Current.JobsTotal = ACCJobsTotal;


                accJobs = ACCJobsTotal;

                decimal owed = ACCJobsTotal - (DriverRent + pdaRent + (ACCCashJobsAmountTotal + ACCCashJobsPercentTotal));

                owed    = owed + oldBalance;
                rentDue = owed;

                // decimal balance = owed;// +payment;

                currBalance = owed + rentPayValue.ToDecimal();


                objMaster.Current.RentPay = rentPayValue.ToDecimal();

                objMaster.Current.Balance = currBalance;//RentPay - DriverRent;

                objMaster.Current.DriverRent1 = DriverRent;


                // add pda rent
                objMaster.Current.PDARent = pdaRent;

                objMaster.Current.AddBy     = AppVars.LoginObj.LuserId.ToInt();
                objMaster.Current.AddLog    = AppVars.LoginObj.LoginName.ToStr();
                objMaster.Current.AddOn     = DateTime.Now;
                objMaster.Current.TransDate = DateTime.Now; //dtpTransactionDate.Value.ToDateTime();
                objMaster.Current.DriverId  = DriverId;     //ddlDriver.SelectedValue.ToIntorNull();



                objMaster.Current.OldBalance = oldBalance;// (CurrentBalance - RentPay);


                objMaster.Current.FromDate = dtpFromDate.Value.ToDate();
                objMaster.Current.ToDate   = dtpTillDate.Value.ToDate();
                objMaster.Current.TransFor = "Weekly";//ddlDayWise.SelectedText.ToStr();



                objMaster.Current.Fuel  = 0; //Fuel.ToDecimal();
                objMaster.Current.Extra = 0; // Extra.ToDecimal();



                string[] skipProperties             = { "DriverRent", "Booking" };
                IList <DriverRent_Charge> savedList = objMaster.Current.DriverRent_Charges;


                var list = objMaster.Current.DriverRent_Charges.ToList();



                Utils.General.SyncChildCollection(ref savedList, ref ListDetail, "Id", skipProperties);


                objMaster.Save();


                IsSaved = true;
                transId = objMaster.Current.Id;
            }
            catch (Exception ex)
            {
                if (objMaster.Errors.Count > 0)
                {
                    ENUtils.ShowMessage(objMaster.ShowErrors());
                }
                else
                {
                    ENUtils.ShowMessage(ex.Message);
                }
            }

            return(IsSaved);
        }