private List <ClaimExpense> loadExpenses(int claimID)
        {
            List <ClaimExpense> expenses = null;

            using (ClaimExpenseManager repository = new ClaimExpenseManager()) {
                expenses = repository.GetAll(claimID);
            }

            return(expenses);
        }
        protected void btnSaveExpense_Click(object sender, EventArgs e)
        {
            Claim                 claim          = null;
            Claim                 myClaim        = null;
            ClaimExpense          claimExpense   = null;
            AdjusterMaster        adjuster       = null;
            CarrierInvoiceProfile CarrierInvoice = null;

            int clientID      = SessionHelper.getClientId();
            int userID        = SessionHelper.getUserId();
            int claimID       = SessionHelper.getClaimID();
            int myAdjusterID  = 0;
            int profileID     = 0;
            int expenseTypeID = 0;
            int id            = 0;


            Page.Validate("expense");
            if (!Page.IsValid)
            {
                return;
            }

            id = Convert.ToInt32(ViewState["ClaimExpenseID"]);

            ClaimManager cm = new ClaimManager();

            myClaim = cm.Get(claimID);

            try
            {
                expenseTypeID = Convert.ToInt32(ddlExpenseType.SelectedValue);

                using (TransactionScope scope = new TransactionScope())
                {
                    using (ClaimExpenseManager repository = new ClaimExpenseManager())
                    {
                        if (id == 0)
                        {
                            claimExpense         = new ClaimExpense();
                            claimExpense.ClaimID = claimID;
                        }
                        else
                        {
                            claimExpense = repository.Get(id);
                        }

                        // populate fields
                        if (txtExpenseAmount.Visible == false)
                        {
                            var x = Session["multiplier"].ToString();

                            double expenseAmount = Convert.ToDouble(x) * Convert.ToDouble(txtExpenseQty.ValueDecimal); //newOC 10/7/14
                            claimExpense.ExpenseAmount = Convert.ToDecimal(expenseAmount);

                            decimal d = Convert.ToDecimal(expenseAmount);
                            //Session["EmailAmount"] = "$" + Math.Round(d, 2);
                            Session["EmailAmount"] = String.Format("{0:0.00}", expenseAmount);
                            // Session["EmailAmount"] = expenseAmount;
                        }
                        else
                        {
                            claimExpense.ExpenseAmount = txtExpenseAmount.ValueDecimal;
                        }
                        claimExpense.ExpenseDate        = txtExpenseDate.Date;
                        claimExpense.ExpenseDescription = txtExpenseDescription.Text.Trim();
                        claimExpense.ExpenseTypeID      = expenseTypeID;
                        claimExpense.IsReimbursable     = cbxExpenseReimburse.Checked;
                        claimExpense.UserID             = userID;
                        claimExpense.AdjusterID         = Convert.ToInt32(hf_expenseAdjusterID.Value);
                        claimExpense.ExpenseQty         = txtExpenseQty.ValueDecimal;
                        claimExpense.InternalComments   = txtMyComments.Text.Trim();
                        claimExpense.Billed             = false;
                        // claimExpense.IsBillable = cbIsBillable.Checked;
                        // save expense
                        claimExpense = repository.Save(claimExpense);
                    }

                    // update diary entry
                    ClaimComment diary = new ClaimComment();
                    diary.ClaimID     = claimID;
                    diary.CommentDate = DateTime.Now;
                    diary.UserId      = userID;
                    diary.CommentText = string.Format("Expense: {0}, Description: {1}, Date: {2:MM/dd/yyyy}, Amount: {3:N2}, Adjuster: {4} Qty: {5:N2}",
                                                      ddlExpenseType.SelectedItem.Text,
                                                      claimExpense.ExpenseDescription,
                                                      claimExpense.ExpenseDate,
                                                      claimExpense.ExpenseAmount,
                                                      txtExpenseAdjuster.Text,
                                                      claimExpense.ExpenseQty
                                                      );
                    ClaimCommentManager.Save(diary);

                    // 2014-05-02 apply rule
                    using (SpecificExpenseTypePerCarrier ruleEngine = new SpecificExpenseTypePerCarrier())
                    {
                        claim         = new Claim();
                        claim.ClaimID = claimID;
                        RuleException ruleException = ruleEngine.TestRule(clientID, claim, expenseTypeID);

                        if (ruleException != null)
                        {
                            ruleException.UserID = Core.SessionHelper.getUserId();
                            ruleEngine.AddException(ruleException);
                            CheckSendMail(ruleException);
                        }
                    }
                    myAdjusterID = Convert.ToInt32(claimExpense.AdjusterID); //Convert.ToInt32(myClaim.AdjusterID);
                    //EMAIL ADJUSTER OC 10/22/2014
                    if (myAdjusterID != 0 || myAdjusterID != null)
                    {
                        adjuster = AdjusterManager.GetAdjusterId(myAdjusterID);
                    }
                    if (cbEmailAdjuster.Checked == true)
                    {
                        try
                        {
                            notifyAdjuster(adjuster, claimExpense, myClaim);
                        }
                        catch (Exception ex)
                        {
                            lblMessage.Text     = "Unable to send email to adjuster";
                            lblMessage.CssClass = "error";
                        }
                    }
                    //EMAIL CLIENT CONTACT OC 10/22/2014
                    if (cbEmailClient.Checked == true)              //Dont need to check if invoice Pro ID is empty becuase to get to this point, one has to exist already
                    {
                        if (Session["ComingFromAllClaims"] != null) //if the user got here straight from the all claims screen
                        {
                            profileID = Convert.ToInt32(Session["CarrierInvoiceID"]);
                        }
                        else//coming from claim detail page
                        {
                            profileID = Convert.ToInt32(Session["InvoiceProfileID"]);
                        }
                        CarrierInvoice = CarrierInvoiceProfileManager.Get(profileID);
                        try
                        {
                            notifyClientContact(CarrierInvoice, claimExpense, myClaim, adjuster);
                        }
                        catch (Exception ex)
                        {
                            lblMessage.Text     = "Unable to send email to client contact";
                            lblMessage.CssClass = "error";
                        }
                    }
                    //EMAIL TO WHOMEVER OC 10/22/2014
                    if (txtEmailTo.Text != "")
                    {
                        try
                        {
                            notifySpecifiedUser(adjuster, claimExpense, myClaim);
                        }
                        catch (Exception ex)
                        {
                            lblMessage.Text     = "Unable to send email to adjuster";
                            lblMessage.CssClass = "error";
                        }
                    }

                    // complete transaction
                    scope.Complete();
                }

                lblMessage.Text     = "Expense saved successfully.";
                lblMessage.CssClass = "ok";

                // refresh grid
                gvExpense.DataSource = loadExpenses(claimID);
                gvExpense.DataBind();

                // keep edit form active
                lbtnNewExpense_Click(null, null);
                lblAmount.Text           = "";
                lblAmount.Visible        = false;
                txtExpenseAmount.Visible = true;
            }
            catch (Exception ex) {
                Core.EmailHelper.emailError(ex);

                lblMessage.Text     = "Unable to save claim expense.";
                lblMessage.CssClass = "error";
            }
        }
        protected void gvExpense_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            ClaimExpense claimExpense = null;
            int          claimID      = SessionHelper.getClaimID();
            int          id           = 0;

            if (e.CommandName == "DoEdit")
            {
                id = Convert.ToInt32(e.CommandArgument);

                using (ClaimExpenseManager repository = new ClaimExpenseManager()) {
                    claimExpense = repository.Get(id);
                }
                if (claimExpense != null)
                {
                    txtExpenseAmount.Value = claimExpense.ExpenseAmount;
                    txtExpenseQty.Value    = claimExpense.ExpenseQty;

                    if (claimExpense.ExpenseDate != null)
                    {
                        txtExpenseDate.Value = claimExpense.ExpenseDate;
                    }

                    txtExpenseDescription.Text   = claimExpense.ExpenseDescription;
                    cbxExpenseReimburse.Checked  = claimExpense.IsReimbursable;
                    ddlExpenseType.SelectedValue = claimExpense.ExpenseTypeID.ToString();
                    txtMyComments.Text           = claimExpense.InternalComments;
                    //cbIsBillable.Checked = claimExpense.IsBillable.Value;
                    //NEW OC 10/7/2014 // PUT IN PLACE TO GRAB THE NEW RATE IF USER HITS EDIT
                    ExpenseType expense   = null;
                    int         expenseID = 0;
                    if (ddlExpenseType.SelectedIndex > 0)
                    {
                        expenseID = Convert.ToInt32(ddlExpenseType.SelectedValue);

                        using (ExpenseTypeManager repository = new ExpenseTypeManager())
                        {
                            expense = repository.Get(expenseID);
                            if (expense != null)
                            {
                                txtExpenseAmount.Value = expense.ExpenseRate;
                                Session["multiplier"]  = expense.ExpenseRate;
                            }
                        }
                    }
                    // END NEW OC 10/7/2014

                    if (claimExpense.AdjusterID != null)
                    {
                        txtExpenseAdjuster.Text    = claimExpense.AdjusterMaster.adjusterName;
                        hf_expenseAdjusterID.Value = claimExpense.AdjusterMaster.AdjusterId.ToString();
                    }

                    showExpenseEditPanel();

                    ViewState["ClaimExpenseID"] = e.CommandArgument.ToString();
                }
            }
            else if (e.CommandName == "DoDelete")
            {
                id = Convert.ToInt32(e.CommandArgument);

                try {
                    using (ClaimExpenseManager repository = new ClaimExpenseManager()) {
                        repository.Delete(id);
                    }

                    // refresh grid
                    gvExpense.DataSource = loadExpenses(claimID);
                    gvExpense.DataBind();
                }
                catch (Exception ex) {
                    Core.EmailHelper.emailError(ex);

                    lblMessage.Text     = "Unable to delete claim expense.";
                    lblMessage.CssClass = "error";
                }
            }
        }
Example #4
0
        private void bindTimeExpenseForInvoice(int claimID)
        {
            List <InvoiceDetail> invoiceDetails = new List <InvoiceDetail>();
            InvoiceDetail        invoiceDetail  = null;
            decimal serviceRate       = 0;
            decimal servicePercentage = 0;
            decimal rate = 0;

            List <ClaimService> claimServices = null;
            List <ClaimExpense> claimExpenses = null;

            using (ClaimServiceManager repository = new ClaimServiceManager()) {
                claimServices = repository.GetAll(claimID);
            }
            using (ClaimExpenseManager repository = new ClaimExpenseManager()) {
                claimExpenses = repository.GetAll(claimID);
            }

            // add claim services to invoice
            if (claimServices != null)
            {
                foreach (ClaimService service in claimServices)
                {
                    invoiceDetail                 = new InvoiceDetail();
                    invoiceDetail.LineDate        = service.ServiceDate;
                    invoiceDetail.ServiceTypeID   = service.ServiceTypeID;
                    invoiceDetail.LineDescription = service.InvoiceServiceType.ServiceDescription;
                    invoiceDetail.Qty             = service.ServiceQty;
                    invoiceDetail.Comments        = service.ServiceDescription;

                    serviceRate       = service.InvoiceServiceType.ServiceRate ?? 0;
                    servicePercentage = service.InvoiceServiceType.ServicePercentage ?? 0;

                    if (serviceRate > 0)
                    {
                        rate = serviceRate;
                    }
                    else
                    {
                        rate = servicePercentage / 100;
                    }

                    invoiceDetail.LineAmount = invoiceDetail.Qty * rate;
                    invoiceDetail.Rate       = rate;

                    // add service to invoicedetail list
                    invoiceDetails.Add(invoiceDetail);
                }
            }
            // add claim expenses to invoice
            if (claimExpenses != null)
            {
                foreach (ClaimExpense expense in claimExpenses)
                {
                    invoiceDetail = new InvoiceDetail();
                    invoiceDetail.ExpenseTypeID   = expense.ExpenseTypeID;
                    invoiceDetail.LineDate        = expense.ExpenseDate;
                    invoiceDetail.LineDescription = expense.ExpenseDescription;
                    invoiceDetail.Comments        = expense.ExpenseDescription;
                    invoiceDetail.LineAmount      = expense.ExpenseAmount;
                    invoiceDetail.Qty             = 1;
                    invoiceDetail.Rate            = expense.ExpenseAmount;
                    // add expense to invoicedetail list
                    invoiceDetails.Add(invoiceDetail);
                }
            }

            // bind invoice detail lines
            gvTimeExpense.DataSource = invoiceDetails;
            gvTimeExpense.DataBind();
        }