// for item wastage
  public void AddItemWastage(Object[] wastageinfo, int userid, int departmentid) {
    /*
       wastage into
       obj[0] = getItemID();
    obj[1] = getComboBoxItemName();
    obj[2] = getItemQuantity();
    obj[3] = getItemAmount();
    obj[4] = getItemReason();
    obj[5] = getItemWaiterId();
    obj[6] = getComboBoxItemStaffName();
    obj[7] = getUnitID();
    obj[8] = getComboBoxItemBaseUnit();
       */
    PreparedStatement stmtwastage;
    PreparedStatement stmtSubtractResturantStore;
    String strwastage =
        "INSERT INTO wastage (id,quantity,amount,reason,staff_id,department_id,user_id,date,menu_type_flag,unit_id) VALUES(?,?,?,?,?,?,?,?,?,?)";
    //              String strSubtractSingleResturantStore = "UPDATE department_store_stock SET
    // total_qty = department_store_stock.total_qty -(? * (select
    // menu.quantity*item_unit.unit_relative_quantity from menu INNER JOIN item_unit ON menu.unit_id
    // = item_unit.unit_id WHERE menu.menu_id = ?)) WHERE item_id = (select item_id from menu where
    // menu_id = ?)";

    String strSubtractHybridResturantStore =
        "UPDATE department_store_stock SET total_qty = department_store_stock.total_qty  - ?*(select unit_relative_quantity FROM item_unit WHERE unit_id = ?) WHERE department_item_id = ?  ";
    try {

      initConnection();
      // for inserting into wastage table
      conn.setAutoCommit(false);
      stmtwastage = conn.prepareStatement(strwastage);
      stmtwastage.setInt(1, Integer.parseInt(wastageinfo[0].toString()));
      stmtwastage.setDouble(2, Double.parseDouble(wastageinfo[2].toString()));
      stmtwastage.setDouble(3, Double.parseDouble(wastageinfo[3].toString()));
      stmtwastage.setString(4, wastageinfo[4].toString());
      stmtwastage.setInt(5, Integer.parseInt(wastageinfo[5].toString()));
      stmtwastage.setInt(6, departmentid);
      stmtwastage.setInt(7, userid);
      stmtwastage.setDate(8, new java.sql.Date(Function.returnSystemDate().getTime()));
      stmtwastage.setBoolean(9, Boolean.FALSE);
      stmtwastage.setInt(10, Integer.parseInt(wastageinfo[7].toString()));
      stmtwastage.executeUpdate();

      // for reducing the wastage quantity from the department_store_stock
      stmtSubtractResturantStore = conn.prepareStatement(strSubtractHybridResturantStore);
      stmtSubtractResturantStore.setDouble(1, Double.parseDouble(wastageinfo[2].toString()));
      stmtSubtractResturantStore.setInt(2, Integer.parseInt(wastageinfo[7].toString()));
      stmtSubtractResturantStore.setInt(3, Integer.parseInt(wastageinfo[0].toString()));
      stmtSubtractResturantStore.executeUpdate();

      // if everthing goes well commit
      conn.commit();
      JOptionPane.showMessageDialog(null, "Item Wastage Saved Succesfully");

    } catch (SQLException se) {
      JOptionPane.showMessageDialog(null, se + "from additemwastage" + getClass().getName());
    }
  }
  public void AddMenuWastage(Object[] wastageinfo, int userid, int departmentid) {
    // ordermodel.AddMenuWastage(ordermodel.convertDefaultTableModelToObject(orderview.getTableOrderList()),orderview.getOrderId(),orderview.getTableId(),orderview.getWaiterId(),orderview.getCustomerId());
    /*
       wastage into
         obj[0] = getMenuID();
    obj[1] = getComboBoxMenuMenuName();
    obj[2] = getMenuQuantity();
    obj[3] = getMenuRate();
    obj[4] = getMenuAmount();
    obj[5] = getMenuReason();
    obj[6] = getMenuStaffId();
    obj[7] = getComboBoxMenuStaffName();
       */
    PreparedStatement stmtwastage;
    PreparedStatement stmtSubtractResturantStore;
    PreparedStatement stmtSubtractHybridResturantStore;

    BigDecimal total_amount = BigDecimal.ZERO;
    String MenuId = new String();
    String strwastage =
        "INSERT INTO wastage (id,quantity,amount,reason,staff_id,department_id,user_id,date,menu_type_flag) VALUES(?,?,?,?,?,?,?,?,?)";
    //              String strSubtractSingleResturantStore = "UPDATE department_store_stock SET
    // total_qty = department_store_stock.total_qty -(? * (select
    // menu.quantity*item_unit.unit_relative_quantity from menu INNER JOIN item_unit ON menu.unit_id
    // = item_unit.unit_id WHERE menu.menu_id = ?)) WHERE item_id = (select item_id from menu where
    // menu_id = ?)";
    String strSubtractSingleResturantStore =
        "UPDATE department_store_stock SET total_qty = department_store_stock.total_qty -(? * (select  menu.quantity*item_unit.unit_relative_quantity from menu INNER JOIN item_unit ON menu.unit_id = item_unit.unit_id WHERE menu.menu_id = ?)) WHERE department_item_id = (select department_item_id from menu where menu_id = ?)";
    String strSubtractHybridResturantStore =
        "UPDATE department_store_stock SET total_qty = department_store_stock.total_qty  - ?*? WHERE department_item_id = ?  ";

    DBConnect addorder = new DBConnect();
    try {
      addorder.initConnection();
      /*
       * for inserting into wastage
       */
      addorder.conn.setAutoCommit(false);
      stmtwastage = addorder.conn.prepareStatement(strwastage);
      stmtwastage.setInt(1, Integer.parseInt(wastageinfo[0].toString()));
      stmtwastage.setDouble(2, Double.parseDouble(wastageinfo[2].toString()));
      stmtwastage.setDouble(3, Double.parseDouble(wastageinfo[4].toString()));
      stmtwastage.setString(4, wastageinfo[5].toString());
      stmtwastage.setInt(5, Integer.parseInt(wastageinfo[6].toString()));
      stmtwastage.setInt(6, departmentid);
      stmtwastage.setInt(7, userid);
      stmtwastage.setDate(8, new java.sql.Date(Function.returnSystemDate().getTime()));
      stmtwastage.setBoolean(9, Boolean.TRUE);
      stmtwastage.executeUpdate();

      /*
       * for reducing resturant
       */
      // when tracable item
      //  if(checkTrackable(strdeladd))
      /*
       * separating the menu_id to thier type as singletracable and hybrid type
       */

      MenuId = wastageinfo[0].toString();
      if (checkTrackable(Integer.parseInt(MenuId))) {
        if (checkHybrid(Integer.parseInt(MenuId))) {
          // if it is hybrid  menu
          /*
           * if only hybrid trackable
           */
          // return the item-unit in row
          ArrayList<String[]> HybridItem = new ArrayList<>();
          String[][] strHybridItem = null;

          String[][] data = getItemIdForHybrid(Integer.parseInt(wastageinfo[0].toString()));
          for (String[] data1 : data) {
            String[] row = new String[] {data1[0], data1[1], wastageinfo[2].toString()};
            HybridItem.add(row);
          }

          strHybridItem = HybridItem.toArray(new String[HybridItem.size()][]);
          /*
           * start a query for hybrid
           */
          stmtSubtractHybridResturantStore =
              addorder.conn.prepareStatement(strSubtractHybridResturantStore);
          for (String[] strHybridItem1 : strHybridItem) {
            //  stmtdelSubtractHybridResturantStore.setString(1, straddHybridItem[i][0]);
            stmtSubtractHybridResturantStore.setBigDecimal(1, new BigDecimal(strHybridItem1[2]));
            stmtSubtractHybridResturantStore.setBigDecimal(2, new BigDecimal(strHybridItem1[1]));
            stmtSubtractHybridResturantStore.setString(3, strHybridItem1[0]);
            stmtSubtractHybridResturantStore.executeUpdate();
          }

        } else {
          // if it is single trackable menu
          /*
           * if only single trackable
           */
          stmtSubtractResturantStore =
              addorder.conn.prepareStatement(strSubtractSingleResturantStore);
          addorder.conn.setAutoCommit(false);

          //  stmtdelSubtractResturantStore.setString(1, straddSingleTrackableItem[i][0]);
          stmtSubtractResturantStore.setBigDecimal(1, new BigDecimal(wastageinfo[2].toString()));
          stmtSubtractResturantStore.setInt(2, Integer.parseInt(wastageinfo[0].toString()));
          stmtSubtractResturantStore.setInt(3, Integer.parseInt(wastageinfo[0].toString()));
          stmtSubtractResturantStore.executeUpdate();
        }
      }
      // if everything goes weel commit
      addorder.conn.commit();
      JOptionPane.showMessageDialog(null, "Wastage Saved Successfully");

    } catch (SQLException e) {
      JOptionPane.showMessageDialog(null, e + "from  Wastage Save" + getClass().getName());
    }
  }