Exemple #1
0
 public void SetWo(WorkOrder wo)
 {
     this._WorkOrder = wo;
     //this.NeedDate = wo.NeedDate.AddDays(-14);
 }
Exemple #2
0
        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();
        }
Exemple #4
0
        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;
        }
Exemple #5
0
        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;
        }
Exemple #6
0
        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;
            }
        }