public async Task <IActionResult> PutCreditCalculate([FromRoute] int id, [FromBody] CreditCalculate creditCalculate)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != creditCalculate.CalculateId)
            {
                return(BadRequest());
            }

            _context.Entry(creditCalculate).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CreditCalculateExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        private IActionResult Edited(Credit credit)
        {
            using (var transaction = _context.Database.BeginTransaction())
            {
                CreditCalculate           calculate     = new CreditCalculate();
                CreditContract            contract      = new CreditContract();
                List <CreditContractItem> contractItems = new List <CreditContractItem>();

                try
                {
                    calculate     = credit.creditCalculate;
                    contract      = credit.creditContract;
                    contractItems = credit.creditContactItem.ToList();

                    // Calculate
                    calculate.UpdateDate = DateTime.Now;
                    _context.Update(calculate);
                    _context.SaveChanges();

                    // Contract
                    contract.UpdateDate = DateTime.Now;
                    _context.Update(contract);
                    _context.SaveChanges();

                    // ContractItem
                    var contItem = _context.CreditContractItem.Where(o => o.ContractId == contract.ContractId).ToList();
                    _context.RemoveRange(contItem);
                    _context.SaveChanges();

                    foreach (var item in contractItems)
                    {
                        item.ContractId = contract.ContractId;
                        item.RefNo      = contract.RefNo;

                        //item.PayPrice = item.Balance;
                        //item.PayVatPrice = item.BalanceVatPrice;
                        //item.PayNetPrice = item.BalanceNetPrice;
                        // สถานะยังไม่ชำระ
                        item.Status = 13;

                        item.CreateBy   = contract.CreateBy;
                        item.CreateDate = DateTime.Now;
                        item.UpdateBy   = contract.UpdateBy;
                        item.UpdateDate = DateTime.Now;
                    }

                    _context.CreditContractItem.AddRange(contractItems);
                    _context.SaveChanges();


                    transaction.Commit();

                    var obj = new Dictionary <string, object>
                    {
                        { "contractId", contract.ContractId }
                    };

                    return(Ok(obj));
                } catch (Exception ex) {
                    transaction.Rollback();
                    return(StatusCode(500, ex.Message));
                }
            }
        }
        private IActionResult Reviced(Credit credit)
        {
            using (var transaction = _context.Database.BeginTransaction())
            {
                CreditCalculate           calculate     = new CreditCalculate();
                CreditContract            contract      = new CreditContract();
                List <CreditContractItem> contractItems = new List <CreditContractItem>();
                Models.Booking            booking       = new Models.Booking();

                try
                {
                    calculate     = credit.creditCalculate;
                    contract      = credit.creditContract;
                    contractItems = credit.creditContactItem.ToList();
                    booking       = _context.Booking.FirstOrDefault(b => b.BookingId == contract.BookingId);

                    // Calculate
                    calculate.UpdateDate = DateTime.Now;
                    _context.CreditCalculate.Update(calculate);
                    _context.SaveChanges();

                    // Contract
                    contract.UpdateDate = DateTime.Now;
                    contract.RefNo      = GenerateReferenceContract(contract.ContractId);
                    _context.CreditContract.Update(contract);
                    _context.SaveChanges();

                    // ContractItem
                    foreach (var item in contractItems)
                    {
                        item.ContractId = contract.ContractId;
                        item.RefNo      = contract.RefNo;

                        //item.PayPrice = item.Balance;
                        //item.PayVatPrice = item.BalanceVatPrice;
                        //item.PayNetPrice = item.BalanceNetPrice;
                        // สถานะยังไม่ชำระ
                        item.Status = 13;

                        item.CreateBy   = contract.CreateBy;
                        item.CreateDate = DateTime.Now;
                        item.UpdateBy   = contract.UpdateBy;
                        item.UpdateDate = DateTime.Now;
                    }

                    _context.CreditContractItem.AddRange(contractItems);
                    _context.SaveChanges();

                    // ค้นห่อผู้เช่าซื้อด้วยรหัส
                    var __branch = _context.Branch.SingleOrDefault(x => x.BranchId == 1);

                    var __company = _context.Company.FirstOrDefault(x => x.ComId == 1);

                    // Booking
                    if (booking.SellDate == null)
                    {
                        booking.SellDate = DateTime.Now;
                    }

                    booking.ReturnDepostit = calculate.ReturnDeposit;
                    // กรณีมีการคืนเงินมัดจำ
                    if (calculate.ReturnDeposit == 1 && booking.ReturnDepostit == 0)
                    {
                        booking.ReturnDepositPrice = calculate.ReturnDepositPrice;
                        booking.ReturnDepNo        = iSysParamService.GeerateeReturnDepositNo((int)contract.BranchId);
                        booking.ReturnDepBy        = contract.CreateBy;
                        booking.ReturnDepDate      = DateTime.Now;
                    }
                    else if (calculate.ReturnDeposit == 0)
                    {
                        booking.ReturnDepositPrice = 0;
                    }

                    booking.BookingStatus      = 2; // สถานะขาย
                    booking.PaymentPrice       = calculate.DepositPrice;
                    booking.PaymentType        = booking.BookingDepositType;
                    booking.CusSellName        = __company.ComName;
                    booking.CusTaxNo           = __branch.BranchRegisterNo;
                    booking.SellBy             = contract.CreateBy;
                    booking.LStartDate         = calculate.FirstPayment.ToString("yyyy-MM-dd");
                    booking.LPayDay            = calculate.DueDate;
                    booking.LTerm              = calculate.InstalmentEnd;
                    booking.LInterest          = calculate.Interest;
                    booking.LPriceTerm         = calculate.InstalmentPrice;
                    booking.ReturnDepositPrice = calculate.ReturnDeposit;

                    // กรณีมีการคืนเงินมัดจำ
                    if (calculate.ReturnDeposit == 1 && booking.ReturnDepostit == 0)
                    {
                        booking.ReturnDepositPrice = calculate.ReturnDepositPrice;
                        booking.ReturnDepNo        = iSysParamService.GeerateeReturnDepositNo((int)contract.BranchId);
                        booking.ReturnDepBy        = contract.CreateBy;
                        booking.ReturnDepDate      = DateTime.Now;
                    }

                    _context.Booking.Update(booking);
                    _context.SaveChanges();

                    transaction.Commit();

                    var obj = new Dictionary <string, object>
                    {
                        { "contractId", contract.ContractId }
                    };

                    return(Ok(obj));
                } catch (Exception ex) {
                    transaction.Rollback();
                    return(StatusCode(500, ex.Message));
                }
            }
        }
        private IActionResult Created(Credit credit)
        {
            using (var transaction = _context.Database.BeginTransaction())
            {
                CreditCalculate           calculate     = new CreditCalculate();
                CreditContract            contract      = new CreditContract();
                List <CreditContractItem> contractItems = new List <CreditContractItem>();

                try{
                    calculate     = credit.creditCalculate;
                    contract      = credit.creditContract;
                    contractItems = credit.creditContactItem.ToList();

                    // Calculate
                    calculate.CreateDate = DateTime.Now;
                    _context.CreditCalculate.Add(calculate);
                    _context.SaveChanges();

                    // Contract
                    contract.CalculateId = calculate.CalculateId;
                    contract.RefNo       = GenerateReferenceContract(null);
                    contract.ContractNo  = iSysParamService.GenerateContractNo((int)contract.BranchId);
                    contract.CreateDate  = DateTime.Now;
                    _context.CreditContract.Add(contract);
                    _context.SaveChanges();

                    // ContractItem
                    foreach (var item in contractItems)
                    {
                        item.ContractId = contract.ContractId;
                        item.RefNo      = contract.RefNo;

                        item.PayPrice    = item.Balance;
                        item.PayVatPrice = item.BalanceVatPrice;
                        item.PayNetPrice = item.BalanceNetPrice;

                        item.Status = 13; // สถานะยังไม่ชำระ

                        item.CreateBy   = contract.CreateBy;
                        item.CreateDate = DateTime.Now;
                    }

                    _context.CreditContractItem.AddRange(contractItems);
                    _context.SaveChanges();

                    // หลังจากเลือกรายการที่ค้นหาแล้วให้เอา log_id ที่ได้มาเก็บตอนทำการขาย
                    // มีเงื่อนไขโดย itemDetailType==1(สินค้าประเภทรถ)
                    var bookItem = _context.BookingItem.FirstOrDefault(x => x.BookingId == contract.BookingId && x.ItemDetailType == 1);
                    if (bookItem != null)
                    {
                        bookItem.LogReceiveId = calculate.LogReceiveId;
                        _context.BookingItem.Update(bookItem);
                        _context.SaveChanges();
                    }

                    var stockReceive = _context.StockReceive.FirstOrDefault(x => x.LogId == calculate.LogReceiveId);
                    if (stockReceive != null)
                    {
                        stockReceive.BalanceQty = stockReceive.BalanceQty - 1;
                        _context.StockReceive.Update(stockReceive);
                        _context.SaveChanges();
                    }

                    transaction.Commit();

                    var obj = new Dictionary <string, object>
                    {
                        { "contractId", contract.ContractId }
                    };

                    return(Ok(obj));
                } catch (Exception ex) {
                    transaction.Rollback();

                    return(StatusCode(500, ex.Message));
                }
            }
        }
Esempio n. 5
0
        public IActionResult Edit([FromBody] Contract c)
        {
            using (var transaction = ctx.Database.BeginTransaction())
            {
                try
                {
                    var creditContract = c.contract;
                    var _booking       = c.booking;
                    // Contract
                    // ถ้าสัญญา ยังเป็นสัญญาใหม่ จะถูกเปลี่ยนให้เป็น อยู่ระหว่างการผ่อนชำระอัตโนมัติ
                    creditContract.ContractStatus = creditContract.ContractStatus == 32 ? 31 : creditContract.ContractStatus;
                    creditContract.UpdateDate     = DateTime.Now;
                    ctx.Update(creditContract);
                    ctx.SaveChanges();

                    // Calculate
                    CreditCalculate calculate = new CreditCalculate();
                    calculate = ctx.CreditCalculate.SingleOrDefault(o => o.CalculateId == creditContract.CalculateId);

                    // Booking
                    Models.Booking booking = new Models.Booking();
                    booking = ctx.Booking.SingleOrDefault(b => b.BookingId == creditContract.BookingId);

                    // // ค้นหาชื่อเช่าซื้อด้วยรหัส
                    // var customer = iCustService.GetCustomerByCode(creditContract.ContractHire);

                    if (booking.SellDate == null)
                    {
                        booking.SellDate = DateTime.Now;
                    }

                    // update booking ให้เป็นสถานะขาย
                    booking.BookingStatus = 2;
                    booking.PaymentPrice  = calculate.DepositPrice;
                    booking.PaymentType   = booking.BookingDepositType;
                    booking.CusSellName   = _booking.CusSellName;
                    booking.CusTaxNo      = _booking.CusTaxNo;
                    booking.CusTaxBranch  = _booking.CusTaxBranch;
                    booking.SellRemark    = _booking.SellRemark;

                    booking.SellBy     = creditContract.CreateBy;
                    booking.LStartDate = calculate.FirstPayment.ToString();
                    booking.LPayDay    = calculate.DueDate;
                    booking.LTerm      = calculate.InstalmentEnd;
                    booking.LInterest  = calculate.Interest;
                    booking.LPriceTerm = calculate.InstalmentPrice;

                    if (booking.SellNo == null)
                    {
                        booking.SellNo = iSysParamService.GenerateSellNo((int)creditContract.BranchId);
                    }

                    if (booking.VatNo == null)
                    {
                        booking.VatNo = iSysParamService.GenerateVatNo((int)creditContract.BranchId);
                    }

                    booking.VatDate = DateTime.Now;
                    booking.VatBy   = creditContract.CreateBy;
                    ctx.Update(booking);
                    ctx.SaveChanges();

                    transaction.Commit();

                    return(Ok(creditContract));
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    return(StatusCode(500, ex.Message));
                }
            }
        }
Esempio n. 6
0
        public IActionResult Create([FromBody] Contract c)
        {
            using (var transaction = ctx.Database.BeginTransaction())
            {
                try
                {
                    var creditContract = c.contract;
                    var _booking       = c.booking;
                    // Contract
                    creditContract.UpdateDate = DateTime.Now;
                    // อยู่ระหว่างผ่อนชำระ
                    creditContract.ContractStatus = 31;
                    ctx.Update(creditContract);
                    ctx.SaveChanges();

                    // Calculate
                    CreditCalculate calculate = new CreditCalculate();
                    calculate = ctx.CreditCalculate.SingleOrDefault(o => o.CalculateId == creditContract.CalculateId);

                    // Booking
                    Models.Booking booking = new Models.Booking();
                    booking = ctx.Booking.SingleOrDefault(b => b.BookingId == creditContract.BookingId);
                    booking.ReturnDepostit = calculate.ReturnDeposit;
                    // กรณีมีการคืนเงินมัดจำ
                    if (calculate.ReturnDeposit == 1)
                    {
                        booking.ReturnDepositPrice = calculate.ReturnDepositPrice;
                        booking.ReturnDepNo        = iSysParamService.GeerateeReturnDepositNo((int)creditContract.BranchId);
                        booking.ReturnDepBy        = creditContract.CreateBy;
                        booking.ReturnDepDate      = DateTime.Now;
                    }

                    booking.SellDate      = DateTime.Now;
                    booking.BookingStatus = 2; // สถานะขาย

                    booking.PaymentPrice = calculate.DepositPrice;
                    booking.PaymentType  = booking.BookingDepositType;
                    booking.CusSellName  = _booking.CusSellName;
                    booking.CusTaxNo     = _booking.CusTaxNo;
                    booking.CusTaxBranch = _booking.CusTaxBranch;
                    booking.SellRemark   = _booking.SellRemark;

                    booking.SellBy     = creditContract.CreateBy;
                    booking.LStartDate = calculate.FirstPayment.ToString();
                    booking.LPayDay    = calculate.DueDate;
                    booking.LTerm      = calculate.InstalmentEnd;
                    booking.LInterest  = calculate.Interest;
                    booking.SellNo     = iSysParamService.GenerateSellNo((int)creditContract.BranchId);
                    booking.LPriceTerm = calculate.InstalmentPrice;
                    booking.VatNo      = iSysParamService.GenerateVatNo((int)creditContract.BranchId);
                    booking.VatDate    = DateTime.Now;
                    booking.VatBy      = creditContract.CreateBy;
                    ctx.Update(booking);
                    ctx.SaveChanges();

                    transaction.Commit();

                    return(Ok(creditContract));
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    return(StatusCode(500, ex.Message));
                }
            }
        }