[ROSSOGARGANO]
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

- fatturazione conto deposito
This commit is contained in:
2025-02-04 09:59:49 +01:00
parent e31ed33c65
commit db494444f7
6 changed files with 256 additions and 2 deletions

View File

@@ -0,0 +1,25 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250203154925 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetupQuery("FATT_V_VAL", "Fatture di vendita solo a valore", "SELECT COD_DTIP + '|' + COD_DTIP + ' - ' + DESCRIZIONE \n" + "FROM DTB_TIPI WHERE GESTIONE = 'V' AND\n" + "segno_qta_scar = 0 and segno_val_scar > 0 and cod_ccau is not null ORDER BY 1");executeStatement("UPDATE stb_gest_setup SET query_default = 'FATT_V_VAL' where where gest_name = 'DATI_AZIENDA' and section = 'CONTO_DEPOSITO' and key_section = 'COD_DTIP_V'");
String value = null;
if (isCustomer(IntegryCustomer.RossoGargano))
value = "AD";
createSetup("DATI_AZIENDA","CONTO_DEPOSITO","COD_DTIP",value,"Tipo documento per le fatture conto deposito","FATT_V_VAL");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250203184408 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String value = null;
if (isCustomer(IntegryCustomer.RossoGargano))
value = "03.01";
createSetup("DATI_AZIENDA","CONTO_DEPOSITO","COD_MDEP",value,"deposito aziendale per fatturazione conto deposito","COD_MDEP");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,6 +1,7 @@
package it.integry.ems.product.controller;
import it.integry.common.var.CommonConstants;
import it.integry.ems.product.dto.FatturaContoDepositoDTO;
import it.integry.ems.product.service.ContrattiDiVenditaService;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.ServiceRestResponse;
@@ -75,5 +76,18 @@ public class ContrattiVenditaController {
}
}
@RequestMapping(value = "fatturaContoDeposito", method = RequestMethod.POST)
public ServiceRestResponse fatturaContoDeposito(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestBody FatturaContoDepositoDTO dto) {
try {
return ServiceRestResponse.createPositiveResponse(contrattiDiVenditaService.fatturaContoDeposito(dto));
} catch (Exception e) {
logger.error(request.getRequestURI(), e);
return ServiceRestResponse.createNegativeResponse(e);
}
}
}

View File

@@ -0,0 +1,39 @@
package it.integry.ems.product.dto;
import java.util.ArrayList;
import java.util.List;
public class FatturaContoDepositoDTO {
private Long idContratto;
private String codAnag;
private List<FatturaContoDepositoRowDTO> articoli = new ArrayList<>();
public Long getIdContratto() {
return idContratto;
}
public FatturaContoDepositoDTO setIdContratto(Long idContratto) {
this.idContratto = idContratto;
return this;
}
public String getCodAnag() {
return codAnag;
}
public FatturaContoDepositoDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public List<FatturaContoDepositoRowDTO> getArticoli() {
return articoli;
}
public FatturaContoDepositoDTO setArticoli(List<FatturaContoDepositoRowDTO> articoli) {
this.articoli = articoli;
return this;
}
}

View File

@@ -0,0 +1,89 @@
package it.integry.ems.product.dto;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class FatturaContoDepositoRowDTO {
private String codMart;
private BigDecimal qtaDoc;
private BigDecimal valUnt;
private String untMis;
private BigDecimal sconto1;
private BigDecimal sconto2;
private BigDecimal sconto3;
private BigDecimal sconto4;
public String getCodMart() {
return codMart;
}
public FatturaContoDepositoRowDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public BigDecimal getQtaDoc() {
return qtaDoc;
}
public FatturaContoDepositoRowDTO setQtaDoc(BigDecimal qtaDoc) {
this.qtaDoc = qtaDoc;
return this;
}
public BigDecimal getValUnt() {
return valUnt;
}
public FatturaContoDepositoRowDTO setValUnt(BigDecimal valUnt) {
this.valUnt = valUnt;
return this;
}
public String getUntMis() {
return untMis;
}
public FatturaContoDepositoRowDTO setUntMis(String untMis) {
this.untMis = untMis;
return this;
}
public BigDecimal getSconto1() {
return sconto1;
}
public FatturaContoDepositoRowDTO setSconto1(BigDecimal sconto1) {
this.sconto1 = sconto1;
return this;
}
public BigDecimal getSconto2() {
return sconto2;
}
public FatturaContoDepositoRowDTO setSconto2(BigDecimal sconto2) {
this.sconto2 = sconto2;
return this;
}
public BigDecimal getSconto3() {
return sconto3;
}
public FatturaContoDepositoRowDTO setSconto3(BigDecimal sconto3) {
this.sconto3 = sconto3;
return this;
}
public BigDecimal getSconto4() {
return sconto4;
}
public FatturaContoDepositoRowDTO setSconto4(BigDecimal sconto4) {
this.sconto4 = sconto4;
return this;
}
}

View File

@@ -1,21 +1,27 @@
package it.integry.ems.product.service;
import com.annimon.stream.Stream;
import it.integry.ems.product.dto.FatturaContoDepositoDTO;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.service.MailService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.db.ResultSetMapper;
import it.integry.ems_model.entity.VtbOffr;
import it.integry.ems_model.entity.VtbOfft;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityBigDecimal;
import it.integry.ems_model.utility.UtilityString;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@RestController
@Scope(value = "request")
@@ -28,6 +34,8 @@ public class ContrattiDiVenditaService {
@Autowired
private MailService mailService;
@Autowired
private SetupGest setupGest;
public EntityBase save(VtbOfft vtbOfft) throws Exception {
@@ -101,4 +109,60 @@ public class ContrattiDiVenditaService {
return ret;
}
public DtbDoct fatturaContoDeposito(FatturaContoDepositoDTO dto) throws Exception {
DtbDoct fatturaContoDeposito = new DtbDoct();
String codDtip = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(),"DATI_AZIENDA","CONTO_DEPOSITO","COD_DTIP");
if (UtilityString.isNullOrEmpty(codDtip)) {
throw new Exception("Nessun tipo documento configurato per le fatture conto deposito!");
}
String codMdep = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(),"DATI_AZIENDA","CONTO_DEPOSITO","COD_MDEP");
if (UtilityString.isNullOrEmpty(codMdep)) {
throw new Exception("Nessun deposito configurato per le fatture conto deposito!");
}
VtbOfft contratto = new VtbOfft();
contratto
.setIdOfferta(dto.getIdContratto())
.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(contratto,true,multiDBTransactionManager);
List<MtbAart> articoli = dto.getArticoli().stream().map(row->{
MtbAart mtbAart = new MtbAart();
mtbAart.setCodMart(row.getCodMart())
.setOperation(OperationType.SELECT_OBJECT);
return mtbAart;
}).collect(Collectors.toList());
entityProcessor.processEntityList(articoli,multiDBTransactionManager,true);
fatturaContoDeposito.setCodAnag(contratto.getCodAnag())
.setCodVdes(contratto.getCodVdes())
.setDataDoc(new Date())
.setCodDtip(codDtip)
.setCodMdep(codMdep)
.setSerDoc(codDtip)
.getDtbDocr().addAll(dto.getArticoli().stream().map(row->{
MtbAart articolo = articoli.stream().filter(x->x.getCodMart().equalsIgnoreCase(row.getCodMart())).findFirst().orElse(null);
if (articolo == null || UtilityBigDecimal.isNullOrZero(row.getValUnt()) || UtilityBigDecimal.isNullOrZero(row.getQtaDoc())) {
return null;
}
DtbDocr dtbDocr = new DtbDocr();
dtbDocr.setCodMart(articolo.getCodMart())
.setQtaDoc(row.getQtaDoc())
.setIdContratto(contratto.getIdOfferta())
.setQtaCnf(articolo.getQtaCnf())
.setValUnt(row.getValUnt())
.setDescrizione(articolo.getDescrizione())
.setUntDoc(row.getUntMis())
.setSconto5(row.getSconto1())
.setSconto6(row.getSconto2())
.setSconto7(row.getSconto3())
.setSconto8(row.getSconto4())
.setOperation(OperationType.INSERT);
return dtbDocr;
}).filter(Objects::nonNull).collect(Collectors.toList()));
fatturaContoDeposito.setOperation(OperationType.INSERT);
entityProcessor.processEntity(fatturaContoDeposito,true,multiDBTransactionManager);
return fatturaContoDeposito;
}
}