hide same operations
This commit is contained in:
parent
c674fed28b
commit
2f05dfe8d3
|
|
@ -1264,8 +1264,17 @@ def get_statement_transactions(from_date, to_date, account_iban, login_name=None
|
|||
.get("statementList", [])
|
||||
)
|
||||
|
||||
# Get currency of current account for cross-account filtering
|
||||
account_currency = frappe.db.get_value("Kapital Bank Account", account_iban, "currency") or ""
|
||||
|
||||
# Build IBAN → currency map for all local accounts (for cross-currency filtering)
|
||||
local_account_currencies = dict(
|
||||
frappe.db.get_all("Kapital Bank Account", fields=["name", "currency"], as_list=True)
|
||||
)
|
||||
|
||||
transactions = []
|
||||
skipped_duplicates = 0
|
||||
skipped_cross_currency = 0
|
||||
|
||||
for txn in statement_list:
|
||||
trn_ref = (txn.get("trnRefNo") or "").strip()
|
||||
|
|
@ -1288,7 +1297,19 @@ def get_statement_transactions(from_date, to_date, account_iban, login_name=None
|
|||
dr_cr = (txn.get("drcrInd") or "").upper()
|
||||
|
||||
# Counterparty
|
||||
contr_name, contr_voen = _parse_counterparty(txn.get("contrAccount"))
|
||||
contr_raw = txn.get("contrAccount") or ""
|
||||
contr_parts = [p.strip() for p in contr_raw.split(" / ")]
|
||||
contr_iban = contr_parts[0] if contr_parts else ""
|
||||
contr_name = contr_parts[1] if len(contr_parts) > 1 else ""
|
||||
contr_voen = contr_parts[2] if len(contr_parts) > 2 else ""
|
||||
|
||||
# Skip if counterparty account exists locally with a different currency
|
||||
# (that transaction belongs to the counterparty account's currency view)
|
||||
if contr_iban and contr_iban in local_account_currencies:
|
||||
contr_account_currency = local_account_currencies[contr_iban]
|
||||
if contr_account_currency and contr_account_currency != account_currency:
|
||||
skipped_cross_currency += 1
|
||||
continue
|
||||
|
||||
# Purpose
|
||||
purpose = (txn.get("purpose") or "").strip()
|
||||
|
|
@ -1311,6 +1332,7 @@ def get_statement_transactions(from_date, to_date, account_iban, login_name=None
|
|||
"transactions": transactions,
|
||||
"total_fetched": len(statement_list),
|
||||
"skipped_duplicates": skipped_duplicates,
|
||||
"skipped_cross_currency": skipped_cross_currency,
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
|
|
|
|||
|
|
@ -429,6 +429,7 @@ KBBTImport.import = {
|
|||
let totalSkipped = 0;
|
||||
let seenRefNos = new Set();
|
||||
let crossAccountDuplicates = 0;
|
||||
let skippedCrossCurrency = 0;
|
||||
|
||||
function fetchNext() {
|
||||
if (currentSourceIdx >= totalSources) {
|
||||
|
|
@ -447,10 +448,11 @@ KBBTImport.import = {
|
|||
return;
|
||||
}
|
||||
|
||||
if (totalSkipped > 0 || crossAccountDuplicates > 0) {
|
||||
if (totalSkipped > 0 || crossAccountDuplicates > 0 || skippedCrossCurrency > 0) {
|
||||
let parts = [];
|
||||
if (totalSkipped > 0) parts.push(__('already imported: {0}', [totalSkipped]));
|
||||
if (crossAccountDuplicates > 0) parts.push(__('cross-account duplicates: {0}', [crossAccountDuplicates]));
|
||||
if (skippedCrossCurrency > 0) parts.push(__('other currency account: {0}', [skippedCrossCurrency]));
|
||||
frappe.show_alert({
|
||||
message: __('Skipped: {0}', [parts.join(', ')]),
|
||||
indicator: 'blue'
|
||||
|
|
@ -500,6 +502,7 @@ KBBTImport.import = {
|
|||
}
|
||||
});
|
||||
totalSkipped += (r.message.skipped_duplicates || 0);
|
||||
skippedCrossCurrency += (r.message.skipped_cross_currency || 0);
|
||||
} else {
|
||||
frappe.show_alert({
|
||||
message: __('Error fetching {0}: {1}', [sourceLabel, r.message ? r.message.message : 'unknown']),
|
||||
|
|
|
|||
|
|
@ -390,6 +390,7 @@ KBImport.import = {
|
|||
let totalSkipped = 0;
|
||||
let seenRefNos = new Set();
|
||||
let crossAccountDuplicates = 0;
|
||||
let skippedCrossCurrency = 0;
|
||||
|
||||
function fetchNext() {
|
||||
if (currentSourceIdx >= totalSources) {
|
||||
|
|
@ -408,10 +409,11 @@ KBImport.import = {
|
|||
return;
|
||||
}
|
||||
|
||||
if (totalSkipped > 0 || crossAccountDuplicates > 0) {
|
||||
if (totalSkipped > 0 || crossAccountDuplicates > 0 || skippedCrossCurrency > 0) {
|
||||
let parts = [];
|
||||
if (totalSkipped > 0) parts.push(__('already imported: {0}', [totalSkipped]));
|
||||
if (crossAccountDuplicates > 0) parts.push(__('cross-account duplicates: {0}', [crossAccountDuplicates]));
|
||||
if (skippedCrossCurrency > 0) parts.push(__('other currency account: {0}', [skippedCrossCurrency]));
|
||||
frappe.show_alert({
|
||||
message: __('Skipped: {0}', [parts.join(', ')]),
|
||||
indicator: 'blue'
|
||||
|
|
@ -458,6 +460,7 @@ KBImport.import = {
|
|||
}
|
||||
});
|
||||
totalSkipped += (r.message.skipped_duplicates || 0);
|
||||
skippedCrossCurrency += (r.message.skipped_cross_currency || 0);
|
||||
} else {
|
||||
frappe.show_alert({
|
||||
message: __('Error fetching {0}: {1}', [sourceLabel, r.message ? r.message.message : 'unknown']),
|
||||
|
|
|
|||
Loading…
Reference in New Issue