Create objects corresponding to whichever field has value from among a list of fields
This


const int STATUS_BASE = 1;
const int STATUS_FIN = 2;
const int STATUS_FINI = 3;
const int STATUS_WAST = 4;
const int STATUS_PRGR = 5;  



screams for an enum like  

public enum StockState
{
    Base = 1, Fin, Fini, Wast, Prgr 
}  


but you should rename the enumvalues in a way that you or Sam the maintainer doesn't has to guess about the meaning. If you or Sam have to fix a bug in 6 months it will be easier if your code can be graps at first glance. Just don't use abbreviations for naming things. 



bool moveStock()  

Based on the .NET Naming Guidlines methods should be named using PascalCase casing hence moveStock() should read MoveStock(). While we are at naming things I would name the method parameter sourceStockState which is IMO more clear.  

stockStatus.date again properties should be named using PascalCase casing.  



Because moveStock can't return false it should be void.



Let's get the meat. If you would change the createStockStatus() method in a way that it takes 2 additional parameters your moveStock() would get more readable because it would get shorter.  

Assume the createStockStatus() would look like so 

private void createStockStatus(StockStatus newObj, int quantityUOM, StockState state)
{
    if (!newObj.isValid()) { return; }

    newObj.quantityUOM = quantityUOM;
    newObj.state = (int)state;
    newObj.deleted = false;
    newObj.submittedId = null;
    UserPersonal user = context.UserPersonal.FirstOrDefault(u =&gt; u.email == currentUserEmail);
    newObj.setCreatedTimeStamp(user); //sets fields CreatedBy, ModifiedBy with value of user
    context.StockStatus.Add(newObj);
    context.SaveChanges();
} 


then the former moveStock() could look like so  

public void moveStock(WStockStatus fromStockStatus)
{
    StockStatus stockStatus = new StockStatus();
    stockStatus.date = fromStockStatus.date;
    stockStatus.location = fromStockStatus.location;

    if(fromStockStatus.qtyBase &gt; 0)
    {
        createStockStatus(stockStatus, fromStockStatus.qtyBase, StockState.Base); 
    }
    if(fromStockStatus.qtyFin &gt; 0)
    {
        createStockStatus(stockStatus, fromStockStatus.qtyFin, StockState.Fin); 
    }
    if(fromStockStatus.qtyFini &gt; 0)
    {
        createStockStatus(stockStatus, fromStockStatus.qtyFini, StockState.Fini); 
    }
    if(fromStockStatus.qtyWast &gt; 0)
    {
        createStockStatus(stockStatus, fromStockStatus.qtyWast, StockState.Wast); 
    }
    if(fromStockStatus.qtyPrgr &gt; 0)
    {
        createStockStatus(stockStatus, fromStockStatus.qtyPrgr, StockState.Prgr); 
    }
}




Edit


  But my main intention was to see if there is a better way by which I can avoid using these multiple if statements, like using a different data structure or use a different format of capturing the data.  


By moving the if condition into createStockStatus() like so  

private void createStockStatus(StockStatus newObj, int quantityUOM, StockState state)
{
    if (quantityUOM &lt;= 0 || !newObj.isValid()) { return; }

    newObj.quantityUOM = quantityUOM;
    newObj.state = (int)state;
    newObj.deleted = false;
    newObj.submittedId = null;
    UserPersonal user = context.UserPersonal.FirstOrDefault(u =&gt; u.email == currentUserEmail);
    newObj.setCreatedTimeStamp(user); //sets fields CreatedBy, ModifiedBy with value of user
    context.StockStatus.Add(newObj);
    context.SaveChanges();
}  


the moveStock() could look like so  

public void moveStock(WStockStatus fromStockStatus)
{
    StockStatus stockStatus = new StockStatus();
    stockStatus.date = fromStockStatus.date;
    stockStatus.location = fromStockStatus.location;

    createStockStatus(stockStatus, fromStockStatus.qtyBase, StockState.Base); 
    createStockStatus(stockStatus, fromStockStatus.qtyFin, StockState.Fin); 
    createStockStatus(stockStatus, fromStockStatus.qtyFini, StockState.Fini); 
    createStockStatus(stockStatus, fromStockStatus.qtyWast, StockState.Wast); 
    createStockStatus(stockStatus, fromStockStatus.qtyPrgr, StockState.Prgr); 

}