fck
unknown
java
3 years ago
25 kB
9
Indexable
public TImportArticolo timportArticoloSalva(userInfo ui,Salvatore em,TImportArticolo input) throws Exception
{
{
/*START_GEN_CODE:nqZ4201222Rn40:-13510221*/
boolean toSave = true;
String msgOut = "";
if (input != null && input.getArticoliImport() != null && input.getArticoliImport().size() > 0) {
for (TRigaImportArticolo triga : input.getArticoliImport()) {
//if importa && codErrore
if (triga.getImporta() && (triga.getCodErrore() == null || triga.getCodErrore() < 1)) {
TArticolo tart = new TArticolo();
tart.setArticolo(triga.getArticolo());
if (triga.getPrezzoAcquisto() != null) {
tart.setPrezzoAcquisto(triga.getPrezzoAcquisto());
}
if (triga.getPrezzoVendita() != null) {
tart.setPrezzoVendita(triga.getPrezzoVendita());
}
tart.getArticolo().setComponenti(new Vector());
if (tart.getArticolo().getGruppo() == null) {
tart.getArticolo().setGruppo(new GruppoMerceologico());
}
if (tart.getArticolo().getIva() == null) {
Long idAz = LocalSecurity.getUserAziendaId(ui);
Azienda az = em.find(Azienda.class, idAz);
if (az.getIvaBase() != null) {
tart.getArticolo().setIva(az.getIvaBase());
} else {
toSave = false;
msgOut = "Codice iva base nullo in Azienda";
}
}
Materiale m = tart.getArticolo().getMateriale();
if (m.getGestisciDistintaBase()) {
if (tart.getArticolo().getDistintaBase() == null) {
tart.getArticolo().setDistintaBase(new DistintaBase());
}
}
if (tart.getModificati() == null) {
tart.setModificati(new Vector());
}
if (!toSave) {
input.setMsgImport(msgOut);
return input;
}
MdlAnagArticoloSession mdlArticolo = new MdlAnagArticoloSession();
tart = mdlArticolo.articoloSalva(ui,em, tart);
Partita p;
//Una volta salvato l'articolo, posso passare a salvare le eventuali varianti.
if (input.getImportaVarianti() == null) {
input.setImportaVarianti(false);
}
if (input.getImportaVarianti() && m.getGestisceVarianti() && triga.getJsonVarianti() != null && triga.getJsonVarianti().length() > 0) {
UtilMagazzino.creaVariantiFromJson(ui, em, triga);
}
if (tart != null) {
triga.setColore(13434828);
} else {
triga.setColore(16724736); //Rosso
}
} else {
triga.setColore(16724736);
}
}
} else {
input.setMsgImport("Lista vuota");
}
return input;
/*STOP_GEN_CODE:nqZ4201222Rn40*/
}
}
public static void creaVariantiFromJson(userInfo ui, Salvatore em, TRigaImportArticolo triga) throws Exception {
if (triga != null && triga.getJsonVarianti() != null && triga.getJsonVarianti().length() > 0) {
MdlAnagListiniSession mdlListini = new MdlAnagListiniSession();
MdlAnagraficaMaterialeSession mdlMateriale = new MdlAnagraficaMaterialeSession();
JSONArray variantiJson = new JSONArray(triga.getJsonVarianti());
JSONObject patternVJson = null;
MdlGestioneArticoloSession mdl = new MdlGestioneArticoloSession();
if (triga.getJsonPatternVarianti() != null && triga.getJsonPatternVarianti().length() > 0) {
patternVJson = new JSONObject(triga.getJsonPatternVarianti());
}
for (Iterator iterator = variantiJson.iterator(); iterator.hasNext();) {
JSONObject varianteJs = (JSONObject) iterator.next();
String valExtra1 = "";
String valExtra2 = "";
String codVariante = "-1@";
String descrizioneVar="";
if (varianteJs.has("valExtra1")) {
valExtra1 = varianteJs.getString("valExtra1").trim();
}
if (varianteJs.has("valExtra2")) {
valExtra2 = varianteJs.getString("valExtra2").trim();
}
if(varianteJs.has("codVariante")){
codVariante = varianteJs.getString("codVariante").trim();
}
if(varianteJs.has("descrizione")){
descrizioneVar = varianteJs.getString("descrizione").trim();
}
TRicArticolo filtro = new TRicArticolo();
filtro.setArticolo(triga.getArticolo());
//OTTENGO TUTTE LE VARIANTI ASSOCIATE ALL'ARTICOLO SELEZIONATO
filtro = mdl.ricercaVariantiArticolo(ui,em, filtro);
boolean trovata = false;
//Check se la variante esiste gia'
for (Iterator<TRigaRicArticolo> it2 = filtro.getTRigaRicArticolo().iterator(); it2.hasNext();) {
TRigaRicArticolo riga = it2.next();
System.out.println(riga.getVarianteArticolo());
Iterator it1 = riga.getVarianteArticolo().getValoriExtra().iterator();
ValoreExtra ve1 = (ValoreExtra) it1.next();
ValoreExtra ve2 = (ValoreExtra) it1.next();
boolean cond1 = ve1.getSValore().trim().compareToIgnoreCase(valExtra1) == 0 && ve2.getSValore().trim().compareToIgnoreCase(valExtra2) == 0;
boolean cond2 = ve1.getSValore().trim().compareToIgnoreCase(valExtra2) == 0 && ve2.getSValore().trim().compareToIgnoreCase(valExtra1) == 0;
if (cond1 || cond2) {
System.out.println("Trovata variante!!");
trovata = true;
break;
}
}
if (!trovata) {
try {
Materiale m = mdlMateriale.materialeInizializza(ui,em, triga.getArticolo().getMateriale());
Query q = em.createQuery("Select v From VarianteArticolo v JOIN v.articolo a WHERE a.materiale.id=:id_materiale");
q.setMaxResults(1);
q.setLong("id_materiale", m.getId());
List resList = q.list();
VarianteArticolo varR = null;
if(resList!=null && resList.size()>0){
varR = (VarianteArticolo) q.list().iterator().next();
}
//Long idVarRif = 1L;
//VarianteArticolo varR = mdlListini.varianteArticoloById(ui, em,idVarRif);
Iterator itCar = m.getCaratteristiche().iterator();
Caratteristica c1 = null;
if (itCar.hasNext()) {
c1 = (Caratteristica) itCar.next();
}
Caratteristica c2 = null;
if (itCar.hasNext()) {
c2 = (Caratteristica) itCar.next();
}
VarianteArticolo vari = new VarianteArticolo(varR);
Vector<ValoreExtra> ve = new Vector<ValoreExtra>();
String car1 = "";
String car2 = "";
if (patternVJson != null) {
if (patternVJson.has("car1")) {
car1 = patternVJson.getString("car1") + "";
}
if (patternVJson.has("car2")) {
car2 = patternVJson.getString("car2") + "";
}
}
if (c1 != null) {
ValoreExtra v1 = new ValoreExtra();
v1.setAz(triga.getArticolo().getAz());
v1.setCaratteristica(c1);
if (c1 != null && c1.getDescrizione().toLowerCase().contains(car1.toLowerCase())) {
v1.setSValore(valExtra1.trim().toUpperCase());
} else if (c1 != null && c1.getDescrizione().toLowerCase().contains(car2.toLowerCase())) {
v1.setSValore(valExtra2.trim().toUpperCase());
} else {
triga.setMsgImport(triga.getMsgImport() + " Carat 1 not Match ");
triga.setColore(16777113);//Giallo
}
v1.setVarianteArticolo(vari);
ve.add(v1);
}
if (c2 != null) {
ValoreExtra v2 = new ValoreExtra();
v2.setAz(varR.getAz());
v2.setCaratteristica(c2);
if (c2 != null && c2.getDescrizione().toLowerCase().contains(car2.toLowerCase())) {
v2.setSValore(valExtra2.trim().toUpperCase());
} else if (c2 != null && c2.getDescrizione().toLowerCase().contains(car1.toLowerCase())) {
v2.setSValore(valExtra1.trim().toUpperCase());
} else {
triga.setMsgImport(triga.getMsgImport() + " Carat 2 not Match ");
triga.setColore(16777113);//Giallo
}
v2.setVarianteArticolo(vari);
ve.add(v2);
}
vari.setValoriExtra(ve);
vari.setArticolo(triga.getArticolo());
vari.setCodice(codVariante);
vari.setDescrizione(descrizioneVar);
vari.setBarcode(vari.getCodice());
vari.setDescrizioneComp(valExtra1.trim() + " " + valExtra2.trim());
vari.setEsistenza(new Esistenza());
vari.setScortaMinima(0.0);
vari.setSegueListinoArticolo(true);
TVarianteArticolo tv = new TVarianteArticolo();
tv.setVarianteArticolo(vari);
tv.setListini(new Vector<TVoceListino>());
tv.setModificati(new Vector<TVoceListino>());
tv.setPrezzoAcquisto(0.0);
tv.setPrezzoVendita(0.0);
// Collocazione cl = new Collocazione();
// cl.setId(varR.get);
// tv.setCollocazione(cl);
MdlAnagVariantiSession mdlVarianti = new MdlAnagVariantiSession();
//tv = mdlVarianti.varianteArticoloSalva(ui,em, tv);
tv = mdlVarianti.varianteArticoloSalva(ui, tv.detach(tv));
vari.setId(tv.getVarianteArticolo().getId());
} catch (Exception ex) {
Logger.getLogger(UtilMagazzino.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
public static TImportArticolo importArticoliFromJson(userInfo ui, Salvatore em, TImportArticolo input) throws RemoteException {
Boolean importaVarianti = input.getImportaVarianti() != null ? input.getImportaVarianti() : false;
Collection<TRigaImportArticolo> listOut = new Vector();
input.setArticoliImport(new Vector());
MdlAnagArticoloSession mdl = new MdlAnagArticoloSession();
String msgOut = "";
if (input.getJsonData() != null && !input.getJsonData().isEmpty()) {
JSONObject jsonImport = new JSONObject(input.getJsonData());
//Per import ed export di json usiamo il pattern {tipo , objects[]}
if (jsonImport.get("tipo") != null && jsonImport.getString("tipo").equalsIgnoreCase("articolo")) {
Collection<UnitaMisura> arrUm = mdl.unitamFindAll(ui);
JSONArray jsonList = jsonImport.getJSONArray("objects") != null && jsonImport.getJSONArray("objects").length() > 0 ? jsonImport.getJSONArray("objects") : null;
if (jsonList != null) {
HashMap<String, JSONArray> hmMateriale = new HashMap<>();
//Mi creo un hashMap con chiave MATERIALE.
for (Iterator iterator = jsonList.iterator(); iterator.hasNext();) {
JSONObject elem = (JSONObject) iterator.next();
if (elem != null) {
String codMateriale = elem.get("codMateriale") != null && !elem.getString("codMateriale").isEmpty() ? elem.getString("codMateriale") : "";
if (hmMateriale.containsKey(codMateriale)) {
JSONArray arr = hmMateriale.get(codMateriale);
arr.put(elem);
} else {
hmMateriale.put(codMateriale, new JSONArray().put(elem));
}
}
}
for (Map.Entry<String, JSONArray> entry : hmMateriale.entrySet()) {
String codMateriale = entry.getKey();
JSONArray jsonArticoli = entry.getValue();
Materiale materiale = mdl.getMaterialeByCod(ui, new TString(codMateriale));
for (Iterator iterator = jsonArticoli.iterator(); iterator.hasNext();) {
JSONObject jsonArticolo = (JSONObject) iterator.next();
TRigaImportArticolo triga = new TRigaImportArticolo();
triga.setArticolo(new Articolo());
triga.setMsgImport("");
Articolo art = triga.getArticolo();
art.setNome(jsonArticolo.get("nome") != null && !jsonArticolo.getString("nome").isEmpty() ? jsonArticolo.getString("nome") : "NONAME");
String codArt = jsonArticolo.has("codice") && jsonArticolo.getString("codice") != null ? jsonArticolo.getString("codice") + "" : null;
if(codArt.length()>20)
codArt = codArt.substring(0,20);
art.setCodice(codArt);
Articolo alreadyExist = (Articolo) em.createQuery("Select a From Articolo a where a.codice = :codArticolo").setString("codArticolo", codArt).uniqueResult();
//Codice non esistente
if (alreadyExist == null) {
if (materiale != null) {
triga.setImporta(true);
art.setMateriale(materiale);
if (materiale.getGruppo() != null) {
art.setGruppo(materiale.getGruppo());
}
// else{
// art.setGruppo(new GruppoMerceologico());
// }
if(jsonArticolo.has("codiceFornitore"))
art.setCodiceFornitore(jsonArticolo.getString("codiceFornitore"));
if(jsonArticolo.has("nomeFornitore"))
art.setNomeFornitore(jsonArticolo.getString("nomeFornitore"));
art.setCodiceDoganale(jsonArticolo.has("codDoganale") && !jsonArticolo.getString("codDoganale").isEmpty() ? jsonArticolo.getString("codDoganale") : "");
art.setOrigine(jsonArticolo.has("origine") && !jsonArticolo.getString("origine").isEmpty() ? jsonArticolo.getString("origine") : "");
art.setBarcode(jsonArticolo.has("barcode") && !jsonArticolo.getString("barcode").isEmpty() ? jsonArticolo.getString("barcode") : "");
if(art.getBarcode().length()>20)
art.setBarcode(art.getBarcode().substring(0,20));
art.setNote(jsonArticolo.has("note") ? jsonArticolo.getString("note") + "" : "");
art.setComposizione(jsonArticolo.has("composizione") ? jsonArticolo.getString("composizione")+"" : "");
art.setComposizioneDet(jsonArticolo.has("composizioneDet") ? jsonArticolo.getString("composizioneDet")+"" : "");
triga.setPrezzoAcquisto(jsonArticolo.has("prezzoAcquisto") && jsonArticolo.get("prezzoAcquisto") != null ? jsonArticolo.getDouble("prezzoAcquisto") : 0.0);
triga.setPrezzoVendita(jsonArticolo.has("prezzoVendita") && jsonArticolo.get("prezzoVendita") != null ? jsonArticolo.getDouble("prezzoVendita") : 0.0);
//Setto l'unita misura.
String codUm = jsonArticolo.has("codUnitaMisura") && jsonArticolo.get("codUnitaMisura") != null ? jsonArticolo.getString("codUnitaMisura") + "" : null;
if (codUm != null && !"".equals(codUm)) {
for (UnitaMisura unitaMisura : arrUm) {
if (unitaMisura.getCodice().equals(codUm)) {
art.setUnitaMisura(unitaMisura);
break;
}
}
if(art.getUnitaMisura()==null)
if(materiale.getUnitaMisura()!=null)
art.setUnitaMisura(materiale.getUnitaMisura());
else{
triga.setImporta(false);
triga.setMsgImport(triga.getMsgImport() +" Unita misura Def. non presente in materiale ");
triga.setColore(16724736); //Rosso
triga.setCodErrore(100);
continue;
}
}
//Faccio la find sulla stagione, se c'è la setto. Non ho trovato alcuna find sulle stagioni by codice.
String codStagione = jsonArticolo.get("codStagione") != null ? jsonArticolo.getString("codStagione") + "" : null;
if (codStagione != null && !"".equals(codStagione)) {
Stagione stag = (Stagione) em.createQuery("Select s From Stagione s Where s.codice =:codStag").setParameter("codStag", codStagione).setMaxResults(1).uniqueResult();
if (stag != null) {
art.setStagione(stag);
} else {
triga.setMsgImport(triga.getMsgImport() + "- Stagione Not Match ");
triga.setColore(16777062); //Giallo
}
}
String codLinea = jsonArticolo.get("codLinea") != null ? jsonArticolo.getString("codLinea") + "" : null;
if (codLinea != null && !"".equals(codLinea)) {
Linea linea = (Linea) em.createQuery("Select l From Linea l Where l.codice =:codLin").setString("codLin", codLinea).setMaxResults(1).uniqueResult();
if (linea != null) {
art.setLinea(linea);
} else {
triga.setMsgImport(triga.getMsgImport() + "- Linea Not Match ");
triga.setColore(16777062); //Giallo
}
}
if (jsonArticolo.has("varianti")) {
//Importo le varianti
if (jsonArticolo.has("codSchemaTaglie") && jsonArticolo.getString("codSchemaTaglie").length() > 0) {
String codSchema = jsonArticolo.getString("codSchemaTaglie");
PoliticaQuantitaExtra schema = (PoliticaQuantitaExtra) em.createQuery("Select p From PoliticaQuantitaExtra p where p.codice =:cod").setString("cod", codSchema).setMaxResults(1).uniqueResult();
if (schema != null) {
art.setSchema(schema);
}
}
JSONArray variantiJson = jsonArticolo.getJSONArray("varianti");
triga.setJsonVarianti(variantiJson.toString());
//Definisco un pattern, cioe qual'e la caratteristica 1, e quale la 2 in modo tale da fare un doppio check
//Al fine di impostare in modo giusto le varianti : colore in colore, disegno in disegno, taglia in taglia.
JSONObject patternV = new JSONObject();
if (jsonArticolo.has("car1")) {
patternV.put("car1", jsonArticolo.getString("car1"));
}
if (jsonArticolo.has("car2")) {
patternV.put("car2", jsonArticolo.getString("car2"));
}
triga.setJsonPatternVarianti(patternV.toString());
}
} else {
triga.setImporta(false);
triga.setMsgImport("Materiale Not Find : " + codMateriale);
triga.setColore(16724736); //Rosso
triga.setCodErrore(100);
//Materiale non esistente , quindi passa al prossimo articolo
}
} else {
//Codice gia' presente
triga.setMsgImport(triga.getMsgImport() + "\t Codice gia' presente " + codArt);
triga.setColore(16724736); //Rosso
triga.setCodErrore(100);
triga.setImporta(false);
}
input.getArticoliImport().add(triga);
}
}
} else {
msgOut = msgOut + "\t Lista articoli vuota";
}
} else {
msgOut = msgOut + " \t Tipo json non valido";
}
} else {
msgOut = msgOut + " \t Json vuoto";
}
input.setMsgImport(msgOut);
return input;
}Editor is loading...