You need to sign in to do that
Don't have an account?
Leticia 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?
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?
/*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);
}
}
}