+ Start a Discussion
Leticia Monteiro FreitasLeticia Monteiro Freitas 

Create a pricebook from a csv upload

Hello, I'm trying to create a visualforce page which create a pricekbook from a excel file. 
My doubt is about how I can separate the header of pricebook (Name, account, etc) from de body (Products and prices). 
Can anyone help me?
 
Leticia Monteiro FreitasLeticia Monteiro Freitas
I'm using this apex code:
/*Author: Leticia Freitas v1 - Data de Criação:04/07/2018
Carregar uma lista de preços por cliente via csv */

public class importDataFromCSVController {

public Blob csvFileBody{get;set;}
public string csvAsString{get;set;}
public String[] csvFileLines{get;set;}
public string[] csvBodyData{get;set;}

public Pricebook2 header{get;set;} //header do catalogo de preços
public List <pricebookentry> bodyList{get;set;}// entradas de preços
PricebookEntry body = new PricebookEntry();
Product2 IdProduct;
Account  IdAccount;

 
public importDataFromCSVController(){
    csvFileLines = new String[]{};
    bodyList = New List <PricebookEntry>();
  }
  

  public void importCSVFile(){
       try{
          /*Manipulação do arquivo para um string, por linha*/
           csvAsString =csvFileBody.toString();
           csvFileLines = csvAsString.split('\n'); 
           
           /*Lendo cabeçalho do catalogo de preços */
           Pricebook2 header = new Pricebook2 () ;
           string[] csvHeaderData = csvFileLines[1].split(';');
           header.name = csvHeaderData[1] ;
           insert header; 
           
           /* Atualizar o campo pricebook*/
          
              Pricebook2 IDPrice = header;
              IdAccount = [Select ID from Account where AccountNumber =: csvHeaderData[0]];
              IdAccount.Account_Pricebook__c =  IDPrice.id;
              Update IdAccount;
                   
               
           //lendo entrada da tabela de preços
           for(Integer i=3;i<csvFileLines.size();i++)
           {
            body.Pricebook2 = IDPrice; 
            csvBodyData = csvFileLines[i].split(';');
            IdProduct = [SELECT ProductCode FROM Product2 WHERE id =:csvBodyData[0]];
            body.Product2 = IdProduct;
            body.UnitPrice = Integer.valueOf(csvBodyData[1]);
            bodyList.add(body);
           }
           
        insert bodyList; 
        }
        catch (Exception e)
        {
            ApexPages.Message errorMessage = new ApexPages.Message(ApexPages.severity.ERROR,'Erro na carga');
            ApexPages.addMessage(errorMessage);
        }  
  }
  
}
Leticia Monteiro FreitasLeticia Monteiro Freitas
But still cant upload the csv