Пример #1
0
        /// <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);
            }
        }
Пример #2
0
        /// <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);
                    }
                }
            }
        }