/// <summary> /// Update production order /// </summary> private void UpdateBOM(string itemCodeFg, string version, ref bool bubbleEvent) { SAPbobsCOM.ProductTrees oBom = (SAPbobsCOM.ProductTrees)oSBOCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oProductTrees); try { oBom.GetByKey(itemCodeFg); oBom.UserFields.Fields.Item("U_SOL_BOMVERNO").Value = version; if (oBom.Update() != 0) { int ErrCod = oSBOCompany.GetLastErrorCode(); string ErrMsg = oSBOCompany.GetLastErrorDescription(); oSBOApplication.MessageBox(ErrCod.ToString() + " : " + ErrMsg); } } catch (Exception ex) { bubbleEvent = false; oSBOApplication.MessageBox(ex.Message); } finally { Utils.releaseObject(oBom); } }
/// <summary> /// Update bom masal /// </summary> private void UpdateBomVer_Update(string formUID, ref ItemEvent pVal, ref bool bubbleEvent) { if (bubbleEvent) { if (pVal.BeforeAction == false && pVal.ActionSuccess == true) { SAPbobsCOM.GeneralService oGeneralService; SAPbobsCOM.GeneralData oGeneralData; SAPbobsCOM.CompanyService sCmp; SAPbobsCOM.ProductTrees oBom = (SAPbobsCOM.ProductTrees)oSBOCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oProductTrees); sCmp = oSBOCompany.GetCompanyService(); SAPbobsCOM.GeneralData oGenDataUpdtBom; SAPbobsCOM.GeneralService oGenServiceUpdtBom; Form oForm = oSBOApplication.Forms.Item(formUID); DBDataSource dtSource = null; dtSource = oForm.DataSources.DBDataSources.Item("@SOL_UPBOMVER_H"); string lastDate = dtSource.GetValue("U_SOL_UPDATE", 0); string lastTime = Convert.ToString(int.Parse(dtSource.GetValue("U_SOL_UPTIME", 0).Replace(":", ""))); // Get a handle to the UDO oGeneralService = sCmp.GetGeneralService("BOMVER"); Recordset oRecBomSap = oSBOCompany.GetBusinessObject(BoObjectTypes.BoRecordset); Recordset oRecBomVer = oSBOCompany.GetBusinessObject(BoObjectTypes.BoRecordset); oForm.Freeze(true); try { if (!oSBOCompany.InTransaction) { oSBOCompany.StartTransaction(); } string query = string.Empty; if (oSBOCompany.DbServerType == BoDataServerTypes.dst_HANADB) { query = "CALL SOL_SP_UPDTBOM_GETDIFFBOM('" + lastDate + "', '" + lastTime + "')"; } oRecBomSap.DoQuery(query); if (oRecBomSap.RecordCount > 0) { int progress = 0; oProgressBar = oSBOApplication.StatusBar.CreateProgressBar("Update BOM", oRecBomSap.RecordCount, true); oProgressBar.Text = "Update BOM..."; for (int i = 1; i <= oRecBomSap.RecordCount; i++) { // Get BOM SAP and insert to BOM Version string itemCodeFG = oRecBomSap.Fields.Item("Code").Value; string version = oRecBomSap.Fields.Item("Version").Value; if (oSBOCompany.DbServerType == BoDataServerTypes.dst_HANADB) { query = "CALL SOL_SP_UPDTBOM_GETBOM('" + itemCodeFG + "')"; } oRecBomVer.DoQuery(query); if (oRecBomVer.RecordCount > 0) { oGeneralData = oGeneralService.GetDataInterface(SAPbobsCOM.GeneralServiceDataInterfaces.gsGeneralData); if (!string.IsNullOrEmpty(version)) // jika bom sudah ada di bom version { // non aktivin bom version InactiveBomVer(itemCodeFG); // update aktivin bom version sesuai versinya ActivateBomVer(version); // update versi di bom sap UpdateBOM(itemCodeFG, version, ref bubbleEvent); } else // jika bom belum ada di bom version { // non aktivin bom version InactiveBomVer(itemCodeFG); // add bom version string versionCode = string.Empty; AddBomVer(ref oRecBomVer, ref oGeneralService, ref bubbleEvent, out versionCode); // update versi di bom sap UpdateBOM(itemCodeFG, versionCode, ref bubbleEvent); } } progress += 1; oProgressBar.Value = progress; oRecBomSap.MoveNext(); } // Save ke log update bom version #region Save ke log update bom version oGenServiceUpdtBom = sCmp.GetGeneralService("UPBOMVER"); oGenDataUpdtBom = oGenServiceUpdtBom.GetDataInterface(SAPbobsCOM.GeneralServiceDataInterfaces.gsGeneralData); oGenDataUpdtBom.SetProperty("Code", GenerateCode()); oGenDataUpdtBom.SetProperty("U_SOL_UPDATE", DateTime.Now.Date.ToShortDateString()); oGenDataUpdtBom.SetProperty("U_SOL_UPTIME", DateTime.Now.ToString("HH:mm:ss", CultureInfo.InvariantCulture)); oGenServiceUpdtBom.Add(oGenDataUpdtBom); #endregion oProgressBar.Stop(); TemplateLoad(ref oForm); oSBOApplication.StatusBar.SetText("Update BOM Success", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success); } else { oSBOApplication.MessageBox("Tidak ada data yang dapat di update."); } oSBOCompany.EndTransaction(SAPbobsCOM.BoWfTransOpt.wf_Commit); } catch (Exception ex) { bubbleEvent = false; oSBOApplication.MessageBox(ex.Message); oSBOCompany.EndTransaction(SAPbobsCOM.BoWfTransOpt.wf_RollBack); } finally { if (oProgressBar != null) { oProgressBar.Stop(); Utils.releaseObject(oProgressBar); } if (oForm != null) { oForm.Freeze(false); } Utils.releaseObject(oRecBomSap); Utils.releaseObject(oRecBomVer); Utils.releaseObject(oGeneralService); } } } }