registries B/F для sdf57 executor

This commit is contained in:
ialbert 2023-05-31 13:53:52 +03:00
parent 0a2e7ca09a
commit 9360387bd0

View file

@ -165,35 +165,18 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
if (err.isEmpty()) {
Consumer<Registry> update = rgs -> {
updateReg(stmt, rgs);
Optional<Registry> registryUnitBOpt = findRegByUnit(stmt, rgs, RegistryUnit.B);
Optional<Registry> registryUnitFOpt = findRegByUnit(stmt, rgs, RegistryUnit.F);
if (registryUnitFOpt.isPresent() && registryUnitBOpt.isPresent()) {
Registry registryUnitF = registryUnitFOpt.get();
Registry registryUnitB = registryUnitBOpt.get();
registryUnitF.setBalance(rgs.getBalance().subtract(registryUnitB.getBalance()));
registryUnitF.setUpdated(Instant.now());
registryImdg.update(registryUnitF);
}
//добавил создание если не найдены
Registry registryUnitB = findRegByUnit(stmt, rgs, RegistryUnit.B).orElse(copyRegB(rgs));
Registry registryUnitF = findRegByUnit(stmt, rgs, RegistryUnit.F).orElse(copyRegF(rgs, null)); //передаю null т.к. отнимется ниже по коду
registryUnitF.setBalance(rgs.getBalance().subtract(registryUnitB.getBalance()));
registryUnitF.setUpdated(Instant.now());
registryImdg.update(registryUnitF);
registryImdg.update(rgs);
};
Consumer<RegistryDesignation> create = (dsgn) -> {
Registry registry = createRegistryByStatement(stmt, company, account, dsgn);
Registry registryB = registry.clone();
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());
Registry registryB = copyRegB(registry);
Registry registryF = copyRegF(registry, registryB.getBalance());
registryImdg.insert(registry);
registryImdg.insert(registryF);
@ -219,6 +202,25 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
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) {
}