public void SetWo(WorkOrder wo) { this._WorkOrder = wo; //this.NeedDate = wo.NeedDate.AddDays(-14); }
private void CalcWoPurchOrderLine(BindingList<woPurchOrder> woPos, Dictionary<string, float> dictWHQty, WorkOrder wo , Item item, float nQty, Item.ItemSource lineType, int bomQty, int perSeries, int constantScrap , int variableScrap) { string dictKey; float whQty = 0; float tBomQty = 0; OrderTypeScrapSetting scrapSetting = OrderTypeScrapSetting.Find(OrderTypeScrapSetting.OrderSettingType.PurchOrder, item.ItemType, wo.OrderType, session); if (lineType == Item.ItemSource.Buy && scrapSetting != null) { if (scrapSetting.ApplyLineType) lineType = scrapSetting.LineType ; if (scrapSetting.ApplyConstantScrap) constantScrap = scrapSetting.ConstantScrap; if (scrapSetting.ApplyVariableScrap) variableScrap = scrapSetting.VariableScrap; if (scrapSetting.ApplyBomQty) bomQty = scrapSetting.BomQty; } ///tBomQty = (float)Math.Round((((float)bomQty / (float)perSeries) * (1 + (variableScrap * 0.01f))), item.Unit.Decimal); tBomQty = (((float)bomQty / (float)perSeries) * (1 + (variableScrap * 0.01f))); nQty = (float)Math.Round(((nQty * tBomQty) + constantScrap), item.Unit.Decimal); if (lineType == Item.ItemSource.Make) { foreach (BomLine bLine in item.BomLines) { CalcWoPurchOrderLine(woPos, dictWHQty, wo, bLine.BomItem, nQty , bLine.LineType, bLine.Qty, bLine.PerSeries, bLine.ConstantScrap, bLine.VariableScrap); } } else if (lineType == Item.ItemSource.Buy) { woPurchOrder woPurchOrder = new woPurchOrder(session); mpPurchaseOrderLeadTime poLeadTime = mpPurchaseOrderLeadTime.Find(session, item.ItemType); if (poLeadTime != null) woPurchOrder.DefaultLeadTime = poLeadTime.LeadTime; else woPurchOrder.DefaultLeadTime = this.LeadTime; woPurchOrder.SetWo(wo); woPurchOrder.SetBomItem(item); woPurchOrder.SetBomQty(bomQty, perSeries); woPurchOrder.ConstantScrap = constantScrap; woPurchOrder.VariableScrap = variableScrap; woPurchOrder.NeedQty = nQty; if (_fromWareHouse != null) dictKey = item.ItemNo + "-" + _fromWareHouse.WarehouseName; else dictKey = item.ItemNo; woPurchOrder.CalcReadyQty(); woPurchOrder.CalcNeedQty(); if (woPurchOrder.NeedQty > 0) { if (dictWHQty.ContainsKey(dictKey)) whQty = dictWHQty[dictKey]; else { WHTotal whTotal = WHTotal.Find(woPurchOrder.BomItem, _fromWareHouse, session); if (whTotal != null) whQty = whTotal.AvailQty; else whQty = 0; dictWHQty.Add(dictKey, whQty); } if (whQty > 0) { woPurchOrder.SetAvailQty(whQty); // 2012-9-13 : 罗小姐要求更改为显示仓数, 不需要计算. /* if (woPurchOrder.NeedQty > whQty) { woPurchOrder.SetAvailQty(whQty); dictWHQty.Remove(dictKey); } else { woPurchOrder.SetAvailQty(woPurchOrder.NeedQty); dictWHQty[dictKey] = whQty - woPurchOrder.NeedQty; } */ } woPos.Add(woPurchOrder); } } }
public void ImportWorkOrder() { string woPath = "http://nwszmail/public/namwah/WorkOrders/"; string strSQL = ""; ADODB.Connection cnn = new ADODB.Connection(); ADODB.Recordset rst = new ADODB.Recordset(); Item item; WorkOrder wo; string partNo; string woNo; session.BeginTransaction(); CacheItem(); CacheWo(); ConnectDB(cnn, woPath); strSQL = "SELECT \"nw:partno\" , \"nw:partname\", \"nw:parttype\", \"nw:wo:no\", "; strSQL = strSQL + " \"nw:wo:needqty\", \"nw:wo:needdate\", \"nw:wo:ssblankuseqty\", \"nw:wo:extra\" "; strSQL = strSQL + " FROM \"" + woPath; strSQL = strSQL + "\" WHERE (\"DAV:ishidden\" = false)"; rst.Open(strSQL, cnn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockBatchOptimistic, 1); while (!rst.EOF) { partNo = rst.Fields["nw:partno"].Value.ToString(); woNo = rst.Fields["nw:wo:no"].Value.ToString(); if (dictItem.ContainsKey(partNo)) { if (dictWo.ContainsKey(woNo)) { WorkOrder oldWo = dictWo[woNo]; if (oldWo.NeedQty != float.Parse(rst.Fields["nw:wo:needqty"].Value.ToString())) { oldWo.NeedQty = float.Parse(rst.Fields["nw:wo:needqty"].Value.ToString()); oldWo.Save(); } } else { item = dictItem[partNo]; wo = new WorkOrder(session, woNo); wo.Item = item; wo.NeedDate = DateTime.Parse(rst.Fields["nw:wo:needdate"].Value.ToString()); wo.NeedQty = float.Parse(rst.Fields["nw:wo:needqty"].Value.ToString()); if (rst.Fields["nw:wo:extra"].Value.ToString() != "") wo.ExtraQty = float.Parse(rst.Fields["nw:wo:extra"].Value.ToString()); if (rst.Fields["nw:wo:ssblankuseqty"].Value.ToString() != "") wo.ssBlankUseQty = float.Parse(rst.Fields["nw:wo:ssblankuseqty"].Value.ToString()); wo.Save(); } } rst.MoveNext(); } session.CommitTransaction(); }
public static WorkOrder Create(String ItemNo, String OrderTypeName, DateTime needDate, float needQty, Session session) { WorkOrder wo = new WorkOrder(session); Item item = Item.FindItem(session, ItemNo); OrderType orderType = session.FindObject<OrderType>(new BinaryOperator("Name", OrderTypeName)); wo.Item = item; wo.OrderType = orderType; wo.NeedDate = needDate; wo.NeedQty = needQty; wo.Save(); return wo; }
public static SalesOrderLine Create(SalesOrder order, WorkOrder wo, string remark, Session session) { SalesOrderLine orderLine = new SalesOrderLine(session); orderLine.SalesOrder = order; orderLine.Item = wo.Item; if (wo.Item.CustomerItemNo == "") orderLine.CustomerItemNo = wo.Item.ItemNo; else orderLine.CustomerItemNo = wo.Item.CustomerItemNo; orderLine.CustomerItemName = wo.Item.ItemName; orderLine.CustomerPrice = wo.Item.SalesPrice; orderLine.OrderType = wo.OrderType; orderLine.PriceUnit = order.Customer.Currency; orderLine.InitNeedDate = wo.NeedDate; orderLine.NeedDate = wo.NeedDate; orderLine.NeedQty = wo.NeedQty; orderLine.WorkOrder = wo; orderLine.Save(); wo.SalesOrderLine = orderLine; wo.Save(); return orderLine; }
public void PostWorkOrder(Session session) { if (Result == ResultStatus.OK) return; if (WoNeedDate == null) { _Result = ResultStatus.Error; return; } if (OrderType == null) { _Result = ResultStatus.Error; return; } if (WoNeedQty != 0) { WorkOrder wo = new WorkOrder(session); wo.Item = this.Item; wo.NeedDate = this.WoNeedDate; wo.NeedQty = this.WoNeedQty; wo.ssBlankUseQty = this.ssBlankUseQty; wo.ExtraQty = this.WoExtraQty; wo.OrderType = OrderType; wo.SalesOrderLine = this.SalesOrderLine; wo.Save(); this._Result = ResultStatus.OK; } }