FUNCTION TTCzuSa( nAreaC, nAreaCB, nAreaS, nAreaSB, nRecC, nArea6 ) //TTCzuSa fr die Auftrags-Datei // Die tauftr-Datei des Client wird abgearbeitet und die kompletten // S„tze auf die auftr-Datei des Servers bertragen. // Bei neuen Auftr„gen wird die vorl„ufige Auftr-Nr. automatisch // durch die bei der best-šbertragung eingegebenen neuen Nr. ersetzt. LOCAL aData1 := SatzGet( nAreaC, nRecC ) LOCAL aData2 := SatzGet( nAreaC, nRecC+1 ) LOCAL aDataD := SatzGet( nAreaC, nRecC+2 ) LOCAL nAuftr := 000000 PRIVATE nDiff := 0 , n4 := 0 nOldArea := Select() aDataD := SatzDiff( aData1, aData2 ) aDataD[1] := aData2[1] SKIP -2 cTTFlag := TTFlag IF substr( cTTFlag, VAL( cSystem ), 1 ) = "1" RETURN ( nRecC ) ENDIF // 1. lese Auftrags-Nr. in tAuftr: cAuf := str(aData1[1],6,0) nElement := AScan( aBest, {|a| cAuf == a[1] } ) IF nElement > 0 // wenn es ein neuer Auftrag ist: AEval( aBest, {|a| nAuftr := a[2] }, nElement, 1 ) aData1[1] := aData2[1]:= aDataD[1] := nAuftr // die Best-Datei des Servers erg„nzen: DO WHILE aData2[1] == nAuftr .AND. .NOT. Eof() SELECT &nAreaSB APPEND BLANK SatzPut( nAreaSB, RecNo(), aData2 ) // die TT-Datei des Servers erg„nzen: SELECT &nAreaS APPEND BLANK SatzPut( nAreaS, RecNo(), aData1, "1" ) APPEND BLANK SatzPut( nAreaS, RecNo(), aData2, "1" ) APPEND BLANK SatzPut( nAreaS, RecNo(), aDataD, "1" ) SELECT &nAreaC // die TT-Datei des Client erg„nzen um (Auftr-Nr.) + TTFlag: SELECT &nAreaC SatzPut( nAreaC, RecNo(), aData1, "1" ) SKIP SatzPut( nAreaC, RecNo(), aData2, "1" ) SKIP SatzPut( nAreaC, RecNo(), aDataD, "1" ) SKIP nRecC := nRecC+3 IF .NOT. Eof() aData1 := SatzGet( nAreaC, nRecC ) aData2 := SatzGet( nAreaC, nRecC+1 ) aDataD := SatzGet( nAreaC, nRecC+2 ) SKIP -2 ENDIF nRecC := IIf( aData2[1]==nAuftr .AND. .NOT. Eof(), nRecC, nRecC-3 ) ENDDO // die Best-Datei des Client erg„nzen um NEUE Auftrag-Nr: SELECT &nAreaCB FIND &cAuf DO WHILE cAuf = str(auftrnr,6,0) .AND. .NOT. Eof() REPLACE Auftrnr with nAuftr SKIP ENDDO // ELSE // wenn kein neuer Auftrag: ****aus prrvor:**( alten Auftrag l”schen )************************* select &nAreaSB go top find &cAuf aufzei=0 do while auftrnr=val(cAuf) .and. .not. eof() //if rn=nt // alle auf einmal! // Artikel-Best„nde korrigieren schl=zugr_z_st if kennz="1" zbetrag=betrag zbetrag2=betrageu select &nArea6 find &schl satzsperren() repl bestand with bestand+1,mgjahr with mgjahr-1 repl umsatz with umsatz-zbetrag repl umsatzeu with umsatz-zbetrag2 satzentsperren() endif select &nAreaSB delete //endif skip enddo merkzei=aufzei+1 // Ende des Zitats aus PRRVOR : alte Rechnungs-S„tze sind gel”scht ***neuen Auftrag schreiben: ********** SELECT &nAreaC DO WHILE aData2[1] = VAL( cAuf ) .AND. .NOT. Eof() SELECT &nAreaSB APPEND BLANK SatzPut( nAreaSB, RecNo(), aData2 ) // die TT-Datei des Servers erg„nzen: SELECT &nAreaS APPEND BLANK SatzPut( nAreaS, RecNo(), aData1, "1" ) APPEND BLANK SatzPut( nAreaS, RecNo(), aData2, "1" ) APPEND BLANK SatzPut( nAreaS, RecNo(), aDataD, "1" ) // die TT-Datei des Client erg„nzen um (Vers-Kennz.) + TTFlag: SELECT &nAreaC SatzPut( nAreaC, RecNo(), aData1, "1" ) SKIP SatzPut( nAreaC, RecNo(), aData2, "1" ) SKIP SatzPut( nAreaC, RecNo(), aDataD, "1" ) SKIP nRecC := nRecC+3 IF .NOT. Eof() aData1 := SatzGet( nAreaC, nRecC ) aData2 := SatzGet( nAreaC, nRecC+1 ) aDataD := SatzGet( nAreaC, nRecC+2 ) SKIP -2 ENDIF nRecC := IIf( aData2[1]=Val(cAuf) .AND. .NOT. Eof(), nRecC, nRecC-3 ) ENDDO ENDIF SELECT &nOldArea RETURN nRecC //---------------------------------------------------- FUNCTION TTCzuSvv( nAreaC, nAreaCB, nAreaS, nAreaSB, nRecC, cDatei ) //TTCzuSvv fr die Versicherungs-Vertrags-Datei // Die tvv-Datei des Client wird abgearbeitet und die ver„nderten // Felder auf die vv-Datei des Servers bertragen. // Bei neuen Auftr„gen wird die vorl„ufige Auftr-Nr. automatisch // durch die bei der best-šbertragung eingegebenen neuen Nr. ersetzt // und die kompletten S„tze an die vv-Datei des Servers angefgt. LOCAL aData1 := SatzGet( nAreaC, nRecC ) LOCAL aData2 := SatzGet( nAreaC, nRecC+1 ) LOCAL aDataD := SatzGet( nAreaC, nRecC+2 ) LOCAL nAuftr := 000000 PRIVATE nDiff := 0 , n4 := 0 aDataD := SatzDiff( aData1, aData2 ) aDataD[1] := aData2[1] SKIP -2 cTTFlag := TTFlag IF substr( cTTFlag, VAL( cSystem ), 1 ) = "1" RETURN ( nRecC ) ENDIF // 1. lese Auftrags-Nr. in tvv: cAuf := str(aData1[1],6,0) nElement := AScan( aBest, {|a| cAuf == a[1] } ) IF nElement > 0 // wenn es ein neuer Auftrag ist: AEval( aBest, {|a| nAuftr := a[2] }, nElement, 1 ) aData1[1] := aData2[1]:= aDataD[1] := nAuftr // die vv-Datei des Servers erg„nzen: SELECT &nAreaSB APPEND BLANK SatzPut( nAreaSB, RecNo(), aData2 ) // die TT-Datei des Servers erg„nzen: SELECT &nAreaS APPEND BLANK SatzPut( nAreaS, RecNo(), aData1, "1" ) APPEND BLANK SatzPut( nAreaS, RecNo(), aData2, "1" ) APPEND BLANK SatzPut( nAreaS, RecNo(), aDataD, "1" ) // die Best-Datei des Client erg„nzen um NEUE Auftrag-Nr: SELECT &nAreaCB FIND &cAuf // immer nur einen Satz „ndern! IF cAuf = str(auftrnr,6,0) .AND. .NOT. Eof() REPLACE Auftrnr with nAuftr ENDIF // ELSE // wenn kein neuer Auftrag: // wenn es ein alter Auftrag ist: // die vv-Datei des Servers erg„nzen: // Vorannahme: es gilt immer das vom Client ge„nderte Feld ! // vorl„ufige Vorannahme: es gibt nur einen Vertrag pro Auftr+Vers !! SELECT &nAreaSB find &cAuf DO WHILE Auftrnr == aData1[1] .AND. Auftrnr > 0 .AND. .NOT. Eof() IF Verskz == aData1[2] FeldPut( nAreaSB, RecNo(), aDataD ) EXIT ENDIF SKIP ENDDO // die TT-Datei des Servers erg„nzen: SELECT &nAreaS // wurde dieser Auftrag schon ge„ndert?/ S->C-berspielt? : LOCATE FOR Auftrnr == aData1[1] .AND. Verskz == aData1[2] DO WHILE .NOT. Eof() cTTFlag := TTFlag IF .NOT. "2"$cTTFlag EXIT ENDIF CONTINUE ENDDO IF Eof() // wenn im Server dieser Satz nicht auch schon ge„ndert wurde: APPEND BLANK SatzPut( nAreaS, RecNo(), aData1, "1" ) APPEND BLANK SatzPut( nAreaS, RecNo(), aData2, "1" ) APPEND BLANK SatzPut( nAreaS, RecNo(), aDataD, "1" ) ELSE // wenn im Server auch schon dieser Satz ge„ndert wurde: // (FeldPut erg„nzt automatisch die TTFlag auf "1") SKIP Feldput( nAreaS, RecNo(), aDataD ) SKIP Feldput( nAreaS, RecNo(), aDataD ) ENDIF ENDIF // die TT-Datei des Client erg„nzen um (Auftr-Nr.) + TTFlag: SELECT &nAreaC SatzPut( nAreaC, RecNo(), aData1, "1" ) SKIP SatzPut( nAreaC, RecNo(), aData2, "1" ) SKIP SatzPut( nAreaC, RecNo(), aDataD, "1" ) RETURN nRecC