Arkadiusz Kosela Support IT
Temat: [Procedura] - Powiadomienie email jak pogrupować te same...
ALTER procedure [dbo].[MAGSRC_InformacjaOAsortymencie]@IdUzytkownika numeric, @IdObiektu numeric
as
declare @errmsg varchar(255)
DECLARE @htmlBody NVARCHAR(MAX)
DECLARE @nazwakon VARCHAR(255)
declare @email varchar(255)
DECLARE @NUMERZAM VARCHAR(255)
DECLARE @IDUZYTKOWNIKA_ VARCHAR(255)
declare @imie varchar(255)
declare @temat varchar(255)
declare @IDZAM2 varchar(255)
declare @ilezam varchar(255)
declare @NRZAM varchar(255)
begin
set xact_abort on
set transaction isolation level REPEATABLE READ
begin transaction
SELECT @NUMERZAM=ZAM.NUMER,@NRZAM=ZAM.ID_ZAMOWIENIA FROM ZAMOWIENIE AS ZAM
INNER JOIN ZLECENIE_PRODUKCYJNE AS ZLM ON ZLM.ID_ZAMOWIENIA=ZAM.ID_ZAMOWIENIA
WHERE ZLM.ID_ZLECENIA=@IdObiektu AND ZAM.ID_MAGAZYNU=2 AND ZAM.ID_MAGAZYNU=2 AND ZAM.ID_FIRMY=1
SELECT @IDUZYTKOWNIKA_=ZAM2.ID_UZYTKOWNIKA FROM ZAMOWIENIE AS ZAM2
WHERE ZAM2.ID_MAGAZYNU=1 AND ZAM2.NUMER=@NUMERZAM
select @email=E_MAIL
FROM ADRESY_PRACOWNIKA AS AP
INNER JOIN PRACOWNIK AS P
ON AP.ID_PRACOWNIKA=P.ID_PRACOWNIKA
WHERE P.ID_UZYTKOWNIKA=@IDUZYTKOWNIKA_
SELECT @nazwakon=ZAMOWIENIE.KONTRAHENT_NAZWA FROM ZAMOWIENIE
INNER JOIN ZLECENIE_PRODUKCYJNE ON ZLECENIE_PRODUKCYJNE.ID_ZAMOWIENIA=ZAMOWIENIE.ID_ZAMOWIENIA
where ZLECENIE_PRODUKCYJNE.ID_ZLECENIA=@IdObiektu
select @imie=IMIE_1+NAZWISKO
FROM ADRESY_PRACOWNIKA AS AP
INNER JOIN PRACOWNIK AS P
ON AP.ID_PRACOWNIKA=P.ID_PRACOWNIKA
WHERE P.ID_UZYTKOWNIKA=@IDUZYTKOWNIKA_
select @temat='Produkcja'+' '+@NUMERZAM
SET @htmlBody =
N'<p>Drogi użytkowniku</p>'+'<p>'+@imie+'<p>'+
N'<p>Twoje zamówienie '+@NUMERZAM+' dla kontrahenta</p>'+'<p>'+' '+@nazwakon+'</p>'+
N'<p>Zostało wyprodukowane poniżej lista pozycji</p>'+
N'<table border="1">'+
N'<tr>
<th>Nazwa</th>
<th>Indeks Katalogowy</th>
<th>Wyprodukowano</th>
<th>Zamówiono</th>
<th>Pozostało</th>
<th>Jednostka</th>
</tr>'+
CAST ((
SELECT
TD = ART.[NAZWA],
'',
TD = ART.[INDEKS_KATALOGOWY],
'',
TD = STR(POZYCJE_ZLECENIA.[WYPRODUKOWANO],6,0),
'',
TD = STR(PZ.[ZAMOWIONO], 6, 0),
'',
TD = STR(POZYCJE_ZLECENIA.[WYPRODUKOWANO]-PZ.[ZAMOWIONO],6,0),
'',
TD = POZYCJE_ZLECENIA.[JEDNOSTKA]
FROM ARTYKUL AS ART
INNER JOIN POZYCJE_ZLECENIA ON ART.ID_ARTYKULU=POZYCJE_ZLECENIA.ID_ARTYKULU
INNER JOIN ZAZNACZONE ON ZAZNACZONE.ID=POZYCJE_ZLECENIA.ID_POZYCJI
INNER JOIN POZYCJA_ZAMOWIENIA AS PZ ON PZ.ID_ARTYKULU=POZYCJE_ZLECENIA.ID_ARTYKULU
WHERE ZAZNACZONE.ID_SESJI=@IdUzytkownika and ZAZNACZONE.UZYCIE=50 AND PZ.ID_ZAMOWIENIA=@NRZAMFOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
N'</table>';
exec msdb.dbo.sp_send_dbmail
@profile_name = 'WAPRO Mail Profile',
@recipients = @email,
@body = @htmlBody,
@body_format = 'HTML',
@subject = @temat;
if @@trancount>0 commit transaction
goto Koniec
Error:
raiserror (@errmsg,16,1)
if @@trancount>0 rollback tran
goto Koniec
Koniec:
set transaction isolation level READ COMMITTED
return
end
Procedura działa dla Zleceń Produkcyjnych, na elementach zaznaczonych realizacja na RW/PW wysyła email do użytkownika powiadomienie z pozycjami jaki zostały Wyprodukowane
Chodzi o to obliczenie
TD = STR(POZYCJE_ZLECENIA.[WYPRODUKOWANO]-PZ.[ZAMOWIONO],6,0),
To jest zapytanie POZYCJE_ZLECENIA.[WYPRODUKOWANO]
0.000000 88830
0.000000 88834
64.000000 88834
0.000000 88838
197.000000 88842
I mamy tutaj dwa razy to samo ID produktu gdzie zamówiono go 128 jeżeli wyprodukowane zostanie pierwsze 64 SZT użytkownik dostanie informacje że zostało 64, w momencie zejścia jeszcze raz tego samego produktu znowu odejmie 64 i znowu będzie pisać ze zostało 64 co już nie będzie prawdą.
Nie udało mi się zapisać funkcji AVG lub SUM aby udało się uruchomić zapytanie
Za wszelką pomoc jestem wdzięcznyTen post został edytowany przez Autora dnia 17.07.15 o godzinie 08:07