Skip to content

Instantly share code, notes, and snippets.

@lluismf
Last active November 9, 2017 17:37
Show Gist options
  • Save lluismf/f31cc9ffd12a9243c3190ef719c04fff to your computer and use it in GitHub Desktop.
Save lluismf/f31cc9ffd12a9243c3190ef719c04fff to your computer and use it in GitHub Desktop.
Algorithm to detect gaps in C43 files
List<DCabeceraC43> headers = getHeadersSorted(toa);
DCabeceraC43 first = null;
DCabeceraC43 previous = null;
boolean dateErrors = false;
boolean balanceErrors = false;
for (DCabeceraC43 header : headers) {
if (first == null) {
header.setInitDateErr(false);
header.setFinalDateErr(false);
header.setInitBalanceErr(false);
header.setFinalBalanceErr(false);
first = header;
} else {
long days = DateTools.daysBetween(previous.getFinalDate(), header.getInitialDate());
header.setInitDateErr(days > 1);
header.setFinalDateErr(false);
previous.setFinalDateErr(days > 1);
if (!previous.getSaldoFinal().equals(header.getSaldoInicial())) {
header.setInitBalanceErr(true);
previous.setFinalBalanceErr(true);
} else {
header.setInitBalanceErr(false);
header.setFinalDateErr(false);
}
}
dateErrors |= header.isInitDateErr() || header.isFinalDateErr();
balanceErrors |= header.isInitBalanceErr() || header.isFinalBalanceErr();
previous = header;
}
if (previous != null) {
toa.setLastC43(previous);
toa.setC43DateErr(toa.getStartConcil() == null || first.getLoadDate().after(toa.getStartConcil()) || dateErrors);
toa.setC43BalanceErr(balanceErrors);
} else {
toa.setLastC43(null);
toa.setC43DateErr(false);
toa.setC43BalanceErr(false);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment