zhengcaioa/zhengcaioa/Controllers/Finance/FiOrderrecievemoneyController.cs
@@ -32,9 +32,15 @@
        private readonly IFiAccountService _fiAccountService;
        private readonly IFiAccountRecordService _iFiAccountRecordService;
        private readonly ICooperatecustomCustomerService _cooperatecustomCustomerService;
        private readonly IProjectService _projectService;
        private readonly IUserService _userService;
        private readonly IFiCustomerrecievemoneyService _fiCustomerrecievemoneyService;
        public FiOrderrecievemoneyController(ILogger<FiOrderrecievemoneyController> logger, ILiaotianService liaotianService, IFiOrderrecievemoneyService fiOrderrecievemoneyService, ICooperOrderService cooperOrderService, IFiSubjectService ifiSubjectService
            , IFiAccountService fiAccountService, IFiAccountRecordService iFiAccountRecordService, ICooperatecustomCustomerService cooperatecustomCustomerService)
            , IFiAccountService fiAccountService, IFiAccountRecordService iFiAccountRecordService, ICooperatecustomCustomerService cooperatecustomCustomerService
            , IProjectService projectService
            , IUserService userService
            , IFiCustomerrecievemoneyService fiCustomerrecievemoneyService)
        {
            _logger = logger;
            _liaotianService = liaotianService;
@@ -44,8 +50,9 @@
            _fiAccountService = fiAccountService;
            _iFiAccountRecordService = iFiAccountRecordService;
            _cooperatecustomCustomerService = cooperatecustomCustomerService;
            _projectService = projectService;
            _userService = userService;
            _fiCustomerrecievemoneyService = fiCustomerrecievemoneyService;
        }
        public IActionResult Index()
@@ -124,9 +131,7 @@
            ViewBag.accounttype = _liaotianService.GetSYScode("fi_account", "accounttype");
            ViewBag.FiSubject = _ifiSubjectService.GetList().Where(x => x.Subjecttype == "01").ToList();
            ViewBag.cooperatecustomCustomerDTO = _cooperatecustomCustomerService.Get(cooperOrderDTO.Khdw);
            ViewData.Model = dto;
            return View();
@@ -145,7 +150,13 @@
            ResultEntity resultEntity = new ResultEntity();
                var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
                ViewData["curentuser"] = curentuser;
            using (TransactionScope scope = new TransactionScope())
            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,
           new TransactionOptions
           {
               IsolationLevel = IsolationLevel.ReadCommitted,
               Timeout = TransactionManager.MaximumTimeout
           }
           ))
            {
                data.RecStatus = "A";
                if (String.IsNullOrEmpty(data.Id))
@@ -155,39 +166,73 @@
                }
                data.Modifier = curentuser.Id;
                data.Modifytime = DateTime.Now;
                resultEntity = _fiOrderrecievemoneyService.save(data);
                CooperOrderDTO cooperOrderDTO = _cooperOrderService.Get(data.OrderId);
                CooperatecustomCustomerDTO cooperatecustomCustomerDTO = _cooperatecustomCustomerService.Get(cooperOrderDTO.Khdw);
                FiAccountRecordDTO data1 = new FiAccountRecordDTO();
                data1.RecStatus = "A";
                data1.Creater = curentuser.Id;
                data1.Createtime = DateTime.Now;
                data1.Modifier = curentuser.Id;
                data1.Modifytime = DateTime.Now;
                data1.SubjectId = data.SubjectId;
                if (data.PayType == "03")
                {
                    if(data.Recievemoney>((cooperatecustomCustomerDTO.Yufukuan ?? 0)+ (cooperatecustomCustomerDTO.Shouxinedu ?? 0) - (cooperatecustomCustomerDTO.Shenyushouxin ?? 0)))
                    {
                        resultEntity.Result = false;
                        resultEntity.Message = "剩余预付款和剩余授信不足!";
                        return new JsonResult(resultEntity);
                    }
                    else
                    {
                        if (data.Recievemoney > (cooperatecustomCustomerDTO.Yufukuan??0))
                        {
                            cooperatecustomCustomerDTO.Shenyushouxin = data.Recievemoney - (cooperatecustomCustomerDTO.Yufukuan??0);
                            if (cooperatecustomCustomerDTO.Shenyushouxin> (cooperatecustomCustomerDTO.Shouxinedu??0))
                            {
                                resultEntity.Result = false;
                                resultEntity.Message = "剩余授信不足!";
                                return new JsonResult(resultEntity);
                            }
                            cooperatecustomCustomerDTO.Yufukuan = 0;
                        }
                        else
                        {
                            cooperatecustomCustomerDTO.Yufukuan = cooperatecustomCustomerDTO.Yufukuan - data.Recievemoney;
                        }
                        resultEntity = _cooperatecustomCustomerService.saveyufukuan(cooperatecustomCustomerDTO);
                    }
                }
                data1.AccountId = data.AccountId;
                data1.Money = data.Recievemoney;
                data1.PaymentUnit = cooperatecustomCustomerDTO.Name;
                data1.OperationalMatters = "订单收款"+ cooperOrderDTO.OrderNo;
                resultEntity = _fiOrderrecievemoneyService.save(data);
                if (data.PayType != "03")
                {
                    FiAccountRecordDTO data1 = new FiAccountRecordDTO();
                    data1.RecStatus = "A";
                    data1.Creater = curentuser.Id;
                    data1.Createtime = DateTime.Now;
                    data1.Modifier = curentuser.Id;
                    data1.Modifytime = DateTime.Now;
                    data1.SubjectId = data.SubjectId;
                    data1.AccountId = data.AccountId;
                    data1.Money = data.Recievemoney;
                    data1.PaymentUnit = cooperatecustomCustomerDTO.Name;
                    data1.OperationalMatters = "订单收款" + cooperOrderDTO.OrderNo;
                    FiAccountDTO firmAccount = _fiAccountService.Get(data1.AccountId);
                    data1.RecordTypeId = "1";//收入
                    data1.Department = "";
                FiAccountDTO firmAccount = _fiAccountService.Get(data1.AccountId);
                    firmAccount.AllIncome = (firmAccount.AllIncome ?? 0) + data1.Money;
                    firmAccount.Balance = (firmAccount.Balance ?? 0) + data1.Money;
                    data1.AccountMoney = firmAccount.Balance;
                    resultEntity = _iFiAccountRecordService.save(data1);
                    resultEntity = _fiAccountService.save(firmAccount);
                }
                data1.RecordTypeId = "1";//收入
                data1.Department = "";
                firmAccount.AllIncome = (firmAccount.AllIncome ?? 0) + data1.Money;
                firmAccount.Balance = (firmAccount.Balance ?? 0) + data1.Money;
                data1.AccountMoney = firmAccount.Balance;
                resultEntity = _iFiAccountRecordService.save(data1);
                resultEntity = _fiAccountService.save(firmAccount);
                scope.Complete();
            }
@@ -207,5 +252,209 @@
            ViewData["curentuser"] = curentuser;
            return new JsonResult(_fiOrderrecievemoneyService.ModifyStatus(Id, curentuser.Id));
        }
        public IActionResult IndexCustomer()
        {
            var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
            ViewData["curentuser"] = curentuser;
            List<ActionEntity> actionlist = new List<ActionEntity>();
            ActionEntity actionEntity = new ActionEntity();
            actionEntity.OpenType = 0;
            actionEntity.ActionUrl = "";
            actionEntity.ActionFun = "Search";
            actionEntity.PageIco = "fa fa-search";
            actionEntity.ActionName = "查询";
            actionlist.Add(actionEntity);
            ViewData["ActionInfo"] = actionlist;
            ViewBag.khlx = _liaotianService.GetSYScode("CooperatecustomCustomer", "khlx").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList();
            ViewBag.khly = _liaotianService.GetSYScode("CooperatecustomCustomer", "khly").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList();
            ViewBag.hyfl = _liaotianService.GetSYScode("CooperatecustomCustomer", "hyfl").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList();
            ViewBag.shifou = _liaotianService.GetSYScode("system", "shifou").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList();
            ViewBag.users = _userService.GetList().Where(x => x.IsYwjl == "A").Select(x => new { code = x.Id, label = x.UserName }).ToList();
            var areaDTOs = _projectService.Getsheng().ToList();
            foreach (var areaDTO in areaDTOs)
            {
                if (areaDTO.CodeId == "510000")
                {
                    areaDTOs.Remove(areaDTO);
                    break;
                }
            }
            var areaDTOsic = new Area();
            areaDTOsic.CodeId = "510000";
            areaDTOsic.Name = "四川省";
            areaDTOsic.ParentId = "0     ";
            areaDTOs.Insert(1, areaDTOsic);
            ViewBag.ShengDropDown = areaDTOs.Select(x => new { code = x.CodeId, label = x.Name }).ToList();
            return View();
        }
        public IActionResult EditCustomer(string id = null, string CustomerId = null)
        {
            var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
            ViewData["curentuser"] = curentuser;
            FiCustomerrecievemoneyDTO dto = new FiCustomerrecievemoneyDTO();
            if (!String.IsNullOrEmpty(id))
            {
                dto = _fiCustomerrecievemoneyService.Get(id);
            }
            else
            {
                dto.PayTime = DateTime.Now;
                dto.CustomerId = CustomerId;
            }
            var cooperatecustomCustomerDTO = _cooperatecustomCustomerService.Get(CustomerId);
            dto.CustomerName = cooperatecustomCustomerDTO.Name;
            dto.Yufukuan = cooperatecustomCustomerDTO.Yufukuan??0;
            ViewBag.PayType = _liaotianService.GetSYScode("fi_account", "accounttype");
            ViewBag.accounttype = _liaotianService.GetSYScode("fi_account", "accounttype");
            ViewBag.FiSubject = _ifiSubjectService.GetList().Where(x => x.Subjecttype == "01").ToList();
            ViewData.Model = dto;
            return View();
        }
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="data">岗位实体类对象</param>
        /// <returns></returns>
        ///
        [HttpPost]
        public IActionResult SaveCustomer(FiCustomerrecievemoneyDTO data)
        {
            ResultEntity resultEntity = new ResultEntity();
            var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
            ViewData["curentuser"] = curentuser;
            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,
           new TransactionOptions
           {
               IsolationLevel = IsolationLevel.ReadCommitted,
               Timeout = TransactionManager.MaximumTimeout
           }
           ))
            {
                data.RecStatus = "A";
                if (String.IsNullOrEmpty(data.Id))
                {
                    data.Creater = curentuser.Id;
                    data.Createtime = DateTime.Now;
                }
                data.Modifier = curentuser.Id;
                data.Modifytime = DateTime.Now;
                resultEntity = _fiCustomerrecievemoneyService.save(data);
                CooperatecustomCustomerDTO cooperatecustomCustomerDTO = _cooperatecustomCustomerService.Get(data.CustomerId);
                if (cooperatecustomCustomerDTO.Shenyushouxin.HasValue)
                {
                    if(data.Recievemoney.Value> cooperatecustomCustomerDTO.Shenyushouxin.Value)
                    {
                        data.Recievemoney = data.Recievemoney.Value - cooperatecustomCustomerDTO.Shenyushouxin.Value;
                        cooperatecustomCustomerDTO.Shenyushouxin = 0;
                    }
                    else
                    {
                        cooperatecustomCustomerDTO.Shenyushouxin = cooperatecustomCustomerDTO.Shenyushouxin.Value - data.Recievemoney.Value;
                        data.Recievemoney = 0;
                    }
                }
                if(cooperatecustomCustomerDTO.Yufukuan.HasValue)
                    cooperatecustomCustomerDTO.Yufukuan = cooperatecustomCustomerDTO.Yufukuan.Value + data.Recievemoney.Value;
                 else
                    cooperatecustomCustomerDTO.Yufukuan = data.Recievemoney.Value;
                resultEntity = _cooperatecustomCustomerService.saveyufukuan(cooperatecustomCustomerDTO);
                FiAccountRecordDTO data1 = new FiAccountRecordDTO();
                data1.RecStatus = "A";
                data1.Creater = curentuser.Id;
                data1.Createtime = DateTime.Now;
                data1.Modifier = curentuser.Id;
                data1.Modifytime = DateTime.Now;
                data1.SubjectId = data.SubjectId;
                data1.AccountId = data.AccountId;
                data1.Money = data.Recievemoney;
                data1.PaymentUnit = cooperatecustomCustomerDTO.Name;
                data1.OperationalMatters ="客户预付款:" + data.Remark;
                FiAccountDTO firmAccount = _fiAccountService.Get(data1.AccountId);
                data1.RecordTypeId = "1";//收入
                data1.Department = "";
                firmAccount.AllIncome = (firmAccount.AllIncome ?? 0) + data1.Money;
                firmAccount.Balance = (firmAccount.Balance ?? 0) + data1.Money;
                data1.AccountMoney = firmAccount.Balance;
                resultEntity = _iFiAccountRecordService.save(data1);
                resultEntity = _fiAccountService.save(firmAccount);
                scope.Complete();
            }
            return new JsonResult(resultEntity);
        }
        public IActionResult IndexCustomerdtl(string CustomerId)
        {
            var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
            ViewData["curentuser"] = curentuser;
            List<ActionEntity> actionlist = new List<ActionEntity>();
            ActionEntity actionEntity = new ActionEntity();
            actionEntity.OpenType = 0;
            actionEntity.ActionUrl = "";
            actionEntity.ActionFun = "Search";
            actionEntity.PageIco = "fa fa-search";
            actionEntity.ActionName = "查询";
            actionlist.Add(actionEntity);
            ViewData["ActionInfo"] = actionlist;
            ViewBag.CustomerId = CustomerId;
            return View();
        }
        public IActionResult GetListCustomerdel(FiCustomerrecievemoneyDTOSearch search)
        {
            var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
            ViewData["curentuser"] = curentuser;
            //JsonResult jsonResult =   new JsonResult(_liaotianService.SearchByPaging(search), new Newtonsoft.Json.Serialization.DefaultContractResolver());
            return new JsonResult(_fiCustomerrecievemoneyService.SearchByPaging(search));
        }
    }
}