ClassicPress Plugins Available From azurecurve | Development in 2023: Post Archive

ClassicPressIn this series of articles, I am going to introduce each of the plugins I have developed for ClassicPress, a hard-fork of WordPress, which was originally created to provide an alternative, yet compatible, CMS without the Gutenberg block editor.

The 32nd plugin is Post Archive.

Post Archive
The Post Archive plugin is based on Ozh Tweet Archive – a theme for Wordpress. The tweet archive was extracted, enhanced and turned into this plugin which lets the posts archive to be displayed in a page or in a widget.

Widgets can be limited in the number of years they display as well as have footer text, such as a link to a page containing the full archive in a shortcode.

This plugin is multisite compatible; each site will need settings to be configured in the admin dashboard.

Continue reading “ClassicPress Plugins Available From azurecurve | Development in 2023: Post Archive”

ClassicPress Plugins Available From azurecurve | Development in 2023: Page Index

ClassicPressIn this series of articles, I am going to introduce each of the plugins I have developed for ClassicPress, a hard-fork of WordPress, which was originally created to provide an alternative, yet compatible, CMS without the Gutenberg block editor.

The 31st plugin is Page Index.

Page Index
Shortcode which displays a simple tile based page index showing the child pages of the loaded page or of the supplied pageid or slug. This plugin is multisite compatible.

To use simply place the

[page-index]

shortcode on a page or in a post. Tiled page index based on child pages of the page the shortcode is used on.

If a different page index is required, or the shortcode is used in a post use one of the following parameters:

  • pageid
  • slug

e.g. [page-index pageid='32'] or [page-index slug='mythology/celtic-fairy-tales']

If both parameters are supplied, then pageid will take precedence and slug will be ignored.

Integrated with Flags plugin to display flag in page index; add custom Flag custom field to page.

Integrated with Icons plugin to display icon in page index; add custom Icon custom field to page.

This plugin is multisite compatible; each site will need settings to be configured in the admin dashboard.

Continue reading “ClassicPress Plugins Available From azurecurve | Development in 2023: Page Index”

SQL Scripts for Microsoft Dynamics GP: Return Opening Balance for Period of Supplied Date

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

I don’t recall for whom or why this script was returned, but it will return the opening balance for every G/L account for the user supplied date.

/*
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). */
DECLARE @StartDate DATE = '2027-04-01' SELECT ['Account Index Master'].ACTNUMST AS 'Account' ,CASE ACCTTYPE WHEN 1 THEN 'Posting Account' WHEN 2 THEN 'Unit Account' WHEN 3 THEN 'Posting Allocation Account' WHEN 4 THEN 'Unit Allocation Account' ELSE 'Unknown Account Type' END AS AccountType ,['Account Master'].ACTDESCR AS 'Description' ,ISNULL(( SELECT SUM(['Account Sumary Master'].PERDBLNC) FROM SY40100 AS SY --Period Setup (SY40100) INNER JOIN SY40100 AS SYCUR --Period Setup (SY40100) ON SY.SERIES = 2 AND CONVERT(DATETIME, CONVERT(VARCHAR(100), @StartDate, 126), 126) BETWEEN SYCUR.PERIODDT AND SYCUR.PERDENDT AND SYCUR.ODESCTN = 'General Entry' INNER JOIN ( SELECT PERDBLNC ,YEAR1 ,PERIODID ,ACTINDX FROM GL10110 --Account Current Summary Master (GL10110) UNION ALL SELECT PERDBLNC ,YEAR1 ,PERIODID ,ACTINDX FROM GL10111 --Account Summary History (GL10111) ) AS ['Account Sumary Master'] ON ['Account Sumary Master'].ACTINDX = ['Account Index Master'].ACTINDX AND ['Account Sumary Master'].YEAR1 = SYCUR.YEAR1 AND ['Account Sumary Master'].PERIODID <= CASE WHEN SYCUR.PERIODID = 1 THEN 0 ELSE SY.PERIODID END WHERE SY.SERIES = 2 AND DATEADD(month, -1, CONVERT(DATETIME, CONVERT(VARCHAR(100), @StartDate, 126), 126)) BETWEEN SY.PERIODDT AND SY.PERDENDT AND SY.ODESCTN = 'General Entry' ), 0) AS 'Beginning Balance' FROM GL00100 AS ['Account Master'] --Breakdown Account Master (GL00100) INNER JOIN GL00105 AS ['Account Index Master'] --Account Index Master (GL00105) ON ['Account Index Master'].ACTINDX = ['Account Master'].ACTINDX GO

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

In Microsoft Dynamics 365 Business Central (Financial), how do I… Configure the General Posting Setup

Microsoft Dynamics 365 Business CentralThis post is part of the In Microsoft Dynamics 365 Business Central (Financial), 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.

Now that we have created the general business posting groups and general product posting groups we have the key pair combinations needed to configure all of the general posting setup.

You can access the general product posting groups on a filtered basis by opening the page from either the General Business Posting Groups or General Product Posting Groups windows or, as I am in this post, seeing an unfiltered list of all of them by searching for and opening General Posting Setup:

General Posting Setup

After entering the key pair of Gen. Bus. Posting Group and Gen. Prod. Posting Group you can enter a Description and then enter all of the accounts which should default.

At the simplest level, only the Sales, Purchase and COGS accounts are required, but you would be better served entering the G/L accounts for the other transaction types you process or for discounts if you use them. As you go across the page you will have accounts to set for sales, purchasing and then inventory.

In Microsoft Dynamics 365 Business Central, how do I…

In Microsoft Dynamics 365 Business Central (Financial), how do I…

SQL Scripts for Microsoft Dynamics GP: List of Active Fixed Assets

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

This script returns a list of active fixed assets including the linked G/L Accounts.

/*
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). */
SELECT ['Asset General Information Master'].ASSETID ,['Asset General Information Master'].ASSETIDSUF ,['Asset General Information Master'].SHRTNAME ,['Asset General Information Master'].ASSETDESC ,['Asset General Information Master'].EXTASSETDESC ,FORMAT(GETDATE(), 'dd/MM/yyyy') AS DATEFOREVERYTHING ,['Asset General Information Master'].ASSETCLASSID ,['Asset General Information Master'].LOCATNID ,['Asset General Information Master'].Physical_Location_ID ,['Asset General Information Master'].ASSETQTY ,['Asset Book Master'].REMAININGLIFEYEARS ,['Asset Book Master'].REMAININGLIFEDAYS ,['Asset Book Master'].COSTBASIS ,['Asset Book Master'].DEPRECIATIONMETHOD ,['Asset Book Master'].AVERAGINGCONV ,['Asset Book Master'].SWITCHOVER ,['Account Index Master - Depreciation Expense Account'].ACTNUMST AS 'Depreciation Expense Account' ,['Account Index Master - Depreciation Reserve Account'].ACTNUMST AS 'Depreciation Reserve Account' ,['Account Index Master - Prior Year Depreciation Account'].ACTNUMST AS 'Prior Year Depreciation Account' ,['Account Index Master - Asset Cost Account'].ACTNUMST AS 'Asset Cost Account' ,['Account Index Master - Proceeds Account'].ACTNUMST AS 'Proceeds Account' ,['Account Index Master - Recognized Gain Loss Account'].ACTNUMST AS 'Recognized Gain Loss Account' ,['Account Index Master - Non Recognized Gain Loss Account'].ACTNUMST AS 'Non Recognized Gain Loss Account' ,['Account Index Master - Clearing Account'].actnumst AS 'Clearing Account' FROM FA00100 AS ['Asset General Information Master'] --Asset General Information Master (FA00100) LEFT JOIN FA00200 AS ['Asset Book Master'] --Asset Book Master (FA00200) ON ['Asset Book Master'].[ASSETINDEX] = ['Asset General Information Master'].[ASSETINDEX] LEFT JOIN FA19900 AS ['User Data Master'] --User Data Master (FA19900) ON ['User Data Master'].[ASSETINDEX] = ['Asset General Information Master'].[ASSETINDEX] LEFT JOIN FA00400 AS ['Asset Account Master'] --Asset Account Master (FA00400) ON ['Asset Account Master'].[ASSETINDEX] = ['Asset General Information Master'].[ASSETINDEX] LEFT JOIN GL00105 AS ['Account Index Master - Depreciation Expense Account'] --Account Index Master (GL00105) ON ['Account Index Master - Depreciation Expense Account'].ACTINDX = ['Asset Account Master'].DEPREXPACCTINDX LEFT JOIN GL00105 AS ['Account Index Master - Depreciation Reserve Account'] ON ['Account Index Master - Depreciation Reserve Account'].ACTINDX = ['Asset Account Master'].DEPRRESVACCTINDX LEFT JOIN GL00105 AS ['Account Index Master - Prior Year Depreciation Account'] ON ['Account Index Master - Prior Year Depreciation Account'].ACTINDX = ['Asset Account Master'].PRIORYRDEPRACCTINDX LEFT JOIN GL00105 AS ['Account Index Master - Asset Cost Account'] ON ['Account Index Master - Asset Cost Account'].ACTINDX = ['Asset Account Master'].ASSETCOSTACCTINDX LEFT JOIN GL00105 AS ['Account Index Master - Proceeds Account'] ON ['Account Index Master - Proceeds Account'].ACTINDX = ['Asset Account Master'].PROCEEDSACCTINDX LEFT JOIN GL00105 AS ['Account Index Master - Recognized Gain Loss Account'] ON ['Account Index Master - Recognized Gain Loss Account'].ACTINDX = ['Asset Account Master'].RECGAINLOSSACCTINDX LEFT JOIN GL00105 AS ['Account Index Master - Non Recognized Gain Loss Account'] ON ['Account Index Master - Non Recognized Gain Loss Account'].ACTINDX = ['Asset Account Master'].NONRECGAINLOSSACCTINDX LEFT JOIN GL00105 AS ['Account Index Master - Clearing Account'] ON ['Account Index Master - Clearing Account'].ACTINDX = ['Asset Account Master'].CLEARINGACCTINDX WHERE ['Asset General Information Master'].ASSETSTATUS = 1 --Active ORDER BY ['Asset General Information Master'].ASSETIDSUF

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

Create a Windows Demo Environment: Install Windows Server 2022

WindowsThis article is part of the Create a Windows Demo Environment series where I am installing and configuring a small Windows domain for use with demo installs of software.

The first part of the installation is to install Windows Server; at the moment that would be Windows Server 2022.

Select the Language to install and the related settings; the most recent test system I installed was for Installing Microsoft Dynamics 365 Business Central 2022 Wave 1 On-premise Demo for which I used US English, but usually use UK English:

Microsoft Server Operating System Setup: Select language and regional settings

Continue reading “Create a Windows Demo Environment: Install Windows Server 2022”

SQL Scripts for Microsoft Dynamics GP: Update Segment Descriptions from Other Database

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

This script needs to be run in the destination database; the highlighted field is the source database.

It will update the segment descriptions in the destination database from the source database so they are the same,

The script was created for a client who did updates to descriptions in one database and wanted to roll these changes through quite a few other databases. Doing the update manually or using Integration Manager would have taken substantially longer, so the below script was created.

/*
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). */
UPDATE DESTINATION_TABLE SET DESTINATION_TABLE.DSCRIPTN = SOURCE_DB.DSCRIPTN FROM GL40200 AS DESTINATION_TABLE --Segment Description Master (GL40200) INNER JOIN THREE..GL40200 AS SOURCE_DB --Segment Description Master (GL40200) ON SOURCE_DB.SGMTNUMB = DESTINATION_TABLE.SGMTNUMB AND OTHER.SGMNTID = DESTINATION_TABLE.SGMNTID

If you use this script, make sure you thoroughly test before running on a production system and only after taking a good backup.

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

In Microsoft Dynamics 365 Business Central (Financial), how do I… Create a General Product Posting Groups

Microsoft Dynamics 365 Business CentralThis post is part of the In Microsoft Dynamics 365 Business Central (Financial), 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.

After creating the general business posting groups, the next element to create is the general product posting group, which is the “what” part of the key combination to the general posting setup. There “what” is often something like retail/trade/services.

To configure, search for general product posting groups and enter the Code and Description for each of the required general product posting groups:

General Product Posting Groups

Enter a Code and Description for each of the codes; you can also enter a Default VAT Business Posting Group and whether this should Auto Inert the Default.

As Business Central saves as you work, you can just close the page when all of the required codes have been entered.

In Microsoft Dynamics 365 Business Central, how do I…

In Microsoft Dynamics 365 Business Central (Financial), how do I…

SQL Scripts for Microsoft Dynamics GP: List of Exchange Rates

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

This script returns a list of exchange rates including the exchange date and ISO currency code.

/*
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). */
SELECT MC40301.CURNCYID ,MC40200.CRNCYDSC ,MC00100.XCHGRATE ,MC00100.EXCHDATE ,MC40200.ISOCURRC FROM MC40301 INNER JOIN D20..MC00100 ON MC00100.CURNCYID = MC40301.CURNCYID AND MC00100.EXGTBLID = MC40301.EXGTBLID INNER JOIN D20..MC40200 ON MC40200.CURNCYID = MC40301.CURNCYID

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

Create a Windows Demo Environment: Series Index

WindowsI do a fair amount of work in demo systems and sometimes require an on-premises set of servers. In this series of articles, I’m going to step through the basic installation and configuration I do for a domain controller and client machine, as I keep forgetting a step or two whenever I do this.

I am not claiming this is the “right”, or even the “best”, way of doing this configuration, but it is sufficient for an isolated demo environment which will only ever contain sample data and be used by only a small number of users.

The series index, below, will automatically update as articles go live over the next few weeks.

Create a Windows Demo Environment
Install Windows Server 2022
Replicate VM and Run sysprep
Configure Ethernet on Domain Controller Server
Rename Domain Controller Server
Promote Server to Domain Controller
Create Other Machines