This is my requirement:
The list of Reason codes need to expand dynamically based on the Reason Codes that have been used during
the time period. If no Reason Code is selected it should show at the end in a column called Other.
This is my code:
procedure itemjournal()
var
rec_Item: Record Item;
rec_ItemJournal: Record "Item Journal Line";
enum_EntryType: Enum "Item Journal Entry Type";
rec_valueEntry: Record "Value Entry";
begin
rec_valueEntry.SetRange("Posting Date", Today - 31, Today);
if rec_valueEntry.FindSet() then
repeat
if (rec_valueEntry."Item Ledger Entry Type" = enum_EntryType::"Negative Adjmt.") or (rec_valueEntry."Item Ledger Entry Type" = enum_EntryType::"Positive Adjmt.") then begin
rec_Item.SetRange("No.", rec_valueEntry."Item No.");
// Message('%1', rec_valueEntry);
InsertIntoTable(rec_valueEntry, rec_Item);
end;
until rec_valueEntry.Next() = 0;
end;
procedure InsertIntoTable(rec_valueEntry: Record "Value Entry"; rec_Item: Record Item)
var
rec_itemjournalsummary: Record ItemJournalSummary;
enum_EntryType: Enum "Item Journal Entry Type";
begin
rec_itemjournalsummary.Init();
rec_itemjournalsummary."Item Code" := rec_valueEntry."Item No.";
rec_itemjournalsummary."Item Description" := rec_valueEntry.Description;
rec_itemjournalsummary."Reason Code" := rec_valueEntry."Reason Code";
if rec_valueEntry."Item Ledger Entry Type" = enum_EntryType::"Positive Adjmt." then begin
rec_itemjournalsummary."QTY In" := rec_valueEntry."Item Ledger Entry Quantity";
rec_itemjournalsummary."QTY Out" := 0;
end
else begin
if rec_valueEntry."Item Ledger Entry Type" = enum_EntryType::"Negative Adjmt." then begin
rec_itemjournalsummary."QTY In" := 0;
rec_itemjournalsummary."QTY Out" := rec_valueEntry."Item Ledger Entry Quantity";
end
else begin
rec_itemjournalsummary."QTY In" := 0;
rec_itemjournalsummary."QTY Out" := 0;
end;
end;
rec_itemjournalsummary.Insert(true);
end;
procedure SendEmail()
var
cdu_EmailMessage: Codeunit "Email Message";
cdu_Email: Codeunit Email;
ToRecipients: Text;
Subject: Text;
Body: Text;
rec_ItemJournalSummary: Record ItemJournalSummary;
rec_Valueeentry: Record "Value Entry";
enum_Alerts: Enum Alerts;
total: Decimal;
total2: Decimal;
r, c, i, j : Integer;
rows, columns : Integer;
reason: RecordRef;
reasonCode: Record "Reason Code";
reasonCodeCount, counts : Integer;
enum_EntryType: Enum "Item Journal Entry Type";
flag: Boolean;
begin
Subject := 'Item Journal Summary';
Body += '<style>table, th, td {border:1px solid #999999;border-collapse: collapse;text-align:left;}th{padding:5px;background:#ccc;}td{padding:5px;}div{font-family: Calibri;}</style>';
// Body += '<style>table, td, th {border: 1px solid #595959;border-collapse: collapse;}td, th {padding: 3px;width: 30px;height: 25px;}th {background: #f0e6cc;}.even {background: #fbf8f0;}.odd {background: #fefcf9;}</style>';
Body += '<div>';
Body += '<table><tbody>';
Body += '<tr>';
Body += '<td colspan="2"></td>';
if reasonCode.FindSet() then
repeat
Body += '<td colspan="2">' + reasonCode.Code + '</td>';
until reasonCode.Next() = 0;
// Body += '<th>Other</th>';
Body += '</tr>';
reasonCodeCount := reasonCode.Count;
Body += '</tr>';
Body += '<tr>';
Body += '<td>Item Code</td>';
Body += '<td>Item Description</td>';
for counts := 1 to reasonCodeCount do begin
Body += '<td>In</td>';
Body += '<td>Out</td>';
end;
if rec_ItemJournalSummary.FindSet() then
repeat
Body += '<tr>';
Body += STRSUBSTNO('<td>%1</td>', rec_ItemJournalSummary."Item Code");
Body += STRSUBSTNO('<td>%1</td>', rec_ItemJournalSummary."Item Description");
Body += STRSUBSTNO('<td>%1</td>', rec_ItemJournalSummary."QTY In");
Body += STRSUBSTNO('<td>%1</td>', rec_ItemJournalSummary."QTY Out");
Body += '</tr>';
total := total + rec_ItemJournalSummary."QTY In";
total2 := total2 + rec_ItemJournalSummary."QTY Out";
until rec_ItemJournalSummary.Next() = 0;
Body += '<tfoot>';
Body += '<tr>';
Body += '<td></td>';
Body += '<td><b>Total<b></td>';
Body += STRSUBSTNO('<td>%1</td>', total);
Body += STRSUBSTNO('<td>%1</td>', total2);
Body += '<td></td>';
Body += '</tr>';
Body += '</tfoot>';
Body += '</tr>';
Body += '</tbody>';
Body += '</table>';
Body += '<br><br>Kind Regards,<br><br>Business Central';
Body += '</div>';
cdu_EmailMessage.Create(cdu_CommonHelper.EmailSetup(enum_Alerts::"Item Journal Summary"), Subject, Body, true);
if rec_ItemJournalSummary.Count > 0 then begin
cdu_Email.Send(cdu_EmailMessage);
rec_ItemJournalSummary.DeleteAll();
end;
end;
}
So please help in this how can I get dynamically reason code on In Out column on runtime.
Hello - We currently do not have dedicated Dev support via the Dynamics 365 Business Central forums, but I wanted to provide you some additional resources to assist. If you need assistance with debugging or coding I would recommend discussing this on one of our communities.
I will open this up to the community in case they have something to add.
Stay up to date on forum activity by subscribing. You can also customize your in-app and email Notification settings across all subscriptions.
André Arnaud de Cal... 291,219 Super User 2024 Season 2
Martin Dráb 230,056 Most Valuable Professional
nmaenpaa 101,156