private int getTransactionType() {
   String selectedValue = trasactionViewSelect.getSelectedValue();
   if (selectedValue.equalsIgnoreCase(messages.invoices())) {
     return ClientTransaction.TYPE_INVOICE;
   } else if (selectedValue.equalsIgnoreCase(messages.cashSales())) {
     return ClientTransaction.TYPE_CASH_SALES;
   } else if (selectedValue.equalsIgnoreCase(messages.payeeCreditNotes(Global.get().Customer()))) {
     return ClientTransaction.TYPE_CUSTOMER_CREDIT_MEMO;
   } else if (selectedValue.equalsIgnoreCase(messages.quotes())
       || selectedValue.equalsIgnoreCase(messages.credits())
       || selectedValue.equalsIgnoreCase(messages.Charges())) {
     return ClientTransaction.TYPE_ESTIMATE;
   } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.cashPurchases())) {
     return ClientTransaction.TYPE_CASH_PURCHASE;
   } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.bills())) {
     return ClientTransaction.TYPE_ENTER_BILL;
   } else if (trasactionViewSelect
       .getSelectedValue()
       .equalsIgnoreCase(messages.payeeCreditNotes(Global.get().Vendor()))) {
     return ClientTransaction.TYPE_VENDOR_CREDIT_MEMO;
   } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.expenses())) {
     return ClientTransaction.TYPE_EXPENSE;
   } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.salesOrders())) {
     return TransactionHistory.TYPE_SALES_ORDER;
   } else if (trasactionViewSelect
       .getSelectedValue()
       .equalsIgnoreCase(messages.purchaseOrders())) {
     return TransactionHistory.TYPE_PURCHASE_ORDER;
   }
   return 0;
 }
示例#2
0
  @Override
  public void selfValidate() throws AccounterException {
    super.selfValidate();
    // Checking transaction items empty
    if (getTransactionItems() == null || getTransactionItems().isEmpty()) {
      throw new AccounterException(
          AccounterException.ERROR_NO_RECORDS_TO_SAVE, Global.get().messages().journalEntry());
    }
    // checking for Amounts zero or negative
    List<TransactionItem> entrylist = this.getTransactionItems();
    for (TransactionItem entry : entrylist) {
      if (entry.getLineTotal() == null || entry.getLineTotal() == 0) {
        throw new AccounterException(
            AccounterException.ERROR_AMOUNT_ZERO, Global.get().messages().amount());
      }
    }

    // Checking Accounts same

    for (TransactionItem entry : entrylist) {
      long accountId = entry.getAccount().getID();
      for (TransactionItem entry2 : entrylist) {
        long accountId2 = entry2.getAccount().getID();
        if (!entry.equals(entry2) && accountId == accountId2) {
          throw new AccounterException(
              AccounterException.ERROR_SHOULD_NOT_SELECT_SAME_ACCOUNT_MULTIPLE_TIMES);
        }
      }
    }
    checkCreditsAndDebits();
  }
示例#3
0
 @Override
 public void selfValidate() throws AccounterException {
   if (themeName == null || themeName.trim().isEmpty()) {
     throw new AccounterException(
         AccounterException.ERROR_NAME_NULL, Global.get().messages().brandingTheme());
   }
 }
  @Override
  public void addButtons(ButtonGroup group) {

    ImageButton addCustomerButton = null;
    if (Accounter.isIpadApp()) {
      addCustomerButton = new ImageButton(Accounter.getFinanceImages().ipadAdd(), "add");
    } else {
      addCustomerButton =
          new ImageButton(
              messages.addNew(Global.get().Customer()),
              Accounter.getFinanceImages().portletPageSettings(),
              "add");
    }

    addCustomerButton.addStyleName("settingsButton");
    addCustomerButton.getElement().setId("addCustomerButton");
    addCustomerButton.addClickHandler(
        new ClickHandler() {

          @Override
          public void onClick(ClickEvent event) {
            ActionFactory.getNewCustomerAction().run();
          }
        });

    addCustomerButton.getElement().setAttribute("data-icon", "add");
    addButton(group, addCustomerButton);
  }
  @Override
  public void exportToCsv() {
    if (selectedCustomer != null) {
      Accounter.createExportCSVService()
          .getCustomerTransactionsListExportCsv(
              selectedCustomer,
              getTransactionType(),
              getTransactionStatusType(),
              getStartDate(),
              getEndDate(),
              new AsyncCallback<String>() {

                @Override
                public void onSuccess(String id) {
                  UIUtils.downloadFileFromTemp(
                      trasactionViewSelect.getSelectedValue()
                          + " of "
                          + selectedCustomer.getName()
                          + ".csv",
                      id);
                }

                @Override
                public void onFailure(Throwable caught) {
                  caught.printStackTrace();
                }
              });
    } else {
      Accounter.showError(messages.pleaseSelect(Global.get().Customer()));
    }
  }
示例#6
0
  @Override
  public void writeAudit(AuditWriter w) throws JSONException {
    AccounterMessages messages = Global.get().messages();

    w.put(messages.type(), messages.brandingTheme()).gap();

    w.put(messages.name(), this.themeName);
  }
示例#7
0
 public List<String> getFaxTypes() {
   List<String> valueMap = new ArrayList<String>();
   AccounterMessages messages = Global.get().messages();
   valueMap.add(messages.company());
   valueMap.add(messages.clientAddresshome());
   valueMap.add(messages.other());
   return valueMap;
 }
 @Override
 public String[] getColunms() {
   return new String[] {
     Global.get().customer(),
     getMessages().date(),
     getMessages().type(),
     getMessages().noDot(),
     getMessages().amount()
   };
 }
 @Override
 public String[] getDynamicHeaders() {
   return new String[] {
     Global.get().customer(),
     getMessages().job(),
     getMessages().type(),
     getMessages().date(),
     getMessages().memo(),
     getMessages().account(),
     getMessages().amount()
   };
 }
示例#10
0
  @Override
  public void writeAudit(AuditWriter w) throws JSONException {
    if (getSaveStatus() == STATUS_DRAFT) {
      return;
    }

    AccounterMessages messages = Global.get().messages();

    w.put(messages.type(), messages.journalEntry()).gap();
    w.put(messages.journalEntryNo(), this.number);

    w.put(messages.date(), this.transactionDate.toString()).gap().gap();
    w.put(messages.currency(), this.currencyFactor).gap().gap();

    w.put(messages.memo(), this.memo);

    w.put(messages.details(), this.transactionPayBills);
    w.put(messages.details(), this.transactionReceivePayments);
  }
  private void transactionViewSelectCombo() {
    if (trasactionViewSelect == null) {
      trasactionViewSelect = new SelectCombo(messages.currentView());

      List<String> transactionTypeList = new ArrayList<String>();
      transactionTypeList.add(messages.allTransactions());
      transactionTypeList.add(messages.invoices());
      if (getPreferences().isDoyouwantEstimates()) {
        transactionTypeList.add(messages.quotes());
      }
      if (getCompany().getPreferences().isDelayedchargesEnabled()) {
        transactionTypeList.add(messages.Charges());
        transactionTypeList.add(messages.credits());
      }
      transactionTypeList.add(messages.cashSales());
      transactionTypeList.add(messages.receivedPayments());
      transactionTypeList.add(messages.CustomerCreditNotes());
      transactionTypeList.add(messages.customerRefunds(Global.get().Customer()));
      transactionTypeList.add(messages.cheques());
      if (getPreferences().isSalesOrderEnabled()) {
        transactionTypeList.add(messages.salesOrders());
      }
      trasactionViewSelect.initCombo(transactionTypeList);
      trasactionViewSelect.setComboItem(messages.allTransactions());
      trasactionViewSelect.addSelectionChangeHandler(
          new IAccounterComboSelectionChangeHandler<String>() {

            @Override
            public void selectedComboBoxItem(String selectItem) {
              if (trasactionViewSelect.getSelectedValue() != null) {
                getMessagesList();
                callRPC(0, getPageSize());
              }
            }
          });
    }
  }
  private int getTransactionType() {
    String selectedValue = trasactionViewSelect.getSelectedValue();
    if (selectedValue.equalsIgnoreCase(messages.invoices())) {

      return TYPE_INVOICE;
    } else if (selectedValue.equalsIgnoreCase(messages.cashSales())) {
      return TYPE_CAHSSALE;
    } else if (selectedValue.equalsIgnoreCase(messages.receivedPayments())) {
      return TYPE_RECEIVE_PAYMENT;
    } else if (selectedValue.equalsIgnoreCase(messages.CustomerCreditNotes())) {
      return TYPE_CREDITNOTE;
    } else if (selectedValue.equalsIgnoreCase(messages.quotes())
        || selectedValue.equalsIgnoreCase(messages.credits())
        || selectedValue.equalsIgnoreCase(messages.Charges())) {
      return TYPE_ESTIMATE;
    } else if (selectedValue.equalsIgnoreCase(messages.customerRefunds(Global.get().Customer()))) {
      return TYPE_CUSTOMER_REFUND;
    } else if (selectedValue.equalsIgnoreCase(messages.cheques())) {
      return TYPE_WRITE_CHECK;
    } else if (selectedValue.equalsIgnoreCase(messages.salesOrders())) {
      return TYPE_SALES_ORDER;
    }
    return TYPE_ALL_TRANSACTION;
  }
  private void getMessagesList() {
    String selectedValue = trasactionViewSelect.getSelectedValue();
    transactiontypebyStatusMap = new HashMap<Integer, String>();
    if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.allTransactions())) {
      transactiontypebyStatusMap.put(
          TransactionHistory.ALL_TRANSACTIONS, messages.allTransactions());
    } else if (selectedValue.equalsIgnoreCase(messages.quotes())) {

      transactiontypebyStatusMap.put(TransactionHistory.ALL_QUOTES, messages.allQuotes());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_QUOTES, messages.draftTransaction(messages.quotes()));

    } else if (selectedValue.equalsIgnoreCase(messages.Charges())) {

      transactiontypebyStatusMap.put(TransactionHistory.ALL_CHARGES, messages.allCahrges());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CHARGES, messages.draftTransaction(messages.Charges()));

    } else if (selectedValue.equalsIgnoreCase(messages.credits())) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_CREDITS, messages.allCredits());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CREDITS, messages.draftTransaction(messages.credits()));

    } else if (selectedValue.equalsIgnoreCase(messages.invoices())) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_INVOICES, messages.getallInvoices());
      transactiontypebyStatusMap.put(
          TransactionHistory.OPENED_INVOICES, messages.getOpendInvoices());
      transactiontypebyStatusMap.put(
          TransactionHistory.OVER_DUE_INVOICES, messages.overDueInvoices());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_INVOICES, messages.draftTransaction(messages.invoices()));
    } else if (selectedValue.equalsIgnoreCase(messages.cashSales())) {
      transactiontypebyStatusMap.put(
          TransactionHistory.ALL_CASHSALES, messages.all() + " " + messages.cashSales());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CASHSALES, messages.draftTransaction(messages.cashSales()));

    } else if (selectedValue.equalsIgnoreCase(messages.payeeCreditNotes(Global.get().Customer()))) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_CREDITMEMOS, messages.allCreditMemos());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CREDITMEMOS, messages.draftTransaction(messages.creditNote()));
      // transactiontypebyStatusMap.put(
      // TransactionHistory.OPEND_CREDITMEMOS,
      // messages.openCreditMemos());

    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.cashPurchases())) {
      transactiontypebyStatusMap.put(
          TransactionHistory.ALL_CASH_PURCHASES, messages.allCashPurchases());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CASH_PURCHASES,
          messages.draftTransaction(messages.cashPurchases()));

    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.bills())) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_BILLS, messages.allBills());
      transactiontypebyStatusMap.put(
          TransactionHistory.OPEND_BILLS, messages.all() + " " + messages.openedBills());
      transactiontypebyStatusMap.put(
          TransactionHistory.OVERDUE_BILLS, messages.all() + " " + messages.overDueBills());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_BILLS, messages.draftTransaction(messages.bills()));

    } else if (trasactionViewSelect
        .getSelectedValue()
        .equalsIgnoreCase(messages.payeeCreditNotes(Global.get().Vendor()))) {
      transactiontypebyStatusMap.put(
          TransactionHistory.ALL_VENDOR_CREDITNOTES,
          messages.all() + " " + messages.payeeCreditNotes(Global.get().Vendor()));
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_VENDOR_CREDITNOTES,
          messages.draftTransaction(messages.payeeCreditNotes(Global.get().Vendor())));

    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.expenses())) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_EXPENSES, messages.allExpenses());
      transactiontypebyStatusMap.put(
          TransactionHistory.CREDIT_CARD_EXPENSES, messages.creditCardExpenses());
      transactiontypebyStatusMap.put(TransactionHistory.CASH_EXPENSES, messages.cashExpenses());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CREDIT_CARD_EXPENSES,
          messages.draftTransaction(messages.creditCardExpenses()));
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CASH_EXPENSES,
          messages.draftTransaction(messages.cashExpenses()));

    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.salesOrders())) {

      transactiontypebyStatusMap.put(TransactionHistory.ALL_SALES_ORDERS, messages.all());
      transactiontypebyStatusMap.put(TransactionHistory.DRAFT_SALES_ORDERS, messages.drafts());

    } else if (trasactionViewSelect
        .getSelectedValue()
        .equalsIgnoreCase(messages.purchaseOrders())) {

      transactiontypebyStatusMap.put(TransactionHistory.ALL_PURCHASE_ORDERS, messages.all());
      transactiontypebyStatusMap.put(TransactionHistory.DRAFT_PURCHASE_ORDERS, messages.drafts());
    }
    List<String> typeList = new ArrayList<String>(transactiontypebyStatusMap.values());
    Collections.sort(
        typeList,
        new Comparator<String>() {

          @Override
          public int compare(String entry1, String entry2) {
            return entry1.compareTo(entry2);
          }
        });
    trasactionViewTypeSelect.initCombo(typeList);
    trasactionViewTypeSelect.setComboItem(typeList.get(0));
  }
 @Override
 protected String getViewTitle() {
   return messages.payees(Global.get().Customer());
 }
  private void getMessagesList() {
    transactiontypebyStatusMap = new HashMap<Integer, String>();
    String selectedValue = trasactionViewSelect.getSelectedValue();
    if (selectedValue.equalsIgnoreCase(messages.allTransactions())) {
      transactiontypebyStatusMap.put(
          TransactionHistory.ALL_TRANSACTIONS, messages.allTransactions());
    } else if (selectedValue.equalsIgnoreCase(messages.invoices())) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_INVOICES, messages.getallInvoices());
      transactiontypebyStatusMap.put(
          TransactionHistory.OPENED_INVOICES, messages.getOpendInvoices());
      transactiontypebyStatusMap.put(
          TransactionHistory.OVER_DUE_INVOICES, messages.overDueInvoices());
      if (Accounter.hasPermission(Features.DRAFTS)) {
        transactiontypebyStatusMap.put(
            TransactionHistory.DRAFT_INVOICES, messages.draftTransaction(messages.invoices()));
      }
    } else if (selectedValue.equalsIgnoreCase(messages.cashSales())) {
      transactiontypebyStatusMap.put(
          TransactionHistory.ALL_CASHSALES, messages.all() + " " + messages.cashSales());
      if (Accounter.hasPermission(Features.DRAFTS)) {
        transactiontypebyStatusMap.put(
            TransactionHistory.DRAFT_CASHSALES, messages.draftTransaction(messages.cashSales()));
      }

    } else if (selectedValue.equalsIgnoreCase(messages.quotes())) {

      transactiontypebyStatusMap.put(TransactionHistory.ALL_QUOTES, messages.allQuotes());
      if (Accounter.hasPermission(Features.DRAFTS)) {
        transactiontypebyStatusMap.put(
            TransactionHistory.DRAFT_QUOTES, messages.draftTransaction(messages.quotes()));
      }
    } else if (selectedValue.equalsIgnoreCase(messages.credits())) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_CREDITS, messages.allCredits());
      if (Accounter.hasPermission(Features.DRAFTS)) {
        transactiontypebyStatusMap.put(
            TransactionHistory.DRAFT_CREDITS, messages.draftTransaction(messages.credits()));
      }

    } else if (selectedValue.equalsIgnoreCase(messages.Charges())) {

      transactiontypebyStatusMap.put(TransactionHistory.ALL_CHARGES, messages.allCahrges());
      if (Accounter.hasPermission(Features.DRAFTS)) {
        transactiontypebyStatusMap.put(
            TransactionHistory.DRAFT_CHARGES, messages.draftTransaction(messages.Charges()));
      }

    } else if (selectedValue.equalsIgnoreCase(messages.receivedPayments())) {
      transactiontypebyStatusMap.put(
          TransactionHistory.ALL_RECEIVEDPAYMENTS,
          messages.all() + " " + messages.receivedPayments());
      transactiontypebyStatusMap.put(
          TransactionHistory.RECEV_PAY_BY_CASH, messages.receivedPaymentsbyCash());
      transactiontypebyStatusMap.put(
          TransactionHistory.RECEV_PAY_BY_CHEQUE, messages.receivedPaymentsbyCheque());
      transactiontypebyStatusMap.put(
          TransactionHistory.RECEV_PAY_BY_CREDITCARD, messages.receivedPaymentsbyCreditCard());
      transactiontypebyStatusMap.put(
          TransactionHistory.RECEV_PAY_BY_DIRECT_DEBIT, messages.receivedPaymentsbyDirectDebit());
      transactiontypebyStatusMap.put(
          TransactionHistory.RECEV_PAY_BY_MASTERCARD, messages.receivedPaymentsbyMastercard());
      transactiontypebyStatusMap.put(
          TransactionHistory.RECEV_PAY_BY_ONLINE, messages.receivedPaymentsbyOnlineBanking());
      transactiontypebyStatusMap.put(
          TransactionHistory.RECEV_PAY_BY_STANDING_ORDER,
          messages.receivedPaymentsbyStandingOrder());
      transactiontypebyStatusMap.put(
          TransactionHistory.RECEV_PAY_BY_MAESTRO, messages.receivedPaymentsbySwitchMaestro());

    } else if (selectedValue.equalsIgnoreCase(messages.CustomerCreditNotes())) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_CREDITMEMOS, messages.allCreditMemos());
      if (Accounter.hasPermission(Features.DRAFTS)) {
        transactiontypebyStatusMap.put(
            TransactionHistory.DRAFT_CREDITMEMOS, messages.draftTransaction(messages.creditNote()));
      }
      // transactiontypebyStatusMap.put(
      // TransactionHistory.OPEND_CREDITMEMOS,
      // messages.openCreditMemos());

    } else if (selectedValue.equalsIgnoreCase(messages.customerRefunds(Global.get().Customer()))) {
      transactiontypebyStatusMap.put(
          TransactionHistory.REFUNDS_BY_CREDITCARD, messages.refundsByCreditCard());
      transactiontypebyStatusMap.put(TransactionHistory.REFUNDS_BYCASH, messages.refundsByCash());
      transactiontypebyStatusMap.put(
          TransactionHistory.REFUNDS_BYCHEQUE, messages.refundsByCheck());

      transactiontypebyStatusMap.put(
          TransactionHistory.ALL_CUSTOMER_REFUNDS, messages.allCustomerRefunds());
      if (Accounter.hasPermission(Features.DRAFTS)) {
        transactiontypebyStatusMap.put(
            TransactionHistory.DRAFT_CUSTOMER_REFUNDS,
            messages.draftTransaction(messages.customerRefunds(Global.get().Customer())));
      }
    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.cheques())) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_CHEQUES, messages.allcheques());
      if (Accounter.hasPermission(Features.DRAFTS)) {
        transactiontypebyStatusMap.put(
            TransactionHistory.DRAFT_CHEQUES, messages.draftTransaction(messages.cheques()));
      }
    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.salesOrders())) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_SALES_ORDERS, messages.all());
      transactiontypebyStatusMap.put(
          TransactionHistory.COMPLETED_SALES_ORDERS, messages.completed());
      transactiontypebyStatusMap.put(TransactionHistory.OPEN_SALES_ORDERS, messages.open());
    }
    List<String> typeList = new ArrayList<String>(transactiontypebyStatusMap.values());
    Collections.sort(
        typeList,
        new Comparator<String>() {

          @Override
          public int compare(String entry1, String entry2) {
            return entry1.compareTo(entry2);
          }
        });
    trasactionViewTypeSelect.initCombo(typeList);
    trasactionViewTypeSelect.setComboItem(typeList.get(0));
  }
示例#16
0
/** @author Gajendra Choudhary */
public abstract class Portlet extends WorkbenchPanel {
  protected static AccounterMessages messages = Global.get().messages();

  public static final int TYPE_I_OWE = 1;
  public static final int TYPE_OWE_TO_ME = 2;

  public static final String ACCOUNT_TYPE = "ACCOUNT_TYPE";
  public static final String DATE_RANGE = "DATE_RANGE";
  public static final String LIMIT = "LIMIT";
  public static final String ACCOUNT_ID = "ACCOUNT_ID";

  private ClientCompanyPreferences preferences = Global.get().preferences();
  private HTML title = new HTML();
  private String name;
  protected Label all;
  private StyledPanel vPanel;
  private int previousIndex;
  public HTML refresh;
  private int row;
  private int column;
  public StyledPanel body;
  private ClientPortletConfiguration configuration;
  private PortletPage portletPage;

  protected boolean isInitializing;

  public Portlet(ClientPortletConfiguration configuration, String title, String gotoString) {
    this(title, gotoString);
    setName(title);
    this.setConfiguration(configuration);
  }

  public Portlet(
      ClientPortletConfiguration configuration,
      String title,
      String gotoString,
      String titleWidth) {
    this(title, gotoString, titleWidth);
    setName(title);
    this.setConfiguration(configuration);
  }

  public Portlet(String title, String gotoString, String titleWidth) {
    super(title, gotoString, titleWidth);
    createControls();
  }

  private void createControls() {
    vPanel = new StyledPanel("vPanel");
    body = new StyledPanel("body");
    body.setStyleName("portlet-body");
    addStyleName("portlet");
    vPanel.add(body);
    super.add(vPanel);
  }

  public Portlet(String title, String gotoString) {
    super(title, gotoString);
    createControls();
  }

  public ClientCompany getCompany() {
    return Accounter.getCompany();
  }

  public void setTitle(String title) {
    super.setTitle(title);
    this.title.setHTML(title);
    this.title.setStyleName("portletLabel");
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getName() {
    return name;
  }

  // @Override
  // public void add(Widget w) {
  // this.vPanel.add(w);
  // }

  public void fitToSize(int width, int height) {
    width = Math.max(width, 300);
    height = Math.max(height, 100);
    // this.setWidth(width + "px");
    // this.setHeight(height + "px");
    // setGridWidth(width - 10, height - 40);
  }

  public void createBody() {}

  @Override
  public void titleClicked() {
    super.titleClicked();
    goToClicked();
  }

  public void goToClicked() {}

  public void refreshWidget() {
    isInitializing = true;
  }

  protected void completeInitialization() {
    isInitializing = false;
  }

  public void refreshClicked() {}

  public void helpClicked() {}

  public int getRow() {
    return row;
  }

  public void setRow(int row) {
    this.row = row;
  }

  public int getColumn() {
    return column;
  }

  public void setColumn(int column) {
    this.column = column;
  }

  public void setPreviousIndex(int widgetIndex) {
    this.previousIndex = widgetIndex;
  }

  public int getPreviousIndex() {
    return this.previousIndex;
  }

  public ClientCompanyPreferences getPreferences() {
    return preferences;
  }

  public String getDecimalCharacter() {
    return getPreferences().getDecimalCharacter();
  }

  public String amountAsString(Double amount) {
    return DataUtils.getAmountAsStrings(amount);
  }

  public String getPrimaryCurrencySymbol() {
    return getPreferences().getPrimaryCurrency().getSymbol();
  }

  public ClientPortletConfiguration getConfiguration() {
    return configuration;
  }

  @Override
  protected boolean canClose() {
    return true;
  }

  @Override
  protected boolean canConfigure() {
    return false;
  }

  @Override
  protected void onClose() {
    this.removeFromParent();
    portletPage.config.getPortletConfigurations().remove(getConfiguration());
    portletPage.haveToRefresh = false;
    portletPage.updatePortletPage();
  }

  @Override
  protected void onConfigure() {}

  public PortletPage getPortletPage() {
    return portletPage;
  }

  public void setPortletPage(PortletPage portletPage) {
    this.portletPage = portletPage;
  }

  public boolean isInitializing() {
    return isInitializing;
  }

  @Override
  public void setHeight(String height) {
    // super.setHeight(height);
    // vPanel.setHeight(height);
  }

  public void setConfiguration(ClientPortletConfiguration configuration) {
    this.configuration = configuration;
  }

  public void updateConfiguration() {
    if (portletPage.config.getId() == 0 || configuration.getId() == 0) {
      portletPage.updateConfiguration();
      portletPage.updatePortletPage();
    } else {
      Accounter.createHomeService()
          .savePortletConfiguration(
              configuration,
              new AsyncCallback<Boolean>() {

                @Override
                public void onSuccess(Boolean arg0) {}

                @Override
                public void onFailure(Throwable arg0) {
                  System.err.println(arg0.toString());
                }
              });
    }
  }
}
 @Override
 public String getTitle() {
   return messages.salesByCustomerDetail(Global.get().Customer());
 }
  @Override
  protected void addRequirements(List<Requirement> list) {
    list.add(
        new VendorRequirement(
            VENDOR,
            getMessages().pleaseEnterName(Global.get().Vendor()),
            getMessages().payeeName(Global.get().Vendor()),
            false,
            true,
            new ChangeListner<Vendor>() {

              @Override
              public void onSelection(Vendor value) {
                try {
                  double mostRecentTransactionCurrencyFactor =
                      CommandUtils.getMostRecentTransactionCurrencyFactor(
                          getCompanyId(),
                          value.getCurrency().getID(),
                          new ClientFinanceDate().getDate());
                  CreateCreditCardChargeCommand.this
                      .get(CURRENCY_FACTOR)
                      .setValue(mostRecentTransactionCurrencyFactor);
                } catch (AccounterException e) {
                  e.printStackTrace();
                }
              }
            }) {

          @Override
          protected String getSetMessage() {
            return getMessages().hasSelected(Global.get().Vendor());
          }

          @Override
          protected List<Vendor> getLists(Context context) {
            return getVendors();
          }

          @Override
          protected boolean filter(Vendor e, String name) {
            return e.getName().startsWith(name);
          }
        });

    list.add(
        new CurrencyFactorRequirement(
            CURRENCY_FACTOR,
            getMessages().pleaseEnter(getMessages().currencyFactor()),
            getMessages().currencyFactor()) {
          @Override
          protected Currency getCurrency() {
            Vendor vendor = (Vendor) CreateCreditCardChargeCommand.this.get(VENDOR).getValue();
            return vendor.getCurrency();
          }
        });

    list.add(
        new AmountRequirement(
            DISCOUNT,
            getMessages().pleaseEnter(getMessages().discount()),
            getMessages().discount(),
            true,
            true) {
          @Override
          public Result run(
              Context context, Result makeResult, ResultList list, ResultList actions) {
            if (getPreferences().isTrackDiscounts()
                && !getPreferences().isDiscountPerDetailLine()) {
              return super.run(context, makeResult, list, actions);
            } else {
              return null;
            }
          }
        });

    list.add(
        new TransactionItemTableRequirement(
            ITEMS,
            getMessages().pleaseEnter(getMessages().itemName()),
            getMessages().items(),
            true,
            true) {

          @Override
          public List<Item> getItems(Context context) {
            Set<Item> items2 = context.getCompany().getItems();
            List<Item> items = new ArrayList<Item>();
            for (Item item : items2) {
              if (item.isISellThisItem()) {
                if (item.isActive()) items.add(item);
              }
            }
            return items;
          }

          @Override
          public boolean isSales() {
            return true;
          }

          @Override
          protected Currency getCurrency() {
            return ((Vendor) CreateCreditCardChargeCommand.this.get(VENDOR).getValue())
                .getCurrency();
          }

          @Override
          protected double getCurrencyFactor() {
            return CreateCreditCardChargeCommand.this.getCurrencyFactor();
          }

          @Override
          protected double getDiscount() {
            Double value2 = CreateCreditCardChargeCommand.this.get(DISCOUNT).getValue();
            return value2;
          }
        });

    list.add(
        new TransactionAccountTableRequirement(
            ACCOUNTS,
            getMessages().pleaseEnterNameOrNumber(getMessages().Account()),
            getMessages().Account(),
            true,
            true) {

          @Override
          protected List<Account> getAccounts(Context context) {
            List<Account> filteredList = new ArrayList<Account>();
            for (Account obj : context.getCompany().getAccounts()) {
              if (new ListFilter<Account>() {

                @Override
                public boolean filter(Account account) {
                  if (account.getType() != Account.TYPE_CASH
                      && account.getType() != Account.TYPE_BANK
                      && account.getType() != Account.TYPE_INVENTORY_ASSET
                      && account.getType() != Account.TYPE_ACCOUNT_RECEIVABLE
                      && account.getType() != Account.TYPE_ACCOUNT_PAYABLE
                      && account.getType() != Account.TYPE_INCOME
                      && account.getType() != Account.TYPE_OTHER_INCOME
                      && account.getType() != Account.TYPE_OTHER_CURRENT_ASSET
                      && account.getType() != Account.TYPE_OTHER_CURRENT_LIABILITY
                      && account.getType() != Account.TYPE_OTHER_ASSET
                      && account.getType() != Account.TYPE_EQUITY
                      && account.getType() != Account.TYPE_LONG_TERM_LIABILITY) {
                    return true;
                  } else {
                    return false;
                  }
                }
              }.filter(obj)) {
                filteredList.add(obj);
              }
            }
            return filteredList;
          }

          @Override
          public boolean isSales() {
            return true;
          }

          @Override
          protected Currency getCurrency() {
            return ((Vendor) CreateCreditCardChargeCommand.this.get(VENDOR).getValue())
                .getCurrency();
          }

          @Override
          protected boolean isTrackTaxPaidAccount() {
            return false;
          }

          @Override
          protected double getDiscount() {
            Double value2 = CreateCreditCardChargeCommand.this.get(DISCOUNT).getValue();
            return value2;
          }
        });

    list.add(
        new DateRequirement(
            DATE,
            getMessages().pleaseEnter(getMessages().date()),
            getMessages().date(),
            true,
            true));

    list.add(
        new NumberRequirement(
            NUMBER,
            getMessages().pleaseEnter(getMessages().number()),
            getMessages().number(),
            true,
            false));

    list.add(
        new ContactRequirement(
            CONTACT,
            getMessages().pleaseEnter(getMessages().contactName()),
            getMessages().contacts(),
            true,
            true,
            null) {

          @Override
          protected Payee getPayee() {
            return get(CUSTOMER).getValue();
          }
        });
    list.add(
        new NumberRequirement(
            PHONE,
            getMessages().pleaseEnter(getMessages().phoneNumber()),
            getMessages().phone(),
            true,
            true));

    list.add(
        new NameRequirement(
            MEMO,
            getMessages().pleaseEnter(getMessages().memo()),
            getMessages().memo(),
            true,
            true));

    list.add(
        new StringListRequirement(
            PAYMENT_METHOD,
            getMessages().pleaseEnterName(getMessages().paymentMethod()),
            getMessages().paymentMethod(),
            true,
            true,
            null) {

          @Override
          protected String getSetMessage() {
            return getMessages().hasSelected(getMessages().paymentMethod());
          }

          @Override
          protected String getSelectString() {
            return getMessages().pleaseSelect(getMessages().paymentMethod());
          }

          @Override
          protected List<String> getLists(Context context) {
            return getPaymentMethods();
          }

          @Override
          protected String getEmptyString() {
            return getMessages().youDontHaveAny(getMessages().paymentMethod());
          }
        });

    list.add(
        new AccountRequirement(
            PAY_FROM,
            getMessages().pleaseSelect(getMessages().bankAccount()),
            getMessages().bankAccount(),
            false,
            false,
            null) {

          @Override
          protected String getSetMessage() {
            return getMessages().hasSelected(getMessages().payFrom());
          }

          @Override
          protected void setCreateCommand(CommandList list) {
            list.add(new UserCommand("newBankAccount", getMessages().bank()));
            list.add(
                new UserCommand(
                    "newBankAccount",
                    "Create Other CurrentAsset Account",
                    getMessages().otherCurrentAsset()));
            list.add(
                new UserCommand("newBankAccount", "Create Cash Account", getMessages().cash()));
            list.add(
                new UserCommand(
                    "newBankAccount", "Create Inventory Account", getMessages().inventoryAsset()));
            list.add(
                new UserCommand("newBankAccount", "Create Paypal Account", getMessages().paypal()));
            list.add(
                new UserCommand(
                    "newBankAccount", "Create Creditcard Account", getMessages().creditCard()));
          }

          @Override
          protected List<Account> getLists(Context context) {
            List<Account> filteredList = new ArrayList<Account>();
            for (Account obj : context.getCompany().getAccounts()) {
              if (new ListFilter<Account>() {

                @Override
                public boolean filter(Account e) {
                  if (e.getIsActive()
                      && (e.getSubBaseType() == ClientAccount.SUBBASETYPE_CURRENT_ASSET
                          || e.getType() == ClientAccount.TYPE_CREDIT_CARD)) {
                    return true;
                  }
                  return false;
                }
              }.filter(obj)) {
                filteredList.add(obj);
              }
            }
            return filteredList;
          }

          @Override
          protected String getEmptyString() {
            return getMessages().youDontHaveAny(getMessages().Accounts());
          }

          @Override
          protected boolean filter(Account e, String name) {
            return false;
          }
        });

    list.add(
        new DateRequirement(
            DELIVERY_DATE,
            getMessages().pleaseEnter(getMessages().deliveryDate()),
            getMessages().deliveryDate(),
            true,
            true));

    list.add(
        new TaxCodeRequirement(
            TAXCODE,
            getMessages().pleaseEnterName(getMessages().taxCode()),
            getMessages().taxCode(),
            false,
            true,
            new ChangeListner<TAXCode>() {

              @Override
              public void onSelection(TAXCode value) {
                setTaxCodeToItems(value);
              }
            }) {

          @Override
          protected List<TAXCode> getLists(Context context) {
            return new ArrayList<TAXCode>(context.getCompany().getTaxCodes());
          }

          @Override
          protected boolean filter(TAXCode e, String name) {
            return e.getName().toLowerCase().startsWith(name);
          }
        });

    list.add(
        new BooleanRequirement(IS_VAT_INCLUSIVE, true) {
          @Override
          public Result run(
              Context context, Result makeResult, ResultList list, ResultList actions) {
            ClientCompanyPreferences preferences = context.getPreferences();
            if (preferences.isTrackTax()) {
              return super.run(context, makeResult, list, actions);
            }
            return null;
          }

          @Override
          protected String getTrueString() {
            return "Include VAT with Amount enabled";
          }

          @Override
          protected String getFalseString() {
            return "Include VAT with Amount disabled";
          }
        });
  }
  @Override
  protected void createControls() {
    Label lab1 = new Label(messages.payeePrePayment(Global.get().Customer()));
    lab1.setStyleName("label-title");
    // lab1.setHeight("35px");
    transactionDateItem = createTransactionDateItem();

    transactionNumber = createTransactionNumberItem();

    listforms = new ArrayList<DynamicForm>();
    locationCombo = createLocationCombo();
    DynamicForm dateNoForm = new DynamicForm("datenumber-panel");
    dateNoForm.add(transactionDateItem, transactionNumber);

    StyledPanel datepanel = new StyledPanel("datepanel");
    datepanel.add(dateNoForm);

    StyledPanel labeldateNoLayout = new StyledPanel("labeldateNoLayout");
    labeldateNoLayout.add(lab1);
    labeldateNoLayout.add(datepanel);
    // customer and address
    customerCombo = createCustomerComboItem(messages.payeeName(Global.get().Customer()));

    billToCombo = createBillToComboItem(messages.address());
    billToCombo.setEnabled(false);

    // Ending and Vendor Balance
    bankBalText = new AmountField(messages.bankBalance(), this, getBaseCurrency(), "bankBalText");
    bankBalText.setEnabled(false);

    customerBalText =
        new AmountField(
            messages.payeeBalance(Global.get().Customer()),
            this,
            getBaseCurrency(),
            "customerBalText");
    customerBalText.setEnabled(false);

    DynamicForm balForm = new DynamicForm("balForm");
    if (locationTrackingEnabled) balForm.add(locationCombo);
    classListCombo = createAccounterClassListCombo();
    if (isTrackClass()) {
      balForm.add(classListCombo);
    }
    jobListCombo = createJobListCombo();
    if (isTrackJob()) {
      jobListCombo.setEnabled(false);
      balForm.add(jobListCombo);
    }
    balForm.add(bankBalText, customerBalText);
    // balForm.getCellFormatter().setWidth(0, 0, "205px");

    // payment
    depositInCombo = createDepositInComboItem(bankBalText);
    // depositInCombo.setPopupWidth("500px");

    amountText = new AmountField(messages.amount(), this, getBaseCurrency(), "amountText");
    amountText.setRequired(true);
    amountText.addBlurHandler(getBlurHandler());

    paymentMethodCombo = createPaymentMethodSelectItem();
    paymentMethodCombo.setComboItem(UIUtils.getpaymentMethodCheckBy_CompanyType(messages.check()));
    // printCheck = new CheckboxItem(messages.toBePrinted());
    // printCheck.setValue(true);
    // printCheck.addChangeHandler(new ValueChangeHandler<Boolean>() {
    //
    // @Override
    // public void onValueChange(ValueChangeEvent<Boolean> event) {
    // isChecked = (Boolean) event.getValue();
    // if (isChecked) {
    // if (printCheck.getValue().toString()
    // .equalsIgnoreCase("true")) {
    // checkNo.setValue(messages.toBePrinted());
    // checkNo.setDisabled(true);
    // } else {
    // if (depositInAccount == null)
    // checkNo.setValue(messages
    // .toBePrinted());
    // else if (isInViewMode()) {
    // checkNo.setValue(((ClientCustomerPrePayment) transaction)
    // .getCheckNumber());
    // }
    // }
    // } else
    // // setCheckNumber();
    // checkNo.setValue("");
    // checkNo.setDisabled(false);
    //
    // }
    // });
    checkNo = createCheckNumberItm();
    // checkNo.setValue(messages.toBePrinted());
    // checkNo.setDisabled(true);
    checkNo.addChangeHandler(
        new ChangeHandler() {

          @Override
          public void onChange(ChangeEvent event) {
            checkNumber = checkNo.getValue().toString();
          }
        });
    checkNo.setEnabled(!isInViewMode());
    currencyWidget = createCurrencyFactorWidget();
    payForm = UIUtils.form(messages.payment());
    memoTextAreaItem = createMemoTextAreaItem();
    // refText = createRefereceText();
    // refText.setWidth(100);
    payForm.add(
        customerCombo,
        billToCombo,
        depositInCombo,
        amountText,
        paymentMethodCombo,
        checkNo,
        memoTextAreaItem);
    // memo and Reference
    ClientAccount selectedValue = depositInCombo.getSelectedValue();
    if (selectedValue != null) {
      bankBalText.setAmount(selectedValue.getTotalBalanceInAccountCurrency());
      bankBalText.setCurrency(getCompany().getCurrency(selectedValue.getCurrency()));
    }

    // payForm.getCellFormatter().setWidth(0, 0, "160px");

    StyledPanel leftPanel = new StyledPanel("leftPanel");
    leftPanel.add(payForm);
    // leftPanel.add(payForm);
    // leftPanel.add(memoForm);

    StyledPanel rightPanel = new StyledPanel("rightPanel");
    rightPanel.add(balForm);
    if (isMultiCurrencyEnabled()) {
      rightPanel.add(currencyWidget);
    }

    StyledPanel mainVLay = new StyledPanel("mainVLay");
    mainVLay.add(voidedPanel);
    mainVLay.add(labeldateNoLayout);
    StyledPanel hLay = getTopLayOut();
    if (hLay != null) {
      hLay.add(leftPanel);
      hLay.add(rightPanel);
      mainVLay.add(hLay);
    } else {
      mainVLay.add(leftPanel);
      mainVLay.add(rightPanel);
    }

    this.add(mainVLay);

    /* Adding dynamic forms in list */
    listforms.add(dateNoForm);
    listforms.add(balForm);
    listforms.add(payForm);
    // settabIndexes();
  }
  private void creatControls() {

    StyledPanel mainPanel = new StyledPanel("customerCenter");

    StyledPanel leftVpPanel = new StyledPanel("leftPanel");

    viewTypeCombo();
    DynamicForm viewform = new DynamicForm("viewform");
    viewform.setStyleName("filterPanel");
    viewform.add(activeInActiveSelect);
    leftVpPanel.add(viewform);
    custGrid = new CustomersListGrid();
    custGrid.init();
    initCustomersListGrid();
    leftVpPanel.add(custGrid);

    custGrid.setStyleName("cusotmerCentrGrid");

    rightVpPanel = new StyledPanel("rightPanel");
    dummyPanel = new StyledPanel("dummyPanel");

    detailsPanel = new CustomerDetailsPanel(selectedCustomer);
    rightVpPanel.add(detailsPanel);
    custGrid.setCustomerSelectionListener(
        new CustomerSelectionListener() {
          @Override
          public void cusotmerSelected() {
            OncusotmerSelected();
          }
        });
    transactionViewSelectCombo();
    transactionViewTypeSelectCombo();
    transactionDateRangeSelector();
    DynamicForm transactionViewform = new DynamicForm("transactionViewform");

    transactionViewform.add(trasactionViewSelect, trasactionViewTypeSelect, dateRangeSelector);

    transactionGridpanel = new StyledPanel("transactionGridpanel");
    transactionGridpanel.add(transactionViewform);
    custHistoryGrid =
        new CustomerTransactionsHistoryGrid() {
          @Override
          public void initListData() {
            OncusotmerSelected();
          }
        };
    custHistoryGrid.init();
    custHistoryGrid.addEmptyMessage(messages.pleaseSelectAnyPayee(Global.get().Customer()));
    int pageSize = getPageSize();
    custHistoryGrid.addRangeChangeHandler2(
        new Handler() {

          @Override
          public void onRangeChange(RangeChangeEvent event) {
            onPageChange(event.getNewRange().getStart(), event.getNewRange().getLength());
          }
        });
    SimplePager pager =
        new SimplePager(
            TextLocation.CENTER,
            (Resources) GWT.create(Resources.class),
            false,
            pageSize * 2,
            true);
    pager.setDisplay(custHistoryGrid);
    updateRecordsCount(0, 0, 0);

    if (Accounter.isIpadApp()) {

      transactionButton = new Button(messages.transaction());
      transactionButton.addClickHandler(
          new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {
              ActionFactory.getCustomerTransactionListHistory(selectedCustomer).run();
            }
          });

    } else {
      dummyPanel.add(transactionGridpanel);
      dummyPanel.add(custHistoryGrid);
      dummyPanel.add(pager);
    }
    rightVpPanel.add(dummyPanel);
    Label labelTitle = new Label(messages.customerCentre(Global.get().Customer()));
    labelTitle.setStyleName("label-title");

    mainPanel.add(leftVpPanel);
    mainPanel.add(rightVpPanel);
    deleteButtonPanel = new StyledPanel("deleteButtonPanel");
    add(labelTitle);
    add(deleteButtonPanel);
    add(mainPanel);
  }
public class InventoryCentreView<T> extends AbstractBaseView<T>
    implements ISavableView<HashMap<String, Object>>, IEditableView {

  private ClientItem selectedItem;
  private ArrayList<ClientItem> listOfItems;
  protected ArrayList<ClientFinanceDate> startEndDates;
  private ArrayList<TransactionHistory> records;

  private ItemDetailsPanel itemDetailsPanel;
  private InventoryCentreItemsListGrid itemsListGrid;
  private SelectCombo activeInActiveSelect,
      trasactionViewSelect,
      trasactionViewTypeSelect,
      dateRangeSelector;
  private StyledPanel transactionGridpanel;
  private ItemTransactionsHistoryGrid transactionHistoryGrid;
  private HashMap<Integer, String> transactiontypebyStatusMap;
  private boolean isActiveItems = true;
  private ClientFinanceDate startDate, endDate;

  private String[] transactionTypes =
      new String[] {
        messages.quotes(),
        messages.Charges(),
        messages.credits(),
        messages.invoices(),
        messages.cashSales(),
        messages.payeeCreditNotes(Global.get().Customer()),
        messages.cashPurchases(),
        messages.payeeCreditNotes(Global.get().Vendor()),
        messages.bills(),
        messages.expenses(),
        messages.salesOrders(),
        messages.purchaseOrders()
      };
  private Button transactionButton;
  private StyledPanel rightVpPanel, dummyPanel;

  public InventoryCentreView() {
    this.getElement().setId("InventoryCentreView");
  }

  @Override
  public void init() {
    super.init();
    createControls();
  }

  private void createControls() {
    StyledPanel mainPanel = new StyledPanel("mainPanel");
    StyledPanel leftVpPanel = new StyledPanel("leftVpPanel");
    viewTypeCombo();
    DynamicForm viewform = new DynamicForm("viewform");
    viewform.add(activeInActiveSelect);
    leftVpPanel.add(viewform);
    itemsListGrid = new InventoryCentreItemsListGrid();
    itemsListGrid.init();
    initItemsListGrid();
    leftVpPanel.add(itemsListGrid);

    itemsListGrid.setStyleName("cusotmerCentrGrid");

    rightVpPanel = new StyledPanel("rightVpPanel");
    dummyPanel = new StyledPanel("dummyPanel");
    itemDetailsPanel = new ItemDetailsPanel(selectedItem);
    rightVpPanel.add(itemDetailsPanel);
    itemsListGrid.setItemSelectionListener(
        new ItemSelectionListener() {

          @Override
          public void itemSelected(ClientItem selectedItem) {
            InventoryCentreView.this.selectedItem = selectedItem;
            onItemSelected();
          }
        });
    transactionViewSelectCombo();
    transactionViewTypeSelectCombo();
    transactionDateRangeSelector();
    DynamicForm transactionViewform = new DynamicForm("viewform");

    transactionViewform.add(trasactionViewSelect, trasactionViewTypeSelect, dateRangeSelector);

    transactionGridpanel = new StyledPanel("transactionGridpanel");
    transactionGridpanel.add(transactionViewform);
    transactionHistoryGrid =
        new ItemTransactionsHistoryGrid() {
          @Override
          public void initListData() {

            onItemSelected();
          }

          @Override
          protected String[] setHeaderStyle() {
            return new String[] {"date", "type", "no", "memo", "quantity", "amount"};
          }

          @Override
          protected String[] setRowElementsStyle() {
            return new String[] {
              "date-value", "type-value", "no-value", "memo-value", "quantity-value", "amount"
            };
          }
        };
    transactionHistoryGrid.init();
    transactionHistoryGrid.addEmptyMessage(messages.pleaseSelectAnItem());
    int pageSize = getPageSize();
    transactionHistoryGrid.addRangeChangeHandler2(
        new Handler() {

          @Override
          public void onRangeChange(RangeChangeEvent event) {
            onPageChange(event.getNewRange().getStart(), event.getNewRange().getLength());
          }
        });
    SimplePager pager =
        new SimplePager(
            TextLocation.CENTER,
            (Resources) GWT.create(Resources.class),
            false,
            pageSize * 2,
            true);
    pager.setDisplay(transactionHistoryGrid);
    updateRecordsCount(0, 0, 0);

    if (Accounter.isIpadApp()) {

      transactionButton = new Button(messages.transaction());
      transactionButton.addClickHandler(
          new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {
              ActionFactory.getInventoryTransactionListHistory(selectedItem).run();
            }
          });

    } else {
      dummyPanel.add(transactionGridpanel);
      dummyPanel.add(transactionHistoryGrid);
      dummyPanel.add(pager);
    }

    rightVpPanel.add(dummyPanel);

    Label labelTitle = new Label(messages.inventoryCentre());
    labelTitle.setStyleName("label-title");
    mainPanel.add(leftVpPanel);
    mainPanel.add(rightVpPanel);
    add(labelTitle);
    add(mainPanel);
  }

  public void updateRecordsCount(int start, int length, int total) {
    transactionHistoryGrid.updateRange(new Range(start, getPageSize()));
    transactionHistoryGrid.setRowCount(total, (start + length) == total);
  }

  private int getPageSize() {
    return 25;
  }

  private void viewTypeCombo() {
    if (activeInActiveSelect == null) {
      activeInActiveSelect = new SelectCombo(messages.show());

      ArrayList<String> activetypeList = new ArrayList<String>();
      activetypeList.add(messages.active());
      activetypeList.add(messages.inActive());
      activeInActiveSelect.initCombo(activetypeList);
      activeInActiveSelect.setComboItem(messages.active());
      activeInActiveSelect.addSelectionChangeHandler(
          new IAccounterComboSelectionChangeHandler<String>() {

            @Override
            public void selectedComboBoxItem(String selectItem) {
              if (activeInActiveSelect.getSelectedValue() != null) {
                if (activeInActiveSelect
                    .getSelectedValue()
                    .toString()
                    .equalsIgnoreCase(messages.active())) {
                  refreshActiveinactiveList(true);

                } else {
                  refreshActiveinactiveList(false);
                }
              }
            }
          });
    }
  }

  private void refreshActiveinactiveList(boolean isActiveList) {
    itemsListGrid.setSelectedItem(null);
    itemDetailsPanel.itemName.setText(messages.noItemSelected());
    this.selectedItem = null;
    onItemSelected();
    isActiveItems = isActiveList;
    initItemsListGrid();
  }

  private void transactionViewTypeSelectCombo() {
    if (trasactionViewTypeSelect == null) {
      trasactionViewTypeSelect = new SelectCombo(messages.type());
      getMessagesList();
      trasactionViewTypeSelect.addSelectionChangeHandler(
          new IAccounterComboSelectionChangeHandler<String>() {

            @Override
            public void selectedComboBoxItem(String selectItem) {
              if (trasactionViewTypeSelect.getSelectedValue() != null) {
                callRPC(0, 25);
              }
            }
          });
    }
  }

  private void transactionViewSelectCombo() {
    if (trasactionViewSelect == null) {
      trasactionViewSelect = new SelectCombo(messages.currentView());

      ArrayList<String> transactionTypeList = new ArrayList<String>();
      transactionTypeList.add(messages.allTransactions());
      for (String type : transactionTypes) {
        if (type.equalsIgnoreCase(messages.Charges())
            || type.equalsIgnoreCase(messages.credits())) {
          if (getPreferences().isDelayedchargesEnabled()) {
            transactionTypeList.add(type);
          } else {
            continue;
          }
        } else if (type.equalsIgnoreCase(messages.salesOrders())) {
          if (getPreferences().isSalesOrderEnabled()) {
            transactionTypeList.add(type);
          } else {
            continue;
          }
        } else if (type.equalsIgnoreCase(messages.purchaseOrders())) {
          if (getPreferences().isPurchaseOrderEnabled()) {
            transactionTypeList.add(type);
          } else {
            continue;
          }
        } else {
          transactionTypeList.add(type);
        }
      }
      trasactionViewSelect.initCombo(transactionTypeList);
      trasactionViewSelect.setComboItem(messages.allTransactions());
      trasactionViewSelect.addSelectionChangeHandler(
          new IAccounterComboSelectionChangeHandler<String>() {

            @Override
            public void selectedComboBoxItem(String selectItem) {
              if (trasactionViewSelect.getSelectedValue() != null) {
                getMessagesList();
                callRPC(0, 25);
              }
            }
          });
    }
  }

  private void getMessagesList() {
    String selectedValue = trasactionViewSelect.getSelectedValue();
    transactiontypebyStatusMap = new HashMap<Integer, String>();
    if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.allTransactions())) {
      transactiontypebyStatusMap.put(
          TransactionHistory.ALL_TRANSACTIONS, messages.allTransactions());
    } else if (selectedValue.equalsIgnoreCase(messages.quotes())) {

      transactiontypebyStatusMap.put(TransactionHistory.ALL_QUOTES, messages.allQuotes());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_QUOTES, messages.draftTransaction(messages.quotes()));

    } else if (selectedValue.equalsIgnoreCase(messages.Charges())) {

      transactiontypebyStatusMap.put(TransactionHistory.ALL_CHARGES, messages.allCahrges());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CHARGES, messages.draftTransaction(messages.Charges()));

    } else if (selectedValue.equalsIgnoreCase(messages.credits())) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_CREDITS, messages.allCredits());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CREDITS, messages.draftTransaction(messages.credits()));

    } else if (selectedValue.equalsIgnoreCase(messages.invoices())) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_INVOICES, messages.getallInvoices());
      transactiontypebyStatusMap.put(
          TransactionHistory.OPENED_INVOICES, messages.getOpendInvoices());
      transactiontypebyStatusMap.put(
          TransactionHistory.OVER_DUE_INVOICES, messages.overDueInvoices());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_INVOICES, messages.draftTransaction(messages.invoices()));
    } else if (selectedValue.equalsIgnoreCase(messages.cashSales())) {
      transactiontypebyStatusMap.put(
          TransactionHistory.ALL_CASHSALES, messages.all() + " " + messages.cashSales());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CASHSALES, messages.draftTransaction(messages.cashSales()));

    } else if (selectedValue.equalsIgnoreCase(messages.payeeCreditNotes(Global.get().Customer()))) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_CREDITMEMOS, messages.allCreditMemos());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CREDITMEMOS, messages.draftTransaction(messages.creditNote()));
      // transactiontypebyStatusMap.put(
      // TransactionHistory.OPEND_CREDITMEMOS,
      // messages.openCreditMemos());

    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.cashPurchases())) {
      transactiontypebyStatusMap.put(
          TransactionHistory.ALL_CASH_PURCHASES, messages.allCashPurchases());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CASH_PURCHASES,
          messages.draftTransaction(messages.cashPurchases()));

    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.bills())) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_BILLS, messages.allBills());
      transactiontypebyStatusMap.put(
          TransactionHistory.OPEND_BILLS, messages.all() + " " + messages.openedBills());
      transactiontypebyStatusMap.put(
          TransactionHistory.OVERDUE_BILLS, messages.all() + " " + messages.overDueBills());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_BILLS, messages.draftTransaction(messages.bills()));

    } else if (trasactionViewSelect
        .getSelectedValue()
        .equalsIgnoreCase(messages.payeeCreditNotes(Global.get().Vendor()))) {
      transactiontypebyStatusMap.put(
          TransactionHistory.ALL_VENDOR_CREDITNOTES,
          messages.all() + " " + messages.payeeCreditNotes(Global.get().Vendor()));
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_VENDOR_CREDITNOTES,
          messages.draftTransaction(messages.payeeCreditNotes(Global.get().Vendor())));

    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.expenses())) {
      transactiontypebyStatusMap.put(TransactionHistory.ALL_EXPENSES, messages.allExpenses());
      transactiontypebyStatusMap.put(
          TransactionHistory.CREDIT_CARD_EXPENSES, messages.creditCardExpenses());
      transactiontypebyStatusMap.put(TransactionHistory.CASH_EXPENSES, messages.cashExpenses());
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CREDIT_CARD_EXPENSES,
          messages.draftTransaction(messages.creditCardExpenses()));
      transactiontypebyStatusMap.put(
          TransactionHistory.DRAFT_CASH_EXPENSES,
          messages.draftTransaction(messages.cashExpenses()));

    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.salesOrders())) {

      transactiontypebyStatusMap.put(TransactionHistory.ALL_SALES_ORDERS, messages.all());
      transactiontypebyStatusMap.put(TransactionHistory.DRAFT_SALES_ORDERS, messages.drafts());

    } else if (trasactionViewSelect
        .getSelectedValue()
        .equalsIgnoreCase(messages.purchaseOrders())) {

      transactiontypebyStatusMap.put(TransactionHistory.ALL_PURCHASE_ORDERS, messages.all());
      transactiontypebyStatusMap.put(TransactionHistory.DRAFT_PURCHASE_ORDERS, messages.drafts());
    }
    List<String> typeList = new ArrayList<String>(transactiontypebyStatusMap.values());
    Collections.sort(
        typeList,
        new Comparator<String>() {

          @Override
          public int compare(String entry1, String entry2) {
            return entry1.compareTo(entry2);
          }
        });
    trasactionViewTypeSelect.initCombo(typeList);
    trasactionViewTypeSelect.setComboItem(typeList.get(0));
  }

  protected void transactionDateRangeSelector() {
    dateRangeSelector = new SelectCombo(messages.date());

    ArrayList<String> dateRangeList = new ArrayList<String>();
    String[] dateRangeArray = {
      messages.all(),
      messages.thisWeek(),
      messages.thisMonth(),
      messages.lastWeek(),
      messages.lastMonth(),
      messages.thisFinancialYear(),
      messages.lastFinancialYear(),
      messages.thisFinancialQuarter(),
      messages.lastFinancialQuarter(),
      messages.financialYearToDate()
    };
    for (int i = 0; i < dateRangeArray.length; i++) {
      dateRangeList.add(dateRangeArray[i]);
    }
    dateRangeSelector.initCombo(dateRangeList);

    dateRangeSelector.setComboItem(messages.all());
    dateRangeSelector.addSelectionChangeHandler(
        new IAccounterComboSelectionChangeHandler<String>() {
          @Override
          public void selectedComboBoxItem(String selectItem) {
            dateRangeSelector.setComboItem(selectItem);
            if (dateRangeSelector.getValue() != null) {
              dateRangeChanged(selectItem);
              callRPC(0, getPageSize());
            }
          }
        });
  }

  public void dateRangeChanged(String dateRange) {
    ClientFinanceDate date = new ClientFinanceDate();
    startDate = Accounter.getStartDate();
    endDate = getCompany().getCurrentFiscalYearEndDate();
    // getLastandOpenedFiscalYearEndDate();
    if (dateRange.equals(messages.thisWeek())) {
      startDate = getWeekStartDate();
      endDate.setDay(startDate.getDay() + 6);
      endDate.setMonth(startDate.getMonth());
      endDate.setYear(startDate.getYear());
    }
    if (dateRange.equals(messages.thisMonth())) {
      startDate = new ClientFinanceDate(date.getYear(), date.getMonth(), 1);
      Calendar endCal = Calendar.getInstance();
      endCal.setTime(new ClientFinanceDate().getDateAsObject());
      endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH));
      endDate = new ClientFinanceDate(endCal.getTime());
    }
    if (dateRange.equals(messages.lastWeek())) {
      endDate = getWeekStartDate();
      endDate.setDay(endDate.getDay() - 1);
      startDate = new ClientFinanceDate(endDate.getDate());
      startDate.setDay(startDate.getDay() - 6);
    }
    if (dateRange.equals(messages.lastMonth())) {
      int day;
      if (date.getMonth() == 0) {
        day = getMonthLastDate(11, date.getYear() - 1);
        startDate = new ClientFinanceDate(date.getYear() - 1, 11, 1);
        endDate = new ClientFinanceDate(date.getYear() - 1, 11, day);
      } else {
        day = getMonthLastDate(date.getMonth() - 1, date.getYear());
        startDate = new ClientFinanceDate(date.getYear(), date.getMonth() - 1, 1);
        endDate = new ClientFinanceDate(date.getYear(), date.getMonth() - 1, day);
      }
    }
    if (dateRange.equals(messages.thisFinancialYear())) {
      startDate = getCompany().getCurrentFiscalYearStartDate();
      endDate = getCompany().getCurrentFiscalYearEndDate();
    }
    if (dateRange.equals(messages.lastFinancialYear())) {

      startDate = Accounter.getCompany().getCurrentFiscalYearStartDate();
      startDate.setYear(startDate.getYear() - 1);
      Calendar endCal = Calendar.getInstance();
      endCal.setTime(Accounter.getCompany().getCurrentFiscalYearEndDate().getDateAsObject());
      endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH));
      endDate = new ClientFinanceDate(endCal.getTime());
      endDate.setYear(endDate.getYear() - 1);
    }
    if (dateRange.equals(messages.thisFinancialQuarter())) {
      startDate = new ClientFinanceDate();
      endDate = getCompany().getCurrentFiscalYearEndDate();
      // getLastandOpenedFiscalYearEndDate();
      getCurrentQuarter();
    }
    if (dateRange.equals(messages.lastFinancialQuarter())) {
      startDate = new ClientFinanceDate();
      endDate = getCompany().getCurrentFiscalYearEndDate();
      // getLastandOpenedFiscalYearEndDate();
      getCurrentQuarter();
      startDate.setYear(startDate.getYear() - 1);
      endDate.setYear(endDate.getYear() - 1);
    }
    if (dateRange.equals(messages.financialYearToDate())) {
      startDate = getCompany().getCurrentFiscalYearStartDate();
      endDate = new ClientFinanceDate();
    }
  }

  private void getCurrentQuarter() {

    ClientFinanceDate date = new ClientFinanceDate();

    int currentQuarter;
    if ((date.getMonth() + 1) % 3 == 0) {
      currentQuarter = (date.getMonth() + 1) / 3;
    } else {
      currentQuarter = ((date.getMonth() + 1) / 3) + 1;
    }
    switch (currentQuarter) {
      case 1:
        startDate = new ClientFinanceDate(date.getYear(), 0, 1);
        endDate = new ClientFinanceDate(date.getYear(), 2, 31);
        break;

      case 2:
        startDate = new ClientFinanceDate(date.getYear(), 3, 1);
        endDate = new ClientFinanceDate(date.getYear(), 5, 30);
        break;

      case 3:
        startDate = new ClientFinanceDate(date.getYear(), 6, 1);
        endDate = new ClientFinanceDate(date.getYear(), 8, 30);
        break;
      default:
        startDate = new ClientFinanceDate(date.getYear(), 9, 1);
        endDate = new ClientFinanceDate(date.getYear(), 11, 31);
        break;
    }
  }

  private int getMonthLastDate(int month, int year) {
    int lastDay;
    switch (month) {
      case 0:
      case 2:
      case 4:
      case 6:
      case 7:
      case 9:
      case 11:
        lastDay = 31;
        break;
      case 1:
        if (year % 4 == 0 && year % 100 == 0) lastDay = 29;
        else lastDay = 28;
        break;

      default:
        lastDay = 30;
        break;
    }
    return lastDay;
  }

  public ClientFinanceDate getWeekStartDate() {
    ClientFinanceDate date = new ClientFinanceDate();
    int day = date.getDay() % 6;
    ClientFinanceDate newDate = new ClientFinanceDate();
    if (day != 1) {
      newDate.setDay(date.getDay() - day);
    } else {
      newDate.setDay(date.getDay());
    }
    return newDate;
  }

  @Override
  public void deleteFailed(AccounterException caught) {
    // TODO Auto-generated method stub

  }

  @Override
  public void deleteSuccess(IAccounterCore result) {
    // TODO Auto-generated method stub

  }

  @Override
  protected String getViewTitle() {
    return null;
  }

  @Override
  public void setFocus() {
    // TODO Auto-generated method stub

  }

  private void initItemsListGrid() {
    filterItems();
    itemsListGrid.removeAllRecords();
    if (listOfItems.isEmpty()) {
      itemsListGrid.addEmptyMessage(messages.youDontHaveAny(messages.inventoryItems()));
    } else {
      itemsListGrid.setRecords(listOfItems);
    }
  }

  private void filterItems() {
    ArrayList<ClientItem> items = getCompany().getItems();
    ArrayList<ClientItem> result = new ArrayList<ClientItem>();
    for (ClientItem item : items) {
      if (item.getType() == ClientItem.TYPE_INVENTORY_PART
          || item.getType() == ClientItem.TYPE_INVENTORY_ASSEMBLY) {
        if (isActiveItems == item.isActive()) {
          result.add(item);
        }
      }
    }
    listOfItems = result;
  }

  void onPageChange(int start, int length) {
    callRPC(start, length);
  }

  private void onItemSelected() {

    itemDetailsPanel.showItemDetails(selectedItem);
    if (Accounter.isIpadApp()) {
      rightVpPanel.add(transactionButton);
      transactionButton.setText(messages2.transactionListFor(selectedItem.getDisplayName()));
    }
    transactionHistoryGrid.setSelectedItem(selectedItem);
    MainFinanceWindow.getViewManager().updateButtons();
    callRPC(0, 25);
  }

  protected void callRPC(int start, int length) {
    transactionHistoryGrid.removeAllRecords();
    records = new ArrayList<TransactionHistory>();
    if (selectedItem != null) {
      Accounter.createHomeService()
          .getItemTransactionsList(
              selectedItem.getID(),
              getTransactionType(),
              getTransactionStatusType(),
              startDate,
              endDate,
              start,
              length,
              new AsyncCallback<PaginationList<TransactionHistory>>() {

                @Override
                public void onFailure(Throwable caught) {
                  Accounter.showError(messages.unableToPerformTryAfterSomeTime());
                }

                @Override
                public void onSuccess(PaginationList<TransactionHistory> result) {
                  records = result;
                  selectedItem = getCompany().getItem(selectedItem.getID());
                  transactionHistoryGrid.setSelectedItem(selectedItem);
                  itemDetailsPanel.showItemDetails(selectedItem);
                  transactionHistoryGrid.removeAllRecords();
                  if (records != null) {
                    transactionHistoryGrid.addRecords(records);
                  }
                  updateRecordsCount(result.getStart(), result.size(), result.getTotalCount());
                  if (records.size() == 0) {
                    transactionHistoryGrid.addEmptyMessage(
                        messages.thereAreNo(messages.transactions()));
                  }
                }
              });

    } else {
      transactionHistoryGrid.removeAllRecords();
      transactionHistoryGrid.addEmptyMessage(messages.thereAreNo(messages.transactions()));
    }
  }

  private int getTransactionType() {
    String selectedValue = trasactionViewSelect.getSelectedValue();
    if (selectedValue.equalsIgnoreCase(messages.invoices())) {
      return ClientTransaction.TYPE_INVOICE;
    } else if (selectedValue.equalsIgnoreCase(messages.cashSales())) {
      return ClientTransaction.TYPE_CASH_SALES;
    } else if (selectedValue.equalsIgnoreCase(messages.payeeCreditNotes(Global.get().Customer()))) {
      return ClientTransaction.TYPE_CUSTOMER_CREDIT_MEMO;
    } else if (selectedValue.equalsIgnoreCase(messages.quotes())
        || selectedValue.equalsIgnoreCase(messages.credits())
        || selectedValue.equalsIgnoreCase(messages.Charges())) {
      return ClientTransaction.TYPE_ESTIMATE;
    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.cashPurchases())) {
      return ClientTransaction.TYPE_CASH_PURCHASE;
    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.bills())) {
      return ClientTransaction.TYPE_ENTER_BILL;
    } else if (trasactionViewSelect
        .getSelectedValue()
        .equalsIgnoreCase(messages.payeeCreditNotes(Global.get().Vendor()))) {
      return ClientTransaction.TYPE_VENDOR_CREDIT_MEMO;
    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.expenses())) {
      return ClientTransaction.TYPE_EXPENSE;
    } else if (trasactionViewSelect.getSelectedValue().equalsIgnoreCase(messages.salesOrders())) {
      return TransactionHistory.TYPE_SALES_ORDER;
    } else if (trasactionViewSelect
        .getSelectedValue()
        .equalsIgnoreCase(messages.purchaseOrders())) {
      return TransactionHistory.TYPE_PURCHASE_ORDER;
    }
    return 0;
  }

  private int getTransactionStatusType() {
    if (trasactionViewTypeSelect.getSelectedValue() != null) {
      Set<Integer> keySet = transactiontypebyStatusMap.keySet();
      for (Integer integerKey : keySet) {
        String entrystring = transactiontypebyStatusMap.get(integerKey);
        if (trasactionViewTypeSelect.getSelectedValue().equals(entrystring)) {
          return integerKey;
        }
      }
    }
    return TransactionHistory.ALL_INVOICES;
  }

  public String getAddNewLabelString() {
    return messages.addaNew(messages.inventoryItem());
  }

  public NewItemAction getAddNewAction() {
    if (!Accounter.getUser().canDoInvoiceTransactions()) return null;
    else {
      NewItemAction action = new NewItemAction(true);
      action.setType(ClientItem.TYPE_INVENTORY_PART);
      return action;
    }
  }

  @Override
  public HashMap<String, Object> saveView() {
    HashMap<String, Object> map = new HashMap<String, Object>();
    map.put("activeInActive", activeInActiveSelect.getSelectedValue());
    map.put("currentView", trasactionViewSelect.getSelectedValue());
    map.put("transactionType", trasactionViewTypeSelect.getSelectedValue());
    map.put("dateRange", dateRangeSelector.getSelectedValue());
    map.put("selectedItem", selectedItem == null ? "" : selectedItem.getName());
    map.put("itemSelection", itemsListGrid.getSelection());
    return map;
  }

  @Override
  public void restoreView(HashMap<String, Object> map) {

    if (map == null || map.isEmpty()) {
      return;
    }
    String activeInactive = (String) map.get("activeInActive");
    activeInActiveSelect.setComboItem(activeInactive);
    if (activeInactive.equalsIgnoreCase(messages.active())) {
      refreshActiveinactiveList(true);
    } else {
      refreshActiveinactiveList(false);
    }

    String currentView = (String) map.get("currentView");
    trasactionViewSelect.setComboItem(currentView);
    if (currentView != null) {
      getMessagesList();
    }

    String transctionType = (String) map.get("transactionType");
    trasactionViewTypeSelect.setComboItem(transctionType);

    String dateRange1 = (String) map.get("dateRange");
    dateRangeSelector.setComboItem(dateRange1);
    if (dateRange1 != null) {
      dateRangeChanged(dateRange1);
    }
    ClientItem object = (ClientItem) map.get("itemSelection");
    itemsListGrid.setSelection(object);

    String customer = (String) map.get("selectedItem");

    if (customer != null && !(customer.isEmpty())) {
      selectedItem = getCompany().getItemByName(customer);
    }
    if (this.selectedItem != null) {
      itemsListGrid.setSelectedItem(selectedItem);

      selectedItem = Accounter.getCompany().getItem(selectedItem.getID());

      onItemSelected();
    } else {
      callRPC(0, getPageSize());
    }
  }

  @Override
  public boolean canEdit() {
    return selectedItem == null
        ? false
        : Utility.isUserHavePermissions(selectedItem.getObjectType());
  }

  @Override
  public void onEdit() {
    if (selectedItem.getType() == ClientItem.TYPE_INVENTORY_ASSEMBLY) {
      InventoryActions inventoryAssemblyAction = InventoryActions.newAssembly();
      inventoryAssemblyAction.setisItemEditable(true);
      inventoryAssemblyAction.run((ClientInventoryAssembly) selectedItem, false);

    } else {
      NewItemAction itemAction = new NewItemAction(true);
      itemAction.setType(selectedItem.getType());
      itemAction.setisItemEditable(true);
      itemAction.run(selectedItem, false);
    }
  }

  @Override
  public boolean isDirty() {
    return false;
  }
}