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); } }
/// <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)); }