/**
  * Check availability and insert record
  *
  * @return true if saved/updated
  */
 private boolean cmd_save() {
   log.config("");
   //	Set AssignDateTo
   Calendar date = new GregorianCalendar();
   getDateAndTimeFrom(date);
   Timestamp assignDateFrom = new Timestamp(date.getTimeInMillis());
   BigDecimal qty = fQty.getValue();
   KeyNamePair uom = (KeyNamePair) m_lookup.get(fResource.getSelectedItem());
   int minutes = MUOMConversion.convertToMinutes(Env.getCtx(), uom.getKey(), qty);
   Timestamp assignDateTo = TimeUtil.addMinutess(assignDateFrom, minutes);
   m_mAssignment.setAssignDateTo(assignDateTo);
   //
   //	m_mAssignment.dump();
   return m_mAssignment.save();
 } //	cmdSave
  /**
   * Descripción de Método
   *
   * @return
   * @throws Exception
   */
  protected String doIt() throws Exception {
    if ((p_M_Product_ID == 0)
        || (p_M_Product_To_ID == 0)
        || (p_M_Locator_ID == 0)
        || (p_Qty == null)
        || (Env.ZERO.compareTo(p_Qty) == 0)) {
      throw new ErrorUsuarioOXP("Invalid Parameter");
    }

    //

    MProduct product = MProduct.get(getCtx(), p_M_Product_ID);
    MProduct productTo = MProduct.get(getCtx(), p_M_Product_To_ID);

    log.info(
        "Product="
            + product
            + ", ProductTo="
            + productTo
            + ", M_Locator_ID="
            + p_M_Locator_ID
            + ", Qty="
            + p_Qty);

    MUOMConversion[] conversions =
        MUOMConversion.getProductConversions(getCtx(), product.getM_Product_ID());
    MUOMConversion conversion = null;

    for (int i = 0; i < conversions.length; i++) {
      if (conversions[i].getC_UOM_To_ID() == productTo.getC_UOM_ID()) {
        conversion = conversions[i];
      }
    }

    if (conversion == null) {
      throw new ErrorUsuarioOXP("@NotFound@: @C_UOM_Conversion_ID@");
    }

    MUOM uomTo = MUOM.get(getCtx(), productTo.getC_UOM_ID());
    BigDecimal qtyTo =
        p_Qty.divide(conversion.getDivideRate(), uomTo.getStdPrecision(), BigDecimal.ROUND_HALF_UP);
    BigDecimal qtyTo6 = p_Qty.divide(conversion.getDivideRate(), 6, BigDecimal.ROUND_HALF_UP);

    if (qtyTo.compareTo(qtyTo6) != 0) {
      throw new ErrorUsuarioOXP(
          "@StdPrecision@: "
              + qtyTo
              + " <> "
              + qtyTo6
              + " ("
              + p_Qty
              + "/"
              + conversion.getDivideRate()
              + ")");
    }

    log.info(conversion + " -> " + qtyTo);

    // Set to Beta

    return "Not completed yet";
  } // doIt