Transaktionen: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
Zeile 103: Zeile 103:
</code>
</code>


zu Rate gezogen. Diese Ableseeinheit wird in der Baustelle mit dem RID=355 unter dem Feld Zählernummer gesucht.  
zu Rate gezogen.
 
=== Baustelle mit dem RID=355 ===
 
Diese Ableseeinheit wird in der Baustelle mit dem RID=355 unter dem Feld "Zählernummer" gesucht.  
Die dortige Sperre wird in die aktuelle Ansicht übernommen.
Die dortige Sperre wird in die aktuelle Ansicht übernommen.
=== Quelltext ===


<code>
<code>
 
const
const
   cAbleseEinheit = 'Ableseeinheit';
   cAbleseEinheit = 'Ableseeinheit';
var
var
   n: integer;
   n: integer;
   AUFTRAG_R: integer;
   AUFTRAG_R: integer;
Zeile 122: Zeile 127:
   AktuellesJahr: integer;
   AktuellesJahr: integer;
   FehlendeAbleseEinheiten: TStringList;
   FehlendeAbleseEinheiten: TStringList;
begin
begin
   BeginHourGlass;
   BeginHourGlass;
   sBericht := TStringList.create;
   sBericht := TStringList.create;
Zeile 129: Zeile 134:
   cAUFTRAG := DataModuleDatenbank.nCursor;
   cAUFTRAG := DataModuleDatenbank.nCursor;
   InternInfos := TStringList.create;
   InternInfos := TStringList.create;
 
   with cAUFTRAG do
   with cAUFTRAG do
   begin
   begin
Zeile 138: Zeile 143:
     OPen;
     OPen;
   end;
   end;
 
   with qAUFTRAG do
   with qAUFTRAG do
   begin
   begin
Zeile 150: Zeile 155:
       if not(eof) then
       if not(eof) then
       begin
       begin
 
         // Ermittlung der AbleseEinheit noch unsicher!
         // Ermittlung der AbleseEinheit noch unsicher!
         FieldByName('INTERN_INFO').AssignTo(InternInfos);
         FieldByName('INTERN_INFO').AssignTo(InternInfos);
Zeile 158: Zeile 163:
         SperreVon := _SperreVon;
         SperreVon := _SperreVon;
         SperreBis := _SperreBis;
         SperreBis := _SperreBis;
 
         if (AbleseEinheit <> '') then
         if (AbleseEinheit <> '') then
         begin
         begin
Zeile 176: Zeile 181:
             if (FehlendeAbleseEinheiten.indexof(AbleseEinheit) = -1) then
             if (FehlendeAbleseEinheiten.indexof(AbleseEinheit) = -1) then
               FehlendeAbleseEinheiten.add(AbleseEinheit);
               FehlendeAbleseEinheiten.add(AbleseEinheit);
 
           end;
           end;
         end
         end
Zeile 183: Zeile 188:
           sBericht.add(cWARNINGText + ' ' + FieldByName('ZAEHLER_NUMMER').AsString + ': Ableseeinheit ist leer!');
           sBericht.add(cWARNINGText + ' ' + FieldByName('ZAEHLER_NUMMER').AsString + ': Ableseeinheit ist leer!');
         end;
         end;
 
         if DateOK(SperreVon) and DateOK(SperreBis) then
         if DateOK(SperreVon) and DateOK(SperreBis) then
         begin
         begin
           AktuellesJahr := extractYear(DateGet);
           AktuellesJahr := extractYear(DateGet);
 
           // Die Sperre auf das aktuelle Jahr setzen
           // Die Sperre auf das aktuelle Jahr setzen
           SperreVon :=
           SperreVon :=
Zeile 202: Zeile 207:
               { } extractMonth(SperreBis),
               { } extractMonth(SperreBis),
               { } extractDay(SperreBis));
               { } extractDay(SperreBis));
 
           if (_SperreVon <> SperreVon) or (_SperreBis <> SperreBis) then
           if (_SperreVon <> SperreVon) or (_SperreBis <> SperreBis) then
           begin
           begin
 
             sBericht.add(cINFOText + ' ' + FieldByName('ZAEHLER_NUMMER').AsString + ' Änderung von ' +
             sBericht.add(cINFOText + ' ' + FieldByName('ZAEHLER_NUMMER').AsString + ' Änderung von ' +
               long2date(_SperreVon) + '-' + long2date(_SperreBis) + ' auf ' + long2date(SperreVon) + '-' +
               long2date(_SperreVon) + '-' + long2date(_SperreBis) + ' auf ' + long2date(SperreVon) + '-' +
               long2date(SperreBis));
               long2date(SperreBis));
 
             edit;
             edit;
             FieldByName('SPERRE_VON').AsDate := Long2datetime(SperreVon);
             FieldByName('SPERRE_VON').AsDate := Long2datetime(SperreVon);
Zeile 216: Zeile 221:
           end;
           end;
         end;
         end;
 
       end;
       end;
     end;
     end;
     close;
     close;
   end;
   end;
 
   //
   //
   if (FehlendeAbleseEinheiten.count > 0) then
   if (FehlendeAbleseEinheiten.count > 0) then
Zeile 231: Zeile 236:
     sBericht.addstrings(FehlendeAbleseEinheiten);
     sBericht.addstrings(FehlendeAbleseEinheiten);
   end;
   end;
 
   sBericht.SaveToFile(DiagnosePath + 'KE2.txt');
   sBericht.SaveToFile(DiagnosePath + 'KE2.txt');
 
   InternInfos.free;
   InternInfos.free;
   qAUFTRAG.free;
   qAUFTRAG.free;
Zeile 240: Zeile 245:
   openShell(DiagnosePath + 'KE2.txt');
   openShell(DiagnosePath + 'KE2.txt');
   EndHourGlass;
   EndHourGlass;
end;</code>
end;
</code>


== KE3 ==  
== KE3 ==  

Version vom 8. Dezember 2016, 13:13 Uhr

Im Auftragsarbeitsplatz ist über das Eingabefeld ganz rechts unten (Eintrag TRN) das Ausführen von benutzerdefinierten Transaktionen möglich. Die Transaktionen beziehen sich dabei auf die angezeigten Datensätze. Stellen Sie also vor dem Aufruf sicher, dass die richtige Baustelle, sowie die gewünschten Datensätze angezeigt werden:

Im Feld "TRN" sind folgende Eingaben möglich:

HA1

Ableseergebnisse aus .csv lesen und eintragen (mit Zählerstand)

HA2

Ableseergebnisse aus .csv lesen und eintragen (ohne Zählerstand)

HA3

aus den Interninfos diverse felder rauslöschen!

HA4

EXPORT_TAN löschen

HA5

EXPORT_TAN setzen (auf manuelle Meldung)

HA6

aus den Zaehler_infos Werte in Feld BRIEF_NAME2 übertragen

HA7

Beurteilung via QS und Ergebnis in "Jahresverbrauch"

HA8

QS deaktivieren durch Eintrag von "QS_UMGANGEN"

HA9

Ablesehinweise und Vorgezogen aktualisieren

HAA

  • alle Markieren, die in externer XLS Liste vorhanden sind
  • Datei muss als .\NonDa\Bericht.xls gespeichert sein
  • die Zählernummer muss in Excel-Spalte "D" angegeben sein

HAB

IDOC Schreibweisen in den InternInfos anpassen

       Alt               Neu
       aegpl_devloc=     GeraeteplatzAlt=
       aeastl_anlage=    AnlageAlt=
       aeger_matnr=      MaterialnummerZaehlerAlt=
       aeger_sparte=     Sparte=

HAC

  • bei "Sparte=Einbau" wird "FA=," sichergestellt vorhandene Eintragungen bleiben erhalten

AY3

Daten aus den Historischen rücksichern

AY4

Ersetzen von Texten in den Textfeldern der Aufträge. Dazu wird im Anwenderverzeichnis (blauer Ordner im Hauptmenü!) die Datei AY4.txt verarbeitet:


"MONTEUR_INFO" | "INTERN_INFO" | "ZAEHLER_INFO" | "PROTOKOLL" | "LEISTUNGS_DETAILS" | "WIEDERVORLAGE_INFO"
<Suchbegriff1> "|" <NeuerBegriff1>
<Suchbegriff2> "|" <NeuerBegriff2>
<Suchbegriff3> "|" <NeuerBegriff3>
...

AH1

EXPORT*xml überprüfen

AH2

"Monteur Informiert" - Status aus den historischen Datensätzen löschen. Dadurch entfallen zu den aktuell angezeigten Terminen die "WEGFALL" und "TERMIN ALT:" Infos.

AH3

Die Datei ".\NonDa\Bericht.xls" wird geöffnet.

  • In Spalte "C" muss sich die Postleitzahl der Liegenschaft befinden
  • In Spalte "D" muss sich die Zählernummer (Alt) befinden.

Es wird eine Einzelauskunft zu allen Zählern erstellt, d.h. die angefragten Zähler werden genau in dieser Reihenfolge aufgelistet wie angefragt.

KE1

"550G" zur Zählernummer wieder dazumachen

KE2

Bei allen angezeigten Aufträgen wird die Sperre (VON-BIS) korigiert. Dazu wird aus der Interninfo der Eintrag

Ableseeinheit=

zu Rate gezogen.

Baustelle mit dem RID=355

Diese Ableseeinheit wird in der Baustelle mit dem RID=355 unter dem Feld "Zählernummer" gesucht. Die dortige Sperre wird in die aktuelle Ansicht übernommen.

Quelltext

const
 cAbleseEinheit = 'Ableseeinheit';
var
 n: integer;
 AUFTRAG_R: integer;
 qAUFTRAG: TIB_Query;
 cAUFTRAG: TIB_Cursor;
 InternInfos: TStringList;
 AbleseEinheit: string;
 sBericht: TStringList;
 SperreVon, SperreBis: TAnfixDate;
 _SperreVon, _SperreBis: TAnfixDate;
 AktuellesJahr: integer;
 FehlendeAbleseEinheiten: TStringList;
begin
 BeginHourGlass;
 sBericht := TStringList.create;
 FehlendeAbleseEinheiten := TStringList.create;
 qAUFTRAG := DataModuleDatenbank.nQuery;
 cAUFTRAG := DataModuleDatenbank.nCursor;
 InternInfos := TStringList.create;

 with cAUFTRAG do
 begin
   sql.add('select SPERRE_VON,SPERRE_BIS from AUFTRAG where');
   sql.add(' (BAUSTELLE_R=355) and');
   sql.add(' (STATUS<>6) and');
   sql.add(' (ZAEHLER_NUMMER=:CROSSREF)');
   OPen;
 end;

 with qAUFTRAG do
 begin
   sql.add('select ZAEHLER_NUMMER,INTERN_INFO,SPERRE_VON,SPERRE_BIS from AUFTRAG where RID=:CROSSREF');
   sql.add('for update');
   OPen;
   for n := 0 to pred(lRID.count) do
   begin
     AUFTRAG_R := integer(lRID[n]);
     ParamByName('CROSSREF').AsInteger := AUFTRAG_R;
     if not(eof) then
     begin

       // Ermittlung der AbleseEinheit noch unsicher!
       FieldByName('INTERN_INFO').AssignTo(InternInfos);
       AbleseEinheit := InternInfos.Values[cAbleseEinheit];
       _SperreVon := DateTime2long(FieldByName('SPERRE_VON').AsDate);
       _SperreBis := DateTime2long(FieldByName('SPERRE_BIS').AsDate);
       SperreVon := _SperreVon;
       SperreBis := _SperreBis;

       if (AbleseEinheit <> ) then
       begin
         cAUFTRAG.ParamByName('CROSSREF').AsString := AbleseEinheit;
         cAUFTRAG.ApiFirst;
         if not(cAUFTRAG.eof) then
         begin
           SperreVon := DateTime2long(cAUFTRAG.FieldByName('SPERRE_VON').AsDate);
           SperreBis := DateTime2long(cAUFTRAG.FieldByName('SPERRE_BIS').AsDate);
         end
         else
         begin
           sBericht.add(cERRORTEXT +
             { } FieldByName('ZAEHLER_NUMMER').AsString +
             { } ': Ableseeinheit "' + AbleseEinheit +
             { } '" ist unbekannt!');
           if (FehlendeAbleseEinheiten.indexof(AbleseEinheit) = -1) then
             FehlendeAbleseEinheiten.add(AbleseEinheit);

         end;
       end
       else
       begin
         sBericht.add(cWARNINGText + ' ' + FieldByName('ZAEHLER_NUMMER').AsString + ': Ableseeinheit ist leer!');
       end;

       if DateOK(SperreVon) and DateOK(SperreBis) then
       begin
         AktuellesJahr := extractYear(DateGet);

         // Die Sperre auf das aktuelle Jahr setzen
         SperreVon :=
         { } Details2Long(AktuellesJahr,
           { } extractMonth(SperreVon),
           { } extractDay(SperreVon));
         SperreBis :=
         { } Details2Long(AktuellesJahr,
           { } extractMonth(SperreBis),
           { } extractDay(SperreBis));
         if SperreBis < SperreVon then
           SperreBis :=
           { } Details2Long(AktuellesJahr + 1,
             { } extractMonth(SperreBis),
             { } extractDay(SperreBis));

         if (_SperreVon <> SperreVon) or (_SperreBis <> SperreBis) then
         begin

           sBericht.add(cINFOText + ' ' + FieldByName('ZAEHLER_NUMMER').AsString + ' Änderung von ' +
             long2date(_SperreVon) + '-' + long2date(_SperreBis) + ' auf ' + long2date(SperreVon) + '-' +
             long2date(SperreBis));

           edit;
           FieldByName('SPERRE_VON').AsDate := Long2datetime(SperreVon);
           FieldByName('SPERRE_BIS').AsDate := Long2datetime(SperreBis);
           post;
         end;
       end;

     end;
   end;
   close;
 end;

 //
 if (FehlendeAbleseEinheiten.count > 0) then
 begin
   sBericht.add();
   sBericht.add('Zusammenfassung aller fehlenden Ableseeinheiten:');
   sBericht.add();
   FehlendeAbleseEinheiten.sort;
   sBericht.addstrings(FehlendeAbleseEinheiten);
 end;

 sBericht.SaveToFile(DiagnosePath + 'KE2.txt');

 InternInfos.free;
 qAUFTRAG.free;
 sBericht.free;
 FehlendeAbleseEinheiten.free;
 openShell(DiagnosePath + 'KE2.txt');
 EndHourGlass;
end;

KE3

BRIEF_STRASSE aus KUNDE_STRASSE übernehmen falls Hausnummer fehlt

KE4

aus den Zaehler_infos Werte in das Feld ZAEHLER_NUMMER übertragen

KE5

Zähler-Infos um Konstante "Quelle=xml" ergänzen!

KE6

erneute Geolokalisierung erzwingen

KE7

berichtigt Schreibweisen in der Intern-Info

  • Leerschritte werden entfernt
  • ":" wird entfernt

KE8

  • "60" zur Zählernummer-neu dazumachen

KE9

  • N1, N2, N3, N4 aus einer Excel-Datei korrigieren!

KEA

  • Das Protokollfeld N2= befüllen aus "Regler-Nummer-Neu" oder "Regler-Nummer-Korrektur" oder "Regler-Nummer-Alt" sollte es noch keinen Wert haben.

KN1

KN2

Diese Transaktion bezieht sich auf Aufträge. In der Zählernummer ist eine RID einer Warenbewegung gespeichert. Bei dieser Warenbewegung wird BEWEGT auf 'Y' gesetzt, also das bewegt Flag wird gesetzt.