コード例 #1
0
        public ActionResult DeleteJobTask(int jobid, int taskid, int partid)
        {
            using (var ctx = new AuditedJobContext(UserInfo.UserKey, UserInfo.User.UserName, false))
            {
                using (var scope = new TransactionScope())
                {
                    var part = ctx.tbl_Job_Task_Parts.SingleOrDefault(q => q.JobTaskPartsID == partid);

                    if (part != null)
                    {
                        ctx.tbl_Job_Task_Parts.DeleteObject(part);
                        ctx.SaveChanges();
                    }

                    if (!ctx.tbl_Job_Task_Parts.Any(q => q.JobTaskID == taskid))
                    {
                        var task = ctx.tbl_Job_Tasks.Single(q => q.JobTaskID == taskid);
                        ctx.tbl_Job_Tasks.DeleteObject(task);
                        ctx.SaveChanges();
                    }

                    scope.Complete();
                }

                var customerid = ctx.tbl_Job.FirstOrDefault(q => q.JobID == jobid).CustomerID;
                InvoiceFinancialDetail finance = RecalcJobData(jobid, customerid);

                return(Json(finance));
            }
        }
コード例 #2
0
        public ActionResult UpdatePayment(tbl_Payments paymentdata)
        {
            using (var ctx = new AuditedJobContext(UserInfo.UserKey, UserInfo.User.UserName, false))
            {
                try
                {
                    var payment = (from p in ctx.tbl_Payments where p.PaymentID == paymentdata.PaymentID select p).Single();

                    if (payment.DepositStatus == true)
                    {
                        return(Json("posted"));
                    }

                    payment.DepositStatus = false;
                    payment.PaymentAmount = paymentdata.PaymentAmount;
                    payment.PaymentDate   = paymentdata.PaymentDate;
                    payment.PaymentTypeID = paymentdata.PaymentTypeID;
                    payment.CheckNumber   = paymentdata.CheckNumber;
                    payment.DriversLicNUm = paymentdata.DriversLicNUm;
                    ctx.SaveChanges();

                    var CustomerID = ctx.tbl_Job.First(q => q.JobID == paymentdata.JobID).CustomerID;

                    InvoiceFinancialDetail finance = RecalcJobData(paymentdata.JobID, CustomerID);

                    return(Json(finance));
                }
                catch (Exception)
                {
                }

                return(Json("fail"));
            }
        }
コード例 #3
0
        public ActionResult InsertPayment(tbl_Payments paymentdata)
        {
            using (var ctx = new AuditedJobContext(UserInfo.UserKey, UserInfo.User.UserName, false))
            {
                try
                {
                    var job = (from j in ctx.tbl_Job
                               where j.JobID == paymentdata.JobID
                               select new
                    {
                        j.FranchiseID,
                        j.CustomerID
                    })
                              .First();

                    paymentdata.FranchiseID   = job.FranchiseID;
                    paymentdata.DepositStatus = false;
                    paymentdata.CreateDate    = DateTime.Now;
                    ctx.tbl_Payments.AddObject(paymentdata);
                    ctx.SaveChanges();

                    InvoiceFinancialDetail finance = RecalcJobData(paymentdata.JobID, job.CustomerID);

                    return(Json(finance));
                }
                catch (Exception)
                {
                }

                return(Json("fail"));
            }
        }
コード例 #4
0
        public ActionResult AddPart(int partid, int jobid, int taskid)
        {
            var objmodcommon = new mod_common(UserInfo.UserKey);

            using (var ctx = new AuditedJobContext(UserInfo.UserKey, UserInfo.User.UserName, false))
            {
                try
                {
                    var part = (from p in ctx.tbl_PB_Parts
                                where p.PartID == partid
                                select p)
                               .Single();

                    var task = (from t in ctx.tbl_Job_Tasks
                                where t.JobTaskID == taskid
                                select t)
                               .Single();

                    var newpart = new tbl_Job_Task_Parts
                    {
                        JobTaskID = taskid,
                        PartCode  = objmodcommon.GetPartCode(partid).Trim(),
                        PartName  = objmodcommon.GetPartName(partid).Trim(),
                        PartsID   = part.PartID,
                        Quantity  = 1
                    };

                    if (task.MemberYN)
                    {
                        newpart.Price = task.AddOnYN ? part.PartAddonMemberPrice : part.PartMemberPrice;
                    }
                    else
                    {
                        newpart.Price = task.AddOnYN ? part.PartAddonStdPrice : part.PartStdPrice;
                    }

                    ctx.tbl_Job_Task_Parts.AddObject(newpart);
                    ctx.SaveChanges();

                    var customerid = ctx.tbl_Job.FirstOrDefault(q => q.JobID == jobid).CustomerID;

                    InvoiceFinancialDetail finance = RecalcJobData(jobid, customerid);

                    return(Json(finance));
                }
                catch (DbEntityValidationException dbEx)
                {
                    foreach (var validationErrors in dbEx.EntityValidationErrors)
                    {
                        foreach (var validationError in validationErrors.ValidationErrors)
                        {
                            Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName,
                                                   validationError.ErrorMessage);
                        }
                    }
                }

                return(Json("fail"));
            }
        }
コード例 #5
0
        public InvoiceFinancialDetail RecalcJobData(int jobid, int customerid)
        {
            using (var ctx = new AuditedJobContext(UserInfo.UserKey, UserInfo.User.UserName, false))
            {
                try
                {
                    var total = (from j in ctx.tbl_Job
                                 join t in ctx.tbl_Job_Tasks on j.JobID equals t.JobID
                                 where j.JobID == jobid
                                 select new { t.Price, t.Quantity }).ToArray().Sum(x => x.Price * x.Quantity);

                    var totalpayment = (from p in ctx.tbl_Payments
                                        where p.JobID == jobid
                                        select p.PaymentAmount).Sum() ?? 0;

                    var objjob = (from j in ctx.tbl_Job
                                  where j.JobID == jobid
                                  select j)
                                 .FirstOrDefault();

                    objjob.SubTotal   = total;
                    objjob.TotalSales = total + objjob.TaxAmount;
                    objjob.Balance    = objjob.TotalSales - totalpayment;

                    ctx.SaveChanges();

                    var finance = new InvoiceFinancialDetail()
                    {
                        SubTotal  = String.Format("{0:C}", objjob.SubTotal).Replace("$", ""),
                        Total     = String.Format("{0:C}", objjob.TotalSales).Replace("$", ""),
                        Balance   = String.Format("{0:C}", objjob.Balance).Replace("$", ""),
                        TotalPaid = String.Format("{0:C}", totalpayment).Replace("$", "")
                    };

                    var customerbalance = (from h in ctx.tbl_Job
                                           where h.CustomerID == customerid
                                           group h by h.CustomerID into g
                                           select new
                    {
                        TotalBalance = g.Sum(x => x.Balance)
                    })
                                          .Single();

                    finance.CustomerBalance = String.Format("{0:C}", customerbalance.TotalBalance).Replace("$", "");

                    return(finance);
                }
                catch (Exception)
                {
                }

                return(null);
            }
        }
コード例 #6
0
        public ActionResult UpdateJobTask(int jobid, tbl_Job_Tasks taskdata, tbl_Job_Task_Parts partdata)
        {
            using (var ctx = new AuditedJobContext(UserInfo.UserKey, UserInfo.User.UserName, false))
            {
                try
                {
                    var task = ctx.tbl_Job_Tasks.FirstOrDefault(t => t.JobID == jobid && t.JobTaskID == taskdata.JobTaskID);

                    if (task != null)
                    {
                        task.MemberYN           = taskdata.MemberYN;
                        task.AddOnYN            = taskdata.AddOnYN;
                        task.Quantity           = taskdata.Quantity;
                        task.Price              = taskdata.Price;
                        task.JobCodeDescription = taskdata.JobCodeDescription;
                        task.JobCode            = taskdata.JobCode;
                        task.JobCodeID          = taskdata.JobCodeID;
                    }

                    var part = ctx.tbl_Job_Task_Parts.FirstOrDefault(q => q.JobTaskPartsID == partdata.JobTaskPartsID && q.JobTaskID == taskdata.JobTaskID);

                    if (part != null)
                    {
                        part.PartsID  = partdata.PartsID;
                        part.Quantity = partdata.Quantity;
                        part.Price    = partdata.Price;
                        part.PartCode = partdata.PartCode;
                        part.PartName = partdata.PartName;
                    }

                    ctx.SaveChanges();

                    var customerid = ctx.tbl_Job.FirstOrDefault(q => q.JobID == jobid).CustomerID;
                    InvoiceFinancialDetail finance = RecalcJobData(jobid, customerid);

                    return(Json(finance));
                }
                catch (DbEntityValidationException dbEx)
                {
                    foreach (var validationErrors in dbEx.EntityValidationErrors)
                    {
                        foreach (var validationError in validationErrors.ValidationErrors)
                        {
                            Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName,
                                                   validationError.ErrorMessage);
                        }
                    }
                }

                return(Json("fail"));
            }
        }
コード例 #7
0
        public ActionResult GenerateInvoice()
        {
            var jobId   = GetJobCode();
            var userId  = GetUserID();
            var context = new AuditedJobContext(userId, "From HVAC app user", false);

            var job = context.tbl_Job.First(item => item.JobID == jobId);

            GenerateInvoice(context, job, userId);

            context.SaveChanges();
            return(Json(new { result = true }, JsonRequestBehavior.AllowGet));
        }
コード例 #8
0
        public ActionResult UpdateAccountCode(int taskid, string accode)
        {
            using (var ctx = new AuditedJobContext(UserInfo.UserKey, UserInfo.User.UserName, false))
            {
                var task = ctx.tbl_Job_Tasks.Single(q => q.JobTaskID == taskid);

                task.AccountCode = accode;

                ctx.SaveChanges();

                return(Json("success"));
            }
        }
コード例 #9
0
        public ActionResult EstimateJob()
        {
            try
            {
                var jobId   = GetJobCode();
                var userId  = GetUserID();
                var context = new AuditedJobContext(userId, userId.ToString(), false);

                var job = context.tbl_Job.First(item => item.JobID == jobId);

                GenerateInvoice(context, job, userId);
                WaitEstimateJob(context, job);

                context.SaveChanges();
                return(Json(new { result = true }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { result = false, message = ex.Message + "\n" + (ex.InnerException != null ? ex.InnerException.Message : "") }, JsonRequestBehavior.AllowGet));
            }
        }
コード例 #10
0
        public ActionResult DeletePayment(tbl_Payments paymentdata)
        {
            using (var ctx = new AuditedJobContext(UserInfo.UserKey, UserInfo.User.UserName, false))
            {
                var payment = (from p in ctx.tbl_Payments where p.PaymentID == paymentdata.PaymentID select p).Single();

                if (payment.DepositStatus == true)
                {
                    return(Json("posted"));
                }

                ctx.tbl_Payments.DeleteObject(payment);
                ctx.SaveChanges();

                var CustomerID = ctx.tbl_Job.First(q => q.JobID == paymentdata.JobID).CustomerID;

                InvoiceFinancialDetail finance = RecalcJobData(paymentdata.JobID, CustomerID);

                return(Json(finance));
            }
        }
コード例 #11
0
        public ActionResult InsertMultiplePayment(tbl_Payments[] paymentdata, DateTime PaymentDate)
        {
            using (var ctx = new AuditedJobContext(UserInfo.UserKey, UserInfo.User.UserName, false))
            {
                var     overpayments    = 0;
                var     underpayments   = 0;
                var     finance         = new InvoiceFinancialDetail();
                decimal amountRemaining = 0;

                paymentdata = paymentdata.OrderBy(x => x.PaymentDate).ToArray();

                for (var i = 0; i < paymentdata.Length; i++)
                {
                    var jobId = paymentdata[i].JobID;

                    if (overpayments > 0)
                    {
                        paymentdata[i].PaymentAmount = amountRemaining;
                    }

                    var paymentAmount = Convert.ToDecimal(paymentdata[i].PaymentAmount);

                    var job = (from j in ctx.tbl_Job
                               where j.JobID == jobId
                               select new
                    {
                        j.CustomerID,
                        j.Balance
                    })
                              .First();

                    var currentBalance = job.Balance;

                    if (paymentAmount > currentBalance)
                    {
                        paymentdata[i].PaymentAmount = currentBalance;

                        amountRemaining = paymentAmount - currentBalance;
                        if (i == paymentdata.Length - 1)
                        {
                            paymentdata[i].PaymentAmount += amountRemaining;
                        }

                        overpayments++;
                    }

                    if (paymentAmount < currentBalance)
                    {
                        underpayments++;

                        paymentdata[i].PaymentAmount = amountRemaining == 0 ? 0 : amountRemaining;

                        if (i == paymentdata.Length - 1)
                        {
                            paymentdata[i].PaymentAmount = amountRemaining == 0 ? 0 : amountRemaining;
                        }
                    }

                    if (paymentAmount == currentBalance)
                    {
                        paymentdata[i].PaymentAmount = paymentAmount;
                    }

                    if (underpayments > 1)
                    {
                        paymentdata[i].PaymentAmount = 0;
                    }

                    paymentdata[i].PaymentDate = PaymentDate;
                    paymentdata[i].CreateDate  = DateTime.Now;
                    ctx.tbl_Payments.AddObject(paymentdata[i]);
                    ctx.SaveChanges();
                    finance = RecalcMultipleJobData(paymentdata[i].JobID, job.CustomerID);
                    i++;
                }

                return(Json(finance));
            }
        }
コード例 #12
0
        public ActionResult AddCode(int jobcodeid, int jobid)
        {
            var objmodcommon = new mod_common(UserInfo.UserKey);

            using (var ctx = new AuditedJobContext(UserInfo.UserKey, UserInfo.User.UserName, false))
            {
                try
                {
                    //task
                    var task = (from jc in ctx.tbl_PB_JobCodes
                                where jc.JobCodeID == jobcodeid
                                select new
                    {
                        jc.JobAddonMemberPrice,
                        jc.JobAddonStdPrice,
                        jc.JobCost,
                        jc.JobCode,
                        jc.JobCodeID,
                        jc.JobCodeDescription
                    }).Single();

                    var job = (from j in ctx.tbl_Job
                               where j.JobID == jobid
                               select new
                    {
                        j.CustomerID,
                        j.BusinessTypeID
                    }).Single();

                    var newtask = new tbl_Job_Tasks()
                    {
                        Cost               = task.JobCost,
                        JobCodeID          = task.JobCodeID,
                        JobCode            = task.JobCode,
                        JobCodeDescription = task.JobCodeDescription,
                        JobID              = jobid,
                        AuthorizedYN       = true,
                        AddOnYN            = true,
                        Quantity           = 1
                    };

                    if (ctx.tbl_Customer_Members.Any(q => q.CustomerID == job.CustomerID))
                    {
                        newtask.Price = task.JobAddonMemberPrice;
                    }
                    else
                    {
                        newtask.Price = task.JobAddonStdPrice;
                    }

                    newtask.AccountCode = objmodcommon.Get_Account_Code(task.JobCodeID, job.BusinessTypeID);

                    ctx.tbl_Job_Tasks.AddObject(newtask);
                    ctx.SaveChanges();

                    //part
                    var partlist = (from p in ctx.tbl_PB_JobCodes_Details
                                    where p.JobCodeID == newtask.JobCodeID
                                    select p);

                    bool addflag = false;
                    foreach (var part in partlist)
                    {
                        var newpart = new tbl_Job_Task_Parts()
                        {
                            JobTaskID = newtask.JobTaskID,
                            PartCode  = objmodcommon.GetPartCode(part.PartID).Trim(),
                            PartName  = objmodcommon.GetPartName(part.PartID),
                            PartsID   = part.PartID,
                            Quantity  = newtask.Quantity * part.Qty
                        };

                        if (newtask.AddOnYN)
                        {
                            newpart.Price = newtask.MemberYN ? part.PartAddonMemberPrice : part.PartAddonStdPrice;
                        }
                        else
                        {
                            newpart.Price = newtask.MemberYN ? part.PartMemberPrice : part.PartStdPrice;
                        }

                        ctx.tbl_Job_Task_Parts.AddObject(newpart);

                        addflag = true;
                    }

                    if (addflag)
                    {
                        ctx.SaveChanges();
                    }

                    InvoiceFinancialDetail finance = RecalcJobData(jobid, job.CustomerID);

                    return(Json(finance));
                }
                catch (DbEntityValidationException dbEx)
                {
                    foreach (var validationErrors in dbEx.EntityValidationErrors)
                    {
                        foreach (var validationError in validationErrors.ValidationErrors)
                        {
                            Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName,
                                                   validationError.ErrorMessage);
                        }
                    }
                }

                return(Json("fail"));
            }
        }
コード例 #13
0
 public JsonResult UpdateSchedule(int scheduleId, string monStartTime, string monEndTime, string tueStartTime, string tueEndTime, string wedStartTime, string wedEndTime,
                                  string thruStartTime, string thruEndTime, string friStartTime, string friEndTime, string satStartTime, string satEndTime, string sunStartTime, string sunEndTime)
 {
     using (var context = new AuditedJobContext(UserInfo.UserKey, UserInfo.User.UserName, false))
     {
         var Schedule = (from p in context.tbl_Dispatch_Schedule where p.ScheduleID == scheduleId select p).Single();
         if (Schedule != null)
         {
             if (!string.IsNullOrWhiteSpace(sunStartTime))
             {
                 Schedule.SunStart = sunStartTime;
             }
             else
             {
                 Schedule.SunStart = "Off";
             }
             if (!string.IsNullOrWhiteSpace(sunEndTime))
             {
                 Schedule.SunEnd = sunEndTime;
             }
             else
             {
                 Schedule.SunEnd = "Off";
             }
             if (!string.IsNullOrWhiteSpace(monStartTime))
             {
                 Schedule.MonStart = monStartTime;
             }
             else
             {
                 Schedule.MonStart = "Off";
             }
             if (!string.IsNullOrWhiteSpace(monEndTime))
             {
                 Schedule.MonEnd = monEndTime;
             }
             else
             {
                 Schedule.MonEnd = "Off";
             }
             if (!string.IsNullOrWhiteSpace(tueStartTime))
             {
                 Schedule.TueStart = tueStartTime;
             }
             else
             {
                 Schedule.TueStart = "Off";
             }
             if (!string.IsNullOrWhiteSpace(tueEndTime))
             {
                 Schedule.TueEnd = tueEndTime;
             }
             else
             {
                 Schedule.TueEnd = "Off";
             }
             if (!string.IsNullOrWhiteSpace(wedStartTime))
             {
                 Schedule.WedStart = wedStartTime;
             }
             else
             {
                 Schedule.WedStart = "Off";
             }
             if (!string.IsNullOrWhiteSpace(wedEndTime))
             {
                 Schedule.WedEnd = wedEndTime;
             }
             else
             {
                 Schedule.WedEnd = "Off";
             }
             if (!string.IsNullOrWhiteSpace(thruStartTime))
             {
                 Schedule.ThuStart = thruStartTime;
             }
             else
             {
                 Schedule.ThuStart = "Off";
             }
             if (!string.IsNullOrWhiteSpace(thruEndTime))
             {
                 Schedule.ThuEnd = thruEndTime;
             }
             else
             {
                 Schedule.ThuEnd = "Off";
             }
             if (!string.IsNullOrWhiteSpace(friStartTime))
             {
                 Schedule.FriStart = friStartTime;
             }
             else
             {
                 Schedule.FriStart = "Off";
             }
             if (!string.IsNullOrWhiteSpace(friEndTime))
             {
                 Schedule.FriEnd = friEndTime;
             }
             else
             {
                 Schedule.FriEnd = "Off";
             }
             if (!string.IsNullOrWhiteSpace(satStartTime))
             {
                 Schedule.SatStart = satStartTime;
             }
             else
             {
                 Schedule.SatStart = "Off";
             }
             if (!string.IsNullOrWhiteSpace(satEndTime))
             {
                 Schedule.SatEnd = satEndTime;
             }
             else
             {
                 Schedule.SatEnd = "Off";
             }
             context.SaveChanges();
             return(Json(new
             {
                 Message = "Record Updated Successfully.",
                 ResultData = "",
                 Success = true
             }));
         }
         else
         {
             return(Json(new
             {
                 Message = string.Format("There is no schedule exists for ID: {0}.", scheduleId),
                 ResultData = "",
                 Success = false
             }));
         }
     }
 }