import cz.ortex.model.O6r; import cz.ortex.gui.o0.adresar.O6rWrapper; import cz.ortex.gui.o0.browse.BrowseDialogWindow; import java.util.logging.Level; import java.util.logging.Logger; public void main() { try { O6rWrapper o6rWrapper = new O6rWrapper(); BrowseDialogWindow nabidkaO6r = null; nabidkaO6r = o6rWrapper.getVyberWindow(null); O6r o6r = new O6r(); o6r.setDksSp("CS"); nabidkaO6r.getBrowseParams().setEntity(o6r); // aby se nastavilo na řeč již vyplněnou nabidkaO6r.setVisible(true); } catch (Exception ex) { Logger.getLogger(MakroO6r.class.getName()).log(Level.SEVERE, null, ex); } }
Je zde řešeno: - Zjištění počtu dokumentů - Když je jeden – zobrazení - Když je více – zobrazení okna se seznamem - Když není – tak nic
import java.util.logging.Level; import java.util.logging.Logger; import cz.ortex.util.o0.OEntityUtil; import cz.ortex.util.o0.O0StringUtil; import cz.ortex.util.o0.AppContext; import cz.ortex.gui.o0.Tiskac; import cz.ortex.util.o0.O0JasperParam; public void tisk(Object currentRecord, Object dotahovane) { Tiskac tiskac = new Tiskac("Tisk likvid.litku", true, null); O0JasperParam o0JasperParam = new O0JasperParam(); o0JasperParam.setSestava("/cz/ortex/jasper/reports/PpfHllik.jrxml"); // o0JasperParam.setPouzUzivSestIfExist(true); o0JasperParam.setBrowseCurrentRecord(currentRecord); tiskac.view(o0JasperParam); }
import java.util.logging.Level; import java.util.logging.Logger; import cz.ortex.util.o0.OEntityUtil; import cz.ortex.util.o0.O0StringUtil; import cz.ortex.components.OptionPane; import cz.ortex.util.o0.AppContext; import cz.ortex.apidao.o0.eldoc.OeldokDao; import cz.ortex.apidao.o0.workflow.OemailParams; public void sendMail(Object currentRecord, Object dotahovane) { String sablona = "oJRViewerINF"; String prijemce = "tomas.myslivec@ortex.cz"; OemailParams oemailParams = new OemailParams(); oemailParams.setSablonaMailu(sablona); oemailParams.setEmailAdresa(prijemce); OeldokDao oeldokDao = (OeldokDao) AppContext.getDaoService(OeldokDao.NAME); if (oeldokDao != null) { oemailParams = oeldokDao.posliDokumentMailem(oemailParams, currentRecord); } if (oemailParams.isOk()) { OptionPane.createInfoDialog("", "Probehlo odeslami mailu."); } else { OptionPane.createErrorDialog("", "Mail nebyl odeslan!"); } }
A makro:
import cz.ortex.model.Ofwk; import cz.ortex.model.Ofwp; import cz.ortex.util.o0.OEntityUtil; import cz.ortex.util.o0.O0StringUtil; Object getCellValue(Ofwk entity, Object dotahovane) { //zde vypiste kod if (entity != null){ if (O0StringUtil.notBlank(entity.getOfwp().getIko())) { return "oeldok16.png:Dokument je připojen"; } else { return ""; } } else { return ""; } }
Kliknutí na ikonu Groovy makra + Práce se záznamem:
import cz.ortex.groovy.GroovyBrowsePar; import cz.ortex.util.o0.O0Data; import cz.ortex.util.o0.O0Session; import java.util.logging.Logger; import cz.ortex.model.Ofwk; import cz.ortex.model.Ofwp; import cz.ortex.gui.o0.browse.BrowseWindow; import cz.ortex.gui.o0.eldoc.OeldokWrapper; import cz.ortex.util.o0.O0StringUtil; GroovyBrowsePar editUvod(Object entity, O0Data dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod } GroovyBrowsePar validate(Object entity, O0Data dotahovane, String fieldName, Object fieldValue, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod } GroovyBrowsePar noEditDetail(Object entity, O0Data dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod } GroovyBrowsePar kontrolaVeta(Object entity, O0Data dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod } String getPgmVars(Object entity, Object dotahovane) { //zde vypiste kod } GroovyBrowsePar akceIkonaBrowse(Ofwk entity, O0Data dotahovane, String fieldName, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod if ("oeldok16.png".equals(fieldName)) { if ((entity != null) && (entity.getOfwp() != null) && (O0StringUtil.notBlank(entity.getOfwp().getIko()))) { try { BrowseWindow window1 = new OeldokWrapper(entity.getOfwp().getIko(), Ofwp.class, entity.getOfwp().getIdpk()); window1.setVisible(true); } catch (Exception ex) { Logger.getLogger(OfwkPanel.class.getName()).log(Level.SEVERE, null, ex); } } } }
S ošetřením počtu dokumentů
GroovyBrowsePar akceIkonaBrowse(Ofwk entity, O0Data dotahovane, String fieldName, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod Integer pocet = 0; if ("oeldok16.png".equals(fieldName)) { if ((entity != null) && (entity.getOfwp() != null) && (O0StringUtil.notBlank(entity.getOfwp().getIko()))) { try { pocet = OeldokWrapper.podejPocetDokumentu(null,entity.getOfwp().getIko()); if (pocet > 0) { if (pocet == 1) { OeldokWrapper oeldokWrapper = new OeldokWrapper(); Oeldok oeldok = oeldokWrapper.podejOeldokIko(null,entity.getOfwp().getIko()); // if (oeldok != null) { oeldokWrapper.zobrazitDokument(oeldok); // } } else { BrowseWindow window1 = new OeldokWrapper(entity.getOfwp().getIko(), Ofwp.class, entity.getOfwp().getIdpk()).getDialogWindow(); window1.setVisible(true); } } } catch (Exception ex) { Logger.getLogger(OeldokWrapper.class.getName()).log(Level.SEVERE, null, ex); } } } }
import cz.ortex.groovy.GroovyBrowsePar; import cz.ortex.util.o0.O0Data; import cz.ortex.util.o0.O0Session; import java.util.logging.Logger; import cz.orcz.orfmodel.CPolozka; import cz.ortex.gui.o0.browse.BrowseWindow; import cz.ortex.gui.o0.eldoc.OeldokWrapper; import cz.ortex.util.o0.O0StringUtil; import cz.ortex.gui.o0.poznamky.O0pozWrapper; GroovyBrowsePar akceIkonaBrowse(CPolozka entity, O0Data dotahovane, String fieldName, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod if ("oeldok16.png".equals(fieldName)) { if ((entity != null) && (O0StringUtil.notBlank(entity.getIko()))) { try { BrowseWindow windowl = new OeldokWrapper(entity.getIko(), CPolozka.class, entity.getIdpk()).getDialogWindow(); windowl.setVisible(true); } catch (Exception ex) { Logger.getLogger(OeldokWrapper.class.getName()).log(Level.SEVERE, null, ex); } } } if ("o0poz16.png".equals(fieldName)) { if ((entity != null) && (O0StringUtil.notBlank(entity.getIdpk()))) { try { O0pozWrapper o0pozWrapper = new O0pozWrapper(); o0pozWrapper.getBrowseParams().setEntity(o0poz); o0pozWrapper.setUloha(O0pozWrapper.OBJEKT); BrowseWindow poznamky; poznamky = o0pozWrapper.getWindow(null); GlobalGui.getDesktop().add(poznamky); poznamky.setVisible(true); } catch (Exception ex) { Logger.getLogger(O0pozWrapper.class.getName()).log(Level.SEVERE, null, ex); } } } }
Konkrétní příklad použití v Katalogu položek. Do browsu je třeba vložit nejprve ikony, které obsahují příslušné png:
import cz.ortex.groovy.GroovyBrowsePar; import cz.ortex.util.o0.O0Data; import cz.ortex.util.o0.O0Session; import java.util.logging.Logger; import java.util.logging.Level; import cz.orcz.orfmodel.CPolozka; import cz.ortex.model.Oeldok; import cz.ortex.model.O0poz; import cz.orcz.orfmodel.CDoprovodneTexty; import cz.ortex.gui.o0.browse.BrowseWindow; import cz.ortex.gui.o0.eldoc.OeldokWrapper; import cz.ortex.util.o0.O0StringUtil; import cz.orcz.gui.lc.CDoprovodneTextyWrapper; import cz.ortex.gui.o0.poznamky.O0pozWrapper; import cz.ortex.util.o0.StringParams; import cz.ortex.gui.o0.OPocitadlo; import cz.ortex.gui.o0.OExec; import cz.ortex.components.OptionPane; GroovyBrowsePar editUvod(Object entity, O0Data dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod } GroovyBrowsePar validate(Object entity, O0Data dotahovane, String fieldName, Object fieldValue, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod } GroovyBrowsePar noEditDetail(Object entity, O0Data dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod } GroovyBrowsePar kontrolaVeta(Object entity, O0Data dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod } String getPgmVars(Object entity, Object dotahovane) { //zde vypiste kod } //GroovyBrowsePar akceIkonaBrowse(Object entity, O0Data dotahovane, String fieldName, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod GroovyBrowsePar akceIkonaBrowse(CPolozka entity, O0Data dotahovane, String fieldName, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod //klik na ikonu el. dokumentů v browse if ("oeldok16.png".equals(fieldName)) { Integer pocet = 0; if ((entity != null) && (O0StringUtil.notBlank(entity.getIko()))) { try { OPocitadlo.createPocitadlo("Čekejte prosím", "Zjišťuji počet připojených dokumentů…", OPocitadlo.POCITADLO_VRTITKO, OPocitadlo.BUTTON_NENI, new OExec() {@Override public Object execute() throws Exception { //tohle (níže) trochu trvá, proto zobrazíme vrtítko (výše) pocet = OeldokWrapper.podejPocetDokumentu(null,entity.getIko()); }}); //konec OPocitadla if (pocet > 0) { if (pocet == 1) { OPocitadlo.createPocitadlo("Čekejte prosím", "Připravuji zobrazení připojeného dokumentu…", OPocitadlo.POCITADLO_VRTITKO, OPocitadlo.BUTTON_NENI, new OExec() {@Override public Object execute() throws Exception { //tohle (níže) trochu trvá, proto zobrazíme vrtítko (výše) OeldokWrapper oeldokWrapper = new OeldokWrapper(); Oeldok oeldok = oeldokWrapper.podejOeldokIko(null,entity.getIko()); oeldokWrapper.zobrazitDokument(oeldok); }}); //konec OPocitadla } else { BrowseWindow window1 = new OeldokWrapper(entity.getIko(), CPolozka.class, entity.getIdpk()).getDialogWindow(); window1.setVisible(true); } } } catch (Exception ex) { Logger.getLogger(OeldokWrapper.class.getName()).log(Level.SEVERE, null, ex); } } return groovyBrowsePar; } //klik na ikonu poznámek v browse if ("o0poz16.png".equals(fieldName)) { if ((entity != null) ) { try { Character typ = 'K'; O0poz o0poz = new O0poz(); BrowseWindow poznamky; OPocitadlo.createPocitadlo("Čekejte prosím", "Připravuji zobrazení poznámek k položce…", OPocitadlo.POCITADLO_VRTITKO, OPocitadlo.BUTTON_NENI, new OExec() {@Override public Object execute() throws Exception { //tohle (níže) trochu trvá, proto zobrazíme vrtítko (výše) o0poz.setPrizTyp(typ); o0poz.setObjName("CPolozka"); //o0poz.setCisIdpk(null); o0poz.setCisKlic(entity.getIna()); o0poz.setPoradi(0); O0pozWrapper o0pozWrapper = new O0pozWrapper(); o0pozWrapper.getBrowseParams().setEntity(o0poz); String wrapperParams = ""; wrapperParams = StringParams.addParamValue(wrapperParams, "predanyTitulek", "Poznámka k položce "+entity.getIna()); o0pozWrapper.setWrapperParams(wrapperParams); o0pozWrapper.setUloha(O0pozWrapper.KLIC); poznamky = o0pozWrapper.getWindow(null); }}); //konec OPocitadla poznamky.setVisible(true); } catch (Exception ex) { Logger.getLogger(O0pozWrapper.class.getName()).log(Level.SEVERE, null, ex); } } return groovyBrowsePar; } //klik na ikonu doprovodného textu v browse if ("oretezp16.png".equals(fieldName)) { if ((entity != null) ) { try { CDoprovodneTexty cDoprovodneTexty = new CDoprovodneTexty(); BrowseWindow texty; OPocitadlo.createPocitadlo("Čekejte prosím", "Připravuji zobrazení doprovodných textů k položce…", OPocitadlo.POCITADLO_VRTITKO, OPocitadlo.BUTTON_NENI, new OExec() {@Override public Object execute() throws Exception { //tohle (níže) trochu trvá, proto zobrazíme vrtítko (výše) CDoprovodneTextyWrapper cDoprovodneTextyWrapper = new CDoprovodneTextyWrapper(); cDoprovodneTextyWrapper.getBrowseParams().setEntity(cDoprovodneTexty); String wrapperParamsCDT = ""; wrapperParamsCDT = StringParams.addParamValue(wrapperParamsCDT, "title", "Doprovodný text k položce "+entity.getIna()); wrapperParamsCDT = StringParams.addParamValue(wrapperParamsCDT, "filter", "cisIdpk.eq("+entity.getIdpk().toString().trim()+") and nazevNt.eq('TS')"); cDoprovodneTextyWrapper.setWrapperParams(wrapperParamsCDT); texty = cDoprovodneTextyWrapper.getWindow(null); }}); //konec OPocitadla texty.setVisible(true); } catch (Exception ex) { Logger.getLogger(CDoprovodneTextyWrapper.class.getName()).log(Level.SEVERE, null, ex); } } return groovyBrowsePar; } }
import cz.ortex.model.O6a; import cz.ortex.groovy.GroovyBrowsePar; import cz.ortex.util.o0.O0Session; import cz.ortex.gui.o0.browse.BrowsePanel; import javax.swing.JOptionPane; import cz.ortex.components.OptionPane; GroovyBrowsePar editUvod(O6a entity, Object dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, BrowsePanel browsePanel) { //zde vypiste kod pisu:) System.out.println(entity.getDkaNr()); entity.setDkaName1("xxx"); //groovyBrowsePar = browsePanel.callServerGroovy("grooO6a", "editUvod", groovyBrowsePar); entity.setDkaName1("yyy"); return groovyBrowsePar; } GroovyBrowsePar noEditDetail(O6a entity, Object dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, BrowsePanel browsePanel) { groovyBrowsePar = browsePanel.callServerGroovy("grooO6a", "noEditDetail", groovyBrowsePar); return groovyBrowsePar; } GroovyBrowsePar kontrolaVeta(O6a entity, Object dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, BrowsePanel browsePanel) { String fieldName = "dkaEMail"; Object fieldValue = entity.getDkaEMail(); groovyBrowsePar = validate(entity, dotahovane, fieldName, fieldValue, groovyBrowsePar, o0session, browsePanel); return groovyBrowsePar; } GroovyBrowsePar validate(O6a entity, Object dotahovane, String fieldName, Object fieldValue, GroovyBrowsePar groovyBrowsePar, O0Session o0session, BrowsePanel browsePanel) { if ("dkaEMail".equals(fieldName)) { groovyBrowsePar = browsePanel.callServerGroovy("grooO6a", "kontrolaEmail", groovyBrowsePar); System.out.println("result = " + groovyBrowsePar.getResult()); if (groovyBrowsePar.getResult() == false) { if (OptionPane.createYesNoDialog(null, "Špatný formát mailu, povolit ?", JOptionPane.WARNING_MESSAGE) == 1) { groovyBrowsePar.setFocusName(fieldName); } else { entity.setDkaHomePage(fieldValue.toString()); } } } return groovyBrowsePar; }
Kontrolní makro na serveru:
import cz.ortex.groovy.GroovyBrowsePar; import cz.ortex.model.O6a; import cz.ortex.apilogic.o0.adresar.O6aData; import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.O0StringUtil; import cz.ortex.util.o0.BrowseEditState; import java.util.HashMap; GroovyBrowsePar kontrolaEmail(O6a entity, O6aData dotahovane, O0Session o0Session, GroovyBrowsePar groovyBrowsePar) { if (entity.getDkaEMail().contains("@")) { groovyBrowsePar.setResult(true); if (O0StringUtil.isBlank(entity.getDkaHomePage())) { entity.setDkaHomePage("www." + entity.getDkaEMail().substring(entity.getDkaEMail().indexOf("@") + 1)); } } else { groovyBrowsePar.setResult(false); } return groovyBrowsePar; } GroovyBrowsePar noEditDetail(O6a entity, O6aData dotahovane, O0Session o0Session, GroovyBrowsePar groovyBrowsePar) { if (BrowseEditState.isProhlizeni(groovyBrowsePar.getEditState())) { groovyBrowsePar.setVar(1, 'P' as char); } else { groovyBrowsePar.setVar(1, ' ' as char); } HashMap<String, String> componentValues = new HashMap(); componentValues.put("poznamka", "text poznamky z groovy makra"); groovyBrowsePar.setComponentValues(componentValues); return groovyBrowsePar; } GroovyBrowsePar editUvod(O6a entity, O6aData dotahovane, O0Session o0Session, GroovyBrowsePar groovyBrowsePar) { groovyBrowsePar.setVar(1, ' ' as char); if (BrowseEditState.isZalozeni(groovyBrowsePar.getEditState())) { entity.setDkaName2("nova"); } return groovyBrowsePar; }
Řešení pomocí browsePanelu a voláním metody callServerGroovy. Tato metoda vrací object GroovyBrowsePar – v něm lze předat např. text zprávy.
Do pohledu – Práce se záznamem - vložíme následující kód
import cz.ortex.groovy.GroovyBrowsePar; import cz.ortex.model.O6a; import cz.ortex.util.o0.O0Session; import cz.ortex.gui.o0.browse.BrowsePanel; import cz.ortex.components.OptionPane; import javax.swing.JOptionPane; // Toto je vzor makra pro pohled - práce se záznamem - metoda validate // Nelze volat samostatně. // V makru je volána metoda callServerGroovy v aktuálním browsePanel GroovyBrowsePar validate(O6a entity, Object dotahovane, String fieldName, Object fieldValue, GroovyBrowsePar groovyBrowsePar, O0Session o0session, BrowsePanel browsePanel) { if ("dkaEMail".equals(fieldName) { groovyBrowsePar = browsePanel.callServerGroovy("vzorEmailO6aTestSrv", "kontrolaEmail", groovyBrowsePar); if (groovyBrowsePar.getResult() == true) { if (OptionPane.createYesNoDialog(null, "Špatný formát mailu, povolit ?", JOptionPane.WARNING_MESSAGE) == 1) { groovyBrowsePar.setFocusName(fieldName); } else { entity.setDkaHomePage(fieldValue.toString()); } } } }
Na straně serveru si připravíme volané makro
import cz.ortex.groovy.GroovyBrowsePar; import cz.ortex.model.O6a; import cz.ortex.apilogic.o0.adresar.O6aData; import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.O0StringUtil; // Toto je vzor serverového makra volané z makra pro pohled - práce se záznamem - metoda validate // Makro vrací objekt GroovyBrowsePar //Makru se předává parametr groovyBrowsePar, ostatní parametry v této metodě jsou povinné - doplní je "browsePanel" - entitu, dotahované a o0Session // groovyBrowsePar = browsePanel.callServerGroovy("vzorEmailO6aTestSrv", "kontrolaEmail", groovyBrowsePar); GroovyBrowsePar kontrolaEmail(O6a entity, O6aData dotahovane, O0Session o0Session, GroovyBrowsePar groovyBrowsePar) { if (entity.getDkaEMail().contains("@")) { groovyBrowsePar.setResult(true); if (O0StringUtil.isBlank(entity.getDkaHomePage())) { //nastavení webové stránky dle domény z e-mailu entity.setDkaHomePage("www." + entity.getDkaEMail().substring(entity.getDkaEMail().indexOf("@") + 1)); } } else { groovyBrowsePar.setResult(false); } return groovyBrowsePar; }
Řešení pomocí Dao a voláním metody callGroovy. Tato metoda vrací obecně jakýkoli objekt, který je dále zpracován. Zde v příkladu je použito O6aDao a vracený objekt je osoba třídy Osoby.
Do pohledu – Práce se záznamem - vložíme následující kód
import cz.ortex.groovy.GroovyBrowsePar; import cz.ortex.util.o0.O0Data; import cz.ortex.util.o0.O0Session; import cz.ortex.model.O6a; import cz.ortex.model.Osoby; import cz.ortex.gui.o0.browse.BrowsePanel; import cz.ortex.apidao.o0.adresar.O6aDao; import cz.ortex.util.o0.AppContext; // Toto je vzor makra pro pohled - práce se záznamem - metoda validate // Nelze volat samostatně. // V makru je volána metoda callGroovy v Dao - je zde použito O6aDao //Makru se předávají parametry v poli Objects[] - jejich počet a typy musí být stejné jako je ve volané metodě "kontrolaEmail" v makru na serveru "vzorEmailO6aOsobySrv" // Osoby kontrolaEmail(O6a entity, Object dotahovane, String fieldName, Object fieldValue, GroovyBrowsePar groovyBrowsePar, O0Session o0Session) { GroovyBrowsePar validate(O6a entity, Object dotahovane, String fieldName, Object fieldValue, GroovyBrowsePar groovyBrowsePar, O0Session o0session, BrowsePanel browsePanel) { if ("dkaEMail".equals(fieldName)) { O6aDao o6aDao = (O6aDao) AppContext.getDaoService("o6aDao"); if (o6aDao != null) { Object[] grooObject = new Object[6]; grooObject[0] = entity; grooObject[1] = dotahovane; grooObject[2] = fieldName; grooObject[3] = fieldValue; grooObject[4] = groovyBrowsePar; grooObject[5] = o0session; Osoby osoba = o6aDao.callGroovy("vzorEmailO6aOsobySrv", "kontrolaEmail", grooObject); if (osoba != null) { if (osoba.getJmPrijm() != null) { entity.setDkaHomePage(osoba.getJmPrijm()); } } } } return groovyBrowsePar; }
Na straně serveru si připravíme volané makro
import cz.ortex.groovy.GroovyBrowsePar; import cz.ortex.model.O6a; import cz.ortex.model.Osoby; import cz.ortex.apilogic.o0.adresar.O6aData; import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.O0StringUtil; import cz.ortex.util.o0.OEntityUtil; // Toto je vzor serverového makra volané z makra pro pohled - práce se záznamem - metoda validate // Makro vrací objekt Osoba //Makru se předávají parametry v poli Objects[] - jejich počet a typy musí být stejné jako je ve této metodě // Object[] grooObject = new Object[6]; // grooObject[0] = entity; // grooObject[1] = dotahovane; // grooObject[2] = fieldName; // grooObject[3] = fieldValue; // grooObject[4] = groovyBrowsePar; // grooObject[5] = o0session; // Osoby osoba = o6aDao.callGroovy("vzorEmailO6aOsobySrv", "kontrolaEmail", grooObject); Osoby kontrolaEmail(O6a entity, Object dotahovane, String fieldName, Object fieldValue, GroovyBrowsePar groovyBrowsePar, O0Session o0Session) { if (entity.getDkaEMail().contains("@")) { Integer oscis = o0Session.getUserNumber(); Osoby osoba = (Osoby) OEntityUtil.getRecordByParam(Osoby.class.getCanonicalName(), "oscis", oscis); return osoba; } else { return null; } }
import cz.ortex.groovy.GroovyBrowsePar; import cz.ortex.util.o0.O0Data; import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import cz.ortex.util.o0.AppContext; import cz.ortex.util.o0.O0StringUtil; import cz.ortex.model.Nq10; import cz.ortex.model.O6a; import cz.ortex.model.Osoby; import cz.ortex.model.Ohkon; import cz.orcz.orfmodel.Dkx; import cz.ortex.apidao.o0.adresar.O6aDao; GroovyBrowsePar editUvod(Object entity, O0Data dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod } GroovyBrowsePar validate(Object entity, O0Data dotahovane, String fieldName, Object fieldValue, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod if (entity != null) { if (entity.getO6aByO1firma() != null) { if (entity.getO6aByO1firma().getDkaNr() != null) { if ("o1ico0".equals(fieldName)) { if (O0StringUtil.isBlank(entity.getKontakt())) { if (O0StringUtil.isBlank(entity.getTelefon())) { if (O0StringUtil.isBlank(entity.getEmail())) { O6aDao o6aDao = (O6aDao) AppContext.getDaoService("o6aDao"); if (o6aDao != null) { Dkx dodavatelDkx = o6aDao.podejDkxDodavatel(entity.getO6aByO1firma().getDkaNr()); if (dodavatelDkx != null) { if (O0StringUtil.notBlank(dodavatelDkx.getDkxTel())) { entity.setTelefon(dodavatelDkx.getDkxTel()); } if (O0StringUtil.notBlank(dodavatelDkx.getDkxEMail2())) { entity.setEmail(dodavatelDkx.getDkxEMail2()); } if (dodavatelDkx.getDkxIdpkOhkon() != null) { Ohkon osoby = (Ohkon) OEntityUtil.getRecordByParam(Ohkon.class.getCanonicalName(), "idpk", dodavatelDkx.getDkxIdpkOhkon()); if (osoby != null) { String pr = ""; String jm = ""; if (osoby.getJmPrijm() != null) { pr = osoby.getJmPrijm(); } if (osoby.getJmJmeno() != null) { jm = osoby.getJmJmeno(); } entity.setKontakt(O0StringUtil.slozit(pr, jm, " ")); } } HashMap<String, Serializable> componentValues = new HashMap(); componentValues.put("kontakt", entity.getKontakt()); componentValues.put("telefon", entity.getTelefon()); componentValues.put("email", entity.getEmail()); groovyBrowsePar.setComponentValues(componentValues); groovyBrowsePar.setFocusName("kontakt"); } } } } } } if ("o1firma0".equals(fieldName)) { if (O0StringUtil.isBlank(entity.getKontakt())) { if (O0StringUtil.isBlank(entity.getTelefon())) { if (O0StringUtil.isBlank(entity.getEmail())) { O6aDao o6aDao = (O6aDao) AppContext.getDaoService("o6aDao"); if (o6aDao != null) { Dkx dodavatelDkx = o6aDao.podejDkxDodavatel(entity.getO6aByO1firma().getDkaNr()); if (dodavatelDkx != null) { if (O0StringUtil.notBlank(dodavatelDkx.getDkxTel())) { entity.setTelefon(dodavatelDkx.getDkxTel()); } if (O0StringUtil.notBlank(dodavatelDkx.getDkxEMail2())) { entity.setEmail(dodavatelDkx.getDkxEMail2()); } if (dodavatelDkx.getDkxIdpkOhkon() != null) { Ohkon osoby = (Ohkon) OEntityUtil.getRecordByParam(Ohkon.class.getCanonicalName(), "idpk", dodavatelDkx.getDkxIdpkOhkon()); if (osoby != null) { String pr = ""; String jm = ""; if (osoby.getJmPrijm() != null) { pr = osoby.getJmPrijm(); } if (osoby.getJmJmeno() != null) { jm = osoby.getJmJmeno(); } entity.setKontakt(O0StringUtil.slozit(pr, jm, " ")); } } // entity.setKontakt("myslivec"); HashMap<String, Serializable> componentValues = new HashMap(); componentValues.put("kontakt", entity.getKontakt()); componentValues.put("telefon", entity.getTelefon()); componentValues.put("email", entity.getEmail()); groovyBrowsePar.setComponentValues(componentValues); groovyBrowsePar.setFocusName("kontakt"); } } } } } } if ("o1nazev0".equals(fieldName)) { if (O0StringUtil.isBlank(entity.getKontakt())) { if (O0StringUtil.isBlank(entity.getTelefon())) { if (O0StringUtil.isBlank(entity.getEmail())) { O6aDao o6aDao = (O6aDao) AppContext.getDaoService("o6aDao"); if (o6aDao != null) { Dkx dodavatelDkx = o6aDao.podejDkxDodavatel(entity.getO6aByO1firma().getDkaNr()); if (dodavatelDkx != null) { if (O0StringUtil.notBlank(dodavatelDkx.getDkxTel())) { entity.setTelefon(dodavatelDkx.getDkxTel()); } if (O0StringUtil.notBlank(dodavatelDkx.getDkxEMail2())) { entity.setEmail(dodavatelDkx.getDkxEMail2()); } if (dodavatelDkx.getDkxIdpkOhkon() != null) { Ohkon osoby = (Ohkon) OEntityUtil.getRecordByParam(Ohkon.class.getCanonicalName(), "idpk", dodavatelDkx.getDkxIdpkOhkon()); if (osoby != null) { String pr = ""; String jm = ""; if (osoby.getJmPrijm() != null) { pr = osoby.getJmPrijm(); } if (osoby.getJmJmeno() != null) { jm = osoby.getJmJmeno(); } entity.setKontakt(O0StringUtil.slozit(pr, jm, " ")); } } HashMap<String, Serializable> componentValues = new HashMap(); componentValues.put("kontakt", entity.getKontakt()); componentValues.put("telefon", entity.getTelefon()); componentValues.put("email", entity.getEmail()); groovyBrowsePar.setComponentValues(componentValues); groovyBrowsePar.setFocusName("kontakt"); } } } } } } } } } return groovyBrowsePar; }
Do pohledu si vložíme víceřádkové pole a nazveme ho „wfPozn“. V makru bude následující plnění poznámkou:
import cz.ortex.groovy.GroovyBrowsePar; import cz.ortex.util.o0.O0Data; import cz.ortex.util.o0.O0Session; import cz.ortex.apidao.o0.workflow.OfwoDao; import cz.ortex.model.Ofwo; import cz.ortex.util.o0.AppContext; GroovyBrowsePar noEditDetail(Object entity, O0Data dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod String wfPoznamka = ""; if (entity != null) { OfwoDao ofwoDao = (OfwoDao) AppContext.getDaoService(OfwoDao.NAME); if (ofwoDao != null) { List<Ofwo> ofwos = ofwoDao.getOfwosByTargetRecord(entity); if (ofwos != null && !ofwos.isEmpty()) { Ofwo ofwo = ofwos[0]; wfPoznamka = ofwoDao.pozHistorieTisk(ofwo, true, true, true); } } } HashMap<String, Serializable> componentValues = new HashMap(); componentValues.put("wfPozn", wfPoznamka); groovyBrowsePar.setComponentValues(componentValues); // System.out.println(wfPoznamka); return groovyBrowsePar; }
import cz.ortex.model.Oelfrm; import cz.ortex.util.o0.O0Session; import cz.ortex.impldao.o0.admin.OsobyDaoImpl; import cz.ortex.util.o0.O0DateUtil; import cz.ortex.util.o0.O0StringUtil; import cz.ortex.model.Osoby; import java.util.logging.Level; import java.util.logging.Logger; String cisloZadanky(Object[] args, O0Session o0session) { //char 20, číslo z Osob číslo referenta wf – skupina poslední 3 číslice, rok, 5, rostoucí číslo platí pro přihlášenou osobu // zde se vrací pouze speciální maska kde samorostoucí číslo je oddělené za mezerou String vysl = null; Osoby osoby = OsobyDaoImpl.getEntity(o0session.getUserNumber()); String skupina = O0StringUtil.rtrim(osoby.getSkupina()); int len = skupina.length(); skupina = skupina.substring(len -3); Integer rok = O0DateUtil.getRok(o0session.getDatumZpracovani()); vysl = skupina + rok.toString().substring(2,4) + "5 001"; return vysl; }
import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import java.rmi.RemoteException; import java.math.BigDecimal; import cz.ortex.model.Oelfrm; import cz.ortex.model.Ofwos; import cz.ortex.impldao.o0.workflow.OfwosDaoImpl; String osobniLimit(Object[] objects, O0Session o0Session) { String vysl = "0"; Oelfrm entity = (Oelfrm) objects[0]; if (entity != null) { // Integer oscis = o0Session.getUserNumber(); Integer oscis = entity.getZodpovidaOscis(); Ofwos ofwos = OfwosDaoImpl.getEntityByUtvar(oscis, entity.getHodn06(), o0Session); if (ofwos != null && ofwos.getOsobniLimit() != null) { vysl = ofwos.getOsobniLimit().toString(); } } return vysl; }
import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import cz.ortex.util.o0.O0StringUtil; import java.rmi.RemoteException; import cz.ortex.model.Oelfrm; String pripravena(Object[] objects, O0Session o0Session) { Oelfrm entity = (Oelfrm) objects[0]; if (entity != null) { if (entity.getStav() == null) { return true; } if (O0StringUtil.isBlank(entity.getStav().toString())) { return true; } } return false; }
import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import java.rmi.RemoteException; import java.math.BigDecimal; import cz.ortex.model.Oelfrm; import cz.ortex.model.Ofwos; import cz.ortex.impldao.o0.workflow.OfwosDaoImpl; String substring(Object[] objects, O0Session o0Session) { String vysl = "' '"; Oelfrm entity = (Oelfrm) objects[0]; if (entity != null) { if (entity.getCislo() != null) { vysl = "'" + entity.getCislo().substring(0,3) + "'"; } } return vysl; }
Makro kontroluje vyplnění návrhu rozpočtu (tabulka OFWDT) na cenu faktury
import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import java.rmi.RemoteException; import cz.ortex.apilogic.o0.workflow.OfwUtil; import cz.ortex.model.Ofwdt; import cz.ortex.model.Ofwk; import cz.ortex.model.PpfHl; import cz.ortex.implutil.o0.HibernateUtil; import java.io.Serializable; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.criterion.Restrictions; import cz.ortex.apilogic.o0.workflow.OfwRetObject; import cz.ortex.apilogic.o0.workflow.OfwSplnenoChoices; import org.apache.commons.beanutils.ConvertUtils; import cz.ortex.util.o0.O0StringUtil; OfwRetObject stepActionRun(PpfHl entity, Ofwk ofwk, OfwUtil.OfwActionRunParams runParams, O0Session o0Session) { OfwRetObject retObject = new OfwRetObject(); retObject.setActionCorrectlyDone(true); String chyba = ""; BigDecimal obnosFaktury = new BigDecimal(100.00); // "vzdy do 1 Kc, u cizi meny prepocitat dle kurzu na fakture" BigDecimal rozdilMax = new BigDecimal(1.00); BigDecimal rozdilProc = new BigDecimal(5.00); if (entity != null) { if (entity.getObnosTuzem() != null) { obnosFaktury = entity.getObnosFakt(); if (O0StringUtil.notBlank(ofwk.getTrideni2())) { obnosFaktury = ConvertUtils.convert(ofwk.getTrideni2().trim().replaceAll(",","."), BigDecimal.class); } Session session = HibernateUtil.getCurrentSession(); Transaction tx = session.getTransaction(); boolean byloTransactionActive = tx.isActive(); try { if (!byloTransactionActive) { tx.begin(); } String nazevTab = "PpfhlRozuct"; BigDecimal obnosNum02 = BigDecimal.ZERO; Criteria c = session.CriteriaUtil.createCriteria(session, Ofwdt.class); c.add(Restrictions.eq("nazevtab", nazevTab.trim())); c.add(Restrictions.eq("casttab", " ")); c.add(Restrictions.eq("ofwkIdpk", ofwk.getIdpk())); List<Ofwdt> ofwdtList = c.list(); for (int i = 0; i < ofwdtList.size(); i++) { Ofwdt ofwdt = ofwdtList.get(i); if (ofwdt != null) { if (ofwdt.getNazevtab().trim().equals(nazevTab.trim())) { if (ofwdt.getNum02() != null) { obnosNum02 = obnosNum02.add(ofwdt.getNum02()); } } } } if (entity.getObnosTuzem().compareTo(obnosNum02) == 0) { chyba = "OK"; } else { // "Nelze schválit. Rozdílny obnos faktury a rozúčtování." BigDecimal sto = new BigDecimal(100.00); BigDecimal rozdil = obnosFaktury.subtract(obnosNum02); rozdil = rozdil.abs(); BigDecimal procento = rozdil.divide(obnosFaktury, 2, RoundingMode.HALF_DOWN).multiply(sto); procento = procento.abs(); if (rozdil.compareTo(rozdilMax) > 0) { chyba = "- nelze schválit. Rozdílný obnos faktury a rozúčtování."; retObject.setActionCorrectlyDone(false); retObject.setChoiceToSetWf(OfwSplnenoChoices.OfwSplnenoChoice.NESPLNENO); retObject.setRetString(chyba); } if (procento.compareTo(rozdilProc) > 0) { chyba = "- nelze schválit. Rozdílný obnos faktury a rozúčtování."; retObject.setActionCorrectlyDone(false); retObject.setChoiceToSetWf(OfwSplnenoChoices.OfwSplnenoChoice.NESPLNENO); retObject.setRetString(chyba); } } } catch (Exception e) { if (!byloTransactionActive) { tx.rollback(); } retObject.setActionCorrectlyDone(false); retObject.setChoiceToSetWf(OfwSplnenoChoices.OfwSplnenoChoice.NESPLNENO); retObject.setRetString("Bylo exception"); retObject.setException(e); throw new RuntimeException(e); } } } return retObject; }
Makro kontroluje zda je vyplněn alespoň jeden řádek návrhu čerpání rozpočtu (v tabulce OFWDT).
import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import java.rmi.RemoteException; import cz.ortex.apilogic.o0.workflow.OfwUtil; import cz.ortex.model.Ofwdt; import cz.ortex.model.Ofwk; import cz.ortex.model.PpfHl; import cz.ortex.implutil.o0.HibernateUtil; import java.io.Serializable; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.criterion.Restrictions; import cz.ortex.apilogic.o0.workflow.OfwRetObject; import cz.ortex.apilogic.o0.workflow.OfwSplnenoChoices; import org.apache.commons.beanutils.ConvertUtils; import cz.ortex.util.o0.O0StringUtil; public OfwRetObject stepActionRun(PpfHl entity, Ofwk ofwk, OfwUtil.OfwActionRunParams runParams, O0Session o0Session) { OfwRetObject retObject = new OfwRetObject(); retObject.setActionCorrectlyDone(true); String chyba = ""; if (entity != null) { Session session = HibernateUtil.getCurrentSession(); Transaction tx = session.getTransaction(); boolean byloTransactionActive = tx.isActive(); try { if (!byloTransactionActive) { tx.begin(); } String nazevTab = "PpfhlRozp"; Criteria c = session.CriteriaUtil.createCriteria(session, Ofwdt.class); c.add(Restrictions.eq("nazevtab", nazevTab.trim())); c.add(Restrictions.eq("casttab", " ")); c.add(Restrictions.eq("ofwkIdpk", ofwk.getIdpk())); List<Ofwdt> ofwdtList = c.list(); for (int i = 0; i < ofwdtList.size(); i++) { Ofwdt ofwdt = ofwdtList.get(i); if (ofwdt != null) { if (ofwdt.getNazevtab().trim().equals(nazevTab.trim())) { if (ofwdt.getHodnota10() == null || ofwdt.getHodnota10().trim().length() == 0) { chyba = " - prázdný oddíl v rozúčtování"; retObject.setActionCorrectlyDone(false); retObject.setChoiceToSetWf(OfwSplnenoChoices.OfwSplnenoChoice.NESPLNENO); retObject.setRetString(chyba); break; } } } } if (!byloTransactionActive) { tx.commit(); } } catch (Exception e) { if (!byloTransactionActive) { tx.rollback(); } retObject.setActionCorrectlyDone(false); retObject.setChoiceToSetWf(OfwSplnenoChoices.OfwSplnenoChoice.NESPLNENO); retObject.setRetString("Bylo exception"); retObject.setException(e); throw new RuntimeException(e); } } return retObject; }
1) Takto je plnění u většiny zákazníků – na Typu postupu se řekne, jaký údaj ze schvalovaného dokladu se má umístit do WF údajů.
2) Takto lze plnit údaj pomocí makra, kde si změníte způsob naplnění
3) Makro vypadá nějak takto
A zde je změna uložení – u obnosu faktury se doplní zepředu nuly na nějaký „rozumný“ počet míst
import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import java.text.DecimalFormat; // metoda vrací string, max. 50 znaků pro Doplňkovou hodnotu u Typu postupu // pro každou Doplňkovou hodnotu je třeba mít jedno makro String hodnota(Object[] objects, O0Session o0Session) { //zde vypište kód Object primRecord = objects[0]; String hodnota = ""; if (primRecord != null) { if (primRecord.getObnosFakt() != null) { BigDecimal bigDecimal = primRecord.getObnosFakt(); DecimalFormat df = new DecimalFormat("0000000000000000.00"); hodnota = df.format(bigDecimal); } } return hodnota; }
4) A v zobrazení je třeba ty úvodní zase odstranit. Jinak tam budou vidět
5) A to se udělá zase makrem na sloupci
import cz.ortex.model.Ofwk; import cz.ortex.util.o0.OEntityUtil; import cz.ortex.util.o0.O0StringUtil; import cz.ortex.model.Osoby; Object getCellValue(Ofwk entity, Object dotahovane) { if (entity != null) { Character znak = '0'; return O0StringUtil.lTrimByChar(entity.getTrideni1(), znak); } return " "; }
6) Nebo zobrazení změnou textového pole na číselné
1) Takto je plnění u většiny zákazníků – na Typu postupu se řekne, jaký údaj ze schvalovaného dokladu se má umístit do WF údajů.
Datum se doplní do WF ve formátu DD.MM.RRRR
2) Takto lze plnit údaj pomocí makra, kde si změníte způsob naplnění
3) Makro vypadá nějak takto
A zde je změna uložení – u datumu splatnosti faktury se změní uložení na RRRRMMDD
import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import cz.ortex.util.o0.O0StringUtil; import cz.ortex.util.o0.O0DateUtil; import org.apache.commons.beanutils.ConvertUtils; // metoda vrací string, max. 50 znaků pro Doplňkovou hodnotu u Typu postupu // pro každou Doplňkovou hodnotu je třeba mít jedno makro String hodnota(Object[] objects, O0Session o0Session) { //zde vypište kód Object primRecord = objects[0]; String hodnota = "00000000"; if (primRecord != null) { if (primRecord.getDatSplatnost() != null) { Date datum = primRecord.getDatSplatnost(); String hodn = O0DateUtil.dateToString(datum); if (O0StringUtil.notBlank(hodn)) { hodnota = hodn.substring(6,10) + hodn.substring(3,5) + hodn.substring(0,2);; } } } return hodnota; }
4) A v zobrazení je třeba zase změní zobrazení na DD.MM.RRRR
5) A to se udělá zase makrem na sloupci
import cz.ortex.model.Ofwk; import cz.ortex.util.o0.OEntityUtil; import cz.ortex.util.o0.O0StringUtil; import cz.ortex.model.Osoby; Object getCellValue(Ofwk entity, Object dotahovane) { if (entity != null) { if (O0StringUtil.notBlank(entity.getTrideni5())) { return entity.getTrideni5().substring(6,8) + "." + entity.getTrideni5().substring(4,6) + "." + entity.getTrideni5().substring(0,4) } } return " "; }
Makro vrací jméno dokumentu pro uložení. Lze kombinovat s pořadím.
Zde je vzorové systémové makro:
import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import java.rmi.RemoteException; import java.math.BigDecimal; import cz.ortex.model.Oeldok; // Vzorové makro pro podání jména dokumentu // pro použití jako uživatelské přejmenovat na groo... String jmenoDokumentu(Object[] objects, O0Session o0Session) { String vysl = ""; Oeldok oeldok = null; Object entity = objects[0]; if (objects.length > 1) { oeldok = objects[1]; } if (entity != null) { vysl = "nove_jmeno"; } return vysl; }
Poznámka – pro doplnění sloupce browsu, který je plněn makrem, je v Dotahovaných k tomuto účelu připraven atribut „zzmakro“.
Makro vykonává na serveru, kontroluje se na klientu a tak je třeba místo
import cz.ortex.implutil.o0.HibernateUtil;
použít celou cestu až při volání
Session session = cz.ortex.implutil.o0.HibernateUtil.getCurrentSession();
import java.awt.Color; import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import cz.ortex.util.o0.O0StringUtil; import java.rmi.RemoteException; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.query.NativeQuery; import cz.ortex.implutil.o0.HibernateUtil; import cz.ortex.model.PpfHl;
Color getBackgroundColor(Object entity, Object dotahovane) {
//zde vypiste kod
}
Color getForegroundColor(Object entity, Object dotahovane) {
//zde vypiste kod
BigDecimal sumaSkut = BigDecimal.ZERO;
if (entity != null) {
if (entity.getO6a() != null) {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.getTransaction();
boolean byloTransactionActive = transaction.isActive();
if (!byloTransactionActive) {
transaction.begin();
}
if (transaction.isActive()) {
String testDotaz = "select sum(obnos_tuzem) from PPF_HL where cf_o6a = " + entity.getO6a().getDkaNr() + " group by cf_o6a";
NativeQuery<String> sqlQuery = session.createNativeQuery(testDotaz);
Object hodnota = (Object) sqlQuery.uniqueResult();
if (hodnota != null) {
if (hodnota.getClass().getSimpleName().equals("BigDecimal")) {
sumaSkut = (BigDecimal) hodnota;
}
}
}
if (!byloTransactionActive) {
transaction.rollback();
}
if (sumaSkut.compareTo(new BigDecimal("100000.00"))> 0) {
return new Color(255,0,0);
}
}
Nad přijatými fakturami
import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import cz.ortex.util.o0.O0StringUtil; import java.rmi.RemoteException; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.query.NativeQuery; import cz.ortex.implutil.o0.HibernateUtil; import java.util.List; import cz.ortex.model.PpfHl; import cz.ortex.model.Ofwk; import cz.ortex.model.Osoby; Object getCellValue(PpfHl entity, Object dotahovane) { String vysl = " "; if ((entity != null) && (entity.getDatOdsouhlaseni() == null) && (entity.getDatPredani() != null)) { Session session = HibernateUtil.getCurrentSession(); Transaction transaction = session.getTransaction(); boolean byloTransactionActive = transaction.isActive(); if (!byloTransactionActive) { transaction.begin(); } if (transaction.isActive()) { String testDotaz = "select ofwk.idpk from OFWO ofwo join OFWK ofwk on ofwk.ofwp_idpk = ofwo.ofwp_idpk join OFWA ofwa on ofwa.idpk = ofwk.ofwa_idpk where (ofwa.aktivita = 'ZNOVU') and (ofwk.splneno = 'n') and (ofwo.stav = '1') and (ofwo.obj_name = 'PpfHl') and (ofwo.obj_idpk = " + entity.getIdpk() + " )"; NativeQuery<String> sqlQuery = session.createNativeQuery(testDotaz); List<String> list = sqlQuery.getResultList(); for (Object l : list) { if (l != null) { vysl = "Ano"; } } } if (!byloTransactionActive) { transaction.rollback(); } } return vysl; }
import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import cz.ortex.util.o0.O0StringUtil; import cz.ortex.model.PpfHl; import cz.ortex.model.Ofwk; import cz.ortex.model.Osoby; import cz.ortex.impldao.o0.workflow.OfwkDaoImpl; Object getCellValue(PpfHl entity, Object dotahovane) { String vysl = " "; if ((entity != null) && (entity.getDatOdsouhlaseni() == null)) { OfwkDaoImpl ofwkDaoImpl = new OfwkDaoImpl(); Ofwk ofwk = ofwkDaoImpl.aktualniKrok(entity, "PPFHL"); if (ofwk != null) { Osoby osoby = null; osoby = (Osoby) OEntityUtil.getRecordByParam(Osoby.class.getCanonicalName(), "idpk", ofwk.getUcastnikIdpk()); if (osoby != null) { return osoby.getJmPrijm().trim() + " " + osoby.getJmJmeno().trim(); } } } return vysl; }
import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import java.rmi.RemoteException; import cz.ortex.apilogic.o0.workflow.OfwUtil; import java.io.Serializable; import java.math.BigDecimal; import java.math.RoundingMode; import java.rmi.RemoteException; import cz.ortex.apidao.p0.ucto.PucnDao; import cz.ortex.model.PpfHl; import cz.ortex.impldao.p0.ucto.PucnDaoImpl; BigDecimal obnosPpfhl(Object[] objects, O0Session o0Session) { //zde vypište kód BigDecimal obnosFa = BigDecimal.ZERO; PpfHl ppfhl = (PpfHl) objects[0]; if (ppfhl != null) { try { PucnDao dao = (PucnDao) OEntityUtil.getServiceByName(OEntityUtil.OServiceType.dao, "pucnDao"); if (dao != null) { obnosFa = dao.getObnosFakturovanoVcetneZalohForPpfHlWorkflow(ppfhl); } } catch (RemoteException ex) { Logger.getLogger(PpfHlPanel.class.getName()).log(Level.SEVERE, null, ex); } } return obnosFa; }
import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.OEntityUtil; import java.rmi.RemoteException; import cz.ortex.model.PpfHl; import cz.ortex.model.Nq10; import cz.ortex.util.o0.O0StringUtil; import java.math.BigDecimal; import java.math.RoundingMode; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.query.NativeQuery; import cz.ortex.implutil.o0.HibernateUtil; import java.util.List; import org.hibernate.type.StandardBasicTypes; Object getCellValue(Nq10 entity, Object dotahovane) { String vysl = "FD:"; vysl = ""; if ((entity != null) && (entity.getObje() != null)) { Session session = HibernateUtil.getCurrentSession(); Transaction transaction = session.getTransaction(); boolean byloTransactionActive = transaction.isActive(); if (!byloTransactionActive) { transaction.begin(); } if (transaction.isActive()) { // String testDotaz = "select cis_dokl from PPF_HL where (objednavka like '%" + entity.getObje().trim() + "%')"; String testDotaz = "select cis_dokl from PPF_HL ppf left outer join O0ZAZNVAZ o0zaznvaz on (o0zaznvaz.trida = 'PpfHl') and (o0zaznvaz.name_obj = 'Nq10') and (o0zaznvaz.idpk_obj = " + entity.getIdpk() + " ) where (ppf.objednavka like '%" + entity.getObje().trim() + "%') or (ppf.idpk = o0zaznvaz.id_zaznamu)"; NativeQuery<String> sqlQuery = session.createNativeQuery(testDotaz); sqlQuery.addScalar("cis_dokl", StandardBasicTypes.STRING); List<String> list = sqlQuery.getResultList(); if (list != null) { for (Object l : list) { if (l != null) { if (String.class.isInstance(l)) { String cObj = (String) l; if (O0StringUtil.notBlank(vysl)) { vysl = vysl.trim() + ", "; } vysl = vysl.trim() + " " + cObj.trim(); } } } } } if (!byloTransactionActive) { transaction.rollback(); } } return vysl; }
Makro pracuje s hodnotami v dotahovaných: - getPredavajiciClass() - Vrací entitní třídu z předávajícího wrapperu pro groovy makro cellValue - getPredavajiciId() - Vrací id entity z předávajícího wrapperu pro groovy makro cellValue
import cz.ortex.util.o0.OEntityUtil; import cz.ortex.util.o0.O0StringUtil; import cz.ortex.model.PpfHl; import cz.ortex.model.Givazobj; import java.math.BigDecimal; import cz.ortex.apidao.g0.GivazobjDao; Object getCellValue(PpfHl entity, Object dotahovane) { BigDecimal obnosFa = BigDecimal.ZERO; if (entity != null) { obnosFa = entity.getObnosTuzem(); if (dotahovane != null) { if (dotahovane.getPredavajiciClass() != null) { if (dotahovane.getPredavajiciId() != null) { GivazobjDao givazobjDao = (GivazobjDao) OEntityUtil.getServiceByName(OEntityUtil.OServiceType.dao, GivazobjDao.NAME); if (givazobjDao != null) { Givazobj givazobj = givazobjDao.getEntityByParam("Giia", dotahovane.getPredavajiciId(), "PpfHl", entity.getIdpk()); if (givazobj != null) { if (givazobj.getCastka() != null) { obnosFa = givazobj.getCastka(); } } } } } } } return obnosFa; }
Makro načte obrázek dle zadání a zobrazí ho v poli „gobrazek“
import cz.ortex.groovy.GroovyBrowsePar; import cz.ortex.util.o0.O0Data; import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.O0StringUtil; import cz.ortex.gui.o0.eldoc.OeldokWrapper; import javax.swing.ImageIcon; GroovyBrowsePar noEditDetail(Object entity, O0Data dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod if (entity != null) { HashMap<String, Serializable> componentValues = new HashMap(); // zobrazi prvni připojený obrázek druhu MAJ_BJ String bI = ""; if (O0StringUtil.notBlank(entity.getIko())) { bI = OeldokWrapper.podejNahledIko("MAJ_OBJ",entity.getIko(), 200); } componentValues.put("gobrazek", new ImageIcon(bI)); groovyBrowsePar.setComponentValues(componentValues); return groovyBrowsePar; } }
Makro vytvoří čárový kód a zobrazí ho v poli „gobrck“
import cz.ortex.groovy.GroovyBrowsePar; import cz.ortex.util.o0.O0Data; import cz.ortex.util.o0.O0Session; import cz.ortex.util.o0.O0StringUtil; import javax.swing.ImageIcon; import java.awt.image.BufferedImage; import net.sourceforge.barbecue.Barcode; import net.sourceforge.barbecue.BarcodeException; import net.sourceforge.barbecue.BarcodeFactory; import net.sourceforge.barbecue.BarcodeImageHandler; import net.sourceforge.barbecue.output.OutputException; GroovyBrowsePar noEditDetail(Object entity, O0Data dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod if (entity != null) { HashMap<String, Serializable> componentValues = new HashMap(); // zobrazi čárový kód - dle nastavení - zde Code128 z inventářního čísla try { Barcode barcode; barcode = BarcodeFactory.createCode128B(String.valueOf(entity.getInv())); barcode.setBarHeight(30); barcode.setBarWidth(2); //barcode.setResolution(300); BufferedImage bCK = BarcodeImageHandler.getImage(barcode); componentValues.put("gobrck", new ImageIcon(bCK)); } catch (BarcodeException ex) { Logger.getLogger(G0zphValidator.class.getName()).log(Level.SEVERE, null, ex); } catch (OutputException ex) { Logger.getLogger(G0zphValidator.class.getName()).log(Level.SEVERE, null, ex); } groovyBrowsePar.setComponentValues(componentValues); return groovyBrowsePar; } }
Zde příklad pro Došlé faktury:
import cz.ortex.apidao.o0.workflow.OfwoDao; import cz.ortex.model.Ofwo; GroovyBrowsePar noEditDetail(Object entity, O0Data dotahovane, GroovyBrowsePar groovyBrowsePar, O0Session o0session, Object browsePanel) { //zde vypiste kod String wfPoznamka = ""; if (entity != null) { OfwoDao ofwoDao = (OfwoDao) AppContext.getDaoService(OfwoDao.NAME); if (ofwoDao != null) { Ofwo ofwo = ofwoDao.getLastOfwoByTargetRecord(entity, "PPFHL", false); if (ofwo != null ) { wfPoznamka = ofwoDao.pozHistoriePozn(ofwo); } } } HashMap<String, Serializable> componentValues = new HashMap(); componentValues.put("wfPozn", wfPoznamka); groovyBrowsePar.setComponentValues(componentValues); return groovyBrowsePar; }