Any insights into the Serial Numbers printing on RMS Manager > Purchase Orders > Inventory Received Reports?
I'd like to customize the PORcv.xml file, so it prints the serial numbers being received when the Inventory Received Report is printed, during the receiving process.
*This post is locked for comments
Thanks
This was the content for the PORcv.xml file
Be aware that I have also done a few other modifications to this file, like changing column widths and allowing line wrap for long descriptions... This is set up to allow for 1 serial number per item (if you have 2 or 3 serials numbers PER ITEM) it will only print the first one. It will repeat and print multiple serial numbers if you are receiving more than one of an Item, it will print the serial numbers as a list under the description column. Please leave Author contribution credits in place.
<?xml version = "1.0" encoding = "UTF-16"?>
<XML>
<PROPERTIES>
<DESCRIPTION>XML Issue/Receive Report</DESCRIPTION>
<AUTHOR>Collaboration of Antonijo Todorovik and Rick Kirkman for CESSCO </AUTHOR>
<VERSION>Version 1.04</VERSION>
</PROPERTIES>
<!-- ========================= -->
<!-- Variable Declarations -->
<!-- ========================= -->
<!-- These variables may be altered: -->
<SET name = "PaperWidth" custom = "true" description = "Paper Width" type = "vbDouble"> 8.50 </SET>
<SET name = "PaperHeight" custom = "true" description = "Paper Height" type = "vbDouble"> 11.00 </SET>
<SET name = "LogoWidth" custom = "true" description = "Logo Width" type = "vbDouble"> 1.125 </SET>
<SET name = "LogoFilename" custom = "true" description = "Logo Filename" type = "String"> </SET>
<SET name = "HeaderHeight" custom = "true" description = "Margin Left" type = "vbDouble"> 0.75 </SET>
<SET name = "FooterHeight" custom = "true" description = "Footer Height" type = "vbDouble"> 0.25 </SET>
<SET name = "TotalsHeight" custom = "true" description = "Totals Height" type = "vbDouble"> 1 </SET>
<SET name = "MarginLeft" custom = "true" description = "Margin Left" type = "vbDouble"> 0.30 </SET>
<SET name = "MarginRight" custom = "true" description = "Margin Right" type = "vbDouble"> 0.25 </SET>
<SET name = "MarginTop" custom = "true" description = "Margin Top" type = "vbDouble"> 0.50 </SET>
<SET name = "MarginBottom" custom = "true" description = "Margin Bottom" type = "vbDouble"> 0.50 </SET>
<SET name = "PageWidth" description = "Page Width" type = "vbDouble"> PaperWidth - MarginLeft - MarginRight </SET>
<SET name = "PageHeight" description = "Page Height" type = "vbDouble"> PaperHeight - MarginTop - MarginBottom - HeaderHeight - FooterHeight</SET>
<!-- Margin -->
<MARGIN>
<TOP> MarginTop + HeaderHeight </TOP>
<BOTTOM> MarginBottom </BOTTOM>
<LEFT> MarginLeft </LEFT>
<RIGHT> MarginRight </RIGHT>
<ORIENTATION>orPortrait</ORIENTATION>
</MARGIN>
<FONT name = "">
<!-- No ID is default font -->
<NAME> "Arial" </NAME>
<SIZE> 12 </SIZE>
<BOLD> False </BOLD>
<UNDERLINE> False </UNDERLINE>
<ITALIC> False </ITALIC>
<COLOR> vbBlack </COLOR>
</FONT>
<FONT name = "Small">
<NAME> "Arial" </NAME>
<SIZE>9</SIZE>
<BOLD> False </BOLD>
<UNDERLINE> False </UNDERLINE>
<ITALIC> False </ITALIC>
<COLOR> vbBlack </COLOR>
</FONT>
<FONT name = "SmallBold">
<NAME> "Arial" </NAME>
<SIZE>9</SIZE>
<BOLD> True </BOLD>
<UNDERLINE> False </UNDERLINE>
<ITALIC> False </ITALIC>
<COLOR> vbBlack </COLOR>
</FONT>
<FONT name = "Tiny">
<NAME> "Arial" </NAME>
<SIZE> 8 </SIZE>
<BOLD> False </BOLD>
<UNDERLINE> False </UNDERLINE>
<ITALIC> True </ITALIC>
<COLOR> vbBlack </COLOR>
</FONT>
<FONT name = "Large">
<NAME> "Arial" </NAME>
<SIZE> 18 </SIZE>
<BOLD> True </BOLD>
<UNDERLINE> False </UNDERLINE>
<ITALIC> False </ITALIC>
<COLOR> vbBlack </COLOR>
</FONT>
<SUB name = "PrintHeader">
<!-- =========================================================================- -->
<!-- STUB -->
<!-- =========================================================================- -->
<TABLE>
<FONT> "Large" </FONT>
<BORDER> tbNone </BORDER>
<TOP> MarginTop </TOP>
<COLUMNHEADER>
<ALIGNMENT> " <~" </ALIGNMENT>
<WIDTH> PageWidth * 0.10 </WIDTH>
<TEXT> "" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> " <~" </ALIGNMENT>
<WIDTH> PageWidth * 0.40 </WIDTH>
<TEXT> Configuration.StoreName </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">~" </ALIGNMENT>
<IF>
<CONDITION>(PurchaseOrder.Type = PurchaseOrderTypeHQIssue) | (PurchaseOrder.Type = PurchaseOrderTypeLocalIssue)</CONDITION>
<THEN>
<TEXT>"Inventory Issued Report"</TEXT>
</THEN>
<ELSE>
<TEXT>"Inventory Received Report"</TEXT>
</ELSE>
</IF>
<WIDTH> PageWidth * 0.50 </WIDTH>
</COLUMNHEADER>
</TABLE>
<TABLE>
<BORDER> tbNone </BORDER>
<COLUMNHEADER>
<ALIGNMENT> "<~" </ALIGNMENT>
<WIDTH> PageWidth * 0.10 </WIDTH>
<TEXT> "" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> "<~" </ALIGNMENT>
<WIDTH> PageWidth * 0.50 </WIDTH>
<TEXT> Configuration.StoreAddress </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">~" </ALIGNMENT>
<WIDTH> PageWidth * 0.40 </WIDTH>
<TEXT> "Order Number: " PurchaseOrder.Number </TEXT>
</COLUMNHEADER>
<ROW> "|" Configuration.CityStateZip "|" </ROW>
<ROW> "" </ROW>
<ROW> "" </ROW>
</TABLE>
<!-- =========================================================================- -->
<!-- Logo -->
<!-- =========================================================================- -->
<PICTURE>
<TOP> MarginTop + 0.1 </TOP>
<!-- Height = .75 -->
<LEFT> MarginLeft </LEFT>
<WIDTH> PageWidth * 0.10 </WIDTH>
<FILENAME> LogoFilename </FILENAME>
</PICTURE>
<!-- ========================= -->
<!-- Barcode -->
<!-- ========================= -->
<Barcode>
<STYLE> MSSCODE128B </STYLE>
<UPCNOTCHES> msUPCNBelow </UPCNOTCHES>
<TEXT> PurchaseOrder.Number </TEXT>
<TOP> MarginTop + 0.5 </TOP>
<LEFT> MarginLeft + PageWidth * 0.8 </LEFT>
<WIDTH> PageWidth * 0.2 </WIDTH>
<HEIGHT> 0.2 </HEIGHT>
<ALIGN> bcaLeft </ALIGN>
<PRINTCAPTION> False </PRINTCAPTION>
<BARWIDTH> 0 </BARWIDTH>
</Barcode>
<PARAGRAPH>
<TEXT newline = "true"> "" </TEXT>
</PARAGRAPH>
</SUB>
<SUB name = "PrintAddress">
<!-- =========================================================================- -->
<!-- To & ShipTo -->
<!-- =========================================================================- -->
<TABLE>
<TOP> MarginTop + HeaderHeight </TOP>
<FONT> "Small" </FONT>
<PENSTYLE> psSolid </PENSTYLE>
<HEADERSHADE> vbYellow </HEADERSHADE>
<BORDER> tbBoxColumns </BORDER>
<COLUMNHEADER>
<ALIGNMENT> "<" </ALIGNMENT>
<WIDTH> PageWidth * .50 </WIDTH>
<TEXT newline = "true"> "To" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> "<" </ALIGNMENT>
<WIDTH> PageWidth * .50 </WIDTH>
<TEXT> "Ship To" </TEXT>
</COLUMNHEADER>
<IF>
<CONDITION> Len(PurchaseOrder.ShipTo) | Len(PurchaseOrder.Supplier) </CONDITION>
<THEN>
<ROW> PurchaseOrder.Supplier "|" PurchaseOrder.ShipTo </ROW>
</THEN>
<ELSE>
<ROW> " | " </ROW>
<ROW> " | " </ROW>
<ROW> " | " </ROW>
<ROW> " | " </ROW>
<ROW> " | " </ROW>
<ROW> " | " </ROW>
</ELSE>
</IF>
</TABLE>
<!-- =========================================================================- -->
<!-- PO Info -->
<!-- =========================================================================- -->
<PARAGRAPH>
<TEXT newline = "true"> "" </TEXT>
</PARAGRAPH>
<!-- ========== -->
<!-- Line 1 -->
<!-- ========== -->
<TABLE>
<FONT> "Small" </FONT>
<PENSTYLE> psSolid </PENSTYLE>
<HEADERSHADE> vbYellow </HEADERSHADE>
<BORDER> tbBoxColumns </BORDER>
<COLUMNHEADER>
<ALIGNMENT> "^~" </ALIGNMENT>
<WIDTH> PageWidth * .15 </WIDTH>
<TEXT> "P.O. Date" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> "^~" </ALIGNMENT>
<WIDTH> PageWidth * .15 </WIDTH>
<TEXT> "Req'd Date" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> "^~" </ALIGNMENT>
<WIDTH> PageWidth * .20 </WIDTH>
<TEXT> "Requisitioner" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> "^~" </ALIGNMENT>
<WIDTH> PageWidth * .50 </WIDTH>
<TEXT> "Remarks" </TEXT>
</COLUMNHEADER>
<ROW> PurchaseOrder.DateCreated "|" PurchaseOrder.DateRequired "|" PurchaseOrder.Requisitioner "|" PurchaseOrder.Remarks </ROW>
</TABLE>
<!-- =========================================================================- -->
<!-- Space -->
<!-- =========================================================================- -->
<PARAGRAPH>
<TEXT newline = "true"> "" </TEXT>
</PARAGRAPH>
<!-- =========================================================================- -->
<!-- Line 2 -->
<!-- =========================================================================- -->
<TABLE>
<FONT> "Small" </FONT>
<BORDER> tbBoxColumns </BORDER>
<HEADERSHADE> vbYellow </HEADERSHADE>
<COLUMNHEADER>
<ALIGNMENT> "^~" </ALIGNMENT>
<WIDTH> PageWidth * .15 </WIDTH>
<TEXT> "Ship Via" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> "^~" </ALIGNMENT>
<WIDTH> PageWidth * .15 </WIDTH>
<TEXT> "F.O.B. Point" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> "^~" </ALIGNMENT>
<WIDTH> PageWidth * .20 </WIDTH>
<TEXT> "Terms" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> "^~" </ALIGNMENT>
<WIDTH> PageWidth * .25 </WIDTH>
<TEXT> "Freight" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> "^~" </ALIGNMENT>
<WIDTH> PageWidth * .25 </WIDTH>
<TEXT> "Confirming To" </TEXT>
</COLUMNHEADER>
<ROW> PurchaseOrder.ShipVia "|" PurchaseOrder.FOBPoint "|" PurchaseOrder.Terms "|" PurchaseOrder.Freight "|" PurchaseOrder.ConfirmingTo </ROW>
</TABLE>
<!-- =========================================================================- -->
<!-- Space -->
<!-- =========================================================================- -->
<PARAGRAPH>
<TEXT newline = "true"> "" </TEXT>
</PARAGRAPH>
</SUB>
<!-- **************************** -->
<!-- Collaboration of Antonijo Todorovik and Rick Kirkman for CESSCO, Oct 2013 -->
<!-- **************************** -->
<SUB name = "PrintEntries">
<!-- =========================================================================- -->
<!-- PO Entries -->
<!-- =========================================================================- -->
<TABLE>
<FONT> "Small" </FONT>
<HEADERSHADE> vbYellow </HEADERSHADE>
<PENSTYLE> psSolid </PENSTYLE>
<BORDER> tbBoxColumns </BORDER>
<COLUMNHEADER>
<ALIGNMENT> "<" </ALIGNMENT>
<WIDTH>PageWidth * 0.15</WIDTH>
<TEXT> "Order Number" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> "<" </ALIGNMENT>
<WIDTH>PageWidth * 0.15</WIDTH>
<TEXT> "Item Code" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> "<" </ALIGNMENT>
<WIDTH>PageWidth * 0.20</WIDTH>
<TEXT> "Description" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">" </ALIGNMENT>
<WIDTH>PageWidth * 0.06</WIDTH>
<TEXT> "Ord" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">" </ALIGNMENT>
<WIDTH>PageWidth * 0.06</WIDTH>
<TEXT>"RTD"</TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">" </ALIGNMENT>
<WIDTH>PageWidth * 0.06</WIDTH>
<IF>
<CONDITION>(PurchaseOrder.Type = PurchaseOrderTypeHQIssue) | (PurchaseOrder.Type = PurchaseOrderTypeLocalIssue)</CONDITION>
<THEN>
<TEXT>"Iss"</TEXT>
</THEN>
<ELSE>
<TEXT>"Rec"</TEXT>
</ELSE>
</IF>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">" </ALIGNMENT>
<WIDTH>PageWidth * 0.10</WIDTH>
<TEXT>"Unit Cost"</TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">" </ALIGNMENT>
<WIDTH>PageWidth * 0.11</WIDTH>
<TEXT>"Extended To Date"</TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">" </ALIGNMENT>
<WIDTH>PageWidth * 0.11</WIDTH>
<IF>
<CONDITION>(PurchaseOrder.Type = PurchaseOrderTypeHQIssue) | (PurchaseOrder.Type = PurchaseOrderTypeLocalIssue)</CONDITION>
<THEN>
<TEXT>"Extended Issued"</TEXT>
</THEN>
<ELSE>
<TEXT>"Extended Received"</TEXT>
</ELSE>
</IF>
</COLUMNHEADER>
<IF>
<CONDITION>PurchaseOrder.Entries.Count > 0</CONDITION>
<THEN>
<FOR each = "PurchaseOrderEntry">
<ROW>PurchaseOrder.Entry.OrderNumber "|" PurchaseOrder.Entry.LookUpCode "|" PurchaseOrder.Entry.Description "|" PurchaseOrder.Entry.QuantityOrdered "|" PurchaseOrder.Entry.QuantityRTD "|" PurchaseOrder.Entry.QuantityReceived "|" PurchaseOrder.Entry.UnitPrice "|" PurchaseOrder.Entry.ExtendedPriceRTD "|" PurchaseOrder.Entry.ExtendedPriceReceived</ROW>
<FOR each = "PurchaseOrderEntrySerialEntry">
<ROW> "||" PurchaseOrder.Entry.SerialEntry.Number1 "||||||" </ROW>
<!-- <ROW> "||" PurchaseOrder.Entry.SerialEntry.Number2 "||||||" </ROW> -->
<!-- <ROW> "||" PurchaseOrder.Entry.SerialEntry.Number3 "||||||" </ROW> -->
</FOR>
</FOR>
<EXTENDLASTROW> True </EXTENDLASTROW>
<EXTENDLASTROWMARGIN> TotalsHeight </EXTENDLASTROWMARGIN>
</THEN>
</IF>
</TABLE>
<IF>
<CONDITION> PurchaseOrder.Entries.Count = 0 </CONDITION>
<THEN>
<TABLE>
<FONT> "Small" </FONT>
<HEADERSHADE>vbWhite</HEADERSHADE>
<PENSTYLE> psSolid </PENSTYLE>
<BORDER> tbBoxColumns </BORDER>
<COLUMNHEADER>
<ALIGNMENT> "^" </ALIGNMENT>
<WIDTH>PageWidth</WIDTH>
<TEXT newline = "True">""</TEXT>
<TEXT newline = "True">"*** No entries exist for this Order ***"</TEXT>
<TEXT newline = "True">""</TEXT>
</COLUMNHEADER>
<EXTENDLASTROWMARGIN> TotalsHeight </EXTENDLASTROWMARGIN>
<EXTENDLASTROW> True </EXTENDLASTROW>
</TABLE>
</THEN>
</IF>
<!--
<PARAGRAPH>
<TEXT newline="true"> "" </TEXT>
</PARAGRAPH>
-->
</SUB>
<SUB name = "PrintTotals">
<!-- =========================================================================- -->
<!-- Tail -->
<!-- =========================================================================- -->
<!-- Needs to position itself exactly at the bottom of the last page, or if there's not enough room, print itself on the next page. -->
<TABLE>
<FONT> "SmallBold" </FONT>
<HEADERSHADE> vbYellow </HEADERSHADE>
<PENSTYLE> psSolid </PENSTYLE>
<BORDER> tbBoxColumns </BORDER>
<COLUMNHEADER>
<ALIGNMENT> ">" </ALIGNMENT>
<WIDTH>PageWidth * 0.50</WIDTH>
<TEXT> "Grand Totals:" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">" </ALIGNMENT>
<WIDTH>PageWidth * 0.06</WIDTH>
<TEXT> PurchaseOrder.TotalQuantityOrdered </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">" </ALIGNMENT>
<WIDTH>PageWidth * 0.06</WIDTH>
<TEXT>PurchaseOrder.TotalQuantityRTD</TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">" </ALIGNMENT>
<WIDTH>PageWidth * 0.06</WIDTH>
<TEXT>PurchaseOrder.TotalQuantityReceived</TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">" </ALIGNMENT>
<WIDTH>PageWidth * 0.10</WIDTH>
<TEXT> PurchaseOrder.TotalUnitPrice </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">" </ALIGNMENT>
<WIDTH>PageWidth * 0.11</WIDTH>
<TEXT>PurchaseOrder.TotalExtendedPriceRTD</TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">" </ALIGNMENT>
<WIDTH>PageWidth * 0.11</WIDTH>
<TEXT>PurchaseOrder.TotalExtendedPrice</TEXT>
</COLUMNHEADER>
</TABLE>
<PARAGRAPH>
<TEXT newline = "true"> "" </TEXT>
</PARAGRAPH>
<PARAGRAPH>
<TEXT newline = "true"> "" </TEXT>
</PARAGRAPH>
<TABLE>
<FONT> "Small" </FONT>
<BORDER> tbTop </BORDER>
<COLUMNHEADER>
<ALIGNMENT> "^~" </ALIGNMENT>
<WIDTH> PageWidth * .375 </WIDTH>
<TEXT> "Authorized by" </TEXT>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> "^~" </ALIGNMENT>
<WIDTH> PageWidth * .125 </WIDTH>
<TEXT> "Date" </TEXT>
</COLUMNHEADER>
</TABLE>
</SUB>
<SUB name = "PrintFooter">
<TABLE>
<TOP> PaperHeight - MarginBottom - FooterHeight </TOP>
<FONT> "Small" </FONT>
<BORDER> tbNone </BORDER>
<COLUMNHEADER>
<ALIGNMENT> "<~" </ALIGNMENT>
<WIDTH> PageWidth * 0.5 </WIDTH>
</COLUMNHEADER>
<COLUMNHEADER>
<ALIGNMENT> ">~" </ALIGNMENT>
<WIDTH> PageWidth * 0.5 </WIDTH>
</COLUMNHEADER>
<ROW> "Order Number: " PurchaseOrder.Number "|Page \p of \t" </ROW>
</TABLE>
</SUB>
<SUB name = "OverlayFirstPage">
<CALL> "PrintFooter" </CALL>
</SUB>
<SUB name = "OverlayMiddlePage">
<CALL> "PrintHeader" </CALL>
<CALL> "PrintFooter" </CALL>
</SUB>
<SUB name = "OverlayLastPage">
<CALL> "PrintHeader" </CALL>
<CALL> "PrintFooter" </CALL>
</SUB>
<SUB name = "OverlayOnlyPage">
<CALL> "PrintHeader" </CALL>
<CALL> "PrintFooter" </CALL>
</SUB>
<DOCUMENT>
<!-- header MUST be printed as a NON-overlay on the first page ... export-to-HTML issues -->
<CALL> "PrintHeader" </CALL>
<CALL> "PrintAddress"</CALL>
<CALL> "PrintEntries" </CALL>
<CALL> "PrintTotals" </CALL>
</DOCUMENT>
</XML>
Hey Rick, Can you post the modified .xml file? Thanks!
It only prints Serial Numbers when they exist, so it works for serialized and standard items. Note that this makes more sense when printing Inventory Received Report when receiving serialized items, as serial numbers don't apply to actual Purchase Order printing (technically we don't know the serial numbers when placing the order). Antonijo was the real help with this and helped me get it working.
Hi, what if the Po/Transfer includes both Serialized and Standard items.
Thanks
I've added a new column header for Serial Number1, adjusted the column widths and added the variable PurchaseOrder.Entry.SerialEntry.Number1 in the <ROW> information. But I don't understand editing the For/Next loop. Can I get a little help?
Thanks, Antonijo, for providing a solution that worked perfectly for what I needed. I am now able to allow up to 3 serial numbers per item to print on the Inventory Received Report. It's a great method for cross-checking serial numbers.
Thank you Antonijo!
If I want the Serial Numbers to print in the same Column as the Description (not create a new column as there is no horizontal space), is that possible? So it would print like this:
Description
Item description text
serial number1
serial number1
serial number1
Thanks again!
Rick
One thing more: this is only available when receiving of issuing PO/Transfer order that includes serialized items...
antonijo_todorovik@hotmail.com
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... 290,802 Super User 2024 Season 2
Martin Dráb 229,133 Most Valuable Professional
nmaenpaa 101,154