SQL Scripts for Microsoft Dynamics GP: Simple RMA Audit

Microsoft Dynamics GPThis script is part of the SQL Scripts for Microsoft Dynamics GP where I will be posted the scripts I wrote against Microsoft Dynamics GP over the 19 years before I stopped working with Dynamics GP.

This script is another variation of the simple audit I created, but this time it audits for changes to the RMA tables.

/*
Created by Ian Grieve of azurecurve | Ramblings of an IT Professional (http://www.azurecurve.co.uk) This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int). */
CREATE TABLE ut_AZRCRV_Audit ( RecordType VARCHAR(100) ,RecordID VARCHAR(100) ,UpdateType VARCHAR(10) ,Username varchar(150) ,ChangeDateTime DateTime ,OldData NVARCHAR(MAX) ,NewData NVARCHAR(MAX) ) GO CREATE TRIGGER utr_AZRCRV_SVC05000_AuditUpdate ON SVC05000 AFTER UPDATE AS INSERT INTO ut_AZRCRV_Audit --VALUES SELECT 'SVC05000' ,d.RETDOCID ,'Update' ,SYSTEM_USER ,GETDATE() ,'RATETPID = ' + CAST(RTRIM(d.RATETPID) AS VARCHAR(100)) + ' | ' + 'EXGTBLID = ' + CAST(RTRIM(d.EXGTBLID) AS VARCHAR(100)) + ' | ' + 'XCHGRATE = ' + CAST(RTRIM(d.XCHGRATE) AS VARCHAR(100)) + ' | ' + 'EXCHDATE = ' + CAST(RTRIM(d.EXCHDATE) AS VARCHAR(100)) ,'RATETPID = ' + CAST(RTRIM(i.RATETPID) AS VARCHAR(100)) + ' | ' + 'EXGTBLID = ' + CAST(RTRIM(i.EXGTBLID) AS VARCHAR(100)) + ' | ' + 'XCHGRATE = ' + CAST(RTRIM(i.XCHGRATE) AS VARCHAR(100)) + ' | ' + 'EXCHDATE = ' + CAST(RTRIM(i.EXCHDATE) AS VARCHAR(100)) FROM deleted d LEFT JOIN inserted i ON i.RETDOCID = d.RETDOCID GO CREATE TRIGGER utr_AZRCRV_SVC05000_AuditInsert on SVC05000 AFTER INSERT AS INSERT INTO ut_AZRCRV_Audit --VALUES SELECT 'SVC05000' ,i.RETDOCID ,'Insert' ,SYSTEM_USER ,GETDATE() ,'' ,'RATETPID = ' + CAST(RTRIM(i.RATETPID) AS VARCHAR(100)) + ' | ' + 'EXGTBLID = ' + CAST(RTRIM(i.EXGTBLID) AS VARCHAR(100)) + ' | ' + 'XCHGRATE = ' + CAST(RTRIM(i.XCHGRATE) AS VARCHAR(100)) + ' | ' + 'EXCHDATE = ' + CAST(RTRIM(i.EXCHDATE) AS VARCHAR(100)) FROM inserted i GO CREATE TRIGGER utr_AZRCRV_SVC05200_AuditUpdate ON SVC05200 AFTER UPDATE AS INSERT INTO ut_AZRCRV_Audit --VALUES SELECT 'SVC05200' ,CAST(d.RETDOCID AS VARCHAR(15)) + ' | ' + CAST(d.LNSEQNBR AS VARCHAR(20)) ,'Update' ,SYSTEM_USER ,GETDATE() ,'UNITPRCE = ' + CAST(RTRIM(d.UNITPRCE) AS VARCHAR(100)) + ' | ' + 'ORUNTPRC = ' + CAST(RTRIM(d.ORUNTPRC) AS VARCHAR(100)) + ' | ' + 'XTNDPRCE = ' + CAST(RTRIM(d.XTNDPRCE) AS VARCHAR(100)) + ' | ' + 'OXTNDPRC = ' + CAST(RTRIM(d.OXTNDPRC) AS VARCHAR(100)) + ' | ' + 'Originating_Return_Price = ' + CAST(RTRIM(d.Originating_Return_Price) AS VARCHAR(100)) + ' | ' + 'SVC_Extended_Return_Pric = ' + CAST(RTRIM(d.SVC_Extended_Return_Pric) AS VARCHAR(100)) + ' | ' + 'SVC_Orig_Ext_Return_Pric = ' + CAST(RTRIM(d.SVC_Orig_Ext_Return_Pric) AS VARCHAR(100)) ,'UNITPRCE = ' + CAST(RTRIM(i.UNITPRCE) AS VARCHAR(100)) + ' | ' + 'ORUNTPRC = ' + CAST(RTRIM(i.ORUNTPRC) AS VARCHAR(100)) + ' | ' + 'XTNDPRCE = ' + CAST(RTRIM(i.XTNDPRCE) AS VARCHAR(100)) + ' | ' + 'OXTNDPRC = ' + CAST(RTRIM(i.OXTNDPRC) AS VARCHAR(100)) + ' | ' + 'Originating_Return_Price = ' + CAST(RTRIM(i.Originating_Return_Price) AS VARCHAR(100)) + ' | ' + 'SVC_Extended_Return_Pric = ' + CAST(RTRIM(i.SVC_Extended_Return_Pric) AS VARCHAR(100)) + ' | ' + 'SVC_Orig_Ext_Return_Pric = ' + CAST(RTRIM(i.SVC_Orig_Ext_Return_Pric) AS VARCHAR(100)) FROM deleted d LEFT JOIN inserted i ON i.RETDOCID = d.RETDOCID AND i.LNSEQNBR = d.LNSEQNBR GO CREATE TRIGGER utr_AZRCRV_SVC05200_AuditInsert on SVC05200 AFTER INSERT AS INSERT INTO ut_AZRCRV_Audit --VALUES SELECT 'SVC05200' ,CAST(RETDOCID AS VARCHAR(15)) + ' | ' + CAST(LNSEQNBR AS VARCHAR(20)) ,'Insert' ,SYSTEM_USER ,GETDATE() ,'' ,'UNITPRCE = ' + CAST(RTRIM(i.UNITPRCE) AS VARCHAR(100)) + ' | ' + 'ORUNTPRC = ' + CAST(RTRIM(i.ORUNTPRC) AS VARCHAR(100)) + ' | ' + 'XTNDPRCE = ' + CAST(RTRIM(i.XTNDPRCE) AS VARCHAR(100)) + ' | ' + 'OXTNDPRC = ' + CAST(RTRIM(i.OXTNDPRC) AS VARCHAR(100)) + ' | ' + 'Originating_Return_Price = ' + CAST(RTRIM(i.Originating_Return_Price) AS VARCHAR(100)) + ' | ' + 'SVC_Extended_Return_Pric = ' + CAST(RTRIM(i.SVC_Extended_Return_Pric) AS VARCHAR(100)) + ' | ' + 'SVC_Orig_Ext_Return_Pric = ' + CAST(RTRIM(i.SVC_Orig_Ext_Return_Pric) AS VARCHAR(100)) FROM inserted i GO

Click to show/hide the SQL Scripts for Microsoft Dynamics GP Series Index

SQL Scripts for Microsoft Dynamics GP
Sales Transactions (Work) Against a Specific Site
Update Site Descriptions From CSV
Select All Primary Keys and Generate ALTER Script
Export Open/History PM Transactions After a Specified Date
Migrate Vendor Emails from Active Docs to Standard Email Fields
Update Inventory Accounts from Item Class
Update Accounts Payable Distribution on Work Status PM Transactions from Posting Account Setup
Update Inventory Distribution on Work Status Purchase Orders from the Item Card
Update Accrued Purchases Distribution on History Receipts from Posting Account Setup
Insert National Accounts from CSV
Import Site Bins From CSV
Update Accounts and Distributions on Work Status Sales Transactions from Item Card, Tax Details or Posting Account Setup
Assign All Items to All Site Bins
SQL Trigger on PO invoice Insert to Change GL posted Date
PO Receipt History View
Workflow Assignment Review
Sales Invoice Query
Assembly Transaction Quantities Required
Generate Standard Cost Update Macro from Text File Import
Validate and Insert/Update Vendor Emails from a Text File
Update Min Order Qty and Average Lead Time on Vendor Item From Text File
Update Mfg Cost Accounts from Mfg Item Class Setup
Create Macro to Delete Items
Update Item Resource Planning on Item Quantity Master from Text File
Update Item Engineering File from a Text File
Insert Mfg BOMs from Text File
Insert Manufacturing Routings from Text File
Return Top Level BOM for Manufacturing Orders
Simple RMA Audit
Allow Workflow Originator to be an Approver
Change Web Service URi
Prefix Companies Names with System Designator
Purchased Items With Serial Numbers and Linked Sales Transactions
Script to Set Transactions as Included on VAT Daybook Return
Get Alpha Characters from an Alphanumeric String
Get Numeric Characters from an Alphanumeric String
Select Next Temporary Creditor ID
Compare Ship To Address on Work Sales Trx Against Customer
Update Ship To Name on Work Sales Transactions to Match the Customer Name
Table Function to Split String on Delimiter
Payment Run Apply Query
Remove Multicurrency from Sales Transactions
Delete Corrupt Extended Pricing Data
Insert Extended Pricing Price Sheet Header
Insert Extended Pricing Price Sheet UofM Work
Insert Extended Pricing Price Sheet Assignments
Update Item Replenishment Method for Manufacturing
Round Extended Pricing Price Sheet Item Value
Select Duplicate Extended Pricing Price Sheet Work Records
Check for Corrupt Extended Pricing Records
Return Items with Incorrect Quantities
List of PM Invoices for Vendors with POs
PO Commitment Detail
Custom Purchase Order Email Notification to Originator on Workflow Final Approval
Change Vendor Change Approvals Joins and Fields
Add Joins and Fields to PM Document Approval Notification Emails
SQL View to Return Quantity Available
SQL View to Return Category Linked to Segment 3 in COA
SQL View to Return Purchase Orders
SQL Script to Return PO Receipts
SQL View to Create Division Tree for Management Reporter
SQL View to Create Division, including UDF 3 and 4, Tree for Management Reporter
Select a List of Vendor Addresses
SQL View to Return PO Commitment Detail
SQL View to Return List of Posted Vendor Document Numbers
Verify PM Batches Exist
SQL Function To Return Approver
Insert Creditor Item Numbers
Change Email Notification Assignment
RM Aged Debt Report
Sales Line Items
List Bank Accounts with Linked GL Accounts
Set Account Categories To User-Defined Field 2
Check Posting Type for Account (Segment 2)/Account Category Combinations
List Tax Detail Transactions
Select Tax Details and Related G/L Accounts
Update Account Description by Adding 3rd Segment Description
Update Segment Descriptions from Other Database
Return Opening Balance for Period of Supplied Date
Select Debit, Credit and Net Change for All Accounts in Date Range
Select All Pending Prepayments
Available Stock for All Items
Item Report
List of Exchange Rates
List of Active Fixed Assets
Set New Vendor On Hold if EFT Exists
Set New Vendor On Hold if EFT Exists
List Taxes Linked to GL Accounts
Upload and Verify Tax Commodity Codes
Verify Tax Detail Assigned to Vendor
Copy Workflow from Source to Destination Database
Copy Workflow Calendar from Source to Destination Database
Copy Email Messages from a Source to Destination Database
Select Chart of Accounts
Delete Orphaned Vendor EFT Details
View to Return List of Payments and Linked Invoices
Extract GL Period Balances
Sales by Customer By Year
Sales by Salesperson By Year
List Open Purchase Orders
List Open Purchase Order Lines
List of Open Payables Transactions
list of Open Payables Distributions
List GL Transactions
List GL Accounts With Notes
List General Ledger Transactions (Excluding Year End Journals)
View for Payables Transactions Extract
Extract Payables Transactions from All Companies
Activate Horizontal Scroll Bars for All Existing Users
Set Vendor On Hold If EFT Details Changed
Trigger to Activate Horizontal Scroll Bars for New Users
Set Vendor On Hold When Created

In Microsoft Dynamics 365 Business Central (Administration), how do I… Use Worksheet Pages

Microsoft Dynamics 365 Business CentralThis post is part of the In Microsoft Dynamics 365 Business Central (Administration), how do I… series and of the wider In Microsoft Dynamics 365 Business Central, how do I… series which I am posting as I familiarise myself with Microsoft Dynamics 365 Business Central.

In an earlier article in this series, I introduced the different types of pages used within Dynamics BC. I thought it might be useful to give a run through of how to use each of the pages; in this post, I’m going to take a look at worksheet pages.

Like document pages, worksheet pages are transaction pages. However, they differ from document pages in that they can hold multiple transactions rather than just a single one.

Due to this difference, a worksheet page is structured differently. They consist of a small number of header fields, such as for a batch number, along with a list page style section for entering multiple data rows. This is sometimes followed by a section containing either additional data fields or totals.

There are many worksheet pages in Dynamics BC, including, but not limited to, general journals, price, pick and put-away worksheets.

An example of a worksheet page is the one for General Journals:

General Journal worksheet page

Continue reading “In Microsoft Dynamics 365 Business Central (Administration), how do I… Use Worksheet Pages”