fck

mail@pastecode.io avatar
unknown
java
2 years ago
25 kB
1
Indexable
Never
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;
    }