31. März 2021 14:16
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;
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;
...
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;
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...
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?...
...
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...
9. April 2021 07:28
m_schneider hat geschrieben:Ist es denn unbedingt notwendig, den Lagerbestand in der Auftragszeile anzuzeigen?
m_schneider hat geschrieben:Eigentlich sollte es so schon funktionieren. Die Frage ist, ob alle Filter richtig gesetzt sind.