registries B/F для sdf57 executor
This commit is contained in:
parent
0a2e7ca09a
commit
9360387bd0
1 changed files with 27 additions and 25 deletions
|
|
@ -165,35 +165,18 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
if (err.isEmpty()) {
|
if (err.isEmpty()) {
|
||||||
Consumer<Registry> update = rgs -> {
|
Consumer<Registry> update = rgs -> {
|
||||||
updateReg(stmt, rgs);
|
updateReg(stmt, rgs);
|
||||||
|
//добавил создание если не найдены
|
||||||
Optional<Registry> registryUnitBOpt = findRegByUnit(stmt, rgs, RegistryUnit.B);
|
Registry registryUnitB = findRegByUnit(stmt, rgs, RegistryUnit.B).orElse(copyRegB(rgs));
|
||||||
Optional<Registry> registryUnitFOpt = findRegByUnit(stmt, rgs, RegistryUnit.F);
|
Registry registryUnitF = findRegByUnit(stmt, rgs, RegistryUnit.F).orElse(copyRegF(rgs, null)); //передаю null т.к. отнимется ниже по коду
|
||||||
if (registryUnitFOpt.isPresent() && registryUnitBOpt.isPresent()) {
|
registryUnitF.setBalance(rgs.getBalance().subtract(registryUnitB.getBalance()));
|
||||||
Registry registryUnitF = registryUnitFOpt.get();
|
registryUnitF.setUpdated(Instant.now());
|
||||||
Registry registryUnitB = registryUnitBOpt.get();
|
registryImdg.update(registryUnitF);
|
||||||
registryUnitF.setBalance(rgs.getBalance().subtract(registryUnitB.getBalance()));
|
|
||||||
registryUnitF.setUpdated(Instant.now());
|
|
||||||
registryImdg.update(registryUnitF);
|
|
||||||
}
|
|
||||||
registryImdg.update(rgs);
|
registryImdg.update(rgs);
|
||||||
};
|
};
|
||||||
Consumer<RegistryDesignation> create = (dsgn) -> {
|
Consumer<RegistryDesignation> create = (dsgn) -> {
|
||||||
Registry registry = createRegistryByStatement(stmt, company, account, dsgn);
|
Registry registry = createRegistryByStatement(stmt, company, account, dsgn);
|
||||||
|
Registry registryB = copyRegB(registry);
|
||||||
Registry registryB = registry.clone();
|
Registry registryF = copyRegF(registry, registryB.getBalance());
|
||||||
registryB.setId(imdgProvider.getImdgIdGenerator().nextId());
|
|
||||||
registryB.setRegistryUnit(RegistryUnit.B.getKey());
|
|
||||||
registryB.setRegistryCode(RegistryUtil.clearingCode(registryB));
|
|
||||||
registryB.setBalance(BigDecimal.ZERO);
|
|
||||||
registryB.setDebit(BigDecimal.ZERO);
|
|
||||||
registryB.setCredit(BigDecimal.ZERO);
|
|
||||||
|
|
||||||
Registry registryF = registry.clone();
|
|
||||||
registryF.setRegistryUnit(RegistryUnit.F.getKey());
|
|
||||||
registryF.setRegistryCode(RegistryUtil.clearingCode(registryF));
|
|
||||||
registryF.setBalance(registry.getBalance().subtract(registryB.getBalance()));
|
|
||||||
registryF.setCredit(BigDecimal.ZERO);
|
|
||||||
registryF.setId(imdgProvider.getImdgIdGenerator().nextId());
|
|
||||||
|
|
||||||
registryImdg.insert(registry);
|
registryImdg.insert(registry);
|
||||||
registryImdg.insert(registryF);
|
registryImdg.insert(registryF);
|
||||||
|
|
@ -219,6 +202,25 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Registry copyRegB(Registry rgs) {
|
||||||
|
Registry rgsB = rgs.clone();
|
||||||
|
rgsB.setRegistryUnit(RegistryUnit.B.getKey());
|
||||||
|
rgsB.setRegistryCode(RegistryUtil.clearingCode(rgsB));
|
||||||
|
rgsB.setBalance(BigDecimal.ZERO);
|
||||||
|
rgsB.setDebit(BigDecimal.ZERO);
|
||||||
|
rgsB.setCredit(BigDecimal.ZERO);
|
||||||
|
return rgsB;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Registry copyRegF(Registry rgs, BigDecimal rgsBBalance) {
|
||||||
|
Registry rgsF = rgs.clone();
|
||||||
|
rgsF.setRegistryUnit(RegistryUnit.F.getKey());
|
||||||
|
rgsF.setRegistryCode(RegistryUtil.clearingCode(rgsF));
|
||||||
|
rgsF.setBalance(safeBD(rgs.getBalance()).subtract(safeBD(rgsBBalance)));
|
||||||
|
rgsF.setCredit(BigDecimal.ZERO);
|
||||||
|
return rgsF;
|
||||||
|
}
|
||||||
|
|
||||||
private record StmtCmpAcc(Statement statement, Company company, Account account) {
|
private record StmtCmpAcc(Statement statement, Company company, Account account) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue