static void SBO_Application_FormDataEvent(ref SAPbouiCOM.BusinessObjectInfo BOInfo, out bool BubbleEvent)
        {
            BubbleEvent = true;
            SAPbouiCOM.Form oForm = Application.SBO_Application.Forms.Item(BOInfo.FormUID);
            try
            {
                if ((BOInfo.FormTypeEx == "142"))
                {
                    OrdenCompra.OrdenCompra_FormDataEvent(ref BOInfo, out BubbleEvent);
                }

                if ((BOInfo.FormTypeEx == "141"))
                {
                    FacturaProveedores.FacturaProveedores_FormDataEvent(ref BOInfo, out BubbleEvent);
                }

                int ObjN = Convert.ToInt32(BOInfo.Type);
                //Bloquear o Habilitar Campos de Fechas en la ventanas de UDF en los documentos de Marketing segun iFormularios
                if ((BOInfo.EventType == SAPbouiCOM.BoEventTypes.et_FORM_DATA_LOAD) && BOInfo.BeforeAction && Array.Exists(iFormularios, element => element == ObjN))
                {
                    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.GetForm("-" + BOInfo.FormTypeEx, 1);// Item(BOInfo.FormUID);
                        SAPbouiCOM.EditText oEdit;

                        if (Funciones.ConsultaUsuario == false)
                        {
                            SAPbouiCOM.DataTable oDataTable = null;
                            if (!Funciones.DataTableExists(oForm, "DT_SQL"))
                            {
                                oForm.DataSources.DataTables.Add("DT_SQL");
                            }
                            oDataTable = oForm.DataSources.DataTables.Item("DT_SQL");

                            Funciones.IdentificarAccesoUsuario(oDataTable);
                        }

                        foreach (string element in U_Campos)
                        {
                            if (Funciones.ItemExists(oForm, element))
                            {
                                oEdit = (SAPbouiCOM.EditText)oForm.Items.Item(element).Specific;
                                if (oEdit.Item.Enabled == Funciones.Habilitado) // Verifica si ya estan condicionados los campos para no volver a ejecutar el proceso en la pantalla activa
                                {
                                    break;
                                }
                                oEdit.Item.Enabled = Funciones.Habilitado;
                            }
                        }
                    }
                    catch (Exception) { }
                }
            }
            catch (Exception) { }
        }
        public static void OrdenCompra_ItemEvent(string FormUID, ref SAPbouiCOM.ItemEvent pVal, out bool bBubbleEvent)
        {
            bBubbleEvent = true;
            try
            {
                switch (pVal.BeforeAction)
                {
                case true:
                    //Al momento de crear la Orden de Compra, compara las lineas del documento con el documento base para verificar que estas sean identicas
                    if ((pVal.EventType == SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED) && (pVal.ItemUID == "1"))
                    {
                        try
                        {
                            oButton = (SAPbouiCOM.Button)oForm.Items.Item(pVal.ItemUID).Specific;
                            if (!Funciones.DataTableExists(oForm, "DT_SQL"))
                            {
                                oForm.DataSources.DataTables.Add("DT_SQL");
                            }
                            oDataTable = oForm.DataSources.DataTables.Item("DT_SQL");

                            if (oButton.Caption == "Crear")
                            {
                                OrdenCompra.Comparar_Lineas_Solicitud(pVal.FormUID);
                            }
                        }
                        catch (Exception) { }
                    }
                    break;

                case false:
                    //Muestra en las Ordenes de Compra (Pedidos Compras) los saldos correspondientes a los pagos relacionados realizados.
                    if (pVal.EventType == SAPbouiCOM.BoEventTypes.et_FORM_ACTIVATE)
                    {
                        if (Funciones.ItemExists(oForm, "Item_0") == true)
                        {
                            oEdit = (SAPbouiCOM.EditText)oForm.Items.Item("Item_0").Specific;
                            if (oEdit.Value.Trim().Length == 0)
                            {
                                Funciones.CargarDatosPagos(oForm);
                            }
                        }
                    }
                    break;
                }
            }
            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) { }
            }
        }