Package bpntojava.model.bpndata

Source Code of bpntojava.model.bpndata.CatchData

package bpntojava.model.bpndata;

import java.util.LinkedList;
import jp.ne.so_net.ga2.no_ji.jcom.IDispatch;

/**
* Daten aus der BPN sammeln.
*
* @author mschuessler
*/
public class CatchData {

    /**
     * BPN-Tools.
     */
    private BPN bpn;
    /**
     * Data-Datenbank.
     */
    private Data data;
    /**
     * Außendienst-Datenbank.
     */
    private Data ad;

    /**
     * Konstruktor.
     *
     * @param bpn BPN-Tools.
     */
    public CatchData(BPN bpn) {
        this.bpn = bpn;
        data = new Data();
        ad = new Data();
    }

    /**
     * Gibt Data-Datenbank zurück.
     *
     * @return Data
     */
    public Data getData() {
        fillArchVorg();
        return data;
    }

    /**
     * Gibt Außendienst-Datenbank zurück.
     *
     * @return Außendienst
     */
    public Data getAD() {
        fillAD();
        return ad;
    }

    /**
     * Füllt die Außendienst Datenbank.
     */
    private void fillAD() {
        IDispatch archvorg = bpn.getDataSet("VorgangArchiv");
        IDispatch archvorgpos = bpn.getDataSet("VorgangPositionArchiv");
        IDispatch archvorgangposfields = bpn.getFields(archvorgpos);
        LinkedList<String> adList = getADList();
        bpn.sort(archvorgpos, "ArtNr");
        for (String artnummer : adList) {
            bpn.setRange(archvorgpos, "ArtNr", artnummer, artNrPlusEins(artnummer));
            bpn.first(archvorgpos);
            IDispatch id = bpn.getItem(archvorgangposfields, "ID");
            String lastItem = "";
            String actualItem = bpn.itemAsString(id);
            while (hasnext(lastItem, actualItem)) {
                if (bpn.itemAsString(
                        bpn.getItem(archvorgangposfields, "BelegNr")).startsWith("RE")) {
                    DataLine toReturn = new DataLine();
                    toReturn.add("" + getBelegDatum(archvorg, bpn.itemAsString(
                            bpn.getItem(archvorgangposfields, "BelegNr"))));
                    toReturn.add("" + bpn.itemAsString(bpn.getItem(archvorgangposfields, "ArtNr")));
                    toReturn.add("" + bpn.getItemInfo(archvorgangposfields, "Bez"));
                    String preis = bpn.itemAsString(bpn.getItem(archvorgangposfields, "PrNt"));
                    toReturn.add("" + preis.replace(',', '.'));
                    ad.add(toReturn);
                }
                lastItem = bpn.itemAsString(id);
                bpn.next(archvorgpos);
                actualItem = bpn.itemAsString(id);
            }
        }
    }

    /**
     * Gibt das Datum des gerade ausgewählten Beleges zurück.
     *
     * @param archvorg DataSet
     * @param belegnr Belegnummer
     * @return Datum
     */
    private String getBelegDatum(IDispatch archvorg, String belegnr) {
        bpn.sort(archvorg, "BelegNr");
        bpn.setRange(archvorg, "BelegNr", belegnr, belegNrPlusEins(belegnr));
        bpn.first(archvorg);
        IDispatch archvorgfields = bpn.getFields(archvorg);
        String toReturn = bpn.itemAsString(bpn.getItem(archvorgfields, "Dat"));
        return toReturn.substring(3);
    }

    /**
     * Liste der Außendienst-Artikelnummern.
     *
     * @return Liste
     */
    private LinkedList<String> getADList() {
        LinkedList<String> toReturn = new LinkedList();
        toReturn.add("10044001");
        toReturn.add("10044002");
        toReturn.add("10044003");
        toReturn.add("10044004");
        toReturn.add("10044005");
        toReturn.add("10044006");
        toReturn.add("10044007");
        toReturn.add("10044008");
        toReturn.add("10044009");
        toReturn.add("10044010");
        toReturn.add("10044011");
        toReturn.add("10044012");
        return toReturn;
    }

    /**
     * Füllt die Data-Datenbank.
     */
    private void fillArchVorg() {
        IDispatch archvorg = bpn.getDataSet("VorgangArchiv");
        IDispatch archvorgpos = bpn.getDataSet("VorgangPositionArchiv");
        IDispatch archvorgfields = bpn.getFields(archvorg);
        bpn.sort(archvorg, "ArtBelegNr");
        bpn.setRange(archvorg, "Art", "70", "71");
        bpn.first(archvorg);

        IDispatch vorgvorgID = bpn.getItem(archvorgfields, "BelegNr");
        String vorglastItem = "";
        String vorgactualItem = bpn.itemAsString(vorgvorgID);
        while (hasnext(vorglastItem, vorgactualItem)) {
            IDispatch vorgbelegNr = bpn.getItem(archvorgfields, "BelegNr");
            String belegNrString = bpn.itemAsString(vorgbelegNr);
            if (!bpn.itemAsString(bpn.getItem(archvorgfields, "Sel49")).equals("")) {
                fillArchPos(archvorgpos, archvorgfields, belegNrString);
            }
            vorglastItem = bpn.itemAsString(vorgvorgID);
            bpn.next(archvorg);
            vorgactualItem = bpn.itemAsString(vorgvorgID);
        }
    }

    /**
     * Füllt die Positionen.
     *
     * @param archvorgpos DataSet
     * @param vorgang DataSet
     * @param belegnummer Belegnummer
     */
    private void fillArchPos(IDispatch archvorgpos, IDispatch vorgang, String belegnummer) {
        IDispatch archvorgangposfields = bpn.getFields(archvorgpos);

        bpn.sort(archvorgpos, "Nr");
        bpn.setRange(archvorgpos, "BelegNr", belegnummer, belegNrPlusEins(belegnummer));
        bpn.first(archvorgpos);

        IDispatch posID = bpn.getItem(archvorgangposfields, "ID");
        String lastItem = "";
        String actualItem = bpn.itemAsString(posID);

        while (hasnext(lastItem, actualItem)) {
            addPosDataLine(archvorgangposfields, vorgang);
            lastItem = bpn.itemAsString(posID);
            bpn.next(archvorgpos);
            actualItem = bpn.itemAsString(posID);
        }
    }

    /**
     * Gibt die Belegnummer +1 zurück.
     *
     * @param belegnummer Belegnummer
     * @return neue Belegnummer
     */
    private String belegNrPlusEins(String belegnummer) {
        String bla = belegnummer.substring(2);
        int nr = Integer.parseInt(bla);
        nr++;
        if (bla.charAt(0) == '0') {
            return "RE0" + nr;
        }
        return "RE" + nr;
    }

    /**
     * Gibnt die Artikelnummer +1 zurück.
     *
     * @param belegnummer Artikelnummer
     * @return Artikelner+1
     */
    private String artNrPlusEins(String belegnummer) {
        if (belegnummer.equals("10044009")) {
            return "10044010";
        }
        int i = Integer.parseInt(String.valueOf(belegnummer.charAt(belegnummer.length() - 1)));
        i++;
        String toReturn = belegnummer.substring(0, belegnummer.length() - 1) + i;
        return toReturn;
    }

    /**
     * Position in die Datenbank packen.
     *
     * @param field Field
     * @param vorgang DataSet
     */
    private void addPosDataLine(IDispatch field, IDispatch vorgang) {
        String artnr = bpn.itemAsString(bpn.getItem(field, "ArtNr"));
        String preis = bpn.itemAsString(bpn.getItem(field, "PrNt"));
        if (artnr != null
                && !artnr.equals("0")
                && !artnr.equals("")
                && preis != null
                && !preis.equals("0")
                && !preis.equals("")) {
            DataLine toReturn = new DataLine();
            toReturn.add("" + bpn.itemAsString(bpn.getItem(vorgang, "Dat")).substring(3));
            toReturn.add("" + bpn.itemAsString(bpn.getItem(vorgang, "Sel49")));
            toReturn.add("" + artnr);
            String bez = bpn.getItemInfo(field, "Bez");
            toReturn.add("" + artnr + " " + bez);
            toReturn.add("" + preis.replace(',', '.'));
            data.add(toReturn);
            //System.out.println(toReturn.output());
        }
    }

    /**
     * Überprüft ob das letzte Item gleich dem Aktuellen ist.
     *
     * @param last letzter String
     * @param actual aktueller String
     * @return true = es folgt noch ein Eintrag.
     */
    private boolean hasnext(String last, String actual) {
        if (last.equals(actual)) {
            return false;
        }
        return true;
    }
}
TOP

Related Classes of bpntojava.model.bpndata.CatchData

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.