private void submitSplitPurchase() {
    String store = getStore();
    Date date = getDate();

    List<PurchaseItem> purchaseItems = splitPurchaseGrid.getNewPurcahses();

    double totalCost = sumPurchaseItemCost(purchaseItems);
    PurchaseItem highestCostPurchaseItem = findHighestCostPurchaseItem(purchaseItems);

    BillType highestCostbillType = highestCostPurchaseItem.getBillType();

    sendPurchase(totalCost, highestCostbillType, highestCostPurchaseItem.getNote(), store, date);

    purchaseItems.remove(highestCostPurchaseItem);

    for (PurchaseItem purchaseItem : purchaseItems) {
      double cost = purchaseItem.getCost();
      BillType billType = purchaseItem.getBillType();
      String note = purchaseItem.getNote();

      sendPurchase(((-1) * cost), highestCostbillType, "Subtracting other purchases", store, date);

      sendPurchase(cost, billType, note, store, date);
    }

    finishPurchase();
  }
  private void toggleSplit() {
    isSplit = !isSplit;
    if (isSplit) {
      splitPurchaseGrid = new SplitPurchaseGrid(billTypeManager);

      splitPurchaseGrid.setTotalCost(getCost());

      costField.setFieldLabel("Total Cost");

      fieldPanel.removeRow(3);
      fieldPanel.removeRow(3);

      matchingField.addDisplayableReportWidget(splitPurchaseGrid);
    } else {
      costField.setFieldLabel("Cost");

      fieldPanel.insertRow(3);

      fieldPanel.setText(2, 0, "Bill Type:");
      fieldPanel.setWidget(2, 1, billTypeComboBox);

      fieldPanel.insertRow(4);
      fieldPanel.setText(3, 0, "Note:");
      fieldPanel.setWidget(3, 1, noteField);

      matchingField.addDisplayableReportWidget(null);
    }
  }