Package clips.service.newSerRen

Source Code of clips.service.newSerRen.DialogNewSerRen

/*
* DialogNewSerRen.java
*
* Created on 25 Март 2008 г., 17:13
*/
package clips.service.newSerRen;

import beans.service.create.NewServicesChunk;
import beans.service.create.ServiceCheckupChunk;
import cli_fmw.delegate.directory.DirectoryItemRO;
import cli_fmw.delegate.directory.simple.DirectorySimpleItem;
import clips.delegate.service.*;
import clips.delegate.client.ClientLocal;
import clips.delegate.contract.ServiceContractPriceData;
import clips.delegate.directory.filtered.DirectoryCheckupTypeItem;
import clips.delegate.directory.complex.DirectoryPacketTemplateItem;
import clips.delegate.directory.filtered.DirectoryServiceItem;
import clips.delegate.doctor.checkup.CheckupXMLData;
import cli_fmw.main.ClipsException;
import clips.delegate.service.discount.DiscountCardLocal;
import clips.doctor.checkup.prepareCheckup.DialogEditCheckUpList;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.ModalDialog;
import cli_fmw.utils.table_config_states.StateSaver;
import cli_fmw.utils.table_config_states.TableState;
import clips.login.UserInfo;
import framework.beans.ModificationInfo;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.beans.PropertyChangeEvent;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.tree.TreeSelectionModel;
import org.jdom.JDOMException;
import framework.security.SecurityChecker;
import beans.UserRightsSet;
import beans.service.ServiceRender;
import cli_fmw.delegate.AuditList;
import cli_fmw.main.audit.AuditFrame;
import cli_fmw.main.PrintCreators;
import cli_fmw.main.audit.AuditManager;
import cli_fmw.utils.ModalDialog;
import cli_fmw.report.CombinedReportCreator;
import cli_fmw.report.CombinedReportOptions;
import cli_fmw.report.FormReportCreator;
import cli_fmw.report.PageOptions.PageOrentation;
import cli_fmw.report.ReporterFactory;
import clips.delegate.doctor.DiseaseLocal;
import clips.delegate.doctor.checkup.CheckupLocal;
import framework.audit.AuditDetails;
import java.awt.Window;
import java.beans.PropertyChangeListener;

/**
* диалог создания новой услуги
* @author  lacoste
*/
public class DialogNewSerRen extends ModalDialog {

    private static final int MODE_ALL = 0;
    private static final int MODE_SERVICE_ONLY = 1;
    private static final int MODE_NOTHING = 2;
    /**
     * Пакет услуг. Если null то услуги идут не в пакете
     */
    private DirectoryPacketTemplateItem packetService;
    /**
     * список услуг, который назначится
     */
    private ArrayList<DirectoryServiceItem> serviceList;
    /**
     * Карта для назначения услуге скидки HashMap<serviceID, discountValue>
     */
    private HashMap<Integer, Integer> forceDiscountMap;
    /**
     * Список xml который потом отправится на сервак
     * это массив элементы которого являются
     * списками xml для каждого из элементов serviceList
     */
    //private ArrayList<CheckupXMLData> xmlList;
    private TreeModelForNewSerRen treeModel;
    private ClientLocal clientLocal;                    //клиент, передаваемый панели
    private DiseaseLocal diseaseLocal;
    private DiseaseLocal newDiseaseLocal;
    /**
     * режим добавления услуг и пакетов (можно все, только услуги и ничего)
     */
    private int mode = MODE_ALL;
    /**
     * Данные для заполнения таблиц
     * данные содержащие информацию о договоре, договормембере и
     * о ценах и скидках на услуги, соответствующие данному договормемберу
     * и дисконтной карте
     */
    private ArrayList<ServiceContractPriceData> scDataList;
    private ServiceContractPriceData selectedSCData;
    private ArrayList<SerRenLocal> newSerrenList = new ArrayList<SerRenLocal>();


    /**
     * Использовать из ЭМК, когда заполевание уже известно
     * @param parent
     * @param diseaseLocal
     * @throws ClipsException
     */
    public DialogNewSerRen(Window parent, DiseaseLocal diseaseLocal, AuditManager am) throws ClipsException {
        this(parent, diseaseLocal.getEmcLocal().getClient(), diseaseLocal, am);
    }

    /**
     * Использовать из регистратуры, когда известен только пациент
     * @param parent
     * @param clientLocal
     * @throws ClipsException
     */
    public DialogNewSerRen(Window parent, ClientLocal clientLocal, AuditManager am) throws ClipsException {
        this(parent, clientLocal, null, am);
    }

    /** Creates new form DialogNewSerRen
     *
     * @param parent
     * @param clientLocal
     * @throws ClipsException
     */
    private DialogNewSerRen(Window parent, ClientLocal clientLocal, DiseaseLocal diseaseLocal, AuditManager am) throws ClipsException {
        super(parent, "Назначение услуги", am);
        initComponents();
        if (UserInfo.get().check(UserRightsSet.CREATE_SERVICE_RENDER) == false) {
            throw new ClipsException(SecurityChecker.getClientHasNoRightMsg(UserRightsSet.CREATE_SERVICE_RENDER.id));
        }
        this.clientLocal = clientLocal;
        this.diseaseLocal = diseaseLocal;

        //center dialog
        Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
        Rectangle dlgSize = this.getBounds();
        this.setLocation((scrSize.width - dlgSize.width) / 2, (scrSize.height -
                dlgSize.height) / 2);

//        directoryServiceGroup = DirectoryLocator.getDirectory(DirectoryServicesGroup.class, false);
//        directoryPacket = DirectoryLocator.getDirectory(DirectoryPacketTemplate.class, false);

        serviceList = new ArrayList<DirectoryServiceItem>();
        forceDiscountMap = new HashMap<Integer, Integer>();

        setScreenFields();

        treeServices.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
        tableContractList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        tableServiceList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

        setEnabledComponents();
        reloadTableContractList();
        reloadTableServiceList();
        //при выделении другого договора перерисовываем услуги и цены
        tableContractList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent e) {
                if (tableContractList.getSelectedRowCount() > 0) {
                    selectedSCData = scDataList.get(tableContractList.getSelectedRowSorted());
                } else {
                    selectedSCData = null;
                }
                reloadTableServiceList();
            }
        });
        //при выделении услуги делаем либо активной либо неактивной кнопку Удалить услугу
        ListSelectionListener selectionListener = new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent e) {
                setEnabledComponents();
            }
        };

        tableServiceList.addPropertyChangeListener(new PropertyChangeListener() {

            @Override
            public void propertyChange(PropertyChangeEvent evt) {
                Integer sum = getSum();
                if (sum != null) {
                    labResultSum.setText(String.format("%.2f", ((float) sum) / 100));
                } else {
                    labResultSum.setText("");
                }
            }
        });

        tableServiceList.getSelectionModel().addListSelectionListener(selectionListener);
    resizeColumn();
    StateSaver.attachTo(this);
    }

    private void setScreenFields() throws ClipsException {
        treeModel = new TreeModelForNewSerRen();
        treeServices.setModel(treeModel);
       

        List<DiscountCardLocal> list = clientLocal.getDiscountCards();
    }

    private void setEnabledComponents() {
        //кнопку добавить услугу
        Object item = treeServices.getLastSelectedPathComponent();
        if (item == null) {
            btAddService.setEnabled(false);
        } else {
            if (item.getClass() == DirectoryServiceItem.class) {
                btAddService.setEnabled((mode == MODE_ALL || mode ==
                        MODE_SERVICE_ONLY) && packetService == null);
            } else if (item.getClass() == DirectoryPacketTemplateItem.class) {
                if (((DirectoryPacketTemplateItem)item).getID() == 0) {
                    btAddService.setEnabled(false);
                }
                else {
                    btAddService.setEnabled(mode == MODE_ALL && packetService == null);
                }
            } else {
                btAddService.setEnabled(false);
            }
        }
        //кнопка удалить
        btRemoveService.setEnabled(tableServiceList.getSelectedRowCount() > 0);
        //кнопку назначить
        btSetService.setEnabled(serviceList != null && serviceList.size() > 0 &&
                selectedSCData != null);
    }

    private void reloadTableContractList() throws ClipsException {
        ServiceContractPriceData lastSelectedscData = selectedSCData;
        scDataList = clientLocal.getServiceContractPriceDataList(serviceList, null, packetService);
        //таблица договоров
        tableContractList.setModel(new TableModelContractList(scDataList));
        //автовыбор договора
        if (lastSelectedscData == null) {
            //если не был выбран то выбирается первый (если есть хоть 1)
            if (tableContractList.getRowCount() > 0) {
                tableContractList.getSelectionModel().setSelectionInterval(0, 0);
            }
        } else {
            //если был выбран, то выбирается тот же, если он есть
            boolean founded = false;
            for (int i = 0; i < tableContractList.getRowCount(); i++) {
                if (scDataList.get(i).getPolisDetails().equals(lastSelectedscData.getPolisDetails())) {
                    tableContractList.getSelectionModel().setSelectionInterval(i, i);
                    founded = true;
                }
            }
            if (!founded) {
                selectedSCData = null;
            }
        }
        setEnabledComponents();
    }

    private void reloadTableServiceList() {
        //таблица услуг
        boolean b = packetService == null;
        TableModelServiceList model = new TableModelServiceList(selectedSCData, serviceList, forceDiscountMap, b);
        tableServiceList.setModel(model);

        tableServiceList.setDefaultRenderer(Object.class, new TableCellRendererNewSerRen(forceDiscountMap));
        setEnabledComponents();
    }

    private void resizeColumn() {
    TableState          state = new TableState();
    state.setPreferredWidth(TableModelContractList.COL_INDEX,    2);
    state.setPreferredWidth(TableModelContractList.COL_TYPE,    3);
    state.setPreferredWidth(TableModelContractList.COL_ENTERPRISE,  4);
      StateSaver.setDefaultState(this, tableContractList, state);
    state = new TableState();
    state.setPreferredWidth(TableModelServiceList.COL_SERVICE,      6);
    state.setPreferredWidth(TableModelServiceList.COL_PRICE,      4);
    state.setPreferredWidth(TableModelServiceList.COL_MONEY,      7);
    state.setPreferredWidth(TableModelServiceList.COL_REST,        4);
    state.setPreferredWidth(TableModelServiceList.COL_DISCOUNT,      4);
    state.setPreferredWidth(TableModelServiceList.COL_REST_DISCOUNT,  5);
      StateSaver.setDefaultState(this, tableServiceList, state);
    }

    /**
     * Сумма к оплате с учетом скидки и оплаты по договору (в копейках)
     */
    private Integer getSum() {
        if (serviceList == null || serviceList.size() == 0 || selectedSCData == null) {
            return null;
        }


        Float sum = null;
        float a;
        for (int i = 0; i < serviceList.size(); i++) {
            DirectoryServiceItem service = serviceList.get(i);
            Float p = selectedSCData.getPrice(service);
            Float m = selectedSCData.getMoney(service);
            Float d = selectedSCData.getDiscount(service);

            if (p!=null && m!= null && d!= null){
                if (sum == null){
                    sum = new Float(0);
                }
                Integer forceDiscount = forceDiscountMap.get(serviceList.get(i).getID());
                if (forceDiscount != null) {
                    a = (p - m) * (1 - ((float) forceDiscount) / 100);
                } else {
                    a = (p - m) * (1 - d / 100);
                }
                sum += (a < 0 ? 0 : a);
            }
        }
        return sum != null ? (Integer) Math.round(sum) : null;
    }

    /**
     * Возвращает результат работы диалога - список назначенных услуг
     * @return
     */
    public ArrayList<SerRenLocal> getNewSerrenList() {
        return newSerrenList;
    }

    public DiseaseLocal getNewDiseaseLocal() {
        return newDiseaseLocal;
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel3 = new javax.swing.JPanel();
        jSplitPane1 = new javax.swing.JSplitPane();
        jPanel5 = new javax.swing.JPanel();
        jPanel1 = new javax.swing.JPanel();
        btAddService = new javax.swing.JButton();
        btRemoveService = new javax.swing.JButton();
        jSplitPane2 = new javax.swing.JSplitPane();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane3 = new javax.swing.JScrollPane();
        tableServiceList = new cli_fmw.utils.sorted_table.SortedTable();
        jPanel7 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        labResultSum = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tableContractList = new cli_fmw.utils.sorted_table.SortedTable();
        jPanel8 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        treeServices = new javax.swing.JTree();
        btns = new javax.swing.JPanel();
        btCollapseAll = new javax.swing.JButton();
        btExpandAll = new javax.swing.JButton();
        jPanel4 = new javax.swing.JPanel();
        btSetService = new javax.swing.JButton();
        btCancel = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Назначение услуг");

        jPanel3.setLayout(new java.awt.BorderLayout());

        jSplitPane1.setResizeWeight(0.3);

        jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));

        btAddService.setText("Добавить услугу");
        btAddService.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAddServiceActionPerformed(evt);
            }
        });
        jPanel1.add(btAddService);

        btRemoveService.setText("Удалить услугу");
        btRemoveService.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btRemoveServiceActionPerformed(evt);
            }
        });
        jPanel1.add(btRemoveService);

        jSplitPane2.setDividerLocation(160);
        jSplitPane2.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);

        jPanel2.setLayout(new java.awt.BorderLayout());

        jScrollPane3.setBorder(javax.swing.BorderFactory.createTitledBorder("Выбранные услуги"));

        tableServiceList.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                tableServiceListMouseMoved(evt);
            }
        });
        tableServiceList.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                tableServiceListKeyPressed(evt);
            }
        });
        jScrollPane3.setViewportView(tableServiceList);

        jPanel2.add(jScrollPane3, java.awt.BorderLayout.CENTER);

        jPanel7.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));

        jLabel1.setText("Итого:");
        jPanel7.add(jLabel1);
        jPanel7.add(labResultSum);

        jPanel2.add(jPanel7, java.awt.BorderLayout.SOUTH);

        jSplitPane2.setLeftComponent(jPanel2);

        jScrollPane1.setBorder(javax.swing.BorderFactory.createTitledBorder("Выберите договор, по которому услуги будут оплачиваться: "));
        jScrollPane1.setViewportView(tableContractList);

        jSplitPane2.setRightComponent(jScrollPane1);

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 493, Short.MAX_VALUE)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addGap(12, 12, 12)
                .addComponent(jSplitPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 469, Short.MAX_VALUE)
                .addGap(12, 12, 12))
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jSplitPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 288, Short.MAX_VALUE)
                .addContainerGap())
        );

        jSplitPane1.setRightComponent(jPanel5);

        jPanel8.setLayout(new java.awt.BorderLayout());

        jScrollPane2.setBorder(javax.swing.BorderFactory.createTitledBorder("Услуги:"));

        treeServices.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                treeServicesMouseClicked(evt);
            }
        });
        treeServices.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
                treeServicesValueChanged(evt);
            }
        });
        treeServices.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                treeServicesMouseMoved(evt);
            }
        });
        jScrollPane2.setViewportView(treeServices);

        jPanel8.add(jScrollPane2, java.awt.BorderLayout.CENTER);

        btCollapseAll.setText("Свернуть все");
        btCollapseAll.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCollapseAllActionPerformed(evt);
            }
        });
        btns.add(btCollapseAll);

        btExpandAll.setText("Раскрыть все");
        btExpandAll.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btExpandAllActionPerformed(evt);
            }
        });
        btns.add(btExpandAll);

        jPanel8.add(btns, java.awt.BorderLayout.PAGE_END);

        jSplitPane1.setLeftComponent(jPanel8);

        jPanel3.add(jSplitPane1, java.awt.BorderLayout.CENTER);

        jPanel4.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));

        btSetService.setText("Назначить");
        btSetService.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btSetServiceActionPerformed(evt);
            }
        });
        jPanel4.add(btSetService);

        btCancel.setText("Отменить");
        btCancel.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCancelActionPerformed(evt);
            }
        });
        jPanel4.add(btCancel);

        jPanel3.add(jPanel4, java.awt.BorderLayout.SOUTH);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, 723, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, 384, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelActionPerformed
        setDlgResult(DLG_CANCEL);
        setVisible(false);
        dispose();
    }//GEN-LAST:event_btCancelActionPerformed

    private void btSetServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSetServiceActionPerformed
        try {
            if (tableServiceList.isEditing()) {
                tableServiceList.getCellEditor().stopCellEditing();
            }
            if (serviceList.size() == 0) {
                return;
            }
            if (selectedSCData == null) {
                MessageBox.showWarning(MessageBox.W_CONTRACT_NOT_SELECT);
                return;
            }

            //создание списка хмлшег
            ArrayList<CheckupXMLData> xmlList = new ArrayList<CheckupXMLData>();
            try {
                for (int i = 0; i < serviceList.size(); i++) {
                    DirectoryCheckupTypeItem checkUpType = serviceList.get(i).getCheckUpType();
                    if (checkUpType != null) {
                        xmlList.add(new CheckupXMLData(checkUpType));
                    } else {
                        xmlList.add(null);
                    }
                }
            } catch (JDOMException ex) {
                MessageBox.showError(MessageBox.E_INVALID_XML_STRING);
                return;
            }

            //отправляем хмлшки на редактирование
            boolean needDlg = false;
            for (int i = 0; i < xmlList.size(); i++) {
                if (xmlList.get(i) != null) {
                    needDlg = true;
                }
            }
            if (needDlg) {
                DialogEditCheckUpList dlg = new DialogEditCheckUpList(this, xmlList);
                dlg.setVisible(true);
                if (dlg.getDlgResult() == ModalDialog.DLG_CANCEL) {
                    return;
                }
            }

            //создаем список услуг, содержащих хмл
            ArrayList<ServiceCheckupChunk> chunkList = new ArrayList<ServiceCheckupChunk>();
            for (int i = 0; i < serviceList.size(); i++) {
                //создаем список хмл
                //создаем список id типов чекапов

                //создаем чанк услуги и хмл, добавляем в список
                CheckupXMLData xmlData = xmlList.get(i);
                String xml = xmlData != null ? xmlData.getXMLStr() : null;
                int checkupTypeID = xmlData != null ? xmlData.getCheckupType().getID() : 0;

                ServiceCheckupChunk chunk = new ServiceCheckupChunk(serviceList.get(i).getID(), xml, checkupTypeID);
                chunkList.add(chunk);
            }
            //Отправка на сервер для назначения и принятие результатов (назначенных серренов)
            boolean isMedexam = packetService == null ? false : packetService.getmedexamType().getID() != 0;
            NewServicesChunk newServicesChunk;
            if (!isMedexam) {
                //Не медосмотр
                newServicesChunk = new NewServicesChunk(
                        diseaseLocal != null ? diseaseLocal.getID() : 0,
                        0,
                        selectedSCData.getPolisDetails(),
                        packetService == null ? 0 : packetService.getID(),
                        chunkList,
                        forceDiscountMap);
            } else {
                //медосмотр
                newServicesChunk = new NewServicesChunk(
                        0,
                        0,
                        selectedSCData.getPolisDetails(),
                        packetService == null ? 0 : packetService.getID(),
                        chunkList,
                        forceDiscountMap);
            }
            ModificationInfo info = clientLocal.directNewSerren(newServicesChunk, null);
            List<AuditDetails> auditList = info.getAudit();
            newSerrenList = new ArrayList<SerRenLocal>();
            for (int i = 0; i < auditList.size(); i++) {
                if (!auditList.get(i).entityClass.equals(ServiceRender.class.getSimpleName())) {
                    continue;
                }
                SerRenLocal serRen = new SerRenLocal(auditList.get(i).getEntityId, getAuditManager());
                newSerrenList.add(serRen);
            }
            if (isMedexam) {
                newDiseaseLocal = new DiseaseLocal(info.getId(), getAuditManager());
            }

            if (needDlg) {
                int res = MessageBox.showConfirmYesNo(MessageBox.C_PRINT_DIRECTION_TO_CHECKUP);
                if (res == MessageBox.ANSWER_YES) {
                    try {
                        CombinedReportCreator parCreator = ReporterFactory.createCombinedReporter(getClass(), 1);
                        CombinedReportOptions options = new CombinedReportOptions();
                        options.setPageA5();
                        options.setOrentation(PageOrentation.horizontal);
                        options.leftMargin = 0;
                        options.rightMargin = 0;
                        options.subReportNewPageType = CombinedReportOptions.NewPageType.beginNotFirst;
                        parCreator.setUpReport(null, options, null);
                        FormReportCreator creator;
                        CombinedReportCreator subCreator;
                        CombinedReportOptions ops;
                        for (int i = 0; i < newSerrenList.size(); i++) {
                            CheckupLocal checkupLocal = newSerrenList.get(i).getAnalysis();
                            if (checkupLocal != null) {
                                subCreator = parCreator.createCombinedReporter(getClass(), 2);
                                ops = new CombinedReportOptions();
                                ops.leftMargin = 0;
                                ops.rightMargin = 0;
                                ops.topMargin = 0;
                                ops.bottomMargin = 0;
                                subCreator.setUpReport(null, ops, null);

                                creator = subCreator.createFormReporter(PrintCreators.class, 1);
                                creator.createReport(new HashMap<String, Object>(), null);
                                creator.finish();
                                checkupLocal.print(subCreator);
                                subCreator.finish();
                            }
                        }
                        parCreator.finish();
                    } catch (ClipsException ex) {
                        MessageBox.showException(ex);
                    }
                }
            }
            clientLocal.clearSerRenListOutofDiseaseCache();
            if (!isMedexam) {
                setDlgResult(DLG_OK);
            } else {
                setDlgResult(DLG_NEXTRESULT);
            }
            setVisible(false);
            dispose();
//            AuditFrame dlg = AuditFrame.getDialog();
//            dlg.showMe(auditList);
            getAuditManager().needDSA(new AuditList(auditList));
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_btSetServiceActionPerformed

    private void btAddServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddServiceActionPerformed
        try {
            if (tableServiceList.isEditing()) {
                tableServiceList.getCellEditor().stopCellEditing();
            }
            if (treeServices.getSelectionPath() == null) {
                return;
            }
            if (treeServices.getLastSelectedPathComponent().getClass() ==
                    DirectoryServiceItem.class) {
                //Добавление услуги
                DirectoryServiceItem service = (DirectoryServiceItem) treeServices.getLastSelectedPathComponent();
                packetService = null;
                if (serviceList.contains(service)) {
                    return;
                }
                serviceList.add(service);
                if (serviceList.size() > 0) {
                    mode = MODE_SERVICE_ONLY;
                }
            } else if (treeServices.getLastSelectedPathComponent().getClass() ==
                    DirectoryPacketTemplateItem.class) {
                //Добавление группы услуг
                packetService = (DirectoryPacketTemplateItem) treeServices.getLastSelectedPathComponent();
                for (int i = 0; i < packetService.getPacketItemCount(); i++) {
                    DirectoryServiceItem service = packetService.getPacketItem(i).getService();
                    serviceList.add(service);
                }
                if (serviceList.size() > 0) {
                    mode = MODE_NOTHING;
                } else {
                    mode = MODE_ALL;
                    packetService = null;
                }
            }
            reloadTableContractList();
            reloadTableServiceList();
        } catch (Exception ex) {
            MessageBox.showExceptionOnly(ex);
        }
        setEnabledComponents();
}//GEN-LAST:event_btAddServiceActionPerformed

    private void btRemoveServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btRemoveServiceActionPerformed
        try {
            int[] rows = tableServiceList.getSelectedRowsSorted();
            if (rows.length > 0) {
                if (packetService != null) {
                    if (rows.length < packetService.getPacketItemCount()) {
                        DirectorySimpleItem medexamType = packetService.getmedexamType();
                        if (medexamType.getID() != 0) {
                            MessageBox.showWarning("Невозможно расформировать пакет " + medexamType.getTitle());
                            return;
                        }
                        if (MessageBox.showConfirmYesNo(MessageBox.C_DEL_SERV_FROM_PACK) ==
                                MessageBox.ANSWER_NO) {
                            return;
                        }
                    }
                    packetService = null;
                    mode = MODE_SERVICE_ONLY;
                } else {
                    for (int i = rows.length - 1; i > -1; i--) {
                        forceDiscountMap.remove(serviceList.get(rows[i]).getID());
                    }
                }
                for (int i = rows.length - 1; i > -1; i--) {
                    serviceList.remove(rows[i]);
                }
            }
            //Выставим режим дерева
            if (serviceList.size() == 0) {
                mode = MODE_ALL;
            }
            reloadTableContractList();
            reloadTableServiceList();


//            int index = tableServiceList.getSelectedRowSorted();
//            if (index >= 0) {
//                if (packetService != null) {
//                    if (MessageBox.showConfirmYesNo(MessageBox.C_DEL_SERV_FROM_PACK) ==
//                            MessageBox.ANSWER_NO) {
//                        return;
//                    }
//                    serviceList.remove(index);
//                    packetService = null;
//                    mode = MODE_SERVICE_ONLY;
//                } else {
//                    forceDiscountMap.remove(serviceList.get(index).getID());
//                    serviceList.remove(index);
//                }
//                //Выставим режим дерева
//                if (serviceList.size() == 0) {
//                    mode = MODE_ALL;
//                }
//                reloadTableContractList();
//                reloadTableServiceList();
//            }
        } catch (Exception ex) {
            MessageBox.showExceptionOnly(ex);
        }
        setEnabledComponents();
}//GEN-LAST:event_btRemoveServiceActionPerformed

    private void treeServicesMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_treeServicesMouseClicked
        if (evt.getClickCount() == 2) {
            if (btAddService.isEnabled()) {
                btAddServiceActionPerformed(null);
            }
        }
}//GEN-LAST:event_treeServicesMouseClicked

    private void btCollapseAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCollapseAllActionPerformed
        for (int i = treeServices.getRowCount(); i > 0; i--) {
            treeServices.collapseRow(i);
        }
        treeServices.setSelectionPath(null);
}//GEN-LAST:event_btCollapseAllActionPerformed

    private void btExpandAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btExpandAllActionPerformed
        for (int i = 1; i <= treeServices.getRowCount(); i++) {
            treeServices.expandRow(i);
        }
        treeServices.setSelectionPath(null);
    }//GEN-LAST:event_btExpandAllActionPerformed

private void treeServicesValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_treeServicesValueChanged
    setEnabledComponents();
}//GEN-LAST:event_treeServicesValueChanged

private void tableServiceListKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tableServiceListKeyPressed
    if (evt.getKeyCode() == KeyEvent.VK_DELETE) {
        if (btRemoveService.isEnabled()) {
            btRemoveServiceActionPerformed(null);
        }
    }
}//GEN-LAST:event_tableServiceListKeyPressed

private void treeServicesMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_treeServicesMouseMoved
    if (treeServices.getPathForLocation(evt.getX(), evt.getY()) == null) {
        return;
    }
    Object obj = treeServices.getPathForLocation(evt.getX(), evt.getY()).getLastPathComponent();
    if (obj instanceof DirectoryItemRO) {
        DirectoryItemRO item = (DirectoryItemRO) obj;
        treeServices.setToolTipText(item.getTitle());
    }
    else {
        treeServices.setToolTipText(null);
    }
}//GEN-LAST:event_treeServicesMouseMoved

private void tableServiceListMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tableServiceListMouseMoved
    int row = tableServiceList.rowAtPoint(evt.getPoint());
    if (row > -1) {
        DirectoryServiceItem service = serviceList.get(row);
        if (service != null) {
            tableServiceList.setToolTipText(service.getTitle());
        }
        else {
            tableServiceList.setToolTipText(null);
        }
    }
    else {
        tableServiceList.setToolTipText(null);
    }
}//GEN-LAST:event_tableServiceListMouseMoved

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btAddService;
    private javax.swing.JButton btCancel;
    private javax.swing.JButton btCollapseAll;
    private javax.swing.JButton btExpandAll;
    private javax.swing.JButton btRemoveService;
    private javax.swing.JButton btSetService;
    private javax.swing.JPanel btns;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JSplitPane jSplitPane1;
    private javax.swing.JSplitPane jSplitPane2;
    private javax.swing.JLabel labResultSum;
    private cli_fmw.utils.sorted_table.SortedTable tableContractList;
    private cli_fmw.utils.sorted_table.SortedTable tableServiceList;
    private javax.swing.JTree treeServices;
    // End of variables declaration//GEN-END:variables
}   

TOP

Related Classes of clips.service.newSerRen.DialogNewSerRen

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.