Merge branch 'master' of https://git.bukova.info/repos/git/isspst
This commit is contained in:
@@ -15,6 +15,7 @@ public class SettingsData {
|
|||||||
private MailMessage authReqTemplate;
|
private MailMessage authReqTemplate;
|
||||||
private MailMessage confReqTemplate;
|
private MailMessage confReqTemplate;
|
||||||
private MailMessage confReqTripPassenger;
|
private MailMessage confReqTripPassenger;
|
||||||
|
private MailMessage reqPassenger;
|
||||||
private Address mainAddress;
|
private Address mainAddress;
|
||||||
private List<Address> shippingAddrs;
|
private List<Address> shippingAddrs;
|
||||||
private String bankName;
|
private String bankName;
|
||||||
@@ -30,6 +31,7 @@ public class SettingsData {
|
|||||||
authReqTemplate = new MailMessage();
|
authReqTemplate = new MailMessage();
|
||||||
confReqTemplate = new MailMessage();
|
confReqTemplate = new MailMessage();
|
||||||
confReqTripPassenger = new MailMessage();
|
confReqTripPassenger = new MailMessage();
|
||||||
|
reqPassenger = new MailMessage();
|
||||||
mainAddress = new Address();
|
mainAddress = new Address();
|
||||||
shippingAddrs = new ArrayList<Address>();
|
shippingAddrs = new ArrayList<Address>();
|
||||||
vehicles = new ArrayList<Vehicle>();
|
vehicles = new ArrayList<Vehicle>();
|
||||||
@@ -160,4 +162,12 @@ public class SettingsData {
|
|||||||
public void setConfReqTripPassenger(MailMessage confReqTripPassenger) {
|
public void setConfReqTripPassenger(MailMessage confReqTripPassenger) {
|
||||||
this.confReqTripPassenger = confReqTripPassenger;
|
this.confReqTripPassenger = confReqTripPassenger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MailMessage getReqPassenger() {
|
||||||
|
return reqPassenger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReqPassenger(MailMessage reqPassenger) {
|
||||||
|
this.reqPassenger = reqPassenger;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package info.bukova.isspst.reporting;
|
package info.bukova.isspst.reporting;
|
||||||
|
|
||||||
|
import com.mysql.jdbc.StringUtils;
|
||||||
import info.bukova.isspst.data.Address;
|
import info.bukova.isspst.data.Address;
|
||||||
import info.bukova.isspst.data.AuthItem;
|
import info.bukova.isspst.data.AuthItem;
|
||||||
import info.bukova.isspst.data.Order;
|
import info.bukova.isspst.data.Order;
|
||||||
@@ -8,16 +9,14 @@ import info.bukova.isspst.data.User;
|
|||||||
import info.bukova.isspst.data.UserSettingsData;
|
import info.bukova.isspst.data.UserSettingsData;
|
||||||
import info.bukova.isspst.services.requirement.TripRequirementService;
|
import info.bukova.isspst.services.requirement.TripRequirementService;
|
||||||
import info.bukova.isspst.services.settings.GlobalSettingsService;
|
import info.bukova.isspst.services.settings.GlobalSettingsService;
|
||||||
|
import info.bukova.isspst.services.tripbill.TripBillApprovalService;
|
||||||
import info.bukova.isspst.services.users.UserService;
|
import info.bukova.isspst.services.users.UserService;
|
||||||
import info.bukova.isspst.storage.FileStorage;
|
import info.bukova.isspst.storage.FileStorage;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
import com.mysql.jdbc.StringUtils;
|
|
||||||
|
|
||||||
public class ParamFiller {
|
public class ParamFiller {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -30,6 +29,8 @@ public class ParamFiller {
|
|||||||
private TripRequirementService tripReqService;
|
private TripRequirementService tripReqService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private GlobalSettingsService settingService;
|
private GlobalSettingsService settingService;
|
||||||
|
@Autowired
|
||||||
|
private TripBillApprovalService tripBillApprovalService;
|
||||||
|
|
||||||
public void fill() {
|
public void fill() {
|
||||||
if (definition.getDataSet() == null || definition.getDataSet().isEmpty()) {
|
if (definition.getDataSet() == null || definition.getDataSet().isEmpty()) {
|
||||||
@@ -57,7 +58,13 @@ public class ParamFiller {
|
|||||||
TripBill tb = (TripBill)definition.getDataSet().get(0);
|
TripBill tb = (TripBill)definition.getDataSet().get(0);
|
||||||
tripReqService.loadAuthItems(tb.getRequirement());
|
tripReqService.loadAuthItems(tb.getRequirement());
|
||||||
|
|
||||||
AuthItem lastButOneAuth = tb.getRequirement().getAuthorization().get(0);
|
if (tb.getApproval() != null) {
|
||||||
|
tripBillApprovalService.loadAuthItems(tb.getApproval());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tb.getApproval() != null && tb.getApproval().getAuthorization() != null && !tb.getApproval().getAuthorization().isEmpty()) {
|
||||||
|
|
||||||
|
AuthItem lastButOneAuth = tb.getApproval().getAuthorization().get(0);
|
||||||
definition.setParam("P_PREV_APPROVE_DATE", lastButOneAuth.getAuthDate());
|
definition.setParam("P_PREV_APPROVE_DATE", lastButOneAuth.getAuthDate());
|
||||||
|
|
||||||
User lastButOneUser = lastButOneAuth.getApprover();
|
User lastButOneUser = lastButOneAuth.getApprover();
|
||||||
@@ -67,8 +74,7 @@ public class ParamFiller {
|
|||||||
definition.setParam("P_PREV_APPROVER_SIGNATURE", storage.serverPath(prevApproverSettings.getSignatureFile()));
|
definition.setParam("P_PREV_APPROVER_SIGNATURE", storage.serverPath(prevApproverSettings.getSignatureFile()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AuthItem lastAuth = tb.getApproval().getAuthorization().get(tb.getRequirement().getAuthorization().size() - 1);
|
||||||
AuthItem lastAuth = tb.getRequirement().getAuthorization().get(tb.getRequirement().getAuthorization().size() - 1);
|
|
||||||
definition.setParam("P_APPROVE_DATE", lastAuth.getAuthDate());
|
definition.setParam("P_APPROVE_DATE", lastAuth.getAuthDate());
|
||||||
|
|
||||||
User u = lastAuth.getApprover();
|
User u = lastAuth.getApprover();
|
||||||
@@ -78,6 +84,7 @@ public class ParamFiller {
|
|||||||
definition.setParam("P_APPROVER_SIGNATURE", storage.serverPath(approverSettings.getSignatureFile()));
|
definition.setParam("P_APPROVER_SIGNATURE", storage.serverPath(approverSettings.getSignatureFile()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((definition.getDataSet().get(0) instanceof Order)
|
if ((definition.getDataSet().get(0) instanceof Order)
|
||||||
&& definition.getReport().isSingleRecord()) {
|
&& definition.getReport().isSingleRecord()) {
|
||||||
|
|||||||
+16
-6
@@ -77,6 +77,21 @@ public class TripRequirementServiceImpl extends RequirementBaseServiceImpl<TripR
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void postAdd(TripRequirement entity) {
|
||||||
|
super.postAdd(entity);
|
||||||
|
sendMailToPassengers(entity, settingsService.getSettings().getReqPassenger());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendMailToPassengers(TripRequirement entity, MailMessage messageTemplate) {
|
||||||
|
if (entity.getBillForPassengers() != null && !entity.getPassengers().isEmpty() && messageTemplate != null) {
|
||||||
|
MailMessage message = messageBuilder.buildMessage(messageTemplate, entity);
|
||||||
|
message.setFrom(userService.getCurrent().getEmail());
|
||||||
|
message.setTo(userService.getEmailsForSend(entity.getPassengers()));
|
||||||
|
mailer.send(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
@LazyLoader("form")
|
@LazyLoader("form")
|
||||||
@@ -142,12 +157,7 @@ public class TripRequirementServiceImpl extends RequirementBaseServiceImpl<TripR
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!entity.getPassengers().isEmpty() && settingsService.getSettings().getConfReqTripPassenger() != null) {
|
sendMailToPassengers(entity, settingsService.getSettings().getConfReqTripPassenger());
|
||||||
MailMessage message = messageBuilder.buildMessage(settingsService.getSettings().getConfReqTripPassenger(), entity);
|
|
||||||
message.setFrom(userService.getCurrent().getEmail());
|
|
||||||
message.setTo(userService.getEmailsForSend(entity.getPassengers()));
|
|
||||||
mailer.send(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package info.bukova.isspst.ui.tripbill;
|
|||||||
import info.bukova.isspst.StringUtils;
|
import info.bukova.isspst.StringUtils;
|
||||||
import info.bukova.isspst.data.TripBill;
|
import info.bukova.isspst.data.TripBill;
|
||||||
import info.bukova.isspst.data.TripBillApproval;
|
import info.bukova.isspst.data.TripBillApproval;
|
||||||
|
import info.bukova.isspst.data.TripBillItem;
|
||||||
import info.bukova.isspst.data.Vehicle;
|
import info.bukova.isspst.data.Vehicle;
|
||||||
import info.bukova.isspst.services.settings.GlobalSettingsService;
|
import info.bukova.isspst.services.settings.GlobalSettingsService;
|
||||||
import info.bukova.isspst.services.tripbill.TripBillApprovalService;
|
import info.bukova.isspst.services.tripbill.TripBillApprovalService;
|
||||||
@@ -66,9 +67,7 @@ public class TripBillForm extends FormWithUpload<TripBill> {
|
|||||||
@NotifyChange("errMessages")
|
@NotifyChange("errMessages")
|
||||||
public void saveForApproval(@BindingParam("window") Window win)
|
public void saveForApproval(@BindingParam("window") Window win)
|
||||||
{
|
{
|
||||||
if (StringUtils.isNullOrTrimmedEmpty(this.getDataBean().getResultMessage()))
|
if (!canSaveForApproval()) {
|
||||||
{
|
|
||||||
Messagebox.show(StringUtils.localize("ErrFillTripBillResultMessageText"), StringUtils.localize("Error"), Messagebox.OK, Messagebox.ERROR);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,6 +93,26 @@ public class TripBillForm extends FormWithUpload<TripBill> {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean canSaveForApproval() {
|
||||||
|
if (StringUtils.isNullOrTrimmedEmpty(this.getDataBean().getResultMessage())) {
|
||||||
|
Messagebox.show(StringUtils.localize("ErrFillTripBillResultMessageText"), StringUtils.localize("Error"), Messagebox.OK, Messagebox.ERROR);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getDataBean().getBillItems() != null && !getDataBean().getBillItems().isEmpty()) {
|
||||||
|
TripBillItem first = getDataBean().getBillItems().get(0);
|
||||||
|
TripBillItem last = getDataBean().getBillItems().get(getDataBean().getBillItems().size() - 1);
|
||||||
|
|
||||||
|
if (first.getToArrival() == null || first.getToDeparture() == null
|
||||||
|
|| last.getBackArrival() == null || last.getBackDeparture() == null) {
|
||||||
|
Messagebox.show(StringUtils.localize("ErrFillTripBillResultTimes"), StringUtils.localize("Error"), Messagebox.OK, Messagebox.ERROR);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doSave() {
|
protected void doSave() {
|
||||||
maintainAttachment();
|
maintainAttachment();
|
||||||
|
|||||||
@@ -173,6 +173,8 @@ EMails=E-maily
|
|||||||
NewRequirement=Nový požadavek
|
NewRequirement=Nový požadavek
|
||||||
AuthRequirement=Dílčí schválení
|
AuthRequirement=Dílčí schválení
|
||||||
ConfirmRequirement=Schválení
|
ConfirmRequirement=Schválení
|
||||||
|
ConfirmTripPassengers=Schválení SC - spolucestující
|
||||||
|
ReqTripPassengers=SC - spolucestujici
|
||||||
InsertField=Vložit pole
|
InsertField=Vložit pole
|
||||||
EnableRequirements=Povolit zadávání požadavků
|
EnableRequirements=Povolit zadávání požadavků
|
||||||
ShippingAddresses=Dodací adresy:
|
ShippingAddresses=Dodací adresy:
|
||||||
@@ -409,3 +411,4 @@ TransportMode = Způsob dopravy
|
|||||||
ForeignPersons = Cizí osoby
|
ForeignPersons = Cizí osoby
|
||||||
TripBillResultMessageText = Zpráva z pracovní cesty
|
TripBillResultMessageText = Zpráva z pracovní cesty
|
||||||
ErrFillTripBillResultMessageText = Vyplňte zprávu z pracovní cesty.
|
ErrFillTripBillResultMessageText = Vyplňte zprávu z pracovní cesty.
|
||||||
|
ErrFillTripBillResultTimes = Zadejte časy odjezdu a příjezdu.
|
||||||
|
|||||||
Binary file not shown.
@@ -2,7 +2,7 @@
|
|||||||
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="tripBill" pageWidth="612" pageHeight="792" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="10" bottomMargin="20" uuid="f59e8277-a431-4cdc-abaa-c82c1cf193af">
|
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="tripBill" pageWidth="612" pageHeight="792" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="10" bottomMargin="20" uuid="f59e8277-a431-4cdc-abaa-c82c1cf193af">
|
||||||
<property name="ireport.zoom" value="1.5"/>
|
<property name="ireport.zoom" value="1.5"/>
|
||||||
<property name="ireport.x" value="0"/>
|
<property name="ireport.x" value="0"/>
|
||||||
<property name="ireport.y" value="378"/>
|
<property name="ireport.y" value="511"/>
|
||||||
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
|
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
|
||||||
<defaultValueExpression><![CDATA["./"]]></defaultValueExpression>
|
<defaultValueExpression><![CDATA["./"]]></defaultValueExpression>
|
||||||
</parameter>
|
</parameter>
|
||||||
@@ -571,6 +571,20 @@ tuzemské pracovní cesty]]></text>
|
|||||||
<line>
|
<line>
|
||||||
<reportElement uuid="5e5a7c99-962e-4c99-b3ba-dbed5315f5aa" x="-1" y="-2" width="1" height="195"/>
|
<reportElement uuid="5e5a7c99-962e-4c99-b3ba-dbed5315f5aa" x="-1" y="-2" width="1" height="195"/>
|
||||||
</line>
|
</line>
|
||||||
|
<textField pattern="dd. MM. yyyy">
|
||||||
|
<reportElement uuid="7bbd89ae-f9e7-4359-b2df-5020b7a57456" x="292" y="135" width="100" height="13"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<textFieldExpression><![CDATA[$P{P_APPROVE_DATE}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
<textField pattern="dd. MM. yyyy">
|
||||||
|
<reportElement uuid="8f8ad8d2-dc49-46cc-8732-914951931569" x="440" y="135" width="100" height="15"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<textFieldExpression><![CDATA[$P{P_PREV_APPROVE_DATE}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
</band>
|
</band>
|
||||||
</summary>
|
</summary>
|
||||||
</jasperReport>
|
</jasperReport>
|
||||||
|
|||||||
@@ -341,13 +341,13 @@
|
|||||||
<vbox hflex="max">
|
<vbox hflex="max">
|
||||||
<textbox
|
<textbox
|
||||||
inplace="true"
|
inplace="true"
|
||||||
value="@load(each.to)"
|
value="@bind(each.to)"
|
||||||
maxlength="@load(vm.lengthText)"
|
maxlength="@load(vm.lengthText)"
|
||||||
sclass="grid-textbox-max-left"
|
sclass="grid-textbox-max-left"
|
||||||
readonly="@load(vm.billDisabled or disabled)" />
|
readonly="@load(vm.billDisabled or disabled)" />
|
||||||
<textbox
|
<textbox
|
||||||
inplace="true"
|
inplace="true"
|
||||||
value="@load(each.back)"
|
value="@bind(each.back)"
|
||||||
maxlength="@load(vm.lengthText)"
|
maxlength="@load(vm.lengthText)"
|
||||||
sclass="grid-textbox-max-left"
|
sclass="grid-textbox-max-left"
|
||||||
readonly="@load(vm.billDisabled or disabled)" />
|
readonly="@load(vm.billDisabled or disabled)" />
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
<tab label="${labels.NewRequirement}"/>
|
<tab label="${labels.NewRequirement}"/>
|
||||||
<tab label="${labels.AuthRequirement}"/>
|
<tab label="${labels.AuthRequirement}"/>
|
||||||
<tab label="${labels.ConfirmRequirement}"/>
|
<tab label="${labels.ConfirmRequirement}"/>
|
||||||
<tab label="Scvaleni SC - spolucestujici"/>
|
<tab label="${labels.ReqTripPassengers}"/>
|
||||||
|
<tab label="${labels.ConfirmTripPassengers}"/>
|
||||||
</tabs>
|
</tabs>
|
||||||
<tabpanels>
|
<tabpanels>
|
||||||
<tabpanel>
|
<tabpanel>
|
||||||
@@ -91,6 +92,31 @@
|
|||||||
</rows>
|
</rows>
|
||||||
</grid>
|
</grid>
|
||||||
</tabpanel>
|
</tabpanel>
|
||||||
|
<tabpanel>
|
||||||
|
<grid>
|
||||||
|
<columns>
|
||||||
|
<column hflex="min"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<label value="${labels.MailSubject}" />
|
||||||
|
<textbox
|
||||||
|
value="@bind(vm.settings.reqPassenger.subject)"
|
||||||
|
width="100%"
|
||||||
|
maxlength="@load(vm.lengthText)"
|
||||||
|
readonly="@load(not vm.canSave)" />
|
||||||
|
</row>
|
||||||
|
<row spans="2">
|
||||||
|
<vbox>
|
||||||
|
<ckeditor toolbar="Basic" value="@bind(vm.settings.reqPassenger.text)" width="460px" height="180px" if="${vm.canSave}" />
|
||||||
|
<html content="@load(vm.settings.confReqTemplate.text)" width="460px" height="180px" if="${not vm.canSave}"/>
|
||||||
|
<button label="${labels.InsertField}" popup="fieldsPassenger, position=after_start" disabled="@load(not vm.canSave)"/>
|
||||||
|
</vbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</tabpanel>
|
||||||
<tabpanel>
|
<tabpanel>
|
||||||
<grid>
|
<grid>
|
||||||
<columns>
|
<columns>
|
||||||
@@ -138,4 +164,9 @@
|
|||||||
<menuitem label="@load(each) @converter(vm.locConverter)" onClick="@command('insertField', field=each, message=vm.settings.confReqTripPassenger)"/>
|
<menuitem label="@load(each) @converter(vm.locConverter)" onClick="@command('insertField', field=each, message=vm.settings.confReqTripPassenger)"/>
|
||||||
</template>
|
</template>
|
||||||
</menupopup>
|
</menupopup>
|
||||||
|
<menupopup id="fieldsPassenger" children="@load(vm.requirementFields)">
|
||||||
|
<template name="children">
|
||||||
|
<menuitem label="@load(each) @converter(vm.locConverter)" onClick="@command('insertField', field=each, message=vm.settings.reqPassenger)"/>
|
||||||
|
</template>
|
||||||
|
</menupopup>
|
||||||
</zk>
|
</zk>
|
||||||
Reference in New Issue
Block a user