Check printing from Navision

Hi All,

I am implementing Navision 4.0 sp1. Our clients want the check writing granule. I have not worked on this before., I need a few pointers on how to get this working.

I modified the report 1401 to the specification given by the client. Actually, the client wants to print the payment to vendors on a pre printed check.

However, when I try the check printing functionality in navision, I am unable to print without the stub that details the invoice and amount against which the payment is made.

is it possible in navision to print directly on a pre printed check?

regards,

Ramya Karthick

Hi Ramya,

Definitely possible, there are thousands upon thousanads of users doing this every day.

My first suggestion is to get a copy of the US database, which has much better Check reports than most other country versions (though I think the US checks are slowly becoming available in other country versions).

Printing on pre-printed checks has a number of specific issues.

The first is paper size, and this can be a big problem. Its generally better to get your checks pre-printed on a standard paper size (eg A4 or Letter) to avoid this.

Next is Printer type. Its always easier to use a laster printer than a dot matrix, and also lasers have a better ability to align to the top of the page (i.e. a new page each time [:D] ). Dot matrix printers are a big hassle in Navision, and its cheaper to buy a new laser printer, and give it to the client for free, than to waste time trying to work with their existing printer.

The biggest issue is always weather you will pre-print th echeck number, or if the printer will print it. Its much better if you print the check numebnr in Navision, but of course its less secure. (And don’t forget mica ink and font if needed)

These are starting points, but if you have specific questions, then post them here for specific answers.

PS also please can you ipdate your profile, with at least your location, if you are an end users, an NSC or a reelancer etc, and maybe the verison of Navision you use. It wioll help for us to give you better answers.

Hi Ramya,

Can you let us know if David’s response worked for you.

Tony

Hi

we are using this functionality of check printing & it’s working fine with many clients.

All you have to do is to set the printer & report for different check of various bank for that u can use various section of the report.

Lase printer is good for this however it create problem when we have to print around 10-20 check in a single click as this create some space problem with new check print.

Thanks

Ashish

Hi Ramya,

If you are the Ramya that I think you are, there are lots of different versions of the check print at some of the customers you have. I did at least 3 of them.

Don’t just look for 1401, I tended to create a new report for each check.

If you still have problems then please let us all know, if not then can you mark this as resolved please?

cheers!

I did that for our customer, they neede dto pritn the check on a prepritnted check with all teh company information etc. so took teh original report (which they also use to print soe of the specfic vendor checks), customized it print within the alignments and it works fine.

But be careful when making the changes as each little bit matters. so do testing after each change.

Are you talking about the check details?

We have changed the MaxIteration to 25 on the PrintSettledLoop to allow more than the standard 10 record details.

We use Check on the bottom so the detail can print on the 1st 2 sections

sample…

Here is a sample check (cheque) layout you can play with.
Just make sure you change the Object number before you import.
Also, note that some changes may be specific to the client it was designed for but I am sure you can work around that.

Rgds,
Colin

If i wasn’t such a tightwad i would pay the fee and upgrade so i can send attachments, however, in the meantime, just copy and paste the following.

OBJECT Report 1401 Check
{
OBJECT-PROPERTIES
{
Date=28-09-05;
Time=12:00:00;
Modified=Yes;
Version List=NAVW14.00,NAVGB4.00;
}
PROPERTIES
{
CaptionML=[ENU=Check;
ENG=Cheque];
BottomMargin=1000;
LeftMargin=0;
OnInitReport=BEGIN
/// V4M1
CompanyInfo.GET();
IF CompanyInfo.“Default Bank Account Cheques” <> ‘’ THEN
BankAcc2.“No.” := CompanyInfo.“Default Bank Account Cheques”;
END;

OnPreReport=BEGIN
InitTextVariable;
END;

Orientation=Portrait;
PaperSize=A4 210 x 297 mm;
HorzGrid=210;
}
DATAITEMS
{
{ PROPERTIES
{
DataItemTable=Table81;
DataItemTableView=SORTING(Journal Template Name,Journal Batch Name,Posting Date,Document No.);
DataItemVarName=VoidGenJnlLine;
OnPreDataItem=BEGIN
IF CurrReport.PREVIEW THEN
ERROR(Text000);

IF UseCheckNo = ‘’ THEN
ERROR(Text001);

IF TestPrint THEN
CurrReport.BREAK;

IF NOT ReprintChecks THEN
CurrReport.BREAK;

IF (GETFILTER(“Line No.”) <> ‘’) OR (GETFILTER(“Document No.”) <> ‘’) THEN
ERROR(
Text002,FIELDCAPTION(“Line No.”),FIELDCAPTION(“Document No.”));
SETRANGE(“Bank Payment Type”,“Bank Payment Type”::“Computer Check”);
SETRANGE(“Check Printed”,TRUE);
END;

OnAfterGetRecord=BEGIN
CheckManagement.VoidCheck(VoidGenJnlLine);
END;

ReqFilterFields=Journal Template Name,Journal Batch Name,Posting Date;
}
SECTIONS
{
}
}
{ PROPERTIES
{
DataItemTable=Table81;
DataItemTableView=SORTING(Journal Template Name,Journal Batch Name,Posting Date,Document No.);
DataItemVarName=GenJnlLine;
OnPreDataItem=BEGIN
GenJnlLine.COPY(VoidGenJnlLine);
CompanyInfo.GET;
IF NOT TestPrint THEN BEGIN
FormatAddr.Company(CompanyAddr,CompanyInfo);
BankAcc2.GET(BankAcc2.“No.”);
BankAcc2.TESTFIELD(Blocked,FALSE);
COPY(VoidGenJnlLine);
SETRANGE(“Bank Payment Type”,“Bank Payment Type”::“Computer Check”);
SETRANGE(“Check Printed”,FALSE);
END ELSE BEGIN
CLEAR(CompanyAddr);
FOR i := 1 TO 5 DO
CompanyAddr[i] := Text003;
END;
ChecksPrinted := 0;

SETRANGE(“Account Type”,GenJnlLine.“Account Type”::“Fixed Asset”);
IF FIND(’-’) THEN
GenJnlLine.FIELDERROR(“Account Type”);
SETRANGE(“Account Type”);
END;

OnAfterGetRecord=BEGIN
IF OneCheckPrVendor AND (GenJnlLine.“Currency Code” <> ‘’) AND
(GenJnlLine.“Currency Code” <> Currency.Code)
THEN BEGIN
Currency.GET(GenJnlLine.“Currency Code”);
Currency.TESTFIELD(“Conv. LCY Rndg. Debit Acc.”);
Currency.TESTFIELD(“Conv. LCY Rndg. Credit Acc.”);
END;

IF NOT TestPrint THEN BEGIN
IF Amount = 0 THEN
CurrReport.SKIP;

TESTFIELD(“Bal. Account Type”,“Bal. Account Type”::“Bank Account”);
IF “Bal. Account No.” <> BankAcc2.“No.” THEN
CurrReport.SKIP;

IF (“Account No.” <> ‘’) AND (“Bal. Account No.” <> ‘’) THEN BEGIN
BalancingType := “Account Type”;
BalancingNo := “Account No.”;
RemainingAmount := Amount;
IF OneCheckPrVendor THEN BEGIN
ApplyMethod := ApplyMethod::MoreLinesOneEntry;
GenJnlLine2.RESET;
GenJnlLine2.SETCURRENTKEY(“Journal Template Name”,“Journal Batch Name”,“Posting Date”,“Document No.”);
GenJnlLine2.SETRANGE(“Journal Template Name”,“Journal Template Name”);
GenJnlLine2.SETRANGE(“Journal Batch Name”,“Journal Batch Name”);
GenJnlLine2.SETRANGE(“Posting Date”,“Posting Date”);
GenJnlLine2.SETRANGE(“Document No.”,“Document No.”);
GenJnlLine2.SETRANGE(“Account Type”,“Account Type”);
GenJnlLine2.SETRANGE(“Account No.”,“Account No.”);
GenJnlLine2.SETRANGE(“Bal. Account Type”,“Bal. Account Type”);
GenJnlLine2.SETRANGE(“Bal. Account No.”,“Bal. Account No.”);
GenJnlLine2.SETRANGE(“Bank Payment Type”,“Bank Payment Type”);
GenJnlLine2.FIND(’-’);
RemainingAmount := 0;
END ELSE
IF “Applies-to Doc. No.” <> ‘’ THEN
ApplyMethod := ApplyMethod::OneLineOneEntry
ELSE
IF “Applies-to ID” <> ‘’ THEN
ApplyMethod := ApplyMethod::OneLineID
ELSE
ApplyMethod := ApplyMethod::Payment;
END ELSE
IF “Account No.” = ‘’ THEN
FIELDERROR(“Account No.”,Text004)
ELSE
FIELDERROR(“Bal. Account No.”,Text004);

CLEAR(CheckToAddr);
ContactText := ‘’;
CLEAR(SalesPurchPerson);
CASE BalancingType OF
BalancingType::“G/L Account”:
BEGIN
CheckToAddr[1] := GenJnlLine.Description;
END;
BalancingType::Customer:
BEGIN
Cust.GET(BalancingNo);
IF Cust.Blocked = Cust.Blocked::All THEN
ERROR(Text064,Cust.FIELDCAPTION(Blocked),Cust.Blocked,Cust.TABLECAPTION,Cust.“No.”);
Cust.Contact := ‘’;
FormatAddr.Customer(CheckToAddr,Cust);
IF BankAcc2.“Currency Code” <> “Currency Code” THEN
ERROR(Text005);
IF Cust.“Salesperson Code” <> ‘’ THEN BEGIN
ContactText := Text006;
SalesPurchPerson.GET(Cust.“Salesperson Code”);
END;
END;
BalancingType::Vendor:
BEGIN
Vend.GET(BalancingNo);
IF Vend.Blocked IN [Vend.Blocked::All,Vend.Blocked::Payment] THEN
ERROR(Text064,Vend.FIELDCAPTION(Blocked),Vend.Blocked,Vend.TABLECAPTION,Vend.“No.”);
Vend.Contact := ‘’;
FormatAddr.Vendor(CheckToAddr,Vend);
IF BankAcc2.“Currency Code” <> “Currency Code” THEN
ERROR(Text005);
IF Vend.“Purchaser Code” <> ‘’ THEN BEGIN
ContactText := Text007;
SalesPurchPerson.GET(Vend.“Purchaser Code”);
END;
END;
BalancingType::“Bank Account”:
BEGIN
BankAcc.GET(BalancingNo);
BankAcc.TESTFIELD(Blocked,FALSE);
BankAcc.Contact := ‘’;
FormatAddr.BankAcc(CheckToAddr,BankAcc);
/// V4M1 … BEGIN
AccountNo := BankAcc.“No.”;
/// V4M1 … END
IF BankAcc2.“Currency Code” <> BankAcc.“Currency Code” THEN
ERROR(Text008);
IF BankAcc.“Our Contact Code” <> ‘’ THEN BEGIN
ContactText := Text009;
SalesPurchPerson.GET(BankAcc.“Our Contact Code”);
END;
END;
&nb

Its funny to see how the ’ i ’ in square brackets became [i]

and 6 in Square Brackets became [6] in your code…

Very odd.

Perhaps it all means something?

I would guess that the text would copy back to something readable?

Colin

OOps…no it doesn’t.

Will have to pay the fee methinks!

email directly if you want this in original format:

colingbradley@gmail.com

you could also upload the file here in a post

Quote from the help#### "Can I add attachments to my posts?

Yes, however, this requires the moderator(s) or administrator(s) to enable this permission for user’s on a forum-by-forum basis. "

Unable to see how to do it on this forum.

why is my check printing report 1401 always shows lots of XXXXXXXXXXXXX?

i found that these XXXXXXXXXXXXXXX are present in text constants… but why? what wrong am I doing?

If you were able to look at the text constants. You could have gone a step further and look were the text constants are used in the report.

If you do a test print of the check certain info is blacked out with Xs.

yes right :slight_smile: but than if I do not tick “test print” than nothing is printed i mean print operation doesnt happen.neither it print in PDF or ONE NOTE or XPS.

Then you apllied some wrong filters on the request form or there are simply no checks to print.