Example #1
0
        private void LoadDropdownlistSBOMVersionQuery()
        {
            this.DropdownlistSBOMVersionQuery.Items.Clear();

            if (_sbomFacade == null)
            {
                _sbomFacade = new FacadeFactory(base.DataProvider).CreateSBOMFacade();
            }
            //object[] controls = _sbomFacade.GetSBOM(Request.Params["itemcode"].ToString(), 0, int.MaxValue);
            object[] controls = _sbomFacade.GetAllSBOMVersion(Request.Params["itemcode"].ToString().ToUpper(), GlobalVariables.CurrentOrganizations.First().OrganizationID);

            if (controls == null || controls.Length == 0)
            {
                return;
            }
            for (int i = 0; i < controls.Length; i++)
            {
                string version = ((SBOM)controls[i]).SBOMVersion;
                if (this.DropdownlistSBOMVersionQuery.Items.FindByText(version) == null)
                {
                    this.DropdownlistSBOMVersionQuery.Items.Add(version);
                }
            }

            DropdownlistSBOMVersionQuery.SelectedIndex = 0;
        }
Example #2
0
        private object GetEditObject(GridRecord row)
        {
            if (_sbomFacade == null)
            {
                _sbomFacade = new FacadeFactory(base.DataProvider).CreateSBOMFacade();
            }
            //object obj = this._sbomFacade.GetSBOM(row.Cells.FromKey("ItemCode").Text,row.Cells.FromKey("SBOMItemCode").Text,row.Cells.FromKey("SBOMSourceItemCode").Text,row.Cells.FromKey("SBOMItemQty").Text);
            DateTime effDate = DateTime.Parse(row.Items.FindItemByKey("EffectiveDate").Text);

            string version = string.Empty;

            if (this.DropdownlistSBOMVersionQuery.SelectedIndex >= 0)
            {
                version = DropdownlistSBOMVersionQuery.SelectedValue;
            }

            object obj = this._sbomFacade.GetSBOM(row.Items.FindItemByKey("ItemCode").Value.ToString(), row.Items.FindItemByKey("SBOMItemCode").Value.ToString(), row.Items.FindItemByKey("SBOMSourceItemCode").Value.ToString(), row.Items.FindItemByKey("SBOMItemQty").Value.ToString(), FormatHelper.TODateInt(effDate.Date).ToString(), GlobalVariables.CurrentOrganizations.First().OrganizationID, version);

            if (obj != null)
            {
                return((SBOM)obj);
            }

            return(null);
        }
Example #3
0
 public void SetUp()
 {
     persistBroker = new OLEDBPersistBroker("Provider=OraOLEDB.Oracle.1;Password=emes;Persist Security Info=True;User ID=emes;Data Source=sqcdemo");
     opBOMFacade   = new OPBOMFacade();
     modelFacade   = new ModelFacade();
     sbomFacade    = new SBOMFacade();
 }
Example #4
0
        protected void cmdDelete_ServerClick(object sender, System.EventArgs e)
        {
            if (_sbomFacade == null)
            {
                _sbomFacade = new FacadeFactory(base.DataProvider).CreateSBOMFacade();
            }
            ArrayList array = this.gridHelper.GetCheckedRows();

            if (array.Count > 0)
            {
                ArrayList items = new ArrayList(array.Count);

                foreach (GridRecord row in array)
                {
                    object item = this.GetEditObject(row);
                    if (item != null)
                    {
                        items.Add((SBOM)item);
                    }
                }

                this._sbomFacade.DeleteSBOM((SBOM[])items.ToArray(typeof(SBOM)));

                this.gridHelper.GridBind(this.pagerToolBar.PageIndex, this.pagerToolBar.PageSize);
                this.RequestData();
                this.buttonHelper.PageActionStatusHandle(PageActionType.Delete);
            }
        }
Example #5
0
        private void LoadGrid(object[] dataObjects)
        {
            if (this.opsLoadMetrial.Value == "0")
            {
                _DataTableLoadedPart.Clear();
            }

            int needBatchNumber = Convert.ToInt32(this.edtMoPlanQty.Value.Trim());
            int needNumber      = 0;

            int[] lotNeedNumberList = new int[dataObjects.Length];

            //计算每行发料数量
            for (int i = 0; i < dataObjects.Length; i++)
            {
                int lotSendNumber = 0;
                MaterialLotWithItemDesc materialLotWithItemDesc = (MaterialLotWithItemDesc)dataObjects[i];

                string lastItemCode = string.Empty;
                if (i > 0)
                {
                    MaterialLotWithItemDesc materialLotWithItemDescLast = (MaterialLotWithItemDesc)dataObjects[i - 1];
                    lastItemCode = materialLotWithItemDescLast.ItemCode;
                }
                if (lastItemCode != materialLotWithItemDesc.ItemCode)
                {
                    SBOMFacade SBOMFacade  = new SBOMFacade(this.DataProvider);
                    decimal    sBomItemQty = SBOMFacade.GetSbomItemQtyWithMo(materialLotWithItemDesc.ItemCode, FormatHelper.CleanString(this.edtMoCode.Value.Trim().ToUpper()));
                    needNumber = Convert.ToInt32(Math.Ceiling(needBatchNumber * sBomItemQty));
                }

                lotSendNumber        = Math.Min(materialLotWithItemDesc.LotQty, needNumber);
                lotNeedNumberList[i] = lotSendNumber;
                needNumber          -= lotSendNumber;
            }


            for (int i = 0; i < dataObjects.Length; i++)
            {
                Domain.Material.MaterialLotWithItemDesc materialLotWithItemDesc = (Domain.Material.MaterialLotWithItemDesc)dataObjects[i];

                _DataTableLoadedPart.Rows.Add(new object[] {
                    true,
                    materialLotWithItemDesc.MaterialLotNo,
                    materialLotWithItemDesc.IQCNo,
                    materialLotWithItemDesc.STLine,
                    materialLotWithItemDesc.VendorCode,
                    materialLotWithItemDesc.VendorDesc,
                    materialLotWithItemDesc.ItemCode,
                    materialLotWithItemDesc.ItemDesc,
                    materialLotWithItemDesc.CreateDate,
                    materialLotWithItemDesc.LotQty,
                    lotNeedNumberList[i],
                    materialLotWithItemDesc.OrganizationID,
                    materialLotWithItemDesc.StorageID,
                    materialLotWithItemDesc.Unit
                });
            }
        }
Example #6
0
 private int GetRowCount()
 {
     if (_sbomFacade == null)
     {
         _sbomFacade = new FacadeFactory(base.DataProvider).CreateSBOMFacade();
     }
     if (this.cbOPBOMEdit.Checked)
     {
         return(this._sbomFacade.GetUnSelectSBOMItemsCounts(FormatHelper.PKCapitalFormat(FormatHelper.CleanString(ItemCode)), OPBOMCode, OPBOMVersion, RouteCode, OPID, FormatHelper.PKCapitalFormat(FormatHelper.CleanString(this.txtSBOMItemCodeQuery.Text)), this.txtSBOMItemNameQuery.Text, this.txtSBOMSourceItemCodeQuery.Text.ToUpper()));
     }
     else
     {
         return(this._sbomFacade.GetAllSBOMItemsByItemCounts(FormatHelper.PKCapitalFormat(FormatHelper.CleanString(ItemCode)), OPBOMCode, OPBOMVersion, RouteCode, OPID, FormatHelper.PKCapitalFormat(FormatHelper.CleanString(this.txtSBOMItemCodeQuery.Text)), this.txtSBOMItemNameQuery.Text, this.txtSBOMSourceItemCodeQuery.Text.ToUpper()));
     }
 }
Example #7
0
        //检查Grid发货数量
        private bool CheckGridSendNumber()
        {
            Dictionary <string, int> sendQtyByItem = new Dictionary <string, int>();

            for (int i = 0; i < ultraGridMetrialDetial.Rows.Count; i++)
            {
                if (ultraGridMetrialDetial.Rows[i].Cells["Check"].Value.ToString().ToLower() == "true")
                {
                    string itemCode = ultraGridMetrialDetial.Rows[i].Cells["ItemCode"].Value.ToString();
                    int    lotInQty = Convert.ToInt32(ultraGridMetrialDetial.Rows[i].Cells["LotQty"].Value.ToString());
                    int    lotQty   = ultraGridMetrialDetial.Rows[i].Cells["SendQty"].Value.ToString().Trim() == string.Empty ? 0 : int.Parse(ultraGridMetrialDetial.Rows[i].Cells["SendQty"].Value.ToString().Trim());

                    if (lotInQty < lotQty)
                    {
                        ApplicationRun.GetInfoForm().Add(new UserControl.Message(MessageType.Error, "$CS_LotQty_Smaller_LotInQty $CS_MaterialLot:" + ultraGridMetrialDetial.Rows[i].Cells["MetrialLot"].Value.ToString()));
                        return(false);
                    }

                    if (lotQty <= 0)
                    {
                        ApplicationRun.GetInfoForm().Add(new UserControl.Message(MessageType.Error, "$CS_LotQty_Over_Zero $CS_MaterialLot:" + ultraGridMetrialDetial.Rows[i].Cells["MetrialLot"].Value.ToString()));
                        return(false);
                    }

                    if (!sendQtyByItem.ContainsKey(itemCode))
                    {
                        sendQtyByItem.Add(itemCode, 0);
                    }
                    sendQtyByItem[itemCode] += lotQty;
                }
            }

            SBOMFacade SBOMFacade = new SBOMFacade(this.DataProvider);

            foreach (KeyValuePair <string, int> par in sendQtyByItem)
            {
                decimal SbomItemQty = SBOMFacade.GetSbomItemQtyWithMo(par.Key, FormatHelper.CleanString(this.edtMoCode.Value.Trim().ToUpper()));
                int     planQty     = Convert.ToInt32(Math.Ceiling(SbomItemQty * Convert.ToInt32(this.edtMoPlanQty.Value.Trim())));

                if (par.Value > planQty)
                {
                    ApplicationRun.GetInfoForm().Add(new UserControl.Message(MessageType.Error, "$CS_OneItem_SendNumber:" + par.Value + "$CS_Not_Over_PlanQty:" + planQty + " $CS_ItemCode:" + par.Key));
                    return(false);
                }
            }

            return(true);
        }
Example #8
0
        private int GetRowCount()
        {
            if (_sbomFacade == null)
            {
                _sbomFacade = new FacadeFactory(base.DataProvider).CreateSBOMFacade();
            }

            string version = string.Empty;

            if (this.DropdownlistSBOMVersionQuery.SelectedIndex >= 0)
            {
                version = DropdownlistSBOMVersionQuery.SelectedValue;
            }

            return(this._sbomFacade.GetSBOMCounts(FormatHelper.PKCapitalFormat(FormatHelper.CleanString(this.txtItemCode.Text.Trim())), version));
        }
Example #9
0
        private object[] LoadDataSource(int inclusive, int exclusive)
        {
            if (_sbomFacade == null)
            {
                _sbomFacade = new FacadeFactory(base.DataProvider).CreateSBOMFacade();
            }

            string version = string.Empty;

            if (this.DropdownlistSBOMVersionQuery.SelectedIndex >= 0)
            {
                version = DropdownlistSBOMVersionQuery.SelectedValue;
            }

            return(this._sbomFacade.GetSBOM(FormatHelper.PKCapitalFormat(FormatHelper.CleanString(this.txtItemCode.Text.Trim())), version, inclusive, exclusive));
        }
Example #10
0
 private object[] GetNotInOPBOMItems()
 {
     if (_sbomFacade == null)
     {
         _sbomFacade = new FacadeFactory(base.DataProvider).CreateSBOMFacade();
     }
     return(this._sbomFacade.GetUnSelectSBOMItems(
                FormatHelper.PKCapitalFormat(FormatHelper.CleanString(ItemCode)),
                OPBOMCode,
                OPBOMVersion,
                RouteCode, OPID,
                FormatHelper.PKCapitalFormat(FormatHelper.CleanString(this.txtSBOMItemCodeQuery.Text)),
                this.txtSBOMItemNameQuery.Text,
                this.txtSBOMSourceItemCodeQuery.Text,
                this.Actiontype,
                0, int.MaxValue));
 }
Example #11
0
        private void ImportSBOM(object[] objs, string type, Log log)
        {
            SBOMFacade sbomFacade = new SBOMFacade(this.MESProvider);
            ArrayList  items      = new ArrayList();
            ArrayList  sboms      = new ArrayList();

            for (int j = 0; j < objs.Length; j++)
            {
                object impObj = importSchema.FillImportObject(objs[j], type);
                sboms.Add(impObj);
                items.Add((impObj as SBOM).ItemCode);
            }

            sbomFacade.DeleteSBOMWithoutTransaction((string[])items.ToArray(typeof(string)));
            sbomFacade.AddSBOMsWithoutTransaction((SBOM[])sboms.ToArray(typeof(SBOM)));

            for (int j = 0; j < objs.Length; j++)
            {
                this.ERPProvider.Delete(objs[j]);
            }
        }
Example #12
0
        private object GetEditObject(GridRecord row)
        {
            if (_sbomFacade == null)
            {
                _sbomFacade = new FacadeFactory(base.DataProvider).CreateSBOMFacade();
            }

            string itemcode    = this.ItemCode;
            string sbitemcode  = row.Items.FindItemByKey("SBOMItemCode").Value.ToString();
            string sbsitemcode = row.Items.FindItemByKey("SBOMSourceItemCode").Value.ToString();
            string sbitemqty   = row.Items.FindItemByKey("SBOMItemQty").Value.ToString();
            string effdate     = FormatHelper.TODateInt(DateTime.Parse(row.Items.FindItemByKey("EffectiveDate").Text).Date).ToString();


            object obj = this._sbomFacade.GetSBOM(itemcode, sbitemcode, sbsitemcode, sbitemqty, effdate, GlobalVariables.CurrentOrganizations.First().OrganizationID, string.Empty);

            if (obj != null)
            {
                return(obj);
            }

            return(null);
        }
Example #13
0
        private void cmdDelete_ServerClick(object sender, System.EventArgs e)
        {
            ArrayList array = this.gridHelper.GetCheckedRows();

            if (array.Count > 0)
            {
                if (_sbomFacade == null)
                {
                    _sbomFacade = new FacadeFactory(base.DataProvider).CreateSBOMFacade();
                }
                string[] itemCodes = new string[array.Count];

                for (int i = 0; i < array.Count; i++)
                {
                    itemCodes[i] = ((GridRecord)array[i]).Items.FindItemByKey("ItemCode").Value.ToString();
                }

                _sbomFacade.DeleteSBOM(itemCodes);

                this.RequestData();
                this.buttonHelper.PageActionStatusHandle(PageActionType.Delete);
            }
        }
Example #14
0
        private void edtMetrialLotNo_TxtboxKeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == '\r')
            {
                if (this.edtMoCode.Value.Trim() == string.Empty)
                {
                    ApplicationRun.GetInfoForm().AddEx("$CS_CMPleaseInputMO");
                    this.edtMoCode.TextFocus(false, true);
                    return;
                }

                if (!this.CheckSendMetrialNumber())
                {
                    this.edtMoPlanQty.TextFocus(false, true);
                    return;
                }

                if (this.edtMetrialLotNo.Value.Trim() == string.Empty)
                {
                    ApplicationRun.GetInfoForm().AddEx("$Please_Input_MaterialLot");
                    this.edtMetrialLotNo.TextFocus(false, true);
                    return;
                }

                InventoryFacade inventoryFacade = new InventoryFacade(this.DataProvider);
                object          materialLot     = inventoryFacade.GetMaterialLot(this.edtMetrialLotNo.Value.Trim().ToUpper());
                if (materialLot == null)
                {
                    ApplicationRun.GetInfoForm().Add(new UserControl.Message(MessageType.Error, "$CS_Not_Find_Metrial"));
                    this.edtMetrialLotNo.TextFocus(false, true);
                    return;
                }

                MaterialLotWithItemDesc materialLotWithItemDesc = (MaterialLotWithItemDesc)inventoryFacade.GetMaterialLotAndItemDesc(FormatHelper.CleanString(this.edtMoCode.Value.Trim().ToUpper()), this.edtMetrialLotNo.Value.Trim().ToUpper());

                if (materialLotWithItemDesc == null)
                {
                    ApplicationRun.GetInfoForm().Add(new UserControl.Message(MessageType.Error, "$MaterialLot_NOMAP_MO"));
                    this.edtMetrialLotNo.TextFocus(false, true);
                    return;
                }

                if (materialLotWithItemDesc.LotQty == 0)
                {
                    ApplicationRun.GetInfoForm().Add(new UserControl.Message(MessageType.Error, "$CS_MetrialLot_Is_Empty"));
                    this.edtMetrialLotNo.TextFocus(false, true);
                    return;
                }

                //检查物料是否存在Sbom
                SBOMFacade sboMFacade = new SBOMFacade(this.DataProvider);
                object[]   sBOMList   = sboMFacade.QuerySBOMByMoCode(this.edtMoCode.Value.Trim().ToUpper());

                if (sBOMList == null)
                {
                    ApplicationRun.GetInfoForm().Add(new UserControl.Message(MessageType.Error, "$CS_SBOMInMO_IsNot_Exist"));
                    this.edtMetrialLotNo.TextFocus(false, true);
                    return;
                }

                bool materailIsInSBOM = false;
                for (int i = 0; i < sBOMList.Length; i++)
                {
                    if (((SBOM)sBOMList[i]).SBOMItemCode.Trim().ToUpper() == materialLotWithItemDesc.ItemCode.Trim().ToUpper())
                    {
                        materailIsInSBOM = true;
                        break;
                    }
                }

                if (!materailIsInSBOM)
                {
                    ApplicationRun.GetInfoForm().Add(new UserControl.Message(MessageType.Error, "$CS_Material_Not_In_SBOM"));
                    this.edtMetrialLotNo.TextFocus(false, true);
                    return;
                }
                //end

                //检查是否需要再加载到Grid上
                bool dateHaveExist = false;

                for (int i = 0; i < ultraGridMetrialDetial.Rows.Count; i++)
                {
                    if (ultraGridMetrialDetial.Rows[i].Cells["MetrialLot"].Value.ToString().ToUpper() == materialLotWithItemDesc.MaterialLotNo.ToUpper())
                    {
                        dateHaveExist = true;
                        break;
                    }
                }

                if (!dateHaveExist)
                {
                    this.LoadGrid(new object[] { materialLotWithItemDesc });
                }
                //end

                this.edtMetrialLotNo.TextFocus(false, true);
            }
        }
Example #15
0
        public ServiceResult Run(RunMethod runMethod)
        {
            /*---------- Get WebService URL and UserName and Password -------------*/
            SAPWebServiceEntity webServiceEntity = System.Configuration.ConfigurationManager.GetSection("StandardBOMTransferConfig") as SAPWebServiceEntity;

            if (webServiceEntity == null)
            {
                return(new ServiceResult(false, "没有维护StandardBOMTransferConfig对应的Service地址", this.m_Argument.TransactionCode));
            }

            #region Begin for Prepare input Paremente
            // Prepare input parameter
            DT_MES_MATBOM_REQ standardBOMParameter = new DT_MES_MATBOM_REQ();
            standardBOMParameter.Trsactioncode = this.m_Argument.TransactionCode.ToString();
            standardBOMParameter.OrgID         = this.m_Argument.OrgID.ToString();
            if (this.m_Argument.MaterialCode.Trim().Length == 0)
            {
                standardBOMParameter.MaintainDate_B = this.m_Argument.MaintainDate_B.Date.ToString("yyyyMMdd", new System.Globalization.CultureInfo("en-US"));
                standardBOMParameter.MaintainDate_E = this.m_Argument.MaintainDate_E.Date.ToString("yyyyMMdd", new System.Globalization.CultureInfo("en-US"));
                standardBOMParameter.MaterialCode   = "";
            }
            else
            {
                standardBOMParameter.MaintainDate_B = "";
                standardBOMParameter.MaintainDate_E = "";
                standardBOMParameter.MaterialCode   = this.m_Argument.MaterialCode.Trim().ToUpper();
            }
            #endregion

            // Serialize the Input Parameter
            string xmlFilePath = SerializeUtil.SerializeFile(this.m_Argument.TransactionCode + "_Request.xml",
                                                             typeof(DT_MES_MATBOM_REQ), standardBOMParameter);

            #region For Request Log
            DBDateTime         requestDateTime = FormatHelper.GetNowDBDateTime(this.DataProvider);
            SAPDataTransferLog log             = new SAPDataTransferLog();
            TransferFacade     transferFacade  = new TransferFacade(this.DataProvider);
            log.JobID               = TransferFacade.StandardBOMTransferJobID;
            log.TransactionCode     = this.m_Argument.TransactionCode;
            log.TransactionSequence = 1;
            log.RequestDate         = requestDateTime.DBDate;
            log.RequestTime         = requestDateTime.DBTime;
            log.RequestContent      = xmlFilePath;
            log.OrganizationID      = this.m_Argument.OrgID;
            log.SendRecordCount     = 1;
            transferFacade.AddSAPDataTransferLog(log);
            #endregion

            #region Begin for Calling WebService
            // Call Web Service through StandardBOMServiceClientProxy
            DT_MES_MATBOM_RSP returnValue;
            try
            {
                StandardBOMServiceClientProxy clientProxy = new StandardBOMServiceClientProxy();
                clientProxy.RequestEncoding = Encoding.UTF8;
                clientProxy.Timeout         = InternalVariables.MS_TimeOut * 1000;
                clientProxy.Url             = webServiceEntity.Url;
                clientProxy.PreAuthenticate = true;
                System.Uri uri = new Uri(clientProxy.Url);
                clientProxy.Credentials = new NetworkCredential(webServiceEntity.UserName, webServiceEntity.Password).GetCredential(uri, "");
                returnValue             = clientProxy.MI_MES_MATBOM(standardBOMParameter);
                clientProxy.Dispose();
                clientProxy = null;

                //Serialize the output Parameter
                xmlFilePath = SerializeUtil.SerializeFile(this.m_Argument.TransactionCode + "_Response.xml",
                                                          typeof(DT_MES_MATBOM_RSP), returnValue);

                // Update Log
                DBDateTime responseDateTime = FormatHelper.GetNowDBDateTime(this.DataProvider);
                log.ResponseDate    = responseDateTime.DBDate;
                log.ResponseTime    = responseDateTime.DBTime;
                log.ResponseContent = xmlFilePath;
                transferFacade.UpdateSAPDataTransferLog(log);
            }
            catch (Exception e)
            {
                log.Result       = "Fail";
                log.ErrorMessage = e.Message;
                transferFacade.UpdateSAPDataTransferLog(log);
                return(new ServiceResult(false, e.Message, log.TransactionCode));
            }
            #endregion

            /*--- 获取Flag字段,如果FLAG字段值是DEL的话,删除该条;FLAG是空,则判断是否有该数据,有则更新,否则插入该条 ----*/
            if (string.Compare(returnValue.FLAG, "Y", true) == 0)
            {
                int sBOMCount = returnValue.ITEM.Length;

                ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.AutoCloseConnection = false;
                ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.OpenConnection();
                this.DataProvider.BeginTransaction();

                try
                {
                    SBOMFacade            sBOMFacade = new SBOMFacade(this.DataProvider);
                    SBOM                  sBOM;
                    DT_MES_MATBOM_RSPITEM sBOMObject;

                    bool needAddNew = false;
                    for (int i = 0; i < sBOMCount; i++)
                    {
                        sBOMObject = returnValue.ITEM[i];

                        if (sBOMObject.ItemCode == null || sBOMObject.ItemCode == string.Empty ||
                            sBOMObject.SBItemCode == null || sBOMObject.SBItemCode == string.Empty ||
                            sBOMObject.SBOMVer == null || sBOMObject.SBOMVer == string.Empty ||
                            sBOMObject.SBItemProject == null || sBOMObject.SBItemProject == string.Empty ||
                            sBOMObject.SBItemSeq == null || sBOMObject.SBItemSeq == string.Empty)
                        {
                            continue;
                        }

                        object oldSBOM = sBOMFacade.GetSBOM(InternalVariables.MatchItemCode(sBOMObject.ItemCode).ToUpper(),
                                                            InternalVariables.MatchItemCode(sBOMObject.SBItemCode).ToUpper(),
                                                            sBOMObject.SBOMVer, sBOMObject.SBItemProject, sBOMObject.SBItemSeq, int.Parse(standardBOMParameter.OrgID));

                        if (string.Compare(sBOMObject.FLAG, "DEL", true) == 0)  //如果FLAG字段值是DEL的,执行删除操作
                        {
                            if (oldSBOM != null)
                            {
                                sBOMFacade.DeleteSBOM(oldSBOM as SBOM);
                            }
                        }
                        else if (string.Compare(sBOMObject.FLAG, "", true) == 0) //如果FLAG字段值是空,执行Insert/Update tblsbom操作
                        {
                            if (oldSBOM == null)                                 //如果为空,则Insert tblsbom
                            {
                                sBOM = sBOMFacade.CreateSBOM();

                                sBOM.SBOMItemEffectiveDate = 20080101;
                                sBOM.SBOMWH                = "";
                                sBOM.Sequence              = sBOMFacade.GetSBOMMaxSequence(sBOM.ItemCode, sBOM.SBOMVersion);
                                sBOM.SBOMItemECN           = "";
                                sBOM.SBOMItemStatus        = "0";
                                sBOM.SBOMItemLocation      = "";
                                sBOM.SBOMItemEffectiveTime = 1;
                                sBOM.SBOMItemInvalidDate   = 29991231;
                                sBOM.SBOMItemInvalidTime   = 1;
                                sBOM.SBOMItemVersion       = "";
                                sBOM.SBOMItemControlType   = "";
                                sBOM.SBOMParentItemCode    = "";
                                sBOM.ALPGR        = "";
                                sBOM.MaintainUser = "******";
                                sBOM.EAttribute1  = "";

                                needAddNew = true;
                            }
                            else
                            {
                                sBOM = oldSBOM as SBOM;

                                needAddNew = false;
                            }

                            sBOM.ItemCode           = InternalVariables.MatchItemCode(sBOMObject.ItemCode); //tblsbom 的 PK
                            sBOM.SBOMItemCode       = InternalVariables.MatchItemCode(sBOMObject.SBItemCode);
                            sBOM.SBOMSourceItemCode = InternalVariables.MatchItemCode(sBOMObject.SBItemCode);
                            sBOM.SBOMItemQty        = decimal.Parse(sBOMObject.SBItemQTY);
                            sBOM.OrganizationID     = int.Parse(standardBOMParameter.OrgID);
                            sBOM.SBOMVersion        = sBOMObject.SBOMVer;
                            //sBOM.SBOMItemName = sBOMObject.SBItemDesc;
                            //sBOM.SBOMItemDescription = sBOMObject.SBItemDesc;
                            sBOM.SBOMItemName        = "";
                            sBOM.SBOMItemDescription = "";
                            sBOM.SBOMItemUOM         = sBOMObject.SBItemUOM;
                            //sBOM.ItemDescription = sBOMObject.ItemDesc;
                            sBOM.ItemDescription  = "";
                            sBOM.SBOMFactory      = sBOMObject.SBFactory;
                            sBOM.SBOMUsage        = sBOMObject.SBUsage;
                            sBOM.SBOMItemProject  = sBOMObject.SBItemProject;
                            sBOM.SBOMItemSequence = sBOMObject.SBItemSeq;
                            sBOM.Location         = sBOMObject.SBItemPotx1;

                            if (needAddNew)
                            {
                                sBOMFacade.AddSBOM(sBOM);
                            }
                            else
                            {
                                sBOMFacade.UpdateSBOM(sBOM);
                            }
                        }
                    }
                    this.DataProvider.CommitTransaction();
                    log.Result       = "OK";
                    log.ErrorMessage = "";
                }
                catch (Exception ex)
                {
                    this.DataProvider.RollbackTransaction();
                    // Log
                    log.Result       = "Fail";
                    log.ErrorMessage = ex.Message;
                }
                finally
                {
                    ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.CloseConnection();
                    ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.AutoCloseConnection = true;
                }

                log.ReceivedRecordCount = sBOMCount;
                DBDateTime finishedDateTime = FormatHelper.GetNowDBDateTime(this.DataProvider);
                log.FinishedDate = finishedDateTime.DBDate;
                log.FinishedTime = finishedDateTime.DBTime;
                transferFacade.UpdateSAPDataTransferLog(log);

                if (log.Result == "OK")
                {
                    return(new ServiceResult(true, "", log.TransactionCode));
                }
                else
                {
                    return(new ServiceResult(false, log.ErrorMessage, log.TransactionCode));
                }
            }
            else  //FLAG != "Y"
            {
                log.Result              = "Fail";
                log.ErrorMessage        = returnValue.message;
                log.ReceivedRecordCount = 0;
                transferFacade.UpdateSAPDataTransferLog(log);
                return(new ServiceResult(false, log.ErrorMessage, log.TransactionCode));
            }
        }