org.broadleafcommerce.admin.client.presenter.promotion.OfferPresenterInitializer.java Source code

Java tutorial

Introduction

Here is the source code for org.broadleafcommerce.admin.client.presenter.promotion.OfferPresenterInitializer.java

Source

/*
 * Copyright 2008-2012 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.broadleafcommerce.admin.client.presenter.promotion;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Timer;
import com.smartgwt.client.data.AdvancedCriteria;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.DSCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import org.broadleafcommerce.admin.client.view.promotion.OfferDisplay;
import org.broadleafcommerce.openadmin.client.BLCMain;
import org.broadleafcommerce.openadmin.client.datasource.dynamic.DynamicEntityDataSource;
import org.broadleafcommerce.openadmin.client.translation.IncompatibleMVELTranslationException;
import org.broadleafcommerce.openadmin.client.translation.MVELToAdvancedCriteriaTranslator;
import org.broadleafcommerce.openadmin.client.view.dynamic.FilterRestartCallback;
import org.broadleafcommerce.openadmin.client.view.dynamic.ItemBuilderDisplay;

import java.util.LinkedHashMap;

/**
 * 
 * @author jfischer
 *
 */
public class OfferPresenterInitializer {

    private static final MVELToAdvancedCriteriaTranslator TRANSLATOR = new MVELToAdvancedCriteriaTranslator();

    protected OfferPresenter presenter;
    protected boolean customerRuleIncompatible = false;
    protected boolean orderRuleIncompatible = false;
    protected boolean fgRuleIncompatible = false;
    protected DynamicEntityDataSource offerItemCriteriaDataSource;
    protected DynamicEntityDataSource offerItemTargetCriteriaDataSource;
    protected DynamicEntityDataSource orderItemDataSource;

    public OfferPresenterInitializer(OfferPresenter presenter, DynamicEntityDataSource offerItemCriteriaDataSource,
            DynamicEntityDataSource offerItemTargetCriteriaDataSource,
            DynamicEntityDataSource orderItemDataSource) {
        this.presenter = presenter;
        this.offerItemCriteriaDataSource = offerItemCriteriaDataSource;
        this.offerItemTargetCriteriaDataSource = offerItemTargetCriteriaDataSource;
        this.orderItemDataSource = orderItemDataSource;
    }

    protected OfferDisplay getDisplay() {
        return presenter.getDisplay();
    }

    public void initSectionBasedOnType(String sectionType, Record selectedRecord, final FilterRestartCallback cb) {
        getDisplay().getCustomerLayout().setVisible(true);
        getDisplay().getOrderSectionLayout().setVisible(true);
        getDisplay().getCustomerSection().setVisible(true);
        getDisplay().getOrderSection().setVisible(true);
        getDisplay().getItemQualificationSectionView().setVisible(true);
        if (sectionType.equals("FULFILLMENT_GROUP")) {
            getDisplay().getFgSectionView().setVisible(true);
        } else {
            getDisplay().getFgSectionView().setVisible(false);
        }
        if (sectionType.equals("ORDER_ITEM")) {
            getDisplay().getBogoQuestionLayout().setVisible(true);
            getDisplay().getItemTargetSectionView().setVisible(true);
            getDisplay().getOrderItemLayout().setVisible(false);
            getDisplay().getRequiredItemsLayout().setVisible(false);
            getDisplay().getOrderItemCombineForm().setVisible(true);
            getDisplay().getOrderItemCombineLabel().setVisible(true);
        } else {
            getDisplay().getBogoQuestionLayout().setVisible(false);
            getDisplay().getItemTargetSectionView().setVisible(false);
            getDisplay().getRequiredItemsLayout().setVisible(true);
            getDisplay().getOrderItemLayout().setVisible(true);
            getDisplay().getOrderItemCombineForm().setVisible(false);
            getDisplay().getOrderItemCombineLabel().setVisible(false);
        }
        if (sectionType.equals("ORDER")) {
            getDisplay().getOrderCombineForm().setVisible(true);
            getDisplay().getOrderCombineLabel().setVisible(true);

            //Order promotions cannot have a discount type of "FIX_PRICE", since it would not be correct to set the order total to a fixed amount
            LinkedHashMap<String, String> valueMap = new LinkedHashMap<String, String>();
            String[][] enumerationValues = (String[][]) getDisplay().getDynamicFormDisplay().getFormOnlyDisplay()
                    .getForm().getDataSource().getField("discountType").getAttributeAsObject("enumerationValues");
            for (int j = 0; j < enumerationValues.length; j++) {
                if (!enumerationValues[j][0].equals("FIX_PRICE")) {
                    valueMap.put(enumerationValues[j][0], enumerationValues[j][1]);
                }
            }
            getDisplay().getDynamicFormDisplay().getFormOnlyDisplay().getForm().getField("discountType")
                    .setValueMap(valueMap);
            if (getDisplay().getDynamicFormDisplay().getFormOnlyDisplay().getForm().getField("discountType")
                    .getValue().equals("FIX_PRICE")) {
                getDisplay().getDynamicFormDisplay().getFormOnlyDisplay().getForm().getField("discountType")
                        .setValue("PERCENT_OFF");
                getDisplay().getOrderCombineForm().enable();
                getDisplay().getFGCombineForm().enable();
                getDisplay().getOrderItemCombineForm().enable();
                getDisplay().getOrderCombineRuleRadio().setValue("YES");
                getDisplay().getFgCombineRuleRadio().setValue("YES");
                getDisplay().getOrderItemCombineRuleRadio().setValue("YES");
            }
        } else {
            getDisplay().getOrderCombineForm().setVisible(false);
            getDisplay().getOrderCombineLabel().setVisible(false);

            //reset the discount types to display all discount types, in case we had previously hidden the "FIX_PRICE" option
            LinkedHashMap<String, String> valueMap = new LinkedHashMap<String, String>();
            String[][] enumerationValues = (String[][]) getDisplay().getDynamicFormDisplay().getFormOnlyDisplay()
                    .getForm().getDataSource().getField("discountType").getAttributeAsObject("enumerationValues");
            for (int j = 0; j < enumerationValues.length; j++) {
                valueMap.put(enumerationValues[j][0], enumerationValues[j][1]);
            }

            getDisplay().getDynamicFormDisplay().getFormOnlyDisplay().getForm().getField("discountType")
                    .setValueMap(valueMap);
        }

        initBasicItems(selectedRecord);
        initCustomerCriteria(selectedRecord);
        initOrderCriteria(selectedRecord);
        initItemQualifiers(selectedRecord, sectionType, cb);

        if (sectionType.equals("ORDER_ITEM")) {
            initItemTargets(selectedRecord, cb);
        } else if (sectionType.equals("FULFILLMENT_GROUP")) {
            initFGCriteria(selectedRecord);
        }

        getDisplay().getAdvancedItemCriteria().setVisible(false);
        getDisplay().getAdvancedItemCriteriaTarget().setVisible(false);
        getDisplay().getRestrictionSectionView().setVisible(false);
    }

    public void initBasicItems(final Record selectedRecord) {
        Boolean isTotalitarianOffer = selectedRecord.getAttributeAsBoolean("totalitarianOffer");
        getDisplay().getRestrictRuleRadio().setValue(isTotalitarianOffer ? "YES" : "NO");
        String deliveryType = selectedRecord.getAttribute("deliveryType");
        getDisplay().getDeliveryTypeRadio().setValue(deliveryType);
        initDeliveryType(deliveryType, selectedRecord);
        getDisplay().getQualifyingItemSubTotal()
                .setValue(selectedRecord.getAttribute("qualifyingItemSubTotal") == null ? 0.0
                        : Float.parseFloat(selectedRecord.getAttribute("qualifyingItemSubTotal")));
    }

    public void initCustomerCriteria(final Record selectedRecord) {
        customerRuleIncompatible = false;
        getDisplay().getCustomerFilterBuilder().clearCriteria();
        String customerRules = selectedRecord.getAttribute("appliesToCustomerRules");
        String customerRule = customerRules == null ? "ALL" : "CUSTOMER_RULE";
        getDisplay().getCustomerRuleRadio().setValue(customerRule);
        if (customerRules != null) {
            getDisplay().getCustomerRuleRadio().setValue(customerRule);
            try {
                AdvancedCriteria myCriteria = TRANSLATOR.createAdvancedCriteria(customerRules,
                        getDisplay().getCustomerFilterBuilder().getDataSource());
                if (myCriteria != null) {
                    getDisplay().getCustomerFilterBuilder().setCriteria(myCriteria);
                }
            } catch (IncompatibleMVELTranslationException e) {
                customerRuleIncompatible = true;
                GWT.log("Could not translate MVEL", e);
                SC.warn(BLCMain.getMessageManager().getString("mvelTranslationProblem"));
                getDisplay().getRawCustomerTextArea().setValue(customerRules);
            }
        }
        initCustomerRule(customerRule, selectedRecord);
    }

    public void initFGCriteria(final Record selectedRecord) {
        fgRuleIncompatible = false;
        getDisplay().getFulfillmentGroupFilterBuilder().clearCriteria();
        String fgRules = selectedRecord.getAttribute("appliesToFulfillmentGroupRules");
        String fgRule = fgRules == null ? "ALL" : "FG_RULE";
        getDisplay().getFgRuleRadio().setValue(fgRule);
        if (fgRules != null) {
            getDisplay().getFgRuleRadio().setValue(fgRule);
            try {
                AdvancedCriteria myCriteria = TRANSLATOR.createAdvancedCriteria(fgRules,
                        getDisplay().getFulfillmentGroupFilterBuilder().getDataSource());
                if (myCriteria != null) {
                    getDisplay().getFulfillmentGroupFilterBuilder().setCriteria(myCriteria);
                }
            } catch (IncompatibleMVELTranslationException e) {
                fgRuleIncompatible = true;
                GWT.log("Could not translate MVEL", e);
                SC.warn(BLCMain.getMessageManager().getString("mvelTranslationProblem"));
                getDisplay().getRawFGTextArea().setValue(fgRules);
            }
        }
        Boolean combinable = selectedRecord.getAttributeAsBoolean("combinableWithOtherOffers");
        if (combinable == null) {
            combinable = true;
        }
        getDisplay().getFgCombineRuleRadio().setValue(combinable ? "YES" : "NO");

        if (getDisplay().getDynamicFormDisplay().getFormOnlyDisplay().getForm().getField("discountType").getValue()
                .equals("FIX_PRICE")) {
            getDisplay().getOrderCombineForm().disable();
            getDisplay().getFGCombineForm().disable();
            getDisplay().getOrderItemCombineForm().disable();
            getDisplay().getOrderCombineRuleRadio().setValue("NO");
            getDisplay().getFgCombineRuleRadio().setValue("NO");
            getDisplay().getOrderItemCombineRuleRadio().setValue("NO");
        }

        initFGRule(fgRule, selectedRecord);
    }

    public void initOrderCriteria(final Record selectedRecord) {
        orderRuleIncompatible = false;
        getDisplay().getOrderFilterBuilder().clearCriteria();
        String orderRules = selectedRecord.getAttribute("appliesToOrderRules");
        String orderRule = orderRules == null ? "NONE" : "ORDER_RULE";
        getDisplay().getOrderRuleRadio().setValue(orderRule);
        if (orderRules != null) {
            try {
                AdvancedCriteria myCriteria = TRANSLATOR.createAdvancedCriteria(orderRules,
                        getDisplay().getOrderFilterBuilder().getDataSource());
                if (myCriteria != null) {
                    getDisplay().getOrderFilterBuilder().setCriteria(myCriteria);
                }
            } catch (IncompatibleMVELTranslationException e) {
                orderRuleIncompatible = true;
                GWT.log("Could not translate MVEL", e);
                SC.warn(BLCMain.getMessageManager().getString("mvelTranslationProblem"));
                getDisplay().getRawOrderTextArea().setValue(orderRules);
            }
        }
        Boolean combinable = selectedRecord.getAttributeAsBoolean("combinableWithOtherOffers");
        if (combinable == null) {
            combinable = true;
        }
        getDisplay().getOrderCombineRuleRadio().setValue(combinable ? "YES" : "NO");
        initOrderRule(orderRule, selectedRecord);
    }

    public void initItemTargets(final Record selectedRecord, final FilterRestartCallback cb) {
        Criteria relationshipCriteria = offerItemTargetCriteriaDataSource
                .createRelationshipCriteria(offerItemTargetCriteriaDataSource.getPrimaryKeyValue(selectedRecord));
        offerItemTargetCriteriaDataSource.fetchData(relationshipCriteria, new DSCallback() {
            public void execute(DSResponse response, Object rawData, DSRequest request) {
                boolean isTargetCriteria = false;
                if (response.getTotalRows() > 0) {
                    for (Record record : response.getData()) {
                        if (Integer.parseInt(record.getAttribute("quantity")) > 0) {
                            isTargetCriteria = true;
                            break;
                        }
                    }
                }

                getDisplay().getNewTargetItemBuilderLayout().setVisible(true);
                if (isTargetCriteria) {
                    getDisplay().removeAllTargetItemBuilders();
                    for (Record record : response.getData()) {
                        if (Integer.parseInt(record.getAttribute("quantity")) > 0) {
                            final ItemBuilderDisplay display = getDisplay()
                                    .addTargetItemBuilder(orderItemDataSource);
                            presenter.bindItemBuilderEvents(display, true);
                            display.getItemFilterBuilder().clearCriteria();
                            display.setRecord(record);
                            display.getItemQuantity().setValue(Integer.parseInt(record.getAttribute("quantity")));
                            try {
                                display.getItemFilterBuilder().setVisible(true);
                                display.getRawItemForm().setVisible(false);
                                AdvancedCriteria myCriteria = TRANSLATOR.createAdvancedCriteria(
                                        record.getAttribute("orderItemMatchRule"), orderItemDataSource);
                                if (myCriteria != null) {
                                    display.getItemFilterBuilder().setCriteria(myCriteria);
                                }
                            } catch (IncompatibleMVELTranslationException e) {
                                GWT.log("Could not translate MVEL", e);
                                SC.warn(BLCMain.getMessageManager().getString("mvelTranslationProblem"));
                                display.setIncompatibleMVEL(true);
                                display.getItemFilterBuilder().setVisible(false);
                                display.getRawItemForm().setVisible(true);
                                display.getRawItemTextArea().setValue(record.getAttribute("orderItemMatchRule"));
                            }
                            display.getRemoveButton().addClickHandler(new ClickHandler() {
                                public void onClick(ClickEvent event) {
                                    getDisplay().removeTargetItemBuilder(display);
                                }
                            });
                        }
                    }
                } else {
                    getDisplay().removeAllTargetItemBuilders();
                    presenter.bindItemBuilderEvents(getDisplay().addTargetItemBuilder(orderItemDataSource), true);
                }
                if (cb != null) {
                    cb.processComplete();
                }
                Timer timer = new Timer() {
                    @Override
                    public void run() {
                        getDisplay().getDynamicFormDisplay().getSaveButton().disable();
                        getDisplay().getDynamicFormDisplay().getRefreshButton().disable();
                    }
                };
                timer.schedule(500);
            }
        });

        String offerItemTargetRuleType = selectedRecord.getAttribute("offerItemTargetRuleType");
        if (offerItemTargetRuleType == null) {
            offerItemTargetRuleType = "NONE";
        }
        if (offerItemTargetRuleType.equals("NONE")) {
            getDisplay().getQualifyForAnotherPromoTargetRadio().setValue("NO");
            getDisplay().getReceiveFromAnotherPromoTargetRadio().setValue("NO");
        } else if (offerItemTargetRuleType.equals("QUALIFIER")) {
            getDisplay().getQualifyForAnotherPromoTargetRadio().setValue("YES");
            getDisplay().getReceiveFromAnotherPromoTargetRadio().setValue("NO");
        } else if (offerItemTargetRuleType.equals("TARGET")) {
            getDisplay().getQualifyForAnotherPromoTargetRadio().setValue("NO");
            getDisplay().getReceiveFromAnotherPromoTargetRadio().setValue("YES");
        } else if (offerItemTargetRuleType.equals("QUALIFIER_TARGET")) {
            getDisplay().getQualifyForAnotherPromoTargetRadio().setValue("YES");
            getDisplay().getReceiveFromAnotherPromoTargetRadio().setValue("YES");
        }
    }

    public void initItemQualifiers(final Record selectedRecord, final String type, final FilterRestartCallback cb) {
        Criteria relationshipCriteria = offerItemCriteriaDataSource
                .createRelationshipCriteria(offerItemCriteriaDataSource.getPrimaryKeyValue(selectedRecord));
        offerItemCriteriaDataSource.fetchData(relationshipCriteria, new DSCallback() {
            public void execute(DSResponse response, Object rawData, DSRequest request) {
                boolean isItemQualifierCriteria = false;
                if (response.getTotalRows() > 0) {
                    for (Record record : response.getData()) {
                        if (Integer.parseInt(record.getAttribute("quantity")) > 0) {
                            isItemQualifierCriteria = true;
                            break;
                        }
                    }
                }

                if (isItemQualifierCriteria) {
                    if (type.equals("ORDER_ITEM")) {
                        initBogoRule("YES");
                    } else {
                        initItemRule("ITEM_RULE");
                    }
                    getDisplay().getBogoRadio().setValue("YES");
                    getDisplay().getItemRuleRadio().setValue("ITEM_RULE");
                    getDisplay().removeAllItemBuilders();
                    for (Record record : response.getData()) {
                        if (Integer.parseInt(record.getAttribute("quantity")) > 0) {
                            final ItemBuilderDisplay display = getDisplay().addItemBuilder(orderItemDataSource);
                            presenter.bindItemBuilderEvents(display, false);
                            display.getItemFilterBuilder().clearCriteria();
                            display.setRecord(record);
                            display.getItemQuantity().setValue(Integer.parseInt(record.getAttribute("quantity")));
                            try {
                                display.getItemFilterBuilder().setVisible(true);
                                display.getRawItemForm().setVisible(false);
                                AdvancedCriteria myCriteria = TRANSLATOR.createAdvancedCriteria(
                                        record.getAttribute("orderItemMatchRule"), orderItemDataSource);
                                if (myCriteria != null) {
                                    display.getItemFilterBuilder().setCriteria(myCriteria);
                                }
                            } catch (IncompatibleMVELTranslationException e) {
                                GWT.log("Could not translate MVEL", e);
                                SC.warn(BLCMain.getMessageManager().getString("mvelTranslationProblem"));
                                display.setIncompatibleMVEL(true);
                                display.getItemFilterBuilder().setVisible(false);
                                display.getRawItemForm().setVisible(true);
                                display.getRawItemTextArea().setValue(record.getAttribute("orderItemMatchRule"));
                            }
                            display.getRemoveButton().addClickHandler(new ClickHandler() {
                                public void onClick(ClickEvent event) {
                                    getDisplay().removeItemBuilder(display);
                                }
                            });
                        }
                    }
                } else {
                    if (type.equals("ORDER_ITEM")) {
                        initBogoRule("NO");
                    } else {
                        initItemRule("NO");
                    }
                    getDisplay().getBogoRadio().setValue("NO");
                    getDisplay().getItemRuleRadio().setValue("NO");
                    getDisplay().removeAllItemBuilders();
                    presenter.bindItemBuilderEvents(getDisplay().addItemBuilder(orderItemDataSource), false);
                }
                if (cb != null) {
                    cb.processComplete();
                }
                Timer timer = new Timer() {
                    @Override
                    public void run() {
                        getDisplay().getDynamicFormDisplay().getSaveButton().disable();
                        getDisplay().getDynamicFormDisplay().getRefreshButton().disable();
                    }
                };
                timer.schedule(500);
            }
        });
        String offerItemQualifierRuleType = selectedRecord.getAttribute("offerItemQualifierRuleType");
        if (offerItemQualifierRuleType == null) {
            offerItemQualifierRuleType = "NONE";
        }
        if (offerItemQualifierRuleType.equals("NONE")) {
            getDisplay().getQualifyForAnotherPromoRadio().setValue("NO");
            getDisplay().getReceiveFromAnotherPromoRadio().setValue("NO");
        } else if (offerItemQualifierRuleType.equals("QUALIFIER")) {
            getDisplay().getQualifyForAnotherPromoRadio().setValue("YES");
            getDisplay().getReceiveFromAnotherPromoRadio().setValue("NO");
        } else if (offerItemQualifierRuleType.equals("TARGET")) {
            getDisplay().getQualifyForAnotherPromoRadio().setValue("NO");
            getDisplay().getReceiveFromAnotherPromoRadio().setValue("YES");
        } else if (offerItemQualifierRuleType.equals("QUALIFIER_TARGET")) {
            getDisplay().getQualifyForAnotherPromoRadio().setValue("YES");
            getDisplay().getReceiveFromAnotherPromoRadio().setValue("YES");
        }

        Boolean combinable = selectedRecord.getAttributeAsBoolean("combinableWithOtherOffers");
        if (combinable == null) {
            combinable = true;
        }
        getDisplay().getOrderItemCombineRuleRadio().setValue(combinable ? "YES" : "NO");

        if (getDisplay().getDynamicFormDisplay().getFormOnlyDisplay().getForm().getField("discountType").getValue()
                .equals("FIX_PRICE")) {
            getDisplay().getOrderCombineForm().disable();
            getDisplay().getFGCombineForm().disable();
            getDisplay().getOrderItemCombineForm().disable();
            getDisplay().getOrderCombineRuleRadio().setValue("NO");
            getDisplay().getFgCombineRuleRadio().setValue("NO");
            getDisplay().getOrderItemCombineRuleRadio().setValue("NO");
        }
    }

    public void disable() {
        getDisplay().getItemQualificationSectionView().setVisible(false);
        getDisplay().getFgSectionView().setVisible(false);
        getDisplay().getBogoQuestionLayout().setVisible(false);
        getDisplay().getItemTargetSectionView().setVisible(false);
        getDisplay().getRequiredItemsLayout().setVisible(false);
        getDisplay().getOrderItemLayout().setVisible(false);
        getDisplay().getOrderCombineForm().setVisible(false);
        getDisplay().getOrderCombineLabel().setVisible(false);
        getDisplay().getCustomerLayout().setVisible(false);
        getDisplay().getOrderSectionLayout().setVisible(false);
        getDisplay().getCustomerSection().setVisible(false);
        getDisplay().getOrderSection().setVisible(false);
    }

    public void initDeliveryType(String deliveryType, Record selectedRecord) {
        if (deliveryType.equals("CODE")) {
            getDisplay().getCodeField().enable();
            getDisplay().getCodeField().show();
            getDisplay().getCodeField().setValue(selectedRecord.getAttribute("offerCode.offerCode"));
        } else {
            getDisplay().getCodeField().disable();
            getDisplay().getCodeField().hide();
            getDisplay().getCodeField().setValue("");
        }

    }

    public void initCustomerRule(String customerRule, Record selectedRecord) {
        if (customerRule.equals("CUSTOMER_RULE")) {
            String customerRules = selectedRecord.getAttribute("appliesToCustomerRules");
            if (customerRules == null || customerRules.trim().equals("")) {
                customerRuleIncompatible = false;
            }
            if (customerRuleIncompatible) {
                getDisplay().getRawCustomerForm().setVisible(true);
                getDisplay().getCustomerFilterBuilder().setVisible(false);
            } else {
                getDisplay().getRawCustomerForm().setVisible(false);
                getDisplay().getCustomerFilterBuilder().setVisible(true);
            }
        } else {
            getDisplay().getRawCustomerForm().setVisible(false);
            getDisplay().getCustomerFilterBuilder().setVisible(false);
        }
    }

    public void initOrderRule(String orderRule, Record selectedRecord) {
        if (orderRule.equals("ORDER_RULE")) {
            String orderRules = selectedRecord.getAttribute("appliesToOrderRules");
            if (orderRules == null || orderRules.trim().equals("")) {
                orderRuleIncompatible = false;
            }
            if (orderRuleIncompatible) {
                getDisplay().getRawOrderForm().setVisible(true);
                getDisplay().getOrderFilterBuilder().setVisible(false);
            } else {
                getDisplay().getRawOrderForm().setVisible(false);
                getDisplay().getOrderFilterBuilder().setVisible(true);
            }
        } else {
            getDisplay().getRawOrderForm().setVisible(false);
            getDisplay().getOrderFilterBuilder().setVisible(false);
        }
    }

    public void initFGRule(String fgRule, Record selectedRecord) {
        if (fgRule.equals("FG_RULE")) {
            String fgRules = selectedRecord.getAttribute("appliesToFulfillmentGroupRules");
            if (fgRules == null || fgRules.trim().equals("")) {
                fgRuleIncompatible = false;
            }
            if (fgRuleIncompatible) {
                getDisplay().getRawFGForm().setVisible(true);
                getDisplay().getFulfillmentGroupFilterBuilder().setVisible(false);
            } else {
                getDisplay().getRawFGForm().setVisible(false);
                getDisplay().getFulfillmentGroupFilterBuilder().setVisible(true);
            }
        } else {
            getDisplay().getRawFGForm().setVisible(false);
            getDisplay().getFulfillmentGroupFilterBuilder().setVisible(false);
        }
    }

    public void initItemRule(String itemRule) {
        if (itemRule.equals("ITEM_RULE")) {
            getDisplay().getNewItemBuilderLayout().setVisible(true);
        } else {
            getDisplay().getNewItemBuilderLayout().setVisible(false);
        }
    }

    public void initBogoRule(String bogoRule) {
        if (bogoRule.equals("YES")) {
            getDisplay().getRequiredItemsLayout().setVisible(true);
            getDisplay().getNewItemBuilderLayout().setVisible(true);
        } else {
            getDisplay().getRequiredItemsLayout().setVisible(false);
            getDisplay().getNewItemBuilderLayout().setVisible(false);
        }
    }

}