• caterina ferrigno 8
  • NEWBIE
  • 60 Points
  • Member since 2016

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 8
    Questions
  • 21
    Replies
Hello, 
I have a custom object 'fattura__c' that has a look up relationship with a standard object 'quote' ;
'quote' has a master detail relationship with 'opportunity' and opportunity has a look up relationship with 'account'.
These are the steps: I select an opportunity, then in the opportunity's related list I select a quote, and in the quote's related list i select a fattura.
I have a visualforce page on 'fattura__c' and I want some of fattura's fields must be automatically populated, taking them directly from the account (fattura__c doesn't have any kind of link with Account).
How can i write this in an apex class?

Thanks a lot!
Hello all!

I have a problem with a test class (I've never done a test class).
This is my class :
*****************************************************************************************************************
public class CreaNewFatturaCtrl { 
      public Fattura__c fattura {get;set;}    
      private String idQuote;
      private String idQuotelineitem;               
      public List <Wrapper> WrapperList {get;set;}    
      public QuoteLineItem qli1 {get;set;}       
      public id selectedIndex   {get;set;}
      public List<Riga_Fattura__c> ListaRigheFattDaCompilare {get; set;}
      public Id rowToRemove  {get; set;}         
                                                                                                                            
     public CreaNewFatturaCtrl(ApexPages.StandardController stdcontroller) {        
        
        idQuote= ApexPages.currentPage().getParameters().get('idQuote');              
        ListaRigheFattDaCompilare = new list<Riga_Fattura__c>();
        this.fattura=(Fattura__c) stdController.getRecord();        
        fattura.preventivo__c = idQuote;
        fattura.motivo_stato__c = 'Bozza';
        WrapperList = new List <Wrapper>();
                                     
        For(QuoteLineItem ql: (List<QUoteLineItem>) [SELECT Id, LineNumber, ListPrice, UnitPrice, Quantity, Importo_IVA__c, Importo_ancora_d              a_fatturare__c , Totale__c, Description FROM QuoteLineItem WHERE Quote.Id = :idQuote]){            
             Wrapper wp = new Wrapper();
             wp.selected = false;
             wp.ro = ql;
             WrapperList.add(wp);     
        }
     }
                                     
          public ApexPages.PageReference addRow(){
          //selectedIndex = 0;    
          //idQuotelineitem= qli[Integer.ValueOf(selectedIndex)].id; 
          system.debug('*****selectedIndex '+selectedIndex );
          For(Wrapper wp:WrapperList)
            if(wp.ro.id == selectedIndex)
                 wp.selected = true;        
          
          qli1 = [SELECT Id, LineNumber, Importo_ancora_da_fatturare__c, Totale__c,Importo_IVA__c FROM QuoteLineItem WHERE QuoteLineIte                    m.Id = :selectedIndex  LIMIT 1];                                                   
          ListaRigheFattDaCompilare.add(new Riga_Fattura__c(voce_preventivo__c = qli1.id,Voce_preventivo__r = qli1,motivo_stato__c = 'Bozza' ));  
                                       
          return null;                                 
        } 
        
        public void deleteRow(){   
        /*if(ListaRigheFattDaCompilare.size()>=rowToRemove&& rowToRemove> 0) 
          {
                ListaRigheFattDaCompilare.remove(rowToRemove-1);
                rowToRemove= null;
          }*/      
         //ListaRigheFattDaCompilare.remove(ListaRigheFattDaCompilare.size()-1);
         integer i = 0;
         system.debug('***rowToRemove'+rowToRemove);
         system.debug('***prima'+ListaRigheFattDaCompilare);
         For(Wrapper wp:WrapperList)
            if(wp.ro.id == rowToRemove)
                 wp.selected = false;
         For(riga_fattura__c rf : ListaRigheFattDaCompilare){
            if(rf.voce_preventivo__c == rowToRemove)
                break;
            else
                i++;
         }
         ListaRigheFattDaCompilare.remove(i);
         system.debug('***dopo'+ListaRigheFattDaCompilare);                          
        }
                                                                                            
        public ApexPages.PageReference CompilaImporto() {
        for (Riga_Fattura__c rf : ListaRigheFattDaCompilare) {
        
                if (rf.da_fatturare__c  != null  ) {
                 rf.Importo__c = (((rf.Voce_preventivo__r.Totale__c-rf.Voce_preventivo__r.Importo_IVA__c)*rf.da_fatturare__c)/100) ;
                  }
                  }
                   return null;                  
                  }
                                    
        public ApexPages.PageReference CompilaPercentuale() {
        for (Riga_Fattura__c rf : ListaRigheFattDaCompilare) {
        
                if ( rf.Importo__c != null  ) {
                 rf.da_fatturare__c = (rf.Importo__c/(rf.Voce_preventivo__r.Totale__c-rf.Voce_preventivo__r.Importo_IVA__c))*100 ;
                  }
                  }        
                   return null;                      
                  }
                  
            public ApexPages.PageReference saveRecord() {
            insert fattura;
            For(RIga_fattura__c RF:ListaRigheFattDaCompilare)
                RF.fattura__c = fattura.id;
            insert ListaRigheFattDaCompilare;
            
            return new PageReference('/'+fattura.id);
        }
             
        public ApexPages.PageReference cancelRecord() {
            return new PageReference('/'+idQuote);
        }
        
        public class Wrapper{
            public boolean selected{get;set;}
            public quotelineitem ro{get;set;}
            public Wrapper(){
                
            } 
        }
                  
}
************************************************************************************************************************

And this is my incomplete test class:
************************************************************************************************************************
@isTest

public class CreaNewFatturaCtrl_Test {

    static testMethod void Costruttore1_Test() {
      test.startTest();
           
      Account acc = new Account();
      acc.name='Test Account';
      acc.billingStreet='via emanuele';
      acc.billingCity='Torino';
      acc.billingState='Ecuador';
      acc.billingCountry='Italy';
      insert acc;
            
      List<Opportunity> l_opp = new List<Opportunity>();  
      Opportunity opp = new Opportunity();
      opp.Accountid = acc.id;
      opp.Name = 'test';
      opp.StageName = 'Prospecting';
      opp.CloseDate = date.today();
      opp.Type = 'New Client';
      opp.NextStep = 'Test';
      opp.LeadSource = 'Business Development';
      insert opp;
      l_opp.add(opp);
            
      Product2 prod = new Product2 ();
      prod.name='test';
      prod.IsActive=true;
      prod.Ha_Edizioni__c = true;
      insert prod;
      List<Product2> l_prod = new List<Product2>();
      l_prod.add(prod);
      
      Id pricebookId = Test.getStandardPricebookId();
      List<PricebookEntry> l_pbe = new List<PricebookEntry>();
      PricebookEntry pbe = new PricebookEntry();
      pbe.Product2Id=prod.Id;
      pbe.IsActive=true;
      pbe.UnitPrice=1;
      pbe.Pricebook2Id=pricebookId;
      insert pbe;
      l_pbe.add(pbe);
                              
      List<Quote> l_off = new List<Quote>();      
      Quote preventivo = new Quote();
      preventivo.Name = 'soldi';
      preventivo.N_Offerta__c = '9';
      preventivo.OpportunityId = opp.id;
      preventivo.Pricebook2Id = pricebookId ;
      preventivo.Training__c = TRUE;
      insert preventivo ; 
      l_off.add(preventivo);
            
      Fattura__c fat = new Fattura__c(Motivo_stato__c='bozza');      
      fat.Preventivo__c = preventivo.id;      
      insert fat;
      List<Fattura__c> l_fat = new List<Fattura__c>();
      l_fat.add(fat);
            
      Date data = date.newInstance(2999,02,36); 
      Edizione__c edz = New Edizione__c();
      edz.Name = 'Test';
      edz.Prodotto__c = prod.id;
      edz.motivo_stato__c='edizione erogata';
      insert edz;
      List<Edizione__c> l_edz = new List<Edizione__c>();
      l_edz.add(edz);
          
      List<QuoteLineItem> l_qtl = new List<QuoteLineItem>();
      QuoteLineItem qtl = new QuoteLineItem();
      qtl.quoteid = preventivo.id;
      qtl.quantity = 1;
      qtl.unitprice = 1;
      qtl.PricebookEntryId = pbe.id;      
      qtl.Product2Id = prod.id;
      qtl.Edizione__c=edz.id;
      insert qtl;
      l_qtl.add(qtl);
            
     /*** Fattura__c fat = new Fattura__c(Motivo_stato__c='bozza');      
      fat.Preventivo__c = preventivo.id;      
      insert fat;
      List<Fattura__c> l_fat = new List<Fattura__c>();
      l_fat.add(fat); ***/
            
      List<Riga_Fattura__c> l_riga_f = new List<Riga_Fattura__c>(); 
      Riga_Fattura__c riga_f = new Riga_Fattura__c ();
      riga_f.Motivo_stato__c='Bozza';
      riga_f.Fattura__c = fat.id;
      riga_f.voce_preventivo__c= qtl.id;
      insert riga_f;
                                              
      boolean bl = true; 
      quotelineitem quolitem = new quotelineitem();              
              quolitem.quoteid = preventivo.Id;
              quolitem.UnitPrice = 600;
              quolitem.Quantity = 5;
              quolitem.PricebookEntryId = pbe.id;
              quolitem.Product2Id = prod.Id;  
      CreaNewFatturaCtrl.Wrapper cnf = new CreaNewFatturaCtrl.Wrapper();
             
         ApexPages.StandardController controller = new ApexPages.StandardController(fat);
        CreaNewFatturaCtrl stdController = new CreaNewFatturaCtrl(controller);
                       
         stdController.addRow();     
         stdController.deleteRow();
         stdController.CompilaImporto();
         stdController.CompilaPercentuale();   
         stdController.saveRecord();
         stdController.cancelRecord(); 
          
   test.stopTest();
   } 
                  
 }
************************************************************************************************************************

When I run the test I have this error:

System.QueryException: List has no rows for assignment to SObject
Traccia dello stackClass.CreaNewFatturaCtrl.addRow: line 41, column 1
Class.CreaNewFatturaCtrl_Test.Costruttore1_Test: line 122, column 

And I think there's the same problem for other methods!
Is there anyone who can help me?
Thanks!
Hello,
I don't understand how to solve this problem :
I have this VF page 
User-added image
I want that if i click on the button '+' in the section "righe offerta" to which corresponds Numero voce  = 00000024,
in the section "righe offerta selezionate" appears the same number (00000024), or  if i click on the button '+' to which corresponds Numero voce  = 00000027,in the section "righe offerta selezionate" appears the number (00000027), and so on.
The problem is that whatever is the button I click, in the section "righe offerta selezionate" appears always the same number 00000024.

This is my code
-VF page
 <apex:page StandardController="Fattura__c" extensions="CreaNewFatturaCtrl" showHeader="false">
<apex:pageBlock title="Nuova fattura">   
<apex:form id="frm">
    <Apex:actionFunction name="addRow" action="{!AddRow}" >    
        <Apex:param name="selectedIndex" value="" assignTo="{!selectedIndex}"/>               
    </apex:actionfunction>
                         
    <apex:pageBlock id="pageid">          
    <apex:pageBlockButtons location="Both">
                <apex:commandButton value="Salva" action="{!saveRecord}"/>
                <apex:commandButton value="Annulla" action="{!cancelRecord}"/>                  
    </apex:pageBlockButtons>

 <apex:variable value="{!0}" var="i"/>    
  <apex:pageBlockSection columns="1"  title="Righe offerta" collapsible="FALSE">                                                                                                  <apex:pageblocktable value="{!qli}" var="roff" >   
                    <apex:column headervalue="Aggiungi">                         
                    <apex:commandButton value="+" action="{!AddRow}"  rerender="pageid"   />                                                                             
                    </apex:column> 
                                          
                    <apex:column value="{!roff.LineNumber}" headervalue="Numero voce" />
                    <apex:column value="{!roff.ListPrice}" headervalue="Prezzo di listino" />
                    <apex:column value="{!roff.UnitPrice}" headervalue="Prezzo di vendita" />
                    <apex:column value="{!roff.Quantity}" headervalue="Quantità" />
                    <apex:column value="{!roff.Importo_IVA__c}" headervalue="Importo IVA" />
                    <apex:column value="{!roff.Totale__c}" headervalue="Totale" />
                    <apex:column value="{!roff.Importo_ancora_da_fatturare__c}" headervalue="Importo ancora da fatturare" />
                    <apex:column value="{!roff.Description}" headervalue="Descrizione riga offerta" /> 
                                                        
        </apex:pageblocktable> 
        <apex:variable value="{!i+1}" var="i"/>   
        </apex:pageblockSection> 
                     
 <apex:pageBlockSection columns="4"  title="Righe offerta selezionate" collapsible="FALSE" >
  <apex:repeat var="qliA" value="{!ListaQLIdaCompilare}">
     <apex:inputField value="{!qliA.LineNumber}"/>
     <apex:inputField value="{!qliA.Descrizione__c}"/>
     <apex:inputField value="{!qliA.N_Ordine_Cliente__c}" />
     <apex:inputField value="{!qliA.perc_da_fatturare__c}"/>
  </apex:repeat>
 </apex:pageblockSection>                                                                              
   </apex:pageBlock>                                              
  </apex:form>                                                            
 </apex:pageBlock>
</apex:page>


-Apex Class
public class CreaNewFatturaCtrl { 

      public Fattura__c fattura {get;set;}    
      private String idQuote;
      private String idQuotelineitem;               
      public List <QuoteLineItem> qli {get;set;}      
      public QuoteLineItem qli1 {get;set;}       
      public Integer selectedIndex   {get;set;}
      public List<QuoteLineItem> ListaQLIdaCompilare {get; set;}
                                                                                                                              
     public CreaNewFatturaCtrl(ApexPages.StandardController stdcontroller) {                
        idQuote= ApexPages.currentPage().getParameters().get('idQuote');              
        ListaQLIdaCompilare = new List<QuoteLineItem>();   
        this.fattura=(Fattura__c) stdController.getRecord();        
        fattura.preventivo__c = idQuote;                                     
        qli = [SELECT Id, LineNumber, ListPrice, UnitPrice, Quantity, Importo_IVA__c, Importo_ancora_da_fatturare__c , Totale__c, Description 
                FROM QuoteLineItem WHERE Quote.Id = :idQuote];                                
        }
                       
          public ApexPages.PageReference addRow(){
          selectedIndex = 0;     
          idQuotelineitem= qli[Integer.ValueOf(selectedIndex)].id;          
          qli1 = [SELECT Id, LineNumber, Descrizione__c, N_Ordine_Cliente__c, perc_da_fatturare__c FROM QuoteLineItem WHERE           QuoteLineItem.Id = :idQuotelineitem LIMIT 1];                                                   
          ListaQLIdaCompilare.add(qli1);
          system.debug('++++++++++++++++++++++++++++++ apexpages.currentpage() '+ apexpages.currentpage().getparameters().get('selectedIndex') );           
          return null;                                 
          }  
                                                                             
        public ApexPages.PageReference saveRecord() {
         insert fattura;
         return new PageReference('/'+fattura.id);
        }
     
        public ApexPages.PageReference cancelRecord() {
         return new PageReference('/'+idQuote);
        }           
}

Do you know the solution to the problem?
Thank you!! 
 
Hello!
I have the button "add" (symbol +) on each row of table .When i click on the add button a new row should inserted just below that row.
For example if clicked the button '+' on row 1 then new row should be add below row 1, but in my case i have this row at the end of the table.
This is my apex class:
public class CreaNewFatturaCtrl { 

      public Fattura__c fattura {get;set;}    
      private String idQuote;     
      public Quote prev {get;set;}   
      public List <QuoteLineItem> qli {get;set;}
           
      Public QuoteLineItem quotelineitem{get;set;}
          
                                                             
     public CreaNewFatturaCTRL(ApexPages.StandardController stdcontroller) {
               
        idQuote= ApexPages.currentPage().getParameters().get('idQuote');
        this.fattura=(Fattura__c) stdController.getRecord();
        fattura.preventivo__c = idQuote;
               
        qli = [SELECT Id, ListPrice, UnitPrice, Quantity, Importo_IVA__c, Importo_ancora_da_fatturare__c , Totale__c, Description FROM QuoteLineItem 
                WHERE Quote.Id = :idQuote]; 
     
        
        }
        
        
        
      public ApexPages.PageReference AddRow () {
                          
        QuoteLineItem quotelineitem = new quotelineitem();
        QuoteLineItem qli1=new  QuoteLineItem();    
        List <QuoteLineItem> newqli = new List <QuoteLineItem>();    
        newqli = [SELECT Id, Desrizione__c, N_Ordine_Cliente__c FROM QuoteLineItem];
        qli.add(quotelineitem);       
        newqli.add(quotelineitem);
        return null; 
     }
         
                       
    public ApexPages.PageReference saveRecord() {
     insert fattura;
     return new PageReference('/'+fattura.id);
    }
    
    public ApexPages.PageReference cancelRecord() {
     return new PageReference('/'+idQuote);
    }
}

And this is my VF page:

<apex:page StandardController="Fattura__c" extensions="CreaNewFatturaCtrl" showHeader="false">
<apex:pageBlock title="Nuova fattura">

    

<apex:form >

    <apex:pageBlock >  

    <apex:pageBlockButtons location="Both">
                <apex:commandButton value="Salva" action="{!saveRecord}"/>
                <apex:commandButton value="Annulla" action="{!cancelRecord}"/>                  
    </apex:pageBlockButtons>
     
  
                 
    <apex:pageBlockSection title="Informazioni" collapsible="FALSE">
  
                <apex:inputField value="{!Fattura__c.Numero_fattura__c}"/>
                <apex:inputField value="{!Fattura__c.Nome_Fattura__c}"/>
                <apex:inputField value="{!Fattura__c.Preventivo__c}" />
                <apex:inputField value="{!Fattura__c.Motivo_stato__c}"/>  
                <apex:inputField value="{!Fattura__c.Banca__c }"/>
                <apex:inputField value="{!Fattura__c.ID_Fattura_SFDC__c}"/>
                <apex:inputField value="{!Fattura__c.Cliente_di_fatturazione__c }"/>
                                                                                                               
                </apex:pageblockSection>
                    
   <apex:pageBlockSection title="Informazioni pagamento e IVA" collapsible="FALSE" >
   
                <apex:inputField value="{!Fattura__c.Modalit_di_pagamento__c}"/>
                <apex:inputField value="{!Fattura__c.Annotazioni__c}"/>
                <apex:inputField value="{!Fattura__c.IVA__c }"                          
              </apex:pageblockSection> 
      
    <apex:pageBlockSection title="Amministrazione" collapsible="FALSE" >
    
                <apex:inputField value="{!Fattura__c.Data_emissione__c}"/>
                <apex:inputField value="{!Fattura__c.Data_pagamento__c}"/>
                <apex:inputField value="{!Fattura__c.Data_scadenza__c}"/>                                   
                <apex:inputField value="{!Fattura__c.Scadenza__c}"/>
                <apex:inputField value="{!Fattura__c.Scadenza_pagam__c}"/>
                <apex:inputField value="{!Fattura__c.Data_annull__c}"/>
                <apex:inputField value="{!Fattura__c.Data_revisione__c}"/>
          </apex:pageblockSection>
 
  <apex:pageBlockSection columns="1"  title="Righe offerta" collapsible="FALSE" >
                                                                                                   
    <apex:pageblocktable value="{!qli}" var="roff">
    
                    <apex:column headervalue="Aggiungi">
                         
                    <apex:commandButton value="+" action="{!AddRow}" />
                                                                                             
                    </apex:column> 
                                 
                    
                    <apex:column value="{!roff.ListPrice}" headervalue="Prezzo di listino" />
                    <apex:column value="{!roff.UnitPrice}" headervalue="Prezzo di vendita" />
                    <apex:column value="{!roff.Quantity}" headervalue="Quantità" />
                    <apex:column value="{!roff.Importo_IVA__c}" headervalue="Importo IVA" />
                    <apex:column value="{!roff.Totale__c}" headervalue="Totale" />
                    <apex:column value="{!roff.Importo_ancora_da_fatturare__c}" headervalue="Importo ancora da fatturare" />
                    <apex:column value="{!roff.Description}" headervalue="Descrizione riga offerta" />
    </apex:pageblocktable>               
    </apex:pageblockSection>  
                    
   </apex:pageBlock>                                              
  </apex:form>                                                         
 </apex:pageBlock>
</apex:page>

This is the result when i click on button '+' on the first row :
User-added image
I want a new row under the first row!
How can I solve this problem?

Thanks.
Hello,
I have a problem with a visualforce page.

This is my code block:

<apex:page  StandardController="Fattura__c" extensions="CreaNuovaFatturaCtrl" showHeader="false">
<apex:pageBlock title="Nuova fattura">

<apex:form >

   <apex:pageBlock id="membAdd" >  

    <apex:pageBlockButtons location="Both">
                <apex:commandButton value="Salva" Action="{!save}" />
                <apex:commandButton value="Annulla" action="{!cancel}"/>                
    </apex:pageBlockButtons> 
                  
  <apex:pageBlockSection title="Informazioni" collapsible="FALSE" columns="1">
  <apex:pageblockSectionItem >
                                    
    <apex:pageBlockTable  value="{!Fattura__c}" var="memb" >                               

             

                  <apex:column  headerValue= "N° Fattura ">

                  <apex:inputField value="{!memb.Numero_fattura__c}"/>
       
               </apex:column>  
                

              <apex:column  headerValue="Nome">

                    <apex:inputField value="{!memb.Nome_Fattura__c}"/>

              </apex:column> 
       

               <apex:column  headerValue="%IVA">

                    <apex:inputField value="{!memb.IVA__c }"/>
                    
                </apex:column>
                

                <apex:column  headerValue="Annotazioni">

                    <apex:inputField value="{!memb.Annotazioni__c}"/>

                </apex:column>
                
                
               <apex:column headerValue="Modalità di pagamento">

                    <apex:inputField value="{!memb.Modalit_di_pagamento__c}"/>

                </apex:column>
                
                
                <apex:column  headerValue="Data di scadenza">

                    <apex:inputField value="{!memb.Data_scadenza__c}"/>

                </apex:column>
                
                
                <apex:column  headerValue="Banca">

                    <apex:inputField value="{!memb.Banca__c }"/>

                </apex:column>
                
                
                <apex:column  headerValue="ID Fattura SFDC">

                    <apex:inputField value="{!memb.ID_Fattura_SFDC__c}"/>

                </apex:column>

           
                          
          </apex:pageBlockTable>
        
        </apex:pageblockSectionItem> 
           
      </apex:pageblockSection>   
            
    </apex:pageBlock>
     
   </apex:form>
     
 </apex:pageBlock>

</apex:page>

And this is the result:
User-added image
I can't to put the fields on different rows of the page.
How can I do to resolve my problem?

Thank you all

 
Hello all! 
I have a standard object "Account" with a custom field(picklist) "Stato";
I want to create a custom field "Nome account" where the value is an automatic incremental number that is assigned when the picklist value of "Stato" is changed to 'Cliente',  if that number was not already present.
For example "AC 000000" where "000000" must be an autonumber.

Can you help me?

Thank you very much!
Hi,
I have a standard object Account with a field named "Società controllante" and another one Quote with a field named "cliente di fatturazione";
I want to create in "cliente di fatturazione" a look up relationship with account, but only accounts that have as their "società controllante" the account to which the quote is tied. So, I have to create in "cliente di fatturazione" this look up relationship and a lookup filter. 
How can I create this lookup filter?
Thanks guys. 


 
Hi,
I have a problem with Opportunity related list Quotes.
I can't see the button "New Quote", I  try to modify quote settings in the opportunity layout (like that https://success.salesforce.com/answers?id=90630000000D5QRAA0) but there's no button header, just the column one is visible. How can I do to solve my issue?
 
Hello, 
I have a custom object 'fattura__c' that has a look up relationship with a standard object 'quote' ;
'quote' has a master detail relationship with 'opportunity' and opportunity has a look up relationship with 'account'.
These are the steps: I select an opportunity, then in the opportunity's related list I select a quote, and in the quote's related list i select a fattura.
I have a visualforce page on 'fattura__c' and I want some of fattura's fields must be automatically populated, taking them directly from the account (fattura__c doesn't have any kind of link with Account).
How can i write this in an apex class?

Thanks a lot!
Hello all!

I have a problem with a test class (I've never done a test class).
This is my class :
*****************************************************************************************************************
public class CreaNewFatturaCtrl { 
      public Fattura__c fattura {get;set;}    
      private String idQuote;
      private String idQuotelineitem;               
      public List <Wrapper> WrapperList {get;set;}    
      public QuoteLineItem qli1 {get;set;}       
      public id selectedIndex   {get;set;}
      public List<Riga_Fattura__c> ListaRigheFattDaCompilare {get; set;}
      public Id rowToRemove  {get; set;}         
                                                                                                                            
     public CreaNewFatturaCtrl(ApexPages.StandardController stdcontroller) {        
        
        idQuote= ApexPages.currentPage().getParameters().get('idQuote');              
        ListaRigheFattDaCompilare = new list<Riga_Fattura__c>();
        this.fattura=(Fattura__c) stdController.getRecord();        
        fattura.preventivo__c = idQuote;
        fattura.motivo_stato__c = 'Bozza';
        WrapperList = new List <Wrapper>();
                                     
        For(QuoteLineItem ql: (List<QUoteLineItem>) [SELECT Id, LineNumber, ListPrice, UnitPrice, Quantity, Importo_IVA__c, Importo_ancora_d              a_fatturare__c , Totale__c, Description FROM QuoteLineItem WHERE Quote.Id = :idQuote]){            
             Wrapper wp = new Wrapper();
             wp.selected = false;
             wp.ro = ql;
             WrapperList.add(wp);     
        }
     }
                                     
          public ApexPages.PageReference addRow(){
          //selectedIndex = 0;    
          //idQuotelineitem= qli[Integer.ValueOf(selectedIndex)].id; 
          system.debug('*****selectedIndex '+selectedIndex );
          For(Wrapper wp:WrapperList)
            if(wp.ro.id == selectedIndex)
                 wp.selected = true;        
          
          qli1 = [SELECT Id, LineNumber, Importo_ancora_da_fatturare__c, Totale__c,Importo_IVA__c FROM QuoteLineItem WHERE QuoteLineIte                    m.Id = :selectedIndex  LIMIT 1];                                                   
          ListaRigheFattDaCompilare.add(new Riga_Fattura__c(voce_preventivo__c = qli1.id,Voce_preventivo__r = qli1,motivo_stato__c = 'Bozza' ));  
                                       
          return null;                                 
        } 
        
        public void deleteRow(){   
        /*if(ListaRigheFattDaCompilare.size()>=rowToRemove&& rowToRemove> 0) 
          {
                ListaRigheFattDaCompilare.remove(rowToRemove-1);
                rowToRemove= null;
          }*/      
         //ListaRigheFattDaCompilare.remove(ListaRigheFattDaCompilare.size()-1);
         integer i = 0;
         system.debug('***rowToRemove'+rowToRemove);
         system.debug('***prima'+ListaRigheFattDaCompilare);
         For(Wrapper wp:WrapperList)
            if(wp.ro.id == rowToRemove)
                 wp.selected = false;
         For(riga_fattura__c rf : ListaRigheFattDaCompilare){
            if(rf.voce_preventivo__c == rowToRemove)
                break;
            else
                i++;
         }
         ListaRigheFattDaCompilare.remove(i);
         system.debug('***dopo'+ListaRigheFattDaCompilare);                          
        }
                                                                                            
        public ApexPages.PageReference CompilaImporto() {
        for (Riga_Fattura__c rf : ListaRigheFattDaCompilare) {
        
                if (rf.da_fatturare__c  != null  ) {
                 rf.Importo__c = (((rf.Voce_preventivo__r.Totale__c-rf.Voce_preventivo__r.Importo_IVA__c)*rf.da_fatturare__c)/100) ;
                  }
                  }
                   return null;                  
                  }
                                    
        public ApexPages.PageReference CompilaPercentuale() {
        for (Riga_Fattura__c rf : ListaRigheFattDaCompilare) {
        
                if ( rf.Importo__c != null  ) {
                 rf.da_fatturare__c = (rf.Importo__c/(rf.Voce_preventivo__r.Totale__c-rf.Voce_preventivo__r.Importo_IVA__c))*100 ;
                  }
                  }        
                   return null;                      
                  }
                  
            public ApexPages.PageReference saveRecord() {
            insert fattura;
            For(RIga_fattura__c RF:ListaRigheFattDaCompilare)
                RF.fattura__c = fattura.id;
            insert ListaRigheFattDaCompilare;
            
            return new PageReference('/'+fattura.id);
        }
             
        public ApexPages.PageReference cancelRecord() {
            return new PageReference('/'+idQuote);
        }
        
        public class Wrapper{
            public boolean selected{get;set;}
            public quotelineitem ro{get;set;}
            public Wrapper(){
                
            } 
        }
                  
}
************************************************************************************************************************

And this is my incomplete test class:
************************************************************************************************************************
@isTest

public class CreaNewFatturaCtrl_Test {

    static testMethod void Costruttore1_Test() {
      test.startTest();
           
      Account acc = new Account();
      acc.name='Test Account';
      acc.billingStreet='via emanuele';
      acc.billingCity='Torino';
      acc.billingState='Ecuador';
      acc.billingCountry='Italy';
      insert acc;
            
      List<Opportunity> l_opp = new List<Opportunity>();  
      Opportunity opp = new Opportunity();
      opp.Accountid = acc.id;
      opp.Name = 'test';
      opp.StageName = 'Prospecting';
      opp.CloseDate = date.today();
      opp.Type = 'New Client';
      opp.NextStep = 'Test';
      opp.LeadSource = 'Business Development';
      insert opp;
      l_opp.add(opp);
            
      Product2 prod = new Product2 ();
      prod.name='test';
      prod.IsActive=true;
      prod.Ha_Edizioni__c = true;
      insert prod;
      List<Product2> l_prod = new List<Product2>();
      l_prod.add(prod);
      
      Id pricebookId = Test.getStandardPricebookId();
      List<PricebookEntry> l_pbe = new List<PricebookEntry>();
      PricebookEntry pbe = new PricebookEntry();
      pbe.Product2Id=prod.Id;
      pbe.IsActive=true;
      pbe.UnitPrice=1;
      pbe.Pricebook2Id=pricebookId;
      insert pbe;
      l_pbe.add(pbe);
                              
      List<Quote> l_off = new List<Quote>();      
      Quote preventivo = new Quote();
      preventivo.Name = 'soldi';
      preventivo.N_Offerta__c = '9';
      preventivo.OpportunityId = opp.id;
      preventivo.Pricebook2Id = pricebookId ;
      preventivo.Training__c = TRUE;
      insert preventivo ; 
      l_off.add(preventivo);
            
      Fattura__c fat = new Fattura__c(Motivo_stato__c='bozza');      
      fat.Preventivo__c = preventivo.id;      
      insert fat;
      List<Fattura__c> l_fat = new List<Fattura__c>();
      l_fat.add(fat);
            
      Date data = date.newInstance(2999,02,36); 
      Edizione__c edz = New Edizione__c();
      edz.Name = 'Test';
      edz.Prodotto__c = prod.id;
      edz.motivo_stato__c='edizione erogata';
      insert edz;
      List<Edizione__c> l_edz = new List<Edizione__c>();
      l_edz.add(edz);
          
      List<QuoteLineItem> l_qtl = new List<QuoteLineItem>();
      QuoteLineItem qtl = new QuoteLineItem();
      qtl.quoteid = preventivo.id;
      qtl.quantity = 1;
      qtl.unitprice = 1;
      qtl.PricebookEntryId = pbe.id;      
      qtl.Product2Id = prod.id;
      qtl.Edizione__c=edz.id;
      insert qtl;
      l_qtl.add(qtl);
            
     /*** Fattura__c fat = new Fattura__c(Motivo_stato__c='bozza');      
      fat.Preventivo__c = preventivo.id;      
      insert fat;
      List<Fattura__c> l_fat = new List<Fattura__c>();
      l_fat.add(fat); ***/
            
      List<Riga_Fattura__c> l_riga_f = new List<Riga_Fattura__c>(); 
      Riga_Fattura__c riga_f = new Riga_Fattura__c ();
      riga_f.Motivo_stato__c='Bozza';
      riga_f.Fattura__c = fat.id;
      riga_f.voce_preventivo__c= qtl.id;
      insert riga_f;
                                              
      boolean bl = true; 
      quotelineitem quolitem = new quotelineitem();              
              quolitem.quoteid = preventivo.Id;
              quolitem.UnitPrice = 600;
              quolitem.Quantity = 5;
              quolitem.PricebookEntryId = pbe.id;
              quolitem.Product2Id = prod.Id;  
      CreaNewFatturaCtrl.Wrapper cnf = new CreaNewFatturaCtrl.Wrapper();
             
         ApexPages.StandardController controller = new ApexPages.StandardController(fat);
        CreaNewFatturaCtrl stdController = new CreaNewFatturaCtrl(controller);
                       
         stdController.addRow();     
         stdController.deleteRow();
         stdController.CompilaImporto();
         stdController.CompilaPercentuale();   
         stdController.saveRecord();
         stdController.cancelRecord(); 
          
   test.stopTest();
   } 
                  
 }
************************************************************************************************************************

When I run the test I have this error:

System.QueryException: List has no rows for assignment to SObject
Traccia dello stackClass.CreaNewFatturaCtrl.addRow: line 41, column 1
Class.CreaNewFatturaCtrl_Test.Costruttore1_Test: line 122, column 

And I think there's the same problem for other methods!
Is there anyone who can help me?
Thanks!
Hello,
I don't understand how to solve this problem :
I have this VF page 
User-added image
I want that if i click on the button '+' in the section "righe offerta" to which corresponds Numero voce  = 00000024,
in the section "righe offerta selezionate" appears the same number (00000024), or  if i click on the button '+' to which corresponds Numero voce  = 00000027,in the section "righe offerta selezionate" appears the number (00000027), and so on.
The problem is that whatever is the button I click, in the section "righe offerta selezionate" appears always the same number 00000024.

This is my code
-VF page
 <apex:page StandardController="Fattura__c" extensions="CreaNewFatturaCtrl" showHeader="false">
<apex:pageBlock title="Nuova fattura">   
<apex:form id="frm">
    <Apex:actionFunction name="addRow" action="{!AddRow}" >    
        <Apex:param name="selectedIndex" value="" assignTo="{!selectedIndex}"/>               
    </apex:actionfunction>
                         
    <apex:pageBlock id="pageid">          
    <apex:pageBlockButtons location="Both">
                <apex:commandButton value="Salva" action="{!saveRecord}"/>
                <apex:commandButton value="Annulla" action="{!cancelRecord}"/>                  
    </apex:pageBlockButtons>

 <apex:variable value="{!0}" var="i"/>    
  <apex:pageBlockSection columns="1"  title="Righe offerta" collapsible="FALSE">                                                                                                  <apex:pageblocktable value="{!qli}" var="roff" >   
                    <apex:column headervalue="Aggiungi">                         
                    <apex:commandButton value="+" action="{!AddRow}"  rerender="pageid"   />                                                                             
                    </apex:column> 
                                          
                    <apex:column value="{!roff.LineNumber}" headervalue="Numero voce" />
                    <apex:column value="{!roff.ListPrice}" headervalue="Prezzo di listino" />
                    <apex:column value="{!roff.UnitPrice}" headervalue="Prezzo di vendita" />
                    <apex:column value="{!roff.Quantity}" headervalue="Quantità" />
                    <apex:column value="{!roff.Importo_IVA__c}" headervalue="Importo IVA" />
                    <apex:column value="{!roff.Totale__c}" headervalue="Totale" />
                    <apex:column value="{!roff.Importo_ancora_da_fatturare__c}" headervalue="Importo ancora da fatturare" />
                    <apex:column value="{!roff.Description}" headervalue="Descrizione riga offerta" /> 
                                                        
        </apex:pageblocktable> 
        <apex:variable value="{!i+1}" var="i"/>   
        </apex:pageblockSection> 
                     
 <apex:pageBlockSection columns="4"  title="Righe offerta selezionate" collapsible="FALSE" >
  <apex:repeat var="qliA" value="{!ListaQLIdaCompilare}">
     <apex:inputField value="{!qliA.LineNumber}"/>
     <apex:inputField value="{!qliA.Descrizione__c}"/>
     <apex:inputField value="{!qliA.N_Ordine_Cliente__c}" />
     <apex:inputField value="{!qliA.perc_da_fatturare__c}"/>
  </apex:repeat>
 </apex:pageblockSection>                                                                              
   </apex:pageBlock>                                              
  </apex:form>                                                            
 </apex:pageBlock>
</apex:page>


-Apex Class
public class CreaNewFatturaCtrl { 

      public Fattura__c fattura {get;set;}    
      private String idQuote;
      private String idQuotelineitem;               
      public List <QuoteLineItem> qli {get;set;}      
      public QuoteLineItem qli1 {get;set;}       
      public Integer selectedIndex   {get;set;}
      public List<QuoteLineItem> ListaQLIdaCompilare {get; set;}
                                                                                                                              
     public CreaNewFatturaCtrl(ApexPages.StandardController stdcontroller) {                
        idQuote= ApexPages.currentPage().getParameters().get('idQuote');              
        ListaQLIdaCompilare = new List<QuoteLineItem>();   
        this.fattura=(Fattura__c) stdController.getRecord();        
        fattura.preventivo__c = idQuote;                                     
        qli = [SELECT Id, LineNumber, ListPrice, UnitPrice, Quantity, Importo_IVA__c, Importo_ancora_da_fatturare__c , Totale__c, Description 
                FROM QuoteLineItem WHERE Quote.Id = :idQuote];                                
        }
                       
          public ApexPages.PageReference addRow(){
          selectedIndex = 0;     
          idQuotelineitem= qli[Integer.ValueOf(selectedIndex)].id;          
          qli1 = [SELECT Id, LineNumber, Descrizione__c, N_Ordine_Cliente__c, perc_da_fatturare__c FROM QuoteLineItem WHERE           QuoteLineItem.Id = :idQuotelineitem LIMIT 1];                                                   
          ListaQLIdaCompilare.add(qli1);
          system.debug('++++++++++++++++++++++++++++++ apexpages.currentpage() '+ apexpages.currentpage().getparameters().get('selectedIndex') );           
          return null;                                 
          }  
                                                                             
        public ApexPages.PageReference saveRecord() {
         insert fattura;
         return new PageReference('/'+fattura.id);
        }
     
        public ApexPages.PageReference cancelRecord() {
         return new PageReference('/'+idQuote);
        }           
}

Do you know the solution to the problem?
Thank you!! 
 
Hello!
I have the button "add" (symbol +) on each row of table .When i click on the add button a new row should inserted just below that row.
For example if clicked the button '+' on row 1 then new row should be add below row 1, but in my case i have this row at the end of the table.
This is my apex class:
public class CreaNewFatturaCtrl { 

      public Fattura__c fattura {get;set;}    
      private String idQuote;     
      public Quote prev {get;set;}   
      public List <QuoteLineItem> qli {get;set;}
           
      Public QuoteLineItem quotelineitem{get;set;}
          
                                                             
     public CreaNewFatturaCTRL(ApexPages.StandardController stdcontroller) {
               
        idQuote= ApexPages.currentPage().getParameters().get('idQuote');
        this.fattura=(Fattura__c) stdController.getRecord();
        fattura.preventivo__c = idQuote;
               
        qli = [SELECT Id, ListPrice, UnitPrice, Quantity, Importo_IVA__c, Importo_ancora_da_fatturare__c , Totale__c, Description FROM QuoteLineItem 
                WHERE Quote.Id = :idQuote]; 
     
        
        }
        
        
        
      public ApexPages.PageReference AddRow () {
                          
        QuoteLineItem quotelineitem = new quotelineitem();
        QuoteLineItem qli1=new  QuoteLineItem();    
        List <QuoteLineItem> newqli = new List <QuoteLineItem>();    
        newqli = [SELECT Id, Desrizione__c, N_Ordine_Cliente__c FROM QuoteLineItem];
        qli.add(quotelineitem);       
        newqli.add(quotelineitem);
        return null; 
     }
         
                       
    public ApexPages.PageReference saveRecord() {
     insert fattura;
     return new PageReference('/'+fattura.id);
    }
    
    public ApexPages.PageReference cancelRecord() {
     return new PageReference('/'+idQuote);
    }
}

And this is my VF page:

<apex:page StandardController="Fattura__c" extensions="CreaNewFatturaCtrl" showHeader="false">
<apex:pageBlock title="Nuova fattura">

    

<apex:form >

    <apex:pageBlock >  

    <apex:pageBlockButtons location="Both">
                <apex:commandButton value="Salva" action="{!saveRecord}"/>
                <apex:commandButton value="Annulla" action="{!cancelRecord}"/>                  
    </apex:pageBlockButtons>
     
  
                 
    <apex:pageBlockSection title="Informazioni" collapsible="FALSE">
  
                <apex:inputField value="{!Fattura__c.Numero_fattura__c}"/>
                <apex:inputField value="{!Fattura__c.Nome_Fattura__c}"/>
                <apex:inputField value="{!Fattura__c.Preventivo__c}" />
                <apex:inputField value="{!Fattura__c.Motivo_stato__c}"/>  
                <apex:inputField value="{!Fattura__c.Banca__c }"/>
                <apex:inputField value="{!Fattura__c.ID_Fattura_SFDC__c}"/>
                <apex:inputField value="{!Fattura__c.Cliente_di_fatturazione__c }"/>
                                                                                                               
                </apex:pageblockSection>
                    
   <apex:pageBlockSection title="Informazioni pagamento e IVA" collapsible="FALSE" >
   
                <apex:inputField value="{!Fattura__c.Modalit_di_pagamento__c}"/>
                <apex:inputField value="{!Fattura__c.Annotazioni__c}"/>
                <apex:inputField value="{!Fattura__c.IVA__c }"                          
              </apex:pageblockSection> 
      
    <apex:pageBlockSection title="Amministrazione" collapsible="FALSE" >
    
                <apex:inputField value="{!Fattura__c.Data_emissione__c}"/>
                <apex:inputField value="{!Fattura__c.Data_pagamento__c}"/>
                <apex:inputField value="{!Fattura__c.Data_scadenza__c}"/>                                   
                <apex:inputField value="{!Fattura__c.Scadenza__c}"/>
                <apex:inputField value="{!Fattura__c.Scadenza_pagam__c}"/>
                <apex:inputField value="{!Fattura__c.Data_annull__c}"/>
                <apex:inputField value="{!Fattura__c.Data_revisione__c}"/>
          </apex:pageblockSection>
 
  <apex:pageBlockSection columns="1"  title="Righe offerta" collapsible="FALSE" >
                                                                                                   
    <apex:pageblocktable value="{!qli}" var="roff">
    
                    <apex:column headervalue="Aggiungi">
                         
                    <apex:commandButton value="+" action="{!AddRow}" />
                                                                                             
                    </apex:column> 
                                 
                    
                    <apex:column value="{!roff.ListPrice}" headervalue="Prezzo di listino" />
                    <apex:column value="{!roff.UnitPrice}" headervalue="Prezzo di vendita" />
                    <apex:column value="{!roff.Quantity}" headervalue="Quantità" />
                    <apex:column value="{!roff.Importo_IVA__c}" headervalue="Importo IVA" />
                    <apex:column value="{!roff.Totale__c}" headervalue="Totale" />
                    <apex:column value="{!roff.Importo_ancora_da_fatturare__c}" headervalue="Importo ancora da fatturare" />
                    <apex:column value="{!roff.Description}" headervalue="Descrizione riga offerta" />
    </apex:pageblocktable>               
    </apex:pageblockSection>  
                    
   </apex:pageBlock>                                              
  </apex:form>                                                         
 </apex:pageBlock>
</apex:page>

This is the result when i click on button '+' on the first row :
User-added image
I want a new row under the first row!
How can I solve this problem?

Thanks.
Hello,
I have a problem with a visualforce page.

This is my code block:

<apex:page  StandardController="Fattura__c" extensions="CreaNuovaFatturaCtrl" showHeader="false">
<apex:pageBlock title="Nuova fattura">

<apex:form >

   <apex:pageBlock id="membAdd" >  

    <apex:pageBlockButtons location="Both">
                <apex:commandButton value="Salva" Action="{!save}" />
                <apex:commandButton value="Annulla" action="{!cancel}"/>                
    </apex:pageBlockButtons> 
                  
  <apex:pageBlockSection title="Informazioni" collapsible="FALSE" columns="1">
  <apex:pageblockSectionItem >
                                    
    <apex:pageBlockTable  value="{!Fattura__c}" var="memb" >                               

             

                  <apex:column  headerValue= "N° Fattura ">

                  <apex:inputField value="{!memb.Numero_fattura__c}"/>
       
               </apex:column>  
                

              <apex:column  headerValue="Nome">

                    <apex:inputField value="{!memb.Nome_Fattura__c}"/>

              </apex:column> 
       

               <apex:column  headerValue="%IVA">

                    <apex:inputField value="{!memb.IVA__c }"/>
                    
                </apex:column>
                

                <apex:column  headerValue="Annotazioni">

                    <apex:inputField value="{!memb.Annotazioni__c}"/>

                </apex:column>
                
                
               <apex:column headerValue="Modalità di pagamento">

                    <apex:inputField value="{!memb.Modalit_di_pagamento__c}"/>

                </apex:column>
                
                
                <apex:column  headerValue="Data di scadenza">

                    <apex:inputField value="{!memb.Data_scadenza__c}"/>

                </apex:column>
                
                
                <apex:column  headerValue="Banca">

                    <apex:inputField value="{!memb.Banca__c }"/>

                </apex:column>
                
                
                <apex:column  headerValue="ID Fattura SFDC">

                    <apex:inputField value="{!memb.ID_Fattura_SFDC__c}"/>

                </apex:column>

           
                          
          </apex:pageBlockTable>
        
        </apex:pageblockSectionItem> 
           
      </apex:pageblockSection>   
            
    </apex:pageBlock>
     
   </apex:form>
     
 </apex:pageBlock>

</apex:page>

And this is the result:
User-added image
I can't to put the fields on different rows of the page.
How can I do to resolve my problem?

Thank you all

 
Hello all! 
I have a standard object "Account" with a custom field(picklist) "Stato";
I want to create a custom field "Nome account" where the value is an automatic incremental number that is assigned when the picklist value of "Stato" is changed to 'Cliente',  if that number was not already present.
For example "AC 000000" where "000000" must be an autonumber.

Can you help me?

Thank you very much!
Hi,
I have a standard object Account with a field named "Società controllante" and another one Quote with a field named "cliente di fatturazione";
I want to create in "cliente di fatturazione" a look up relationship with account, but only accounts that have as their "società controllante" the account to which the quote is tied. So, I have to create in "cliente di fatturazione" this look up relationship and a lookup filter. 
How can I create this lookup filter?
Thanks guys. 


 
Hi,
I have a problem with Opportunity related list Quotes.
I can't see the button "New Quote", I  try to modify quote settings in the opportunity layout (like that https://success.salesforce.com/answers?id=90630000000D5QRAA0) but there's no button header, just the column one is visible. How can I do to solve my issue?