Пример #1
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"));
            }
        }
Пример #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 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));
            }
        }
Пример #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 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));
            }
        }
Пример #8
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));
            }
        }
Пример #9
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"));
            }
        }