LIB_FILEFile Repository Management100000LIB_FORMATFunctions to Format a Value100000LIB_PDFOffline PDF Creation100000PDF_SALES_QUOTEPrint Sales Quote Report00000
0LIB_FILE10000function FileRepNewImage(baseRec)0LIB_FILE20000local FileRep = FileRepNew(baseRec);10LIB_FILE30000FileRep:SETVALUE('Type', 1);10LIB_FILE40000FileRep:SETVALUE('Content Type','CAMERA');10LIB_FILE50000FileRep:INSERT();10LIB_FILE60000return FileRep;10LIB_FILE70000end;0LIB_FILE80000function FileRepNew(baseRec)0LIB_FILE90000FileRep = Record('ACF File Repository');10LIB_FILE100000local nextEntryNo = 0;10LIB_FILE110000FileRep = FileRepSETVALUEORFILTER(FileRep, baseRec, 'SETFILTER');10LIB_FILE120000if FileRep:FINDLAST() then10LIB_FILE130000nextEntryNo = FileRep:GETVALUE('Entry No.') + 1;20LIB_FILE140000end;10LIB_FILE150000FileRep:INIT();10LIB_FILE160000FileRep = FileRepSETVALUEORFILTER(FileRep, baseRec, 'SETVALUE');10LIB_FILE170000FileRep:SETVALUE('Entry No.', nextEntryNo);10LIB_FILE180000local tmpCurrentDateTime = CURRENTDATETIME();10LIB_FILE190000FileRep:SETVALUE('Created on', tmpCurrentDateTime);10LIB_FILE200000FileRep:SETVALUE('Modified on', tmpCurrentDateTime);10LIB_FILE210000FileRep:SETVALUE('Anveo User Device ID', ANVEOUSERDEVICEID());10LIB_FILE220000FileRep:SETVALUE('Anveo User', ANVEOUSERID());10LIB_FILE230000return FileRep;10LIB_FILE240000end;0LIB_FILE250000function FileRepSETVALUEORFILTER(FileRep, baseRec, Type)0LIB_FILE260000local tableNo = baseRec:GETTABLENO();10LIB_FILE270000local DocumentType = 0;10LIB_FILE280000local Code = '';10LIB_FILE290000local LineNo = 0;10LIB_FILE300000if (tableNo==18) or (tableNo==27) or (tableNo==36) then10LIB_FILE310000Code = baseRec:GETVALUE('No.');20LIB_FILE320000elseif (tableNo==5900) then10LIB_FILE330000DocumentType = baseRec:GETVALUE('Document Type');20LIB_FILE340000Code = baseRec:GETVALUE('No.');20LIB_FILE350000elseif (tableNo==5901) then10LIB_FILE360000DocumentType = baseRec:GETVALUE('Document Type');20LIB_FILE370000Code = baseRec:GETVALUE('Document No.');20LIB_FILE380000LineNo = baseRec:GETVALUE('Line No.');20LIB_FILE390000elseif (tableNo == 5940) then10LIB_FILE400000Code = baseRec:GETVALUE('No.');20LIB_FILE410000end;10LIB_FILE420000if (Type == 'SETVALUE') then10LIB_FILE430000FileRep:SETVALUE('Table No.', baseRec:GETTABLENO());20LIB_FILE440000FileRep:SETVALUE('Document Type', DocumentType);20LIB_FILE450000FileRep:SETVALUE('Code', Code);20LIB_FILE460000FileRep:SETVALUE('Line No.', LineNo);20LIB_FILE470000elseif (Type == 'SETFILTER') then10LIB_FILE480000FileRep:SETRANGE('Table No.', baseRec:GETTABLENO());20LIB_FILE490000FileRep:SETRANGE('Document Type', DocumentType);20LIB_FILE500000FileRep:SETRANGE('Code', Code);20LIB_FILE510000FileRep:SETRANGE('Line No.', LineNo);20LIB_FILE520000else10LIB_FILE530000ERROR('Type must be SETVALUE or SETFILTER in FileRepSETVALUEORFILTER');20LIB_FILE540000end;10LIB_FILE550000return FileRep;10LIB_FILE560000end;0LIB_FILE570000function WFINDLAST(Rec)0LIB_FILE580000local position;10LIB_FILE590000local count = Rec:COUNT();10LIB_FILE600000if count == 0 then10LIB_FILE610000return false;20LIB_FILE620000end;10LIB_FILE630000Rec:NEXT(count);10LIB_FILE640000return true;10LIB_FILE650000end;0LIB_FILE660000function FileRepNewDocument(baseRec)0LIB_FILE670000local FileRep = FileRepNew(baseRec);10LIB_FILE680000FileRep:SETVALUE('Type',0);10LIB_FILE690000FileRep:SETVALUE('Content Type','FILE');10LIB_FILE700000FileRep:INSERT();10LIB_FILE710000return FileRep;10LIB_FILE720000end;0LIB_FORMAT10000local defaultThousand = '';0LIB_FORMAT20000local defaultDecimal = '';0LIB_FORMAT300000LIB_FORMAT40000function SetDefaultThousand(value)0LIB_FORMAT50000defaultThousand = value;10LIB_FORMAT60000end;0LIB_FORMAT700000LIB_FORMAT80000function SetDefaultDecimal(value)0LIB_FORMAT90000defaultDecimal = value;10LIB_FORMAT100000end;0LIB_FORMAT1100000LIB_FORMAT120000function comma_value(amount)0LIB_FORMAT130000local formatted = amount;10LIB_FORMAT140000while true do10LIB_FORMAT150000formatted, k = string.gsub(formatted, '^(-?%d+)(%d%d%d)', '%1' .. defaultThousand .. '%2');20LIB_FORMAT160000if (k==0) then20LIB_FORMAT170000break;30LIB_FORMAT180000end;20LIB_FORMAT190000end;10LIB_FORMAT200000return formatted;10LIB_FORMAT210000end;0LIB_FORMAT2200000LIB_FORMAT230000function round(val, decimal)0LIB_FORMAT240000if (decimal) then10LIB_FORMAT250000return math.floor((val * 10^decimal) + 0.5)/(10^decimal);20LIB_FORMAT260000else10LIB_FORMAT270000return math.floor(val+0.5);20LIB_FORMAT280000end;10LIB_FORMAT290000end;0LIB_FORMAT3000000LIB_FORMAT310000function format_num(amount, decimal, prefix, neg_prefix)0LIB_FORMAT320000local str_amount, formatted, famount, remain;10LIB_FORMAT330000decimal = decimal or 2;10LIB_FORMAT340000neg_prefix = neg_prefix or '-';10LIB_FORMAT350000famount = math.abs(round(amount,decimal));10LIB_FORMAT360000famount = math.floor(famount);10LIB_FORMAT370000remain = round(math.abs(amount) - famount, decimal);10LIB_FORMAT380000formatted = comma_value(famount);10LIB_FORMAT390000if (decimal > 0) then10LIB_FORMAT400000remain = string.sub(tostring(remain),3);20LIB_FORMAT410000formatted = formatted .. defaultDecimal .. remain .. string.rep('0', decimal - string.len(remain));20LIB_FORMAT420000end;10LIB_FORMAT430000formatted = (prefix or '') .. formatted;10LIB_FORMAT440000if (amount<0) then10LIB_FORMAT450000if (neg_prefix=='()') then;20LIB_FORMAT460000formatted = '('..formatted ..')';30LIB_FORMAT470000else20LIB_FORMAT480000formatted = neg_prefix .. formatted;30LIB_FORMAT490000end;20LIB_FORMAT500000end;10LIB_FORMAT510000return formatted;10LIB_FORMAT520000end;0LIB_FORMAT5300000LIB_FORMAT540000if GLOBALLANGUAGECODE == 'DEU' then0LIB_FORMAT550000SetDefaultThousand('.');10LIB_FORMAT560000SetDefaultDecimal(',');10LIB_FORMAT570000elseif GLOBALLANGUAGECODE == 'ENU' then0LIB_FORMAT580000SetDefaultThousand(',');10LIB_FORMAT590000SetDefaultDecimal('.');10LIB_FORMAT600000else0LIB_FORMAT610000SetDefaultThousand('.');10LIB_FORMAT620000SetDefaultDecimal(',');10LIB_FORMAT630000end;0LIB_PDF10000local PDFDocument;0LIB_PDF20000local PDFPage;0LIB_PDF30000local PDFPageGraphics;0LIB_PDF40000local PDFFont;0LIB_PDF50000local PDFBrush;0LIB_PDF60000local PDFX=0;0LIB_PDF70000local PDFY=0;0LIB_PDF80000local PDFUnit = 'mm'; --[[or cm, inch]]0LIB_PDF90000local PDFLineHeight = 0;0LIB_PDF100000local PDFTableColumns;0LIB_PDF110000local PDFTableColumnsAlignment;0LIB_PDF120000local PDFDefaultVAlign = Top;0LIB_PDF130000local PDFDefaultHAlign = Left;0LIB_PDF1400000LIB_PDF150000function PDFCreateDocument()0LIB_PDF160000PDFDocument = PAGE('PDF_NEW', 'PdfFixedDocument');10LIB_PDF170000end;0LIB_PDF1800000LIB_PDF190000function PDFAddPage(PageFormat, PageOrientation)0LIB_PDF200000local PDFPages = PAGE('PDF_GET', PDFDocument, 'Pages');10LIB_PDF210000PDFPage = PAGE('PDF_RUN', PDFPages, 'Add');10LIB_PDF220000local PDFWidth = 595;10LIB_PDF230000local PDFHeight = 842;10LIB_PDF240000PageFormat = string.lower(PageFormat);10LIB_PDF250000if PageFormat=='letter' then10LIB_PDF260000PDFWidth = 612;20LIB_PDF270000PDFHeight = 792;20LIB_PDF280000end;10LIB_PDF290000if PageFormat=='a4' then10LIB_PDF300000PDFWidth = 595;20LIB_PDF310000PDFHeight = 842;20LIB_PDF320000end;10LIB_PDF330000if PageFormat=='a5' then10LIB_PDF340000PDFWidth = 420;20LIB_PDF350000PDFHeight = 595;20LIB_PDF360000end;10LIB_PDF370000if string.lower(PageOrientation) == 'landscape' then10LIB_PDF380000local temp = PDFHeight;20LIB_PDF390000PDFWidth = PDFHeight;20LIB_PDF400000PDFHeight = temp;20LIB_PDF410000end;10LIB_PDF420000PAGE('PDF_SET', PDFPage, 'Height', PDFHeight);10LIB_PDF430000PAGE('PDF_SET', PDFPage, 'Width', PDFWidth);10LIB_PDF440000PDFPageGraphics = PAGE('PDF_GET', PDFPage, 'Graphics');10LIB_PDF450000end;0LIB_PDF4600000LIB_PDF470000function PDFCreate()0LIB_PDF480000PAGE('PDF_RUN', PDFPageGraphics, 'CompressAndClose');10LIB_PDF490000return PAGE('PDF_RUN', PDFDocument, 'Export');10LIB_PDF500000end;0LIB_PDF5100000LIB_PDF520000function PDFSetFont(PDFFontName, PDFFontSize)0LIB_PDF530000PDFFont = PAGE('PDF_NEW', 'PdfStandardFont', PDFFontName, PDFFontSize);10LIB_PDF540000PDFLineHeight = PDFFontSize * 1.4;10LIB_PDF550000end;0LIB_PDF5600000LIB_PDF570000--[[Default Fonts]]0LIB_PDF580000function PDFSetDefaultFont()0LIB_PDF590000PDFSetFont('Helvetica', 10);10LIB_PDF600000end;0LIB_PDF610000function PDFSetDefaultFontBold()0LIB_PDF620000PDFSetFont('HelveticaBold', 10);10LIB_PDF630000end;0LIB_PDF640000function PDFSetAddressFont()0LIB_PDF650000PDFSetFont('Helvetica', 7);10LIB_PDF660000end;0LIB_PDF670000function PDFSetTitleFont()0LIB_PDF680000PDFSetFont('TimesRoman', 20);10LIB_PDF690000end;0LIB_PDF700000function PDFSetHeaderFont()0LIB_PDF710000PDFSetFont('Helvetica', 9);10LIB_PDF720000end;0LIB_PDF730000function PDFSetFooterFont()0LIB_PDF740000PDFSetFont('Helvetica', 9);10LIB_PDF750000end;0LIB_PDF7600000LIB_PDF770000function PDFGetAdrressDelimiter()0LIB_PDF780000return 'ยท'; --[[Middot]]10LIB_PDF790000end;0LIB_PDF8000000LIB_PDF810000function PDFSetColor(red,green,blue)0LIB_PDF820000PDFBrush = PAGE('PDF_NEW', 'PdfBrush', PAGE('PDF_NEW', 'PdfRgbColor', red, green, blue));10LIB_PDF830000end;0LIB_PDF8400000LIB_PDF850000function PDFWrite(PDFText)0LIB_PDF860000if type(PDFText) == 'table' then10LIB_PDF870000for n = 1, #PDFText do20LIB_PDF880000PDFHALIGN = 'Left';30LIB_PDF890000if PDFTableColumnsAlignment then30LIB_PDF900000if string.lower(PDFTableColumnsAlignment[n]) == 'right' then40LIB_PDF910000PDFHALIGN = 'Right';50LIB_PDF920000end;40LIB_PDF930000end;30LIB_PDF940000PAGE('PDF_RUN', PDFPageGraphics, 'DrawString', PDFText[n], PDFFont, PDFBrush, PDFX+PDFConvertUnitToPoints(PDFTableColumns[n]), PDFY, PDFHALIGN);30LIB_PDF950000end;20LIB_PDF960000PDFSetDefaultHAlign();20LIB_PDF970000else10LIB_PDF980000PAGE('PDF_RUN', PDFPageGraphics, 'DrawString', PDFText, PDFFont, PDFBrush, PDFX, PDFY, PDFHALIGN, PDFVALIGN);20LIB_PDF990000end;10LIB_PDF1000000PDFY = PDFY + PDFLineHeight;10LIB_PDF1010000end;0LIB_PDF10200000LIB_PDF1030000function PDFSetXY(PDFnewX, PDFnewY)0LIB_PDF1040000PDFX = PDFConvertUnitToPoints(PDFnewX);10LIB_PDF1050000PDFY = PDFConvertUnitToPoints(PDFnewY);10LIB_PDF1060000end;0LIB_PDF10700000LIB_PDF1080000function PDFSetVAlign(PDFNewVAlign)0LIB_PDF1090000PDFVALIGN = PDFNewVAlign;10LIB_PDF1100000end;0LIB_PDF11100000LIB_PDF1120000function PDFSetDefaultVAlign()0LIB_PDF1130000PDFSetVAlign(PDFDefaultVAlign);10LIB_PDF1140000end;0LIB_PDF11500000LIB_PDF1160000function PDFSetHAlign(PDFNewHAlign)0LIB_PDF1170000PDFHALIGN = PDFNewHAlign;10LIB_PDF1180000end;0LIB_PDF11900000LIB_PDF1200000function PDFSetDefaultHAlign()0LIB_PDF1210000PDFSetHAlign(PDFDefaultHAlign);10LIB_PDF1220000end;0LIB_PDF12300000LIB_PDF1240000function PDFConvertUnitToPoints(ValueInUnit)0LIB_PDF1250000if PDFUnit=='mm' then10LIB_PDF1260000return ValueInUnit / 0.351;20LIB_PDF1270000end;10LIB_PDF1280000if PDFUnit=='cm' then10LIB_PDF1290000return ValueInUnit / 0.0351;20LIB_PDF1300000end;10LIB_PDF1310000if PDFUnit=='inch' then10LIB_PDF1320000return ValueInUnit / 0.0138;20LIB_PDF1330000end;10LIB_PDF1340000return ValueInUnit;10LIB_PDF1350000end;0LIB_PDF13600000LIB_PDF1370000function PDFWriteXY(PDFnewX, PDFnewY,PDFText)0LIB_PDF1380000PDFSetXY(PDFnewX, PDFnewY);10LIB_PDF1390000PDFWrite(PDFText);10LIB_PDF1400000end;0LIB_PDF14100000LIB_PDF1420000function PDFImage(ImageContent, MaxWidth, MaxHeight)0LIB_PDF1430000local image = PAGE('PDF_NEW', 'PdfImage', ImageContent);10LIB_PDF1440000if image then10LIB_PDF1450000local imageWidth = PAGE('PDF_GET', image, 'Width');20LIB_PDF1460000local imageHeight = PAGE('PDF_GET', image, 'Height');20LIB_PDF1470000local imageRatio = imageHeight / imageWidth;20LIB_PDF148000020LIB_PDF1490000if (MaxWidth>0) and (MaxHeight>0) then20LIB_PDF1500000MaxWidth = PDFConvertUnitToPoints(MaxWidth);30LIB_PDF1510000MaxHeight = PDFConvertUnitToPoints(MaxHeight);30LIB_PDF1520000local MaxRatio = MaxHeight / MaxWidth;30LIB_PDF1530000if imageRatio < MaxRatio then30LIB_PDF1540000imageHeight = MaxWidth * imageRatio;40LIB_PDF1550000imageWidth = MaxWidth;40LIB_PDF1560000else30LIB_PDF1570000imageHeight = MaxHeight;40LIB_PDF1580000imageWidth = MaxHeight / imageRatio;40LIB_PDF1590000end;30LIB_PDF1600000end;20LIB_PDF1610000PAGE('PDF_RUN', PDFPageGraphics, 'DrawImage', image, PDFX, PDFY, imageWidth, imageHeight);20LIB_PDF1620000PDFY = PDFY + MaxHeight + PDFLineHeight;20LIB_PDF1630000end;10LIB_PDF1640000end;0LIB_PDF16500000LIB_PDF1660000function PDFBarcode(Barcode, BarcodeType)0LIB_PDF1670000local PDFBarcodeGraphics = PAGE('PDF_NEW', BarcodeType, Barcode);10LIB_PDF1680000PAGE('PDF_RUN', PDFPageGraphics, 'DrawBarcode', PDFBarcodeGraphics, PDFX, PDFY);10LIB_PDF1690000end;0LIB_PDF17000000LIB_PDF1710000--[[Set Default Values]]0LIB_PDF1720000PDFSetFont('Helvetica', 11);0LIB_PDF1730000PDFSetColor(0,0,0);0LIB_PDF1740000PDFSetVAlign(PDFDefaultVAlign);0LIB_PDF1750000PDFSetHAlign(PDFDefaultHAlign);0PDF_SALES_QUOTE10000--[[Global PDF Settings]]0PDF_SALES_QUOTE20000PDFLeftMargin = 20;0PDF_SALES_QUOTE30000PDFCurrentPage = 0;0PDF_SALES_QUOTE40000local PDFMaxRowsPerPage = 10;0PDF_SALES_QUOTE50000local OrderAmount = 0;0PDF_SALES_QUOTE600000PDF_SALES_QUOTE70000function PDFGetPageCount()0PDF_SALES_QUOTE80000return (math.floor(SL:COUNT() / PDFMaxRowsPerPage) + 1);10PDF_SALES_QUOTE90000end;0PDF_SALES_QUOTE1000000PDF_SALES_QUOTE110000function PDFInsertHeaderFooter()0PDF_SALES_QUOTE120000local CI = Record('Company Information');10PDF_SALES_QUOTE130000--[[Barcode]]10PDF_SALES_QUOTE140000PDFSetXY(20,5);10PDF_SALES_QUOTE150000PDFBarcode(Rec:GETVALUE('No.'), 'PdfCode128BBarcode');10PDF_SALES_QUOTE160000--[[Sender]]10PDF_SALES_QUOTE170000PDFSetDefaultFont();10PDF_SALES_QUOTE180000local AddressDelimiter = PDFGetAdrressDelimiter();10PDF_SALES_QUOTE190000PDFSetAddressFont();10PDF_SALES_QUOTE200000if CI:FINDFIRST() then10PDF_SALES_QUOTE210000PDFWriteXY(PDFLeftMargin,68,CI:GETVALUE('Name')..AddressDelimiter..CI:GETVALUE('Address')..AddressDelimiter..CI:GETVALUE('Post Code')..' '..CI:GETVALUE('City'))20PDF_SALES_QUOTE220000end;10PDF_SALES_QUOTE230000--[[Address]]10PDF_SALES_QUOTE240000PDFSetDefaultFont();10PDF_SALES_QUOTE250000PDFWriteXY(PDFLeftMargin,72,Rec:GETVALUE('Bill-to Name'));;10PDF_SALES_QUOTE260000PDFWrite(Rec:GETVALUE('Bill-to Address'));10PDF_SALES_QUOTE270000PDFWrite(Rec:GETVALUE('Bill-to Address 2'));10PDF_SALES_QUOTE280000PDFWrite(Rec:GETVALUE('Bill-to Post Code')..' '..Rec:GETVALUE('Bill-to City'));10PDF_SALES_QUOTE290000PDFWrite('');10PDF_SALES_QUOTE300000--[[List Of Fields On The Right]]10PDF_SALES_QUOTE310000PDFSetHeaderFont();10PDF_SALES_QUOTE320000PDFSetXY(150,25);10PDF_SALES_QUOTE330000if CI:FINDFIRST() then10PDF_SALES_QUOTE340000PDFImage(CI:GETVALUE('Picture'),50,20, true);20PDF_SALES_QUOTE350000end;10PDF_SALES_QUOTE360000PDFSetXY(150,50);10PDF_SALES_QUOTE370000PDFTableColumns = {0,20};10PDF_SALES_QUOTE380000PDFCurrentPage = PDFCurrentPage + 1;10PDF_SALES_QUOTE390000PDFSetDefaultFontBold();10PDF_SALES_QUOTE400000PDFWrite(GETTEXT('SALESQUOTE'));10PDF_SALES_QUOTE410000PDFSetDefaultFont();10PDF_SALES_QUOTE420000PDFWrite({Rec:GETCOLUMNCAPTION('No.'), Rec:GETVALUE('No.')});10PDF_SALES_QUOTE430000PDFWrite('');10PDF_SALES_QUOTE440000PDFWrite({GETTEXT('PAGE'), PDFCurrentPage .. ' ' .. GETTEXT('OF') .. ' ' .. PDFGetPageCount()});10PDF_SALES_QUOTE450000PDFWrite('');10PDF_SALES_QUOTE460000if CI:FINDFIRST() then10PDF_SALES_QUOTE470000PDFWrite(CI:GETVALUE('Name'));20PDF_SALES_QUOTE480000PDFWrite(CI:GETVALUE('Address'));20PDF_SALES_QUOTE490000PDFWrite(CI:GETVALUE('City'));20PDF_SALES_QUOTE500000PDFWrite('');20PDF_SALES_QUOTE510000PDFWrite({CI:GETCOLUMNCAPTION('Phone No.'), CI:GETVALUE('Phone No.')});20PDF_SALES_QUOTE520000PDFWrite({CI:GETCOLUMNCAPTION('Fax No.'), CI:GETVALUE('Fax No.')});20PDF_SALES_QUOTE530000if not CI:GETVALUE('E-Mail') == '' then PDFWrite({CI:GETCOLUMNCAPTION('E-Mail'), CI:GETVALUE('E-Mail')}); end;20PDF_SALES_QUOTE540000if not CI:GETVALUE('Home Page') == '' then PDFWrite({CI:GETCOLUMNCAPTION('Home Page'), CI:GETVALUE('Home Page')}); end;20PDF_SALES_QUOTE550000end;10PDF_SALES_QUOTE560000--[[Set Start Coordinates]]10PDF_SALES_QUOTE570000PDFSetXY(PDFLeftMargin,130);10PDF_SALES_QUOTE580000--[[Set Table Header]]10PDF_SALES_QUOTE590000PDFTableColumns = {0,30,120,145,175};10PDF_SALES_QUOTE600000PDFTableColumnsAlignment = {'Left','Left','Right','Right','Right'};10PDF_SALES_QUOTE610000PDFSetDefaultFontBold();10PDF_SALES_QUOTE620000PDFWrite({SL:GETCOLUMNCAPTION('No.'),10PDF_SALES_QUOTE630000SL:GETCOLUMNCAPTION('Description'),20PDF_SALES_QUOTE640000SL:GETCOLUMNCAPTION('Quantity'),20PDF_SALES_QUOTE650000GETTEXT('PRICE'),20PDF_SALES_QUOTE660000GETTEXT('AMOUNT')});20PDF_SALES_QUOTE670000PDFSetDefaultFont();10PDF_SALES_QUOTE680000end;0PDF_SALES_QUOTE6900000PDF_SALES_QUOTE700000--[[Main]]0PDF_SALES_QUOTE710000PAGE('LOCKPAGE');0PDF_SALES_QUOTE720000--[[Get Sales Lines]]0PDF_SALES_QUOTE730000SL = Record('Sales Line');0PDF_SALES_QUOTE740000SL:SETRANGE('Document Type', 0);0PDF_SALES_QUOTE750000SL:SETRANGE('Document No.', Rec:GETVALUE('No.'));0PDF_SALES_QUOTE760000--[[Create a new PDF Document]]0PDF_SALES_QUOTE770000PDFCreateDocument();0PDF_SALES_QUOTE780000--[[Create a new PDF Page]]0PDF_SALES_QUOTE790000PDFAddPage('A4','portrait');0PDF_SALES_QUOTE800000--[[Insert Header]]0PDF_SALES_QUOTE810000PDFInsertHeaderFooter();0PDF_SALES_QUOTE820000--[[Print Sales Lines]]0PDF_SALES_QUOTE830000local n = 0;0PDF_SALES_QUOTE840000if SL:FINDFIRST() then0PDF_SALES_QUOTE850000repeat10PDF_SALES_QUOTE860000n = n + 1;20PDF_SALES_QUOTE870000if n % PDFMaxRowsPerPage == 0 then20PDF_SALES_QUOTE880000PDFAddPage('A4','portrait');30PDF_SALES_QUOTE890000PDFInsertHeaderFooter();30PDF_SALES_QUOTE900000end;20PDF_SALES_QUOTE910000PDFTableColumnsAlignment = {'Left','Left','Right','Right','Right'};20PDF_SALES_QUOTE920000PDFWrite({SL:GETVALUE('No.'),20PDF_SALES_QUOTE930000SL:GETVALUE('Description'),30PDF_SALES_QUOTE940000SL:GETVALUE('Quantity'),30PDF_SALES_QUOTE950000format_num(SL:GETVALUE('Unit Price'),2);30PDF_SALES_QUOTE960000format_num(SL:GETVALUE('Line Amount'),2)});30PDF_SALES_QUOTE970000OrderAmount = OrderAmount + SL:GETVALUE('Line Amount');20PDF_SALES_QUOTE980000until SL:NEXT()==0;10PDF_SALES_QUOTE990000else0PDF_SALES_QUOTE1000000PDFWrite('No Sales Lines available.');10PDF_SALES_QUOTE1010000end;0PDF_SALES_QUOTE1020000--[[Print Sum]]0PDF_SALES_QUOTE1030000PDFWrite('');0PDF_SALES_QUOTE1040000PDFTableColumns = {145,175};0PDF_SALES_QUOTE1050000PDFTableColumnsAlignment = {'Right', 'Right'};0PDF_SALES_QUOTE1060000PDFSetDefaultFontBold();0PDF_SALES_QUOTE1070000PDFWrite({GETTEXT('TOTAL'), format_num(OrderAmount, 2)});0PDF_SALES_QUOTE1080000PDFSetDefaultFont();0PDF_SALES_QUOTE1090000--[[Print Signature]]0PDF_SALES_QUOTE1100000PDFSetXY(PDFLeftMargin,220);0PDF_SALES_QUOTE1110000PDFSetDefaultFontBold();0PDF_SALES_QUOTE1120000PDFWrite(Rec:GETCOLUMNCAPTION('Signature'));0PDF_SALES_QUOTE1130000PDFImage(Rec:GETVALUE('Signature'),100,40);0PDF_SALES_QUOTE1140000--[[Create PDF Document]]0PDF_SALES_QUOTE1150000local PDFData = PDFCreate();0PDF_SALES_QUOTE1160000--[[Two Variants: Export to FileRepository and export to file from there - First Option0PDF_SALES_QUOTE1170000 or: Do not store in FileRepository table and show directly on the app - Second Option]]0PDF_SALES_QUOTE1180000PAGE('UNLOCKPAGE');0PDF_SALES_QUOTE1190000if (false) then0PDF_SALES_QUOTE1200000--[[Store PDF in FileRepository for NAV access]]10PDF_SALES_QUOTE1210000FileRep = FileRepNew(Rec);10PDF_SALES_QUOTE1220000FileRep:INSERT();10PDF_SALES_QUOTE1230000FileRep:VALIDATE('Content Type', 'APP_PDF');10PDF_SALES_QUOTE1240000FileRep:VALIDATE('Description', 'Sales Quote');10PDF_SALES_QUOTE1250000FileRep:VALIDATE('Filename', Rec:GETVALUE('No.') .. '.pdf');10PDF_SALES_QUOTE1260000FileRep:VALIDATE('Data', PDFData);10PDF_SALES_QUOTE1270000FileRep:MODIFY();10PDF_SALES_QUOTE1280000--[[Export to file and open]]10PDF_SALES_QUOTE1290000PAGE('OPENFILE', FileRep:GETVALUE('Data'), 'Quote_'..Rec:GETVALUE('No.')..'.pdf', 'file');10PDF_SALES_QUOTE1300000else0PDF_SALES_QUOTE1310000--[[Export to file and open]]10PDF_SALES_QUOTE1320000PAGE('OPENFILE', PDFData, 'Quote_'..Rec:GETVALUE('No.')..'.pdf', 'file');10PDF_SALES_QUOTE1330000end;
0PDF_SALES_QUOTELIB_FILE0PDF_SALES_QUOTELIB_FORMAT0PDF_SALES_QUOTELIB_PDF