I use the latest download for mySQL (Entity Developer Version:2.0.021)
I have a few SP's. I can use all of them in the Entity Developer expected one. - There I always get the error: The value for the property "Name" is not valid. - But I don't know why.
This is the complete SP:
Code: Select all
--Procedure: rechnungvergeben
--DROP PROCEDURE IF EXISTS `rechnungvergeben`;
DELIMITER |
CREATE DEFINER = 'root'@'%' PROCEDURE `rechnungvergeben`
(
IN `uebergabeid` text,
IN `isbezahlt` boolean,
IN `zahlungsart` text,
IN `kundenname` text,
IN `kundenadresse` text,
IN `auftragsbetrag` decimal(10,2),
IN `bezahlterbetrag` decimal(10,2),
IN `mitarbeitername` text,
IN `FId` bigint,
IN `RNr` int,
IN `AuftragsJahr` year,
OUT `nReNummer` int
)
BEGIN
Declare _Pos, _ReNummer, _Menge, _Zuordnung INT;
Declare _AuftragsNummer, _TagabID BigInt;
Declare _DetailID BigInt;
Declare _Code, _Artikelbezeichnung VarChar(30);
Declare _Kassenanteil, _Selbstbehalt Decimal(10,2);
-- Zuerst muss geprüft werden, ob die Aufträge schon gespeichert sind
If RNr > 0 Then
-- Rechnungsnummer wird mit übergen
-- das bedeutet, dass der Auftrag
-- bezahlt wurde. - Jetzt müssen
-- die Artike abgebucht werden.
Begin
Declare _AbbuchenID BigInt;
Declare _MengeAbbuchen INT;
Declare _AbbuchenDone INT Default 0;
Declare _CursorAbbuchen Cursor For
Select ArtikelID, Menge From Tagesabschlussdetails
Where ReNummer=RNr And FirmenID=Fid
And Datum=AuftragsJahr;
Declare Continue Handler For Not Found Set _AbbuchenDone=1;
Open _CursorAbbuchen;
AbbuchenLoop: Loop
Fetch _CursorAbbuchen Into _AbbuchenID, _MengeAbbuchen;
If _AbbuchenDone=1 Then Leave AbbuchenLoop; End If;
Call Artikelabbuchen(_AbbuchenID, FId, _MengeAbbuchen);
End Loop AbbuchenLoop;
Set nReNummer = RNr;
End;
Else
-- Wenn keine Rechnungsnummer übergeben wurde
-- muss der komplette Vorgang ausgeführt werden
-- Daten in den Tagesabschluss schreiben
-- /Mastertable/
Insert Into Tagesabschluss(Druck, Name, Adresse,
BezDatum, Abgegeben,
BezArt, AufBetrag,
BezBetrag, FirmenID)
Values(0, Kundenname, Kundenadresse,
Current_Date(), Mitarbeitername,
Zahlungsart, auftragsbetrag,
BezahlterBetrag, Fid);
Set _TagabID=Last_Insert_ID();
-- Rechnungsnummer ermitteln
Select Max(ReNummer) From Tagesabschlussdetails
Where Datum=Year(Current_Date()) And FirmenID=FId
Group by ReNummer Into _ReNummer;
If _ReNummer Is NULL Then
Set _ReNummer=1;
Else
Set _ReNummer=_ReNummer+1;
End If;
-- Hier werden in einer Schleife alle
-- Auftragsnummer durchgearbeitet & in
-- die Childtabelle geschrieben
AuftragIDLoop: While Not(Trim(UebergabeID)="") Do
Set _Pos = Locate(";", UebergabeID);
If _Pos0 Then
Set _AuftragsNummer=Trim(Left(UebergabeID, _Pos-1));
Set UebergabeID = Substr(UebergabeID, _Pos+1);
-- Auftragstatus setzen
Update Auftrag Set Bewegung=isBezahlt, ReNummer=
_ReNummer, Zeitstempel=Current_TimeStamp Where
Id=_AuftragsNummer;
Begin
Declare _Done INT Default 0;
Declare _CursorDetail Cursor For
Select ArtikelID, Concat(InvNr, Lieferant,
ArtikelNr,
Groesse, Farbe) As Code,
ArtikelBezeichnung, Menge, Zuordnung from
AuftragDetails Where AuftragID=_AuftragsNummer
Order by Zuordnung;
Declare Continue Handler For Not Found Set _Done=1;
Open _CursorDetail;
DetailLoop: Loop
Fetch _CursorDetail Into _DetailID, _Code,
_ArtikelBezeichnung, _Menge, _Zuordnung;
If _Done=1 Then Leave DetailLoop; End If;
Insert Into Tagesabschlussdetails
(TagAbID, ReNummer, Datum,
ArtikelID, Code,
Artikelbezeichnung, Menge,
Zuordnung, FirmenID) Values
(_TagabID, _ReNummer,
Year(Current_Date), _DetailID,
_Code, _Artikelbezeichnung,
_Menge, _Zuordnung, FId);
-- Die Artikel vom Stamm abbuchen
-- aber nur dann, wenn sie bezahlt wurden
If isBezahlt = True Then
Call ArtikelAbbuchen(_DetailID, FId, _Menge);
End If;
End Loop DetailLoop;
Close _CursorDetail;
End;
-- Jetzt noch die Kassenpositionen
-- für den Tagesabschluss vorbereiten
Select Distinct Selbstbehalt, Gesamtpreis
From Auftragspositionen Where
AuftragID=_AuftragsNummer Into
_Selbstbehalt, _Kassenanteil;
If _Kassenanteil 0 Then
Insert Into TagAbKrankenkassenanteil
(TagAbID, Kassenanteil,
Selbstbehalt) Values
(_TagAbID, _Kassenanteil,
_Selbstbehalt);
End IF;
Set _Kassenanteil = 0;
End If;
End While AuftragIDLoop;
Set nReNummer=_ReNummer;
End If;
END|
DELIMITER ;
THX