Search in sources :

Example 51 with PO

use of org.compiere.model.PO in project adempiere by adempiere.

the class ModelADServiceImpl method setDocAction.

/*
	 * Model oriented web service to change DocAction for documents, i.e. Complete a Material Receipt
	 * WARNING!!! This web service complete documents not via workflow, so it jump over any approval step considered in document workflow
	 *   To complete documents using workflow it's better to use the runProcess web service
	 */
public StandardResponseDocument setDocAction(ModelSetDocActionRequestDocument req) throws XFireFault {
    StandardResponseDocument ret = StandardResponseDocument.Factory.newInstance();
    StandardResponse resp = ret.addNewStandardResponse();
    ModelSetDocAction modelSetDocAction = req.getModelSetDocActionRequest().getModelSetDocAction();
    String serviceType = modelSetDocAction.getServiceType();
    ADLoginRequest reqlogin = req.getModelSetDocActionRequest().getADLoginRequest();
    String err = modelLogin(reqlogin, webServiceName, "setDocAction", serviceType);
    if (err != null && err.length() > 0) {
        resp.setError(err);
        resp.setIsError(true);
        return ret;
    }
    Properties ctx = m_cs.getM_ctx();
    // Validate parameters
    modelSetDocAction.setTableName(validateParameter("tableName", modelSetDocAction.getTableName()));
    modelSetDocAction.setRecordID(validateParameter("recordID", modelSetDocAction.getRecordID()));
    modelSetDocAction.setDocAction(validateParameter("docAction", modelSetDocAction.getDocAction()));
    String tableName = modelSetDocAction.getTableName();
    int recordID = modelSetDocAction.getRecordID();
    String docAction = modelSetDocAction.getDocAction();
    resp.setRecordID(recordID);
    // start a trx
    String trxName = Trx.createTrxName("ws_modelSetDocAction");
    Trx trx = Trx.get(trxName, false);
    // get the PO for the tablename and record ID
    MTable table = MTable.get(ctx, tableName);
    if (table == null)
        return rollbackAndSetError(trx, resp, ret, true, "No table " + tableName);
    PO po = table.getPO(recordID, trxName);
    if (po == null)
        return rollbackAndSetError(trx, resp, ret, true, "No Record " + recordID + " in " + tableName);
    // set explicitly the column DocAction to avoid automatic process of default option
    po.set_ValueOfColumn("DocAction", docAction);
    if (!po.save())
        return rollbackAndSetError(trx, resp, ret, true, "Cannot save before set docAction: " + CLogger.retrieveErrorString("no log message"));
    // call process it
    try {
        if (!((org.compiere.process.DocAction) po).processIt(docAction))
            return rollbackAndSetError(trx, resp, ret, true, "Couldn't set docAction: " + ((org.compiere.process.DocAction) po).getProcessMsg());
    } catch (Exception e) {
        return rollbackAndSetError(trx, resp, ret, true, e.toString());
    }
    // close the trx
    if (!po.save())
        return rollbackAndSetError(trx, resp, ret, true, "Cannot save after set docAction: " + CLogger.retrieveErrorString("no log message"));
    if (!trx.commit())
        return rollbackAndSetError(trx, resp, ret, true, "Cannot commit after docAction");
    trx.close();
    // resp.setError("");
    resp.setIsError(false);
    return ret;
}
Also used : ADLoginRequest(pl.x3E.adInterface.ADLoginRequest) StandardResponse(pl.x3E.adInterface.StandardResponse) Properties(java.util.Properties) ModelSetDocAction(pl.x3E.adInterface.ModelSetDocAction) SQLException(java.sql.SQLException) StandardResponseDocument(pl.x3E.adInterface.StandardResponseDocument) MTable(org.compiere.model.MTable) Trx(org.compiere.util.Trx) PO(org.compiere.model.PO)

Example 52 with PO

use of org.compiere.model.PO in project adempiere by adempiere.

the class ModelADServiceImpl method readData.

// updateData
public WindowTabDataDocument readData(ModelCRUDRequestDocument req) throws XFireFault {
    WindowTabDataDocument ret = WindowTabDataDocument.Factory.newInstance();
    WindowTabData resp = ret.addNewWindowTabData();
    ModelCRUD modelCRUD = req.getModelCRUDRequest().getModelCRUD();
    String serviceType = modelCRUD.getServiceType();
    int cnt = 0;
    ADLoginRequest reqlogin = req.getModelCRUDRequest().getADLoginRequest();
    String err = modelLogin(reqlogin, webServiceName, "readData", serviceType);
    if (err != null && err.length() > 0) {
        resp.setError(err);
        return ret;
    }
    // Validate parameters vs service type
    validateCRUD(modelCRUD);
    Properties ctx = m_cs.getM_ctx();
    String tableName = modelCRUD.getTableName();
    int recordID = modelCRUD.getRecordID();
    // get the PO for the tablename and record ID
    MTable table = MTable.get(ctx, tableName);
    if (table == null)
        throw new XFireFault("Web service type " + m_webservicetype.getValue() + ": table " + tableName + " not found", new QName("readData"));
    PO po = table.getPO(recordID, null);
    if (po == null) {
        resp.setSuccess(false);
        resp.setRowCount(cnt);
        resp.setNumRows(cnt);
        resp.setTotalRows(cnt);
        resp.setStartRow(0);
        return ret;
    }
    cnt = 1;
    POInfo poinfo = POInfo.getPOInfo(ctx, table.getAD_Table_ID());
    DataSet ds = resp.addNewDataSet();
    DataRow dr = ds.addNewDataRow();
    for (int i = 0; i < poinfo.getColumnCount(); i++) {
        String columnName = poinfo.getColumnName(i);
        if (m_webservicetype.isOutputColumnNameAllowed(columnName)) {
            DataField dfid = dr.addNewField();
            dfid.setColumn(columnName);
            if (po.get_Value(i) != null)
                dfid.setVal(po.get_Value(i).toString());
            else
                dfid.setVal(null);
        }
    }
    resp.setSuccess(true);
    resp.setRowCount(cnt);
    resp.setNumRows(cnt);
    resp.setTotalRows(cnt);
    resp.setStartRow(1);
    return ret;
}
Also used : ADLoginRequest(pl.x3E.adInterface.ADLoginRequest) DataSet(pl.x3E.adInterface.DataSet) QName(javax.xml.namespace.QName) WindowTabData(pl.x3E.adInterface.WindowTabData) Properties(java.util.Properties) XFireFault(org.codehaus.xfire.fault.XFireFault) DataRow(pl.x3E.adInterface.DataRow) POInfo(org.compiere.model.POInfo) WindowTabDataDocument(pl.x3E.adInterface.WindowTabDataDocument) MTable(org.compiere.model.MTable) DataField(pl.x3E.adInterface.DataField) ModelCRUD(pl.x3E.adInterface.ModelCRUD) PO(org.compiere.model.PO)

Example 53 with PO

use of org.compiere.model.PO in project adempiere by adempiere.

the class ModelADServiceImpl method queryData.

public WindowTabDataDocument queryData(ModelCRUDRequestDocument req) throws XFireFault {
    WindowTabDataDocument ret = WindowTabDataDocument.Factory.newInstance();
    WindowTabData resp = ret.addNewWindowTabData();
    ModelCRUD modelCRUD = req.getModelCRUDRequest().getModelCRUD();
    String serviceType = modelCRUD.getServiceType();
    /** 2014-12-04 Carlos Parada Add Support for Paginate Records */
    /** Current Page*/
    int currentPage = req.getModelCRUDRequest().getModelCRUD().getPageNo();
    /** Records per Page*/
    int m_RecByPage = MSysConfig.getIntValue("WS_RECORDS_BY_PAGE", 1);
    /** Quantity Pages*/
    int qtyPages = 0;
    log.info("Current Page " + currentPage);
    /** 2014-12-04 Carlos Parada */
    ADLoginRequest reqlogin = req.getModelCRUDRequest().getADLoginRequest();
    String err = modelLogin(reqlogin, webServiceName, "queryData", serviceType);
    if (err != null && err.length() > 0) {
        resp.setError(err);
        return ret;
    }
    // Validate parameters vs service type
    validateCRUD(modelCRUD);
    Properties ctx = m_cs.getM_ctx();
    String tableName = modelCRUD.getTableName();
    // get the PO for the tablename and record ID
    MTable table = MTable.get(ctx, tableName);
    if (table == null)
        throw new XFireFault("Web service type " + m_webservicetype.getValue() + ": table " + tableName + " not found", new QName("queryData"));
    int roleid = reqlogin.getRoleID();
    MRole role = new MRole(ctx, roleid, null);
    // 2014-12-04 Carlos Parada Replace ResultSet For Query  
    List<PO> records = null;
    String key = m_cs.getM_AD_User_ID() + "_" + serviceType;
    if (currentPage != 0)
        records = (List<PO>) s_cache.get(key);
    //"SELECT * FROM " + tableName;
    String sqlWhere = "";
    //sqlquery = role.addAccessSQL(sqlquery, tableName, true, true);
    for (DataField field : modelCRUD.getDataRow().getFieldList()) {
        if (m_webservicetype.isInputColumnNameAllowed(field.getColumn())) {
            sqlWhere += (sqlWhere.equals("") ? "" : " AND ") + field.getColumn() + "=?";
        } else {
            throw new XFireFault("Web service type " + m_webservicetype.getValue() + ": input column " + field.getColumn() + " not allowed", new QName("queryData"));
        }
    }
    if (modelCRUD.getFilter() != null && modelCRUD.getFilter().length() > 0)
        sqlWhere += " AND " + modelCRUD.getFilter();
    POInfo poinfo = POInfo.getPOInfo(ctx, table.getAD_Table_ID());
    int cnt = 0;
    try {
        if (records == null) {
            Query query = new Query(ctx, poinfo.getTableName(), sqlWhere, null);
            Object[] parameters = new Object[modelCRUD.getDataRow().getFieldList().size()];
            int p = 1;
            int i = 0;
            for (DataField field : modelCRUD.getDataRow().getFieldList()) {
                parameters[i] = field.getVal();
                i++;
            }
            if (parameters.length > 0)
                query.setParameters(parameters);
            records = query.setApplyAccessFilter(true).list();
        }
        // Angelo Dabala' (genied) must create just one DataSet, moved outside of the while loop
        DataSet ds = resp.addNewDataSet();
        // Set Quantity of Pages
        if (records.size() != 0)
            qtyPages = new BigDecimal(records.size()).divide(new BigDecimal(m_RecByPage)).setScale(0, BigDecimal.ROUND_UP).intValue();
        int begin = 0, end = 0;
        begin = currentPage * m_RecByPage;
        end = (((currentPage + 1) * m_RecByPage) > records.size() ? records.size() : ((currentPage + 1) * m_RecByPage));
        for (int j = begin; j < end; j++) {
            PO record = records.get(j);
            cnt++;
            DataRow dr = ds.addNewDataRow();
            for (int i = 0; i < poinfo.getColumnCount(); i++) {
                String columnName = poinfo.getColumnName(i);
                if (m_webservicetype.isOutputColumnNameAllowed(columnName)) {
                    DataField dfid = dr.addNewField();
                    dfid.setColumn(columnName);
                    dfid.setLval(record.get_ValueAsString(columnName));
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    // ignore this exception
    }
    resp.setSuccess(true);
    resp.setRowCount(cnt);
    resp.setNumRows(cnt);
    resp.setTotalRows(cnt);
    resp.setStartRow(1);
    resp.setQtyPages(qtyPages);
    return ret;
}
Also used : ADLoginRequest(pl.x3E.adInterface.ADLoginRequest) Query(org.compiere.model.Query) DataSet(pl.x3E.adInterface.DataSet) QName(javax.xml.namespace.QName) MRole(org.compiere.model.MRole) WindowTabData(pl.x3E.adInterface.WindowTabData) Properties(java.util.Properties) XFireFault(org.codehaus.xfire.fault.XFireFault) DataRow(pl.x3E.adInterface.DataRow) BigDecimal(java.math.BigDecimal) SQLException(java.sql.SQLException) POInfo(org.compiere.model.POInfo) WindowTabDataDocument(pl.x3E.adInterface.WindowTabDataDocument) MTable(org.compiere.model.MTable) DataField(pl.x3E.adInterface.DataField) ModelCRUD(pl.x3E.adInterface.ModelCRUD) List(java.util.List) ModelGetList(pl.x3E.adInterface.ModelGetList) ArrayList(java.util.ArrayList) PO(org.compiere.model.PO)

Example 54 with PO

use of org.compiere.model.PO in project adempiere by adempiere.

the class TestableMRP method createMRPSupply.

private void createMRPSupply(int AD_Org_ID, int PP_MRP_ID, MProduct product, BigDecimal QtyPlanned, Timestamp DemandDateStartSchedule) {
    Timestamp datePromised = DemandDateStartSchedule;
    Timestamp dateStartSchedule = TimeUtil.addDays(datePromised, 0 - this.planning.getDeliveryTime_Promised().intValueExact());
    I_PP_MRP mrp = MRPUtil.createMRP(this.planning, X_PP_MRP.TYPEMRP_Supply, X_PP_MRP.DOCSTATUS_Drafted, QtyPlanned, datePromised, dateStartSchedule);
    ((PO) mrp).saveEx(get_TrxName());
    this.actualMRP.add(mrp);
}
Also used : Timestamp(java.sql.Timestamp) I_PP_MRP(org.eevolution.model.I_PP_MRP) PO(org.compiere.model.PO)

Example 55 with PO

use of org.compiere.model.PO in project adempiere by adempiere.

the class TestableMRP method dumpStatus.

public void dumpStatus() {
    log.info("------------ MRP TEST --------------");
    log.info("          Name : " + this.name);
    log.info("   Description : " + this.description);
    log.info("       Product : " + this.productValue);
    log.info("         Today : " + this.today);
    log.info("     QtyOnHand : " + this.qtyOnHand);
    ((PO) this.planning).dump();
    //
    log.info("------------ Initial MRP --------------");
    for (I_PP_MRP mrp : this.initialMRP) log.info("    " + ((PO) mrp).toString());
    log.info("------------ Expected MRP --------------");
    for (I_PP_MRP mrp : this.expectedMRP) log.info("    " + ((PO) mrp).toString());
    log.info("------------ Actual MRP --------------");
    for (I_PP_MRP mrp : this.actualMRP) log.info(("    " + (PO) mrp).toString());
    log.info("------------ Expected NOTICES --------------");
    for (MRPNotice notice : this.expectedNotices) log.info("    " + notice.toString());
    log.info("------------ Actual NOTICES --------------");
    for (MRPNotice notice : this.actualNotices) log.info("    " + notice.toString());
}
Also used : PO(org.compiere.model.PO) I_PP_MRP(org.eevolution.model.I_PP_MRP)

Aggregations

PO (org.compiere.model.PO)75 MTable (org.compiere.model.MTable)18 AdempiereException (org.adempiere.exceptions.AdempiereException)17 SQLException (java.sql.SQLException)16 Properties (java.util.Properties)13 BigDecimal (java.math.BigDecimal)11 Query (org.compiere.model.Query)8 Element (org.w3c.dom.Element)7 ArrayList (java.util.ArrayList)6 MEXPFormat (org.compiere.model.MEXPFormat)6 ADLoginRequest (pl.x3E.adInterface.ADLoginRequest)6 POInfo (org.compiere.model.POInfo)5 Trx (org.compiere.util.Trx)5 ModelCRUD (pl.x3E.adInterface.ModelCRUD)5 PreparedStatement (java.sql.PreparedStatement)4 ResultSet (java.sql.ResultSet)4 XFireFault (org.codehaus.xfire.fault.XFireFault)4 DataField (pl.x3E.adInterface.DataField)4 DataRow (pl.x3E.adInterface.DataRow)4 ParseException (java.text.ParseException)3