[gelöst]Artikel Lagerbestand via EMail nach Freigabe...
Verfasst: 31. März 2021 14:16
Hallo,
ich habe eine Funktion erstellt die nach Freigabe vom VK Auftrag eine EMail versendet wird. Funktioniert wunderbar.
Nun ist es gewünscht, dass auch der aktuelle Lagerbestand mitgesendet wird.
Habe dazu in Tabelle 37 Sales Line ein Flowfield "Inventory" angelegt. Die CalcFormula fast 1:1 wie in der Itemtabelle verwendet. In der Page 46 das Feld eingeblendet und der Lagerbestand wird richtig angezeigt.
Nun habe ich meine EMail Funktion um das neue Feld erweitert
aber der Lagerbestand in der EMail die versendet wird bzw. ankommt ist immer 0.
Habt ihr eine Idee warum und wie mein Code aussehen muss damit der Lagerbestand richtig mitgesendet wird?
habe hier nach REPEAT das Feld als CALCFIELD definiert. Ist aber wahrscheinlich nicht richtig.
Oder gibt es eine andere elegantere Methode den Lagerbestand direkt in der EMail Funktion pro VK-Zeile zu kalkulieren ohne die Feldanlage in Tabelle 37?
Herzlichen Dank
Beste Grüße
Robert
ich habe eine Funktion erstellt die nach Freigabe vom VK Auftrag eine EMail versendet wird. Funktioniert wunderbar.
- Code:
SmtpMailSetup_lRec.GET;
Recipients_lTxt := 'ich@meinedomain.com';
Subject_lTxt := ('Neuer Verkaufsauftrag' + ' ' +"No." + ' '+ "Sell-to Customer Name" +' | '+ 'Mandant: ' + COMPANYNAME);
SalesLineL.SETRANGE("Document No.","No.");
SalesLineL.SETRANGE(Type,SalesLineL.Type::Item);
IF SalesLineL.FINDSET THEN BEGIN
SMTPMail_lCdu.CreateMessage('NAV ADMIN',
'admin@meinedomain.com',
Recipients_lTxt,
Subject_lTxt,
Body_lTxt,
TRUE);
SMTPMail_lCdu.AppendBody('ACHTUNG: Ein neuer Verkaufsauftrag wurde von '+ COPYSTR(USERID,STRPOS(USERID,'\')+1) +' '+ 'freigegeben. Nr.: '+' ' + "No." +' '+ 'Deb.- Nummer: '+ "Sell-to Customer No.");
SMTPMail_lCdu.AppendBody('<br>');
SMTPMail_lCdu.AppendBody('Geplantes Warenausgangsdatum: ' + FORMAT("gepl.WA Datum (Zeile)"));
SMTPMail_lCdu.AppendBody('<br>');
SMTPMail_lCdu.AppendBody(STRSUBSTNO('Folgende Artikel sind enthalten:',"No."));
SMTPMail_lCdu.AppendBody('<br><br>');
SMTPMail_lCdu.AppendBody('<table border="1">');
SMTPMail_lCdu.AppendBody('<tr>');
SMTPMail_lCdu.AppendBody('<th>Artikelnummer</th>');
SMTPMail_lCdu.AppendBody('<th>Beschreibung</th>');
SMTPMail_lCdu.AppendBody('<th>Menge</th>');
SMTPMail_lCdu.AppendBody('</tr>');
REPEAT
SMTPMail_lCdu.AppendBody('<tr>');
SMTPMail_lCdu.AppendBody('<td>'+SalesLineL."No."+'</td>');
SMTPMail_lCdu.AppendBody('<td>'+SalesLineL.Description+'</td>');
SMTPMail_lCdu.AppendBody('<td>'+FORMAT(SalesLineL.Quantity)+'</td>');
SMTPMail_lCdu.AppendBody('</tr>');
SMTPMail_lCdu.AppendBody('<br>');
UNTIL SalesLineL.NEXT = 0;
SMTPMail_lCdu.Send;
END;
Nun ist es gewünscht, dass auch der aktuelle Lagerbestand mitgesendet wird.
Habe dazu in Tabelle 37 Sales Line ein Flowfield "Inventory" angelegt. Die CalcFormula fast 1:1 wie in der Itemtabelle verwendet. In der Page 46 das Feld eingeblendet und der Lagerbestand wird richtig angezeigt.
Nun habe ich meine EMail Funktion um das neue Feld erweitert
- Code:
SmtpMailSetup_lRec.GET;
Recipients_lTxt := 'ich@meinedomain.com';
Subject_lTxt := ('Neuer Verkaufsauftrag' + ' ' +"No." + ' '+ "Sell-to Customer Name" +' | '+ 'Mandant: ' + COMPANYNAME);
SalesLineL.SETRANGE("Document No.","No.");
SalesLineL.SETRANGE(Type,SalesLineL.Type::Item);
IF SalesLineL.FINDSET THEN BEGIN
SMTPMail_lCdu.CreateMessage('NAV ADMIN',
'admin@meinedomain.com',
Recipients_lTxt,
Subject_lTxt,
Body_lTxt,
TRUE);
SMTPMail_lCdu.AppendBody('ACHTUNG: Ein neuer Verkaufsauftrag wurde von '+ COPYSTR(USERID,STRPOS(USERID,'\')+1) +' '+ 'freigegeben. Nr.: '+' ' + "No." +' '+ 'Deb.- Nummer: '+ "Sell-to Customer No.");
SMTPMail_lCdu.AppendBody('<br>');
SMTPMail_lCdu.AppendBody('Geplantes Warenausgangsdatum: ' + FORMAT("gepl.WA Datum (Zeile)"));
SMTPMail_lCdu.AppendBody('<br>');
SMTPMail_lCdu.AppendBody(STRSUBSTNO('Folgende Artikel sind enthalten:',"No."));
SMTPMail_lCdu.AppendBody('<br><br>');
SMTPMail_lCdu.AppendBody('<table border="1">');
SMTPMail_lCdu.AppendBody('<tr>');
SMTPMail_lCdu.AppendBody('<th>Artikelnummer</th>');
SMTPMail_lCdu.AppendBody('<th>Beschreibung</th>');
SMTPMail_lCdu.AppendBody('<th>Menge</th>');
[color=#FF0000] SMTPMail_lCdu.AppendBody('<th>aktueller Lagerbestand</th>');[/color]
SMTPMail_lCdu.AppendBody('</tr>');
REPEAT
SMTPMail_lCdu.AppendBody('<tr>');
SMTPMail_lCdu.AppendBody('<td>'+SalesLineL."No."+'</td>');
SMTPMail_lCdu.AppendBody('<td>'+SalesLineL.Description+'</td>');
SMTPMail_lCdu.AppendBody('<td>'+FORMAT(SalesLineL.Quantity)+'</td>');
[color=#FF0000]SMTPMail_lCdu.AppendBody('<td>'+FORMAT(SalesLineL.Inventory)+'</td>');[/color]
SMTPMail_lCdu.AppendBody('</tr>');
SMTPMail_lCdu.AppendBody('<br>');
UNTIL SalesLineL.NEXT = 0;
SMTPMail_lCdu.Send;
END;
aber der Lagerbestand in der EMail die versendet wird bzw. ankommt ist immer 0.
Habt ihr eine Idee warum und wie mein Code aussehen muss damit der Lagerbestand richtig mitgesendet wird?
habe hier nach REPEAT das Feld als CALCFIELD definiert. Ist aber wahrscheinlich nicht richtig.
- Code:
...
SMTPMail_lCdu.AppendBody('<th>aktueller Lagerbestand</th>');
SMTPMail_lCdu.AppendBody('</tr>');
REPEAT
[color=#FF0000]SalesLineL.CALCFIELDS(SalesLineL.Inventory);[/color]
SMTPMail_lCdu.AppendBody('<tr>');
SMTPMail_lCdu.AppendBody('<td>'+SalesLineL."No."+'</td>');
SMTPMail_lCdu.AppendBody('<td>'+SalesLineL.Description+'</td>');
SMTPMail_lCdu.AppendBody('<td>'+FORMAT(SalesLineL."Quantity Base Unit (CGG)")+'</td>');
SMTPMail_lCdu.AppendBody('<td>'+FORMAT(SalesLineL.Inventory)+'</td>');
SMTPMail_lCdu.AppendBody('</tr>');
SMTPMail_lCdu.AppendBody('<br>');
UNTIL SalesLineL.NEXT = 0;
SMTPMail_lCdu.Send;
END;
Oder gibt es eine andere elegantere Methode den Lagerbestand direkt in der EMail Funktion pro VK-Zeile zu kalkulieren ohne die Feldanlage in Tabelle 37?
Herzlichen Dank
Beste Grüße
Robert