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()) {
|
||||
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) {
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue