⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vinventorymovegen.java

📁 大家共享愉快, 共享愉快, 共享愉快, 共享愉快,共享愉快
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

    /**
     * 	Dispose
     */
    public void dispose() {
        if (m_frame != null)
            m_frame.dispose();
        m_frame = null;
    } //	dispose

    /**
     *	Action Listener
     *  @param e event
     */
    public void actionPerformed(ActionEvent e) {
        log.info("Cmd=" + e.getActionCommand());
        //
        if (e.getActionCommand().equals(ConfirmPanel.A_CANCEL)) {
            dispose();
            return;
        }

        //
        m_whereClause = saveSelection();
        System.out.println("m_whereClause: " + m_whereClause);
        if (m_whereClause.length() > 0 && m_selectionActive &&
            locatorField.getM_Locator_ID() != 0) {
            generateInventoryMovements();
        } else if (m_whereClause.length() <= 0) {
            ADialog.error(m_WindowNo, this,"NoProductionLineSelected");
            return;
        } else if (locatorField.getM_Locator_ID() == 0) {
            ADialog.error(m_WindowNo, this, "LocatorEmpty");
            return;
        } else {
            dispose();
        }
    } //	actionPerformed

    /**
     *	Vetoable Change Listener - requery
     *  @param e event
     */
    public void vetoableChange(PropertyChangeEvent e) {
        log.info(e.getPropertyName() + "=" + e.getNewValue());
        if (e.getPropertyName().equals("M_Production_ID"))
            m_M_Production_ID = e.getNewValue();
        executeQuery();
    } //	vetoableChange

    /**
     *	Change Listener (Tab changed)
     *  @param e event
     */
    public void stateChanged(ChangeEvent e) {
        int index = tabbedPane.getSelectedIndex();
        m_selectionActive = (index == 0);
    } //	stateChanged

    /**
     *  Table Model Listener
     *  @param e event
     */
    public void tableChanged(TableModelEvent e) {
        int rowsSelected = 0;
        int rows = miniTable.getRowCount();
        for (int i = 0; i < rows; i++) {
            IDColumn id = (IDColumn) miniTable.getValueAt(i, 0); //  ID in column 0
            if (id != null && id.isSelected())
                rowsSelected++;
        }
        statusBar.setStatusDB(" " + rowsSelected + " ");
    } //  tableChanged

    /**
     *	Save Selection & return selecion Query or ""
     *  @return where clause like M_ProductionLine_ID IN (...)
     */
    private String saveSelection() {
        log.info("");
        //  ID selection may be pending
        miniTable.editingStopped(new ChangeEvent(this));
        //  Array of Integers
        ArrayList results = new ArrayList();

        //	Get selected entries
        int rows = miniTable.getRowCount();
        for (int i = 0; i < rows; i++) {
            IDColumn id = (IDColumn) miniTable.getValueAt(i, 0); //  ID in column 0
            //	log.fine( "Row=" + i + " - " + id);
            if (id != null && id.isSelected())
                results.add(id.getRecord_ID());
        }

        if (results.size() == 0)
            return "";

        //	Query String
        String keyColumn = "M_ProductionLine_ID";
        StringBuffer sb = new StringBuffer(keyColumn);
        if (results.size() > 1)
            sb.append(" IN (");
        else
            sb.append("=");
        //	Add elements
        for (int i = 0; i < results.size(); i++) {
            if (i > 0)
                sb.append(",");
            if (keyColumn.endsWith("_ID"))
                sb.append(results.get(i).toString());
            else
                sb.append("'").append(results.get(i).toString());
        }

        if (results.size() > 1)
            sb.append(")");
        //
        log.config(sb.toString());
        return sb.toString();
    } //	saveSelection


    /**************************************************************************
     *	Generate Inventory Move.
     */
    private void generateInventoryMovements() {
        try{
            String trxName = null;
            Trx trx = null;

            //	Reset Selection
            String sql = "UPDATE M_ProductionLine SET IsSelected = 'N' "
                         + "WHERE IsSelected='Y'"
                         + " AND AD_Client_ID=" +
                         Env.getAD_Client_ID(Env.getCtx());
            int no = DB.executeUpdate(sql, trxName);
            log.config("Reset=" + no);

            //	Set Selection
            sql = "UPDATE M_ProductionLine SET IsSelected='Y' WHERE " +
                  m_whereClause;
            no = DB.executeUpdate(sql, trxName);
            log.fine(sql);
            if (no == 0) {
                String msg = "No ProductionLines"; //  not translated!
                log.config(msg);
                info.setText(msg);
                return;
            }
            log.config("Set=" + no);

            m_selectionActive = false; //  prevents from being called twice
            statusBar.setStatusLine(Msg.getMsg(Env.getCtx(),
                                               "InventoryMoveGenerateGen"));
            statusBar.setStatusDB(String.valueOf(no));

            //	Prepare Process
            ProcessInfo pi = new ProcessInfo("", 345); // HARDCODED    Process: M_InventoryMove_Generate
            MPInstance mpi = new MPInstance(Env.getCtx(), pi.getAD_Process_ID(),
                                            pi.getRecord_ID());
            mpi.save();
            pi.setAD_PInstance_ID(mpi.getAD_PInstance_ID());
            if (pi.getAD_PInstance_ID() == 0) {
                info.setText(Msg.getMsg(Env.getCtx(), "ProcessNoInstance"));
                return;
            }

            //	Add Parameter - Selection=Y
            MPInstancePara ip = new MPInstancePara(mpi, 10);
            ip.setParameter("Selection", "Y");
            if (!ip.save()) {
                String msg = "No Parameter added"; //  not translated
                info.setText(msg);
                log.log(Level.SEVERE, msg);
                return;
            }
            //	Add Parameter - M_Locator_ID
            ip = new MPInstancePara(mpi, 20);
            ip.setParameter("M_Locator_ID", locatorField.getM_Locator_ID());
            if (!ip.save()) {
                String msg = "No Parameter added"; //  not translated
                info.setText(msg);
                log.log(Level.SEVERE, msg);
                return;
            }

            //	Execute Process
            ProcessCtl worker = new ProcessCtl(this, pi, trx);
            worker.start(); //  complete tasks in unlockUI / M_InventoryMove_Generate
        }catch(Exception ex){
            System.out.println(ex);
        }
        //
    } //	generateInventoryMovements

    /**
     *  Complete generating inventory movements.
     *  Called from Unlock UI
     *  @param pi process info
     */
    private void generateInventoryMove_complete(ProcessInfo pi) {
        //  Switch Tabs
        tabbedPane.setSelectedIndex(1);
        //
        ProcessInfoUtil.setLogFromDB(pi);
        StringBuffer iText = new StringBuffer();
        iText.append("<b>").append(pi.getSummary())
                .append("</b><br>(")
                .append(Msg.getMsg(Env.getCtx(), "InventoryMoveGenerateInfo"))
                //  Inventory Movements are generated depending on the Delivery Rule selection in the Production
                .append(")<br>")
                .append(pi.getLogInfo(true));
        info.setText(iText.toString());

        //	Reset Selection
        String sql = "UPDATE M_ProductionLine SET IsSelected='N' WHERE " +
                     m_whereClause;
        int no = DB.executeUpdate(sql);
        log.config("VInventoryMoveGen.generateInventoryMove_complete - Reset=" +
                   no);

        //	Get results
        int[] ids = pi.getIDs();
        if (ids == null || ids.length == 0)
            return;
        log.config(
                "VInventoryMoveGen.generateInventoryMove_complete - PrintItems=" +
                ids.length);
    } //  generateShipments_complete


    /**************************************************************************
     *  Lock User Interface.
     *  Called from the Worker before processing
     *  @param pi process info
     */
    public void lockUI(ProcessInfo pi) {
        this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        this.setEnabled(false);
    } //  lockUI

    /**
     *  Unlock User Interface.
     *  Called from the Worker when processing is done
     *  @param pi result of execute ASync call
     */
    public void unlockUI(ProcessInfo pi) {
        this.setEnabled(true);
        this.setCursor(Cursor.getDefaultCursor());
        //
        generateInventoryMove_complete(pi);
    } //  unlockUI

    /**
     *  Is the UI locked (Internal method)
     *  @return true, if UI is locked
     */
    public boolean isUILocked() {
        return this.isEnabled();
    } //  isUILocked

    /**
     *  Method to be executed async.
     *  Called from the Worker
     *  @param pi ProcessInfo
     */
    public void executeASync(ProcessInfo pi) {
    } //  executeASync

} //	VInventoryMoveGen

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -