Showing posts with label Receivables Management. Show all posts
Showing posts with label Receivables Management. Show all posts

1/24/11

How to Find Money in Your Business

The solution to a cash flow problem is often right at your fingertips. Fear and concern can keep us from piecing together answers that can make a significant difference. When cash-strapped clients call for a session, we turn over a few stones that are damming up their cash flow and often resolve the immediate problem with a few simple changes or action steps.

Some common oversights and mistakes made by business owners are directly related to a lack of confidence or self worth. Some are related to a fear of looking at, and understanding, their numbers and some are simply due to lack of experience or knowledge. If you identify with any of these roadblocks reach out to someone who can help so you can put yourself firmly in the driver’s seat. Here are a few ideas that might just get the cash flowing and profits moving.

Review your accounts receivable (AR) – Who owes you money? How long have these outstanding invoices been on the books and what are you doing to collect them? The longer you allow these invoices to remain unpaid the less chance you have of collecting on them. Small business owners are often afraid to “get too pushy” for fear of jeopardizing future business. Ask yourself if you really want to do business with someone who doesn’t value your services enough to pay you on a timely basis. Ask yourself if YOU value your services and how these outstanding invoices reflect on your own values. Remember, the efforts that you put into collections could be put toward marketing instead. But meanwhile, make some phone calls, send letters and, if necessary, have an attorney draft a letter for you and nudge the late pays into action.

Review your terms - What are the terms that you apply to your sales? Do your clients pay you upfront? Do they pay a portion in advance and have 30, 60 or 90 days to pay the balance? I once worked with a client who provided a service in the wedding industry. She collected 30% at the time the order was placed and the remaining balance on the wedding day. We changed her collection terms to 1/3rd upon booking, 1/3rd 30 days prior to the event and the 1/3rd on the day of the event. This simple adjustment really loosened things up for her and gave her a safety net.

Charge your worth – Okay, here’s the real issue for many soloists. Wow! I can’t count the times that I have heard people say they haven’t raised their fees in 10 years or that they feel sorry for people who can’t afford their services. There is nothing wrong with a little pro bono work, for sure, but please don’t end up in the poor house to compensate for someone else’s financial concerns. If you do offer a reduction in fees or product cost communicate the terms clearly and make sure it’s not to your own detriment. Also, do a little competitive analysis by researching services and products similar to yours to see what the going rates are. Do you hear yourself making excuses to support your decision to charge lower rates? If so, talk to your accountant, coach, mentor or advisory board to gain perspective. Unless you are submitting RFP’s for government contracts the lowest bid doesn’t always win. Re-evaluate your pricing and make sure you are valuing your services and products as much as you hope that your clients will.

Evaluate your expenses – Another common cash flow issue is created by excess spending. For example, do you have contractors that you send jobs to because you want to keep them happy? We know that outsourcing is a priority so that your time is free to build your business, but if this is done to excess during a low revenue point it can backfire. I often hear concerns like, “Janie has been doing work for me for years and I can’t cut down on her hours.” Yes, it’s difficult when you feel responsible for a portion of someone else’s income, but in the long run these temporary cuts will keep you in the black long enough to rebuild and move forward in a stronger position so that you can resume sending work their way.

In this down economy, some soloists are holding on to office space that may no longer be necessary. If you need to make cuts like this, look for the advantages and give yourself a timeframe to work within. If you have a plan that you believe will turn things around, schedule a date to reevaluate your spending. It’s easy to get caught up in the “what if’s” when we are making decisions like letting go of an office. What if things turn around? What if my clients find out? Make a list of your pros and cons and understand your financial limits. Removing the stress of added expenses will help you to focus more clearly on solutions and growing your business.

http://www.inc.com/marla-tabaka/how-to-find-money-in-your-business.html

12/8/10

10 ways to make sure your clients pay you

One of the biggest issues consultants face is getting paid. Most clients don’t realize that you don’t get paid if they don’t pay. And because there are plenty of those types of clients out there, getting paid can be a challenge. Luckily, there are also plenty of ways to help ensure that you will get paid for the work you do. Let’s take a look at 10 ways you can help yourself out.

1: Bill often

The last thing clients want is one huge bill at the end of the year. They would rather pay small chunks frequently. To that end, you might consider offering maintenance contracts where you give clients a certain number of hours per month for a set fee. They pay the fee, they get the work. But if they don’t want such a deal, make sure you are not holding onto invoices and then sending them an envelope filled with bills that could have been paid in smaller, more manageable, increments. Clients will be much more willing to submit payment for smaller bills.

2: Bill quickly

As soon as you are done with your work, bill it. The work (and your success) will be fresh in the mind of the client. If they see a bill the day of or the day after, they will be much more likely to pay it (and pay it quickly) because the work you did is still clear in their mind. This also helps the client to know that you are on top of things. If you wait a week or two, you might have to refresh their memory. Or worse, they may take the later invoice as a sign that a later payment is an okay practice with your business.

3: Bill professionally

Do not send your bill in a handwritten note or as an email. Your bill should be on a professional letterhead and/or attached as a PDF to an email. The more professional your correspondence is, the more seriously you will be taken. The more seriously you are taken, the more likely it is that your clients will submit payment. If you are serious about what you do, you’ll want to put some effort into branding your company across the board — and that includes billing.

4: Bill consistently

We see this all the time. People submit invoices for inconsistent amounts. One month you’re charging X for a network drop and the next, you’re charging Y for that same job. This will put clients in an awkward position of not knowing what to expect every time you do work for them. Make sure your pricing is consistent. And make sure your clients are aware of your pricing up front. If the client knows what they are getting into, they will have fewer objections when they see those bills.

5: Keep meticulous records

If you keep poor records, you will have trouble keeping track of who has paid, who has not paid, and what exactly each client has paid for. You should be using software (such as QuickBooks) to keep track of your records. With a sound solution, you will be able to quickly and professionally show records of what has happened with a client, should someone have a problem with a bill. If you’re trying to juggle your books with a spreadsheet and a Word document (and a few post it notes), your consultancy life will be insane.

6: Do good work and do it efficiently

The better and more efficient your work is, the more likely you are to be paid. If your work is slow or ineffective, your clients will have trouble ponying up the cash to cover a job that should have taken less time. This also goes for doing effective work. If you constantly have to return to repair something you should have repaired the first time around, your clients are going to hesitate to pay (and they will be less than likely to refer other clients to you).

7: Accept all forms of payment

This should go without saying, but if you only take cash and checks, you might find you have some clients who won’t hire you or won’t pay you as quickly. Accepting credit cards (and even forms of payment like PayPal) will go a long way toward getting you paid faster. Of course, you’ll take a fractional hit on your costs due to processing fees, but these fees are minimal when you’re actually getting paid.

8: Require deposits for larger jobs

If you’re about to take on a large job, you should require a percentage of the final cost for the job up front. Although this won’t ensure the client makes good on the remainder, it will at least give you a portion of the payment before you start your work. This will also show your clients your dedication to the job. Also note that if you quote a client a certain price and that price changes at any point, it is your duty to report the change to the client as soon as possible.

9: Do not work with repeat offenders

We’ve all seen them — clients who either do not pay or pay very late. Why do you want to go through the hassle of having to hassle these clients to get them to pay? You don’t want this headache, so don’t take jobs from them. Yes, it is tempting — especially when you are first starting out or when times are hard. But those clients who don’t pay (or pay very late) are doing nothing but taking valuable resources from you. Instead, work with reliable clients who will pay and pay in a timely fashion.

10: Have an attorney at the ready

Although we all hope it doesn’t come to legal action, it can. There are those clients who simply refuse to pay. Sometimes, just a letter from an attorney is enough to light a fire under their seats. But when just a letter isn’t enough, it might be time to send in the hounds. Once you have had to do this with a client, consider that client to fall under tip # 9.

Walking the line

Getting paid is a tricky business. There is a fine line between being professional and being a pest. Your clients will, for the most part, be in business to make money, not spend it. So when you have trouble collecting your fees, you must exercise care and concern toward future business. Always consider those clients as a long-term investment and not a one-time payment.

11/9/10

Receivables HATB Report (using Document Date)

Today, I have decided to post a script for the Receivables Historical Aged Trial Balance (HATB), which is generated by picking transactions based on the GL posting date for the receivables transactions.

This script can also be used as a base to reconcile the sub-ledger balances as of a certain date with the corresponding GL transactions. The script for generating general ledger balances is available here.

DECLARE @ASOFDATE DATETIME
SET @ASOFDATE = '2017-04-12'
SELECT X.CUSTOMERNUMBER,
X.CORPORATECUSTNUMBER,
X.DOCUMENTNO,
X.DOCUMENTTYPE,
X.DOCUMENTDATE,
X.GLPOSTINGDATE,
X.DOCUMENTAMT,
X.APPLIEDAMT,
X.WRITEOFFAMT,
X.DISCTAKENAMT,
X.REALGAINLOSSAMT,
( X.DOCUMENTAMT - X.APPLIEDAMT - X.WRITEOFFAMT - X.DISCTAKENAMT
+ X.REALGAINLOSSAMT ) AS CURRENTAMTFROM ( SELECT Z.CUSTNMBR AS CUSTOMERNUMBER,
Z.CPRCSTNM AS CORPORATECUSTNUMBER,
Z.DOCNUMBR AS DOCUMENTNO,
Z.DOCTYPE AS DOCUMENTTYPE,
Z.DOCDATE AS DOCUMENTDATE,
Z.GLPOSTINGDATE AS GLPOSTINGDATE,
Z.ORTRXAMT AS DOCUMENTAMT,
CASE WHEN Z.[RMDTYPAL] <= 6
THEN ISNULL(( SELECT SUM(Y.[ActualApplyToAmount])
FROM ( SELECT [CUSTNMBR],
[DATE1],
[APFRDCDT],
[APTODCNM],
[APTODCTY],
[ActualApplyToAmount]
FROM dbo.[RM20201]
UNION
SELECT [CUSTNMBR],
[DATE1],
[APFRDCDT],
[APTODCNM],
[APTODCTY],
[ActualApplyToAmount]
FROM dbo.[RM30201]
) Y
WHERE Y.[DATE1] <= @ASOFDATE
AND Y.[APFRDCDT] <= @ASOFDATE
AND Y.[CUSTNMBR] = Z.CUSTNMBR
AND Y.[APTODCNM] = Z.DOCNUMBR
AND Y.[APTODCTY] = Z.RMDTYPAL
), 0)
WHEN Z.[RMDTYPAL] > 7
AND Z.[RMDTYPAL] <= 9
THEN ISNULL(( SELECT SUM(Y.[ActualApplyToAmount])
FROM ( SELECT [CUSTNMBR],
[DATE1],
[APTODCDT],
[APFRDCNM],
[APFRDCTY],
[ActualApplyToAmount]
FROM dbo.[RM20201]
UNION
SELECT [CUSTNMBR],
[DATE1],
[APTODCDT],
[APFRDCNM],
[APFRDCTY],
[ActualApplyToAmount]
FROM dbo.[RM30201]
) Y
WHERE Y.[DATE1] <= @ASOFDATE
AND Y.[APTODCDT] <= @ASOFDATE
AND Y.[CUSTNMBR] = Z.CUSTNMBR
AND Y.[APFRDCNM] = Z.DOCNUMBR
AND Y.[APFRDCTY] = Z.RMDTYPAL
), 0)
ELSE 0
END AS APPLIEDAMT,
CASE WHEN Z.[RMDTYPAL] <= 6
THEN ISNULL(( SELECT SUM(Y.[WROFAMNT])
FROM ( SELECT [CUSTNMBR],
[DATE1],
[APFRDCDT],
[APTODCNM],
[APTODCTY],
[WROFAMNT]
FROM dbo.[RM20201]
UNION
SELECT [CUSTNMBR],
[DATE1],
[APFRDCDT],
[APTODCNM],
[APTODCTY],
[WROFAMNT]
FROM dbo.[RM30201]
) Y
WHERE Y.[DATE1] <= @ASOFDATE
AND Y.[APFRDCDT] <= @ASOFDATE
AND Y.[CUSTNMBR] = Z.CUSTNMBR
AND Y.[APTODCNM] = Z.DOCNUMBR
AND Y.[APTODCTY] = Z.RMDTYPAL
), 0)
ELSE 0
END AS WRITEOFFAMT,
CASE WHEN Z.[RMDTYPAL] <= 6
THEN ISNULL(( SELECT SUM(Y.[DISTKNAM])
FROM ( SELECT [CUSTNMBR],
[DATE1],
[APFRDCDT],
[APTODCNM],
[APTODCTY],
[DISTKNAM]
FROM dbo.[RM20201]
UNION
SELECT [CUSTNMBR],
[DATE1],
[APFRDCDT],
[APTODCNM],
[APTODCTY],
[DISTKNAM]
FROM dbo.[RM30201]
) Y
WHERE Y.[DATE1] <= @ASOFDATE
AND Y.[APFRDCDT] <= @ASOFDATE
AND Y.[CUSTNMBR] = Z.CUSTNMBR
AND Y.[APTODCNM] = Z.DOCNUMBR
AND Y.[APTODCTY] = Z.RMDTYPAL
), 0)
ELSE 0
END AS DISCTAKENAMT,
CASE WHEN Z.[RMDTYPAL] > 7
AND Z.[RMDTYPAL] <= 9
THEN ISNULL(( SELECT SUM(Y.[RLGANLOS])
FROM ( SELECT [CUSTNMBR],
[DATE1],
[APTODCDT],
[APFRDCNM],
[APFRDCTY],
[RLGANLOS]
FROM dbo.[RM20201]
UNION
SELECT [CUSTNMBR],
[DATE1],
[APTODCDT],
[APFRDCNM],
[APFRDCTY],
[RLGANLOS]
FROM dbo.[RM30201]
) Y
WHERE Y.[DATE1] <= @ASOFDATE
AND Y.[APTODCDT] <= @ASOFDATE
AND Y.[CUSTNMBR] = Z.CUSTNMBR
AND Y.[APFRDCNM] = Z.DOCNUMBR
AND Y.[APFRDCTY] = Z.RMDTYPAL
), 0)
ELSE 0
END AS REALGAINLOSSAMT
FROM ( SELECT A.[CUSTNMBR],
A.[CPRCSTNM],
A.[DOCNUMBR],
A.[RMDTYPAL],
B.[DOCDESCR] AS DOCTYPE,
A.[DOCDATE],
A.[GLPOSTDT] AS GLPOSTINGDATE,
A.[ORTRXAMT]
FROM [dbo].[RM20101] A
INNER JOIN RM40401 B ON A.[RMDTYPAL] = B.[RMDTYPAL]
WHERE [VOIDSTTS] = 0
UNION
SELECT A.[CUSTNMBR],
A.[CPRCSTNM],
A.[DOCNUMBR],
A.[RMDTYPAL],
B.[DOCDESCR] AS DOCTYPE,
A.[DOCDATE],
A.[VOIDDATE] AS GLPOSTINGDATE,
A.[ORTRXAMT] * -1
FROM [dbo].[RM20101] A
INNER JOIN [dbo].[RM40401] B ON A.[RMDTYPAL] = B.[RMDTYPAL]
WHERE [VOIDSTTS] = 1
UNION
SELECT A.[CUSTNMBR],
A.[CPRCSTNM],
A.[DOCNUMBR],
A.[RMDTYPAL],
B.[DOCDESCR] AS DOCTYPE,
A.[DOCDATE],
A.[GLPOSTDT] AS GLPOSTINGDATE,
A.[ORTRXAMT]
FROM [dbo].[RM30101] A
INNER JOIN [dbo].[RM40401] B ON A.[RMDTYPAL] = B.[RMDTYPAL]
WHERE [VOIDSTTS] = 0
UNION
SELECT A.[CUSTNMBR],
A.[CPRCSTNM],
A.[DOCNUMBR],
A.[RMDTYPAL],
B.[DOCDESCR] AS DOCTYPE,
A.[DOCDATE],
A.[VOIDDATE] AS GLPOSTINGDATE,
A.[ORTRXAMT] * -1
FROM [dbo].[RM30101] A
INNER JOIN [dbo].[RM40401] B ON A.[RMDTYPAL] = B.[RMDTYPAL]
WHERE [VOIDSTTS] = 1
) Z
WHERE Z.DOCDATE <= @ASOFDATE
) X
http://cvakumar.com/msdynamics/2010/11/07/receivables-hatb-report-using-gl-posting-date/

Receivables HATB Report (using GL Posting Date)

Today, I have decided to post this script which is generated by picking transactions based on the GL posting date.

This script can also be used as a base to reconcile the sub-ledger balances as of a certain date with the corresponding GL transactions. The script for generating general ledger balances for reconciliation is available here.

DECLARE @ASOFDATE DATETIME
SET @ASOFDATE = '2017-04-12'
SELECT X.CUSTOMERNUMBER,
X.CORPORATECUSTNUMBER,
X.DOCUMENTNO,
X.DOCUMENTTYPE,
X.DOCUMENTDATE,
X.GLPOSTINGDATE,
X.DOCUMENTAMT,
X.APPLIEDAMT,
X.WRITEOFFAMT,
X.DISCTAKENAMT,
X.REALGAINLOSSAMT,
( X.DOCUMENTAMT - X.APPLIEDAMT - X.WRITEOFFAMT - X.DISCTAKENAMT
+ X.REALGAINLOSSAMT ) AS CURRENTAMTFROM ( SELECT Z.CUSTNMBR AS CUSTOMERNUMBER,
Z.CPRCSTNM AS CORPORATECUSTNUMBER,
Z.DOCNUMBR AS DOCUMENTNO,
Z.DOCTYPE AS DOCUMENTTYPE,
Z.DOCDATE AS DOCUMENTDATE,
Z.GLPOSTINGDATE AS GLPOSTINGDATE,
Z.ORTRXAMT AS DOCUMENTAMT,
CASE WHEN Z.[RMDTYPAL] <= 6
THEN ISNULL(( SELECT SUM(Y.[ActualApplyToAmount])
FROM ( SELECT [CUSTNMBR],
[GLPOSTDT],
[ApplyFromGLPostDate],
[APTODCNM],
[APTODCTY],
[ActualApplyToAmount]
FROM dbo.[RM20201]
UNION
SELECT [CUSTNMBR],
[GLPOSTDT],
[ApplyFromGLPostDate],
[APTODCNM],
[APTODCTY],
[ActualApplyToAmount]
FROM dbo.[RM30201]
) Y
WHERE Y.[GLPOSTDT] <= @ASOFDATE
AND Y.[ApplyFromGLPostDate] <= @ASOFDATE
AND Y.[CUSTNMBR] = Z.CUSTNMBR
AND Y.[APTODCNM] = Z.DOCNUMBR
AND Y.[APTODCTY] = Z.RMDTYPAL
), 0)
WHEN Z.[RMDTYPAL] > 7
AND Z.[RMDTYPAL] <= 9
THEN ISNULL(( SELECT SUM(Y.[ActualApplyToAmount])
FROM ( SELECT [CUSTNMBR],
[GLPOSTDT],
[ApplyToGLPostDate],
[APFRDCNM],
[APFRDCTY],
[ActualApplyToAmount]
FROM dbo.[RM20201]
UNION
SELECT [CUSTNMBR],
[GLPOSTDT],
[ApplyToGLPostDate],
[APFRDCNM],
[APFRDCTY],
[ActualApplyToAmount]
FROM dbo.[RM30201]
) Y
WHERE Y.[GLPOSTDT] <= @ASOFDATE
AND Y.[ApplyToGLPostDate] <= @ASOFDATE
AND Y.[CUSTNMBR] = Z.CUSTNMBR
AND Y.[APFRDCNM] = Z.DOCNUMBR
AND Y.[APFRDCTY] = Z.RMDTYPAL
), 0)
ELSE 0
END AS APPLIEDAMT,
CASE WHEN Z.[RMDTYPAL] <= 6
THEN ISNULL(( SELECT SUM(Y.[WROFAMNT])
FROM ( SELECT [CUSTNMBR],
[GLPOSTDT],
[ApplyFromGLPostDate],
[APTODCNM],
[APTODCTY],
[WROFAMNT]
FROM dbo.[RM20201]
UNION
SELECT [CUSTNMBR],
[GLPOSTDT],
[ApplyFromGLPostDate],
[APTODCNM],
[APTODCTY],
[WROFAMNT]
FROM dbo.[RM30201]
) Y
WHERE Y.[GLPOSTDT] <= @ASOFDATE
AND Y.[ApplyFromGLPostDate] <= @ASOFDATE
AND Y.[CUSTNMBR] = Z.CUSTNMBR
AND Y.[APTODCNM] = Z.DOCNUMBR
AND Y.[APTODCTY] = Z.RMDTYPAL
), 0)
ELSE 0
END AS WRITEOFFAMT,
CASE WHEN Z.[RMDTYPAL] <= 6
THEN ISNULL(( SELECT SUM(Y.[DISTKNAM])
FROM ( SELECT [CUSTNMBR],
[GLPOSTDT],
[ApplyFromGLPostDate],
[APTODCNM],
[APTODCTY],
[DISTKNAM]
FROM dbo.[RM20201]
UNION
SELECT [CUSTNMBR],
[GLPOSTDT],
[ApplyFromGLPostDate],
[APTODCNM],
[APTODCTY],
[DISTKNAM]
FROM dbo.[RM30201]
) Y
WHERE Y.[GLPOSTDT] <= @ASOFDATE
AND Y.[ApplyFromGLPostDate] <= @ASOFDATE
AND Y.[CUSTNMBR] = Z.CUSTNMBR
AND Y.[APTODCNM] = Z.DOCNUMBR
AND Y.[APTODCTY] = Z.RMDTYPAL
), 0)
ELSE 0
END AS DISCTAKENAMT,
CASE WHEN Z.[RMDTYPAL] > 7
AND Z.[RMDTYPAL] <= 9
THEN ISNULL(( SELECT SUM(Y.[RLGANLOS])
FROM ( SELECT [CUSTNMBR],
[GLPOSTDT],
[ApplyToGLPostDate],
[APFRDCNM],
[APFRDCTY],
[RLGANLOS]
FROM dbo.[RM20201]
UNION
SELECT [CUSTNMBR],
[GLPOSTDT],
[ApplyToGLPostDate],
[APFRDCNM],
[APFRDCTY],
[RLGANLOS]
FROM dbo.[RM30201]
) Y
WHERE Y.[GLPOSTDT] <= @ASOFDATE
AND Y.[ApplyToGLPostDate] <= @ASOFDATE
AND Y.[CUSTNMBR] = Z.CUSTNMBR
AND Y.[APFRDCNM] = Z.DOCNUMBR
AND Y.[APFRDCTY] = Z.RMDTYPAL
), 0)
ELSE 0
END AS REALGAINLOSSAMT
FROM ( SELECT A.[CUSTNMBR],
A.[CPRCSTNM],
A.[DOCNUMBR],
A.[RMDTYPAL],
B.[DOCDESCR] AS DOCTYPE,
A.[DOCDATE],
A.[GLPOSTDT] AS GLPOSTINGDATE,
A.[ORTRXAMT]
FROM [dbo].[RM20101] A
INNER JOIN RM40401 B ON A.[RMDTYPAL] = B.[RMDTYPAL]
WHERE [VOIDSTTS] = 0
UNION
SELECT A.[CUSTNMBR],
A.[CPRCSTNM],
A.[DOCNUMBR],
A.[RMDTYPAL],
B.[DOCDESCR] AS DOCTYPE,
A.[DOCDATE],
A.[VOIDDATE] AS GLPOSTINGDATE,
A.[ORTRXAMT] * -1
FROM [dbo].[RM20101] A
INNER JOIN [dbo].[RM40401] B ON A.[RMDTYPAL] = B.[RMDTYPAL]
WHERE [VOIDSTTS] = 1
UNION
SELECT A.[CUSTNMBR],
A.[CPRCSTNM],
A.[DOCNUMBR],
A.[RMDTYPAL],
B.[DOCDESCR] AS DOCTYPE,
A.[DOCDATE],
A.[GLPOSTDT] AS GLPOSTINGDATE,
A.[ORTRXAMT]
FROM [dbo].[RM30101] A
INNER JOIN [dbo].[RM40401] B ON A.[RMDTYPAL] = B.[RMDTYPAL]
WHERE [VOIDSTTS] = 0
UNION
SELECT A.[CUSTNMBR],
A.[CPRCSTNM],
A.[DOCNUMBR],
A.[RMDTYPAL],
B.[DOCDESCR] AS DOCTYPE,
A.[DOCDATE],
A.[VOIDDATE] AS GLPOSTINGDATE,
A.[ORTRXAMT] * -1
FROM [dbo].[RM30101] A
INNER JOIN [dbo].[RM40401] B ON A.[RMDTYPAL] = B.[RMDTYPAL]
WHERE [VOIDSTTS] = 1
) Z
WHERE Z.GLPOSTINGDATE <= @ASOFDATE
) X
http://cvakumar.com/msdynamics/2010/11/07/receivables-hatb-report-using-gl-posting-date/