report 50009 "Contact_Sales_Invoice_QR"
{
DefaultLayout = RDLC;
RDLCLayout = './Report Layout/Invoice_Insight_With_QR_Code.RDL';
EnableExternalImages = true;
dataset
{
dataitem("Sales Invoice Header"; "Sales Invoice Header")
{
column(Invoice_No; "No.")
{
}
column(Document_No; "No.")
{
}
column(Invoice_Date; "Posting Date")
{
}
column(Currency_Code; "Currency Code")
{
}
column(Customer_No; "Bill-to Customer No.")
{
}
column(Customer_Name; CustomerName)
{
}
column(Customer_City; CityName)
{
}
column(Customer_County; CountyName)
{
}
column(Subtotal; TotalSubtotal)
{
}
column(Discount; TotalDiscount)
{
}
column(SalesTax; TotalTax)
{
}
column(Total; TotalNet)
{
}
column(QR_Code; QRCodeText) // إضافة QR Code هنا
{
}
dataitem("Sales Invoice Line"; "Sales Invoice Line")
{
DataItemLink = "Document No." = FIELD("No.");
column(Description; Description)
{
}
column(Amount_Line; "Line Amount")
{
}
}
trigger OnAfterGetRecord()
var
SalesInvoiceLine: Record "Sales Invoice Line";
QRTable: Record "SAve_QR_Code_Received";
ImageBase64: Text;
begin
Clear(CustomerName);
Clear(CityName);
Clear(CountyName);
if CustomerRec.Get("Bill-to Customer No.") then
CustomerName := CustomerRec.Name;
CityName := CustomerRec.City;
CountyName := CustomerRec.County;
TotalSubtotal := 0;
TotalDiscount := 0;
TotalTax := 0;
TotalNet := 0;
SalesInvoiceLine.SetRange("Document No.", "No.");
if SalesInvoiceLine.FindSet() then begin
repeat
TotalSubtotal += SalesInvoiceLine."Quantity (Base)" * SalesInvoiceLine."Unit Price";
TotalDiscount += SalesInvoiceLine."Line Discount Amount";
TotalTax += ((SalesInvoiceLine."Quantity (Base)" * SalesInvoiceLine."Unit Price") - SalesInvoiceLine."Line Discount Amount") * (SalesInvoiceLine."VAT %" / 100);
until SalesInvoiceLine.Next() = 0;
end;
TotalNet := TotalSubtotal + TotalTax - TotalDiscount;
QRTable.SetRange("Invoice_NO", "No.");
if QRTable.FindSet() then begin
QRCodeText := QRTable."QR_Code_JO";
ImageBase64 := ConvertTextToImage(QRCodeText);
QRCodeText := 'data:image/png;base64,' + ImageBase64; // إضافة نوع الصورة ونقلها كـ base64
end else begin
QRCodeText := '';
end;
end;
}
}
local procedure ConvertTextToImage(Text: Text): Text
var
Base64Convert: Codeunit "Base64 Convert";
TempBlob: Codeunit "Temp Blob";
OutStream: OutStream;
InStream: InStream;
ImageBase64: Text;
begin
TempBlob.CreateOutStream(OutStream);
OutStream.WriteText(Text);
TempBlob.CreateInStream(InStream);
ImageBase64 := Base64Convert.ToBase64(InStream);
exit(ImageBase64);
end;
var
CustomerRec: Record Customer;
CustomerName: Text[100];
CityName: Text[100];
CountyName: Text[100];
TotalDiscount: Decimal;
TotalTax: Decimal;
TotalSubtotal: Decimal;
TotalNet: Decimal;
QRCodeText: Text[1000];
}