Ejemplo n.º 1
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }
            var remote = _context.tb_报价表.FirstOrDefault(m => m.RecordId == vm_Main.RecordId);

            if (remote == null)
            {
                return(NotFound());
            }

            // 非空字段赋值给跟踪实体
            vm_Main.往来 = _context.tb_往来表.AsNoTracking().FirstOrDefault(p => p.往来号 == vm_Main.往来号)?.简称;
            // 修改时间
            vm_Main.LastEditTime = DateTime.Now;
            vm_Main.LastEditUser = vm_Main.LastEditUser ?? "张凯译";

            _mapper.Map <vm_销售报价, tb_报价表>(vm_Main, remote);

            var remoteDetails = _context.tb_报价表D.Where(d => d.RecordId == remote.RecordId);

            // 数据库中的子单号与新明细中没有相同的,则从数据库中删除
            foreach (var remoteD in remoteDetails)
            {
                if (!vm_Details.Where(p => !string.IsNullOrEmpty(p.子单号)).Any(p => p.子单号 == remoteD.子单号))
                {
                    _context.tb_报价表D.Remove(remoteD);
                }
            }
            // 新明细中的子单号为空,则添加
            foreach (var localD in vm_Details.Where(p => string.IsNullOrEmpty(p.子单号)))
            {
                Common.ModelHelper.CompleteDetailOnUpdate(remote, localD);
                localD.子单号 = _context.funcAutoCode("子单号");
                _context.tb_报价表D.Add(_mapper.Map <tb_报价表D>(localD));
            }
            // 子单号相同,则赋值
            foreach (var localD in vm_Details.Where(p => !string.IsNullOrEmpty(p.子单号)))
            {
                foreach (var remoteD in remoteDetails)
                {
                    if (remoteD.子单号 == localD.子单号)
                    {
                        _mapper.Map <vm_销售报价D, tb_报价表D>(localD, remoteD);
                        break;
                    }
                }
            }

            //_context.tb_报价表D.AddRange(_mapper.Map<IList<tb_报价表D>>(vm_销售报价D列表));
            await _context.SaveChangesAsync();

            return(RedirectToPage("./Index"));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }
            var remote = _context.funcEditRecord <vm_销售出库, tb_IO>(vm_Main, BeforeNew: before =>
            {
                // 非空字段赋值给跟踪实体
                before.类型 = "销售出库";
                before.往来 = _context.Set <tb_往来表>().FirstOrDefault(p => p.往来号 == vm_Main.往来号)?.简称;
            });

            _context.funcEditDetails <vm_销售出库, vm_销售出库D, tb_IO, tb_IOD>(vm_Main, vm_Details,
                                                                        creatingD =>
            {
                if (string.IsNullOrEmpty(creatingD.子单号))     // 子单号为空的,表示新插入
                {
                    creatingD.子单号 = _context.funcAutoCode("子单号");
                }
                else if (!string.IsNullOrEmpty(creatingD.子单号))     // 子单号不为空,表示从报价单引入,插入
                {
                    var baojiaD = _context.Set <tb_订单表D>().FirstOrDefault(d => d.子单号 == creatingD.子单号);
                    if (baojiaD != null)
                    {
                        baojiaD.状态 = "已出库";
                    }
                }
            },
                                                                        updatingD =>
            {
                var baojiaD = _context.Set <tb_订单表D>().FirstOrDefault(d => d.子单号 == updatingD.子单号);
                if (baojiaD != null)
                {
                    baojiaD.状态 = "已出库";
                }
            },
                                                                        deletingD =>
            {
                var tb_报价D = _context.Set <tb_订单表D>().FirstOrDefault(d => d.子单号 == deletingD.子单号);
                if (tb_报价D != null)
                {
                    tb_报价D.状态 = "";
                }
            });

            await _context.SaveChangesAsync();

            return(RedirectToPage("./Index"));
        }
Ejemplo n.º 3
0
        public IActionResult OnPost()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }
            //Common.ModelHelper.CompleteMainOnCreate(vm_地板);
            //vm_地板.品号 = _context.funcAutoCode("商品号");
            //_context.tb_商品表.Add(_mapper.Map<tb_商品表>(vm_地板));

            _context.funcNewRecord <vm_商品_地板, tb_商品表>(vm_地板, creating => {
                creating.品号 = _context.funcAutoCode("商品号");
            });

            _context.SaveChanges();

            return(RedirectToPage("./Index"));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> OnPost2Async()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }
            var remote = _context.Set <tb_订单表>().FirstOrDefault(m => m.RecordId == vm_Main.RecordId);

            if (remote == null)
            {
                return(NotFound());
            }

            // 非空字段赋值给跟踪实体
            vm_Main.往来 = _context.Set <tb_往来表>().AsNoTracking().FirstOrDefault(p => p.往来号 == vm_Main.往来号)?.简称;
            _mapper.Map <vm_销售订单, tb_订单表>(vm_Main, remote);

            var remoteDetails = _context.Set <tb_订单表D>().Where(d => d.RecordId == remote.RecordId).ToList();

            // 数据库中的子单号与新明细中没有相同的,则从数据库中删除
            foreach (var remoteD in remoteDetails)
            {
                if (!vm_Details.Any(p => p.子单号 == remoteD.子单号))
                {
                    var tb_报价D = _context.Set <tb_报价表D>().FirstOrDefault(d => d.子单号 == remoteD.子单号);
                    if (tb_报价D != null)
                    {
                        tb_报价D.状态 = "";
                    }
                    _context.Remove <tb_订单表D>(remoteD);
                }
            }

            foreach (var localD in vm_Details)
            {
                Common.ModelHelper.CompleteDetailOnUpdate(remote, localD);

                if (remoteDetails.Any(d => d.子单号 == localD.子单号)) // 子单号相同的,表示修改
                {
                    var remoteD = _context.Set <tb_订单表D>().FirstOrDefault(m => m.子单号 == localD.子单号);
                    _mapper.Map(localD, remoteD);
                }
                if (!remoteDetails.Any(d => d.子单号 == localD.子单号))
                {
                    if (string.IsNullOrEmpty(localD.子单号)) // 子单号为空的,表示新插入
                    {
                        localD.子单号 = _context.funcAutoCode("子单号");
                        _context.Attach <tb_订单表D>(_mapper.Map <tb_订单表D>(localD)).State = EntityState.Added;
                    }
                    else if (!string.IsNullOrEmpty(localD.子单号)) // 子单号不为空,表示从报价单引入,插入
                    {
                        var baojiaD = _context.Set <tb_报价表D>().FirstOrDefault(d => d.子单号 == localD.子单号);
                        if (baojiaD != null)
                        {
                            baojiaD.状态 = "已下单";
                        }
                        _context.Attach <tb_订单表D>(_mapper.Map <tb_订单表D>(localD)).State = EntityState.Added;
                    }
                }
            }

            // 数据库中的子单号与新明细中没有相同的,则从数据库中删除
            // 新明细中的子单号为空,则添加
            // 子单号相同,则赋值

            await _context.SaveChangesAsync();

            return(RedirectToPage("./Index"));
        }