• shashikant pandey
  • NEWBIE
  • 118 Points
  • Member since 2015
  • Salesforce Developer
  • Wipro

  • Chatter
    Feed
  • 1
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 6
    Questions
  • 21
    Replies
1.i was asked a question what are communities , like partner community or there may be more what are these and there usage?    
2.i started study on salesforce lightning and when i open developer guide it has around 500 pages please help to  get exit study material so i can pass interview.
thanks.
Hi Guys,

I am getting this error for test class coverage.
I have used the below method for sendEmail while trying to call method then getting error.
Apex code:

public class sendEmailAttachmentPR {
    public Pricing_Reconfirmation__c prId{get;set;}
    public String primaryContactId {get;set;}
    public String AccountId{get;set;}
    public String sendToemail{get;set;}
    public string subject{get;set;}
    public string fileName{get;set;}
    public string contentType{get;set;}
    public string parentId{get;set;}
    public string attachmentId{get;set;}
    public blob bodyBlob{get;set;}
    public string messageBody{get;set;}
    public string contactId{get;set;}
    
    
    
    public sendEmailAttachmentPR(){
        
        prId = [Select Id,Name,Account__r.Id,Primary_Contact__r.id from Pricing_Reconfirmation__c where id =: ApexPages.currentPage().getParameters().get('id')];
        system.debug('Pricing Reconfirmation Id'+prId);
        primaryContactId = prId.Primary_Contact__r.id;
        AccountId = prId.Account__r.Id;
        system.debug('Primary Contact Id ====>'+primaryContactId);
        system.debug('Account Id ===> '+AccountId);
        
        Contact con = [SELECT ID,Name,Email,Phone from Contact where Id =:primaryContactId];
        sendToemail = con.email;
        contactId = con.Id;
        system.debug('Email Id  =======>'+sendToemail);
        User currentUser = [SELECT Id FROM User Where Id = :UserInfo.getUserId()];
        
        try{
        Attachment  attachFile = [SELECT Id,Name,parentId,LastmodifiedDate,ContentType,body FROM Attachment where parentId=:prId.Id ORDER BY LastmodifiedDate Desc LIMIT 1];
        system.debug('Attachment File Id '+attachFile.id);
        attachmentId = attachFile.Id;
          subject = 'Price Re-Confirmation Doc';
        fileName = attachFile.Name;
        contentType = attachFile.ContentType;
        parentId = attachFile.ParentId;
        bodyBlob = attachFile.body; 
        }
        catch (Exception e){
            ApexPages.Message msg=new ApexPages.Message(ApexPages.Severity.Error,'No attachment available for this record. Please reprice and generate the file.' );
            ApexPages.addMessage(msg);
        }
       
    }
    
    
    public pagereference sendEmailAttchament(){
        
        if(sendToemail !='' && sendToemail!= null){
             Messaging.EmailFileAttachment emailAttach = new Messaging.EmailFileAttachment();
            emailAttach.setContentType(contentType);
            system.debug('ContentType ====> '+contentType);
            emailAttach.setFileName(fileName);
            system.debug('FIle Name ===>'+fileName);
            emailAttach.setInline(false);
            emailAttach.Body = bodyBlob;
            system.debug('Body ====> '+bodyBlob);
        
        
            Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage();
            semail.setEntityAttachments(new Id[]{attachmentId});
            semail.setSubject(subject);
            String[] sendTo = new String[]{sendToemail};
                semail.setToAddresses(sendTo);
            semail.setPlainTextBody(messageBody);
            Messaging.sendEmail(new Messaging.SingleEmailMessage[]{semail});
            system.debug('Mail sent successfully ');
            ApexPages.Message msg=new ApexPages.Message(ApexPages.Severity.CONFIRM,'Email Sent Successfully' );
            ApexPages.addMessage(msg);
            
            
        }
        else {
            ApexPages.Message msg1 = new ApexPages.Message(ApexPages.Severity.Error,'No Contact Email Id Available' );
            ApexPages.addMessage(msg1);
        }
            
        return null;
    }

}

Test Class:
@isTest
public class sendEmailAttachmentPRTest {
    
    
    public static string sendToEmail;
    public static String messageBody;
    public static string subject;
    public static string attachmentId;
    public static Blob bodyBlob;
    public static string fileName;
    public static string contentType;
    
    static testMethod void priceReconfirmationTest(){
     
        Account customer = new Account
            (
                Name = 'Test Customer Account ' + '1',
                ParentId = null,
                AccountCategory__c = 'Academia and Research',
                BillingCountryCode = 'SE',
                CustomerName2__c = 'ARBOR MEDICAL CORPORATION LT',
                CustomerName3__c = 'Test Customer Name 3',
                CustomerName4__c = 'Test Customer Name 4',
                SAPCRMAccountID__c = '1002126370 - SAPCRM',
                BEKeyword__c = 'ARBOR MEBE',
                BusinessEntityFirstPart__c = '605022299',
                CustomerType__c = 'Bill-To',
                Inactive__c = false,
                BillingStreet = 'BALTU PR.145',
                BillingPostalCode = '47125',
                BillingCity = 'KAUNAS',
                BillingCountry = 'sweden',
                Local_ID__c = 'Local_ID__c',
                TaxType__c = '432'
            );
        insert customer;
        
      
        
        Contact cont = new Contact();
        cont.FirstName = 'Sahshikant';
        cont.LastName = 'Pandey';
        cont.Email = 'Test@gmail.com';
        cont.Phone = '+91 7878787878';
        cont.AccountId = customer.Id;
        insert cont;
        
      
        Pricing_Reconfirmation__c pr = new Pricing_Reconfirmation__c();
        pr.Name= 'Test Price Reconfirmation';
        pr.Account__c = customer.Id;
        pr.Primary_Contact__c = cont.Id;
        insert pr;
        
        
        bodyBlob= Blob.valueOf('Unit Test Attachment Body');
        Attachment attach = new Attachment();
        attach.Name='Test attachment';
        attach.ContentType ='application/msword';
        attach.CreatedDate=system.today();
        attach.LastModifiedDate = system.today();
        attach.ParentId = pr.Id;
        attach.Body = bodyBlob;
        insert attach;
        
        List<Attachment> attachments = [SELECT Id,Name,body,LastModifiedDate FROM Attachment where parentId=:pr.Id ORDER BY LastmodifiedDate Desc LIMIT 1];
        
        ApexPages.currentPage().getParameters().put('id', pr.Id);
        messageBody = 'Test Body';
        sendToEmail = cont.Email;
        subject = 'Test Subject';
        attachmentId = attach.Id;
           fileName = attach.Name;
        contentType =attach.ContentType;
        sendEmailAttachmentPR semailpr = New sendEmailAttachmentPR();
        semailpr= new sendEmailAttachmentPR();
        semailpr.sendEmailAttchament();
          
    }
}

Could anyone help me out here to cover the test class method?
Thanks in advance!
Shashikant
I have tried below code for send email with attachment and I am unable to receive the attachment file along with email. Even email also not getting received.Below is my code:

1. I debug the code and I got the attached file id,content-type,Name and all thing which is required but not receiving mail. If anyone can help, i will aprriciate their help. Thanks!
Apex class:
public class sendEmailAttachmentPR {
    public Pricing_Reconfirmation__c prId{get;set;}
    public String primaryContactId {get;set;}
    public String AccountId{get;set;}
    public String email{get;set;}
    
    public pagereference sendEmailAttchament(){
        
        prId = [Select Id,Name,Account__r.Id,Primary_Contact__r.id from Pricing_Reconfirmation__c where id =: ApexPages.currentPage().getParameters().get('id')];
        primaryContactId = prId.Primary_Contact__r.id;
        AccountId = prId.Account__r.Id;
        system.debug('Primary Contact Id ====>'+primaryContactId);
        system.debug('Account Id ===> '+AccountId);
        
        Contact con = [SELECT ID,Name,Email,Phone from Contact where Id =:primaryContactId];
        email = con.email;
        system.debug('Email Id  =======>'+email);
        User currentUser = [SELECT Id FROM User Where Id = :UserInfo.getUserId()];
        
        Attachment attachFile = [SELECT Id,Name,parentId,LastmodifiedDate,ContentType,body FROM Attachment where parentId=:prId.Id ORDER BY LastmodifiedDate Desc LIMIT 1];
        system.debug('Attachment File Id '+attachFile.id);
      
            Messaging.EmailFileAttachment emailAttach = new Messaging.EmailFileAttachment();
            emailAttach.setContentType(attachFile.ContentType);
            system.debug('ContentType ====> '+attachFile.ContentType);
            emailAttach.setFileName(attachFile.Name);
            system.debug('FIle Name ===>'+attachFile.Name);
            emailAttach.setInline(false);
            emailAttach.Body = attachFile.Body;
            system.debug('Body ====> '+emailAttach.Body);
            
            
            Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage();
            semail.setEntityAttachments(new Id[]{attachFile.Id});
            semail.setSubject('Sending Document as attachemnt');
            String[] sendTo = new String[]{'shashikant@xxxxx.com'};
                semail.setToAddresses(sendTo);
            semail.setPlainTextBody('Please find the attached document details');
            Messaging.sendEmail(new Messaging.SingleEmailMessage[]{semail});
            
            system.debug('Email Sent Successfully');
        
            //system.debug('Email Id available for Contact');
     
        return null;
    }

}
VF Page:
<apex:page controller="sendEmailAttachmentPR">
    
    <apex:form >
        <apex:pageMessages />
        <apex:commandButton value="Send Email" action="{!sendEmailAttchament}"/>
    </apex:form>  
</apex:page>

could anyone help me here?
Below are the my code:
Apex class:
public class sendEmailAttachmentPR {
    public Pricing_Reconfirmation__c prId{get;set;}
    public String primaryContactId {get;set;}
    public String AccountId{get;set;}
    public String email{get;set;}
    
    public pagereference sendEmailAttchament(){
        
        prId = [Select Id,Name,Account__r.Id,Primary_Contact__r.id from Pricing_Reconfirmation__c where id =: ApexPages.currentPage().getParameters().get('id')];
        primaryContactId = prId.Primary_Contact__r.id;
        AccountId = prId.Account__r.Id;
        system.debug('Primary Contact Id ====>'+primaryContactId);
        system.debug('Account Id ===> '+AccountId);
        
        Contact con = [SELECT ID,Name,Email,Phone from Contact where Id =:primaryContactId];
        email = con.email;
        system.debug('Email Id  =======>'+email);
        User currentUser = [SELECT Id FROM User Where Id = :UserInfo.getUserId()];
        
        Attachment attachFile = [SELECT Id,Name,parentId,LastmodifiedDate,ContentType,body FROM Attachment where parentId=:prId.Id ORDER BY LastmodifiedDate Desc LIMIT 1];
        system.debug('Attachment File Id '+attachFile.id);
      
            Messaging.EmailFileAttachment emailAttach = new Messaging.EmailFileAttachment();
            emailAttach.setContentType(attachFile.ContentType);
            system.debug('ContentType ====> '+attachFile.ContentType);
            emailAttach.setFileName(attachFile.Name);
            system.debug('FIle Name ===>'+attachFile.Name);
            emailAttach.setInline(false);
            emailAttach.Body = attachFile.Body;
            system.debug('Body ====> '+emailAttach.Body);
            
            
            Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage();
            semail.setEntityAttachments(new Id[]{attachFile.Id});
            semail.setSubject('Sending Document as attachemnt');
            String[] sendTo = new String[]{'shashikant.pandey2@wipro.com'};
                semail.setToAddresses(sendTo);
            semail.setPlainTextBody('Please find the attached document details');
            Messaging.sendEmail(new Messaging.SingleEmailMessage[]{semail});
            
            system.debug('Email Sent Successfully');
        
            //system.debug('Email Id available for Contact');
     
        return null;
    }

}

Button OnClick JavaScript 

{!REQUIRESCRIPT("/soap/ajax/49.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/49.0/apex.js")}
var prId = "{!Pricing_Reconfirmation__c.Id}";
sforce.apex.execute("sendEmailAttachmentPR","sendEmailAttchament",{});
sforce.debug.trace=true;
window.location.reload();
alert("Email Sent Successfully");

Even I am tryning through command button as well but email not getting sent.
VF page:
<apex:page controller="sendEmailAttachmentPR">
    
    <apex:form >
        <apex:pageMessages />
        <apex:commandButton value="Send Email" action="{!sendEmailAttchament}"/>
    </apex:form>  
</apex:page>

Email is not getting send. could anyone help me here?
Hi All,

I have custome object 'PriceReconfirmation__c' and it has notes and attachment related List and also This object having Account Lookup field.
I wanted to clone the attachment from  "PriceReconfirmation__c" attachment to Account lookup record Notes and attachment.

could anyone help me out here. 
Thanks !
Hi All,

While creating dynamic query I am getting Error  Unexpected token : '{ 
An unexpected error has occurred. Your development organization has been notified.


below are my code:
public void agreementSearchResult(){
       // String searchString = '%' + agreementSearch + '%';
         String condition1 = ' Apttus__Contract_End_Date__c >= TODAY';
        String condition2 = ' AND Name LIKE \'%' +agreementSearch+'%\'';
        String condition3 = ' AND Id IN :'+agreementIds;
        String sorting = ' ORDER BY BD_Company_Information__r.Name';
        String query='SELECT Name, Apttus__FF_Agreement_Number__c, Apttus__Primary_Contact__c,Apttus__Primary_Contact__r.Name,' 
                        +'Apttus__Account__c,Apttus__Account__r.Name,BD_Company_Information__c,'
                        +'BD_Company_Information__r.Name,Apttus__Account__r.TopLevelAccountNameText__c,'
                        +'CurrencyIsoCode FROM Apttus__APTS_Agreement__c where';
        
        //system.debug('Query string =>'+query+condition1+condition3+condition2+sorting);
        if (agreementSearch !=null && agreementSearch !=''){
            system.debug('############################################');
            query+=condition1+condition3+condition2+sorting;
            system.debug('Agreement Search string : =>'+query);
            agreementList = Database.query(query);
            system.debug('Agreement List => '+agreementList);
            
        }
        else{
            system.debug('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&');
            query+=condition1+condition3+sorting;
            system.debug('Query String ===>'+query);
            agreementList = Database.query(query);
            system.debug('Empty Agreement Search string: =>'+query);
        }
        
     
    } 


Below are my debug log:
SELECT Name, Apttus__FF_Agreement_Number__c, Apttus__Primary_Contact__c,Apttus__Primary_Contact__r.Name,Apttus__Account__c,Apttus__Account__r.Name,BD_Company_Information__c,BD_Company_Information__r.Name,Apttus__Account__r.TopLevelAccountNameText__c,CurrencyIsoCode FROM Apttus__APTS_Agreement__c where Apttus__Contract_End_Date__c >= TODAY AND Id IN :{a233O0000000GrXQAU, a233O0000000HIOQA2, a233O0000000KiBQAU, a233O0000000LCbQAM, a233O0000000LD0QAM, a233O0000000LDUQA2, a233O0000000LDZQA2, a233O0000000LE3QAM, a233O0000000LbXQAU, a233O0000000NthQAE, ...} ORDER BY BD_Company_Information__r.Name

could anyone can help me out to resolve the issue as soon as possible.

Thanks!!
I have pulled the data into custom table and I puted on Sezrch box to filter the record based on the key entered. (Priority for each key press get the related data.)
I have tried below code for send email with attachment and I am unable to receive the attachment file along with email. Even email also not getting received.Below is my code:

1. I debug the code and I got the attached file id,content-type,Name and all thing which is required but not receiving mail. If anyone can help, i will aprriciate their help. Thanks!
Apex class:
public class sendEmailAttachmentPR {
    public Pricing_Reconfirmation__c prId{get;set;}
    public String primaryContactId {get;set;}
    public String AccountId{get;set;}
    public String email{get;set;}
    
    public pagereference sendEmailAttchament(){
        
        prId = [Select Id,Name,Account__r.Id,Primary_Contact__r.id from Pricing_Reconfirmation__c where id =: ApexPages.currentPage().getParameters().get('id')];
        primaryContactId = prId.Primary_Contact__r.id;
        AccountId = prId.Account__r.Id;
        system.debug('Primary Contact Id ====>'+primaryContactId);
        system.debug('Account Id ===> '+AccountId);
        
        Contact con = [SELECT ID,Name,Email,Phone from Contact where Id =:primaryContactId];
        email = con.email;
        system.debug('Email Id  =======>'+email);
        User currentUser = [SELECT Id FROM User Where Id = :UserInfo.getUserId()];
        
        Attachment attachFile = [SELECT Id,Name,parentId,LastmodifiedDate,ContentType,body FROM Attachment where parentId=:prId.Id ORDER BY LastmodifiedDate Desc LIMIT 1];
        system.debug('Attachment File Id '+attachFile.id);
      
            Messaging.EmailFileAttachment emailAttach = new Messaging.EmailFileAttachment();
            emailAttach.setContentType(attachFile.ContentType);
            system.debug('ContentType ====> '+attachFile.ContentType);
            emailAttach.setFileName(attachFile.Name);
            system.debug('FIle Name ===>'+attachFile.Name);
            emailAttach.setInline(false);
            emailAttach.Body = attachFile.Body;
            system.debug('Body ====> '+emailAttach.Body);
            
            
            Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage();
            semail.setEntityAttachments(new Id[]{attachFile.Id});
            semail.setSubject('Sending Document as attachemnt');
            String[] sendTo = new String[]{'shashikant@xxxxx.com'};
                semail.setToAddresses(sendTo);
            semail.setPlainTextBody('Please find the attached document details');
            Messaging.sendEmail(new Messaging.SingleEmailMessage[]{semail});
            
            system.debug('Email Sent Successfully');
        
            //system.debug('Email Id available for Contact');
     
        return null;
    }

}
VF Page:
<apex:page controller="sendEmailAttachmentPR">
    
    <apex:form >
        <apex:pageMessages />
        <apex:commandButton value="Send Email" action="{!sendEmailAttchament}"/>
    </apex:form>  
</apex:page>

could anyone help me here?
Hi All,

While creating dynamic query I am getting Error  Unexpected token : '{ 
An unexpected error has occurred. Your development organization has been notified.


below are my code:
public void agreementSearchResult(){
       // String searchString = '%' + agreementSearch + '%';
         String condition1 = ' Apttus__Contract_End_Date__c >= TODAY';
        String condition2 = ' AND Name LIKE \'%' +agreementSearch+'%\'';
        String condition3 = ' AND Id IN :'+agreementIds;
        String sorting = ' ORDER BY BD_Company_Information__r.Name';
        String query='SELECT Name, Apttus__FF_Agreement_Number__c, Apttus__Primary_Contact__c,Apttus__Primary_Contact__r.Name,' 
                        +'Apttus__Account__c,Apttus__Account__r.Name,BD_Company_Information__c,'
                        +'BD_Company_Information__r.Name,Apttus__Account__r.TopLevelAccountNameText__c,'
                        +'CurrencyIsoCode FROM Apttus__APTS_Agreement__c where';
        
        //system.debug('Query string =>'+query+condition1+condition3+condition2+sorting);
        if (agreementSearch !=null && agreementSearch !=''){
            system.debug('############################################');
            query+=condition1+condition3+condition2+sorting;
            system.debug('Agreement Search string : =>'+query);
            agreementList = Database.query(query);
            system.debug('Agreement List => '+agreementList);
            
        }
        else{
            system.debug('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&');
            query+=condition1+condition3+sorting;
            system.debug('Query String ===>'+query);
            agreementList = Database.query(query);
            system.debug('Empty Agreement Search string: =>'+query);
        }
        
     
    } 


Below are my debug log:
SELECT Name, Apttus__FF_Agreement_Number__c, Apttus__Primary_Contact__c,Apttus__Primary_Contact__r.Name,Apttus__Account__c,Apttus__Account__r.Name,BD_Company_Information__c,BD_Company_Information__r.Name,Apttus__Account__r.TopLevelAccountNameText__c,CurrencyIsoCode FROM Apttus__APTS_Agreement__c where Apttus__Contract_End_Date__c >= TODAY AND Id IN :{a233O0000000GrXQAU, a233O0000000HIOQA2, a233O0000000KiBQAU, a233O0000000LCbQAM, a233O0000000LD0QAM, a233O0000000LDUQA2, a233O0000000LDZQA2, a233O0000000LE3QAM, a233O0000000LbXQAU, a233O0000000NthQAE, ...} ORDER BY BD_Company_Information__r.Name

could anyone can help me out to resolve the issue as soon as possible.

Thanks!!
1.i was asked a question what are communities , like partner community or there may be more what are these and there usage?    
2.i started study on salesforce lightning and when i open developer guide it has around 500 pages please help to  get exit study material so i can pass interview.
thanks.
Hello,

is there a way way to convert a lead that comes in from web to lead automatically? 
If the lead status is new and lead source is advertisement then we want the lead to convert automatically into an account  and contact but not an opportunity. 

I am new to apex and figure this this may need code, how should this be written or is it possible? 

Thanks, 
Danielle

 
I was working on the Getting Started with Apex Triggers and my code doesn't seem to be working, could someone please, help me find the error. I have stared at it for awhile and can't seem to figure out where my mistake is, any help that can be provided would be greatly appreciated, thank you in advance for your help and cooperation.

trigger AccountAddressTrigger on Account (before insert, before update) {
    for (Account a : [SELECT BillingPostalCode, ShippingPostalCode FROM Account WHERE BillingPostalCode != null AND Match_Billing_Address__c = TRUE AND Id IN :Trigger.New]) {
        a.ShippingPostalCode = a.BillingPostalCode;
    }
}

And my error is: Challenge not yet complete... here's what's wrong: 
Setting 'Match_Billing_Address__c' to true did not update the records as expected.
Trying to complete this challenge.  Recieve the following error message.  Need help resolving:

"Challenge not yet complete... here's what's wrong: 
The page does not bind to the record ID value (in order to link to the record detail page)"

Here's my code for 'AccountList.vfp':

<apex:page standardController="Account" recordSetVar="accounts">
    <table border="1" >
  
        <apex:repeat var="a" value="{!Account}">
            <li>
                <apex:outputLink value="/<record id>">
                    Record
                </apex:outputLink>
            </li>
        </apex:repeat>
            
    </table>
</apex:page>
Hello All,

I keep getting this error on this question:

Challenge not yet complete... here's what's wrong: 
An update to an account record failed to update the mailing address fields of all child contact records. Make sure that the process is correct and that it is activated.

Screenshot:
https://www.dropbox.com/s/30lrmgz8zogxulf/Screenshot%202015-03-23%2016.09.38.png?dl=0

Screenshot 2:

https://www.dropbox.com/s/5wrdht63l18591b/Screenshot%202015-03-23%2016.10.57.png?dl=0

I have gone over this many times and I would appreciate any help to get through this challenge!!


Thanks!
Hello all,

I'm unable to complete the challenges for steps 3-5 in the "Apex Basics & Database" Trailhead module. I can't figure out what could be wrong with any of my classes. The message I get for all three is a variation on:

"Executing the 'searchContactsAndLeads' method failed. Either the method does not exist, is not static, or does not return the expected search results."

All of the classes are public. All of the methods are public and static. I've checked the return types and have successfully run them all with test data. I've tried re-entering the test data provided in the module to make sure it's accurate. No idea what I'm doing that makes this fail. (I'm not using a custom namespace.)

I'll paste my code below. Any tips would be greatly appreciated!

Thanks,
Mike

public class AccountHandler {
    public static ID insertNewAccount(String acctName) {
        Account newAcct = new Account(Name=acctName);
        try {
            insert newAcct;
        } catch (DMLException e) {
            System.debug('A DML exception has occurred: ' +
                         e.getMessage());
            return Null;
        }        
        return newAcct.Id;
    }
}

public class ContactSearch {
    public static List<Contact> searchForContact(
        String lastName, String postalCode) {
            List<Contact> contacts = new List<Contact>();
            contacts = [SELECT Name
                        FROM Contact
                        WHERE LastName = :lastName AND
                        MailingPostalCode = :postalCode ];           
            return contacts;
        }
}

public with sharing class ContactAndLeadSearch {
    public static List<List<SObject>> searchContactsAndLeads(String srch) {
        List<List<SObject>> results = [FIND :srch IN NAME FIELDS];
        }
}
I want to convert DateTime Value to Date Value , Please help me out ????????????