• Alejandro Garcia Lopez
  • NEWBIE
  • 55 Points
  • Member since 2016

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 9
    Questions
  • 11
    Replies
hello, i'm trying to open a new visualforce from a button and it works, the problem is that i need to open it in a new window, not in te same page, is it possible to do that?
first i was doing this:
<button id="vpre" hidden="hidden" type="button" onClick="window.open('/apex/vistaauth?ida='{!res},'Vista Previa','width=700,height=650');">V. Previa</button>
and it work very well but i cant pass values from the controller to the new vf

now i can pass them but i cant set the new page in a new window or customize the size
public PageReference abrir()
{   
       PageReference pageRef= new PageReference('/apex/vistaauth');
       pageRef.getParameters().put('tp', tipoo);
       pageRef.setRedirect(true);        
       return pageRef;           
   }


 
hello i have a trigger with test in sandbox, i have coverage, but when i try to validate in production it shows that the coverage is 0%User-added image
tris is the trigger and the test
trigger gerente on Documento__c (after update) {
    for(Documento__c c:Trigger.new)
{
    Documento__c v=trigger.oldMap.get(c.id);
    Documento__c y=[select en_espera__c from documento__c where id=:c.Id];
    oferta__c r=[select id,fechacobro__c,etapa__c,TipoOferta__c, gerente_operativo__c from oferta__c where id=:c.oferta__c];
    Account l=[select Pendientes_Realizados__c from Account where id=:r.gerente_operativo__c];
    EtapaOferta__c x=[select EtapaActual__c from EtapaOferta__c where id=:c.EtapaOferta__c];
    if(r.TipoOferta__c!='Contado'){
    if(r.Gerente_Operativo__c!=null){
        if(r.FechaCobro__c==null){
               if(c.cerrado__c!=v.cerrado__c){
    if ((r.Etapa__c=='Expediente aprobado')||(r.Etapa__c=='Compilación expediente crediticio')||(r.Etapa__c=='Rehabilitación')
         ||(r.Etapa__c=='Cierre oferta')){
             if ((c.name=='Presupuesto de rehabilitación')||(c.name=='Fotografia del estado inicial')||(c.name=='Fotografia del estado final de la propiedad')
       ||(c.name=='CLG')||(c.name=='Predial')||(c.name=='Constancia de Crédito')
       ||(c.name=='Carta de instrucción Notarial')||(c.name=='Carta de Intrucción Revimex')||(c.name=='Proyecto de Escrituras')
       ||(c.name=='Aviso de Retención Y Firma Cliente')||(c.name=='Confirmación cobro propiedad')||(c.name=='Carta de entrega')
       ||(c.name=='Fotos de Entrega')||(c.name=='Pre-cierre')||(c.name=='Pago Activado')||(c.name=='Escrituras Registradas')
       ||(c.name=='Cierre Contabilidad')||(c.name=='Comprobante Firma Apoderado')||(c.name=='Comprobante Comisión Broker')
       ||(c.name=='Comprobante Comisión Gerente')||(c.name=='Comprobante Anticipo Comisión Gerente')||(c.name=='Pago Ventanilla Unica')
                 ||(c.name=='Comprobante de Pago Ventanilla Unica')||(c.name=='Pre-Pantalla')){
                 if(c.Cerrado__c==true)
             {
                 if(c.Iniciado__c==true){
                     if (x.EtapaActual__c ==true){
           if (c.En_Espera__c==false)
    {
        if (l.Pendientes_Realizados__c==null)
        {
        l.Pendientes_Realizados__c=0;
        }
        l.Pendientes_Realizados__c+=1;
        update l;
    }}
    }
             }}}}

if (((r.Etapa__c=='Expediente aprobado')||(r.Etapa__c=='Compilación expediente crediticio')||(r.Etapa__c=='Rehabilitación')
        ||(r.Etapa__c=='Cierre oferta'))&&((c.name=='Presupuesto de rehabilitación')
       ||(c.name=='Fotografia del estado inicial')||(c.name=='Fotografia del estado final de la propiedad')
       ||(c.name=='CLG')||(c.name=='Predial')||(c.name=='Constancia de Crédito')
       ||(c.name=='Carta de instrucción Notarial')||(c.name=='Carta de Intrucción Revimex')||(c.name=='Proyecto de Escrituras')
       ||(c.name=='Aviso de Retención Y Firma Cliente')||(c.name=='Confirmación cobro propiedad')||(c.name=='Carta de entrega')
       ||(c.name=='Fotos de Entrega')||(c.name=='Pre-cierre')||(c.name=='Pago Activado')||(c.name=='Escrituras Registradas')
       ||(c.name=='Cierre Contabilidad')||(c.name=='Comprobante Firma Apoderado')||(c.name=='Comprobante Comisión Broker')
       ||(c.name=='Comprobante Comisión Gerente')||(c.name=='Comprobante Anticipo Comisión Gerente')||(c.name=='Pago Ventanilla Unica')
       ||(c.name=='Comprobante de Pago Ventanilla Unica')||(c.name=='Pre-Pantalla'))&&(c.Cerrado__c==true)&&(c.Iniciado__c==true)
         &&(x.EtapaActual__c ==true)&&(c.En_Espera__c==true))
             {
             if((v.NumFiles_MasFilesPadre__c==0)&&(c.NumFiles_MasFilesPadre__c==1))
             {
        if (l.Pendientes_Realizados__c==null)
        {
        l.Pendientes_Realizados__c=0;
        }
        l.Pendientes_Realizados__c+=1;
        y.En_Espera__c=false;
        update y;         
        update l;
             }
             }}
    }
    }}
 
    
    
}

test 
@isTest
public class gerenteTest {
    static testMethod void gerenteTest()
    {

        etapa__c ee= new etapa__c();
        ee.name='Expediente aprobado';
        insert ee;
        DocumentoEtapa__c r=new DocumentoEtapa__c();
        r.name='Cierre Contabilidad';
        r.Etapa__c=ee.id;
        insert r;
        account a=new account();
        a.Pendientes_Realizados__c=null;
        a.name='prueba';
        insert a;
        Oferta__c fer = new Oferta__c();
        fer.FechaCobro__c=null;
        fer.FolioLlave__c='12345';
        fer.TipoOferta__c='infonavit';
        fer.gerente_operativo__c = a.id;
        fer.Etapa__c='Expediente aprobado';
        insert fer;
        etapaoferta__c et=new etapaoferta__c();
        et.oferta__c=fer.id;
        et.Etapa__c=ee.id;
        et.Estatus__c='abierta';
        insert et;
        Documento__c e = new Documento__c();
        e.Cerrado__c=false;
        e.Iniciado__c=true;
        e.name='Cierre Contabilidad';
        e.oferta__c=fer.id;
        e.DocumentoEtapa__c=r.id;
        e.EtapaOferta__c=et.id;
        e.En_Espera__c=false;
        insert e;
        e.Cerrado__c=true;
        e.En_Espera__c=true;
        update e;
    }
}

 
hello, i have done some tests for triggers with 100% of coverage but now i have a problem and i think it is because i'm using trigger.old, this is the trigger
trigger gerente on Documento__c (after update) {
    for(Documento__c p:Trigger.old){
    for(Documento__c c:Trigger.new)
{
    Documento__c y=[select en_espera__c from documento__c where id=:c.Id];
    oferta__c r=[select id,etapa__c,TipoOferta__c, gerente_operativo__c from oferta__c where id=:c.oferta__c];
    Account l=[select Pendientes_Realizados__c from Account where id=:r.gerente_operativo__c];
    EtapaOferta__c x=[select EtapaActual__c from EtapaOferta__c where id=:c.EtapaOferta__c];
    if(r.TipoOferta__c!='Contado'){
    if(r.Gerente_Operativo__c!=null){
    if(p.Cerrado__c!=c.Cerrado__c){
    if (((r.Etapa__c=='Expediente aprobado')||(r.Etapa__c=='Compilación expediente crediticio')||(r.Etapa__c=='Rehabilitación')
        ||(r.Etapa__c=='Cierre oferta'))&&((c.name=='Presupuesto de rehabilitación')
       ||(c.name=='Fotografia del estado inicial')||(c.name=='Fotografia del estado final de la propiedad')
       ||(c.name=='CLG')||(c.name=='Predial')||(c.name=='Constancia de Crédito')
       ||(c.name=='Carta de instrucción Notarial')||(c.name=='Carta de Intrucción Revimex')||(c.name=='Proyecto de Escrituras')
       ||(c.name=='Aviso de Retención Y Firma Cliente')||(c.name=='Confirmación cobro propiedad')||(c.name=='Carta de entrega')
       ||(c.name=='Fotos de Entrega')||(c.name=='Pre-cierre')||(c.name=='Pago Activado')||(c.name=='Escrituras Registradas')
       ||(c.name=='Cierre Contabilidad')||(c.name=='Comprobante Firma Apoderado')||(c.name=='Comprobante Comisión Broker')
       ||(c.name=='Comprobante Comisión Gerente')||(c.name=='Comprobante Anticipo Comisión Gerente')||(c.name=='Pago Ventanilla Unica')
       ||(c.name=='Comprobante de Pago Ventanilla Unica')||(c.name=='Pre-Pantalla'))&&(c.Cerrado__c==true)&&(c.Iniciado__c==true)
       &&(x.EtapaActual__c ==true)&&(c.En_Espera__c==false))
    {
        if (l.Pendientes_Realizados__c==null)
        {
        l.Pendientes_Realizados__c=0;
        }
        l.Pendientes_Realizados__c+=1;
        update l;
    }
    }

if (((r.Etapa__c=='Expediente aprobado')||(r.Etapa__c=='Compilación expediente crediticio')||(r.Etapa__c=='Rehabilitación')
        ||(r.Etapa__c=='Cierre oferta'))&&((c.name=='Presupuesto de rehabilitación')
       ||(c.name=='Fotografia del estado inicial')||(c.name=='Fotografia del estado final de la propiedad')
       ||(c.name=='CLG')||(c.name=='Predial')||(c.name=='Constancia de Crédito')
       ||(c.name=='Carta de instrucción Notarial')||(c.name=='Carta de Intrucción Revimex')||(c.name=='Proyecto de Escrituras')
       ||(c.name=='Aviso de Retención Y Firma Cliente')||(c.name=='Confirmación cobro propiedad')||(c.name=='Carta de entrega')
       ||(c.name=='Fotos de Entrega')||(c.name=='Pre-cierre')||(c.name=='Pago Activado')||(c.name=='Escrituras Registradas')
       ||(c.name=='Cierre Contabilidad')||(c.name=='Comprobante Firma Apoderado')||(c.name=='Comprobante Comisión Broker')
       ||(c.name=='Comprobante Comisión Gerente')||(c.name=='Comprobante Anticipo Comisión Gerente')||(c.name=='Pago Ventanilla Unica')
       ||(c.name=='Comprobante de Pago Ventanilla Unica')||(c.name=='Pre-Pantalla'))&&(c.Cerrado__c==true)&&(c.Iniciado__c==true)
         &&(x.EtapaActual__c ==true)&&(c.En_Espera__c==true))
			 {
             if((p.NumFiles_MasFilesPadre__c==0)&&(c.NumFiles_MasFilesPadre__c==1))
             {
        if (l.Pendientes_Realizados__c==null)
        {
        l.Pendientes_Realizados__c=0;
        }
        l.Pendientes_Realizados__c+=1;
        y.En_Espera__c=false;
        update y;         
        update l;
             }
         }
    }
    }}}
}
this is the test class 
@isTest
public class gerenteTest {
    static testMethod void gerenteTest()
    {
        documento__c dd=new documento__c(iniciado__c=true);
        insert dd;
        account a=new account();
        a.Pendientes_Realizados__c=1;
        a.name='prueba';
        insert a;
        Account acc=[select Pendientes_Realizados__c 
        from Account where id=:a.id];
        Oferta__c fer = new Oferta__c();
        fer.gerente_operativo__c = acc.id;
        insert fer;
        oferta__c ofe=[select id,etapa__c,TipoOferta__c, gerente_operativo__c 
        from oferta__c where id=:fer.id];
        etapaoferta__c et=new etapaoferta__c();
        et.oferta__c=ofe.id;
        insert et;
        etapaoferta__c eo=[select EtapaActual__c from EtapaOferta__c where id=:et.id];
        Documento__c e = new Documento__c();
        e.oferta__c=ofe.id;
        e.EtapaOferta__c=eo.id;
        insert e;
        e.name='dd';
        update e;
    }
}

it returns 41% of coverage but i don't know what is missing, could someone help me, please?
 
Hello, i have a problem with this trigger, i need to update a field from account (Pendientes_Realizados__c) but the query doesn't return something (c.Oferta__r.gerente_operativo__c) is an id from account that query returns the id in workbench but nothing in the trigger 
trigger gerente on Documento__c (after update) {
for (Documento__c c:Trigger.new)
{
    Account l=[select Pendientes_Realizados__c from Account where id=:c.Oferta__r.gerente_operativo__c];

        l.Pendientes_Realizados__c=10;
        update l;
  }
    
}

 
Hello, i have a trigger in a custom object but the test only retuns 30% of coverage, i had a similar trigger and i did the same test, i got 100% of coverage with it, i don't undserstand what is missing to get more coverage
trigger VeEstado on Oferta__c (after update) {  

    for (Oferta__c c:Trigger.new)
    {
        if (c.Estado__c!=null){
integer i=[select count() from oferta__c where FechaCobro__c != null AND Estado__c =:c.Estado__c];
Estados__c l=[select id, vendidas__c, Propiedades_Disponibles__c from Estados__c where id=:c.Estado__c];
l.vendidas__c=i;
 
integer d=[SELECT count() FROM Oferta__c WHERE TiempoOferta__c >= -1500 AND PrecioVenta__c <= 5000000 
               AND Estatus__c != 'Descartada' AND FechaCobro__c = Null AND FechaPago__c != Null 
               AND ((Etapa__c IN ('Compilación expediente compra','Compra final',
                                  'Escrituras en proceso registro','Compilación expediente cliente')) 
                                OR (Etapa__c IN ('Rehabilitación') AND Invadida__c = true))
                                    AND Estado__c =:c.Estado__c ];
l.Propiedades_Disponibles__c=d;       
update l; 
    }
}
}
this is the test 
@istest 
public class VeEstadoTest {
static testMethod void VeEstadoTest()
{
Oferta__c fer = new Oferta__c();
fer.Name='fer2';
insert fer;
fer.Name='fer22';
update fer;
}
}


 
it works when i update a field in the same object, but when i try to update other field with relationship from other object it says that is a null object, i don't understand that, this is my trigger
trigger VeEstado on Oferta__c (before update) {    
    for (Oferta__c c:Trigger.new)
    {
    integer i=[select count() from oferta__c where FechaCobro__c != null AND Ciudad_busqueda__c =:c.id];
    c.Estado__r.vendidas__c=i;
    integer d=[SELECT count() FROM Oferta__c WHERE TiempoOferta__c >= -1500 AND PrecioVenta__c <= 5000000 
               AND Estatus__c != 'Descartada' AND FechaCobro__c = Null AND FechaPago__c != Null 
               AND ((Etapa__c IN ('Compilación expediente compra','Compra final',
                                  'Escrituras en proceso registro','Compilación expediente cliente')) 
                                OR (Etapa__c IN ('Rehabilitación') AND Invadida__c = true))
                                    AND Ciudad_busqueda__c =:c.id ];
    c.Estado__r.Propiedades_disponibles__c=d;
    }
}

 
Hi, i don't understand how to do reference from the trigger in the class, i need the test
this is my trigger 
 
trigger VendidasDisponiblesEstado on Estados__c (before update) {
        for (Estados__c c:Trigger.new)
    {
integer i=[select count() from oferta__c where Estatus__c = 'cobrada' AND id=:c.id];
c.vendidas__c=i;
integer d=[SELECT count() FROM Oferta__c WHERE TiempoOferta__c >= -1500 AND PrecioVenta__c <= 5000000 
               AND Estatus__c != 'Descartada' AND FechaCobro__c = Null AND FechaPago__c != Null 
               AND ((Etapa__c IN ('Compilación expediente compra','Compra final',
                                  'Escrituras en proceso registro','Compilación expediente cliente')) 
                                  OR (Etapa__c IN ('Rehabilitación') AND Invadida__c = true))
                                  AND Estado__c=:c.id ];
               c.Propiedades_disponibles__c=d;            
}

}

how to do a test class for a trigger on a custom object
Hi, i don't understand how to do reference from the trigger in the class, i need the test
this is my trigger 

 
Hi, i don't understand how to do reference from the trigger in the class, i need the test
this is my trigger 

trigger VendidasDisponiblesEstado on Estados__c (before update) {
        for (Estados__c c:Trigger.new)
    {
integer i=[select count() from oferta__c where Estatus__c = 'cobrada' AND id=:c.id];
c.vendidas__c=i;
integer d=[SELECT count() FROM Oferta__c WHERE TiempoOferta__c >= -1500 AND PrecioVenta__c <= 5000000 
               AND Estatus__c != 'Descartada' AND FechaCobro__c = Null AND FechaPago__c != Null 
               AND ((Etapa__c IN ('Compilación expediente compra','Compra final',
                                  'Escrituras en proceso registro','Compilación expediente cliente')) 
                                  OR (Etapa__c IN ('Rehabilitación') AND Invadida__c = true))
                                  AND Estado__c=:c.id ];
               c.Propiedades_disponibles__c=d;            
}

}
hello, i have done some tests for triggers with 100% of coverage but now i have a problem and i think it is because i'm using trigger.old, this is the trigger
trigger gerente on Documento__c (after update) {
    for(Documento__c p:Trigger.old){
    for(Documento__c c:Trigger.new)
{
    Documento__c y=[select en_espera__c from documento__c where id=:c.Id];
    oferta__c r=[select id,etapa__c,TipoOferta__c, gerente_operativo__c from oferta__c where id=:c.oferta__c];
    Account l=[select Pendientes_Realizados__c from Account where id=:r.gerente_operativo__c];
    EtapaOferta__c x=[select EtapaActual__c from EtapaOferta__c where id=:c.EtapaOferta__c];
    if(r.TipoOferta__c!='Contado'){
    if(r.Gerente_Operativo__c!=null){
    if(p.Cerrado__c!=c.Cerrado__c){
    if (((r.Etapa__c=='Expediente aprobado')||(r.Etapa__c=='Compilación expediente crediticio')||(r.Etapa__c=='Rehabilitación')
        ||(r.Etapa__c=='Cierre oferta'))&&((c.name=='Presupuesto de rehabilitación')
       ||(c.name=='Fotografia del estado inicial')||(c.name=='Fotografia del estado final de la propiedad')
       ||(c.name=='CLG')||(c.name=='Predial')||(c.name=='Constancia de Crédito')
       ||(c.name=='Carta de instrucción Notarial')||(c.name=='Carta de Intrucción Revimex')||(c.name=='Proyecto de Escrituras')
       ||(c.name=='Aviso de Retención Y Firma Cliente')||(c.name=='Confirmación cobro propiedad')||(c.name=='Carta de entrega')
       ||(c.name=='Fotos de Entrega')||(c.name=='Pre-cierre')||(c.name=='Pago Activado')||(c.name=='Escrituras Registradas')
       ||(c.name=='Cierre Contabilidad')||(c.name=='Comprobante Firma Apoderado')||(c.name=='Comprobante Comisión Broker')
       ||(c.name=='Comprobante Comisión Gerente')||(c.name=='Comprobante Anticipo Comisión Gerente')||(c.name=='Pago Ventanilla Unica')
       ||(c.name=='Comprobante de Pago Ventanilla Unica')||(c.name=='Pre-Pantalla'))&&(c.Cerrado__c==true)&&(c.Iniciado__c==true)
       &&(x.EtapaActual__c ==true)&&(c.En_Espera__c==false))
    {
        if (l.Pendientes_Realizados__c==null)
        {
        l.Pendientes_Realizados__c=0;
        }
        l.Pendientes_Realizados__c+=1;
        update l;
    }
    }

if (((r.Etapa__c=='Expediente aprobado')||(r.Etapa__c=='Compilación expediente crediticio')||(r.Etapa__c=='Rehabilitación')
        ||(r.Etapa__c=='Cierre oferta'))&&((c.name=='Presupuesto de rehabilitación')
       ||(c.name=='Fotografia del estado inicial')||(c.name=='Fotografia del estado final de la propiedad')
       ||(c.name=='CLG')||(c.name=='Predial')||(c.name=='Constancia de Crédito')
       ||(c.name=='Carta de instrucción Notarial')||(c.name=='Carta de Intrucción Revimex')||(c.name=='Proyecto de Escrituras')
       ||(c.name=='Aviso de Retención Y Firma Cliente')||(c.name=='Confirmación cobro propiedad')||(c.name=='Carta de entrega')
       ||(c.name=='Fotos de Entrega')||(c.name=='Pre-cierre')||(c.name=='Pago Activado')||(c.name=='Escrituras Registradas')
       ||(c.name=='Cierre Contabilidad')||(c.name=='Comprobante Firma Apoderado')||(c.name=='Comprobante Comisión Broker')
       ||(c.name=='Comprobante Comisión Gerente')||(c.name=='Comprobante Anticipo Comisión Gerente')||(c.name=='Pago Ventanilla Unica')
       ||(c.name=='Comprobante de Pago Ventanilla Unica')||(c.name=='Pre-Pantalla'))&&(c.Cerrado__c==true)&&(c.Iniciado__c==true)
         &&(x.EtapaActual__c ==true)&&(c.En_Espera__c==true))
			 {
             if((p.NumFiles_MasFilesPadre__c==0)&&(c.NumFiles_MasFilesPadre__c==1))
             {
        if (l.Pendientes_Realizados__c==null)
        {
        l.Pendientes_Realizados__c=0;
        }
        l.Pendientes_Realizados__c+=1;
        y.En_Espera__c=false;
        update y;         
        update l;
             }
         }
    }
    }}}
}
this is the test class 
@isTest
public class gerenteTest {
    static testMethod void gerenteTest()
    {
        documento__c dd=new documento__c(iniciado__c=true);
        insert dd;
        account a=new account();
        a.Pendientes_Realizados__c=1;
        a.name='prueba';
        insert a;
        Account acc=[select Pendientes_Realizados__c 
        from Account where id=:a.id];
        Oferta__c fer = new Oferta__c();
        fer.gerente_operativo__c = acc.id;
        insert fer;
        oferta__c ofe=[select id,etapa__c,TipoOferta__c, gerente_operativo__c 
        from oferta__c where id=:fer.id];
        etapaoferta__c et=new etapaoferta__c();
        et.oferta__c=ofe.id;
        insert et;
        etapaoferta__c eo=[select EtapaActual__c from EtapaOferta__c where id=:et.id];
        Documento__c e = new Documento__c();
        e.oferta__c=ofe.id;
        e.EtapaOferta__c=eo.id;
        insert e;
        e.name='dd';
        update e;
    }
}

it returns 41% of coverage but i don't know what is missing, could someone help me, please?
 
Hello, i have a problem with this trigger, i need to update a field from account (Pendientes_Realizados__c) but the query doesn't return something (c.Oferta__r.gerente_operativo__c) is an id from account that query returns the id in workbench but nothing in the trigger 
trigger gerente on Documento__c (after update) {
for (Documento__c c:Trigger.new)
{
    Account l=[select Pendientes_Realizados__c from Account where id=:c.Oferta__r.gerente_operativo__c];

        l.Pendientes_Realizados__c=10;
        update l;
  }
    
}

 
Hello, i have a trigger in a custom object but the test only retuns 30% of coverage, i had a similar trigger and i did the same test, i got 100% of coverage with it, i don't undserstand what is missing to get more coverage
trigger VeEstado on Oferta__c (after update) {  

    for (Oferta__c c:Trigger.new)
    {
        if (c.Estado__c!=null){
integer i=[select count() from oferta__c where FechaCobro__c != null AND Estado__c =:c.Estado__c];
Estados__c l=[select id, vendidas__c, Propiedades_Disponibles__c from Estados__c where id=:c.Estado__c];
l.vendidas__c=i;
 
integer d=[SELECT count() FROM Oferta__c WHERE TiempoOferta__c >= -1500 AND PrecioVenta__c <= 5000000 
               AND Estatus__c != 'Descartada' AND FechaCobro__c = Null AND FechaPago__c != Null 
               AND ((Etapa__c IN ('Compilación expediente compra','Compra final',
                                  'Escrituras en proceso registro','Compilación expediente cliente')) 
                                OR (Etapa__c IN ('Rehabilitación') AND Invadida__c = true))
                                    AND Estado__c =:c.Estado__c ];
l.Propiedades_Disponibles__c=d;       
update l; 
    }
}
}
this is the test 
@istest 
public class VeEstadoTest {
static testMethod void VeEstadoTest()
{
Oferta__c fer = new Oferta__c();
fer.Name='fer2';
insert fer;
fer.Name='fer22';
update fer;
}
}


 
it works when i update a field in the same object, but when i try to update other field with relationship from other object it says that is a null object, i don't understand that, this is my trigger
trigger VeEstado on Oferta__c (before update) {    
    for (Oferta__c c:Trigger.new)
    {
    integer i=[select count() from oferta__c where FechaCobro__c != null AND Ciudad_busqueda__c =:c.id];
    c.Estado__r.vendidas__c=i;
    integer d=[SELECT count() FROM Oferta__c WHERE TiempoOferta__c >= -1500 AND PrecioVenta__c <= 5000000 
               AND Estatus__c != 'Descartada' AND FechaCobro__c = Null AND FechaPago__c != Null 
               AND ((Etapa__c IN ('Compilación expediente compra','Compra final',
                                  'Escrituras en proceso registro','Compilación expediente cliente')) 
                                OR (Etapa__c IN ('Rehabilitación') AND Invadida__c = true))
                                    AND Ciudad_busqueda__c =:c.id ];
    c.Estado__r.Propiedades_disponibles__c=d;
    }
}