7/28/09

Standard KB Article

Summary:
Instructions:

Addititional Comments:
Instructions

Answer to a Question

Question:
Instruction: State the questions.

Answer:
INstruction: Provide the answer(s) to the questions.

Additional Comments:
Instructions: Proveide any additional information that will help the readers with their question.

Solution to a Problem

Problem:
Instruction: Define the problem

Solution:
Instruction: Describe the solution to the problem

Additional Comments:
Instructions: Provide any additional information that will help readers to resolve the problem.

Procedure

Purpose & Scope
Instructions:State why readers should perform this procedure.

Procedure
Instructions:List the steps of the procedure.

Additional Comments
Instructions:Provide any additional information that will help readers to complete this procedure.

Using Dynamics GP Report Writer with the POS Standard Receipt

Article ID: 80468

Understanding the Standard Receipt

How to customize the Retail Point of Sale standard receipt within GP Report Writer:

1) From within GP, go to Tools>Customize>Report Writer.
2) Select Retail Point of Sale from the drop down list & click OK.
3) Click the Reports button.
4) Scroll through the list on the right to select POS_StdReceipt and click Insert.
5) Highlight the report on the right side of the window, then click Open.
6) From the Report Definition window, click Layout.

Understanding the Report Sections:

Report Header
1) Company name
2) Company address
3) Company phone number
4) Legend #11

Header 1
This section repeats (whenever the POS Line Type changes but doesn't print if item description is blank).
1) Item Description
2) Item Number
3) Quantity
4) Unit Price
5) About Price

Body
Section repeats.
1) Item Number
2) POS Payment String
3) Amount Paid

Footer 3
This section repeats for all the comments for markdowns or item comments.
1) Comment 1
2) Comment 2
3) Comment 3
4) Comment 4

Footer 2
This section repeats for all items printed in Header 1.
1) Markdown percent (blank if zero)
2) Text "Markdown" if markdown amount is not zero
3) Markdown amount.

Footer 1
Repeats for all lines.
1) Payment number

Report Footer
1) Document number
2) Bar-coded document number
3) Store Location (legend #1)
4) Workstation (legend #2)
5) Operator (legend #3)
6) Salesperson (legend #4)
7) Date (legend #5)
8) Time (legend #6)
9) Customer number (legend #12)
10) Legend #7
11) Legend #8
12) Legend #9
13) Legend #10

What are Legends?
Legends are fields that contain "hard-coded" data from POS. A legend's contents might be different under certain circumstances. Here's how POS uses the legends:

1) POS Location
2) Workstation ID where it was modified (from the transaction)
3) User ID who modified (from the transaction)
4) Salesperson ID
5) Date Modified (from transaction)
6) Time Modified (from transaction)
7) POS Receipt Comment 1
8) POS Receipt Comment 2
9) Signature line 1 (if credit card, contains a line, otherwise blank).
10) Signature line 2 (if credit card, then ****** CUSTOMER SIGNATURE ******** otherwise blank.)
11) Return Title (if a return document, then ****** RETURN ***** otherwise blank.)
12) Customer number.

What's in the POS Standard Receipt Table?

The table is a temporary file created right before printing the receipt. It contains the following fields:
User ID: user who printed the receipt. Used to restrict which receipt to print because all requests sit in table.
SOP Type: document type.
SOP Number: document number.
Line Item Sequence: sequence number from the SOP_LINE_WORK or a sequential number we generate to keep the body lines in the correct order.
POS Line Type: designates the type of data in the record, which controls where it prints. For each item purchased this will be a different numeric value (which cases header 1 to repeat for each item before the body even prints once), for all other lines = B.
Item Number: Item number for each item purchased. For the subtotal line this will hold the total number of items sold; all others are blank.
Quantity: Used only for the items purchased records.
Unit of Measure: Used only for the items purchased records.
Unit Price: Unit price of the item but blank if printing a gift receipt. Used only for the items purchased records.
Markdown Percent: percent of markdown given for an item; used only for the items purchased records.
Markdown Amount: markdown given for an item; used only for the items purchased records.
POS Payment String: see below.
Payment Number: see below (flags--MC or C would be for the previous line in the table).
Amount Paid: Amount.
Location ID: address ID from the POS Location Setup.
Company ID: company ID.
Component Sequence:
Decimal Places QTY:
Decimal Places Currency:


Types of lines that need to print:
1) Items purchased with or without markdowns
2) Serial or Lot numbers
3) Subtotal
4) Trade Discount
5) Freight
6) Miscellaneous
7) Taxes
8) Document Amount
9) Payments (including on account, change given, & change due)


Types of lines

Item Number

Item Description

Payment String

Payment Number

POS Line Type

Items

Item Number

Description

MC or C or blank

0001, 0002, etc.

Serial or lots

Serial or lot number preceded by some text

MC or C or blank

Continued from above numbering

Subtotal

Item count

“Items Subtotal”

MC or C or blank

B

Trade Discount

Trade discount percentage

“Discount”

Blank

B

Freight

“Freight”

Blank

B

Miscellaneous

“Miscellaneous”

Blank

B

Taxes

Tax detail ID

B

Balance of taxes

“Tax”

B

Document Amount

“Total”

B

Payments

Checks

“Check”

Check #

B

Credit Card

Card name

Credit card # (masked or unmasked)

B

Certificate

“Certificate”

Certificate #

B

On Account

“On Account”

B

Change Given

“Change Given”

B

Cash

“Cash”

B

Change Due

“Change Due”

B

Can I configure POS to disallow a user to sell an item below the quantity available?

Article ID: 65157

Dex.ini switch

Yes, you can--but only for users that have not been granted POS Manager Access. There's a Dex.ini switch available for this. Go to your Dex.ini file (typically located at the root of your Dynamics GP folder) and add the following line:

CompassPreventOverSell=TRUE.

Adding this line will prevent a non-manager user from tabbing past the quantity field on line items where the quantity sold is greater than the quantity available.

How to establish multiple dex.ini environments in Citrix or Terminal Services environment for GP.

Article ID: 79867

Create Multiple dex.ini for users logging into a Citrix or Terminal Services environment.

1. On the Terminal Services or Citrix server create multiple dex.ini an place them in separate folders on the hard drive.

2. For each user's profile create a dynamics.exe shortcut with a target that points to their specific dex.ini. The target line in the shortcut should look something like this.

C:\GP10\Dynamics.exe Dynamics.set C:\windows\dex.ini

3. When a user logs in under their profile they will use their specific shortcut to login to Dynamics GP.

Are there any Retail Point of Sale features controlled by Dex.ini settings?

Article ID: 11661

Question: Are there any Retail Point of Sale features controlled by Dex.ini settings?

Answer: Yes. The following is a list of Dex.ini switches that affect POS.

EditSalesperson=TRUE (makes the salesperson ID field editable in the Line Details window).

POSManualPromotions=TRUE (does not search for and apply promos automatically. Clerk must manually enter promotion ID).

CompassUseCustomerLookup=TRUE
(the Great Plains customer lookup will open rather than the default POS mailist lookup window (new in version 8)).

CompassPreventOverSell=TRUE (Adding this line will prevent a non-POS-manager user from tabbing past the quantity field on line items where the quantity sold is greater than the quantity available).


NoPrintDialogs=TRUE (this will prohibit the print dialog from opening each time a receipt or report is submitted for printing. Stopping the print dialog expedites transaction processing, but once set, doesn't give the user a choice of where to print.)

7/27/09

Create Table Query and More Hidden Access SQL Queries

When I first tried to create tables automatically in Access a couple of years ago, I fell back on my SQL background and went hunting for the Create Table command. But I didn't find it in the help and resorted to using more manual methods. When I was asked this question late last year, I had another look and found that all the SQL table management commands were actually supported. These commands are as follows

Create Table
Create Index
Alter Table
Constraint
Drop table

To find this elusive help, Open Access and under help select Contents and Index. Type CREATE in uppercase in the find box. An example of a create table command is as follows

CREATE TABLE AAA (ProductName Text, ProductDate Date);

To demonstrate how to run these in Access I have set up a form called FX_CreateTable in the demonstration database. This code shows how to build a table using the usual techniques that I employ for other SQL building software. As these table changing SQL statements are action statements, you can use the RunSql command.

sqlStr = "CREATE TABLE " & Me!tableName & _
" (" & Me!fieldName1 & " " & Me!FieldType1 & ", " _
& Me!fieldName2 & " " & Me!FieldType2 & ");"

DoCmd.RunSQL sqlStr

To add a new column to an existing table, I would make and run the following SQL statement

Alter TABLE AAA ADD COLUMN ProductQuantity Single;

Note that these table related commands will only work on jet databases but the syntax is pretty similar to the kind of commands that you would deploy in a SQL server/Oracle type environment.

Want to find more data types that you can use, try Access Find Help and type in "Comparison of Data Types". This will help you find things such as autocounters etc.

Now Here is what the Access 97 help tells you because this is impossible to find in the Access 2000+ help

Create Table Statement

Creates a new table.

Note The Microsoft Jet database engine doesn't support the use of CREATE TABLE, or any of the DDL statements, with non-Microsoft Jet database engine databases. Use the DAO Create methods instead.

Syntax

CREATE TABLE table (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]] [, CONSTRAINT multifieldindex [, ...]])

The CREATE TABLE statement has these parts:

Part Description
table The name of the table to be created.
field1, field2 The name of field or fields to be created in the new table. You must create at least one field.
type The data type of field in the new table.
size The field size in characters (Text and Binary fields only).
index1, index2 A CONSTRAINT clause defining a single-field index. See the CONSTRAINT clause topic for more information on how to create this index.
multifieldindex A CONSTRAINT clause defining a multiple-field index. See the CONSTRAINT clause topic for more information on how to create this index.
Remarks

Use the CREATE TABLE statement to define a new table and its fields and field constraints. If NOT NULL is specified for a field, then new records are required to have valid data in that field.
A CONSTRAINT clause establishes various restrictions on a field, and can be used to establish the primary key. You can also use the CREATE INDEX statement to create a primary key or additional indexes on existing tables.
You can use NOT NULL on a single field, or within a named CONSTRAINT clause that applies to either a single field or to a multiple-field named CONSTRAINT. However, you can apply the NOT NULL restriction only once to a field, or a run-time error occurs.

Alter Table Statement

Modifies the design of a table after it has been created with the CREATE TABLE statement.

Note The Microsoft Jet database engine doesn't support the use of ALTER TABLE, or any of the data definition language (DDL) statements, with non-Microsoft Jet databases. Use the DAO Create methods instead.

Syntax

ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL] [CONSTRAINT index] CONSTRAINT multifieldindex} DROP {COLUMN field I CONSTRAINT indexname} }

The ALTER TABLE statement has these parts:

Part Description
table The name of the table to be altered.
field The name of the field to be added to or deleted from table.
type The data type of field. Try (
BINARY, Boolean, Byte, Long, Currency, Date, Double, Long, LONGBINARY, LONGTEXT, SINGLE, Integer, TEXT, LONGTEXT)

size The field size in characters (Text and Binary fields only).
index The index for field. See the CONSTRAINT clause topic for more information on how to construct this index.
multifieldindex The definition of a multiple-field index to be added to table. See the CONSTRAINT clause topic for more information on how to construct this clause.
indexname The name of the multiple-field index to be removed.


Remarks

Using the ALTER TABLE statement, you can alter an existing table in several ways. You can:

· Use ADD COLUMN to add a new field to the table. You specify the field name, data type, and (for Text and Binary fields) an optional size. For example, the following statement adds a 25-character Text field called Notes to the Employees table:

ALTER TABLE Employees ADD COLUMN Notes TEXT(25)

You can also define an index on that field. For more information on single-field indexes, see the CONSTRAINT clause topic.

If you specify NOT NULL for a field, then new records are required to have valid data in that field.

· Use ADD CONSTRAINT to add a multiple-field index. For more information on multiple-field indexes, see the CONSTRAINT clause topic.
· Use DROP COLUMN to delete a field. You specify only the name of the field.
· Use DROP CONSTRAINT to delete a multiple-field index. You specify only the index name following the CONSTRAINT reserved word.

Notes

· You can't add or delete more than one field or index at a time.
· You can use the CREATE INDEX statement to add a single- or multiple-field index to a table, and you can use ALTER TABLE or the DROP statement to delete an index created with ALTER TABLE or CREATE INDEX.
· You can use NOT NULL on a single field, or within a named CONSTRAINT clause that applies to either a single field or to a multiple-field named CONSTRAINT. However, you can apply the NOT NULL restriction only once to a field, or a run-time error occurs.

Create Index statement

Creates a new index on an existing table.

Note For non-Microsoft Jet databases, the Microsoft Jet database engine doesn't support the use of CREATE INDEX (except to create a pseudo index on an ODBC linked table) or any of the data definition language (DDL) statements. Use the DAO Create methods instead. For more information, see the Remarks section.

Syntax

CREATE [ UNIQUE ] INDEX index ON table (field [ASCDESC][, field [ASCDESC], ...]) [WITH { PRIMARY DISALLOW NULL IGNORE NULL }]

The CREATE INDEX statement has these parts:

Part Description
index The name of the index to be created.
table The name of the existing table that will contain the index.
field The name of the field or fields to be indexed. To create a single-field index, list the field name in parentheses following the table name. To create a multiple-field index, list the name of each field to be included in the index. To create descending indexes, use the DESC reserved word; otherwise, indexes are assumed to be ascending.
Remarks

To prohibit duplicate values in the indexed field or fields of different records, use the UNIQUE reserved word.
In the optional WITH clause, you can enforce data validation rules. You can:

· Prohibit Null entries in the indexed field or fields of new records by using the DISALLOW NULL option.
· Prevent records with Null values in the indexed field or fields from being included in the index by using the IGNORE NULL option.
· Designate the indexed field or fields as the primary key by using the PRIMARY reserved word. This implies that the key is unique, so you can omit the UNIQUE reserved word.

You can use CREATE INDEX to create a pseudo index on a linked table in an ODBC data source, such as SQL Server, that does not already have an index. You don't need permission or access to the remote server to create a pseudo index, and the remote database is unaware of and unaffected by the pseudo index. You use the same syntax for both linked and native tables. This can be especially useful to create an index on a table that would ordinarily be read-only due to lack of an index.

You can also use the ALTER TABLE statement to add a single- or multiple-field index to a table, and you can use the ALTER TABLE statement or the DROP statement to remove an index created with ALTER TABLE or CREATE INDEX.

Note Don't use the PRIMARY reserved word when you create a new index on a table that already has a primary key; if you do, an error occurs.

Constraint Clause

A constraint is similar to an index, although it can also be used to establish a relationship with another table.

You use the CONSTRAINT clause in ALTER TABLE and CREATE TABLE statements to create or delete constraints. There are two types of CONSTRAINT clauses: one for creating a constraint on a single field and one for creating a constraint on more than one field.

Note The Microsoft Jet database engine doesn't support the use of CONSTRAINT, or any of the data definition language (DDL) statements, with non-Microsoft Jet databases. Use the DAO Create methods instead.

Syntax

Single-field constraint:

CONSTRAINT name {PRIMARY KEY UNIQUE NOT NULL REFERENCES foreigntable [(foreignfield1, foreignfield2)]}

Multiple-field constraint:

CONSTRAINT name {PRIMARY KEY (primary1[, primary2 [, ...]]) UNIQUE (unique1[, unique2 [, ...]]) NOT NULL (notnull1[, notnull2 [, ...]]) FOREIGN KEY (ref1[, ref2 [, ...]]) REFERENCES foreigntable [(foreignfield1 [, foreignfield2 [, ...]])]}

The CONSTRAINT clause has these parts:

Part Description
name The name of the constraint to be created.
primary1, primary2 The name of the field or fields to be designated the primary key.
unique1, unique2 The name of the field or fields to be designated as a unique key.
notnull1, notnull2 The name of the field or fields that are restricted to non-Null values.
ref1, ref2 The name of a foreign key field or fields that refer to fields in another table.
foreigntable The name of the foreign table containing the field or fields specified by foreignfield.
foreignfield1, foreignfield2 The name of the field or fields in foreigntable specified by ref1, ref2. You can omit this clause if the referenced field is the primary key of foreigntable.
Remarks

You use the syntax for a single-field constraint in the field-definition clause of an ALTER TABLE or CREATE TABLE statement immediately following the specification of the field's data type.
You use the syntax for a multiple-field constraint whenever you use the reserved word CONSTRAINT outside a field-definition clause in an ALTER TABLE or CREATE TABLE statement.
Using CONSTRAINT, you can designate a field as one of the following types of constraints:

· You can use the UNIQUE reserved word to designate a field as a unique key. This means that no two records in the table can have the same value in this field. You can constrain any field or list of fields as unique. If a multiple-field constraint is designated as a unique key, the combined values of all fields in the index must be unique, even if two or more records have the same value in just one of the fields.
· You can use the PRIMARY KEY reserved words to designate one field or set of fields in a table as a primary key. All values in the primary key must be unique and not Null, and there can be only one primary key for a table.

Note Don't set a PRIMARY KEY constraint on a table that already has a primary key; if you do, an error occurs.

· You can use the FOREIGN KEY reserved words to designate a field as a foreign key. If the foreign table's primary key consists of more than one field, you must use a multiple-field constraint definition, listing all of the referencing fields, the name of the foreign table, and the names of the referenced fields in the foreign table in the same order that the referencing fields are listed. If the referenced field or fields are the foreign table's primary key, you don't have to specify the referenced fields — by default, the database engine behaves as if the foreign table's primary key is the referenced fields.

DROP Statement

Deletes an existing table from a database or deletes an existing index from a table.

Note The Microsoft Jet database engine doesn't support the use of DROP, or any of the DDL statements, with non-Microsoft Jet databases. Use the DAO Delete method instead.

Syntax

DROP {TABLE table INDEX index ON table}

The DROP statement has these parts:

Part Description
table The name of the table to be deleted or the table from which an index is to be deleted.
index The name of the index to be deleted from table.
Remarks

You must close the table before you can delete it or remove an index from it.
You can also use ALTER TABLE to delete an index from a table.
You can use CREATE TABLE to create a table and CREATE INDEX or ALTER TABLE to create an index. To modify a table, use ALTER TABLE.

http://www.vb123.com/toolshed/99/createtables.htm

7/26/09

10 Things We Overpay For

Afternoon snacks. Do you munch protein bars as a healthier alternative to a chocolate pick-me-up? You could easily be paying more than $2 per bar and consuming just as much sugar as you would with your favorite candy bar. Stock up on fruit for a fraction of the cost when you do your grocery shopping. You'll be fitter and save a bundle.

Bottled water. Yes, it's important to drink water every day. But picking up the bottled variety with your lunch is an expensive way to stay hydrated. Rather than spend $2 a day for water, buy a pitcher and a filter for about $20 and drink as much as you want for pennies a glass.

A caffeine fix. Can't get through the day without at least one cuppa Joe? Stopping at Starbucks or Dunkin' Donuts can set you back as much as $1.65 per cup. Splurge on a pound of gourmet coffee for $8 to $13 and you can make 40 cups for about 20 cents to 33 cents each.

Favorite tunes. Do you rush out to buy the latest CD by your favorite group even though there are only one or two songs you really like? Instead of paying up to $18 for the CD, download those cuts you want from iTunes for 99 cents each, or from Amazon for as little as 79 cents.

A night at the movies. An evening for two at your local theater costs an average of about $20, including the popcorn -- and closer to $30 in major cities. And that doesn't even count the babysitter. For just $5 a month, you can watch two movies from Netflix or pay $9 for unlimited viewing. If you're willing to wait a little longer for new releases, borrow them free from your local library. (See Cut the Cable Cord for other inexpensive entertainment options.)

Fresh flowers. A bouquet of spring blooms brightens up a room and your mood. But purchasing it from a florist at $25 and up can quickly put a dent in your budget. Check out your local grocery store, which offers a selection of seasonal bouquets for $5 to $10.

Fruits and veggies. Sure, precut vegetables and salad mixes that are washed and bagged save a little time. But you'll pay for the convenience. Broccoli florets and sliced peppers cost $6 per pound, compared with one-third to one-half the price for the uncut versions. Lettuce varieties that are pre-washed and bagged sell for $5.98 a pound. But it takes just minutes to wash and spin dry enough arugula for your evening salad, and you'll pay one-third as much. Buying whole strawberries rather than sliced ones that are prepackaged cuts the price by 75%.

Credit-card fees. Every month, millions of credit-card customers pay their bills late, and they're assessed as much as $39 each time. Set up an automatic debit and you'll never incur another late fee.

ATM fees. Each time you use an out-of-network ATM you pay an average of $3.43. Do that once a week and you'll rack up almost $180 in ATM fees every year. Avoid those charges by selecting a bank with a large ATM network or an online account that reimburses your ATM fees -- such as the eOne no-fee account from Salem Five Direct bank. Another alternative: Get cash back at the grocery store.

Fax and mail services. Instead of paying FedEx $1.49 to fax one page, sign up to send free faxes from a provider such as faxZero or K7.net. Save on shipping with the U.S. Postal Service's priority mail service. You'll pay just $4.95 to mail an envelope or small box anywhere in the U.S., and your parcel is likely to arrive within two days. Larger packages cost $10.35. That saves at least 50% compared with UPS's two-day service, the cost of which varies by weight and distance.

http://content.kiplinger.com/features/archives/2009/03/10-things-we-overpay-for.html

20 Ways to Waste Your Money

How to waste your money

1. Buy new instead of used. Talk about a spending leak -- or, rather, a gush. Cars lose most of their value in the first few years, meaning thousands of dollars down the drain. However, recent used models -- those that are less than five years old -- can be a real value because you get a car that's still in fine working order for a fraction of the new-car price. And you'll pay less in collision insurance and taxes, too.

Cars aren't the only things worth buying used. Consider the savings on pre-owned books, toys, exercise equipment and furniture. (Of course, there are some things you're better off buying new, including mattresses, laptops, linens, shoes and safety equipment, such as car seats and bike helmets.)

2. Carry a credit-card balance. If you have a $1,000 balance on a card charging 18%, you blow $180 every year on interest. That's money you could certainly put to better use elsewhere. Get in the habit of paying off your balance in full each month.

3. Buy on impulse. When you buy before you think, you don't give yourself time to shop around for the best price. Resist the urge to make an impulse purchase by giving yourself a cool-off period. Go home and sleep on the decision. If you still want to make the purchase a day or so later, do your comparison shopping, check your budget and go for it. Oftentimes, though, I bet you'll decide you don't need the item after all.

4. Pay to use an ATM. A buck or two here and there may not seem like a big deal. But if you're frequenting ATMs outside your bank's network, the surcharges can add up quickly. Put that money back in your pocket by using ATMs in a surcharge-free network such as Allpoint or Money Pass.

5. Dine out frequently. A habit of spending $10, $20, $30 per person for dinner can be a huge drain on your wallet. Throw in a $6 sandwich for lunch and a $4 latte in the morning, and you've got quite a leak. Learn to cook, pack your lunch and brew your coffee at home and you could save a couple hundred bucks each month.

6. Let your money wallow. If you are stashing your savings in your checking account or a traditional bank account, you are wasting money. You could put it in a high-interest online savings account and get paid to save. You can even get an interest-bearing checking account through such reputable companies as Everbank, Charles Schwab, E*Trade and ING Direct.

7. Pay an upfront fee for a mutual fund. Selecting no-load funds can save you more than 5% in sales charges. Of course, no matter how well a fund has done in the past, you can't be sure how it will perform in the future. But if you pay a load, you'll begin the performance derby in the hole to the tune of the load. See the Kiplinger 25 for our favorite no-load funds.

8. Pay too much in taxes on investments. Are you investing in a tax-sheltered 401(k) or Roth IRA? If you're not maxing out those accounts before you invest in a taxable account, you're spending too much.

9. Buy brand-name instead of generic. From groceries to clothing to prescription drugs, you could save money by choosing the off-brand over the fancy label. And in many cases, you won't sacrifice much in quality. Clever advertising and fancy packaging don't make brand-name products better than lesser-known brands (see Similar Products, Different Prices).

10. Waste electricity. Of the total energy used to run home electronics, 40% is consumed when the appliances are turned off. Appliances with a clock or that operate by remote are typical culprits. The obvious way to pull the plug on your energy vampires is to do just that -- pull the plug. Or buy a device to do it for you, such as a Smart Power Strip ($31 to $44 at www.smarthomeusa.com, which will stop drawing electricity when the gadgets are turned off and pay for itself within a few months.

11. Pay banking fees. Overdraw your checking account and you'll pay $20 to $30 a pop, so it pays to keep tabs on your balance. Plus, are you still paying for a checking account? Free deals abound -- but make sure they're really free. For instance, will the bank charge a fee if your balance drops below a certain level or if you download your info into a personal-finance software program? That's not free.

12. Buy things you don't use. This sounds like a no-brainer to avoid, but how many times have you seen something on sale and thought you couldn't pass it up? Even if something is 50% off, you're spending too much if you don't use it. href=Couponing, for instance, can be a great way to save on your grocery bills. But if you buy things you wouldn't have purchased in the first place simply for the sake of using the coupon, you're wasting your money. The same goes for buying in bulk. A bargain is no bargain if it sits unused on your shelf or gets thrown away.

13. Own an extra car. Okay, so a car is a necessity for most people. But face it -- cars are a huge drain, from their loan payments to insurance fees to gas and maintenance costs. Own more than one car and you'll double or triple those expenses. Ask yourself if that second or third car is really necessary. Are you holding on to an old car for sentimental reasons? Can you or your spouse carpool, take public transportation or bike to work?

14. Ignore your local dollar store. Shopping at the dollar store can be hit-and-miss, but it's not all kitsch or junk. If you know what to buy, you can find some real bargains. For instance, my local dollar store charges 50 cents for greeting cards versus the $3-plus at a drug store or gift shop. (I have a big extended family so I figure this saves me more than $100 per year.) You can also score a deal on cleaning supplies, small kitchen tools, shampoos and soaps, holiday decorations, gift wrap and balloon bouquets.

15. Keep unhealthy habits. Smoking is not only bad for your health, it burns up your cash. A pack-a-day habit at $6 a pack costs $180 a month and $2,190 a year. A junk-food or tanning-bed habit can be costly as well. Not to mention the money you'll waste on medical bills down the road.

16. Be complacent about insurance. Your bill arrives and you pay it without a second thought. When was the last time you shopped around to determine whether you're getting the best deal? Rates vary widely from insurer to insurer and year to year. Reshopping your auto, home or renters insurance might save you hundreds of dollars.

It also pays to evaluate your insurance needs. For instance, upping your out-of-pocket deductible from $250 to $1,000 can save you 15% or more on your car insurance. Consider using the same insurer for your home and auto insurance -- you could snag up to 15% off for a multiple-line policy. And make sure you're not paying for insurance you don't need. For instance, you need life insurance only if someone is financially dependent upon you (such as a child).

17. Give Uncle Sam an interest-free loan. If you get a tax refund each April, you let the government take too much money in taxes from your paycheck all year long. Get that money back in your pocket -- and put it to work for you -- by adjusting your tax withholding. With a little discipline, you can use that extra cash each month to get started saving or pay down debt (or make ends meet to avoid going into debt in the first place). You can file a new Form W-4 with your employer at any time.

18. Pay for something you can get for free. Dust off your library card and check out books, music and movies for free (or dirt-cheap). Don't pay to receive your credit report when you're allowed to get it at no charge by law. Take advantage of kids-eat-free promotions. And dial 1-800-FREE-411 for free directory assistance.

19. Don't use a flexible-spending account. Your employer may allow you to set aside pretax dollars to pay for medical costs not covered by insurance. You can use the money for expenses such as therapy, contact lenses, insurance co-payments and over-the-counter drugs. You may be able to do the same for child-care costs.

20. Pay for unnecessary services. How many cable channels can a person watch? Do you really need all those extra features for your cell phone? Are you getting your money's worth out of that gym membership? Are you taking full advantage of your subscriptions (such as Netflix, TiVo or magazines)? Take a look at what you're paying for and what your family is actually using. Trim accordingly.

Copyrighted, Kiplinger Washington Editors, Inc.