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) { }
            }
        }
        public static void Comparar_Lineas_Solicitud(string FormID)
        {
            try
            {
                oForm      = oForm = Application.SBO_Application.Forms.Item(FormID);
                oDataTable = oForm.DataSources.DataTables.Item("DT_SQL");
                oMatrix    = (SAPbouiCOM.Matrix)oForm.Items.Item("38").Specific;
                string Codigo = ((SAPbouiCOM.EditText)oMatrix.Columns.Item("1").Cells.Item(1).Specific).Value;
                SAPbouiCOM.DBDataSource source = oForm.DataSources.DBDataSources.Item("POR1");

                int    nNumLineas      = 0;
                int    nDiferente      = 0;
                string iBaseEntry      = "0";
                string iBaseEntryAnt   = "0";
                string iBaseLine       = "0";
                string sBaseType       = "-1";
                string sItemCode       = "";
                string sDscription     = "";
                string dQuantity       = "";
                string dPrice          = "";
                string dLineTotal      = "";
                string sql             = "";
                string sAutorizador    = "";
                string sDocEntry       = "";
                string sDocNum         = "";
                string sDocTotal       = "";
                string sVatSum         = "";
                string sDiscSum        = "";
                string sBrutoSolicitud = "";
                string sUserSign       = "";


                for (int i = 1; i < oMatrix.RowCount; i++)                                                                                                                              //for (int i = 0; i < source.Size; i++)
                {
                    sBaseType   = ((SAPbouiCOM.EditText)oMatrix.Columns.Item("43").Cells.Item(i).Specific).Value;                                                                       //(source.GetValue("BaseType", i));
                    iBaseEntry  = ((SAPbouiCOM.EditText)oMatrix.Columns.Item("45").Cells.Item(i).Specific).Value;                                                                       //(source.GetValue("BaseEntry", i));
                    iBaseLine   = ((SAPbouiCOM.EditText)oMatrix.Columns.Item("46").Cells.Item(i).Specific).Value;                                                                       //(source.GetValue("BaseLine", i));
                    sItemCode   = ((SAPbouiCOM.EditText)oMatrix.Columns.Item("1").Cells.Item(i).Specific).Value;                                                                        //(source.GetValue("ItemCode", i));
                    sDscription = ((SAPbouiCOM.EditText)oMatrix.Columns.Item("3").Cells.Item(i).Specific).Value;                                                                        //(source.GetValue("Dscription", i));
                    dQuantity   = ((SAPbouiCOM.EditText)oMatrix.Columns.Item("11").Cells.Item(i).Specific).Value;                                                                       //(source.GetValue("Quantity", i));
                    dPrice      = ((SAPbouiCOM.EditText)oMatrix.Columns.Item("14").Cells.Item(i).Specific).Value.Replace(".", "|").Replace(",", ".").Replace("|", "").Replace("$", ""); //(source.GetValue("Price", i));
                    dLineTotal  = ((SAPbouiCOM.EditText)oMatrix.Columns.Item("21").Cells.Item(i).Specific).Value.Replace(".", "|").Replace(",", ".").Replace("|", "").Replace("$", ""); //(source.GetValue("LineTotal", i));

                    if (sBaseType.Trim() != "1470000113")                                                                                                                               // Verifica que las lineas provengan de una solicitud de compra
                    {
                        nDiferente = 1;
                        break;
                    }

                    if (i > 1)
                    {
                        if (iBaseEntryAnt != iBaseEntry) //Verifica que los numeros de Solicitud sean iguales para cada linea
                        {
                            nDiferente = 1;
                            break;
                        }
                    }
                    else
                    {
                        iBaseEntryAnt = iBaseEntry; // Solicitud Base de la primera linea
                    }

                    sql = @"SELECT 
                                TM.UserID,(T0.DocTotal-T0.VatSum+T0.DiscSum) as 'Bruto Solicitud'
		                    FROM 
		                        OPRQ T0 JOIN OWDD T1 ON T0.DocEntry = T1.DocEntry AND T0.ObjType = T1.ObjType
		                        LEFT JOIN (SELECT AP.WddCode,AP.UserID
			                          FROM WDD1 AP JOIN (select wddcode,MAX(StepCode) as Ultimo FROM WDD1 GROUP BY WddCode) MX ON AP.WddCode = MX.WddCode AND AP.StepCode = MX.Ultimo) TM ON T1.WddCode = TM.WddCode  
		                        JOIN PRQ1 T2 ON T0.DocEntry = T2.DocEntry 
		                    WHERE 
                                T1.Status = 'Y' AND T2.DocEntry = " + iBaseEntry.ToString().Trim() + " AND T2.LineNum = " + iBaseLine.ToString().Trim() + @"
                                AND T2.[ItemCode] = '" + sItemCode + @"'
					            AND RTRIM(LTRIM(T2.[Dscription])) = '"                     + sDscription + @"'
					            AND T2.[Quantity] = "                     + dQuantity.ToString().Trim() + @"
					            AND T2.[Price] = "                     + dPrice.ToString().Trim() + @"
					            AND T2.[LineTotal] = "                     + dLineTotal.ToString().Trim();

                    oDataTable.ExecuteQuery(sql);
                    if (!oDataTable.IsEmpty)
                    {
                        nNumLineas     += 1;
                        sAutorizador    = oDataTable.GetValue("UserID", 0).ToString();
                        sBrutoSolicitud = oDataTable.GetValue("Bruto Solicitud", 0).ToString();
                    }
                    else
                    {
                        nDiferente = 1;
                        break;
                    }
                }

                if (nNumLineas != oMatrix.RowCount - 1)//(nNumLineas != source.Size)
                {
                    nDiferente = 1;
                }

                source    = oForm.DataSources.DBDataSources.Item("OPOR");
                sDocEntry = (source.GetValue("DocEntry", 0)) == "" ? "0" : (source.GetValue("DocEntry", 0));
                sDocNum   = (source.GetValue("DocNum", 0));
                sDocTotal = (source.GetValue("DocTotal", 0));
                sVatSum   = (source.GetValue("VatSum", 0));
                sDiscSum  = (source.GetValue("DiscSum", 0));
                sUserSign = (source.GetValue("UserSign", 0)) == "" ? Convert.ToString(Program.oCompany.UserSignature) : (source.GetValue("UserSign", 0));

                //sql = "DELETE FROM [@ZAUTORI] WHERE U_ObjType = 22 AND U_DocNum = ISNULL(" + sDocNum + ",0)";
                //oDataTable.ExecuteQuery(sql);
                oDataTable = NTablaAutoriza.BuscarDatosAutorizacion(oDataTable, "22", 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("22"
                                                         , sDocEntry
                                                         , sDocNum
                                                         , nDiferente.ToString()
                                                         , sAutorizador
                                                         , sUserSign
                                                         , DateTime.Now.ToString("MMM dd yyyy h:ss tt"));
//                sql = @"	INSERT INTO [dbo].[@ZAUTORI]
//			                       ([Code]
//			                       ,[Name]
//			                       ,[U_ObjType]
//			                       ,[U_DocEntry]
//                                   ,[U_DocNum]
//			                       ,[U_Approved]
//			                       ,[U_UserPrevDoc]
//			                       ,[U_UserSing]
//			                       ,[U_CreateDate])
//		                     VALUES
//			                       ((select isnull(max(CAST([Code] as int)),0)+1 as Proximo from [dbo].[@ZAUTORI])
//			                       ,(select isnull(max(CAST([Name] as int)),0)+1 as Proximo from [dbo].[@ZAUTORI])
//			                       ,'22'
//			                       ,'" + sDocEntry + @"'
//                                   ,'" + sDocNum + @"'
//			                       ,'" + nDiferente + @"'
//			                       ,'" + sAutorizador + @"'
//			                       ,'" + sUserSign + @"'
//			                       ,CONVERT(Datetime,GETDATE()))";
//                oDataTable.ExecuteQuery(sql);
            }
            catch (Exception) {}
        }