From 4c8ebcf9ddd476b7aec52e7458f1ae84f9db548a Mon Sep 17 00:00:00 2001 From: loique70 Date: Wed, 21 Aug 2024 15:26:02 +0200 Subject: [PATCH 1/5] Add printing method --- bundle/language_en.properties | 4 + rpt_base/Inventory.jasper | Bin 0 -> 40480 bytes rpt_base/Inventory.jrxml | 438 ++++++++++++++++++ rpt_base/Inventory.properties | 25 + rpt_base/Inventory_en.properties | 25 + .../gui/InventoryBrowser.java | 3 - .../medicalinventory/gui/InventoryEdit.java | 51 +- 7 files changed, 540 insertions(+), 6 deletions(-) create mode 100644 rpt_base/Inventory.jasper create mode 100644 rpt_base/Inventory.jrxml create mode 100644 rpt_base/Inventory.properties create mode 100644 rpt_base/Inventory_en.properties diff --git a/bundle/language_en.properties b/bundle/language_en.properties index d70652b141..15afaa0230 100644 --- a/bundle/language_en.properties +++ b/bundle/language_en.properties @@ -1902,3 +1902,7 @@ angal.xmpp.usersinfo.border angal.xmpp.wantstosharewithyouthisreport.fmt.msg = \n*** {0} wants to share with you this report: {1}\n angal.xmpp.wouldliketosend.fmt.msg = {0} would like to send: \n{1} angal.xmpp.youhaverejectedthefiletransfer.txt = You have rejected the file transfer. +angal.inventory.pleasesavebeforprinting = Please save the inventory before printing. +angal.inventory.print.success.msg = Inventory printed successfully. +angal.inventory.printing.error.msg = Error occurred while printing the inventory. +angal.inventorywardedit.askforrealquantityempty = Do you want to print the real quantity? \ No newline at end of file diff --git a/rpt_base/Inventory.jasper b/rpt_base/Inventory.jasper new file mode 100644 index 0000000000000000000000000000000000000000..c053b57786306f3b75f5473b40cff9b7691c2a95 GIT binary patch literal 40480 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 literal 0 HcmV?d00001 diff --git a/rpt_base/Inventory.jrxml b/rpt_base/Inventory.jrxml new file mode 100644 index 0000000000..f0680c3b09 --- /dev/null +++ b/rpt_base/Inventory.jrxml @@ -0,0 +1,438 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="133" splitType="Stretch"> + <rectangle radius="0"> + <reportElement key="rectangle-1" mode="Opaque" x="0" y="1" width="535" height="48" forecolor="#00CCCC" backcolor="#000099" uuid="60b6da4f-23fc-4c9b-978c-8956b205640a"/> + </rectangle> + <textField> + <reportElement key="staticText" x="5" y="5" width="471" height="40" forecolor="#FFFFFF" backcolor="#FFFFFF" uuid="e4f3520f-cbd2-4cf3-b680-dff52d7747e6"/> + <box> + <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="0.0" lineColor="#000000"/> + <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Justified" verticalAlignment="Top" rotation="None"> + <font fontName="DejaVu Sans" size="24" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false"/> + <paragraph lineSpacing="Single"/> + </textElement> + <textFieldExpression><![CDATA[$R{Inventory}]]></textFieldExpression> + </textField> + <image hAlign="Right" vAlign="Middle" onErrorType="Icon"> + <reportElement key="image-1" x="476" y="5" width="56" height="40" uuid="c5e0caf3-fc70-4ce6-bce3-7ee2452e1f76"/> + <box> + <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="0.0" lineColor="#000000"/> + <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <imageExpression><![CDATA[$P{PATH_LOGO} + "logo_report.png"]]></imageExpression> + </image> + <textField textAdjust="StretchHeight" isBlankWhenNull="false"> + <reportElement key="textField-4" x="0" y="49" width="535" height="22" uuid="7b49f1fa-6ea9-4403-bc27-6d8fe8bb8621"/> + <box> + <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="0.0" lineColor="#000000"/> + <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Right" verticalAlignment="Middle"> + <font fontName="DejaVu Sans" size="12" isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$P{Hospital}]]></textFieldExpression> + </textField> + <textField textAdjust="StretchHeight" isBlankWhenNull="false"> + <reportElement key="textField-5" x="0" y="71" width="535" height="17" uuid="530e5c8b-7fb7-4349-be8d-0c5a89067ef4"/> + <box> + <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="0.0" lineColor="#000000"/> + <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Right" verticalAlignment="Middle"> + <font fontName="DejaVu Sans" size="12" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false"/> + </textElement> + <textFieldExpression><![CDATA[$P{Address} + " - " + $P{City}]]></textFieldExpression> + </textField> + <textField textAdjust="StretchHeight" isBlankWhenNull="false"> + <reportElement key="textField-6" x="0" y="88" width="535" height="17" uuid="51cf5a07-e70f-41cd-bc53-63a3b44480c1"/> + <box> + <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="0.0" lineColor="#000000"/> + <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Right" verticalAlignment="Middle"> + <font fontName="DejaVu Sans" size="12" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false"/> + </textElement> + <textFieldExpression><![CDATA[$P{Email}]]></textFieldExpression> + </textField> + <textField textAdjust="StretchHeight" isBlankWhenNull="false"> + <reportElement key="textField-7" x="0" y="105" width="535" height="17" uuid="1005a0e2-f795-4838-853f-541e27cb0b6d"/> + <box> + <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="0.0" lineColor="#000000"/> + <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Right" verticalAlignment="Middle"> + <font fontName="DejaVu Sans" size="12" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false"/> + </textElement> + <textFieldExpression><![CDATA[$P{Telephone}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rpt_base/Inventory.properties b/rpt_base/Inventory.properties new file mode 100644 index 0000000000..6ad2960d81 --- /dev/null +++ b/rpt_base/Inventory.properties @@ -0,0 +1,25 @@ +#Generated by Eclipse Messages Editor (Eclipse Babel) + +Inventory = Inventory + +Code = Code + +Status = Status + +Reference = Reference + +InventoryDate = Inventory Date + +PrincipalWardInventory = PRINCIPAL WARD INVENTORY + +Designation = Designation + +WardCode = Ward Code + +DueDate = Due Date + +TheoryQuantity = Theory Quantity + +RealQuantity = R. Quantity + + diff --git a/rpt_base/Inventory_en.properties b/rpt_base/Inventory_en.properties new file mode 100644 index 0000000000..6ad2960d81 --- /dev/null +++ b/rpt_base/Inventory_en.properties @@ -0,0 +1,25 @@ +#Generated by Eclipse Messages Editor (Eclipse Babel) + +Inventory = Inventory + +Code = Code + +Status = Status + +Reference = Reference + +InventoryDate = Inventory Date + +PrincipalWardInventory = PRINCIPAL WARD INVENTORY + +Designation = Designation + +WardCode = Ward Code + +DueDate = Due Date + +TheoryQuantity = Theory Quantity + +RealQuantity = R. Quantity + + diff --git a/src/main/java/org/isf/medicalinventory/gui/InventoryBrowser.java b/src/main/java/org/isf/medicalinventory/gui/InventoryBrowser.java index 5ee9e0f88f..de94e3cbb8 100644 --- a/src/main/java/org/isf/medicalinventory/gui/InventoryBrowser.java +++ b/src/main/java/org/isf/medicalinventory/gui/InventoryBrowser.java @@ -266,7 +266,6 @@ private JPanel getPanelFooter() { panelFooter.add(getNewButton()); panelFooter.add(getUpdateButton()); panelFooter.add(getViewButton()); - panelFooter.add(getPrintButton()); panelFooter.add(getDeleteButton()); panelFooter.add(getCloseButton()); } @@ -455,12 +454,10 @@ public void valueChanged(ListSelectionEvent e) { if (selectedRows.length == 1) { jButtonEdit.setEnabled(true); jButtonView.setEnabled(true); - jButtonPrint.setEnabled(true); jButtonDelete.setEnabled(true); } else { jButtonEdit.setEnabled(false); jButtonView.setEnabled(false); - jButtonPrint.setEnabled(false); jButtonDelete.setEnabled(false); } } diff --git a/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java b/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java index 6a875d3f1f..0277b7bce5 100644 --- a/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java +++ b/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java @@ -87,6 +87,8 @@ import org.isf.medstockmovtype.model.MovementType; import org.isf.menu.manager.Context; import org.isf.menu.manager.UserBrowsingManager; +import org.isf.stat.dto.JasperReportResultDto; +import org.isf.stat.manager.JasperReportsManager; import org.isf.supplier.manager.SupplierBrowserManager; import org.isf.supplier.model.Supplier; import org.isf.utils.db.NormalizeString; @@ -102,6 +104,8 @@ import org.isf.utils.time.TimeTools; import org.isf.ward.manager.WardBrowserManager; import org.isf.ward.model.Ward; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class InventoryEdit extends ModalJFrame { @@ -156,6 +160,7 @@ private void fireInventoryUpdated() { private JPanel panelFooter; private JPanel panelContent; private JButton closeButton; + private JButton printButton; private JButton deleteButton; private JButton saveButton; private JButton resetButton; @@ -214,7 +219,8 @@ private void fireInventoryUpdated() { private MedicalDsrStockMovementTypeBrowserManager movTypeManager = Context.getApplicationContext().getBean(MedicalDsrStockMovementTypeBrowserManager.class); private SupplierBrowserManager supplierManager = Context.getApplicationContext().getBean(SupplierBrowserManager.class); private WardBrowserManager wardManager = Context.getApplicationContext().getBean(WardBrowserManager.class); - + private JasperReportsManager jasperReportsManager = Context.getApplicationContext().getBean(JasperReportsManager.class); + public InventoryEdit() { mode = "new"; initComponents(); @@ -278,6 +284,7 @@ public void windowClosing(WindowEvent e) { supplierCombo.setEnabled(false); destinationCombo.setEnabled(false); lotButton.setVisible(false); + printButton.setVisible(true); } else { saveButton.setVisible(true); deleteButton.setVisible(true); @@ -292,6 +299,7 @@ public void windowClosing(WindowEvent e) { supplierCombo.setEnabled(true); destinationCombo.setEnabled(true); lotButton.setVisible(true); + printButton.setVisible(false); } } @@ -431,6 +439,7 @@ private JPanel getPanelFooter() { panelFooter.add(getDeleteButton()); panelFooter.add(getLotButton()); panelFooter.add(getCleanTableButton()); + panelFooter.add(getPrintButton()); panelFooter.add(getCloseButton()); } return panelFooter; @@ -865,8 +874,44 @@ private JButton getCloseButton() { }); return closeButton; } - - private JButton getCleanTableButton() { + + private JButton getPrintButton() { + printButton = new JButton(MessageBundle.getMessage("angal.common.print.btn")); + printButton.setMnemonic(MessageBundle.getMnemonic("angal.common.print.btn.key")); + printButton.setEnabled(true); + + printButton.addActionListener(e -> { + if (inventory == null || inventory.getId() <= 0) { + MessageDialog.info(this, "angal.inventory.pleasesavebeforprinting"); + return; + } + + if (InventoryStatus.done.name().equals(inventory.getStatus())) { + int printQtyReal = 0; + int response = MessageDialog.yesNo(this, "angal.inventorywardedit.askforrealquantityempty"); + if (response == JOptionPane.YES_OPTION) { + printQtyReal = 1; + } + + try { + JasperReportResultDto reportResult = jasperReportsManager.getInventoryReportPdf(inventory, "Inventory", printQtyReal); + if (reportResult != null) { + MessageDialog.info(this, "angal.inventory.print.success.msg"); + } else { + MessageDialog.error(this, "angal.inventory.printing.error.msg"); + } + } catch (OHServiceException ex) { + MessageDialog.error(this, "angal.inventory.printing.error.msg"); + } + } else { + MessageDialog.info(this, "angal.inventory.pleasesavebeforprinting"); + } + }); + + return printButton; + } + + private JButton getCleanTableButton() { resetButton = new JButton(MessageBundle.getMessage("angal.inventory.clean.btn")); resetButton.setMnemonic(MessageBundle.getMnemonic("angal.inventory.clean.btn.key")); resetButton.addActionListener(actionEvent -> { From 0c95df3e9780945caf040a424fee583b57200da0 Mon Sep 17 00:00:00 2001 From: JantBogard Date: Mon, 4 Nov 2024 11:26:53 +0100 Subject: [PATCH 2/5] fix overlapped fields --- bundle/language_en.properties | 8 +++--- rpt_base/Inventory.jasper | Bin 40480 -> 40967 bytes rpt_base/Inventory.jrxml | 17 +++++++++--- .../medicalinventory/gui/InventoryEdit.java | 22 ++++----------- .../GenericReportPharmaceuticalInventory.java | 25 ++++++++++++++++++ 5 files changed, 46 insertions(+), 26 deletions(-) create mode 100644 src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java diff --git a/bundle/language_en.properties b/bundle/language_en.properties index 15afaa0230..e1ece8b61a 100644 --- a/bundle/language_en.properties +++ b/bundle/language_en.properties @@ -665,6 +665,7 @@ angal.hospital.visitduration.txt angal.hospital.visitendhour.txt = Visit end hour angal.hospital.visitstarthour.txt = Visit start hour angal.inventory.allproduct.txt = All products +angal.inventory.askforrealquantityempty = Do you want to print without the real quantity? angal.inventory.canceled = Canceled angal.inventory.cannotcreateanotherinventorywithstatusdraft.msg = Cannot create another inventory with status draft. angal.inventory.cannotsavelot.msg = Cannot save the lot. Please verify lot information and retry. @@ -691,6 +692,7 @@ angal.inventory.new.col angal.inventory.lot.btn = Lot angal.inventory.lot.btn.key = L angal.inventory.supplier.label = Supplier +angal.inventory.pleasesavebeforprinting = Please save the inventory before printing. angal.inventoryrow.addnotyetlistedproducts.title = Add products angal.inventoryrow.doyoureallywanttodeletethisinventoryrow.msg = Do you really want to delete this/those inventory(ies) row(s)? angal.inventoryrow.doyoureallywanttocleanthistable.msg = Do you really want to clean this table? @@ -1901,8 +1903,4 @@ angal.xmpp.userinfo.fmt.txt angal.xmpp.usersinfo.border = User's Info angal.xmpp.wantstosharewithyouthisreport.fmt.msg = \n*** {0} wants to share with you this report: {1}\n angal.xmpp.wouldliketosend.fmt.msg = {0} would like to send: \n{1} -angal.xmpp.youhaverejectedthefiletransfer.txt = You have rejected the file transfer. -angal.inventory.pleasesavebeforprinting = Please save the inventory before printing. -angal.inventory.print.success.msg = Inventory printed successfully. -angal.inventory.printing.error.msg = Error occurred while printing the inventory. -angal.inventorywardedit.askforrealquantityempty = Do you want to print the real quantity? \ No newline at end of file +angal.xmpp.youhaverejectedthefiletransfer.txt = You have rejected the file transfer. \ No newline at end of file diff --git a/rpt_base/Inventory.jasper b/rpt_base/Inventory.jasper index c053b57786306f3b75f5473b40cff9b7691c2a95..6a7b63b6afbc0fe0a355092c61ca31e37c38cf77 100644 GIT binary patch delta 5615 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 delta 4987 zcma)Qx_Us&lQO-QBfP^YRbj8U1Yt%_*WMp`viwXABXT2RA>P3zPeTB@p2N4N8wbA8V7 z?M0fUoOAF0dG7iD&f{~AZ+<(c{o$f^{>!W-sk4frILMzy{_+(?wI+Ye>ejT>S?IQZ zM7m_tqCe(1Xj;Cak|g{@uz{j-Z!*u3tzwqLIbgwuW?VP0i@Se?-F5d4dbd0Xoy+dk zFOyf6U82vNDBZ6aN8UpQZo-kF##e(6?DU1PTWIk^o!;@ihp|JGAIhC*9BPz&#*`W51=@^` zW7n^HtYVop@Xm7G#tlUkttM7#KIHqnaI}KX=@r(Y-G3`|yCBR3Y!!6)4Bty=cq!AD z=H}2`G2OYqTEsc+cY`yy-pD}eswQY%p9mTm)`e`aD8%a;3(>mX7vgn|h2*-%Ncvwx ze8R5EO-8eg#O&|X?8!=_Szee=_`R?V?hD&JqR1(nY|1!UmX{@cweN+~b4@N^F^`K0 z{#DgOF!XOrwc$6U%p{bRaN1iAv(=G8x`dai>F?7AC!BSVs{R{3e6eO1>7J_h;LSoy zIXqJ9z{~jZ04&rl&R7Ymn?S1WOh`;C6i?W}Tj#@D{5E#fb+7^z^8LeB`KxsuBu8?M z)pOT7^>%oyUaE~6LEDJYmgR}s1mI46W!iat!#d_%z@6`<%l^p*bcW9wC?rm}EW)j? zMeNWWk*znQ^=6|r%ag6IMYy$h<)G0zL{`OFIJJ`QILW%Ikz4mR7K+uN_MmN#!FEZ8 zoL>F`_@a?}SFhTNvzuDgX_%yYb=s*~ox;JV*x>Sp%Lt@5dSFS0EL=ZXU9A^8>1`@g zjZ;1Om)$PYrn`P2Uc9sSD zALxb^54Go7Chg>&X(t{kvuGm&NzcOzn(K3ILdo4fe6VkLVk9xu(K||Ew9k{pJL;`V zzfzRR6j?M1a^7Y?J=%A$qqD3+`w_JfmVTGKlbxmiSKigm?G@Uc3B|g7!{&`Ntrh6UKFCh0|TI$P94&1NdZdz@+%-s)e947j&m z?4f(hu@@(Se0%rmeCdT;Vu>RgZFU;jSjdD;4hS|`6>LnUY&+9zH+zQ=v8xZcj`uw% z_MqjU`5t5w_&F=CfIo`xv^i{qXCV`KIUwL=RlqZq!XHk zB>UYUVxAwQn7cme)F==zbh{-}Gm~ud1$|}bU>#7m+0`jIm9CqE%qYTywZw=)V z;LAhw9ZUxP5P@m)z7d#(On~Kp0G3q&tgA-g_tUW0bKpmYUqoPa1gkq=7lth(OHh!3 z@wdoAn_EU;7BT^r0|Ho91+cCffp3`tpBs%MU(wh+c2~!0v*{~q1H}8vpfXXQ7Q>o^ zbl_Q?gg)cIJCkT2Ns)cUa5K?_gH(<`fE}(TYk*|4#v{*Fod{O3&`;;8Kf?lSt|Yxk zPG@r^YBp2Jo^)tdkF+V1FHJOAk>bWL{dvWs6N+vBfp~vkZ3IqKx*;^>C2!_f55$Yo zQ-+?A2d4hS(K|3kn~ZZB(OJj@T@DCzSrzC^g%6^YP<7}S+P-?oPb&HGA-cp}GXc09 zq%Rhz_cM zM`+rdF+#JD3A7v#(6TC^b=3%c=C05ejw1B)H;=07M{w&mF4{VhWskpGLN5P#>e%cD z&6!wPfB}F<`xd$@F!LK9ZH0la04m`3Sbms68{fXgr}rh9ULLg9T0e zkz69;fA3E4Jd*<>&o;~+Ce4C5KRJ=|yl_Okq2=Q4iI)(TK7nch0 jN|381Lj8h^E+#_za|cSSw~3+J&SRxCb{qckT - - + + - + + + + + + + + + + @@ -12,7 +21,7 @@ - + diff --git a/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java b/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java index 0277b7bce5..b33271c206 100644 --- a/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java +++ b/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java @@ -87,7 +87,7 @@ import org.isf.medstockmovtype.model.MovementType; import org.isf.menu.manager.Context; import org.isf.menu.manager.UserBrowsingManager; -import org.isf.stat.dto.JasperReportResultDto; +import org.isf.stat.gui.report.GenericReportPharmaceuticalInventory; import org.isf.stat.manager.JasperReportsManager; import org.isf.supplier.manager.SupplierBrowserManager; import org.isf.supplier.model.Supplier; @@ -104,8 +104,6 @@ import org.isf.utils.time.TimeTools; import org.isf.ward.manager.WardBrowserManager; import org.isf.ward.model.Ward; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class InventoryEdit extends ModalJFrame { @@ -881,28 +879,18 @@ private JButton getPrintButton() { printButton.setEnabled(true); printButton.addActionListener(e -> { - if (inventory == null || inventory.getId() <= 0) { + if (inventory == null || inventory.getId() == 0 || inventory.getId() <= 0) { MessageDialog.info(this, "angal.inventory.pleasesavebeforprinting"); return; } - if (InventoryStatus.done.name().equals(inventory.getStatus())) { + if (!InventoryStatus.done.name().equals(inventory.getStatus())) { int printQtyReal = 0; - int response = MessageDialog.yesNo(this, "angal.inventorywardedit.askforrealquantityempty"); + int response = MessageDialog.yesNo(this, "angal.inventory.askforrealquantityempty"); if (response == JOptionPane.YES_OPTION) { printQtyReal = 1; } - - try { - JasperReportResultDto reportResult = jasperReportsManager.getInventoryReportPdf(inventory, "Inventory", printQtyReal); - if (reportResult != null) { - MessageDialog.info(this, "angal.inventory.print.success.msg"); - } else { - MessageDialog.error(this, "angal.inventory.printing.error.msg"); - } - } catch (OHServiceException ex) { - MessageDialog.error(this, "angal.inventory.printing.error.msg"); - } + new GenericReportPharmaceuticalInventory(inventory, "Inventory", printQtyReal); } else { MessageDialog.info(this, "angal.inventory.pleasesavebeforprinting"); } diff --git a/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java b/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java new file mode 100644 index 0000000000..d38455eb62 --- /dev/null +++ b/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java @@ -0,0 +1,25 @@ +package org.isf.stat.gui.report; + +import org.isf.medicalinventory.model.MedicalInventory; +import org.isf.menu.manager.Context; +import org.isf.stat.dto.JasperReportResultDto; +import org.isf.stat.manager.JasperReportsManager; +import org.isf.utils.jobjects.MessageDialog; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class GenericReportPharmaceuticalInventory extends DisplayReport { + + private static final Logger LOGGER = LoggerFactory.getLogger(GenericReportPharmaceuticalInventory.class); + private JasperReportsManager jasperReportsManager = Context.getApplicationContext().getBean(JasperReportsManager.class); + + public GenericReportPharmaceuticalInventory(MedicalInventory medicalInventory, String jasperFileName, int printQtyReal) { + try { + JasperReportResultDto jasperReportResultDto = jasperReportsManager.getInventoryReportPdf(medicalInventory, jasperFileName, printQtyReal); + showReport(jasperReportResultDto); + } catch (Exception e) { + LOGGER.error("", e); + MessageDialog.error(null, "angal.inventory.printing.error.msg"); + } + } +} From bd21db696cfbc8ee8541a916c908c2acc1530a06 Mon Sep 17 00:00:00 2001 From: JantBogard Date: Thu, 7 Nov 2024 16:57:29 +0100 Subject: [PATCH 3/5] clean code and apply request change --- bundle/language_en.properties | 4 +- .../gui/InventoryBrowser.java | 8 - .../medicalinventory/gui/InventoryEdit.java | 182 ++++++------------ .../GenericReportPharmaceuticalInventory.java | 21 ++ 4 files changed, 86 insertions(+), 129 deletions(-) diff --git a/bundle/language_en.properties b/bundle/language_en.properties index d85bb95b55..db8e1c5c57 100644 --- a/bundle/language_en.properties +++ b/bundle/language_en.properties @@ -665,7 +665,7 @@ angal.hospital.visitduration.txt angal.hospital.visitendhour.txt = Visit end hour angal.hospital.visitstarthour.txt = Visit start hour angal.inventory.allproduct.txt = All products -angal.inventory.askforrealquantityempty = Do you want to print without the real quantity? +angal.inventory.askforrealquantityempty.msg = Do you want to print without the real quantity? angal.inventory.canceled = Canceled angal.inventory.cannotcreateanotherinventorywithstatusdraft.msg = Cannot create another inventory with status draft, Because you already have an inventory with status draft or validated. angal.inventory.cannotsavelot.msg = Cannot save the lot. Please verify lot information and retry. @@ -704,7 +704,7 @@ angal.inventory.newlot.col angal.inventory.lot.btn = Lot angal.inventory.lot.btn.key = L angal.inventory.supplier.label = Supplier -angal.inventory.pleasesavebeforprinting = Please save the inventory before printing. +angal.inventory.pleasesavebeforprinting.msg = Please save the inventory before printing. angal.inventoryrow.addnotyetlistedproducts.title = Add products angal.inventoryrow.doyoureallywanttodeletethisinventoryrow.msg = Do you really want to delete this/those inventory(ies) row(s)? angal.inventoryrow.doyoureallywanttocleanthistable.msg = Do you really want to clean this table? diff --git a/src/main/java/org/isf/medicalinventory/gui/InventoryBrowser.java b/src/main/java/org/isf/medicalinventory/gui/InventoryBrowser.java index 39ce934de6..0a98490b5d 100644 --- a/src/main/java/org/isf/medicalinventory/gui/InventoryBrowser.java +++ b/src/main/java/org/isf/medicalinventory/gui/InventoryBrowser.java @@ -84,7 +84,6 @@ public class InventoryBrowser extends ModalJFrame implements InventoryListener { private JButton jButtonClose; private JButton jButtonNew; private JButton jButtonEdit; - private JButton jButtonPrint; private JButton jButtonDelete; private JButton jButtonView; private JScrollPane scrollPaneInventory; @@ -409,13 +408,6 @@ private JButton getViewButton() { }); return jButtonView; } - - private JButton getPrintButton() { - jButtonPrint = new JButton(MessageBundle.getMessage("angal.common.print.btn")); - jButtonPrint.setMnemonic(MessageBundle.getMnemonic("angal.common.print.btn.key")); - jButtonPrint.setEnabled(false); - return jButtonPrint; - } private JButton getDeleteButton() { jButtonDelete = new JButton(MessageBundle.getMessage("angal.common.delete.btn")); diff --git a/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java b/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java index f8596496c5..6d203a7a2a 100644 --- a/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java +++ b/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java @@ -193,8 +193,7 @@ private void fireInventoryUpdated() { private int[] pColumwidth = { 50, 50, 200, 100, 100, 100, 100, 80, 80, 80 }; private boolean[] columnEditable = { false, false, false, false, false, false, false, true, false, false }; private boolean[] columnEditableView = { false, false, false, false, false, false, false, false, false, false }; - private boolean[] pColumnVisible = { false, true, true, true, !GeneralData.AUTOMATICLOT_IN, true, true, true, - GeneralData.LOTWITHCOST, + private boolean[] pColumnVisible = { false, true, true, true, !GeneralData.AUTOMATICLOT_IN, true, true, true, GeneralData.LOTWITHCOST, GeneralData.LOTWITHCOST }; private MedicalInventory inventory = null; private JRadioButton specificRadio; @@ -221,21 +220,14 @@ private void fireInventoryUpdated() { private Ward destination = null; private boolean selectAll = false; private String newReference = null; - private MedicalInventoryManager medicalInventoryManager = Context.getApplicationContext() - .getBean(MedicalInventoryManager.class); - private MedicalInventoryRowManager medicalInventoryRowManager = Context.getApplicationContext() - .getBean(MedicalInventoryRowManager.class); - private MedicalBrowsingManager medicalBrowsingManager = Context.getApplicationContext() - .getBean(MedicalBrowsingManager.class); - private MovStockInsertingManager movStockInsertingManager = Context.getApplicationContext() - .getBean(MovStockInsertingManager.class); - private MedicalDsrStockMovementTypeBrowserManager movTypeManager = Context.getApplicationContext() - .getBean(MedicalDsrStockMovementTypeBrowserManager.class); - private SupplierBrowserManager supplierManager = Context.getApplicationContext() - .getBean(SupplierBrowserManager.class); + private MedicalInventoryManager medicalInventoryManager = Context.getApplicationContext().getBean(MedicalInventoryManager.class); + private MedicalInventoryRowManager medicalInventoryRowManager = Context.getApplicationContext().getBean(MedicalInventoryRowManager.class); + private MedicalBrowsingManager medicalBrowsingManager = Context.getApplicationContext().getBean(MedicalBrowsingManager.class); + private MovStockInsertingManager movStockInsertingManager = Context.getApplicationContext().getBean(MovStockInsertingManager.class); + private MedicalDsrStockMovementTypeBrowserManager movTypeManager = Context.getApplicationContext().getBean(MedicalDsrStockMovementTypeBrowserManager.class); + private SupplierBrowserManager supplierManager = Context.getApplicationContext().getBean(SupplierBrowserManager.class); private WardBrowserManager wardManager = Context.getApplicationContext().getBean(WardBrowserManager.class); - private JasperReportsManager jasperReportsManager = Context.getApplicationContext() - .getBean(JasperReportsManager.class); + private JasperReportsManager jasperReportsManager = Context.getApplicationContext().getBean(JasperReportsManager.class); public InventoryEdit() { mode = "new"; @@ -544,8 +536,7 @@ private JButton getSaveButton() { inventory.setDestination(null); } inventory = medicalInventoryManager.newMedicalInventory(inventory); - for (Iterator iterator = inventoryRowSearchList.iterator(); iterator - .hasNext();) { + for (Iterator iterator = inventoryRowSearchList.iterator(); iterator.hasNext();) { MedicalInventoryRow medicalInventoryRow = (MedicalInventoryRow) iterator.next(); medicalInventoryRow.setInventory(inventory); Lot lot = medicalInventoryRow.getLot(); @@ -597,13 +588,11 @@ private JButton getSaveButton() { } if (inventoryRowListAdded.isEmpty() && lotsSaved.isEmpty() && lotsDeleted.isEmpty()) { if ((destination != null && !destination.getCode().equals(lastDestination)) - || (chargeType != null && !chargeType.getCode().equals(lastCharge)) - || (dischargeType != null && !dischargeType.getCode().equals(lastDischarge)) - || (supplier != null && !supplier.getSupId().equals(lastSupplier)) - || (destination == null && lastDestination != null) - || (chargeType == null && lastCharge != null) - || (dischargeType == null && lastDischarge != null) - || (supplier == null && lastSupplier != null) || !lastReference.equals(newReference)) { + || (chargeType != null && !chargeType.getCode().equals(lastCharge)) + || (dischargeType != null && !dischargeType.getCode().equals(lastDischarge)) + || (supplier != null && !supplier.getSupId().equals(lastSupplier)) || (destination == null && lastDestination != null) + || (chargeType == null && lastCharge != null) || (dischargeType == null && lastDischarge != null) + || (supplier == null && lastSupplier != null) || !lastReference.equals(newReference)) { if (!inventory.getInventoryDate().equals(dateInventory)) { inventory.setInventoryDate(dateInventory); } @@ -642,8 +631,7 @@ private JButton getSaveButton() { MessageDialog.info(null, "angal.inventory.update.success.msg"); resetVariable(); fireInventoryUpdated(); - int info = MessageDialog.yesNo(null, - "angal.inventoryrow.doyouwanttocontinueediting.msg"); + int info = MessageDialog.yesNo(null, "angal.inventoryrow.doyouwanttocontinueediting.msg"); if (info != JOptionPane.YES_OPTION) { dispose(); } @@ -656,8 +644,7 @@ private JButton getSaveButton() { MessageDialog.info(null, "angal.inventory.update.success.msg"); resetVariable(); fireInventoryUpdated(); - int info = MessageDialog.yesNo(null, - "angal.inventoryrow.doyouwanttocontinueediting.msg"); + int info = MessageDialog.yesNo(null, "angal.inventoryrow.doyouwanttocontinueediting.msg"); if (info != JOptionPane.YES_OPTION) { dispose(); } @@ -703,8 +690,7 @@ private JButton getSaveButton() { inventory.setDestination(null); } inventory = medicalInventoryManager.updateMedicalInventory(inventory); - for (Iterator iterator = inventoryRowSearchList.iterator(); iterator - .hasNext();) { + for (Iterator iterator = inventoryRowSearchList.iterator(); iterator.hasNext();) { MedicalInventoryRow medicalInventoryRow = iterator.next(); Medical medical = medicalInventoryRow.getMedical(); Lot lot = medicalInventoryRow.getLot(); @@ -782,7 +768,6 @@ private JButton getSaveButton() { }); return saveButton; } - private JButton getDeleteButton() { deleteButton = new JButton(MessageBundle.getMessage("angal.common.delete.btn")); deleteButton.setMnemonic(MessageBundle.getMnemonic("angal.common.delete.btn.key")); @@ -800,8 +785,7 @@ private JButton getDeleteButton() { } if (inventory == null) { for (int i = selectedRows.length - 1; i >= 0; i--) { - MedicalInventoryRow selectedInventoryRow = (MedicalInventoryRow) jTableInventoryRow - .getValueAt(selectedRows[i], -1); + MedicalInventoryRow selectedInventoryRow = (MedicalInventoryRow) jTableInventoryRow.getValueAt(selectedRows[i], -1); inventoryRowSearchList.remove(selectedInventoryRow); model.fireTableDataChanged(); jTableInventoryRow.setModel(model); @@ -809,8 +793,7 @@ private JButton getDeleteButton() { } else { for (int i = selectedRows.length - 1; i >= 0; i--) { - MedicalInventoryRow inventoryRow = (MedicalInventoryRow) jTableInventoryRow - .getValueAt(selectedRows[i], -1); + MedicalInventoryRow inventoryRow = (MedicalInventoryRow) jTableInventoryRow.getValueAt(selectedRows[i], -1); inventoryRowSearchList.remove(inventoryRow); model.fireTableDataChanged(); jTableInventoryRow.setModel(model); @@ -837,8 +820,7 @@ private JButton getLotButton() { MessageDialog.error(this, "angal.inventoryrow.pleaseselectoneinventoryrow.msg"); return; } - MedicalInventoryRow selectedInventoryRow = (MedicalInventoryRow) jTableInventoryRow.getValueAt(selectedRow, - -1); + MedicalInventoryRow selectedInventoryRow = (MedicalInventoryRow) jTableInventoryRow.getValueAt(selectedRow, -1); Lot lotToUpdate = selectedInventoryRow.getLot() != null ? selectedInventoryRow.getLot() : null; Lot lot = new Lot(); try { @@ -858,8 +840,7 @@ private JButton getLotButton() { code = lot.getCode(); if (selectedInventoryRow.getLot() == null) { List invRows = inventoryRowSearchList.stream() - .filter(inv -> inv.getLot() != null && inv.getLot().getCode().equals(code)) - .collect(Collectors.toList()); + .filter(inv -> inv.getLot() != null && inv.getLot().getCode().equals(code)).collect(Collectors.toList()); if (invRows.size() == 0 || code.equals("")) { selectedInventoryRow.setNewLot(true); selectedInventoryRow.setLot(lot); @@ -877,12 +858,8 @@ private JButton getLotButton() { } } else { List invRows = inventoryRowSearchList.stream() - .filter(inv -> inv.getMedical().getCode() - .equals(selectedInventoryRow.getMedical().getCode())) - .collect(Collectors.toList()); - invRows = invRows.stream() - .filter(inv -> inv.getLot() != null && inv.getLot().getCode().equals(code)) - .collect(Collectors.toList()); + .filter(inv -> inv.getMedical().getCode().equals(selectedInventoryRow.getMedical().getCode())).collect(Collectors.toList()); + invRows = invRows.stream().filter(inv -> inv.getLot() != null && inv.getLot().getCode().equals(code)).collect(Collectors.toList()); if (invRows.size() == 0 || code.equals("")) { selectedInventoryRow.setNewLot(true); selectedInventoryRow.setLot(lot); @@ -924,17 +901,14 @@ private JButton getCloseButton() { lastReference = inventory.getInventoryReference(); lastDate = inventory.getInventoryDate(); } - if (!lotsSaved.isEmpty() || !inventoryRowListAdded.isEmpty() || !lotsDeleted.isEmpty() - || !inventoryRowsToDelete.isEmpty() - || (destination != null && !destination.getCode().equals(lastDestination)) - || (chargeType != null && !chargeType.getCode().equals(lastCharge)) - || (dischargeType != null && !dischargeType.getCode().equals(lastDischarge)) - || (supplier != null && !supplier.getSupId().equals(lastSupplier)) - || (destination == null && lastDestination != null) - || (chargeType == null && lastCharge != null) || (dischargeType == null && lastDischarge != null) - || (supplier == null && lastSupplier != null) - || (lastReference != null && !lastReference.equals(newReference)) - || !lastDate.toLocalDate().equals(dateInventory.toLocalDate())) { + if (!lotsSaved.isEmpty() || !inventoryRowListAdded.isEmpty() || !lotsDeleted.isEmpty() || !inventoryRowsToDelete.isEmpty() + || (destination != null && !destination.getCode().equals(lastDestination)) + || (chargeType != null && !chargeType.getCode().equals(lastCharge)) + || (dischargeType != null && !dischargeType.getCode().equals(lastDischarge)) + || (supplier != null && !supplier.getSupId().equals(lastSupplier)) || (destination == null && lastDestination != null) + || (chargeType == null && lastCharge != null) || (dischargeType == null && lastDischarge != null) + || (supplier == null && lastSupplier != null) || (lastReference != null && !lastReference.equals(newReference)) + || !lastDate.toLocalDate().equals(dateInventory.toLocalDate())) { int reset = MessageDialog.yesNoCancel(null, "angal.inventoryrow.doyouwanttosavethechanges.msg"); if (reset == JOptionPane.YES_OPTION) { this.saveButton.doClick(); @@ -960,21 +934,12 @@ private JButton getPrintButton() { printButton.setEnabled(true); printButton.addActionListener(e -> { - if (inventory == null || inventory.getId() == 0 || inventory.getId() <= 0) { - MessageDialog.info(this, "angal.inventory.pleasesavebeforprinting"); - return; - } - - if (!InventoryStatus.done.name().equals(inventory.getStatus())) { - int printQtyReal = 0; - int response = MessageDialog.yesNo(this, "angal.inventory.askforrealquantityempty"); - if (response == JOptionPane.YES_OPTION) { - printQtyReal = 1; - } - new GenericReportPharmaceuticalInventory(inventory, "Inventory", printQtyReal); - } else { - MessageDialog.info(this, "angal.inventory.pleasesavebeforprinting"); + int printQtyReal = 0; + int response = MessageDialog.yesNo(this, "angal.inventory.askforrealquantityempty"); + if (response == JOptionPane.YES_OPTION) { + printQtyReal = 1; } + new GenericReportPharmaceuticalInventory(inventory, "Inventory", printQtyReal); }); return printButton; @@ -1018,8 +983,7 @@ private JButton getValidateButton() { MessageDialog.error(null, "angal.inventory.inventorymustsavebeforevalidation.msg"); return; } - List invRowWithoutLot = inventoryRowSearchList.stream() - .filter(invRow -> invRow.getLot() == null).collect(Collectors.toList()); + List invRowWithoutLot = inventoryRowSearchList.stream().filter(invRow -> invRow.getLot() == null).collect(Collectors.toList()); if (invRowWithoutLot.size() > 0) { MessageDialog.error(null, "angal.inventory.allinventoryrowshouldhavelotbeforevalidation.msg"); return; @@ -1065,12 +1029,10 @@ private JButton getValidateButton() { try { inventory = medicalInventoryManager.updateMedicalInventory(inventory); if (inventory != null) { - List invRows = medicalInventoryRowManager - .getMedicalInventoryRowByInventoryId(inventory.getId()); + List invRows = medicalInventoryRowManager.getMedicalInventoryRowByInventoryId(inventory.getId()); MessageDialog.info(null, "angal.inventory.validate.success.msg"); if (invRows.size() > inventoryRowsSize) { - MessageDialog.error(null, - "angal.inventory.theoreticalqtyhavebeenupdatedforsomemedical.msg"); + MessageDialog.error(null, "angal.inventory.theoreticalqtyhavebeenupdatedforsomemedical.msg"); } fireInventoryUpdated(); statusLabel.setText(status.toUpperCase()); @@ -1087,7 +1049,6 @@ private JButton getValidateButton() { }); return validateButton; } - private JScrollPane getScrollPaneInventory() { if (scrollPaneInventory == null) { scrollPaneInventory = new JScrollPane(); @@ -1124,12 +1085,10 @@ private JTable getJTableInventoryRow() throws OHServiceException { @Override public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting()) { - jTableInventoryRow.editCellAt(jTableInventoryRow.getSelectedRow(), - jTableInventoryRow.getSelectedColumn()); + jTableInventoryRow.editCellAt(jTableInventoryRow.getSelectedRow(), jTableInventoryRow.getSelectedColumn()); int[] selectedRows = jTableInventoryRow.getSelectedRows(); if (selectedRows.length == 1) { - MedicalInventoryRow medInvRow = (MedicalInventoryRow) jTableInventoryRow - .getValueAt(selectedRows[0], -1); + MedicalInventoryRow medInvRow = (MedicalInventoryRow) jTableInventoryRow.getValueAt(selectedRows[0], -1); if (medInvRow.getLot() == null || medInvRow.isNewLot()) { lotButton.setEnabled(true); } else { @@ -1152,8 +1111,7 @@ class EnabledTableCellRenderer extends DefaultTableCellRenderer { private static final long serialVersionUID = 1L; @Override - public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, - int row, int column) { + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); return cell; } @@ -1198,7 +1156,7 @@ public InventoryRowModel() throws OHServiceException { } - public Class getColumnClass(int c) { + public Class< ? > getColumnClass(int c) { if (c == 0) { return Integer.class; } else if (c == 1) { @@ -1373,8 +1331,7 @@ private Lot askLot(Lot lotToUpdate) { JTextField lotNameTextField = new JTextField(15); lotNameTextField.addAncestorListener(new RequestFocusListener()); - TextPrompt suggestion = new TextPrompt(MessageBundle.getMessage("angal.medicalstock.multiplecharging.lotid"), - lotNameTextField); + TextPrompt suggestion = new TextPrompt(MessageBundle.getMessage("angal.medicalstock.multiplecharging.lotid"), lotNameTextField); suggestion.setFont(new Font("Tahoma", Font.PLAIN, 14)); suggestion.setForeground(Color.GRAY); suggestion.setHorizontalAlignment(SwingConstants.CENTER); @@ -1397,10 +1354,10 @@ private Lot askLot(Lot lotToUpdate) { panel.add(expireDateChooser); do { int ok = JOptionPane.showConfirmDialog( - this, - panel, - MessageBundle.getMessage("angal.medicalstock.multiplecharging.lotinformations"), - JOptionPane.OK_CANCEL_OPTION); + this, + panel, + MessageBundle.getMessage("angal.medicalstock.multiplecharging.lotinformations"), + JOptionPane.OK_CANCEL_OPTION); if (ok == JOptionPane.OK_OPTION) { String lotName = lotNameTextField.getText(); @@ -1431,13 +1388,12 @@ private Lot askLot(Lot lotToUpdate) { } while (lot == null); return lot; } - private BigDecimal askCost(int qty, BigDecimal lastCost) { double cost = 0.; do { String input = JOptionPane.showInputDialog(this, - MessageBundle.getMessage("angal.medicalstock.multiplecharging.unitcost"), - lastCost); + MessageBundle.getMessage("angal.medicalstock.multiplecharging.unitcost"), + lastCost); if (input != null) { try { cost = Double.parseDouble(input); @@ -1465,8 +1421,8 @@ protected LocalDateTime askExpiringDate() { panel.add(expireDateChooser); int ok = JOptionPane.showConfirmDialog(this, panel, - MessageBundle.getMessage("angal.medicalstock.multiplecharging.expiringdate"), - JOptionPane.OK_CANCEL_OPTION); + MessageBundle.getMessage("angal.medicalstock.multiplecharging.expiringdate"), + JOptionPane.OK_CANCEL_OPTION); if (ok == JOptionPane.OK_OPTION) { date = expireDateChooser.getLocalDateTime(); @@ -1476,8 +1432,8 @@ protected LocalDateTime askExpiringDate() { protected double askTotalCost() { String input = JOptionPane.showInputDialog(this, - MessageBundle.getMessage("angal.medicalstock.multiplecharging.totalcost"), - 0.); + MessageBundle.getMessage("angal.medicalstock.multiplecharging.totalcost"), + 0.); double total = 0.; if (input != null) { try { @@ -1530,8 +1486,7 @@ private JRadioButton getAllRadio() { codeTextField.setEnabled(false); codeTextField.setText(""); if (inventoryRowSearchList.size() > 0) { - int info = MessageDialog.yesNo(null, - "angal.inventoryrow.doyouwanttoaddallnotyetlistedproducts.msg"); + int info = MessageDialog.yesNo(null, "angal.inventoryrow.doyouwanttoaddallnotyetlistedproducts.msg"); if (info == JOptionPane.YES_OPTION) { try { allRadio.setSelected(true); @@ -1593,8 +1548,7 @@ private JTextField getCodeTextField() { codeTextField.setEnabled(true); } codeTextField.setColumns(10); - TextPrompt suggestion = new TextPrompt(MessageBundle.getMessage("angal.common.code.txt"), codeTextField, - Show.FOCUS_LOST); + TextPrompt suggestion = new TextPrompt(MessageBundle.getMessage("angal.common.code.txt"), codeTextField, Show.FOCUS_LOST); suggestion.setFont(new Font("Tahoma", Font.PLAIN, 12)); suggestion.setForeground(Color.GRAY); suggestion.setHorizontalAlignment(JLabel.CENTER); @@ -1623,8 +1577,7 @@ public void keyPressed(KeyEvent e) { return codeTextField; } - private List loadNewInventoryTable(String code, MedicalInventory inventory, boolean add) - throws OHServiceException { + private List loadNewInventoryTable(String code, MedicalInventory inventory, boolean add) throws OHServiceException { List inventoryRowsList = new ArrayList<>(); if (inventory != null) { int id = inventory.getId(); @@ -1669,8 +1622,7 @@ private List getMedicalInventoryRows(String code) throws OH } else { for (Iterator iterator2 = lots.iterator(); iterator2.hasNext();) { Lot lot = (Lot) iterator2.next(); - inventoryRowTemp = new MedicalInventoryRow(0, lot.getMainStoreQuantity(), - lot.getMainStoreQuantity(), null, med, lot); + inventoryRowTemp = new MedicalInventoryRow(0, lot.getMainStoreQuantity(), lot.getMainStoreQuantity(), null, med, lot); if (!existInInventorySearchList(inventoryRowTemp)) { inventoryRowsList.add(inventoryRowTemp); } @@ -1679,7 +1631,6 @@ private List getMedicalInventoryRows(String code) throws OH } return inventoryRowsList; } - private void addInventoryRow(String code) throws OHServiceException { List inventoryRowsList = new ArrayList(); List medicalList = new ArrayList(); @@ -1709,8 +1660,7 @@ private void addInventoryRow(String code) throws OHServiceException { if (!existInInventorySearchList(inventoryRowTemp)) { inventoryRowsList.add(inventoryRowTemp); } else { - int info = MessageDialog.yesNo(null, "angal.inventory.productalreadyexist.msg", - med.getDescription()); + int info = MessageDialog.yesNo(null, "angal.inventory.productalreadyexist.msg", med.getDescription()); if (info == JOptionPane.YES_OPTION) { inventoryRowsList.add(inventoryRowTemp); } @@ -1719,8 +1669,7 @@ private void addInventoryRow(String code) throws OHServiceException { medicalWithLot = med; for (Iterator iterator2 = lots.iterator(); iterator2.hasNext();) { Lot lot = (Lot) iterator2.next(); - inventoryRowTemp = new MedicalInventoryRow(0, lot.getMainStoreQuantity(), - lot.getMainStoreQuantity(), null, med, lot); + inventoryRowTemp = new MedicalInventoryRow(0, lot.getMainStoreQuantity(), lot.getMainStoreQuantity(), null, med, lot); if (!existInInventorySearchList(inventoryRowTemp)) { inventoryRowsList.add(inventoryRowTemp); numberOfMedicalWithoutSameLotAdded = numberOfMedicalWithoutSameLotAdded + 1; @@ -1729,8 +1678,7 @@ private void addInventoryRow(String code) throws OHServiceException { } } if (medicalWithLot != null && numberOfMedicalWithoutSameLotAdded == 0) { - int info = MessageDialog.yesNo(null, "angal.inventory.productalreadyexist.msg", - medicalWithLot.getDescription()); + int info = MessageDialog.yesNo(null, "angal.inventory.productalreadyexist.msg", medicalWithLot.getDescription()); if (info == JOptionPane.YES_OPTION) { inventoryRowTemp = new MedicalInventoryRow(0, 0.0, 0.0, null, medicalWithLot, null); inventoryRowsList.add(inventoryRowTemp); @@ -1815,8 +1763,7 @@ private JLabel getStatusLabel() { statusLabel.setForeground(Color.GREEN); } } - statusLabel - .setFont(new Font(statusLabel.getFont().getName(), Font.BOLD, statusLabel.getFont().getSize() + 8)); + statusLabel.setFont(new Font(statusLabel.getFont().getName(), Font.BOLD, statusLabel.getFont().getSize() + 8)); } return statusLabel; } @@ -1987,8 +1934,7 @@ private int getPosition(MedicalInventoryRow inventoryRow) { private boolean existInInventorySearchList(MedicalInventoryRow inventoryRow) { boolean found = false; List invRows = inventoryRowSearchList.stream() - .filter(inv -> inv.getMedical().getCode().equals(inventoryRow.getMedical().getCode())) - .collect(Collectors.toList()); + .filter(inv -> inv.getMedical().getCode().equals(inventoryRow.getMedical().getCode())).collect(Collectors.toList()); if (invRows.size() > 0) { for (MedicalInventoryRow invR : invRows) { if (inventoryRow.getLot() != null && invR.getLot() != null) { @@ -2007,7 +1953,6 @@ private boolean existInInventorySearchList(MedicalInventoryRow inventoryRow) { return found; } - private void addMedInRowInInventorySearchList(MedicalInventoryRow inventoryRow) { int position = getPosition(inventoryRow); if (position == -1) { @@ -2020,7 +1965,6 @@ private void addMedInRowInInventorySearchList(MedicalInventoryRow inventoryRow) inventoryRowListAdded.add(inventoryRow); } } - private void resetVariable() { inventoryRowsToDelete.clear(); lotsDeleted.clear(); diff --git a/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java b/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java index d38455eb62..5caa9443ff 100644 --- a/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java +++ b/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java @@ -1,3 +1,24 @@ +/* + * Open Hospital (www.open-hospital.org) + * Copyright © 2006-2023 Informatici Senza Frontiere (info@informaticisenzafrontiere.org) + * + * Open Hospital is a free and open source software for healthcare data management. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * https://www.gnu.org/licenses/gpl-3.0-standalone.html + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ package org.isf.stat.gui.report; import org.isf.medicalinventory.model.MedicalInventory; From 8590b0d8fbd9e6c0d8f3a5312cf8fafffd45d1c5 Mon Sep 17 00:00:00 2001 From: JantBogard Date: Fri, 8 Nov 2024 09:47:24 +0100 Subject: [PATCH 4/5] Applying suggestion changing --- bundle/language_en.properties | 1 - rpt_base/Inventory.jasper | Bin 40967 -> 39869 bytes rpt_base/Inventory.jrxml | 129 ++++++------------ rpt_base/Inventory.properties | 4 +- rpt_base/Inventory_en.properties | 4 +- .../medicalinventory/gui/InventoryEdit.java | 2 +- .../GenericReportPharmaceuticalInventory.java | 2 +- 7 files changed, 49 insertions(+), 93 deletions(-) diff --git a/bundle/language_en.properties b/bundle/language_en.properties index db8e1c5c57..f83dc048c0 100644 --- a/bundle/language_en.properties +++ b/bundle/language_en.properties @@ -704,7 +704,6 @@ angal.inventory.newlot.col angal.inventory.lot.btn = Lot angal.inventory.lot.btn.key = L angal.inventory.supplier.label = Supplier -angal.inventory.pleasesavebeforprinting.msg = Please save the inventory before printing. angal.inventoryrow.addnotyetlistedproducts.title = Add products angal.inventoryrow.doyoureallywanttodeletethisinventoryrow.msg = Do you really want to delete this/those inventory(ies) row(s)? angal.inventoryrow.doyoureallywanttocleanthistable.msg = Do you really want to clean this table? diff --git a/rpt_base/Inventory.jasper b/rpt_base/Inventory.jasper index 6a7b63b6afbc0fe0a355092c61ca31e37c38cf77..0416e0ffaa1ec6ec0da45f52393672c7d4d2063f 100644 GIT binary patch literal 39869 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 diff --git a/rpt_base/Inventory.jrxml b/rpt_base/Inventory.jrxml index e15c13778c..1a887aa6d8 100644 --- a/rpt_base/Inventory.jrxml +++ b/rpt_base/Inventory.jrxml @@ -130,16 +130,10 @@ - + - - - - - - - - + + @@ -186,81 +180,45 @@ - - - - - - - - - - + + + + - - - - - - - - - - + + + + - - - - - - - - - - + + + + - - - - - - - - - - + + + + - - - - - - - - - - + + + + - + - - - - - - - - - - + + + + @@ -270,66 +228,65 @@ - + - + + - + + - + - + - + - + - + - - + + - - - - - + + + diff --git a/rpt_base/Inventory.properties b/rpt_base/Inventory.properties index 6ad2960d81..6202d31391 100644 --- a/rpt_base/Inventory.properties +++ b/rpt_base/Inventory.properties @@ -18,8 +18,8 @@ WardCode = Ward Code DueDate = Due Date -TheoryQuantity = Theory Quantity +TheoreticQuantity = Theoretic Quantity -RealQuantity = R. Quantity +RealQuantity = Real Quantity diff --git a/rpt_base/Inventory_en.properties b/rpt_base/Inventory_en.properties index 6ad2960d81..6202d31391 100644 --- a/rpt_base/Inventory_en.properties +++ b/rpt_base/Inventory_en.properties @@ -18,8 +18,8 @@ WardCode = Ward Code DueDate = Due Date -TheoryQuantity = Theory Quantity +TheoreticQuantity = Theoretic Quantity -RealQuantity = R. Quantity +RealQuantity = Real Quantity diff --git a/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java b/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java index 6d203a7a2a..a9c3afcdc4 100644 --- a/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java +++ b/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java @@ -935,7 +935,7 @@ private JButton getPrintButton() { printButton.addActionListener(e -> { int printQtyReal = 0; - int response = MessageDialog.yesNo(this, "angal.inventory.askforrealquantityempty"); + int response = MessageDialog.yesNo(this, "angal.inventory.askforrealquantityempty.msg"); if (response == JOptionPane.YES_OPTION) { printQtyReal = 1; } diff --git a/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java b/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java index 5caa9443ff..5c8dda7918 100644 --- a/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java +++ b/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java @@ -1,6 +1,6 @@ /* * Open Hospital (www.open-hospital.org) - * Copyright © 2006-2023 Informatici Senza Frontiere (info@informaticisenzafrontiere.org) + * Copyright © 2006-2024 Informatici Senza Frontiere (info@informaticisenzafrontiere.org) * * Open Hospital is a free and open source software for healthcare data management. * From 6155fc0895e754ff4b59c01665bd1af724bd5101 Mon Sep 17 00:00:00 2001 From: JantBogard Date: Tue, 12 Nov 2024 10:13:15 +0100 Subject: [PATCH 5/5] Applying suggestion for change --- rpt_base/Inventory.jasper | Bin 39869 -> 39863 bytes rpt_base/Inventory.jrxml | 10 +++++----- rpt_base/Inventory.properties | 4 ++-- rpt_base/Inventory_en.properties | 4 ++-- .../medicalinventory/gui/InventoryEdit.java | 6 +++--- .../GenericReportPharmaceuticalInventory.java | 4 ++-- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/rpt_base/Inventory.jasper b/rpt_base/Inventory.jasper index 0416e0ffaa1ec6ec0da45f52393672c7d4d2063f..367887dabed9085922612b0438b5dcce6d6a562e 100644 GIT binary patch delta 318 zcmdnHooV}arVW!7IM{viOPuplQYSO2ifrDX5GKSPl$w|mSW>x}*O*rt&QbK+!opa% z`C3pR<7SVL9fG1FzKNN6!6o@csh)Xdsd+#~rKihg@w6=IxTB~3?b^q{z+l3#pPhk; zk--bDB0j}DIWaZW(8MSy(ZtNqFwNY;$k@QZ!on!oJk7wu&^XE1AlW=I+0-!EBFV_Y zEXgo2H96VL(!#{l(8R(b#ekiGWwK(M+GN(IM{uXTYvN>vbN;oaG2w7qb;oUf2TC2V JdD;whW&oBaXRH7K delta 320 zcmdnKooVlOrVW!7I61--i&C8PQ&K0Xifmr55GKSPSW+33nwYbh$Cy_d#+l6MBR+Yx z2mfX_zdjbmqRm%>3K=)MhU^p+7YiuL%uCKJNX!8lrjn%u_9ljm!;9 zEK*DpO;VFnk_=OmO%fB6%*@#tSQr^}CO>48nQYg@KAExU5zJ|uUo~+u!#TfN)0l9% TX>)1EZGHzzU9x$?40UDz0(oi; diff --git a/rpt_base/Inventory.jrxml b/rpt_base/Inventory.jrxml index 1a887aa6d8..6ad492fef2 100644 --- a/rpt_base/Inventory.jrxml +++ b/rpt_base/Inventory.jrxml @@ -25,7 +25,7 @@ - + @@ -34,7 +34,7 @@ FROM ((`oh_medicaldsrinventoryrow` join `oh_medicaldsrinventory` ON MINVTR_INVT_ID=MINVT_ID) join `oh_medicaldsr` on MINVTR_MDSR_ID=MDSR_ID) left join `oh_medicaldsrlot` on MINVTR_LT_ID_A=LT_ID_A - where MINVTR_INVT_ID = $P{inventoryId} ORDER BY MDSR_DESC asc]]> + where MINVTR_INVT_ID = $P{inventoryId} ORDER BY MDSR_DESC asc]]> @@ -135,7 +135,7 @@ - + @@ -199,7 +199,7 @@ - + @@ -282,7 +282,7 @@ - + diff --git a/rpt_base/Inventory.properties b/rpt_base/Inventory.properties index 6202d31391..32fe3f6bf9 100644 --- a/rpt_base/Inventory.properties +++ b/rpt_base/Inventory.properties @@ -10,11 +10,11 @@ Reference = Reference InventoryDate = Inventory Date -PrincipalWardInventory = PRINCIPAL WARD INVENTORY +MainStoreInventoryID = MAIN STORE INVENTORY ID Designation = Designation -WardCode = Ward Code +LotCode= Lot Code DueDate = Due Date diff --git a/rpt_base/Inventory_en.properties b/rpt_base/Inventory_en.properties index 6202d31391..32fe3f6bf9 100644 --- a/rpt_base/Inventory_en.properties +++ b/rpt_base/Inventory_en.properties @@ -10,11 +10,11 @@ Reference = Reference InventoryDate = Inventory Date -PrincipalWardInventory = PRINCIPAL WARD INVENTORY +MainStoreInventoryID = MAIN STORE INVENTORY ID Designation = Designation -WardCode = Ward Code +LotCode= Lot Code DueDate = Due Date diff --git a/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java b/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java index a9c3afcdc4..64eb0b88eb 100644 --- a/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java +++ b/src/main/java/org/isf/medicalinventory/gui/InventoryEdit.java @@ -934,12 +934,12 @@ private JButton getPrintButton() { printButton.setEnabled(true); printButton.addActionListener(e -> { - int printQtyReal = 0; + int printRealQty = 0; int response = MessageDialog.yesNo(this, "angal.inventory.askforrealquantityempty.msg"); if (response == JOptionPane.YES_OPTION) { - printQtyReal = 1; + printRealQty = 1; } - new GenericReportPharmaceuticalInventory(inventory, "Inventory", printQtyReal); + new GenericReportPharmaceuticalInventory(inventory, "Inventory", printRealQty); }); return printButton; diff --git a/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java b/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java index 5c8dda7918..d8a96fff68 100644 --- a/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java +++ b/src/main/java/org/isf/stat/gui/report/GenericReportPharmaceuticalInventory.java @@ -34,9 +34,9 @@ public class GenericReportPharmaceuticalInventory extends DisplayReport { private static final Logger LOGGER = LoggerFactory.getLogger(GenericReportPharmaceuticalInventory.class); private JasperReportsManager jasperReportsManager = Context.getApplicationContext().getBean(JasperReportsManager.class); - public GenericReportPharmaceuticalInventory(MedicalInventory medicalInventory, String jasperFileName, int printQtyReal) { + public GenericReportPharmaceuticalInventory(MedicalInventory medicalInventory, String jasperFileName, int printRealQty) { try { - JasperReportResultDto jasperReportResultDto = jasperReportsManager.getInventoryReportPdf(medicalInventory, jasperFileName, printQtyReal); + JasperReportResultDto jasperReportResultDto = jasperReportsManager.getInventoryReportPdf(medicalInventory, jasperFileName, printRealQty); showReport(jasperReportResultDto); } catch (Exception e) { LOGGER.error("", e);