diff --git a/reports-app/frontend/src/utils/exportUtils.js b/reports-app/frontend/src/utils/exportUtils.js
index e32480b..b4641a2 100644
--- a/reports-app/frontend/src/utils/exportUtils.js
+++ b/reports-app/frontend/src/utils/exportUtils.js
@@ -477,6 +477,13 @@ export const exportBankCashRegisterPDF = (data, header, filename) => {
.replace(/[ț]/gi, (m) => (m === m.toLowerCase() ? "t" : "T"));
};
+ // Truncate text helper (limit explicatia to 100 chars)
+ const truncateText = (text, maxLength = 100) => {
+ if (!text) return "";
+ if (text.length <= maxLength) return text;
+ return text.substring(0, maxLength) + "...";
+ };
+
// Group data by bank account (bancasa)
const groupedByBank = {};
const initialBalances = {};
@@ -696,7 +703,7 @@ export const exportBankCashRegisterPDF = (data, header, filename) => {
tableRows.push([
dateFormatted,
row.nract || "",
- removeDiacritics(row.explicatia || row.nume || ""),
+ truncateText(removeDiacritics(row.explicatia || row.nume || ""), 100),
formatNumberForPDF(incasari),
formatNumberForPDF(plati),
formatNumberForPDF(row.sold),
diff --git a/reports-app/frontend/src/views/BankCashRegisterView.vue b/reports-app/frontend/src/views/BankCashRegisterView.vue
index 571efb6..75a24a8 100644
--- a/reports-app/frontend/src/views/BankCashRegisterView.vue
+++ b/reports-app/frontend/src/views/BankCashRegisterView.vue
@@ -141,23 +141,31 @@
- Total Încasări:
- {{
- formatCurrency(treasuryStore.totals.total_incasari)
- }}
-
-
- Total Plăți:
- {{
- formatCurrency(treasuryStore.totals.total_plati)
- }}
-
-
- Total Sold:
+ Sold Precedent:
{{ formatCurrency(totalSold) }}= 0 ? 'incasari' : 'plati'"
+ >{{ formatCurrency(computedTotals.soldPrecedent) }}
+
+
+ Încasări:
+ {{
+ formatCurrency(computedTotals.incasari)
+ }}
+
+
+ Plăți:
+ {{
+ formatCurrency(computedTotals.plati)
+ }}
+
+
+ Sold Final:
+ {{ formatCurrency(computedTotals.soldFinal) }}
@@ -262,7 +270,11 @@
field="explicatia"
header="Explicație"
class="col-explicatie"
- />
+ >
+
+ {{ truncateText(slotProps.data.explicatia, 100) }}
+
+
@@ -330,12 +342,39 @@ const formatDate = (dateString) => {
return format(new Date(dateString), "dd.MM.yyyy");
};
-// Computed total sold (incasari - plati)
-const totalSold = computed(() => {
- return (
- (treasuryStore.totals.total_incasari || 0) -
- (treasuryStore.totals.total_plati || 0)
- );
+// Truncate text to maxLength characters
+const truncateText = (text, maxLength = 100) => {
+ if (!text) return "";
+ if (text.length <= maxLength) return text;
+ return text.substring(0, maxLength) + "...";
+};
+
+// Computed totals - separate sold precedent from actual transactions
+// Rows with dataact = null are opening balances (sold precedent)
+const computedTotals = computed(() => {
+ let soldPrecedent = 0;
+ let incasari = 0;
+ let plati = 0;
+
+ treasuryStore.registers.forEach((row) => {
+ if (row.dataact === null || row.dataact === undefined) {
+ // Opening balance row - the sold value is the opening balance
+ soldPrecedent += parseFloat(row.sold) || 0;
+ } else {
+ // Transaction row
+ incasari += parseFloat(row.incasari) || 0;
+ plati += parseFloat(row.plati) || 0;
+ }
+ });
+
+ const soldFinal = soldPrecedent + incasari - plati;
+
+ return {
+ soldPrecedent,
+ incasari,
+ plati,
+ soldFinal,
+ };
});
// Check if current filter is a VALUTA type (to show Valuta column)
@@ -623,7 +662,7 @@ const exportExcel = async () => {
baseData["Încasări"] = parseFloat(row.incasari) || 0;
baseData["Plăți"] = parseFloat(row.plati) || 0;
baseData["Sold Cumulat"] = parseFloat(row.sold) || 0;
- baseData["Explicație"] = row.explicatia || "";
+ baseData["Explicație"] = truncateText(row.explicatia, 100);
return baseData;
});