Пример #1
0
        public static bool TryRecordAdd <TSrc, TDst>(this Pinhua2Context context, TSrc src, Action <TSrc> Adding = null)
            where TSrc : _BaseTableMain
            where TDst : _BaseTableMain
        {
            Adding?.Invoke(src);

            src.CreateTime = DateTime.Now;
            src.CreateUser = src.CreateUser ?? "张凯译";
            var dst = StaticAutoMapper.Current.Map <TSrc, TDst>(src);

            context.Entry <TDst>(dst).State = EntityState.Added;

            var nret = context.SaveChanges();

            if (nret > 0)
            {
                // SaveChanges 成功的话,把数据库中的数据比如 RecordId 返回
                // src.RecordId = dst.RecordId;
                StaticAutoMapper.Current.Map <TDst, TSrc>(dst, src);
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #2
0
        public static TDst RecordEdit <TSrc, TDst>(this Pinhua2Context context, TSrc src,
                                                   Action <TSrc> Editing = null /*, Action<TRemote> AfterNew = null*/)
            where TSrc : _BaseTableMain
            where TDst : _BaseTableMain
        {
            var dst = context.Set <TDst>().FirstOrDefault(m => m.RecordId == src.RecordId);

            if (dst == null)
            {
                return(null);
            }

            Editing?.Invoke(src);

            src.CreateTime   = dst.CreateTime;
            src.CreateUser   = dst.CreateUser;
            src.LastEditTime = DateTime.Now;
            src.LastEditUser = src.LastEditUser ?? "张凯译";

            StaticAutoMapper.Current.Map <TSrc, TDst>(src, dst);
            context.Entry <TDst>(dst).State = EntityState.Modified;
            context.SaveChanges();

            return(dst);
        }
Пример #3
0
        public static bool TryRecordEdit <TSrc, TDst>(this Pinhua2Context context, TSrc src, /*out TDst outDst,*/ Action <TSrc> Editing = null)
            where TSrc : _BaseTableMain
            where TDst : _BaseTableMain
        {
            var dst = context.Set <TDst>().FirstOrDefault(m => m.RecordId == src.RecordId);

            if (dst == null)
            {
                //outDst = null;
                return(false);
            }

            Editing?.Invoke(src);

            src.CreateTime   = dst.CreateTime;
            src.CreateUser   = dst.CreateUser;
            src.LastEditTime = DateTime.Now;
            src.LastEditUser = src.LastEditUser ?? "张凯译";

            StaticAutoMapper.Current.Map <TSrc, TDst>(src, dst);
            context.Entry <TDst>(dst).State = EntityState.Modified;
            var ret = context.SaveChanges();

            if (ret > 0)
            {
                //outDst = dst;
                return(true);
            }
            else
            {
                //outDst = null;
                return(false);
            }
        }
Пример #4
0
        public static TRemote funcEditRecord <TLocal, TRemote>(this Pinhua2Context context, TLocal local,
                                                               Action <TLocal> BeforeNew = null /*, Action<TRemote> AfterNew = null*/)
            where TLocal : _BaseTableMain
            where TRemote : _BaseTableMain
        {
            var remote = context.Set <TRemote>().FirstOrDefault(m => m.RecordId == local.RecordId);

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

            BeforeNew?.Invoke(local);

            //Pinhua2Helper.CompleteMainOnEdit(local);
            local.CreateTime   = remote.CreateTime;
            local.CreateUser   = remote.CreateUser;
            local.LastEditTime = DateTime.Now;
            local.LastEditUser = local.LastEditUser ?? "张凯译";

            Mapper.Map <TLocal, TRemote>(local, remote);
            context.Entry <TRemote>(remote).State = EntityState.Modified;

            //AfterNew?.Invoke(remote);
            //context.SaveChanges();
            return(remote);
        }
Пример #5
0
        public static string funcAutoCode(this Pinhua2Context context, int codeId)
        {
            var id       = string.Empty;
            var autoCode = context.sys_AutoCode.FirstOrDefault(p => p.AutoCodeId == codeId);

            if (autoCode == null)
            {
                return(id);
            }
            id += autoCode.Prefix;
            if (!string.IsNullOrEmpty(autoCode.DateType))
            {
                id += DateTime.Now.ToString(autoCode.DateType);
            }
            var autoCodeReg = context.sys_AutoCodeRegister.FirstOrDefault(p => p.AutoCodeId == codeId && p.PrimaryPart == id);

            if (autoCodeReg != null)
            {
                autoCodeReg.CurrentSeed += 1;
                id += autoCodeReg.CurrentSeed?.ToString($"D{autoCode.SeedLength}");
            }
            else
            {
                context.sys_AutoCodeRegister.Add(new Models.sys_AutoCodeRegister
                {
                    AutoCodeId  = codeId,
                    CurrentSeed = 1,
                    PrimaryPart = id,
                });
                id += 1.ToString($"D{autoCode.SeedLength}");
            }
            //context.SaveChanges();

            return(id);
        }
Пример #6
0
        public static IList <view_LastQue> view_最新报价(this Pinhua2Context context)
        {
            var o = from m in context.tb_报价表.AsNoTracking()
                    join d in context.tb_报价表D.AsNoTracking() on m.RecordId equals d.RecordId
                    select new
            {
                m.RecordId,
                m.业务类型,
                m.往来号,
                d.品号,
                d.单价,
                m.日期
            };
            var l = from p in o
                    where !o.Any(x => x.RecordId > p.RecordId && x.业务类型 == p.业务类型 && x.往来号 == p.往来号 && x.品号 == p.品号) // 不存在更新的RecordId
                    group p by new { p.RecordId, p.业务类型, p.日期, p.往来号, p.品号 } into g
                select new view_LastQue
            {
                RecordId = g.Key.RecordId,
                业务类型     = g.Key.业务类型,
                往来号      = g.Key.往来号,
                品号       = g.Key.品号,
                日期       = g.Key.日期,
                最低价      = g.Min(x => x.单价),
                最高价      = g.Max(x => x.单价)
            };


            return(l.ToList());
        }
        public static JArray Get销售订单商品(this Pinhua2Context context, string customerId)
        {
            if (string.IsNullOrEmpty(customerId))
            {
                return(new JArray());
            }

            var set = from m in context.tb_订单表.AsNoTracking()
                      join d in context.tb_订单表D.AsNoTracking() on m.RecordId equals d.RecordId
                      join x in context.tb_商品表.AsNoTracking() on d.品号 equals x.品号
                      where m.往来号 == customerId && m.业务类型 == "销售订单"
                      select new
            {
                订 = d,
                品 = x
            };
            JArray jsonArray = new JArray();

            foreach (var item in set)
            {
                jsonArray.Add(Pinhua2Helper.JObjectFromMerge(item.订, item.品));
            }

            return(jsonArray);
        }
        public static JArray Get采购询价商品(this Pinhua2Context context, string customerId, string orderId)
        {
            if (orderId == null)
            {
                return(new JArray());
            }

            var set = from m in context.tb_报价表.AsNoTracking()
                      join d in context.tb_报价表D.AsNoTracking() on m.RecordId equals d.RecordId
                      join x in context.tb_商品表.AsNoTracking() on d.品号 equals x.品号
                      where /*m.往来号 == customerId &&*/ m.业务类型 == "采购询价" && m.单号 == orderId
                      select new
            {
                询 = d,
                品 = x
            };
            JArray jsonArray = new JArray();

            foreach (var item in set)
            {
                jsonArray.Add(Pinhua2Helper.JObjectFromMerge(item.询, item.品));
            }

            return(jsonArray);
        }
Пример #9
0
        public static IList <view_AllOrders2> view_全部订单2(this Pinhua2Context context)
        {
            var l = from r in context.tb_订单表.AsNoTracking()
                    join rd in context.tb_订单表D.AsNoTracking() on r.RecordId equals rd.RecordId into rdTemp
                    from rd in rdTemp.DefaultIfEmpty()
                    join p in context.tb_商品表.AsNoTracking() on rd.品号 equals p.品号 into pTemp
                    from p in pTemp.DefaultIfEmpty()
                    select new view_AllOrders2
            {
                Product = p,
                Order   = new view_AllOrders2_order
                {
                    RecordId = rd.RecordId,
                    业务类型     = r.业务类型,
                    交期       = r.交期,
                    制单       = r.CreateUser,
                    单价       = rd.单价,
                    单号       = r.单号,
                    品号       = rd.品号,
                    备注       = r.备注,
                    子单号      = rd.子单号,
                    往来       = r.往来,
                    往来号      = r.往来号,
                    个数       = rd.个数,
                    日期       = r.日期,
                    状态       = rd.状态,
                    金额       = rd.金额,
                }
            };

            return(l.ToList());
        }
        public static JArray Get销售出库商品(this Pinhua2Context context, string customerId)
        {
            if (string.IsNullOrEmpty(customerId))
            {
                return(new JArray());
            }

            var set = from m in context.tb_IO.AsNoTracking()
                      join d in context.tb_IOD.AsNoTracking() on m.RecordId equals d.RecordId
                      join x in context.tb_商品表.AsNoTracking() on d.品号 equals x.品号
                      where m.往来号 == customerId && m.类型 == "销售出库"
                      select new
            {
                出 = d,
                品 = x
            };
            JArray jsonArray = new JArray();

            foreach (var item in set)
            {
                var jsonObj = Pinhua2Helper.JObjectFromMerge(item.出, item.品);
                jsonObj["个数"] = jsonObj["发"];
                jsonArray.Add(jsonObj);
            }

            return(jsonArray);
        }
Пример #11
0
        public static bool TryRecordDetailsAdd <TSrc, TSrcD, TDst, TDstD>(this Pinhua2Context context, TSrc src, IEnumerable <TSrcD> srcDSet,
                                                                          Action <TSrcD> Adding = null)
            where TSrc : _BaseTableMain
            where TSrcD : _BaseTableDetail
            where TDst : _BaseTableMain
            where TDstD : _BaseTableDetail
        {
            if (!srcDSet.Any())
            {
                // 如果明细为空,直接返回 true ,避免主表数据无法保存成功
                return(true);
            }

            foreach (var srcD in srcDSet)
            {
                Adding?.Invoke(srcD);
                srcD.RecordId = src.RecordId;
                var dstD = StaticAutoMapper.Current.Map <TSrcD, TDstD>(srcD);
                context.Entry <TDstD>(dstD).State = EntityState.Added;
            }

            var nRet = context.SaveChanges();

            if (nRet > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #12
0
        public static IEnumerable <view_AllOrdersPay> list_收付待付(this Pinhua2Context context, string customerId)
        {
            var l = from m in context.list_收付待付()
                    where m.往来号 == customerId
                    select m;

            return(l);
        }
Пример #13
0
        public static IEnumerable <view_AllOrdersPay> list_收付待付(this Pinhua2Context context)
        {
            var l = from m in context.view_全部订单收付()
                    where m.待付 > 0
                    select m;

            return(l.ToList());
        }
Пример #14
0
        public static IEnumerable <view_AllOrdersIO> list_订单待收(this Pinhua2Context context)
        {
            var l = from m in context.view_全部订单收发()
                    where m.待收 > 0 && m.业务类型 == "采购订单"
                    select m;

            return(l.ToList());
        }
Пример #15
0
        static public Dictionary <string, string> Dic_往来单位(this Pinhua2Context _context)
        {
            var customers          = _context.tb_往来表.AsNoTracking().OrderBy(m => m.往来号);
            var customerSelectList = new Dictionary <string, string>();

            foreach (var customer in customers)
            {
                customerSelectList.Add(customer.往来号, customer.往来号 + " - " + customer.简称);
            }
            return(customerSelectList);
        }
Пример #16
0
        public static TOriginalD RecordDetailAdd <TDtoD, TOriginalD>(this Pinhua2Context context, TDtoD dto, Action <TDtoD> Adding = null)
            where TDtoD : _BaseTableDetail
            where TOriginalD : _BaseTableDetail
        {
            Adding?.Invoke(dto);

            var remoteD = StaticAutoMapper.Current.Map <TDtoD, TOriginalD>(dto);

            context.Entry <TOriginalD>(remoteD).State = EntityState.Added;

            //context.SaveChanges();
            return(remoteD);
        }
Пример #17
0
        public static string funcAutoCode(this Pinhua2Context context, string codeName)
        {
            var autoCode = context.sys_AutoCode.AsNoTracking().FirstOrDefault(p => p.AutoCodeName == codeName);

            if (autoCode == null)
            {
                return(string.Empty);
            }
            else
            {
                return(funcAutoCode(context, autoCode.AutoCodeId));
            }
        }
Пример #18
0
        public static IList <view_OrderIO> view_订单收发(this Pinhua2Context context)
        {
            var l = from rd in context.tb_IOD.AsNoTracking()
                    group rd by rd.子单号 into g
                    select new view_OrderIO
            {
                收   = g.Sum(x => x.收 ?? 0),
                发   = g.Sum(x => x.发 ?? 0),
                子单号 = g.Key
            };

            return(l.ToList());
        }
Пример #19
0
        public static IList <view_Lbq> view_库批存(this Pinhua2Context context)
        {
            var l = from detail in context.tb_IOD.AsNoTracking()

                    group detail by new { detail.品号, detail.库位, detail.批次 } into g
                select new view_Lbq
            {
                品号 = g.Key.品号,
                库位 = g.Key.库位,
                批次 = g.Key.批次,
                库存 = g.Sum(p => p.收 ?? 0 - p.发 ?? 0)
            };

            return(l.ToList());
        }
Пример #20
0
        public static IList <view_OrderPay> view_订单收付(this Pinhua2Context context)
        {
            var l = from p in context.tb_收付表D.AsNoTracking()
                    where !string.IsNullOrEmpty(p.子单号)
                    group p by p.子单号 into g
                    select new view_OrderPay
            {
                收   = g.Sum(x => x.本次收额 ?? 0),
                付   = g.Sum(x => x.本次付额 ?? 0),
                子单号 = g.Key
            };


            return(l.ToList());
        }
Пример #21
0
        public static TRemote funcNewRecord <TLocal, TRemote>(this Pinhua2Context context, TLocal local,
                                                              Action <TLocal> BeforeNew = null /*, Action<TRemote> AfterNew = null*/)
            where TLocal : _BaseTableMain
            where TRemote : _BaseTableMain
        {
            BeforeNew?.Invoke(local);

            Pinhua2Helper.CompleteMainOnCreate(local);
            var remote = Mapper.Map <TLocal, TRemote>(local);

            context.Entry <TRemote>(remote).State = EntityState.Added;

            //AfterNew?.Invoke(remote);
            //context.SaveChanges();
            return(remote);
        }
Пример #22
0
        public static TOriginal RecordAdd <TDto, TOriginal>(this Pinhua2Context context, TDto local,
                                                            Action <TDto> Adding = null /*, Action<TRemote> AfterNew = null*/)
            where TDto : _BaseTableMain
            where TOriginal : _BaseTableMain
        {
            Adding?.Invoke(local);

            Pinhua2Helper.CompleteMainOnCreate(local);
            var remote = StaticAutoMapper.Current.Map <TDto, TOriginal>(local);

            context.Entry <TOriginal>(remote).State = EntityState.Added;

            //AfterNew?.Invoke(remote);
            //context.SaveChanges();
            return(remote);
        }
Пример #23
0
        public static IList <view_Lq> view_库存(this Pinhua2Context context)
        {
            var l = from product in context.tb_商品表.AsNoTracking()
                    join detail in context.tb_IOD.AsNoTracking() on product.品号 equals detail.品号 into detailTemp
                    from lDetail in detailTemp.DefaultIfEmpty()
                    group new { product, lDetail } by new { product.品号, lDetail.库位 } into g
                select new view_Lq
            {
                品号 = g.Key.品号,
                库位 = g.Key.库位,
                //库存 = g.Sum(p => p.lDetail == null ? 0 : p.lDetail.收) - g.Sum(p => p.lDetail == null ? 0 : p.lDetail.发)
                库存 = g.Sum(p => p.lDetail == null ? 0 : p.lDetail.收 ?? 0 - p.lDetail.发 ?? 0)
            };

            return(l.ToList());
        }
Пример #24
0
        static public List <SelectListItem> DropdownOptions_客户(this Pinhua2Context _context)
        {
            var customers = _context.tb_往来表.AsNoTracking();

            var customerSelectList = new List <SelectListItem>();

            foreach (var customer in customers)
            {
                customerSelectList.Add(new SelectListItem
                {
                    Text  = customer.往来号 + " - " + customer.简称,
                    Value = customer.往来号
                });
            }
            return(customerSelectList);
        }
Пример #25
0
        public static IList <view_ShopPrice> view_门店报价(this Pinhua2Context context)
        {
            var l = from p in context.tb_商品表.AsNoTracking()
                    select new view_ShopPrice
            {
                品名  = p.品名,
                品号  = p.品号,
                别名  = p.别名,
                型号  = p.型号,
                采购价 = p.采购价,
                批发价 = p.采购价 + 15,
                零售价 = p.采购价 + 15 + 20
            };


            return(l.ToList());
        }
Пример #26
0
        public static IList <view_AllOrdersPay> view_全部订单收付(this Pinhua2Context context)
        {
            var l = from m in view_全部订单(context)
                    join x in view_订单收付(context) on m.子单号 equals x.子单号 into vTemp
                    from v in vTemp.DefaultIfEmpty()
                    select new view_AllOrdersPay
            {
                RecordId = m.RecordId,
                业务类型     = m.业务类型,
                交期       = m.交期,
                仓        = m.仓,
                制单       = m.制单,
                单价       = m.单价,
                单位       = m.单位,
                单号       = m.单号,
                品号       = m.品号,
                数量       = m.数量,
                品名       = m.品名,
                品牌       = m.品牌,
                备注       = m.备注,
                子单号      = m.子单号,
                往来       = m.往来,
                往来号      = m.往来号,
                个数       = m.个数,
                型号       = m.型号,
                日期       = m.日期,
                状态       = m.状态,
                税率       = m.税率,
                规格       = m.规格,
                长度       = m.长度,
                宽度       = m.宽度,
                高度       = m.高度,
                面厚       = m.面厚,
                质保       = m.质保,
                金额       = m.金额,
                已收       = v?.收 ?? 0,
                待收       = (m.金额 ?? 0) - (v?.收 ?? 0),
                已付       = v?.付 ?? 0,
                待付       = (m.金额 ?? 0) - (v?.付 ?? 0),
            };

            return(l.ToList());
        }
Пример #27
0
        static public IList <SelectListItem> SelectList_地板计量单位(this Pinhua2Context _context)
        {
            var dic = from p in _context.tb_字典表.AsNoTracking()
                      join d in _context.tb_字典表D.AsNoTracking() on p.RecordId equals d.RecordId
                      where p.字典名 == "地板计量单位"
                      select d;

            var unitSelectList = new List <SelectListItem>();

            foreach (var item in dic)
            {
                unitSelectList.Add(new SelectListItem
                {
                    Text  = item.称,
                    Value = item.称
                });
            }
            return(unitSelectList);
        }
        public static JArray Get销售报价商品(this Pinhua2Context context)
        {
            var set = from m in context.tb_报价表.AsNoTracking()
                      join d in context.tb_报价表D.AsNoTracking() on m.RecordId equals d.RecordId
                      join x in context.tb_商品表.AsNoTracking() on d.品号 equals x.品号
                      where m.业务类型 == "销售报价"
                      select new
            {
                报 = d,
                品 = x
            };
            JArray jsonArray = new JArray();

            foreach (var item in set)
            {
                jsonArray.Add(Pinhua2Helper.JObjectFromMerge(item.报, item.品));
            }

            return(jsonArray);
        }
Пример #29
0
        public static IList <view_AllOrders2Pay> view_全部订单收付2(this Pinhua2Context context)
        {
            var l = from m in view_全部订单2(context)
                    join x in view_订单收付(context) on m.Order.子单号 equals x.子单号 into vTemp
                    from v in vTemp.DefaultIfEmpty()
                    select new view_AllOrders2Pay
            {
                Order   = m.Order,
                Product = m.Product,
                Pay     = new view_AllOrders2Pay_pay
                {
                    已收 = v?.收 ?? 0,
                    待收 = (m?.Order?.金额 ?? 0) - (v?.收 ?? 0),
                    已付 = v?.付 ?? 0,
                    待付 = (m?.Order?.金额 ?? 0) - (v?.付 ?? 0),
                }
            };

            return(l.ToList());
        }
Пример #30
0
        public static IList <view_AllOrders2IO> view_全部订单收发2(this Pinhua2Context context)
        {
            var l = from m in view_全部订单2(context)
                    join x in view_订单收发(context) on m.Order.子单号 equals x.子单号 into vTemp
                    from v in vTemp.DefaultIfEmpty()
                    select new view_AllOrders2IO
            {
                Order   = m.Order,
                Product = m.Product,
                IO      = new view_AllOrders2IO_io
                {
                    已收 = v?.收 ?? 0,
                    待收 = (m?.Order?.个数 ?? 0) - (v?.收 ?? 0),
                    已发 = v?.发 ?? 0,
                    待发 = (m?.Order?.个数 ?? 0) - (v?.发 ?? 0),
                }
            };

            return(l.ToList());
        }