#pragma +
// Name:						Window-Klassen
// Programmtyp:			Hilfsroutine für
//								Fakturierprogramm Ein- und Ausgangsrechnungen
//	Programmiersprache:	C++ (AT&T Standard 3.0)
// Computersystem:		Commodore AMIGA
// Betriebssystem:		AMIGA OS3.0 oder höher
// Autor:					Manfred Tremmel
// © Copyright:			1997-2000 by MT Graphic & Design
// Version:					V1.08
//
//    Copyright (C) 1997-2000 Manfred Tremmel
//
//    This program is free software; you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation; either version 2 of the License, or
//    (at your option) any later version.
//
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with this program; if not, write to the Free Software
//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA

// Includes:
#include <new.h>
#include <intuition/intuition.h>
#include <intuition/gadgetclass.h>
#include <iostream.h>
#include <stdio.h>

#include "MT-Rechnung.h"
#include "MTLocale.h"
#include "MTScreen.h"
#include "MTWindow.h"
#include "MTEditHook.h"
#include "MTAuswert.h"
#include "MTList.h"
#include "Datenbank.h"
#include "Einstellungen.h"
#include "Adressen.h"
#include "Artikel.h"
#include "Laender.h"
#include "Versand.h"
#include "RechnungArtikel.h"
#include "Rechnung.h"
#include "MTWinRech.h"
#include "MTWinSuch.h"
#include "MTWinArt.h"
#include "MTWinNavi.h"
#include "LocaleStrings.h"

extern Prefs				*MyPrefsPTR;
extern Laender				*MyLaenderPTR;
extern Artikel				*MyArtikelPTR;
extern OpenLocaleClass	*MyLocalePTR;
extern Mitarbeiter		*MyMitarbeiterPTR;

extern FillAppStrings	*MyAppStringsPTR;

// Surface-Pointer
extern APTR	surface;

MTRech_Gadget::MTRech_Gadget(MTWindow *Win) : MTAuswert( Win )
{
	R_ArtNrList			= new ListenClass(20);
	R_AnzahlList		= new ListenClass(20);
	R_BezeichnungList	= new ListenClass(40);
	R_EPreisList		= new ListenClass(40);
	R_GPreisList		= new ListenClass(40);

	First_LV		= 0;
	Select_LV	= 0;

	DB_Pos		= 0;

	GetIt			= ThisWindow->ThisScreen->FindWindow( NAVIGATOR_WINDOW );
	FindIt		= ThisWindow->ThisScreen->FindWindow( SUCHEN );
	SDWindow		= ThisWindow->ThisScreen->FindWindow( SCHNELLDRUCK_WIN );
};

MTRech_Gadget::~MTRech_Gadget()
{
	delete R_GPreisList;
	delete R_EPreisList;
	delete R_BezeichnungList;
	delete R_AnzahlList;
	delete R_ArtNrList;
};

void MTRech_Gadget::FillWindow()
{
	Gesperrt = FALSE;

	if( ThisWindow->BezWin )
	{
		ThisWindow->BezWin->BezWin = ThisWindow;
		if( GetIt )
		{
			if( DB_Pos > 1 )
			{
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[0] = ThisWindow->Fehler;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[1] = ThisWindow->Fehler;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[2] = ThisWindow->Fehler;
			}
			else
			{
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[0] = TRUE;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[1] = TRUE;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[2] = TRUE;
			}

			if( ThisRechnung->ElementeVorhanden() > 1 &&
				 ThisRechnung->ElementeVorhanden() > DB_Pos )
			{
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[3] = ThisWindow->Fehler;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[4] = ThisWindow->Fehler;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[5] = ThisWindow->Fehler;
			}
			else
			{
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[3] = TRUE;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[4] = TRUE;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[5] = TRUE;
			}

			if( (ThisRechnung->ElementeVorhanden() < 2) ||
				 (*Berechtigung == 0) )
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[6] = TRUE;
			else
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[6] = ThisWindow->Fehler;

			if( *Berechtigung == 2 )
			{
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[7] = ThisWindow->Fehler;
				if( ThisRechnung->ElementeVorhanden() > 0 )
					((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[8] = ThisWindow->Fehler;
				else
					((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[8] = TRUE;
			}
			else
			{
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[7]	= TRUE;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[8]	= TRUE;
			}

			((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[9]		= TRUE;
			((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[10]		= TRUE;

			if( (ThisRechnung->ElementeVorhanden()				== 0) ||
				 (*Berechtigung		== 0) )
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[11]	= TRUE;
			else
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[11]	= ThisWindow->Fehler;

			((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperren();

			SetGadgetAttrs( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL, GA_DISABLED, ThisWindow->Fehler, TAG_DONE );
		}

	}

	if( ThisWindow->Fehler )
		return;

	if( ThisRechnung->ElementeVorhanden() == 0 )
	{
		SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_KeineDaten], TAG_DONE );
		DB_Pos = 0;
		Gesperrt = TRUE;
		SetGadgetAttrs( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL, WINTEGERA_Long, (LONG)DB_Pos, GA_DISABLED, TRUE, TAG_DONE );
	}
	else
	{
		if( ThisRechnung->AktElementNr == 0 || DB_Pos == 0 )
			ThisRechnung->GetFirstElement();
		else
			ThisRechnung->GetElementNr( (ULONG)DB_Pos );
		ThisRechnung->LesenGesamtRech();

		if( *ThisRechnung->Status == 0 ||
			 *ThisRechnung->Status == ThisRechnung->GetUser() )
		{
			switch( *Berechtigung )
			{
				case 0:
					Gesperrt = TRUE;
					SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Sperre2], TAG_DONE );
					break;
				case 1:
					Gesperrt = TRUE;
					SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Sperre1], TAG_DONE );
					break;
				default:
					Gesperrt = FALSE || *ThisRechnung->Gebucht;
					SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, "", TAG_DONE );
					break;
			}
		}
		else
		{
			Gesperrt = TRUE;
			if( *ThisRechnung->Status == 0xffff )
				SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Geloescht], TAG_DONE );
			else
				SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Parallelverarb], WARGSA_Arg0, (ULONG)*ThisRechnung->Status, TAG_DONE );
		}
		DB_Pos = ThisRechnung->AktElementNr;
		SetGadgetAttrs( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL, WINTEGERA_Long, (LONG)DB_Pos, GA_DISABLED, FALSE, TAG_DONE );
	}

	SetGadgetAttrs( GetIt->gads[NAV_MAX], GetIt->Win, NULL, WARGSA_Format, "%lu", WARGSA_Arg0, (ULONG)ThisRechnung->ElementeVorhanden(), TAG_DONE );

	FillWindow2();

	if( ThisRechnung->ElementeVorhanden() == 0 ||
		 *Berechtigung == 0 )
	{
		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[0])], ThisWindow->Win, NULL, WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[1])], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[2])], ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[3])], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[4])], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[5])], ThisWindow->Win, NULL, WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );

		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[6])], ThisWindow->Win, NULL, WSTRINGFIELDA_Text, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[7])], ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );

		SetGadgetAttrs( ThisWindow->gads[(SummenFeld[16])], ThisWindow->Win, NULL, WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(SummenFeld[18])], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SumRueckgabeTXT[0] = '\0';
	}
	else
	{
		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[0])], ThisWindow->Win, NULL, WCYCLEA_Active, *RStatus, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatDateC( Buffer, &AktDatum[(*RStatus)] );
		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[1])], ThisWindow->Win, NULL, WSTRINGA_String, &Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[2])], ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[3])], ThisWindow->Win, NULL, WCYCLEA_Labels, (ULONG)MyPrefsPTR->CycleWaehrung, WCYCLEA_Active, *ThisRechnung->Waehrung_KZ, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[4])], ThisWindow->Win, NULL, WCYCLEA_Labels, AppStrings[MSG_PreisSys], WCYCLEA_Active, *ThisRechnung->Preissystem, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[5])], ThisWindow->Win, NULL, WCHECKBOXA_Checked, *ThisRechnung->MWStBefreit, GA_DISABLED, Gesperrt, TAG_DONE );

		SetGadgetAttrs( ThisWindow->gads[(KopfuZus[6])], ThisWindow->Win, NULL, WSTRINGFIELDA_Text, ThisRechnung->Bemerkung, GA_DISABLED, Gesperrt, TAG_DONE );
//		if(((Pos1Feld[7] && (*RStatus == ARS_Bezahlt)) ||
//			 ((Pos1Feld[7] == NULL) && (*RStatus == ERS_Bezahlt))) &&
//			 ThisRechnung->Barbeleg		== FALSE )
//			SetGadgetAttrs( ThisWindow->gads[(KopfuZus[7])], ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
//		else
			SetGadgetAttrs( ThisWindow->gads[(KopfuZus[7])], ThisWindow->Win, NULL, GA_DISABLED, TRUE, TAG_DONE );

		SetGadgetAttrs( ThisWindow->gads[(SummenFeld[16])], ThisWindow->Win, NULL, WCHECKBOXA_Checked, *ThisRechnung->Barbeleg, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatMoney( (STRPTR)Buffer, ThisRechnung->BezahltSumme[*ThisRechnung->Waehrung_KZ], MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );
		SetGadgetAttrs( ThisWindow->gads[(SummenFeld[18])], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatMoney( (STRPTR)SumRueckgabeTXT, ThisRechnung->RueckgabeSumme[*ThisRechnung->Waehrung_KZ], MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );
	}

	SetGadgetAttrs( ThisWindow->gads[(SummenFeld[17])], ThisWindow->Win, NULL, WARGSA_Format, SumBruttoWertTXT, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[(SummenFeld[19])], ThisWindow->Win, NULL, WARGSA_Format, SumRueckgabeTXT, TAG_DONE );

	FillPositionen();
};

// Positionsdaten füllen:
void MTRech_Gadget::FillPositionen()
{
	SetGadgetAttrs( ThisWindow->gads[(Pos1Feld[0])], ThisWindow->Win, NULL,	WLISTVIEWA_List, NULL, TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[(Pos1Feld[1])], ThisWindow->Win, NULL,	WLISTVIEWA_List, NULL, TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[(Pos1Feld[2])], ThisWindow->Win, NULL,	WLISTVIEWA_List, NULL, TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[(Pos1Feld[3])], ThisWindow->Win, NULL,	WLISTVIEWA_List, NULL, TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[(Pos1Feld[4])], ThisWindow->Win, NULL,	WLISTVIEWA_List, NULL, TAG_DONE);

	R_ArtNrList->EntferneAlle();
	R_AnzahlList->EntferneAlle();
	R_BezeichnungList->EntferneAlle();
	R_EPreisList->EntferneAlle();
	R_GPreisList->EntferneAlle();

	if( ThisRechnung->ElementeVorhanden() == 0 ||
		 *Berechtigung == 0 );
	else
	{
		ThisRechnung->MyRechnungArtikel->AktArtikel = ThisRechnung->MyRechnungArtikel->FirstArtikel;

		switch( *ArtRech )
		{
			case 0:
				SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[0])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahl_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[1])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahl_edh, TAG_DONE );
				break;
			case 1:
				SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[0])], ThisWindow->Win, NULL, WSTRINGA_Hook, &EAN_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[1])], ThisWindow->Win, NULL, WSTRINGA_Hook, &EAN_edh, TAG_DONE );
				break;
			default:
				SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[0])], ThisWindow->Win, NULL, WSTRINGA_Hook, &Dummy_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[1])], ThisWindow->Win, NULL, WSTRINGA_Hook, &Dummy_edh, TAG_DONE );
				break;
		}


		while( ThisRechnung->MyRechnungArtikel->AktArtikel )
		{
			MyArtikelPTR->ArtikelNrErmitteln(	Buffer, *ArtRech,
															ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.Artikelnummer,
															&ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten );
			R_ArtNrList->NeuerNode( Buffer );

			MyLocalePTR->FormatNumber( (STRPTR)Buffer, ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.Artikelanzahl, MyPrefsPTR->Daten->Nachkomma);
			R_AnzahlList->NeuerNode( Buffer );
			R_BezeichnungList->NeuerNode( ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.Artikelbez );
			MyLocalePTR->FormatMoney( (STRPTR)Buffer,	ThisRechnung->MyRechnungArtikel->AktArtikel->Einzelpreis[(*ThisRechnung->Waehrung_KZ)],
																	MyPrefsPTR->WaehrungPTR[(*ThisRechnung->Waehrung_KZ)] );
			R_EPreisList->NeuerNode( Buffer );
			MyLocalePTR->FormatMoney( (STRPTR)Buffer,	ThisRechnung->MyRechnungArtikel->AktArtikel->Pos_Summe_minus_ZuAb[(*ThisRechnung->Waehrung_KZ)],
																	MyPrefsPTR->WaehrungPTR[(*ThisRechnung->Waehrung_KZ)] );
			R_GPreisList->NeuerNode( Buffer );

			ThisRechnung->MyRechnungArtikel->AktArtikel = ThisRechnung->MyRechnungArtikel->AktArtikel->NextArtikel;
		}

	}

	SetGadgetAttrs( ThisWindow->gads[Pos1Feld[0]], ThisWindow->Win, NULL,	WLISTVIEWA_List, &R_ArtNrList->MyList,
																									WLISTVIEWA_Top, First_LV,
																									WLISTVIEWA_Selected, Select_LV,
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[Pos1Feld[1]], ThisWindow->Win, NULL,	WLISTVIEWA_List, &R_AnzahlList->MyList,
																									WLISTVIEWA_Top, First_LV,
																									WLISTVIEWA_Selected, Select_LV,
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[Pos1Feld[2]], ThisWindow->Win, NULL,	WLISTVIEWA_List, &R_BezeichnungList->MyList,
																									WLISTVIEWA_Top, First_LV,
																									WLISTVIEWA_Selected, Select_LV,
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[Pos1Feld[3]], ThisWindow->Win, NULL,	WLISTVIEWA_List, &R_EPreisList->MyList,
																									WLISTVIEWA_Top, First_LV,
																									WLISTVIEWA_Selected, Select_LV,
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[Pos1Feld[4]], ThisWindow->Win, NULL,	WLISTVIEWA_List, &R_GPreisList->MyList,
																									WLISTVIEWA_Top, First_LV,
																									WLISTVIEWA_Selected, Select_LV,
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);

	SetGadgetAttrs( ThisWindow->gads[Pos1Feld[9]], ThisWindow->Win, NULL, WGROUPA_ActivePage, ThisWindow->Karte, TAG_DONE );

	SetGadgetAttrs( ThisWindow->gads[SummenFeld[15]], ThisWindow->Win, NULL, WGROUPA_ActivePage, Karte2, TAG_DONE );

	FillEinzelPos();

	FillSummen();
};

// Positionsdaten füllen:
void MTRech_Gadget::FillEinzelPos()
{
	if( ThisRechnung->ElementeVorhanden()	== 0 ||
		 *Berechtigung								== 0 )
	{
		SetGadgetAttrs( ThisWindow->gads[(Pos1Feld[5])], ThisWindow->Win, NULL, GA_DISABLED, TRUE, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(Pos1Feld[6])], ThisWindow->Win, NULL, GA_DISABLED, TRUE, TAG_DONE );
		if( Pos1Feld[7] )
			SetGadgetAttrs( ThisWindow->gads[(Pos1Feld[7])], ThisWindow->Win, NULL, GA_DISABLED, TRUE, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(Pos1Feld[8])], ThisWindow->Win, NULL, GA_DISABLED, TRUE, TAG_DONE );
	}
	else
	{
		SetGadgetAttrs( ThisWindow->gads[Pos1Feld[5]], ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
		if( MyMitarbeiterPTR->UserDaten.Ber_Artikel == 2 )
			SetGadgetAttrs( ThisWindow->gads[Pos1Feld[6]], ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
		else
			SetGadgetAttrs( ThisWindow->gads[Pos1Feld[6]], ThisWindow->Win, NULL, GA_DISABLED, TRUE, TAG_DONE );

		if( R_ArtNrList->Anzahl	== 0 )
		{
			if( Pos1Feld[7] )
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[7]], ThisWindow->Win, NULL, GA_DISABLED, TRUE, TAG_DONE );

			SetGadgetAttrs( ThisWindow->gads[Pos1Feld[8]], ThisWindow->Win, NULL, GA_DISABLED, TRUE, TAG_DONE );
		}
		else
		{
			ThisRechnung->MyRechnungArtikel->FindArtikel( (ULONG)Select_LV );

			if( Pos1Feld[7] )
			{
				if((ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.ErsatzArtikel[0] +
					 ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.ErsatzArtikel[1] +
					 ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.ErsatzArtikel[2] +
					 ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.ErsatzArtikel[3] +
					 ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.ErsatzArtikel[4] +
					 ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.ErsatzArtikel[5] +
					 ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.ErsatzArtikel[6] +
					 ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.ErsatzArtikel[7] +
					 ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.ErsatzArtikel[8] +
					 ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.ErsatzArtikel[9]) == 0 )
					SetGadgetAttrs( ThisWindow->gads[Pos1Feld[7]], ThisWindow->Win, NULL, GA_DISABLED, TRUE, TAG_DONE );
				else
					SetGadgetAttrs( ThisWindow->gads[Pos1Feld[7]], ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
			}
			SetGadgetAttrs( ThisWindow->gads[Pos1Feld[8]], ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
		}
	}

	if( ThisRechnung->ElementeVorhanden()	== 0 ||
		 *Berechtigung								== 0 ||
		 R_ArtNrList->Anzahl						== 0 )
	{
		PosMengeVerfTXT[0]		= 0;
		PosMengeVorgTXT[0]		= 0;
		PosPreisEinheitTXT[0]	= 0;

		PosZuAbSummeTXT[0][0]	= 0;
		PosZuAbSummeTXT[1][0]	= 0;
		PosZuAbSummeTXT[2][0]	= 0;

		PosSummeWertTXT[0]		= 0;

		switch( ThisWindow->Karte )
		{
			case 0:
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[0]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[2]],	ThisWindow->Win, NULL, GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[4]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[6]],	ThisWindow->Win, NULL, WARGSA_Format, "", TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[8]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[10]],	ThisWindow->Win, NULL, WARGSA_Format, "", TAG_DONE );
				break;

			case 2:
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[1]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[3]],	ThisWindow->Win, NULL, GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[5]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[7]],	ThisWindow->Win, NULL, WARGSA_Format, "", TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[9]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[11]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[14]],	ThisWindow->Win, NULL, WCYCLEA_Labels, "", GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[15]],	ThisWindow->Win, NULL, WCYCLEA_Labels, "", GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[16]],	ThisWindow->Win, NULL, WCYCLEA_Labels, "", GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[17]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[18]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[19]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[24]],	ThisWindow->Win, NULL, WSTRINGFIELDA_Text, "", GA_DISABLED, TAG_DONE );
				break;

			default:
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[25]],	ThisWindow->Win, NULL, WSTRINGFIELDA_Text, "", GA_DISABLED, TRUE, TAG_DONE );
				break;
		}
	}
	else
	{
		STRPTR TextPTR1, TextPTR2, TextPTR3, TextPTR4, TextPTR5;

		if( ThisWindow->Karte < 2 )
		{
			TextPTR1 = R_ArtNrList->SucheNode( Select_LV );
			TextPTR2 = R_AnzahlList->SucheNode( Select_LV );
			TextPTR3 = R_BezeichnungList->SucheNode( Select_LV );
			TextPTR4 = R_EPreisList->SucheNode( Select_LV );
			TextPTR5 = R_GPreisList->SucheNode( Select_LV );
		}

		switch( ThisWindow->Karte )
		{
			case 0:
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[0]],	ThisWindow->Win, NULL, WSTRINGA_String, TextPTR1, GA_DISABLED, Gesperrt, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[2]],	ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[4]],	ThisWindow->Win, NULL, WSTRINGA_String, TextPTR2, GA_DISABLED, Gesperrt, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[6]],	ThisWindow->Win, NULL, WARGSA_Format, TextPTR3, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[8]],	ThisWindow->Win, NULL, WSTRINGA_String, TextPTR4, GA_DISABLED, Gesperrt, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[10]],	ThisWindow->Win, NULL, WARGSA_Format, TextPTR5, TAG_DONE );
				break;

			case 1:
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[1]],	ThisWindow->Win, NULL, WSTRINGA_String, TextPTR1, GA_DISABLED, Gesperrt, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[3]],	ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[5]],	ThisWindow->Win, NULL, WSTRINGA_String, TextPTR2, GA_DISABLED, Gesperrt, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[7]],	ThisWindow->Win, NULL, WARGSA_Format, TextPTR3, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[9]],	ThisWindow->Win, NULL, WSTRINGA_String, TextPTR4, GA_DISABLED, Gesperrt, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[11]],	ThisWindow->Win, NULL, WARGSA_Format, TextPTR5, TAG_DONE );

				MyLocalePTR->FormatNumber( (STRPTR)PosMengeVerfTXT, ( ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.AktBestand -
																						ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.ReservierteMenge ), MyPrefsPTR->Daten->Nachkomma);

				MyLocalePTR->FormatNumber( (STRPTR)PosMengeVorgTXT, ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.VorgemerkteMenge, MyPrefsPTR->Daten->Nachkomma);

				MyLocalePTR->FormatNumber( (STRPTR)PosPreisEinheitTXT, ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.PreisEinheit, MyPrefsPTR->Daten->Nachkomma);

				for( i = 0; i < 3; i++ )
				{
					SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[(14 + i)])],	ThisWindow->Win, NULL, WCYCLEA_Labels, MyPrefsPTR->CycleZuAb, WCYCLEA_Active, ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.ZuAbNummer[i], GA_DISABLED, Gesperrt, TAG_DONE );

					if( ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.ZuAbNummer[i] )
					{
						switch( ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.ZuAbTyp[i] )
						{
							case 0:
							case 5:
								MyLocalePTR->FormatNumber( (STRPTR)Buffer, ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.ZuAbWert[i], MyPrefsPTR->Daten->Nachkomma_Prozent);
								SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[(17+i)])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
								break;
							default:
								MyLocalePTR->FormatMoney( (STRPTR)Buffer,	ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.ZuAbWert[i],
																						MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );
								SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[(17+i)])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosWaehr_edh, TAG_DONE );
								break;
						}
						SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[(17+i)])],	ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
					}
					else
						SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[(17+i)])],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );

					MyLocalePTR->FormatMoney( (STRPTR)PosZuAbSummeTXT[i],	ThisRechnung->MyRechnungArtikel->AktArtikel->ZuAbPosition[i][*ThisRechnung->Waehrung_KZ],
																							MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );
				}

				MyLocalePTR->FormatMoney( (STRPTR)PosSummeWertTXT,	ThisRechnung->MyRechnungArtikel->AktArtikel->Positionssumme[*ThisRechnung->Waehrung_KZ],
																					MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );

				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[24]],	ThisWindow->Win, NULL, WSTRINGFIELDA_Text, ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.Zusatz, GA_DISABLED, Gesperrt, TAG_DONE );
				break;

			default:
				SetGadgetAttrs( ThisWindow->gads[Pos2Feld[25]],	ThisWindow->Win, NULL, WSTRINGFIELDA_Text, ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.Bemerkung, GA_DISABLED, Gesperrt, TAG_DONE );
				break;
		}
	}

	if( ThisWindow->Karte == 1 )
	{
		SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[12])],	ThisWindow->Win, NULL, WARGSA_Format, PosMengeVerfTXT, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[13])],	ThisWindow->Win, NULL, WARGSA_Format, PosMengeVorgTXT, TAG_DONE );

		SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[20])],	ThisWindow->Win, NULL, WARGSA_Format, PosZuAbSummeTXT[0], TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[21])],	ThisWindow->Win, NULL, WARGSA_Format, PosZuAbSummeTXT[1], TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[22])],	ThisWindow->Win, NULL, WARGSA_Format, PosZuAbSummeTXT[2], TAG_DONE );

		SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[23])],	ThisWindow->Win, NULL, WARGSA_Format, PosSummeWertTXT, TAG_DONE );

		SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[26])],	ThisWindow->Win, NULL, WARGSA_Format, PosPreisEinheitTXT, TAG_DONE );
	}
};

// Summenfelder füllen:
void MTRech_Gadget::FillSummen()
{
	if( ThisRechnung->ElementeVorhanden() == 0 ||
		 *Berechtigung == 0 )
	{
		SetGadgetAttrs( ThisWindow->gads[SummenFeld[0]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );

		SetGadgetAttrs( ThisWindow->gads[SummenFeld[1]],	ThisWindow->Win, NULL, WCYCLEA_Labels, "", GA_DISABLED, TRUE, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[SummenFeld[2]],	ThisWindow->Win, NULL, WCYCLEA_Labels, "", GA_DISABLED, TRUE, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[SummenFeld[3]],	ThisWindow->Win, NULL, WCYCLEA_Labels, "", GA_DISABLED, TRUE, TAG_DONE );

		SetGadgetAttrs( ThisWindow->gads[SummenFeld[4]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[SummenFeld[5]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[SummenFeld[6]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );

		SumZuAbSummeTXT[0][0]	= 0;
		SumZuAbSummeTXT[1][0]	= 0;
		SumZuAbSummeTXT[2][0]	= 0;

		SetGadgetAttrs( ThisWindow->gads[SummenFeld[10]],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );

		SumSkonSummeTXT[0]		= 0;
		SumMWStWertTXT[0]			= 0;
		SumNettoWertTXT[0]		= 0;
		SumBruttoWertTXT[0]		= 0;
	}
	else
	{
		MyLocalePTR->FormatMoney( (STRPTR)Buffer,	ThisRechnung->Versandkosten[*ThisRechnung->Waehrung_KZ],
																MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );
		SetGadgetAttrs( ThisWindow->gads[SummenFeld[0]], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );


		for( i = 0; i < 3; i++ )
		{
			SetGadgetAttrs( ThisWindow->gads[(SummenFeld[(1+i)])],	ThisWindow->Win, NULL, WCYCLEA_Labels, MyPrefsPTR->CycleZuAb, WCYCLEA_Active, ThisRechnung->ZuAbNummer[i], GA_DISABLED, Gesperrt, TAG_DONE );

			if( ThisRechnung->ZuAbNummer[i] )
			{
				switch( ThisRechnung->ZuAbTyp[i] )
				{
					case 0:
					case 5:
						MyLocalePTR->FormatNumber( (STRPTR)Buffer, ThisRechnung->ZuAbWert[i], MyPrefsPTR->Daten->Nachkomma_Prozent);
						SetGadgetAttrs( ThisWindow->gads[(SummenFeld[(4+i)])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
						break;
					default:
						MyLocalePTR->FormatMoney( (STRPTR)Buffer,	ThisRechnung->ZuAbWert[i],
																				MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );
						SetGadgetAttrs( ThisWindow->gads[(SummenFeld[(4+i)])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosWaehr_edh, TAG_DONE );
						break;
				}
				SetGadgetAttrs( ThisWindow->gads[(SummenFeld[(4+i)])],	ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
			}
			else
				SetGadgetAttrs( ThisWindow->gads[(SummenFeld[(4+i)])],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );

			MyLocalePTR->FormatMoney( (STRPTR)SumZuAbSummeTXT[i],	ThisRechnung->ZuAbSummen[i][*ThisRechnung->Waehrung_KZ],
																	MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );
		}

		MyLocalePTR->FormatNumber( (STRPTR)Buffer, *ThisRechnung->Skonto_Satz, MyPrefsPTR->Daten->Nachkomma_Prozent);
		SetGadgetAttrs( ThisWindow->gads[SummenFeld[10]],	ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );

		MyLocalePTR->FormatMoney( (STRPTR)SumSkonSummeTXT,	ThisRechnung->Skonto_Summe[*ThisRechnung->Waehrung_KZ],
																MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );

		if( *ThisRechnung->Waehrung_KZ > 1 )
			i = 1;
		else
			i = 0;
		MyLocalePTR->FormatMoney( (STRPTR)SumMWStWertTXT,	ThisRechnung->MWSt_Wert[i][0] + ThisRechnung->MWSt_Wert[i][1] + ThisRechnung->MWSt_Wert[i][2] + ThisRechnung->MWSt_Wert[i][3] +
																ThisRechnung->MWSt_Wert[i][4] + ThisRechnung->MWSt_Wert[i][5] + ThisRechnung->MWSt_Wert[i][6] + ThisRechnung->MWSt_Wert[i][7] +
																ThisRechnung->MWSt_Wert[i][8] + ThisRechnung->MWSt_Wert[i][9],
																MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );

		if( *ThisRechnung->Waehrung_KZ > 1 )
			i = 2;
		else
			i = 0;
		MyLocalePTR->FormatMoney( (STRPTR)SumNettoWertTXT,	ThisRechnung->Gesamtsumme[i],
															MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );

		i++;
		MyLocalePTR->FormatMoney( (STRPTR)SumBruttoWertTXT,	ThisRechnung->Gesamtsumme[i],
															MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );
	}

	SetGadgetAttrs( ThisWindow->gads[SummenFeld[7]],	ThisWindow->Win, NULL, WARGSA_Format, SumZuAbSummeTXT[0], TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[SummenFeld[8]],	ThisWindow->Win, NULL, WARGSA_Format, SumZuAbSummeTXT[1], TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[SummenFeld[9]],	ThisWindow->Win, NULL, WARGSA_Format, SumZuAbSummeTXT[2], TAG_DONE );

	SetGadgetAttrs( ThisWindow->gads[SummenFeld[11]],	ThisWindow->Win, NULL, WARGSA_Format, SumSkonSummeTXT, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[SummenFeld[12]],	ThisWindow->Win, NULL, WARGSA_Format, SumMWStWertTXT, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[SummenFeld[13]],	ThisWindow->Win, NULL, WARGSA_Format, SumNettoWertTXT, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[SummenFeld[14]],	ThisWindow->Win, NULL, WARGSA_Format, SumBruttoWertTXT, TAG_DONE );

	FillSummen2();
};

// Gadget-Auswertung:
WORD MTRech_Gadget::MTAuswertung( struct IntuiMessage* imsg, WORD DONE )
{
	UpDate					= FALSE;
	UpDate2					= FALSE;
	SperrePruefen			= FALSE;
	FillSum					= FALSE;
	FillPos					= FALSE;

	class MTAuswert *AktAuswert = NULL;

	if( ThisWindow->BezWin )
		AktAuswert = ThisWindow->BezWin->FirstAuswert;

	switch( imsg->Class )
	{
		// ein Button wurde betätigt (genaugenommen losgelassen)
		case IDCMP_IDCMPUPDATE:
			if( imsg->Code	== 0xffff )
				IconNummer = imsg->Qualifier;
			else
				IconNummer = GetTagData(GA_ID,0,(struct TagItem *)imsg->IAddress);

			// Rechnungsstatus
			if( IconNummer == KopfuZus[0] )
			{
				UpDate = CycleAuswert( RStatus );
				if( UpDate )
				{
					MyLocalePTR->FormatDateC( Buffer, &AktDatum[*RStatus] );
					SetGadgetAttrs( ThisWindow->gads[KopfuZus[0]], ThisWindow->Win, NULL, WSTRINGA_String, &Buffer, TAG_DONE );
				}
			}
			// Datum zum Status
			else if( IconNummer == KopfuZus[1] )
			{
				UpDate	= DatumAuswert( &AktDatum[*RStatus] );
			}
			// Datum auf aktuelles Tagesdatum setzen
			else if( IconNummer == KopfuZus[2] )
			{
				MyLocalePTR->AktDateTime(&AktDatum[*RStatus]);
				MyLocalePTR->FormatDateC( Buffer, &AktDatum[*RStatus] );
				SetGadgetAttrs( ThisWindow->gads[KopfuZus[1]], ThisWindow->Win, NULL, WSTRINGA_String, (STRPTR)Buffer, TAG_DONE );
				UpDate	= TRUE;
			}
			// Währung
			else if( IconNummer == KopfuZus[3] )
			{
				UpDate	= CycleAuswert( ThisRechnung->Waehrung_KZ );
				FillPos	= UpDate;
			}
			// Preissystem
			else if( IconNummer == KopfuZus[4] )
			{
				UpDate	= CycleAuswert( ThisRechnung->Preissystem );
				FillPos	= UpDate;
			}
			// Mehrwertsteuerbefreit
			else if( IconNummer == KopfuZus[5] )
			{
				*ThisRechnung->MWStBefreit = !(*ThisRechnung->MWStBefreit);
				UpDate	= TRUE;
				FillPos	= UpDate;
			}
			// Beleg buchen
			else if( IconNummer == KopfuZus[7] )
			{
				if( (UpDate = ThisRechnung->Buchen()) == TRUE)
					FillWindow();
				else
				{
					struct EasyStruct es = {	(ULONG)sizeof(struct EasyStruct),
														0L,
														(UBYTE *)AppStrings[MSG_ReQuest_Fehler],
														(UBYTE *)AppStrings[MSG_ReQuest_BuchFehler],
														(UBYTE *)AppStrings[MSG_ReQuest_OK] };
					WZ_LockWindow( ThisWindow->WinHandle );
					EasyRequest( ThisWindow->Win, &es, NULL );
					WZ_UnlockWindow( ThisWindow->WinHandle );
				}
			}
			// Artikelauflistung-Gruppe (Artikel/Preis/Bemerkung)
			else if( IconNummer == Pos1Feld[9] )
			{
				GetAttr( WGROUPA_ActivePage, ThisWindow->gads[IconNummer], (ULONG *)&ThisWindow->Karte );
				FillEinzelPos();
				if( ThisWindow->Karte == 2 )
					ActivateGadget( ThisWindow->gads[(Pos2Feld[25])], ThisWindow->Win, NULL);
			}
			// eine der Listen: Artikelnummer, Anzahl, Bezeichnung, Einzel- oder Gesamtpreis
			else if( IconNummer == Pos1Feld[0] ||
						IconNummer == Pos1Feld[1] ||
						IconNummer == Pos1Feld[2] ||
						IconNummer == Pos1Feld[3] ||
						IconNummer == Pos1Feld[4] )
			{
				Select_LV = GetTagData(WLISTVIEWA_Selected,0,(struct TagItem *)imsg->IAddress);
				GetAttr(WLISTVIEWA_Top, ThisWindow->gads[IconNummer], (ULONG *)&First_LV );
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[0]], ThisWindow->Win, NULL,
																						WLISTVIEWA_Top, First_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[1]], ThisWindow->Win, NULL,
																						WLISTVIEWA_Top, First_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[2]], ThisWindow->Win, NULL,
																						WLISTVIEWA_Top, First_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[3]], ThisWindow->Win, NULL,
																						WLISTVIEWA_Top, First_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[4]], ThisWindow->Win, NULL,
																						WLISTVIEWA_Top, First_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
				FillEinzelPos();
			}
			// Artikel hinzufügen
			else if( IconNummer == Pos1Feld[5] )
			{
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[0]], ThisWindow->Win, NULL,	WLISTVIEWA_List, NULL, TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[1]], ThisWindow->Win, NULL,	WLISTVIEWA_List, NULL, TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[2]], ThisWindow->Win, NULL,	WLISTVIEWA_List, NULL, TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[3]], ThisWindow->Win, NULL,	WLISTVIEWA_List, NULL, TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[4]], ThisWindow->Win, NULL,	WLISTVIEWA_List, NULL, TAG_DONE);

				ThisRechnung->MyRechnungArtikel->NeuerArtikel();

				R_ArtNrList->NeuerNode( "" );
				R_AnzahlList->NeuerNode( "" );
				R_BezeichnungList->NeuerNode( "" );
				R_EPreisList->NeuerNode( "" );
				R_GPreisList->NeuerNode( "" );

				Select_LV = R_ArtNrList->Anzahl - 1;
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[0]], ThisWindow->Win, NULL,	WLISTVIEWA_List, &R_ArtNrList->MyList,
																												WLISTVIEWA_Visible, Select_LV,
																												WLISTVIEWA_Selected, Select_LV,
																												TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[1]], ThisWindow->Win, NULL,	WLISTVIEWA_List, &R_AnzahlList->MyList,
																												WLISTVIEWA_Visible, Select_LV,
																												WLISTVIEWA_Selected, Select_LV,
																												TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[2]], ThisWindow->Win, NULL,	WLISTVIEWA_List, &R_BezeichnungList->MyList,
																												WLISTVIEWA_Visible, Select_LV,
																												WLISTVIEWA_Selected, Select_LV,
																												TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[3]], ThisWindow->Win, NULL,	WLISTVIEWA_List, &R_EPreisList->MyList,
																												WLISTVIEWA_Visible, Select_LV,
																												WLISTVIEWA_Selected, Select_LV,
																												TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[4]], ThisWindow->Win, NULL,	WLISTVIEWA_List, &R_GPreisList->MyList,
																												WLISTVIEWA_Visible, Select_LV,
																												WLISTVIEWA_Selected, Select_LV,
																												TAG_DONE);
				GetAttr(WLISTVIEWA_Top, ThisWindow->gads[Pos1Feld[0]], (ULONG *)&First_LV );

				ThisRechnung->MyRechnungArtikel->AktArtikel->Artikelfehler = 8;
				SperrePruefen = TRUE;
			}
			// Artikel neu anlegen und hinzufügen
			else if( IconNummer == Pos1Feld[6] )
			{
				MTWindow *ArtWin	= ThisWindow->ThisScreen->FindWindow( ARTIKEL );
				if( ArtWin )
				{
					ArtWin->MTCloseWindow();
					((MTArt_Gadget *)ArtWin->FirstAuswert)->RechArtNeu		= TRUE;
					ThisWindow->ThisScreen->ExclusiveAuswertung( ArtWin );

					ThisRechnung->MyRechnungArtikel->NeuerArtikel();
					ThisRechnung->MyRechnungArtikel->GetElementNr( ThisRechnung->MyRechnungArtikel->AktArtikel->DB_Position );
					ThisRechnung->MyRechnungArtikel->Daten->Artikelnummer	= MyArtikelPTR->AktElementNr;
					ThisRechnung->MyRechnungArtikel->UpDateElement();

	            Select_LV		= R_ArtNrList->Anzahl;

					UpDate	= ThisRechnung->VersandErmittelt;

					SperrePruefen	= TRUE;
					FillPos			= TRUE;
					ActivateGadget( ThisWindow->gads[Pos2Feld[4]], ThisWindow->Win, NULL);
				}
			}
			// Ersatzartikelauflösung (Ausgangsrechnung)
			else if( IconNummer != NULL &&
						IconNummer == Pos1Feld[7] )
			{
				ThisRechnung->MyRechnungArtikel->FindArtikel( Select_LV );

				SperrePruefen = TRUE;

				for( LongWert = 0; LongWert < 10; LongWert++ )
				{
					ErsatzArt[LongWert]		=	ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.ErsatzArtikel[LongWert];
					ErsatzMenge[LongWert]	=	ThisRechnung->MyRechnungArtikel->AktArtikel->ArtikelDaten.ErsatzMenge[LongWert] *
														ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.Artikelanzahl;
				}

				IconNummer						= 0;
					
				for( LongWert = 0; LongWert < 10; LongWert++ )
				{
					if( ErsatzArt[LongWert] > 0 )
					{
						MyArtikelPTR->GetElementNr( (ULONG)ErsatzArt[LongWert] );

						if( IconNummer == 0 )
							ThisRechnung->MyRechnungArtikel->GetElementNr( ThisRechnung->MyRechnungArtikel->AktArtikel->DB_Position );
						else
							ThisRechnung->MyRechnungArtikel->NeuerArtikel();

						ThisRechnung->MyRechnungArtikel->Daten->Artikelnummer		= ErsatzArt[LongWert];
						ThisRechnung->MyRechnungArtikel->Daten->Artikelanzahl		= ErsatzMenge[LongWert];

						ThisRechnung->MyRechnungArtikel->UpDateElement();

						IconNummer++;
					}
				}
				UpDate		= ThisRechnung->VersandErmittelt;
				FillPos		= TRUE;
			}
			// Artikel löschen
			else if( IconNummer == Pos1Feld[8] )
			{
				SperrePruefen = ThisRechnung->MyRechnungArtikel->LoescheArtikel( Select_LV );

				if( Select_LV > 0 )
				{
					Select_LV--;
					if( Select_LV < First_LV )
						First_LV--;
				}

				UpDate		= ThisRechnung->VersandErmittelt;
				FillPos		= TRUE;
			}
			// Artikelnummer oder Suchfunktion, Liste und Detaildarstellung
			else if( IconNummer == Pos2Feld[0] ||
						IconNummer == Pos2Feld[1] ||
						IconNummer == Pos2Feld[2] ||
						IconNummer == Pos2Feld[3] )
			{
				if( IconNummer == Pos2Feld[2] ||
					 IconNummer == Pos2Feld[3] )
				{
					((MTSuch_Gadget *)FindIt->FirstAuswert)->AktDB			= MyArtikelPTR;

					ThisWindow->ThisScreen->ExclusiveAuswertung( FindIt );
					if( ((MTSuch_Gadget *)FindIt->FirstAuswert)->DB_Pos )
						MyAppStringsPTR->GetCSVWert( ((MTSuch_Gadget *)FindIt->FirstAuswert)->SelectPosText, Buffer, *ArtRech );
					else
					{
						if( IconNummer == Pos2Feld[3] )
							IconNummer = Pos2Feld[1];
						else
							IconNummer = Pos2Feld[0];
					}
				}
				if( IconNummer == Pos2Feld[0] ||
					 IconNummer == Pos2Feld[1] )
				{
					GetAttr(WSTRINGA_String, ThisWindow->gads[IconNummer], (ULONG *)&TextPTR );
					strcpy( Buffer, TextPTR );
				}
				if( strcmp( Buffer, R_ArtNrList->SucheNode( Select_LV ) ) != 0 )
				{
					if( MyArtikelPTR->ArtikelLesen( Buffer, *ArtRech, 0L ) )
					{
						ThisRechnung->MyRechnungArtikel->GetElementNr( ThisRechnung->MyRechnungArtikel->AktArtikel->DB_Position );
						ThisRechnung->MyRechnungArtikel->Daten->Artikelnummer	= MyArtikelPTR->AktElementNr;
						ThisRechnung->MyRechnungArtikel->UpDateElement();

						UpDate	= ThisRechnung->VersandErmittelt;
					}
					else
					{
						ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.Artikelnummer	= 0;
						ThisRechnung->MyRechnungArtikel->AktArtikel->Artikelfehler = 8;
					}
					SperrePruefen	= TRUE;
					FillPos			= TRUE;
				}
			}
			// Artikelanzahl
			else if( IconNummer == Pos2Feld[4] ||
						IconNummer == Pos2Feld[5] )
			{
				UpDate = DoubleAuswert( &ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.Artikelanzahl,
													MyPrefsPTR->Daten->Nachkomma );
				if( UpDate )
				{
					ThisRechnung->MyRechnungArtikel->GetElementNr( ThisRechnung->MyRechnungArtikel->AktArtikel->DB_Position );
					ThisRechnung->MyRechnungArtikel->Daten->Artikelanzahl	= ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.Artikelanzahl;
					ThisRechnung->MyRechnungArtikel->UpDateElement();

					UpDate			= ThisRechnung->VersandErmittelt;
					FillPos			= TRUE;
					SperrePruefen	= TRUE;
				}
			}
			// Einzelpreis
			else if( IconNummer == Pos2Feld[8] ||
						IconNummer == Pos2Feld[9] )
			{
				UpDate = MoneyAuswert(	&ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.Artikelpreis,
												MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );
				if( UpDate )
				{
					ThisRechnung->MyRechnungArtikel->GetElementNr( ThisRechnung->MyRechnungArtikel->AktArtikel->DB_Position );
					ThisRechnung->MyRechnungArtikel->Daten->Artikelpreis	=
															ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.Artikelpreis;
					ThisRechnung->MyRechnungArtikel->Daten->Preisaender	= TRUE;
					ThisRechnung->MyRechnungArtikel->UpDateElement();
					UpDate			= FALSE;
					SperrePruefen	= TRUE;
					FillPos			= TRUE;
				}
			}
			// Zu-/Abschlag
			else if( IconNummer == Pos2Feld[14] ||
						IconNummer == Pos2Feld[15] ||
						IconNummer == Pos2Feld[16] )
			{
				if( IconNummer == Pos2Feld[14] )
					i = 0;
				else if( IconNummer == Pos2Feld[15] )
					i = 1;
				else
					i = 2;
				UpDate	= CycleAuswert( &ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.ZuAbNummer[i] );
				if( UpDate )
				{
					ThisRechnung->MyRechnungArtikel->GetElementNr( ThisRechnung->MyRechnungArtikel->AktArtikel->DB_Position );
					ThisRechnung->MyRechnungArtikel->Daten->ZuAbNummer[i]	=
															ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.ZuAbNummer[i];
					ThisRechnung->MyRechnungArtikel->UpDateElement();
					FillPos	= TRUE;
					UpDate	= FALSE;
				}
			}
			// Zu-/Absschlagswert
			else if( IconNummer == Pos2Feld[17] ||
						IconNummer == Pos2Feld[18] ||
						IconNummer == Pos2Feld[19] )
			{
				if( IconNummer == Pos2Feld[17] )
					i = 0;
				else if( IconNummer == Pos2Feld[18] )
					i = 1;
				else
					i = 2;
				if( ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.ZuAbNummer[i] == 0 ||
					 ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.ZuAbNummer[i] == 5 )
					UpDate = DoubleAuswert( &ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.ZuAbWert[i],
													MyPrefsPTR->Daten->Nachkomma_Prozent );
				else
					UpDate = MoneyAuswert(	&ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.ZuAbWert[i],
													MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );
				if( UpDate )
				{
					ThisRechnung->MyRechnungArtikel->GetElementNr( ThisRechnung->MyRechnungArtikel->AktArtikel->DB_Position );
					ThisRechnung->MyRechnungArtikel->Daten->ZuAbWert[i]	=
															ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.ZuAbWert[i];
					ThisRechnung->MyRechnungArtikel->UpDateElement();
					FillPos	= TRUE;
					UpDate	= FALSE;
				}
			}
			// Bemerkungstexte (Position)
			else if( IconNummer == Pos2Feld[25] )
			{
				UpDate = TextFeldAuswert( ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.Bemerkung );
				if( UpDate )
				{
					ThisRechnung->MyRechnungArtikel->GetElementNr( ThisRechnung->MyRechnungArtikel->AktArtikel->DB_Position );
					strcpy(ThisRechnung->MyRechnungArtikel->Daten->Bemerkung, ThisRechnung->MyRechnungArtikel->AktArtikel->ZuOrdnungTab.Bemerkung);
					ThisRechnung->MyRechnungArtikel->UpDateElement();
					UpDate	= FALSE;
				}
			}
			// Versandkosten
			else if( IconNummer == SummenFeld[0] )
			{
				UpDate = MoneyAuswert(	ThisRechnung->DBVersandkosten,
												MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );
				FillSum = UpDate;
			}
			// Zu-/Abschlag (Rechnungsebene)
			else if( IconNummer == SummenFeld[1] )
			{
				UpDate = CycleAuswert( &ThisRechnung->ZuAbNummer[0] );
				FillSum = UpDate;
			}
			// Zu-/Abschlag (Rechnungsebene)
			else if( IconNummer == SummenFeld[2] )
			{
				UpDate = CycleAuswert( &ThisRechnung->ZuAbNummer[1] );
				FillSum = UpDate;
			}
			// Zu-/Abschlag (Rechnungsebene)
			else if( IconNummer == SummenFeld[3] )
			{
				UpDate = CycleAuswert( &ThisRechnung->ZuAbNummer[2] );
				FillSum = UpDate;
			}
			// Zu-/Abschlagswert (Rechnungsebene)
			else if( IconNummer == SummenFeld[4] ||
						IconNummer == SummenFeld[5] ||
						IconNummer == SummenFeld[6] )
			{
				if( IconNummer == SummenFeld[4] )
					i = 0;
				else if( IconNummer == SummenFeld[5] )
					i = 1;
				else
					i = 2;

				if( ThisRechnung->ZuAbTyp[i] == 0 ||
					 ThisRechnung->ZuAbTyp[i] == 5 )
					UpDate = DoubleAuswert( &ThisRechnung->ZuAbWert[i],
													MyPrefsPTR->Daten->Nachkomma_Prozent );
				else
					UpDate = MoneyAuswert(	&ThisRechnung->ZuAbWert[i],
													MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );
				FillSum = UpDate;
			}
			// Skontosatz
			else if( IconNummer == SummenFeld[10] )
			{
				UpDate = DoubleAuswert( ThisRechnung->Skonto_Satz, MyPrefsPTR->Daten->Nachkomma_Prozent );
				FillSum = UpDate;
			}
			// Zusatztext, Rechnungsebene
			else if( IconNummer == KopfuZus[6] )
			{
				UpDate = TextFeldAuswert( ThisRechnung->Bemerkung );
			}
			// Summen/Zusatztext Karteireiter
			else if( IconNummer == SummenFeld[15] )
			{
				GetAttr( WGROUPA_ActivePage, ThisWindow->gads[IconNummer], (ULONG *)&Karte2 );
				if( Karte2 == 1 )
					ActivateGadget( ThisWindow->gads[(KopfuZus[6])], ThisWindow->Win, NULL);
			}
			// Barbelegkennzeichen
			else if( IconNummer == SummenFeld[16] )
			{
				*ThisRechnung->Barbeleg = !(*ThisRechnung->Barbeleg);
				UpDate = TRUE;
				FillSum = UpDate;
			}
			// Bezahltsumme
			else if( IconNummer == SummenFeld[18] )
			{
				UpDate = MoneyAuswert( ThisRechnung->Bezahlt, MyPrefsPTR->WaehrungPTR[*ThisRechnung->Waehrung_KZ] );
				FillSum = UpDate;
			}
			// Individuelle Felder der Ein- oder Ausgangsrechnungen
			else
				MTAuswertungGadget();


			if( UpDate )
			{
				ThisRechnung->UpDateElement();
				UpDate = FALSE;
				SperrePruefen = TRUE;
			}
			if( FillPos )
			{
				SetGadgetAttrs( ThisWindow->gads[KopfuZus[3]], ThisWindow->Win, NULL, WCYCLEA_Active, *ThisRechnung->Waehrung_KZ, TAG_DONE );
				FillPositionen();
			}
			else if( FillSum )
				FillSummen();

			break;
		case IDCMP_RAWKEY:
			switch( imsg->Code )
			{
				case 0:
					if( GetAttr(WINTEGERA_Long, GetIt->gads[NAV_NUMMER], (ULONG *)&LongWert ) )
					{
						if( LongWert > ThisRechnung->ElementeVorhanden() )
							LongWert = ThisRechnung->ElementeVorhanden();
						if( LongWert < 1 )
							LongWert = 1;
						ThisRechnung->GetElementNr( (ULONG)LongWert );
						UpDate2 = TRUE;
					}
					break;
				case 1:
					if( SDWindow )
					{
						MTSchnellDruckInit();
						ThisWindow->ThisScreen->ExclusiveAuswertung( SDWindow );
					}
					break;
				case 76:
				case 77:
					LongWert = Select_LV;

					if( imsg->Code						== 76	&&
						 Select_LV						> 0	&&
						 R_ArtNrList->Anzahl			> 0 )
						Select_LV--;
					else if(	imsg->Code				== 77	&&
								Select_LV				< (R_ArtNrList->Anzahl - 1) &&
								R_ArtNrList->Anzahl	> 0 )
						Select_LV++;

					if( LongWert != Select_LV )
					{
						SetGadgetAttrs( ThisWindow->gads[Pos1Feld[0]], ThisWindow->Win, NULL,
																					WLISTVIEWA_Visible, Select_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
						SetGadgetAttrs( ThisWindow->gads[Pos1Feld[1]], ThisWindow->Win, NULL,
																					WLISTVIEWA_Visible, Select_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
						SetGadgetAttrs( ThisWindow->gads[Pos1Feld[2]], ThisWindow->Win, NULL,
																					WLISTVIEWA_Visible, Select_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
						SetGadgetAttrs( ThisWindow->gads[Pos1Feld[3]], ThisWindow->Win, NULL,
																					WLISTVIEWA_Visible, Select_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
						SetGadgetAttrs( ThisWindow->gads[Pos1Feld[4]], ThisWindow->Win, NULL,
																					WLISTVIEWA_Visible, Select_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
						GetAttr(WLISTVIEWA_Top, ThisWindow->gads[Pos1Feld[0]], (ULONG *)&First_LV );

						if( (imsg->Qualifier & IEQUALIFIER_RALT) &&
							 (ThisWindow->Karte == 0) )
						{
							if( imsg->Code	== 76)
								ThisRechnung->MyRechnungArtikel->PositionRauf();
							else
								ThisRechnung->MyRechnungArtikel->PositionRunter();
							FillPositionen();
						}
						else
							FillEinzelPos();
					}
					break;
			}
			if( ( imsg->Qualifier & IEQUALIFIER_LSHIFT ) ||
				 ( imsg->Qualifier & IEQUALIFIER_RSHIFT ) ||
				 ( imsg->Qualifier & IEQUALIFIER_LALT ) ||
				 ( imsg->Qualifier & IEQUALIFIER_RALT ))
			{
				if( imsg->Code > 79 &&
					 imsg->Code < 90 )
				{
					while( AktAuswert )
					{
						DONE = AktAuswert->MTAuswertung( imsg, DONE );
						AktAuswert = AktAuswert->NextAusw;
					}
				}
			}
			else
			{
				switch( imsg->Code )
				{
					case 80:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[0] )
						{
							ThisRechnung->GetFirstElement();
							UpDate2 = TRUE;
						}
						break;
					case 81:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[1] )
						{
							ThisRechnung->Get10PrevElement();
							UpDate2 = TRUE;
						}
						break;
					case 82:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[2] )
						{
							ThisRechnung->GetPrevElement();
							UpDate2 = TRUE;
						}
						break;
					case 83:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[3] )
						{
							ThisRechnung->GetNextElement();
							UpDate2 = TRUE;
						}
						break;
					case 84:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[4] )
						{
							ThisRechnung->Get10NextElement();
							UpDate2 = TRUE;
						}
						break;
					case 85:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[5] )
						{
							ThisRechnung->GetLastElement();
							UpDate2 = TRUE;
						}
						break;
					case 86:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[6] )
						{
							((MTSuch_Gadget *)FindIt->FirstAuswert)->AktDB			= ThisRechnung;
						
							ThisWindow->ThisScreen->ExclusiveAuswertung( FindIt );
							if( ((MTSuch_Gadget *)FindIt->FirstAuswert)->DB_Pos )
							{
								ThisRechnung->GetElementNr( ((MTSuch_Gadget *)FindIt->FirstAuswert)->DB_Pos );
								UpDate2 = TRUE;
							}
						}
						break;
					case 87:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[7] )
						{
							ThisRechnung->NeuerDatensatz();
							SetGadgetAttrs( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL, WINTEGERA_Long, (LONG)ThisRechnung->AktElementNr, TAG_DONE );
							UpDate2 = TRUE;
						}
						break;
					case 89:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[8] )
						{
							ThisRechnung->LoeschenAkt();
							UpDate2 = TRUE;
						}
						break;
				}
			}
			break;
		case IDCMP_VANILLAKEY:
			if( !ThisWindow->Fehler )
			{
				switch( imsg->Code )
				{
					case (ULONG)'#':
						ActivateWindow( GetIt->Win );
						ActivateGadget( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL);
						break;
//					case (ULONG)'u':
//						ThisRechnung->UnDo();
//						UpDate2 = TRUE;
//						break;
//					case (ULONG)'U':
//						ThisRechnung->ReDo();
//						UpDate2 = TRUE;
//						break;
					case 27:
						DONE	= 1;
						if( GetIt && ThisWindow->BezWin )
						{
							ThisWindow->BezWin->BezWin = NULL;
							((MTNav_Gadget *)(GetIt->FirstAuswert))->AlleSperren();
							SetGadgetAttrs( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL, WINTEGERA_Long, 0, GA_DISABLED, TRUE, TAG_DONE );
							SetGadgetAttrs( GetIt->gads[NAV_MAX], GetIt->Win, NULL, WARGSA_Format, "", TAG_DONE );
						}
						break;
				}
			}
			break;
		// Window Aktiviert
		case IDCMP_ACTIVEWINDOW:
			if( ThisWindow->ShortCuts[0] == 0 )
			{
				SetGadgetAttrs( ThisWindow->gads[(KopfuZus[1])], ThisWindow->Win, NULL, WSTRINGA_Hook, &DatKurz_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[4])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[5])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[8])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosNegWaehr_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[(Pos2Feld[9])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosNegWaehr_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[(SummenFeld[0])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosWaehr_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[(SummenFeld[10])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[(SummenFeld[18])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosWaehr_edh, TAG_DONE );
				HooksSetzen();
			}
			FillWindow();
			break;
		// Window schliessen
		case IDCMP_CLOSEWINDOW:
			if( ThisWindow->BezWin && !ThisWindow->Fehler )
			{
				ThisWindow->BezWin->BezWin = NULL;
				if( GetIt )
				{
					((MTNav_Gadget *)(GetIt->FirstAuswert))->AlleSperren();
					SetGadgetAttrs( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL, WINTEGERA_Long, 0, GA_DISABLED, TRUE, TAG_DONE );
					SetGadgetAttrs( GetIt->gads[NAV_MAX], GetIt->Win, NULL, WARGSA_Format, "", TAG_DONE );
				}
			}
			break;
	}

	if(ThisRechnung->Rechnungsfehler > 0	||
		SperrePruefen								||
		ThisWindow->Fehler )
	{
		if ( ThisRechnung->Rechnungsfehler == 0 )
		{
			MTRech_Art* SuchArtikel = ThisRechnung->MyRechnungArtikel->FirstArtikel;

			LongWert = 0;
			while( SuchArtikel && (SuchArtikel->Artikelfehler == 0) )
			{
				LongWert++;
				SuchArtikel = SuchArtikel->NextArtikel;
			}

			if( SuchArtikel )
			{
				ThisRechnung->MyRechnungArtikel->AktArtikel = SuchArtikel;
				ThisWindow->Fehler = TRUE;

				Select_LV = LongWert;

				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[0]],	ThisWindow->Win, NULL,
																				WLISTVIEWA_Visible, Select_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[1]],	ThisWindow->Win, NULL,
																				WLISTVIEWA_Visible, Select_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[2]],	ThisWindow->Win, NULL,
																				WLISTVIEWA_Visible, Select_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[3]],	ThisWindow->Win, NULL,
																				WLISTVIEWA_Visible, Select_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
				SetGadgetAttrs( ThisWindow->gads[Pos1Feld[4]],	ThisWindow->Win, NULL,
																				WLISTVIEWA_Visible, Select_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
				GetAttr(WLISTVIEWA_Top, ThisWindow->gads[Pos1Feld[0]], (ULONG *)&First_LV );
				FillEinzelPos();

				if( SuchArtikel->Artikelfehler & 1)
				{
					if( ThisWindow->Karte == 0 )
						IconNummer = Pos2Feld[0];
					else
					{
						IconNummer = Pos2Feld[1];
						ThisWindow->Karte = 1;
					}
					SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Geloescht], TAG_DONE );
					DisplayBeep(ThisWindow->ThisScreen->ThisScreen);
				}
				else if( SuchArtikel->Artikelfehler & 2)
				{
					if( ThisWindow->Karte == 0 )
						IconNummer = Pos2Feld[4];
					else
					{
						IconNummer = Pos2Feld[5];
						ThisWindow->Karte = 1;
					}
					if( Pos1Feld[7] )
						MyLocalePTR->FormatNumber( (STRPTR)Fehler1, SuchArtikel->ArtikelDaten.Verpackung, MyPrefsPTR->Daten->Nachkomma);
					else
						MyLocalePTR->FormatNumber( (STRPTR)Fehler1, SuchArtikel->ArtikelDaten.VerpackungLief, MyPrefsPTR->Daten->Nachkomma);
					SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Teil], WARGSA_Arg0, Fehler1, TAG_DONE );
					DisplayBeep(ThisWindow->ThisScreen->ThisScreen);
				}
				else if( SuchArtikel->Artikelfehler & 4)
				{
					if( ThisWindow->Karte == 0 )
						IconNummer = Pos2Feld[4];
					else
					{
						IconNummer = Pos2Feld[5];
						ThisWindow->Karte = 1;
					}
					MyLocalePTR->FormatNumber( (STRPTR)Fehler1, SuchArtikel->MengeMerker, MyPrefsPTR->Daten->Nachkomma);
					MyArtikelPTR->ArtikelNrErmitteln(	Fehler2, *ArtRech,
																	SuchArtikel->ZuOrdnungTab.Artikelnummer,
																	&SuchArtikel->ArtikelDaten );
					SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Menge],
																									WARGSA_Arg0, Fehler1,
																									WARGSA_Arg1, Fehler2 );
					DisplayBeep(ThisWindow->ThisScreen->ThisScreen);
				}
				else if( SuchArtikel->Artikelfehler & 8)
				{
					if( ThisWindow->Karte == 0 )
						IconNummer = Pos2Feld[0];
					else
					{
						IconNummer = Pos2Feld[1];
						ThisWindow->Karte = 1;
					}
					SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Artikel], TAG_DONE );
					if( SuchArtikel->ZuOrdnungTab.Artikelnummer > 0 )
						DisplayBeep(ThisWindow->ThisScreen->ThisScreen);
				}

				if( !ActivateGadget( ThisWindow->gads[IconNummer], ThisWindow->Win, NULL) )
				{
					GetIt->MTOpenWindow();
					ThisWindow->MTOpenWindow();
					SetGadgetAttrs( ThisWindow->gads[Pos1Feld[4]], ThisWindow->Win, NULL, WGROUPA_ActivePage, ThisWindow->Karte, TAG_DONE );
					ActivateGadget( ThisWindow->gads[IconNummer], ThisWindow->Win, NULL);
				}
				else
					FillWindow();
			}
			else
			{
				ThisWindow->Fehler = FALSE;
				FillWindow();
			}
		}
		else
		{
			SperreKopf();
		}
	}

	if( UpDate2 )
	{
		DB_Pos = ThisRechnung->AktElementNr;
		First_LV		= 0;
		Select_LV	= 0;
		ThisWindow->Karte	= 0;
		Karte2		= 0;
		FillWindow();
	}

	return DONE;
};

