###############################################################################
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
###############################################################################
(adjustment)=(adjustment)
AMT=AMT
AUTHCD=Enter Auth Code:
CASH=CASH
CHANGE=Change Due:
CHECK=CHECK
CREDCF=Enter Last 4 Digits:
CREDEX=Enter Expiration Date (MMYY):
CREDIT_CARD=CREDIT CARD
CREDNO=Enter Card Number:
CREDZP=Enter Billing ZipCode:
DATE=DATE
DRWR=TILL
DateFormat=EEE MMM dd
DateTimeFormat='the' yyyy MMMMM dd 'at'  hh:mm:ss aaa
EMPL=EMPL
ENTCAS=Enter Cash Amount:
ENTCHK=Enter Check Amount:
ENTCRC=Enter Credit Card Amount:
ENTGFC=Enter Gift Card Amount:
ENTOTH=Enter Other Payment Amount:
GIFT_CARD=GIFT CARD
GROSS_SALES=GROSS SALES
Grand_Total=Grand Total
ISCLOSED=Register Is Closed
ISOPEN=Register Is Open
ITEM=ITEM
Invalid_Selection=Invalid Selection!
LoadASale=Load a sale
LoadSaleListDblClickTip=You may use a double click to replace the current sale and delete this one
OPDRAM=Starting Drawer Amount:
OTHER=OTHER
PAYFIN=Press Finish To Complete Sale
Processing=Processing payments...
QTY=QTY
REFNUM=Enter Reference Number:
SKU=SKU
Sales_Tax=Sales Tax
SaveASale=Save current sale
Saving=Saving sale...
SelectAProduct=Select a product
SelectProductListDblClickTip=You may use a double click to select the current product
Shutting_down=Shutting down...
TOTAL=TOTAL
TOTALD=Total Due:
TXID=TXID
ULOGIN=Enter User ID:
UPASSW=Enter Password:
UserNotmanager=User is not a valid manager!
VOID=Enter Order Number To Void:
Validating=Validating...
WaitingFinalSales=Waiting for final sales data transmission...
clerk=Clerk:
draw=Dr:
term=Term:
total_report=TOTALS REPORT
CreateOrChooseReasonInOut=You have to create or choose a reason
PaidInTitle=Enter amount to paid in and create or choose a reason
PaidOutTitle=Enter amount to withdraw and create or choose a reason
