# HG changeset patch
# User Alberto Santos <alberto.santos@openbravo.com>
# Date 1446649276 -3600
#      mié nov 04 16:01:16 2015 +0100
# Node ID 5c82f2e51e3c4a16793aa54b51cfebd10469d6c8
# Parent  8ed7fce0f028fe3fa057611c544699fae53da875
Modify files to implement automatic test

diff --git a/src-test/com/openbravo/test/integration/erp/data/masterdata/pricing/pricelist/PriceListData.java b/src-test/com/openbravo/test/integration/erp/data/masterdata/pricing/pricelist/PriceListData.java
--- a/src-test/com/openbravo/test/integration/erp/data/masterdata/pricing/pricelist/PriceListData.java
+++ b/src-test/com/openbravo/test/integration/erp/data/masterdata/pricing/pricelist/PriceListData.java
@@ -74,6 +74,20 @@
     }
 
     /**
+     * Set the costBasedPriceList value
+     * 
+     * Description: This is a Price List Based on Cost
+     * 
+     * @param value
+     *          The costBasedPriceList value.
+     * @return The builder for this class.
+     */
+    public Builder costBasedPriceList(Boolean value) {
+      this.dataFields.put("costBasedPriceList", value);
+      return this;
+    }
+
+    /**
      * Set the currency value
      * 
      * Description: An accepted medium of monetary exchange that may vary across countries.
diff --git a/src-test/com/openbravo/test/integration/erp/data/masterdata/pricing/pricelistschema/PriceListSchemaLinesData.java b/src-test/com/openbravo/test/integration/erp/data/masterdata/pricing/pricelistschema/PriceListSchemaLinesData.java
--- a/src-test/com/openbravo/test/integration/erp/data/masterdata/pricing/pricelistschema/PriceListSchemaLinesData.java
+++ b/src-test/com/openbravo/test/integration/erp/data/masterdata/pricing/pricelistschema/PriceListSchemaLinesData.java
@@ -160,6 +160,34 @@
     }
 
     /**
+     * Set the listPriceDiscount value
+     * 
+     * Description: Discount from list price as a percentage
+     * 
+     * @param value
+     *          The listPriceDiscount value.
+     * @return The builder for this class.
+     */
+    public Builder listPriceMargin(String value) {
+      this.dataFields.put("listPriceMargin", value);
+      return this;
+    }
+
+    /**
+     * Set the unitPriceDiscount value
+     * 
+     * Description: Discount from unit price as a percentage
+     * 
+     * @param value
+     *          The unitPriceDiscount value.
+     * @return The builder for this class.
+     */
+    public Builder unitPriceMargin(String value) {
+      this.dataFields.put("unitPriceMargin", value);
+      return this;
+    }
+
+    /**
      * Set the surchargeListPriceAmount value
      * 
      * Description: List Price Surcharge Amount
diff --git a/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/PriceListVersionTab.java b/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/PriceListVersionTab.java
--- a/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/PriceListVersionTab.java
+++ b/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/PriceListVersionTab.java
@@ -50,6 +50,7 @@
    */
   public PriceListVersionTab(GeneratedTab<?> parentTab) {
     super(TITLE, IDENTIFIER, LEVEL, parentTab);
+    addChildTab(new ProductPriceTab(this));
   }
 
   /**
diff --git a/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/PriceListWindow.java b/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/PriceListWindow.java
--- a/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/PriceListWindow.java
+++ b/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/PriceListWindow.java
@@ -72,4 +72,13 @@
   public PriceListVersionTab selectPriceListVersionTab() {
     return (PriceListVersionTab) selectTab(PriceListVersionTab.IDENTIFIER);
   }
+
+  /**
+   * Select and return the Product Price tab.
+   * 
+   * @return the Product Price tab.
+   */
+  public ProductPriceTab selectProductPriceTab() {
+    return (ProductPriceTab) selectTab(ProductPriceTab.IDENTIFIER);
+  }
 }
diff --git a/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/ProductPriceTab.java b/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/ProductPriceTab.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/ProductPriceTab.java
@@ -0,0 +1,78 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html 
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License. 
+ * The Original Code is Openbravo ERP. 
+ * The Initial Developer of the Original Code is Openbravo S.L.U. 
+ * All portions are Copyright (C) 2010-2012 Openbravo S.L.U. 
+ * All Rights Reserved. 
+ * Contributor(s):
+ *      Leo Arias <leo.arias@openbravo.com>.
+ ************************************************************************
+ */
+
+package com.openbravo.test.integration.erp.gui.masterdata.pricing.pricelist;
+
+import com.openbravo.test.integration.erp.data.masterdata.pricing.pricelist.ProductPriceData;
+import com.openbravo.test.integration.erp.modules.client.application.gui.GeneratedTab;
+import com.openbravo.test.integration.erp.modules.client.application.gui.OBClassicPopUp;
+import com.openbravo.test.integration.erp.modules.client.application.gui.TestRegistry;
+import com.openbravo.test.integration.erp.modules.userinterface.smartclient.gui.Button;
+import com.openbravo.test.integration.erp.testscripts.OpenbravoERPTestException;
+import com.openbravo.test.integration.selenium.SeleniumSingleton;
+import com.openbravo.test.integration.selenium.Sleep;
+
+/**
+ * Executes and verifies actions on OpenbravoERP Product Price tab.
+ * 
+ * @author ASA
+ * 
+ */
+public class ProductPriceTab extends GeneratedTab<ProductPriceData> {
+
+  /** The tab title. */
+  static final String TITLE = "Product Price";
+  /** The tab identifier. */
+  static final String IDENTIFIER = "192";
+  /** The tab level. */
+  private static final int LEVEL = 2;
+
+  /**
+   * Class constructor
+   * 
+   */
+  public ProductPriceTab(GeneratedTab<?> parentTab) {
+    super(TITLE, IDENTIFIER, LEVEL, parentTab);
+  }
+
+  /**
+   * Process the transaction
+   * 
+   * @throws OpenbravoERPTestException
+   */
+  public void process() throws OpenbravoERPTestException {
+    final Button buttonCreateProductPrice = new Button(
+        TestRegistry.getObjectString("org.openbravo.client.application.toolbar.button.create.192"));
+    buttonCreateProductPrice.click();
+
+    final OBClassicPopUp createPeriods = new OBClassicPopUp(
+        TestRegistry
+            .getObjectString("org.openbravo.classicpopup./PriceList/ProductPrice_Edition.html"));
+    createPeriods.selectPopUpWithOKButton();
+    createPeriods.clickOK();
+    SeleniumSingleton.INSTANCE.switchTo().defaultContent();
+
+    // FIXME: This message is failing very often for Discount Price List
+    // // TODO: Check why sometimes is not checking properly the message.
+    Sleep.trySleep();
+    //
+    // waitUntilMessageVisible();
+  }
+}
diff --git a/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/classic/ProductPriceTab.java b/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/classic/ProductPriceTab.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/gui/masterdata/pricing/pricelist/classic/ProductPriceTab.java
@@ -0,0 +1,47 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html 
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License. 
+ * The Original Code is Openbravo ERP. 
+ * The Initial Developer of the Original Code is Openbravo S.L.U. 
+ * All portions are Copyright (C) 2010-2012 Openbravo S.L.U. 
+ * All Rights Reserved. 
+ * Contributor(s):
+ *      Leo Arias <leo.arias@openbravo.com>.
+ ************************************************************************
+ */
+
+package com.openbravo.test.integration.erp.gui.masterdata.pricing.pricelist.classic;
+
+import com.openbravo.test.integration.erp.gui.tabs.GeneratedTab;
+
+/**
+ * Executes and verifies actions on OpenbravoERP Price List Version tab.
+ * 
+ * @author elopio
+ * 
+ */
+public class ProductPriceTab extends GeneratedTab {
+
+  /** The tab title. */
+  static final String TITLE = "Product Price";
+  /** The tab level. */
+  private static final int LEVEL = 2;
+  /** Identifier of the Product Price tab. */
+  public static final String TAB = "tabname192";
+
+  /**
+   * Class constructor
+   * 
+   */
+  public ProductPriceTab() {
+    super(TITLE, LEVEL, TAB);
+  }
+}
diff --git a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/PriceList.java b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/PriceList.java
--- a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/PriceList.java
+++ b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/PriceList.java
@@ -104,6 +104,23 @@
       }
     }
 
+    /**
+     * Execute the process that creates the Price List.
+     * 
+     * @param selenium
+     *          Object used to execute actions on the application.
+     * @param mainPage
+     *          The application main page.
+     * @throws OpenbravoERPTestException
+     */
+    public static void select(MainPage mainPage, PriceListVersionData priceListVersionData)
+        throws OpenbravoERPTestException {
+      if (mainPage.isOnNewLayout()) {
+        PriceListVersionScript.select(mainPage, priceListVersionData);
+      } else {
+        PriceListVersionClassicScript.select(mainPage, priceListVersionData);
+      }
+    }
   }
 
   /**
@@ -112,7 +129,7 @@
    * @author plujan
    * 
    */
-  public static class ProductPrice {
+  public static class ProductPriceTab {
 
     public static void verify(MainPage mainPage, ProductPriceData productPriceData) {
       if (mainPage.isOnNewLayout()) {
@@ -121,5 +138,14 @@
         ProductPriceClassicScript.verify(mainPage, productPriceData);
       }
     }
+
+    public static void select(MainPage mainPage, ProductPriceData productPriceData)
+        throws OpenbravoERPTestException {
+      if (mainPage.isOnNewLayout()) {
+        ProductPriceScript.select(mainPage, productPriceData);
+      } else {
+        ProductPriceClassicScript.select(mainPage, productPriceData);
+      }
+    }
   }
 }
diff --git a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/PriceListVersionClassicScript.java b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/PriceListVersionClassicScript.java
--- a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/PriceListVersionClassicScript.java
+++ b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/PriceListVersionClassicScript.java
@@ -75,4 +75,8 @@
     priceListWindow.verifyProcessCompletedSuccessfully();
   }
 
+  static void select(MainPage mainPage, PriceListVersionData priceListVersionData) {
+    throw new UnsupportedOperationException();
+  }
+
 }
diff --git a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/PriceListVersionScript.java b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/PriceListVersionScript.java
--- a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/PriceListVersionScript.java
+++ b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/PriceListVersionScript.java
@@ -73,4 +73,21 @@
     // priceListVersionTab.assertProcessCompletedSuccessfully();
   }
 
+  /**
+   * Execute the process that creates the Price List.
+   * 
+   * @param selenium
+   *          Object used to execute actions on the application.
+   * @param mainPage
+   *          The application main page.
+   * @throws OpenbravoERPTestException
+   */
+  static void select(MainPage mainPage, PriceListVersionData data) throws OpenbravoERPTestException {
+    final PriceListWindow priceListWindow = (PriceListWindow) mainPage
+        .getView(PriceListWindow.TITLE);
+
+    final PriceListVersionTab priceListVersionTab = priceListWindow.selectPriceListVersionTab();
+    priceListVersionTab.select(data);
+  }
+
 }
diff --git a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/ProductPriceClassicScript.java b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/ProductPriceClassicScript.java
--- a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/ProductPriceClassicScript.java
+++ b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/ProductPriceClassicScript.java
@@ -10,4 +10,9 @@
     throw new UnsupportedOperationException();
   }
 
+  public static void select(MainPage mainPage, ProductPriceData productPriceData) {
+    // TODO Auto-generated method stub
+    throw new UnsupportedOperationException();
+  }
+
 }
diff --git a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/ProductPriceScript.java b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/ProductPriceScript.java
--- a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/ProductPriceScript.java
+++ b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelist/ProductPriceScript.java
@@ -1,13 +1,27 @@
 package com.openbravo.test.integration.erp.testscripts.masterdata.pricing.pricelist;
 
 import com.openbravo.test.integration.erp.data.masterdata.pricing.pricelist.ProductPriceData;
+import com.openbravo.test.integration.erp.gui.masterdata.pricing.pricelist.PriceListWindow;
+import com.openbravo.test.integration.erp.gui.masterdata.pricing.pricelist.ProductPriceTab;
 import com.openbravo.test.integration.erp.modules.client.application.gui.MainPage;
+import com.openbravo.test.integration.erp.testscripts.OpenbravoERPTestException;
 
 public class ProductPriceScript {
 
   public static void verify(MainPage mainPage, ProductPriceData productPriceData) {
-    // TODO Auto-generated method stub
-    throw new UnsupportedOperationException();
+    final PriceListWindow productPriceWindow = (PriceListWindow) mainPage
+        .getView(PriceListWindow.TITLE);
+
+    final ProductPriceTab productPriceTab = productPriceWindow.selectProductPriceTab();
+    productPriceTab.assertData(productPriceData);
+  }
+
+  static void select(MainPage mainPage, ProductPriceData data) throws OpenbravoERPTestException {
+    final PriceListWindow priceListWindow = (PriceListWindow) mainPage
+        .getView(PriceListWindow.TITLE);
+
+    final ProductPriceTab productPriceTab = priceListWindow.selectProductPriceTab();
+    productPriceTab.select(data);
   }
 
 }
diff --git a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelistschema/PriceListSchema.java b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelistschema/PriceListSchema.java
--- a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelistschema/PriceListSchema.java
+++ b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelistschema/PriceListSchema.java
@@ -58,6 +58,24 @@
         PriceListSchemaHeaderClassicScript.create(mainPage, priceListSchemaHeaderData);
       }
     }
+
+    /**
+     * Select the record.
+     * 
+     * @param selenium
+     *          Object used to execute actions on the application.
+     * @param mainPage
+     *          The application main page.
+     * @param priceListSchemaHeaderData
+     *          Price List Schema Header data.
+     */
+    public static void select(MainPage mainPage, PriceListSchemaHeaderData priceListSchemaHeaderData) {
+      if (mainPage.isOnNewLayout()) {
+        PriceListSchemaHeaderScript.select(mainPage, priceListSchemaHeaderData);
+      } else {
+        PriceListSchemaHeaderClassicScript.select(mainPage, priceListSchemaHeaderData);
+      }
+    }
   }
 
   /**
diff --git a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelistschema/PriceListSchemaHeaderClassicScript.java b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelistschema/PriceListSchemaHeaderClassicScript.java
--- a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelistschema/PriceListSchemaHeaderClassicScript.java
+++ b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelistschema/PriceListSchemaHeaderClassicScript.java
@@ -53,4 +53,18 @@
     headerTab.verifySave();
   }
 
+  /**
+   * Select a record.
+   * 
+   * @param selenium
+   *          Object used to execute actions on the application.
+   * @param mainPage
+   *          The application main page.
+   * @param priceListSchemaHeaderData
+   *          The data of the record that will be created.
+   */
+  static void select(MainPage mainPage, PriceListSchemaHeaderData priceListSchemaHeaderData) {
+    throw new UnsupportedOperationException();
+  }
+
 }
diff --git a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelistschema/PriceListSchemaHeaderScript.java b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelistschema/PriceListSchemaHeaderScript.java
--- a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelistschema/PriceListSchemaHeaderScript.java
+++ b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/pricing/pricelistschema/PriceListSchemaHeaderScript.java
@@ -53,4 +53,22 @@
     headerTab.assertSaved();
   }
 
+  /**
+   * Select a record.
+   * 
+   * @param selenium
+   *          Object used to execute actions on the application.
+   * @param mainPage
+   *          The application main page.
+   * @param priceListSchemaHeaderData
+   *          The data of the record that will be created.
+   */
+  static void select(MainPage mainPage, PriceListSchemaHeaderData priceListSchemaHeaderData) {
+    PriceListSchemaWindow priceListSchemaWindow = new PriceListSchemaWindow();
+    mainPage.openView(priceListSchemaWindow);
+
+    HeaderTab headerTab = priceListSchemaWindow.selectHeaderTab();
+    headerTab.select(priceListSchemaHeaderData);
+  }
+
 }
diff --git a/src-test/com/openbravo/test/integration/erp/testsuites/smoke/pricelistmanagement/PRIa_FixedPriceOrCostPlusMarginBased.java b/src-test/com/openbravo/test/integration/erp/testsuites/smoke/pricelistmanagement/PRIa_FixedPriceOrCostPlusMarginBased.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/testsuites/smoke/pricelistmanagement/PRIa_FixedPriceOrCostPlusMarginBased.java
@@ -0,0 +1,170 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html 
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License. 
+ * The Original Code is Openbravo ERP. 
+ * The Initial Developer of the Original Code is Openbravo S.L.U. 
+ * All portions are Copyright (C) 2010-2012 Openbravo S.L.U. 
+ * All Rights Reserved. 
+ * Contributor(s):
+ *  Pablo Lujan <plu@openbravo.com>.
+ ************************************************************************
+ */
+
+package com.openbravo.test.integration.erp.testsuites.smoke.pricelistmanagement;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collection;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import com.openbravo.test.integration.erp.data.LogInData;
+import com.openbravo.test.integration.erp.data.masterdata.pricing.pricelist.PriceListData;
+import com.openbravo.test.integration.erp.data.masterdata.pricing.pricelist.PriceListVersionData;
+import com.openbravo.test.integration.erp.data.masterdata.pricing.pricelist.ProductPriceData;
+import com.openbravo.test.integration.erp.data.masterdata.pricing.pricelistschema.PriceListSchemaHeaderData;
+import com.openbravo.test.integration.erp.data.masterdata.pricing.pricelistschema.PriceListSchemaLinesData;
+import com.openbravo.test.integration.erp.data.selectors.ProductCompleteSelectorData;
+import com.openbravo.test.integration.erp.data.selectors.ProductSelectorData;
+import com.openbravo.test.integration.erp.testscripts.OpenbravoERPTest;
+import com.openbravo.test.integration.erp.testscripts.OpenbravoERPTestException;
+import com.openbravo.test.integration.erp.testscripts.masterdata.pricing.pricelist.PriceList;
+import com.openbravo.test.integration.erp.testscripts.masterdata.pricing.pricelistschema.PriceListSchema;
+
+/**
+ * Execute the Setup User and Role flow of the smoke test suite.
+ * 
+ * @author Alberto Santos
+ */
+@RunWith(Parameterized.class)
+public class PRIa_FixedPriceOrCostPlusMarginBased extends OpenbravoERPTest {
+
+  /** Log4j logger for this class. */
+  private static Logger logger = Logger.getLogger(PRIa_FixedPriceOrCostPlusMarginBased.class);
+
+  /* Data for this test. */
+  private PriceListSchemaHeaderData priceListSchemaHeaderStandardData;
+  private PriceListSchemaLinesData priceListSchemaLinesLaptopData;
+  private PriceListSchemaLinesData priceListSchemaLinesSoccerBallData;
+
+  private PriceListData priceListData;
+  private PriceListVersionData priceListVersionTestData;
+  private PriceListVersionData priceListVersionTestDateData;
+  private ProductPriceData productPriceLaptopData;
+  private ProductPriceData productPriceSoccerBallData;
+  private ProductPriceData productPriceLaptopDataSelect;
+  private ProductPriceData productPriceSoccerBallDataSelect;
+
+  /**
+   * Class constructor.
+   */
+  public PRIa_FixedPriceOrCostPlusMarginBased(
+      PriceListSchemaHeaderData priceListSchemaHeaderStandardData,
+      PriceListSchemaLinesData priceListSchemaLinesLaptopData,
+      PriceListSchemaLinesData priceListSchemaLinesSoccerBallData, PriceListData priceListData,
+      PriceListVersionData priceListVersionTestData,
+      PriceListVersionData priceListVersionTestDateData, ProductPriceData productPriceLaptopData,
+      ProductPriceData productPriceSoccerBallData, ProductPriceData productPriceLaptopDataSelect,
+      ProductPriceData productPriceSoccerBallDataSelect) {
+
+    this.priceListSchemaHeaderStandardData = priceListSchemaHeaderStandardData;
+    this.priceListSchemaLinesLaptopData = priceListSchemaLinesLaptopData;
+    this.priceListSchemaLinesSoccerBallData = priceListSchemaLinesSoccerBallData;
+    this.priceListData = priceListData;
+    this.priceListVersionTestData = priceListVersionTestData;
+    this.priceListVersionTestDateData = priceListVersionTestDateData;
+    this.productPriceLaptopData = productPriceLaptopData;
+    this.productPriceSoccerBallData = productPriceSoccerBallData;
+    this.productPriceLaptopDataSelect = productPriceLaptopDataSelect;
+    this.productPriceSoccerBallDataSelect = productPriceSoccerBallDataSelect;
+
+    logInData = new LogInData.Builder().userName("QAAdmin").password("QAAdmin").build();
+  }
+
+  /**
+   * Test parameters.
+   * 
+   * @return collection of object arrays with data for the test
+   * @throws IOException
+   * 
+   */
+  @Parameters
+  public static Collection<Object[]> setupProductValues() throws IOException {
+    Calendar date = Calendar.getInstance();
+    int day = date.get(Calendar.DAY_OF_MONTH);
+    int month = date.get(Calendar.MONTH) + 1;
+    int year = date.get(Calendar.YEAR);
+    String currentDate = day + "-" + month + "-" + year;
+    return Arrays.asList(new Object[][] { {
+
+        // Create Pricelist Schema Standard
+        new PriceListSchemaHeaderData.Builder().name("Standard").build(),
+        new PriceListSchemaLinesData.Builder().productCategory("Distribution Goods")
+            .product(new ProductSelectorData.Builder().name("Laptop").build())
+            .baseListPrice("Fixed Price or Cost plus Margin Based").fixedListPrice("15.00")
+            .listPriceMargin("15").standardBasePrice("Fixed Price or Cost plus Margin Based")
+            .fixedStandardPrice("0.00").unitPriceMargin("0").build(),
+        new PriceListSchemaLinesData.Builder().productCategory("Distribution Goods")
+            .product(new ProductSelectorData.Builder().name("Soccer Ball").build())
+            .baseListPrice("Fixed Price or Cost plus Margin Based").fixedListPrice("10.00")
+            .listPriceMargin("10").standardBasePrice("Fixed Price or Cost plus Margin Based")
+            .fixedStandardPrice("0.00").unitPriceMargin("0").build(),
+
+        // Create Pricelist
+        new PriceListData.Builder().name("test").salesPriceList(true).currency("EUR")
+            .costBasedPriceList(true).build(),
+        new PriceListVersionData.Builder().name("test").priceListSchema("Standard").build(),
+        new PriceListVersionData.Builder().name("test " + currentDate).priceListSchema("Standard")
+            .basePriceListVersion("test").build(),
+        new ProductPriceData.Builder()
+            .product(new ProductCompleteSelectorData.Builder().name("Laptop").build())
+            .standardPrice("10.00").listPrice("15.00").build(),
+        new ProductPriceData.Builder()
+            .product(new ProductCompleteSelectorData.Builder().name("Soccer Ball").build())
+            .standardPrice("10.00").listPrice("11.00").build(),
+        new ProductPriceData.Builder().product(
+            new ProductCompleteSelectorData.Builder().name("Laptop").build()).build(),
+        new ProductPriceData.Builder().product(
+            new ProductCompleteSelectorData.Builder().name("Soccer Ball").build()).build() } });
+  }
+
+  /**
+   * Test the setup client and organization flow.
+   * 
+   * @throws IOException
+   * @throws OpenbravoERPTestException
+   */
+  @Test
+  public void FixedOrCostPlusMarginPrice() throws IOException, OpenbravoERPTestException {
+    logger.info("** Start of test case [PRIa]Create pricelist schema **");
+    PriceListSchema.Header.select(mainPage, priceListSchemaHeaderStandardData);
+    PriceListSchema.Lines.create(mainPage, priceListSchemaLinesLaptopData);
+    PriceListSchema.Lines.create(mainPage, priceListSchemaLinesSoccerBallData);
+    logger.info("** End of test case [PRIa]Create pricelist schema **");
+
+    logger.info("** Start of test case [PRIa] Create Pricelist **");
+    PriceList.PriceListTab.create(mainPage, priceListData);
+    PriceList.PriceListVersionTab.create(mainPage, priceListVersionTestData);
+    PriceList.PriceListVersionTab.processCreatePricelist(mainPage);
+    PriceList.PriceListVersionTab.create(mainPage, priceListVersionTestDateData);
+    PriceList.PriceListVersionTab.processCreatePricelist(mainPage);
+    PriceList.ProductPriceTab.select(mainPage, productPriceLaptopDataSelect);
+    PriceList.ProductPriceTab.verify(mainPage, productPriceLaptopData);
+    PriceList.ProductPriceTab.select(mainPage, productPriceSoccerBallDataSelect);
+    PriceList.ProductPriceTab.verify(mainPage, productPriceSoccerBallData);
+    logger.info("** End of test case [PRIa] Create Pricelist **");
+  }
+}
