Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo into master

This commit is contained in:
2024-02-26 12:15:31 +01:00
16 changed files with 803 additions and 1410 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -37,6 +37,30 @@ textarea {
background-position: right;
}
@media(min-width: 576px) {
.text-sm-justify {
text-align: justify !important;
}
}
@media(min-width: 768px) {
.text-md-justify {
text-align: justify !important;
}
}
@media(min-width: 992px) {
.text-lg-justify {
text-align: justify !important;
}
}
@media(min-width: 1200px) {
.text-xl-justify {
text-align: justify !important;
}
}
@media (min-width: 1px) {

View File

@@ -868,9 +868,11 @@ namespace BeWoPlanerMobil.Controllers
return Logout();
}
var historyEntries = OperationsService.LoadBargeldtransaktionshistoryEntries(transactionOid);
Model.BargeldtransaktionshistoryEntries = historyEntries;
Model.BargeldtransaktionshistoryEntries = historyEntries.OrderByDescending(he => he.InsertedOn).ToList();
return PartialView("CustomerBargeldtransaktionshistorienPartial", Model);
}

View File

@@ -44,7 +44,11 @@ namespace BeWoPlanerMobil.Controllers
if(loginState.Message != null && loginState.State > -1)
{
TempData[MobileUtils.TempDataLoginStateKey] = loginState;
return Logout();
if(loginState.State == 0)
{
ViewData[LoginErrorIndex] = loginState.Message;
return Logout();
}
}
Log.Info($"LoginController.Index(): Loggedin User: {MobileSessionFacade.LoggedInUser.LoginName}");

View File

@@ -238,10 +238,10 @@
}
}
function deleteZahlungsbelegsunterschrift(transaktionsOid) {
function deleteZahlungsbelegsunterschrift(transaktionsOid, zahlungsdatum, betrag, zahlungstyp) {
try {
showMessagePopupWithCallback("Transaktionsunterschrift löschen",
"message",
"Sind Sie sicher, dass Sie die Unterschrift für die " + zahlungstyp + " über " + betrag + " vom " + zahlungsdatum + " löschen möchten?",
function () {
showSpinner();
$("#bargeldkassen-container").load("@Url.Action("DeleteTransactionSignature")",
@@ -462,148 +462,153 @@
</div>
</div>
</div>
<div class="w-100">
@*----- Kassenbstand und Anfangsbestand -----*@
<table class="w-100">
<tbody>
<tr>
<td class="text-secondary">
Kassenbestand:
</td>
<td class="text-primary float-right">
@kassenbestand
</td>
</tr>
<tr>
<td class="text-secondary">
Anfangsbestand:
</td>
<td class="text-primary float-right">
@anfangsbestand
</td>
</tr>
</tbody>
</table>
@* Liste mit den Ein- und Auszahlungen *@
<div class="col mb-0 pb-0 mx-0 px-0">
<div class="card h-100">
<div class="card-header" onclick="cardHeaderClick2(this)">
<div class="d-inline-flex">
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header chevron-identifier-class"></i>
<div class="w-100">
@*----- Kassenbstand und Anfangsbestand -----*@
<table class="w-100">
<tbody>
<tr>
<td class="text-secondary">
Kassenbestand:
</td>
<td class="text-primary float-right">
@kassenbestand
</td>
</tr>
<tr>
<td class="text-secondary">
Anfangsbestand:
</td>
<td class="text-primary float-right">
@anfangsbestand
</td>
</tr>
</tbody>
</table>
@* Liste mit den Ein- und Auszahlungen *@
<div class="col mb-0 pb-0 mx-0 px-0">
<div class="card h-100">
<div class="card-header" onclick="cardHeaderClick2(this)">
<div class="d-inline-flex">
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header chevron-identifier-class"></i>
</div>
<div class="d-inline d-inline-flex text-bewo-customer-card-header h-100">
<button type="button" class="btn btn-lihnk text-bewo-customer-card-header">
Ein- und Auszahlungen
</button>
</div>
</div>
<div class="d-inline d-inline-flex text-bewo-customer-card-header h-100">
<p>Ein- und Auszahlungen</p>
</div>
</div>
<div class="collapse">
<div class="card-body">
<table class="w-100 mx-0 px-0">
<tbody>
@{
var count = 0;
}
@foreach(var transaktion in bargeldkasse.Bargeldtransaktionen)
{
<tr>
<td colspan="2">
<div class="btn-group w-100" role="gorup">
@if(transaktion.SignatureOid is null)
{
<button class="btn btn-outline-primary" title="Zahlungsbeleg unterschreiben" type="button" onclick="signZahlungsbeleg(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-signature"></i>
</button>
}
else
{
<button class="btn btn-outline-primary" title="Zahlungsbelegsunterschrift löschen" type="button" onclick="deleteZahlungsbelegsunterschrift(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-signature"></i>
<i class="fas fa-arrow-right"></i>
<i class="fas fa-trash-alt"></i>
</button>
}
<button class="btn btn-outline-primary" title="Bargeldtransaktion bearbeiten" type="button" onclick="editBargeldtransaktion(@bargeldkasse.BargeldkassenOid, @transaktion.BargeldtransaktionOid)">
<i class="fas fa-edit"></i>
</button>
<button class="btn btn-outline-primary" title="Zahlungsbeleg herunterladen" type="button" onclick="downloadZahlungsbeleg(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-file-download"></i>
</button>
<button class="btn btn-outline-primary" title="Änderungshistorie anzeigen" type="button" onclick="showBargeldtransaktionshistorie(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-history"></i>
</button>
<button class="btn btn-outline-danger" title="Bargeldtransaktion löschen" type="button" onclick="deleteBargeldransaktion(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-trash-alt"></i>
</button>
</div>
</td>
</tr>
<tr>
<td class="text-secondary">
Datum
</td>
<td class="float-right">
@transaktion.Zahlungsdatum.Value.ToString("dd.MM.yyyy")
</td>
</tr>
<tr>
<td class="text-secondary">
Art
</td>
<td class="float-right">
@transaktion.Zahlungstyp
</td>
</tr>
<tr>
<td class="text-secondary">
Betrag
</td>
<td class="float-right">
@transaktion.Betrag.Value.ToString("0.00 €")
</td>
</tr>
<tr>
<td class="text-secondary">
Belegnummer
</td>
<td class="float-right">
@transaktion.Belegnummer
</td>
</tr>
<tr>
<td class="text-secondary">
Angelegt von
</td>
<td class="float-right">
@transaktion.InsUser
</td>
</tr>
<tr>
<td class="text-secondary">
Notiz
</td>
<td class="float-right">
@transaktion.Notice
</td>
</tr>
if(count < bargeldkasse.Bargeldtransaktionen.Count - 1)
{
<tr>
<td colspan="2">
<hr />
</td>
</tr>
<div class="collapse">
<div class="card-body">
<table class="w-100 mx-0 px-0">
<tbody>
@{
var count = 0;
}
count++;
}
</tbody>
</table>
@foreach(var transaktion in bargeldkasse.Bargeldtransaktionen)
{
var zahlungsdatum = transaktion.Zahlungsdatum.Value.ToString("dd.MM.yyyy");
var betrag = transaktion.Betrag.Value.ToString("0.00 €");
<tr>
<td colspan="2">
<div class="btn-group w-100" role="gorup">
@if(transaktion.SignatureOid is null)
{
<button class="btn btn-outline-primary" title="Zahlungsbeleg unterschreiben" type="button" onclick="signZahlungsbeleg(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-signature"></i>
</button>
}
else
{
<button class="btn btn-outline-primary" title="Zahlungsbelegsunterschrift löschen" type="button" onclick="deleteZahlungsbelegsunterschrift(@transaktion.BargeldtransaktionOid, '@zahlungsdatum', '@betrag', '@transaktion.Zahlungstyp')">
<i class="fas fa-signature"></i>
<i class="fas fa-arrow-right"></i>
<i class="fas fa-trash-alt"></i>
</button>
}
<button class="btn btn-outline-primary" title="Bargeldtransaktion bearbeiten" type="button" onclick="editBargeldtransaktion(@bargeldkasse.BargeldkassenOid, @transaktion.BargeldtransaktionOid)">
<i class="fas fa-edit"></i>
</button>
<button class="btn btn-outline-primary" title="Zahlungsbeleg herunterladen" type="button" onclick="downloadZahlungsbeleg(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-file-download"></i>
</button>
<button class="btn btn-outline-primary" title="Änderungshistorie anzeigen" type="button" onclick="showBargeldtransaktionshistorie(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-history"></i>
</button>
<button class="btn btn-outline-danger" title="Bargeldtransaktion löschen" type="button" onclick="deleteBargeldransaktion(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-trash-alt"></i>
</button>
</div>
</td>
</tr>
<tr>
<td class="text-secondary">
Datum
</td>
<td class="float-right">
@zahlungsdatum
</td>
</tr>
<tr>
<td class="text-secondary">
Art
</td>
<td class="float-right">
@transaktion.Zahlungstyp
</td>
</tr>
<tr>
<td class="text-secondary">
Betrag
</td>
<td class="float-right">
@betrag
</td>
</tr>
<tr>
<td class="text-secondary">
Belegnummer
</td>
<td class="float-right text-sm-justify">
@transaktion.Belegnummer
</td>
</tr>
<tr>
<td class="text-secondary">
Angelegt von
</td>
<td class="float-right text-sm-justify">
@transaktion.InsUser
</td>
</tr>
<tr>
<td class="text-secondary">
Notiz
</td>
<td class="float-right text-sm-justify">
@transaktion.Notice
</td>
</tr>
if(count < bargeldkasse.Bargeldtransaktionen.Count - 1)
{
<tr>
<td colspan="2">
<hr />
</td>
</tr>
}
count++;
}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -80,7 +80,7 @@
<td class="text-secondary">
Notiz
</td>
<td class="float-right">
<td class="float-right text-sm-justify">
@historyEntry.Notice
</td>
</tr>

View File

@@ -641,6 +641,7 @@
</div>
</div>
@* ----- Einzelbuchung ----- *@
<div class="container-fluid mb-3" id="main-container">
@if(!Model.IsInGroupBookingMode && !Model.IsInMultiBookingMode)
{
@@ -648,6 +649,7 @@
}
</div>
@* ----- Gruppenbuchung ----- *@
<div class="container mb-3">
@if(Model.IsInGroupBookingMode && !Model.IsInMultiBookingMode)
{
@@ -655,6 +657,7 @@
}
</div>
@* ----- Mehrfachbuchung ----- *@
<div class="container mb-3">
@if(Model.IsInMultiBookingMode && !Model.IsInGroupBookingMode)
{
@@ -662,7 +665,7 @@
}
</div>
<!-- Textbausteine-Popup-->
@* ----- Textbausteine-Popup ----- *@
<div class="modal" tabindex="-1" role="dialog" id="textbausteine-popup">
<div class="modal-dialog modal-dialog-scrollable" role="document">
<div class="modal-content">
@@ -684,7 +687,7 @@
</div>
</div>
<!-- Unterschriften-Layover -->
@* ----- Unterschriften-Layover ----- *@
<div class="container-fluid d-none mb-3" id="signature-container">
<div class="container-fluid">
<div class="row">
@@ -758,13 +761,13 @@
</div>
</div>
<!-- Löschformular -->
@* ----- Löschformular ----- *@
@using(Html.BeginForm("DeleteServiceRecord", "Main", FormMethod.Post, new { id = "deletion-form" }))
{
<input type="hidden" name="serviceRecordOidHolder" id="oidHolder" />
}
<!-- Statistik-Popup -->
@* ----- Statistik-Popup ----- *@
<div id="statistics-popup" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-dialog-scrollable" role="document">
<div class="modal-content">
@@ -789,7 +792,7 @@
</div>
</div>
<!-- Unterschriftenanzeige-Popup -->
@* ----- Unterschriftenanzeige-Popup ----- *@
<div id="signature-img-popup" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
@@ -809,7 +812,7 @@
</div>
</div>
<!-- Bewertungspopup für Ziele -->
@* ----- Bewertungspopup für Ziele ----- *@
@if(AbstractModel.HasRightToRateGoals)
{
<div id="goal-rating-popup" class="modal" tabindex="-1" role="dialog">
@@ -843,7 +846,7 @@
}
<input type="hidden" id="has-any-rating-types" value="@hasRatingTypes" />
<!-- Passwort ändern Popup -->
@* ----- Passwort ändern Popup ----- *@
@using(Html.BeginForm("ChangePassword", "Main", FormMethod.Post, new { id = "change-password-form" }))
{
<div class="modal" id="password-changing-popup" tabindex="-1" role="dialog">

View File

@@ -714,12 +714,12 @@ $nav-pills-link-active-color: $component-active-color !default;
$nav-pills-link-active-bg: $component-active-bg !default;
$nav-divider-color: $gray-200 !default;
$nav-divider-margin-y: $spacer / 2 !default;
$nav-divider-margin-y: $spacer / 2 !default;
// Navbar
$navbar-padding-y: $spacer / 2 !default;
$navbar-padding-y: $spacer / 2 !default;
$navbar-padding-x: $spacer !default;
$navbar-nav-link-padding-x: .5rem !default;
@@ -728,7 +728,7 @@ $navbar-brand-font-size: $font-size-lg !default;
// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;
$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;
$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;
$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;
$navbar-toggler-padding-y: .25rem !default;
$navbar-toggler-padding-x: .75rem !default;
@@ -842,7 +842,7 @@ $card-bg: $white !default;
$card-img-overlay-padding: 1.25rem !default;
$card-group-margin: $grid-gutter-width / 2 !default;
$card-group-margin: $grid-gutter-width / 2 !default;
$card-deck-margin: $card-group-margin !default;
$card-columns-count: 3 !default;

View File

@@ -43,10 +43,10 @@ $rfs-base-font-size-unit: unit($rfs-base-font-size);
// Remove px-unit from $rfs-base-font-size for calculations
@if $rfs-base-font-size-unit == "px" {
$rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);
$rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);
}
@else if $rfs-base-font-size-unit == "rem" {
$rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);
$rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);
}
// Cache $rfs-breakpoint unit to prevent multiple calls
@@ -54,144 +54,141 @@ $rfs-breakpoint-unit-cache: unit($rfs-breakpoint);
// Remove unit from $rfs-breakpoint for calculations
@if $rfs-breakpoint-unit-cache == "px" {
$rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);
$rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);
}
@else if $rfs-breakpoint-unit-cache == "rem" or $rfs-breakpoint-unit-cache == "em" {
$rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);
$rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);
}
// Responsive font-size mixin
@mixin rfs($fs, $important: false) {
// Cache $fs unit
$fs-unit: if(type-of($fs) == "number", unit($fs), false);
// Cache $fs unit
$fs-unit: if(type-of($fs) == "number", unit($fs), false);
// Add !important suffix if needed
$rfs-suffix: if($important, " !important", "");
// Add !important suffix if needed
$rfs-suffix: if($important, " !important", "");
// If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
@if not $fs-unit or $fs-unit != "" and $fs-unit != "px" and $fs-unit != "rem" or $fs == 0 {
font-size: #{$fs}#{$rfs-suffix};
}
@else {
// Variables for storing static and fluid rescaling
$rfs-static: null;
$rfs-fluid: null;
// Remove px-unit from $fs for calculations
@if $fs-unit == "px" {
$fs: $fs / ($fs * 0 + 1);
}
@else if $fs-unit == "rem" {
$fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);
}
// Set default font-size
@if $rfs-font-size-unit == rem {
$rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};
}
@else if $rfs-font-size-unit == px {
$rfs-static: #{$fs}px#{$rfs-suffix};
// If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
@if not $fs-unit or $fs-unit != "" and $fs-unit != "px" and $fs-unit != "rem" or $fs == 0 {
font-size: #{$fs}#{$rfs-suffix};
}
@else {
@error "`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.";
}
// Variables for storing static and fluid rescaling
$rfs-static: null;
$rfs-fluid: null;
// Only add media query if font-size is bigger as the minimum font-size
// If $rfs-factor == 1, no rescaling will take place
@if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {
$min-width: null;
$variable-unit: null;
// Calculate minimum font-size for given font-size
$fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;
// Calculate difference between given font-size and minimum font-size for given font-size
$fs-diff: $fs - $fs-min;
// Base font-size formatting
// No need to check if the unit is valid, because we did that before
$min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);
// If two-dimensional, use smallest of screen width and height
$variable-unit: if($rfs-two-dimensional, vmin, vw);
// Calculate the variable width between 0 and $rfs-breakpoint
$variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};
// Set the calculated font-size.
$rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};
}
// Rendering
@if $rfs-fluid == null {
// Only render static font-size if no fluid font-size is available
font-size: $rfs-static;
}
@else {
$mq-value: null;
// RFS breakpoint formatting
@if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {
$mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};
}
@else if $rfs-breakpoint-unit == px {
$mq-value: #{$rfs-breakpoint}px;
}
@else {
@error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.";
}
@if $rfs-class == "disable" {
// Adding an extra class increases specificity,
// which prevents the media query to override the font size
&,
.disable-responsive-font-size &,
&.disable-responsive-font-size {
font-size: $rfs-static;
// Remove px-unit from $fs for calculations
@if $fs-unit == "px" {
$fs: $fs / ($fs * 0 + 1);
}
}
@else {
font-size: $rfs-static;
}
@else if $fs-unit == "rem" {
$fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);
}
// Set default font-size
@if $rfs-font-size-unit == rem {
$rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};
}
@else if $rfs-font-size-unit == px {
$rfs-static: #{$fs}px#{$rfs-suffix};
}
@else {
@error "`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.";
}
// Only add media query if font-size is bigger as the minimum font-size
// If $rfs-factor == 1, no rescaling will take place
@if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {
$min-width: null;
$variable-unit: null;
@if $rfs-two-dimensional {
@media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {
@if $rfs-class == "enable" {
.enable-responsive-font-size &,
&.enable-responsive-font-size {
font-size: $rfs-fluid;
// Calculate minimum font-size for given font-size
$fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;
// Calculate difference between given font-size and minimum font-size for given font-size
$fs-diff: $fs - $fs-min;
// Base font-size formatting
// No need to check if the unit is valid, because we did that before
$min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);
// If two-dimensional, use smallest of screen width and height
$variable-unit: if($rfs-two-dimensional, vmin, vw);
// Calculate the variable width between 0 and $rfs-breakpoint
$variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};
// Set the calculated font-size.
$rfs-fluid: #{$min-width} + #{$variable-width} #{$rfs-suffix};
}
// Rendering
@if $rfs-fluid == null {
// Only render static font-size if no fluid font-size is available
font-size: $rfs-static;
}
@else {
$mq-value: null;
// RFS breakpoint formatting
@if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {
$mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};
}
}
@else {
font-size: $rfs-fluid;
}
@if $rfs-safari-iframe-resize-bug-fix {
// stylelint-disable-next-line length-zero-no-unit
min-width: 0vw;
}
}
}
@else {
@media (max-width: #{$mq-value}) {
@if $rfs-class == "enable" {
.enable-responsive-font-size &,
&.enable-responsive-font-size {
font-size: $rfs-fluid;
@else if $rfs-breakpoint-unit == px {
$mq-value: #{$rfs-breakpoint}px;
}
@else {
@error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.";
}
}
@else {
font-size: $rfs-fluid;
}
@if $rfs-safari-iframe-resize-bug-fix {
// stylelint-disable-next-line length-zero-no-unit
min-width: 0vw;
}
@if $rfs-class == "disable" {
// Adding an extra class increases specificity,
// which prevents the media query to override the font size
&,
.disable-responsive-font-size &,
&.disable-responsive-font-size {
font-size: $rfs-static;
}
}
@else {
font-size: $rfs-static;
}
@if $rfs-two-dimensional {
@media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {
@if $rfs-class == "enable" {
.enable-responsive-font-size &,
&.enable-responsive-font-size {
font-size: $rfs-fluid;
}
}
@else {
font-size: $rfs-fluid;
}
@if $rfs-safari-iframe-resize-bug-fix {
// stylelint-disable-next-line length-zero-no-unit
min-width: 0vw;
}
}
}
@else {
@media (max-width: #{$mq-value}) {
@if $rfs-class == "enable" {
.enable-responsive-font-size &,
&.enable-responsive-font-size {
font-size: $rfs-fluid;
}
}
@else {
font-size: $rfs-fluid;
}
@if $rfs-safari-iframe-resize-bug-fix {
// stylelint-disable-next-line length-zero-no-unit
min-width: 0vw;
}
}
}
}
}
}
}
}
// The font-size & responsive-font-size mixin uses RFS to rescale font sizes

View File

@@ -5745,8 +5745,14 @@ namespace BeWo.Data.Access
if(costBearer2SupportConceptOid.HasValue)
{
var groupOidsQuery = Session.CreateSQLQuery($"SELECT MIN(Oid) FROM servicerecord WHERE CostBearer2SupportConceptOid = {costBearer2SupportConceptOid} GROUP BY GroupOid");
var groupOids = groupOidsQuery.List<long>().ToArray();
criteria.Add(Restrictions.Eq(ServiceRecord.PropertyName_CostBearer2SupportConceptOid, costBearer2SupportConceptOid));
rowCountCirteria.Add(Restrictions.Eq(ServiceRecord.PropertyName_CostBearer2SupportConceptOid, costBearer2SupportConceptOid));
criteria.Add(Restrictions.Or(Restrictions.IsNull(nameof(ServiceRecord.GroupOid)), Restrictions.In(nameof(ServiceRecord.Oid), groupOids)));
rowCountCirteria.Add(Restrictions.Or(Restrictions.IsNull(nameof(ServiceRecord.GroupOid)), Restrictions.In(nameof(ServiceRecord.Oid), groupOids)));
}
else
{
@@ -5774,7 +5780,6 @@ namespace BeWo.Data.Access
public IEnumerable<ServiceRecord> FindEmployeeServiceRecordsWithoutCustomerPaginated(long pEmployeeOid, long? days, int firstResult, int maxResults, out int rowCount)
{
var criteria = CreateCriteria<ServiceRecord>()
.Add(Restrictions.Eq(ServiceRecord.PropertyName_EmployeeOid, pEmployeeOid))
.Add(Restrictions.IsNull(ServiceRecord.PropertyName_CostBearer2SupportConceptOid));
@@ -5791,7 +5796,7 @@ namespace BeWo.Data.Access
}
criteria.AddOrder(Order.Desc(nameof(ServiceRecord.Start))).AddOrder(Order.Desc(nameof(ServiceRecord.End))).AddOrder(Order.Desc(nameof(BeWoEntityBase.InsTs)));
rowCount = rowCountCirteria.SetProjection(Projections.RowCount()).FutureValue<int>().Value;
return criteria.SetFirstResult(firstResult).SetMaxResults(maxResults).Future<ServiceRecord>();
@@ -5799,6 +5804,9 @@ namespace BeWo.Data.Access
public IEnumerable<ServiceRecord> FindServiceRecordsDetailsForLastDaysWithStartEndDatePaginated(long costbearer2SupportConcept, DateTime start, DateTime ende, int firstResult, int maxResults, out int rowCount)
{
var groupOidsQuery = Session.CreateSQLQuery($"SELECT MIN(Oid) FROM servicerecord WHERE CostBearer2SupportConceptOid = {costbearer2SupportConcept} GROUP BY GroupOid");
var groupOids = groupOidsQuery.List<long>().ToArray();
var criteria = CreateCriteria<ServiceRecord>()
.Add(Restrictions.Eq(ServiceRecord.PropertyName_CostBearer2SupportConceptOid, costbearer2SupportConcept));
@@ -5813,6 +5821,10 @@ namespace BeWo.Data.Access
rowCountCirteria.Add(Restrictions.Ge(ServiceRecord.PropertyName_Start, start.Date))
.Add(Restrictions.Lt(ServiceRecord.PropertyName_Start, max.Date));
criteria.Add(Restrictions.Or(Restrictions.IsNull(nameof(ServiceRecord.GroupOid)), Restrictions.In(nameof(ServiceRecord.Oid), groupOids)));
rowCountCirteria.Add(Restrictions.Or(Restrictions.IsNull(nameof(ServiceRecord.GroupOid)), Restrictions.In(nameof(ServiceRecord.Oid), groupOids)));
criteria.AddOrder(Order.Desc(nameof(ServiceRecord.Start))).AddOrder(Order.Desc(nameof(ServiceRecord.End))).AddOrder(Order.Desc(nameof(BeWoEntityBase.InsTs)));
rowCount = rowCountCirteria.SetProjection(Projections.RowCount()).FutureValue<int>().Value;
@@ -5871,15 +5883,5 @@ namespace BeWo.Data.Access
return criteria.List<Bargeldtransaktionshistory>().ToList();
}
public Bargeldtransaktionshistory FindMostRecentBargeldtransaktionshistoryEntryByBargeldtransaktionOid(long transactionOid)
{
var criteria = CreateCriteria<Bargeldtransaktionshistory>()
.Add(Restrictions.Eq(nameof(Bargeldtransaktionshistory.BargeldtransaktionOid), transactionOid))
.AddOrder(Order.Desc(nameof(Bargeldtransaktionshistory.InsTs)))
.SetMaxResults(1);
return criteria.List<Bargeldtransaktionshistory>().FirstOrDefault();
}
}
}

View File

@@ -21,7 +21,17 @@ namespace BeWoDarmstadt
protected override decimal? BerechneUeberstunden(MitarbeiterstundenkontoRO.EmployeeDetail ed, decimal? ueberstundenStd, Contract contract, DateTime start, DateTime ende)
{
base.BerechneUeberstunden(ed, ueberstundenStd, contract, start, ende);
fls += ed.StundenSollOhneUrlaubKrankheit*75/100-ed.FlsIst;
decimal ratio = 75 / 100;
if (contract.WeeklyFLS.HasValue && contract.WeeklyTotalHours.HasValue)
{
ratio = Math.Round(contract.WeeklyFLS.Value / contract.WeeklyTotalHours.Value, 2, MidpointRounding.AwayFromZero);
}
else if (contract.MonthlyFLS.HasValue && contract.MonthlyTotalHours.HasValue)
{
ratio = Math.Round(contract.MonthlyFLS.Value / contract.MonthlyTotalHours.Value, 2, MidpointRounding.AwayFromZero);
}
fls += ed.StundenSollOhneUrlaubKrankheit * ratio - ed.FlsIst;
//fls += ed.StundenSollOhneUrlaubKrankheit*75/100-ed.FlsIst;
// ausgezahlte += ed.UeberstundenAusbezahlt;
return ueberstundenStd;
}
@@ -56,7 +66,17 @@ namespace BeWoDarmstadt
{
var festeflsSollProMonat = BerechneFlsSollProMonat(emp, berichtsAnfang, berichtsEnde);
decimal flsSollImVertragsUndBerichtzeitraum = 0;
flsSollImVertragsUndBerichtzeitraum = tatSollStdImVertragsUndBerichtzeitraum * 75 / 100;
decimal ratio = 75 / 100;
if (contract.WeeklyFLS.HasValue && contract.WeeklyTotalHours.HasValue)
{
ratio = Math.Round(contract.WeeklyFLS.Value / contract.WeeklyTotalHours.Value, 2, MidpointRounding.AwayFromZero);
}
else if (contract.MonthlyFLS.HasValue && contract.MonthlyTotalHours.HasValue)
{
ratio = Math.Round(contract.MonthlyFLS.Value / contract.MonthlyTotalHours.Value, 2, MidpointRounding.AwayFromZero);
}
flsSollImVertragsUndBerichtzeitraum = tatSollStdImVertragsUndBerichtzeitraum * ratio;
//flsSollImVertragsUndBerichtzeitraum = tatSollStdImVertragsUndBerichtzeitraum * 75 / 100;
return flsSollImVertragsUndBerichtzeitraum;
}

View File

@@ -68,7 +68,11 @@ namespace BeWoDarmstadt
lblZeitraum.Text = String.Format("{0:MMMM yyyy}", monat);
lblStelle.Text = String.Format("{0:0.00}", ed.SollProWoche/40);
decimal anteilFLS = (decimal)0.75; //(decimal)ed.WeeklyFLS / (decimal)ed.SollProWoche;
decimal anteilFLS = (decimal)0.75;
if (ed.WeeklyFLS.HasValue)
{
anteilFLS = Math.Round((decimal)ed.WeeklyFLS / ed.SollProWoche, 2, MidpointRounding.AwayFromZero);
}
//foreach (var ot in ed.Employee.Overtimes)
//{
// ed.Custom6 += ot.Betrag;
@@ -318,9 +322,7 @@ namespace BeWoDarmstadt
if (sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("eingliederungshilfe") || sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("jugendhilfe")
|| sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("fachleistungsstunde")) // FLS nach Debug entfernen
{
if (sr.ServiceDescription.Name.ToLower().StartsWith("direkte"))
AddValueToCell(zv.minutenLeistung, datum, tableFLS.Rows[1], direkteBetr2Minuten);
else if (sr.ServiceDescription.Name.ToLower().StartsWith("indirekte"))
if (sr.ServiceDescription.Name.ToLower().StartsWith("indirekte"))
AddValueToCell(zv.minutenLeistung, datum, tableFLS.Rows[2], indirekteBetr2Minuten);
else if (sr.ServiceDescription.Name.ToLower().Contains("nacharbeiten"))
AddValueToCell(zv.minutenLeistung, datum, tableFLS.Rows[3], vorArbeiten2Minuten);
@@ -328,6 +330,9 @@ namespace BeWoDarmstadt
AddValueToCell(zv.minutenLeistung, datum, tableFLS.Rows[4], flsX2Minuten);
else if (sr.ServiceDescription.Name.ToLower().Contains("(y)"))
AddValueToCell(zv.minutenLeistung, datum, tableFLS.Rows[5], flsY2Minuten);
//if (sr.ServiceDescription.Name.ToLower().StartsWith("direkte") || sr.ServiceDescription.Name.ToLower().StartsWith("gruppe"))
else
AddValueToCell(zv.minutenLeistung, datum, tableFLS.Rows[1], direkteBetr2Minuten);
}
else if (sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("rahmenzeit"))
{

View File

@@ -100,5 +100,42 @@ namespace CaritasGuenzburgNeuUlm
return sum;
}
protected override decimal GetSollNachArbeitszeitenFuerTag(Employee emp, DateTime tag)
{
decimal soll = 0;
var fak = GetFeiertagsFaktor(tag);
if (BerechneFeiertageAlsArbeitszeit())
{
if (fak == 1)
{
fak = 0;
}
}
if (fak == 0.5m) // die haben eine ganz komische Regel, am Faschingsdienst muss jeder 4 Stunden arbeiten!!!
{
soll += 4;
}
else if (fak < 1)
{
if (emp.Arbeitszeiten != null)
{
foreach (var az in emp.Arbeitszeiten)
{
if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= tag) &&
(!az.GueltigBis.HasValue || az.GueltigBis.Value >= tag))
{
var std = GetArbeitszeitStundenFuerTag(az, tag);
soll += (std * (1 - fak));
}
}
}
}
return soll;
}
}
}

View File

@@ -99,7 +99,6 @@ namespace CaritasGuenzburgNeuUlm
this.xrTableCell26 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.Title = new DevExpress.XtraReports.UI.XRControlStyle();
this.FieldCaption = new DevExpress.XtraReports.UI.XRControlStyle();
this.PageInfo = new DevExpress.XtraReports.UI.XRControlStyle();
@@ -122,6 +121,9 @@ namespace CaritasGuenzburgNeuUlm
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
@@ -424,6 +426,8 @@ namespace CaritasGuenzburgNeuUlm
//
this.xrTableRow8.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell6,
this.xrTableCell4,
this.xrTableCell9,
this.cellRegelarbeitszeit});
this.xrTableRow8.Name = "xrTableRow8";
this.xrTableRow8.Weight = 0.75540991165010141D;
@@ -443,13 +447,13 @@ namespace CaritasGuenzburgNeuUlm
// cellRegelarbeitszeit
//
this.cellRegelarbeitszeit.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.Regelarbeitszeit")});
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.ArbeitstageImBerichtszeitraum", "{0:0}")});
this.cellRegelarbeitszeit.Name = "cellRegelarbeitszeit";
this.cellRegelarbeitszeit.StylePriority.UseFont = false;
this.cellRegelarbeitszeit.StylePriority.UseTextAlignment = false;
this.cellRegelarbeitszeit.Text = "cellRegelarbeitszeit";
this.cellRegelarbeitszeit.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.cellRegelarbeitszeit.Weight = 0.49791629021026573D;
this.cellRegelarbeitszeit.Weight = 0.11263227197566103D;
//
// xrTableRow10
//
@@ -488,14 +492,14 @@ namespace CaritasGuenzburgNeuUlm
this.xrTableCell28.Name = "xrTableCell28";
this.xrTableCell28.StylePriority.UseFont = false;
this.xrTableCell28.StylePriority.UseTextAlignment = false;
this.xrTableCell28.Text = "Arbeitstage diesen Monat:";
this.xrTableCell28.Text = "Soll-Stunden/pro Tag:";
this.xrTableCell28.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell28.Weight = 0.213129273221085D;
//
// xrTableCell23
//
this.xrTableCell23.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.ArbeitstageImBerichtszeitraum", "{0:0}")});
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SollProTag", "{0:0.##}")});
this.xrTableCell23.Name = "xrTableCell23";
this.xrTableCell23.StylePriority.UseFont = false;
this.xrTableCell23.StylePriority.UseTextAlignment = false;
@@ -855,10 +859,6 @@ namespace CaritasGuenzburgNeuUlm
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell14.Weight = 0.080942614161178317D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.MitarbeiterstundenkontoRO);
//
// Title
//
this.Title.BackColor = System.Drawing.Color.White;
@@ -1054,6 +1054,29 @@ namespace CaritasGuenzburgNeuUlm
this.xrLabel5.Text = "z.K. PersonalchefIn";
this.xrLabel5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomLeft;
//
// xrTableCell4
//
this.xrTableCell4.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.Regelarbeitszeit")});
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.StylePriority.UseTextAlignment = false;
this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell4.Weight = 0.17215474501351971D;
//
// xrTableCell9
//
this.xrTableCell9.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrTableCell9.Name = "xrTableCell9";
this.xrTableCell9.StylePriority.UseFont = false;
this.xrTableCell9.StylePriority.UseTextAlignment = false;
this.xrTableCell9.Text = "Arbeitstage diesen Monat:";
this.xrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell9.Weight = 0.21312927322108502D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.MitarbeiterstundenkontoRO);
//
// Mitarbeiterarbeitszeitkonto
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -1186,5 +1209,7 @@ namespace CaritasGuenzburgNeuUlm
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
}
}

View File

@@ -4103,6 +4103,7 @@ namespace BeWo.Service.ServiceImplementations
{
var changedOrDeletedTransactionDC = pBargeldkasse.Bargeldtransaktionen.FirstOrDefault(transaction => transaction.BargeldtransaktionOid.HasValue && transaction.BargeldtransaktionOid.Value.Equals(originalTransaction.BargeldtransaktionOid.Value));
// Die Transaktion wurde entfernt
if(changedOrDeletedTransactionDC is null && originalTransaction.BargeldtransaktionOid.HasValue)
{
if(originalTransaction.SignatureOid.HasValue)
@@ -4128,10 +4129,14 @@ namespace BeWo.Service.ServiceImplementations
{
var newSignatureState = SignatureStateType.None;
// Wenn die Transaktion eine Unterschrift vor der Änderung hatte, wird diese als ungültig gespeichert
// Wenn die Transaktion eine Unterschrift vor der Änderung hatte, wird diese als ungültig gespeichert und die Transaktion gelöscht.
if(changedOrDeletedTransactionDC.SignatureOid.HasValue)
{
newSignatureState = SignatureStateType.Invalid;
if(originalTransaction.BargeldtransaktionOid.HasValue)
{
deletedOids.AddIfNotIn(originalTransaction.BargeldtransaktionOid.Value);
}
}
oids2ChangeTypes.AddIfNotIn(new KeyValuePair<long, KeyValuePair<StatementType, SignatureStateType>>(
@@ -4162,7 +4167,7 @@ namespace BeWo.Service.ServiceImplementations
transactionHistoryEntries.Add(CreateTransactionHistoryObject(deletedTransaction, StatementType.Delete, signatureStateType));
}
DAOFactory.GenericDAO.Delete(signatures2Delete);
MapperFactory.BargeldkassenDCBargeldkasseDC_BargeldkassenDCBargeldkasse.MergeWithEntity(pBargeldkasse, lOriginal);
@@ -4189,6 +4194,8 @@ namespace BeWo.Service.ServiceImplementations
DAOFactory.GenericDAO.Insert(transactionHistoryEntries);
DAOFactory.GenericDAO.Delete(DAOFactory.GenericDAO.LoadByIDs<Signature>(signatures2Delete.Where(s => s.Oid.HasValue).Select(s => s.Oid.Value)));
return MapperFactory.BargeldkassenDCBargeldkasseDC_BargeldkassenDCBargeldkasse.MapToNewDC(lOriginal);
}
catch (Exception e)