static void SBO_Application_ItemEvent(string FormUID, ref SAPbouiCOM.ItemEvent pVal, out bool BubbleEvent)
        {
            BubbleEvent = true;

            SAPbouiCOM.Form      oForm      = null;
            SAPbouiCOM.EditText  oEdit      = null;
            SAPbouiCOM.DataTable oDataTable = null;

            try
            {
                // ------------------------------------------------------------------------------------------------------------------------------------------------
                //   ESTOS EVENTO MANEJA LA CONDICION MODAL DE LAS PANTALLAS DONDE ReportType = "Modal"
                // ------------------------------------------------------------------------------------------------------------------------------------------------
                if (((pVal.EventType == SAPbouiCOM.BoEventTypes.et_FORM_VISIBLE) &&
                     (pVal.BeforeAction == false)))
                {
                    try
                    {
                        oForm = Application.SBO_Application.Forms.Item(pVal.FormUID);
                        if ((oForm.ReportType == "Modal"))
                        {
                            NModal.esPantallaModal = true;
                            NModal.IDPantallaModal = pVal.FormUID;
                        }
                    }
                    catch (Exception) { }
                }

                if (NModal.esPantallaModal &&
                    pVal.FormUID != NModal.IDPantallaModal &&
                    NModal.IDPantallaModal.Trim().Length > 0 &&
                    (pVal.EventType == SAPbouiCOM.BoEventTypes.et_FORM_ACTIVATE ||
                     pVal.EventType == SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED ||
                     pVal.EventType == SAPbouiCOM.BoEventTypes.et_MATRIX_LINK_PRESSED ||
                     pVal.EventType == SAPbouiCOM.BoEventTypes.et_GOT_FOCUS ||
                     pVal.EventType == SAPbouiCOM.BoEventTypes.et_FORM_RESIZE ||
                     pVal.EventType == SAPbouiCOM.BoEventTypes.et_VALIDATE ||
                     pVal.EventType == SAPbouiCOM.BoEventTypes.et_CLICK))
                {
                    try
                    {
                        //  Selecciona la pantalla modal
                        BubbleEvent = false;
                        oForm       = Application.SBO_Application.Forms.Item(NModal.IDPantallaModal);
                        oForm.Select();
                    }
                    catch (Exception) { }
                }

                //  If the modal from is closed...
                if (((FormUID == NModal.IDPantallaModal) &&
                     ((pVal.EventType == SAPbouiCOM.BoEventTypes.et_FORM_CLOSE) &&
                      NModal.esPantallaModal)))
                {
                    NModal.esPantallaModal = false;
                    NModal.IDPantallaModal = "";
                }

                // ------------------------------------------------------------------------------------------------------------------------------------------------


                //Ordenes de Compra
                if (pVal.FormTypeEx == "142")
                {
                    OrdenCompra.OrdenCompra_ItemEvent(FormUID, ref pVal, out BubbleEvent);
                }

                //Enviar Solicitud de Compra Interna a Salida de Mercancias (Exportar Lineas y datos del Documento Base)
                if (pVal.FormTypeEx == "1470000200" && (pVal.EventType == SAPbouiCOM.BoEventTypes.et_COMBO_SELECT) && (pVal.ItemUID == "10000329"))
                {
                    SolicitudCompra.SolicitudCompra_ItemEvent(FormUID, ref pVal, out BubbleEvent);
                }

                int ObjN = Math.Abs(Convert.ToInt32(pVal.FormTypeEx));
                //Bloquear o Habilitar Campos de Fechas en la ventanas de UDF en los documentos de Marketing
                if ((pVal.FormTypeEx.Substring(0, 1) == "-") && (pVal.EventType == SAPbouiCOM.BoEventTypes.et_FORM_LOAD) &&
                    pVal.BeforeAction == false)
                {
                    string[] U_Campos = { "U_MIN_FechaVenta", "U_MIN_FinMontaje", "U_MIN_FinDesarr", "U_MIN_FinProduccion", "U_MIN_IniDespacho", "U_MIN_IniMontaje", "U_MIN_FinMontaje", "U_MIN_FechaMulta" };

                    try
                    {
                        oForm = Application.SBO_Application.Forms.Item(pVal.FormUID);

                        if (Funciones.ConsultaUsuario == false)
                        {
                            oDataTable = null;
                            try
                            {
                                oDataTable = oForm.DataSources.DataTables.Item("DT_SQL");
                            }
                            catch
                            {
                                oDataTable = oForm.DataSources.DataTables.Add("DT_SQL");
                            }
                            Funciones.IdentificarAccesoUsuario(oDataTable);
                        }

                        foreach (string element in U_Campos)
                        {
                            if (Funciones.ItemExists(oForm, element))
                            {
                                oEdit = (SAPbouiCOM.EditText)oForm.Items.Item(element).Specific;
                                oEdit.Item.Enabled = Funciones.Habilitado;
                            }
                        }
                    }
                    catch (Exception)
                    {
                        // throw;
                    }
                }
            }
            catch (Exception) { }
        }
        private void Button0_ClickBefore(object sboObject, SAPbouiCOM.SBOItemEventArg pVal, out bool BubbleEvent)
        {
            BubbleEvent = true;

            if (Button0.Item.Enabled)
            {
                try
                {
                    oForm = Application.SBO_Application.Forms.Item(pVal.FormUID);

                    if (!Funciones.DataTableExists(oForm, "DT_SQL"))
                    {
                        oForm.DataSources.DataTables.Add("DT_SQL");
                    }
                    oDataTable    = oForm.DataSources.DataTables.Item("DT_SQL");
                    oDBDataSource = oForm.DataSources.DBDataSources.Item("OVPM");
                    string sDocNum   = oDBDataSource.GetValue("DocNum", oDBDataSource.Offset).ToString();
                    string sDocEntry = oDBDataSource.GetValue("DocEntry", 0) == "" ? "0" : (oDBDataSource.GetValue("DocEntry", 0));
                    string sCardCode = oDBDataSource.GetValue("CardCode", oDBDataSource.Offset).ToString();
                    double dTrsfrSum = Funciones.GetDoubleFromString(oDBDataSource.GetValue("TrsfrSum", oDBDataSource.Offset).ToString());
                    double dDocTotal = Funciones.GetDoubleFromString(oDBDataSource.GetValue("DocTotal", oDBDataSource.Offset).ToString());

                    //PARA AUTORIZAR CHEQUES
                    double dCheckSum   = Funciones.GetDoubleFromString(oDBDataSource.GetValue("CheckSum", oDBDataSource.Offset).ToString());
                    string sCheckAutor = oDBDataSource.GetValue("U_Cheque_Autor", oDBDataSource.Offset).ToString();


                    if (sCardCode.Trim().Length != 0 && dDocTotal > 0)
                    {
                        string sAprovved = "0";

                        if (dTrsfrSum == 0)
                        {
                            sAprovved = "1";
                        }
                        else
                        {
                            sAprovved = "0";
                        }

                        //PARA AUTORIZAR CHEQUES
                        if (dCheckSum > 0 && sCheckAutor.Trim() == "Si")
                        {
                            sAprovved = "0";
                        }

                        oDataTable = NTablaAutoriza.BuscarDatosAutorizacion(oDataTable, "46", sDocNum);
                        if (!oDataTable.IsEmpty)
                        {
                            for (int i = 0; i <= oDataTable.Rows.Count - 1; i++)
                            {
                                string sCodeUDO = oDataTable.GetValue("Code", i).ToString();
                                NTablaAutoriza.EliminarDatosAutorizacion(sCodeUDO);
                            }
                        }


                        NTablaAutoriza.InsertarDatosAutorizacion("46",
                                                                 sDocEntry,
                                                                 sDocNum,
                                                                 sAprovved,
                                                                 "",
                                                                 Convert.ToString(Program.oCompany.UserSignature),
                                                                 DateTime.Now.ToString("MMM dd yyyy h:ss tt"));
                    }
                }
                catch (Exception) { }
            }
        }