public Response ImportToPurchaseOrder(string token, [FromBody] MenuOrderHead param)
        {
            Response response = new Response();

            if (string.IsNullOrEmpty(token) || !token.Equals(_token))
            {
                response.code    = "404";
                response.message = "Invild token";
            }
            else
            {
                int result = PurchaseOrderHelper.ImportToPurchaseOrder(param);
                if (result == 0)
                {
                    response.code    = "500";
                    response.message = "No Data";
                }
                else
                {
                    response.code    = "200";
                    response.content = result;
                }
            }
            return(response);
        }
        public Response GetMenuOrderPurchase(string token, [FromBody] MenuOrderHead param)
        {
            Response response = new Response();

            if (string.IsNullOrEmpty(token) || !token.Equals(_token))
            {
                response.code    = "404";
                response.message = "Invild token";
            }
            else
            {
                MenuOrderPurchaseParam mopp = MenuOrderHelper.GetMenuOrderPurchase(param);

                if (mopp.lstMenuPart == null && mopp.lstPurchasePart == null)
                {
                    response.code    = "500";
                    response.message = "No Data";
                }
                else
                {
                    response.code    = "200";
                    response.content = mopp;
                }
            }
            return(response);
        }
        public Response GetMenuOrder(string token, [FromBody] MenuOrderHead param)
        {
            Response response = new Response();

            if (string.IsNullOrEmpty(token) || !token.Equals(_token))
            {
                response.code    = "404";
                response.message = "Invild token";
            }
            else
            {
                List <MenuOrderHead> lstMenuOrders = MenuOrderHelper.GetMenuOrder(param);

                if (lstMenuOrders == null || lstMenuOrders.Count == 0)
                {
                    response.code    = "500";
                    response.message = "No Data";
                }
                else
                {
                    response.code    = "200";
                    response.content = lstMenuOrders;
                }
            }
            return(response);
        }
 /// <summary>
 /// 读取MenuOrderPurchase
 /// </summary>
 /// <param name="param"></param>
 /// <returns></returns>
 public static MenuOrderPurchaseParam GetMenuOrderPurchase(MenuOrderHead param)
 {
     try
     {
         MenuOrderPurchaseParam mopp = weeklyFactory.GetMenuOrderPurchase(param);
         if (mopp == null)
         {
             throw new Exception("DAL.MenuOrder.WeeklyMenuFactory.GetMenuOrderPurchase()==null");
         }
         return(mopp);
     }
     catch (Exception ex)
     {
         LogHelper.WriteLog(new Log()
         {
             message = ex.Message
         }, "GetMenuOrderPurchase");
         return(null);
     }
 }
 /// <summary>
 /// 读取MenuOrder
 /// </summary>
 /// <param name="param"></param>
 /// <returns></returns>
 public static List <MenuOrderHead> GetMenuOrder(MenuOrderHead param)
 {
     try
     {
         List <MenuOrderHead> lstMenuOrders = weeklyFactory.GetMenuOrder(param);
         if (lstMenuOrders.Count == 0)
         {
             throw new Exception("DAL.MenuOrder.WeeklyMenuFactory.GetMenuOrder()==null");
         }
         return(lstMenuOrders);
     }
     catch (Exception ex)
     {
         LogHelper.WriteLog(new Log()
         {
             message = ex.Message
         }, "lstMenuOrders");
         return(null);
     }
 }
Ejemplo n.º 6
0
 /// <summary>
 /// 根据成本中心、日期导入采购单临时表
 /// </summary>
 /// <param name="param"></param>
 /// <returns></returns>
 public static int ImportToPurchaseOrder(MenuOrderHead param)
 {
     try
     {
         if (param == null)
         {
             throw new Exception("param is null");
         }
         int result = factory.ImportToPurchaseOrder(param);
         if (result == 0)
         {
             throw new Exception("DAL.Purchase.PurchaseOrderFactory.ImportToPurchaseOrder()==null");
         }
         return(result);
     }
     catch (Exception ex)
     {
         LogHelper.WriteLog(new Log()
         {
             message = ex.Message
         }, "ImportToPurchaseOrder");
         return(0);
     }
 }
        private List <PurchaseOrderLine> GetAllPurchaseOrderLine(MenuOrderHead param)
        {
            List <PurchaseOrderLine> lstPol = new List <PurchaseOrderLine>();
            string strSql     = string.Empty;
            string strSqlLine = " SELECT L.ITEMCODE " +
                                " , L.ITEMNAME " +
                                " , L.ITEMDESC " +
                                " , L.ITEMTYPE " +
                                " , L.BOMQTY " +
                                " , L.ACTQTY " +
                                " , L.REMARK " +
                                " , L.REQUIREDQTY " +
                                " , L.SUPPLIERCODE " +
                                " , L.SUPPLIERNAME " +
                                " , L.CONVERSIONUNIT " +
                                " , L.CONVERSIONRATE " +
                                " , L.PURCHASEPRICE " +
                                " , L.PURCHASEUNIT " +
                                " , L.PURCHASETAX " +
                                " , H.SOITEMGUID " +
                                " , CONVERT(VARCHAR(100), H.REQUIREDDATE, 23) AS HEADREQUIREDDATE " +
                                " , CONVERT(VARCHAR(100), ISNULL(L.REQUIREDDATE, H.REQUIREDDATE), 23) AS REQUIREDDATE " +
                                " , CONVERT(VARCHAR(100), L.REQUIREDDATE, 23) AS WORKREQUIREDDATE " +
                                " , L.ADJFLAG " +
                                " FROM MENUORDERLINE AS L (NOLOCK) " +
                                " INNER JOIN MENUORDERHEAD AS H (NOLOCK) " +
                                " ON L.HEADGUID = H.HEADGUID " +
                                " AND H.DELETEUSER IS NULL " +
                                " AND L.DELETEUSER IS NULL  " +
                                " WHERE H.COSTCENTERCODE = '{0}' " +
                                " AND L.REQUIREDQTY <> 0 ";

            string strCond1 = "      AND H.REQUIREDDATE >= '{1}' ";

            string strCond2 = "      AND ( H.REQUIREDDATE >= '{1}' " +
                              " OR H.REQUIREDDATE IN {2} ) ";

            if (param.lstRequiredDate != null && param.lstRequiredDate.Any())
            {
                // 取得HeadGuid集合字符串
                string strRequiredDate = "('" + string.Join("','", param.lstRequiredDate.ToArray()) + "')";
                strSql = string.Format((strSqlLine + strCond2), param.costCenterCode, param.requiredDate, strRequiredDate);
            }
            else
            {
                strSql = string.Format((strSqlLine + strCond1), param.costCenterCode, param.requiredDate);
            }

            List <MenuOrderLine> lstMenuOrderLine = SqlServerHelper.GetEntityList <MenuOrderLine>(SqlServerHelper.salesorderConn(), strSql);

            if (lstMenuOrderLine == null || !lstMenuOrderLine.Any())
            {
                return(lstPol);
            }

            //lstMenuOrderLine.RemoveAll(r => "adj".Equals(r.adjFlag) && r.requiredQty == 0);

            #region RequiredDate、供应商相关信息调整
            MenuOrderLine mol = new MenuOrderLine();

            lstMenuOrderLine = lstMenuOrderLine.GroupBy(q => new { q.itemCode, q.requiredDate })
                               .SelectMany(q =>
            {
                MenuOrderLine firstLine = q.OrderBy(p => p.headRequiredDate).FirstOrDefault();
                return(q.Select(p =>
                {
                    p.supplierCode = firstLine.supplierCode;
                    p.supplierName = firstLine.supplierName;
                    p.purchasePrice = firstLine.purchasePrice;
                    p.purchaseTax = firstLine.purchaseTax;
                    p.remark = q.OrderByDescending(r => r.remark).FirstOrDefault().remark;
                    return p;
                }));
            }).ToList();

            #endregion

            // 将remark有值的往前放
            //lstMenuOrderLine = lstMenuOrderLine.OrderBy(r => r.requiredDate).OrderBy(r => r.itemCode).OrderByDescending(r => r.remark).ToList();

            // 按itemCodew
            lstPol = (from line in lstMenuOrderLine
                      group line by new { line.requiredDate, line.itemCode } into lqLine
                      let firstLine = lqLine.FirstOrDefault()
                                      let requiredQty = (decimal)lqLine.Sum(r => r.requiredQty)
                                                        select new PurchaseOrderLine
            {
                orderDate = firstLine.requiredDate,
                itemCode = firstLine.itemCode,
                itemDescription = firstLine.itemName,
                costCenter = param.costCenterCode,
                supplierCode = firstLine.supplierCode,
                unit = firstLine.purchaseUnit,
                remark = firstLine.remark,
                price = firstLine.purchasePrice,
                qty = requiredQty,
                totalPrice = Math.Round(firstLine.purchasePrice * (1 + firstLine.purchaseTax), 6)
            } into lines
                      select lines).ToList();

            return(lstPol);
        }
        /// <summary>
        /// 根据成本中心、日期导入采购单临时表
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public int ImportToPurchaseOrder(MenuOrderHead param)
        {
            PurchaseOrderHead po = new PurchaseOrderHead();

            // 根据日期取得所有的采购单行项
            List <PurchaseOrderLine> lstAllLines = GetAllPurchaseOrderLine(param);
            PurchaseOrderHead        poParam     = new PurchaseOrderHead();

            // 取得DBCODE
            string strSqlDBCode = " SELECT TOP 1 " +
                                  " DBNAME " +
                                  " , WAREHOUSECODE " +
                                  " FROM CCMAST (NOLOCK)" +
                                  " WHERE COSTCENTERCODE = '{0}' ";
            CCWhs ccwhs = SqlServerHelper.GetEntity <CCWhs>(SqlServerHelper.salesorderConn(), string.Format(strSqlDBCode, param.costCenterCode));

            // 根据条件取得当天已存在的采购单行项(待比对)
            poParam.orderDate      = param.requiredDate;
            poParam.costCenterCode = param.costCenterCode;
            poParam.warehouseCode  = ccwhs.warehouseCode;
            poParam.dbCode         = ccwhs.dbName;

            List <PurchaseOrderLine> lstCurLines = new List <PurchaseOrderLine>();

            // 取得既有的采购订单数据
            lstCurLines = GetPurchaseOrderLine(poParam);

            // 取得所有修改和新增的记录
            if (lstCurLines != null && lstCurLines.Count > 0)
            {
                // Menu连接PO取得需要新增和修改的部分
                po.lstPurchaseOrderLine = lstAllLines.GroupJoin(lstCurLines,
                                                                all => new { all.supplierCode, all.orderDate }, //供应商和订单日期匹配
                                                                cur => new { cur.supplierCode, cur.orderDate },
                                                                (all, cur) => new { all, cur })
                                          .Where(q => q.cur == null || !q.cur.Any() ||
                                                 !q.cur.Where(p => p.itemCode == q.all.itemCode &&
                                                              (p.remark == null ? string.Empty : p.remark) == (q.all.remark == null ? string.Empty : q.all.remark) &&
                                                              p.qty == q.all.qty).Any())
                                          .Select(q =>
                {
                    if (q.cur == null || !q.cur.Any())
                    {
                        return(q.all);
                    }
                    // headGuid
                    q.all.headGuid = q.cur.FirstOrDefault().headGuid;

                    var tmp = q.cur.Where(p => p.itemCode == q.all.itemCode);
                    if (tmp.Any())     //供应商,订单日,item 匹配
                    // lineGuid
                    {
                        q.all.lineGuid = tmp.FirstOrDefault().lineGuid;
                    }

                    return(q.all);
                }).ToList();

                // PO连接Menu取得需要删除的部分
                po.lstPurchaseOrderLine = po.lstPurchaseOrderLine.Concat(lstCurLines.GroupJoin(lstAllLines,
                                                                                               cur => new { cur.supplierCode, cur.orderDate },
                                                                                               all => new { all.supplierCode, all.orderDate },
                                                                                               (cur, all) => new { cur, all })
                                                                         .Where(q => q.all == null || !q.all.Any() ||
                                                                                !q.all.Where(p => p.itemCode == q.cur.itemCode).Any())
                                                                         .Select(q =>
                {
                    // Head DelFlag
                    if (q.all == null || !q.all.Any())
                    {
                        q.cur.delFlag = true;
                        return(q.cur);
                    }
                    // Line DelFlag
                    var tmp = q.all.Where(r => r.itemCode == q.cur.itemCode);
                    if (!tmp.Any())
                    {
                        q.cur.delFlag = true;
                    }
                    return(q.cur);
                }).Where(r => r.delFlag)).ToList();
            }
            else
            {
                po.lstPurchaseOrderLine = lstAllLines;
            }
            po.dbCode         = poParam.dbCode;
            po.costCenterCode = poParam.costCenterCode;
            po.warehouseCode  = poParam.warehouseCode;
            po.userId         = param.createUser;
            po.employee       = "1";// (new SOAccount.AccountFactory()).getEmployeeId(param.createUser);

            return(SavePurchaseOrder(po));
        }