[gelöst]Artikel Lagerbestand via EMail nach Freigabe...

Bild Microsoft Dynamics NAV 2015 (aka "NAV 8")

[gelöst]Artikel Lagerbestand via EMail nach Freigabe...

Beitragvon Raban » 31. März 2021 14:16

Hallo,

ich habe eine Funktion erstellt die nach Freigabe vom VK Auftrag eine EMail versendet wird. Funktioniert wunderbar.

Code: Alles auswählen
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: Alles auswählen
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: Alles auswählen
...
 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
Zuletzt geändert von Raban am 9. April 2021 07:29, insgesamt 1-mal geändert.
Beste GrĂĽĂźe | Robert
Benutzeravatar
Raban
 
Beiträge: 154
Registriert: 7. Mai 2011 08:32
Realer Name: Robert Liess
Arbeitsort: Hannover
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC14.28 Build 14.0.47686.0

Re: Artikel Lagerbestand via EMail nach Freigabe VK Auftrag

Beitragvon m_schneider » 2. April 2021 21:28

Raban hat geschrieben:...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...

Ist es denn unbedingt notwendig, den Lagerbestand in der Auftragszeile anzuzeigen? Es gibt ja bereits rechts in der Factbox die Anzeige der verfĂĽgbaren Menge.

Raban hat geschrieben:...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?...


Definitv. So sollte es funktionieren. Wenn nicht einfach den Debugger anschmeiĂźen.

Code: Alles auswählen
    ...
     SMTPMail_lCdu.AppendBody('<th>aktueller Lagerbestand</th>');
     SMTPMail_lCdu.AppendBody('</tr>');
       REPEAT
     // Wir holen den Artikel und berechnen das Feld Lagerbestand fĂĽr den Lagerort im Auftrag
       ItemL.GET(SalesLineL."No.");
       ItemL.Setrange("Location Filter", SalesLineL."Location Code");
       ItemL.CALCFIELDS(Inventory);

       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(ItemL.Inventory)+'</td>');
       SMTPMail_lCdu.AppendBody('</tr>');
       SMTPMail_lCdu.AppendBody('<br>');
       UNTIL SalesLineL.NEXT = 0;
       SMTPMail_lCdu.Send;
    END;



Raban hat geschrieben:...habe hier nach REPEAT das Feld als CALCFIELD definiert. Ist aber wahrscheinlich nicht richtig...

Eigentlich sollte es so schon funktionieren. Die Frage ist, ob alle Filter richtig gesetzt sind.
MfG Michael
Benutzeravatar
m_schneider
 
Beiträge: 2141
Registriert: 20. Januar 2009 14:36
Realer Name: Michael Schneider
Arbeitsort: Treuen
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2017

Re: Artikel Lagerbestand via EMail nach Freigabe VK Auftrag

Beitragvon Raban » 9. April 2021 07:28

m_schneider hat geschrieben:Ist es denn unbedingt notwendig, den Lagerbestand in der Auftragszeile anzuzeigen?

nein natürlich nicht. Habe das schon wieder aus der Tabelle gelöscht.
m_schneider hat geschrieben:Eigentlich sollte es so schon funktionieren. Die Frage ist, ob alle Filter richtig gesetzt sind.

funktioniert so herrvoragend.

Vielen Dank fĂĽr deine Hilfe
Beste GrĂĽĂźe
Robert
Beste GrĂĽĂźe | Robert
Benutzeravatar
Raban
 
Beiträge: 154
Registriert: 7. Mai 2011 08:32
Realer Name: Robert Liess
Arbeitsort: Hannover
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC14.28 Build 14.0.47686.0


ZurĂĽck zu NAV 2015

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast