/*
* 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
}