Mal armado de filtro de validación

Inicio Foros Foro principal Desarrolladores Mal armado de filtro de validación

  • Este debate está vacío.
Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Autor
    Entradas
  • #32747
    Carranza Carlos
    Participante

    Quiero hacer que los vendedores sólo puedan ver a sus clientes, en la ventana de Entidades Comerciales.
    Para ello creé un nuevo diagrama de árbol con las ventanas que ellos verían.
    A su vez en el perfil de dicho diagrama, le dí acceso sólo a ciertas pestañas de la ventana de entidades comerciales (así no ven ni empleados ni proveedores).
    Por último, en la primera pestaña, agregué un filtro de datos (regla de validación) para hacer un filtro en el sql que recupera los datos.
    El filtro agregado es : “IsEmployee=’N’ AND IsVendor=’N’ AND SalesRep_ID=@#AD_User_ID@”
    Hasta el acceso a las pestañas todo funciona perfecto.
    El problema es que, cuando arma el Where del select que recupera los datos de la tabla, le agrega un AND, entre el WHERE y el primer campo del filtro :SELECT C_BPartner_ID,AD_ComponentObjectUID,CreditSituation,SO_Description,ReferenceNo,program_amt_used,min_order_qty,NAICS,program_amt,POReference,Goal,AD_OrgBP_ID,Rating,ShareOfCustomer,ShelfLifeMinPct,UpdateBalance,NumberEmployees,DocumentCopies,FlatDiscount,SO_CreditLimit,CreditMinimumAmt,SO_CreditUsed,ActualLifeTimeValue,TotalOpenBalance,EndHolidays,EndHolidays2,StartHolidays,StartHolidays2,C_Location_ID,FreightCostRule,DeliveryRule,InvoiceRule,CustomerType,IsCompoundtax,PaymentRule,SecondaryCreditStatus,DiscountContext,DeliveryViaRule,SOCreditStatus,PaymentRulePO,BPartner_Parent_ID,SalesRep_ID,PO_PaymentTerm_ID,PO_PriceList_ID,PO_DiscountSchema_ID,AD_Language,Invoice_PrintFormat_ID,M_DiscountSchema_ID,IsSummary,IsSalesRep,C_InvoiceSchedule_ID,C_PaymentTerm_ID,C_Greeting_ID,M_PriceList_ID,C_Dunning_ID,C_JobCategory_ID,isiso,IsTaxExempt,M_Shipper_ID,C_POSPaymentMedium_ID,SendEMail,IsGroupInvoices,AutomaticCreditNotes,IsOneTime,IsDiscountPrinted,AD_Client_ID,AD_Org_ID,Value,Name,Name2,Description,C_Categoria_Iva_ID,TaxID,TaxIdType,IIBB,IsActive,C_BP_Group_ID,URL,IsProspect,PotentialLifeTimeValue,AcqusitionCost,SalesVolume,FirstSale,IsCustomer,IsVendor,IsEmployee,CopyFrom,Created,CreatedBy,Updated,UpdatedBy FROM C_BPartner WHERE AND IsEmployee=’N’ AND IsVendor=’N’ AND SalesRep_ID=1010783

    Por lo tanto la consulta falla y no trae ningún dato.
    Ni en MTab, ni en MTable he podido encontrar dónde le suma el bendito AND (en el campo code de la tabla AD_Val_Rule, está sin el AND).

    Creo que es un error de programación. No debería agregarlo antes de armar el sql final (MTable). Allí encontré que primero pregunta si tenía antes algo para agregar un AND, pero este filtro ya viene armado y no he podido encontrar donde.

    Si alguien me puede dar una mano y decirme dónde toma lo que está en AD_Val_Rule.code y le agrega el AND, estaré agradecido.

    #38548
    Carranza Carlos
    Participante

    Lo encontré y solucioné.
    En la clase base/src/org/OpenXpertya/model/MTabVO, en el método loadTabDetails, modifica vo.WhereClause agregándole lo que tenga roleTabWhere (si este valor contiene algo).

    Instrucción anterior : vo.WhereClause += ” AND ” + roleTabWhere;
    Nueva instrucción : vo.WhereClause += ” ” + roleTabWhere;

    No descubrí que me diera ningún error, después del cambio.

    #38551
    Saulo Gil
    Miembro

    Este es un problema conocido, aunque no se si se han cargado tickets al respecto.

    Un workaround fácil para esto es agregar 1=1 en la cláusula WHERE de la tabla. Creo que hay uno o dos posts sobre este tema en el foro.

Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Debes estar registrado para responder a este debate.