Search in sources :

Example 1 with ICreateFrom

use of org.compiere.grid.ICreateFrom in project adempiere by adempiere.

the class WCreateFromFactory method create.

/**
	 *  Factory - called from APanel
	 *  @param  mTab        Model Tab for the trx
	 *  @return JDialog
	 */
public static ICreateFrom create(GridTab mTab) {
    //	dynamic init preparation
    int AD_Table_ID = Env.getContextAsInt(Env.getCtx(), mTab.getWindowNo(), "BaseTable_ID");
    ICreateFrom retValue = null;
    Class<? extends ICreateFrom> cl = s_registeredClasses.get(AD_Table_ID);
    if (cl != null) {
        try {
            java.lang.reflect.Constructor<? extends ICreateFrom> ctor = cl.getConstructor(GridTab.class);
            retValue = ctor.newInstance(mTab);
        } catch (Throwable e) {
            s_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
            return null;
        }
    }
    if (retValue == null) {
        s_log.info("Unsupported AD_Table_ID=" + AD_Table_ID);
        return null;
    }
    return retValue;
}
Also used : ICreateFrom(org.compiere.grid.ICreateFrom)

Example 2 with ICreateFrom

use of org.compiere.grid.ICreateFrom in project adempiere by adempiere.

the class APanel method actionButton.

/**************************************************************************
	 *	Start Button Process
	 *  @param vButton button
	 */
protected void actionButton(VButton vButton) {
    log.info(vButton.toString());
    if (m_curTab.hasChangedCurrentTabAndParents()) {
        String msg = CLogger.retrieveErrorString("Please ReQuery Window");
        ADialog.error(m_curWindowNo, this, null, msg);
        return;
    }
    boolean startWOasking = false;
    //		boolean batch = false;
    String col = vButton.getColumnName();
    //  Zoom
    if (col.equals("Record_ID")) {
        int AD_Table_ID = Env.getContextAsInt(m_ctx, m_curWindowNo, "AD_Table_ID");
        int Record_ID = Env.getContextAsInt(m_ctx, m_curWindowNo, "Record_ID");
        AEnv.zoom(AD_Table_ID, Record_ID);
        return;
    }
    //  save first	---------------
    if (m_curTab.needSave(true, false))
        if (!cmd_save(true))
            return;
    // Save included tabs if necessary - teo_sarca BF [ 2876892 ]
    for (GridTab includedTab : m_curTab.getIncludedTabs()) {
        if (includedTab.needSave(true, false))
            if (!includedTab.dataSave(true))
                return;
    }
    //
    int table_ID = m_curTab.getAD_Table_ID();
    //	Record_ID
    int record_ID = m_curTab.getRecord_ID();
    //	Record_ID - Language Handling
    if (record_ID == -1 && m_curTab.getKeyColumnName().equals("AD_Language"))
        record_ID = Env.getContextAsInt(m_ctx, m_curWindowNo, "AD_Language_ID");
    //	Record_ID - Change Log ID
    if (record_ID == -1 && (vButton.getProcess_ID() == 306 || vButton.getProcess_ID() == 307)) {
        Integer id = (Integer) m_curTab.getValue("AD_ChangeLog_ID");
        record_ID = id.intValue();
    }
    //	Ensure it's saved
    if (record_ID == -1 && m_curTab.getKeyColumnName().endsWith("_ID")) {
        ADialog.error(m_curWindowNo, this, "SaveErrorRowNotFound");
        return;
    }
    boolean isProcessMandatory = false;
    //	Pop up Payment Rules
    if (col.equals("PaymentRule")) {
        VPayment vp = new VPayment(m_curWindowNo, m_curTab, vButton);
        if (//	may not be allowed
        vp.isInitOK())
            vp.setVisible(true);
        vp.dispose();
        if (vp.needSave()) {
            cmd_save(false);
            cmd_refresh();
        }
    } else //	Pop up Document Action (Workflow)
    if (col.equals("DocAction")) {
        isProcessMandatory = true;
        VDocAction vda = new VDocAction(m_curWindowNo, m_curTab, vButton, record_ID);
        //	Something to select from?
        if (vda.getNumberOfOptions() == 0) {
            vda.dispose();
            log.info("DocAction - No Options");
            return;
        } else {
            vda.setVisible(true);
            if (!vda.isStartProcess())
                return;
            //				batch = vda.isBatch();
            startWOasking = true;
            vda.dispose();
        }
    } else //  Pop up Create From
    if (col.equals("CreateFrom")) {
        // Run form only if the button has no process defined - teo_sarca [ 1974354 ]
        if (vButton.getProcess_ID() <= 0) {
            ICreateFrom cf = VCreateFromFactory.create(m_curTab);
            if (cf != null) {
                if (cf.isInitOK()) {
                    cf.showWindow();
                    cf.closeWindow();
                    m_curTab.dataRefresh();
                } else
                    cf.closeWindow();
                return;
            }
        //	else may start process
        }
    } else //  Posting -----
    if (col.equals("Posted") && MRole.getDefault().isShowAcct()) {
        //  Check Doc Status
        String processed = Env.getContext(m_ctx, m_curWindowNo, "Processed");
        if (!processed.equals("Y")) {
            String docStatus = Env.getContext(m_ctx, m_curWindowNo, "DocStatus");
            if (DocAction.STATUS_Completed.equals(docStatus) || DocAction.STATUS_Closed.equals(docStatus) || DocAction.STATUS_Reversed.equals(docStatus) || DocAction.STATUS_Voided.equals(docStatus))
                ;
            else {
                ADialog.error(m_curWindowNo, this, "PostDocNotComplete");
                return;
            }
        }
        // try to get table and record id from context data (eg for unposted view)
        // otherwise use current table/record
        int tableId = Env.getContextAsInt(m_ctx, m_curWindowNo, "AD_Table_ID", true);
        int recordId = Env.getContextAsInt(m_ctx, m_curWindowNo, "Record_ID", true);
        if (tableId == 0 || recordId == 0) {
            tableId = m_curTab.getAD_Table_ID();
            recordId = m_curTab.getRecord_ID();
        }
        //  Check Post Status
        Object ps = m_curTab.getValue("Posted");
        if (ps != null && ps.equals("Y")) {
            new org.compiere.acct.AcctViewer(Env.getContextAsInt(m_ctx, m_curWindowNo, "AD_Client_ID"), tableId, recordId);
        } else {
            if (ADialog.ask(m_curWindowNo, this, "PostImmediate?")) {
                //	force when problems
                boolean force = ps != null && !ps.equals("N");
                String error = AEnv.postImmediate(m_curWindowNo, Env.getAD_Client_ID(m_ctx), tableId, recordId, force);
                if (error != null)
                    ADialog.error(m_curWindowNo, this, "PostingError-N", error);
                cmd_refresh();
            }
        }
        return;
    }
    //  Posted
    /**
		 *  Start Process ----
		 *  or invoke user form
		 */
    log.config("Process_ID=" + vButton.getProcess_ID() + ", Record_ID=" + record_ID);
    if (vButton.getProcess_ID() == 0) {
        if (isProcessMandatory) {
            ADialog.error(m_curWindowNo, this, null, Msg.parseTranslation(m_ctx, "@NotFound@ @AD_Process_ID@"));
        }
        return;
    }
    //	Save item changed
    if (m_curTab.needSave(true, false))
        if (!cmd_save(true))
            return;
    // call form
    MProcess pr = new MProcess(m_ctx, vButton.getProcess_ID(), null);
    //	Validate Access
    MRole role = MRole.getDefault(m_ctx, false);
    Boolean accessRW = role.checkProcessAccess(pr.getAD_Process_ID());
    if (accessRW == null || !accessRW.booleanValue()) {
        ADialog.error(m_curWindowNo, this, null, Msg.parseTranslation(m_ctx, "@AccessCannotProcess@"));
        return;
    }
    //	
    int form_ID = pr.getAD_Form_ID();
    if (form_ID != 0) {
        if (m_curTab.needSave(true, false))
            if (!cmd_save(true))
                return;
        //	Yamel Senih FR [ 114 ] 2015-11-23 Add Support to Dialog for create from
        FormFrame ff = new FormFrame(getWindowNo());
        String title = vButton.getDescription();
        if (title == null || title.length() == 0)
            title = vButton.getName();
        ProcessInfo pi = new ProcessInfo(title, vButton.getProcess_ID(), table_ID, record_ID);
        pi.setAD_User_ID(Env.getAD_User_ID(m_ctx));
        pi.setAD_Client_ID(Env.getAD_Client_ID(m_ctx));
        ff.setProcessInfo(pi);
        ff.openForm(form_ID);
        ff.pack();
        AEnv.showCenterScreen(ff);
        //	Refresh
        m_curTab.dataRefresh();
        //	End Yamel Senih
        return;
    }
    int browse_ID = pr.getAD_Browse_ID();
    if (browse_ID != 0) {
        if (m_curTab.needSave(true, false))
            if (!cmd_save(true))
                return;
        String title = vButton.getDescription();
        if (title == null || title.length() == 0)
            title = vButton.getName();
        ProcessInfo pi = new ProcessInfo(title, vButton.getProcess_ID(), table_ID, record_ID);
        pi.setAD_User_ID(Env.getAD_User_ID(m_ctx));
        pi.setAD_Client_ID(Env.getAD_Client_ID(m_ctx));
        FormFrame ff = new FormFrame(getWindowNo());
        ff.setProcessInfo(pi);
        MBrowse browse = new MBrowse(Env.getCtx(), browse_ID, null);
        new VBrowser(ff, true, getWindowNo(), "", browse, "", true, "", Env.isSOTrx(Env.getCtx(), m_curWindowNo));
        ff.pack();
        AEnv.showCenterScreen(ff);
        //	Yamel Senih
        //	Refresh
        m_curTab.dataRefresh();
        return;
    } else {
        ProcessModalDialog dialog = new ProcessModalDialog(m_ctx, Env.getWindow(m_curWindowNo), Env.getHeader(m_ctx, m_curWindowNo), this, m_curWindowNo, vButton.getProcess_ID(), table_ID, record_ID, startWOasking);
        //	BR [ 323 ]
        if (!startWOasking) {
            dialog.validate();
            dialog.pack();
            AEnv.showCenterWindow(Env.getWindow(m_curWindowNo), dialog);
        }
    }
}
Also used : VDocAction(org.compiere.grid.ed.VDocAction) MProcess(org.compiere.model.MProcess) FormFrame(org.compiere.apps.form.FormFrame) MRole(org.compiere.model.MRole) VPayment(org.compiere.grid.VPayment) ProcessInfo(org.compiere.process.ProcessInfo) MBrowse(org.adempiere.model.MBrowse) Point(java.awt.Point) VBrowser(org.eevolution.form.VBrowser) ICreateFrom(org.compiere.grid.ICreateFrom) GridTab(org.compiere.model.GridTab)

Example 3 with ICreateFrom

use of org.compiere.grid.ICreateFrom in project adempiere by adempiere.

the class AbstractADWindowPanel method actionButton.

//
/**************************************************************************
	 *	Start Button Process
	 *  @param wButton button
	 */
private void actionButton(WButtonEditor wButton) {
    GridTab currentTab = toolbar.getCurrentPanel().getGridTab();
    if (currentTab.hasChangedCurrentTabAndParents()) {
        String msg = CLogger.retrieveErrorString("Please ReQuery Window");
        FDialog.error(curWindowNo, parent, null, msg);
        return;
    }
    logger.info(wButton.toString());
    boolean startWOasking = false;
    String col = wButton.getColumnName();
    //  Zoom
    if (col.equals("Record_ID")) {
        int AD_Table_ID = Env.getContextAsInt(ctx, curWindowNo, "AD_Table_ID");
        int Record_ID = Env.getContextAsInt(ctx, curWindowNo, "Record_ID");
        AEnv.zoom(AD_Table_ID, Record_ID);
        return;
    }
    if (currentTab.needSave(true, false)) {
        if (!onSave(false))
            return;
    }
    int table_ID = currentTab.getAD_Table_ID();
    //	Record_ID
    int record_ID = currentTab.getRecord_ID();
    if (record_ID == -1 && currentTab.getKeyColumnName().equals("AD_Language"))
        record_ID = Env.getContextAsInt(ctx, curWindowNo, "AD_Language_ID");
    if (record_ID == -1 && (wButton.getProcess_ID() == 306 || wButton.getProcess_ID() == 307)) {
        Integer id = (Integer) currentTab.getValue("AD_ChangeLog_ID");
        record_ID = id.intValue();
    }
    if (record_ID == -1 && currentTab.getKeyColumnName().endsWith("_ID")) {
        FDialog.error(curWindowNo, parent, "SaveErrorRowNotFound");
        return;
    }
    boolean isProcessMandatory = false;
    if (col.equals("PaymentRule")) {
        WPayment vp = new WPayment(curWindowNo, currentTab, wButton);
        if (//	may not be allowed
        vp.isInitOK()) {
            vp.setVisible(true);
            AEnv.showWindow(vp);
        }
        if (vp.needSave()) {
            onSave(false);
            onRefresh(false);
        }
    } else if (col.equals("DocAction")) {
        isProcessMandatory = true;
        WDocActionPanel win = new WDocActionPanel(currentTab);
        if (win.getNumberOfOptions() == 0) {
            logger.info("DocAction - No Options");
            return;
        } else {
            AEnv.showWindow(win);
            if (!win.isStartProcess())
                return;
            //batch = win.isBatch();
            startWOasking = true;
        //vda.dispose();
        }
    } else if (col.equals("CreateFrom")) {
        ICreateFrom cf = WCreateFromFactory.create(currentTab);
        if (cf != null) {
            if (cf.isInitOK()) {
                cf.showWindow();
                currentTab.dataRefresh();
            }
            return;
        }
    // else may start process
    } else if (col.equals("Posted") && MRole.getDefault().isShowAcct()) {
        //  Check Doc Status
        String processed = Env.getContext(ctx, curWindowNo, "Processed");
        if (!processed.equals("Y")) {
            String docStatus = Env.getContext(ctx, curWindowNo, "DocStatus");
            if (DocAction.STATUS_Completed.equals(docStatus) || DocAction.STATUS_Closed.equals(docStatus) || DocAction.STATUS_Reversed.equals(docStatus) || DocAction.STATUS_Voided.equals(docStatus))
                ;
            else {
                FDialog.error(curWindowNo, parent, "PostDocNotComplete");
                return;
            }
        }
        // try to get table and record id from context data (eg for unposted view)
        // otherwise use current table/record
        int tableId = Env.getContextAsInt(ctx, curWindowNo, "AD_Table_ID", true);
        int recordId = Env.getContextAsInt(ctx, curWindowNo, "Record_ID", true);
        if (tableId == 0 || recordId == 0) {
            tableId = currentTab.getAD_Table_ID();
            recordId = currentTab.getRecord_ID();
        }
        //  Check Post Status
        Object ps = currentTab.getValue("Posted");
        if (ps != null && ps.equals("Y")) {
            new org.adempiere.webui.acct.WAcctViewer(Env.getContextAsInt(ctx, curWindowNo, "AD_Client_ID"), tableId, recordId);
        } else {
            if (FDialog.ask(curWindowNo, null, "PostImmediate?")) {
                //	force when problems
                boolean force = ps != null && !ps.equals("N");
                String error = AEnv.postImmediate(curWindowNo, Env.getAD_Client_ID(ctx), tableId, recordId, force);
                if (error != null)
                    FDialog.error(curWindowNo, null, "PostingError-N", error);
                onRefresh(false);
            }
        }
        return;
    }
    //  Posted
    /**
		 *  Start Process ----
		 */
    logger.config("Process_ID=" + wButton.getProcess_ID() + ", Record_ID=" + record_ID);
    if (wButton.getProcess_ID() == 0) {
        if (isProcessMandatory) {
            FDialog.error(curWindowNo, null, null, Msg.parseTranslation(ctx, "@NotFound@ @AD_Process_ID@"));
        }
        return;
    }
    if (currentTab.needSave(true, false)) {
        if (!onSave(false))
            return;
    }
    // call form
    MProcess pr = new MProcess(ctx, wButton.getProcess_ID(), null);
    //	Validate Access
    //	BR [ 147 ]
    MRole role = MRole.getDefault(ctx, false);
    Boolean accessRW = role.checkProcessAccess(pr.getAD_Process_ID());
    if (accessRW == null || !accessRW.booleanValue()) {
        FDialog.error(curWindowNo, parent, "AccessCannotProcess");
        return;
    }
    int adFormID = pr.getAD_Form_ID();
    //	Yamel Senih BR[ 127 ], 2015-11-25
    //	Bug with launch form
    int adBrowseID = pr.getAD_Browse_ID();
    if (adFormID != 0) {
        String title = wButton.getDescription();
        if (title == null || title.length() == 0)
            title = wButton.getDisplay();
        ProcessInfo pi = new ProcessInfo(title, wButton.getProcess_ID(), table_ID, record_ID);
        pi.setWindowNo(curWindowNo);
        pi.setAD_User_ID(Env.getAD_User_ID(ctx));
        pi.setAD_Client_ID(Env.getAD_Client_ID(ctx));
        ADForm form = ADForm.openForm(adFormID);
        form.setProcessInfo(pi);
        //	Yamel Senih FR [ 114 ], 2015-11-25
        form.setAttribute(Window.MODE_KEY, Window.MODE_MODAL);
        form.setAttribute(Window.INSERT_POSITION_KEY, Window.INSERT_NEXT);
        form.setClosable(true);
        form.setMaximizable(true);
        form.setSizable(true);
        form.setContentStyle("overflow: auto");
        AEnv.showWindow(form);
        //	End Yamel Senih
        currentTab.dataRefreshAll();
    } else if (adBrowseID != 0) {
        String title = wButton.getDescription();
        if (title == null || title.length() == 0)
            title = wButton.getDisplay();
        ProcessInfo pi = new ProcessInfo(title, wButton.getProcess_ID(), table_ID, record_ID);
        pi.setAD_User_ID(Env.getAD_User_ID(ctx));
        pi.setAD_Client_ID(Env.getAD_Client_ID(ctx));
        MBrowse browse = new MBrowse(Env.getCtx(), adBrowseID, null);
        WBrowser browser = new WBrowser(true, curWindowNo, "", browse, "", true, "", "Y".equals(Env.isSOTrx(Env.getCtx(), curWindowNo)));
        browser.setProcessInfo(pi);
        CustomForm ff = browser.getForm();
        ff.setAttribute(Window.MODE_KEY, Window.MODE_EMBEDDED);
        ff.setAttribute(Window.INSERT_POSITION_KEY, Window.INSERT_NEXT);
        ff.setTitle(title);
        SessionManager.getAppDesktop().showWindow(ff);
        onRefresh(false);
    } else {
        ProcessModalDialog dialog = new ProcessModalDialog(this, curWindowNo, wButton.getProcess_ID(), table_ID, record_ID, startWOasking);
        if (dialog.isValid()) {
            dialog.setWidth("500px");
            dialog.setVisible(true);
            dialog.setPosition("center");
            AEnv.showWindow(dialog);
        }
    //onRefresh(true); // Need to fire events to activate subordinate tabs.
    }
}
Also used : MProcess(org.compiere.model.MProcess) MRole(org.compiere.model.MRole) ProcessInfo(org.compiere.process.ProcessInfo) ProcessModalDialog(org.adempiere.webui.apps.ProcessModalDialog) MBrowse(org.adempiere.model.MBrowse) WBrowser(org.eevolution.form.WBrowser) ICreateFrom(org.compiere.grid.ICreateFrom) WPayment(org.adempiere.webui.apps.form.WPayment) GridTab(org.compiere.model.GridTab)

Aggregations

ICreateFrom (org.compiere.grid.ICreateFrom)3 MBrowse (org.adempiere.model.MBrowse)2 GridTab (org.compiere.model.GridTab)2 MProcess (org.compiere.model.MProcess)2 MRole (org.compiere.model.MRole)2 ProcessInfo (org.compiere.process.ProcessInfo)2 Point (java.awt.Point)1 ProcessModalDialog (org.adempiere.webui.apps.ProcessModalDialog)1 WPayment (org.adempiere.webui.apps.form.WPayment)1 FormFrame (org.compiere.apps.form.FormFrame)1 VPayment (org.compiere.grid.VPayment)1 VDocAction (org.compiere.grid.ed.VDocAction)1 VBrowser (org.eevolution.form.VBrowser)1 WBrowser (org.eevolution.form.WBrowser)1