Receive Stock form now displays the actual highest-allocated serial across every series (not just silently prefilling the field), so the operator can see and trust the auto-suggested range start rather than taking it on faith. Fixes a real bug where item.decision (which InwardClearingItem.java always sets to the literal string "PENDING" at creation, never null) was checked with a plain truthy test everywhere a "has this been decided yet" branch was needed. Since "PENDING" is a non-empty string, that check was always true — silently breaking the Decide/View button label, the collapsed validation summary, the "Awaiting settlement" text, and the decision dialog itself (which never showed the actual Pass/Return form, even for still-pending items). Replaced with a proper isDecided() check everywhere. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
173 lines
2.5 KiB
SCSS
173 lines
2.5 KiB
SCSS
/**
|
|
* Copyright since 2025 Mifos Initiative
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
.container {
|
|
padding: 16px;
|
|
}
|
|
|
|
.page-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.tab-body {
|
|
padding: 16px 0;
|
|
}
|
|
|
|
.tab-toolbar {
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.filter-row {
|
|
display: flex;
|
|
gap: 8px;
|
|
margin-bottom: 16px;
|
|
flex-wrap: wrap;
|
|
|
|
button.active {
|
|
background: rgb(25 118 210 / 12%);
|
|
}
|
|
}
|
|
|
|
.summary-strip {
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.summary-title {
|
|
font-size: 0.78rem;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.4px;
|
|
color: rgb(0 0 0 / 55%);
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.summary-cards {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 12px;
|
|
}
|
|
|
|
.summary-card {
|
|
min-width: 120px;
|
|
padding: 12px 16px;
|
|
border: 1px solid rgb(0 0 0 / 10%);
|
|
border-radius: 10px;
|
|
background: rgb(25 118 210 / 6%);
|
|
text-align: center;
|
|
}
|
|
|
|
.summary-books {
|
|
font-size: 1.6rem;
|
|
font-weight: 700;
|
|
color: #1976d2;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.summary-label {
|
|
font-size: 0.8rem;
|
|
color: rgb(0 0 0 / 70%);
|
|
}
|
|
|
|
.summary-series {
|
|
font-size: 0.72rem;
|
|
color: rgb(0 0 0 / 50%);
|
|
margin-top: 2px;
|
|
}
|
|
|
|
.muted {
|
|
color: rgb(0 0 0 / 50%);
|
|
font-size: 0.8rem;
|
|
margin-left: 4px;
|
|
}
|
|
|
|
.add-form {
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.global-allocation-note {
|
|
margin-bottom: 14px;
|
|
padding: 8px 12px;
|
|
border-radius: 4px;
|
|
background: rgb(25 118 210 / 8%);
|
|
color: rgb(0 0 0 / 70%);
|
|
font-size: 0.85rem;
|
|
|
|
strong {
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
}
|
|
|
|
.form-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
|
|
gap: 12px 20px;
|
|
}
|
|
|
|
mat-form-field {
|
|
width: 100%;
|
|
}
|
|
|
|
.form-actions {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 12px;
|
|
margin-top: 16px;
|
|
}
|
|
|
|
.table-wrapper {
|
|
overflow-x: auto;
|
|
background: #fff;
|
|
}
|
|
|
|
table {
|
|
width: 100%;
|
|
}
|
|
|
|
td.num,
|
|
th.num {
|
|
text-align: right;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.pill {
|
|
font-size: 11px;
|
|
padding: 2px 8px;
|
|
border-radius: 6px;
|
|
font-weight: 600;
|
|
margin-left: 6px;
|
|
|
|
&.ok {
|
|
background: #dff5e8;
|
|
color: #28c07a;
|
|
}
|
|
|
|
&.bad {
|
|
background: #fde3e3;
|
|
color: #d32f2f;
|
|
}
|
|
|
|
&.warn {
|
|
background: #fff3cd;
|
|
color: #a16207;
|
|
}
|
|
|
|
&.neutral {
|
|
background: #e0e0e0;
|
|
color: #757575;
|
|
}
|
|
}
|
|
|
|
.empty-state {
|
|
padding: 24px;
|
|
text-align: center;
|
|
color: rgb(0 0 0 / 50%);
|
|
}
|