Link to: header | record viewer
directory
Copyright Turtle Creek Software 1996-2006. All Rights Reserved.
Comments
CPaymentMethodViewer
This class manages payment methods for the Goldenseal accounting software,
small business management software, construction
project management software and
construction estimating software.
It's a viewer for payment methods such as cash, check and credit card. This applies
only to payments received from a customer or tenant.
SUPERCLASS = DB_RecordViewer
Constructor
/*********************************************************************************
constructor
*********************************************************************************/
CPaymentMethodViewer::CPaymentMethodViewer(const SPaneInfo &inPaneInfo,
const SViewInfo &inViewInfo)
: DB_RecordViewer(inPaneInfo, inViewInfo)
{
}
Source Code
/*********************************************************************************
GetReadyToUpdateFields split TCS 4/17/00
Do prep work before updating fields
*********************************************************************************/
void CPaymentMethodViewer::GetReadyToUpdateFields(const UInt8 creationMethod,
DB_PersistentObject *viewerObject)
{
// set cv class for payee field TCS 12/2/99
TCS_FailNILMsg(viewerObject, TCS_GetErrString(errID_BadObject));
DBClass payeeClass;
TCS_ASSERTMsg(viewerObject->GetMemberValue(tag_feepayeeclass, type_objclass, &payeeClass),
TCS_GetValueErrString(tag_feepayeeclass));
SetCVClassID(tag_feepayee, payeeClass);
// the superclass handles basic field updating
THE_SUPERCLASS::GetReadyToUpdateFields(creationMethod, viewerObject);
}
/*********************************************************************************
FinishUpdatingFields split TCS 4/17/00
Finish prep work after updating fields from an object, but before displaying them
*********************************************************************************/
void CPaymentMethodViewer::FinishUpdatingFields(const UInt8 creationMethod,
DB_PersistentObject *viewerObject)
{
// the superclass handles basic field updating
THE_SUPERCLASS::FinishUpdatingFields(creationMethod, viewerObject);
// set the visiblity of various fields
SetFieldFormats(GetPopupValue(tag_calcmethod));
SetFeeFormat(GetPopupValue(tag_feetype));
SetFeeClassID(GetPopupValue(tag_calcmethod));
}
/*********************************************************************************
HandlePopupChanged
a cv field or popup has changed, act accordingly
*********************************************************************************/
void CPaymentMethodViewer::HandlePopupChanged(CTCS_StdPopupMenu *popupMenu)
{
// sanity check
TCS_FailNILMsg(popupMenu, TCS_GetErrString(errID_BadPopup));
UInt8 value = popupMenu->GetValue();
// now process the popup
switch (popupMenu->GetPaneID())
{
case tag_feepayeeclass: // TCS 12/2/99
SetCVClassID(tag_feepayee, value, true);
break;
case tag_calcmethod:
SetFieldFormats(value);
SetFeeClassID(value);
break;
case tag_feetype:
SetFeeFormat(value);
break;
default:
break;
}
// be sure to pass it along
THE_SUPERCLASS::HandlePopupChanged(popupMenu);
}
/*********************************************************************************
HandleCheckboxClicked
handle a checkbox click
*********************************************************************************/
void CPaymentMethodViewer::HandleCheckboxClicked(CTCS_StdCheckbox *checkbox)
{
TCS_FailNILMsg(checkbox, TCS_GetErrString(errID_BadCheckbox));
Boolean value = checkbox->GetValue();
switch (checkbox->GetPaneID())
{
case tag_customerterms:
//SetCVFieldVisible(tag_paymentterm, !value); rev TCS 3/13/00
break;
default:
break;
}
// be sure to pass it along
THE_SUPERCLASS::HandleCheckboxClicked(checkbox);
}
#if CAN_USE_MARK
#pragma mark -
#endif
/*********************************************************************************
SetFieldFormats
set the visibility of various fields
*********************************************************************************/
void CPaymentMethodViewer::SetFieldFormats(const UInt8 calcMethod)
{
CMoney zeroValue(0,0),
oneValue(1,0);
// set the income and deposit value fields
switch (calcMethod)
{
case method_freebie:
SetFieldEnabled(tag_discount, false);
SetFieldPercentValue(tag_discount, zeroValue);
SetFieldEnabled(tag_incomevalue, true);
SetFieldEnabled(tag_depositvalue, false);
SetFieldMoneyValue(tag_depositvalue, zeroValue);
break;
case method_writeoff:
case method_barter:
SetFieldEnabled(tag_discount, false); // rev TCS 10/4/00
SetFieldPercentValue(tag_discount, zeroValue);
SetFieldEnabled(tag_incomevalue, false);
SetFieldMoneyValue(tag_incomevalue, oneValue);
SetFieldEnabled(tag_depositvalue, false);
SetFieldMoneyValue(tag_depositvalue, zeroValue);
break;
case method_foreign:
case method_redeemable:
SetFieldEnabled(tag_discount, false);
SetFieldPercentValue(tag_discount, zeroValue);
SetFieldEnabled(tag_incomevalue, true);
SetFieldEnabled(tag_depositvalue, true);
break;
default:
SetFieldEnabled(tag_discount, true);
SetFieldEnabled(tag_incomevalue, false);
SetFieldMoneyValue(tag_incomevalue, oneValue);
SetFieldEnabled(tag_depositvalue, false);
SetFieldMoneyValue(tag_depositvalue, oneValue);
break;
}
// set enablement of billing detail fields TCS 1/6/98
Boolean isBillable = (calcMethod == method_billed);
SetFieldEnabled(tag_customerterms, isBillable); // change from SetFieldVisible TCS 12/7/00
SetFieldEnabled(tag_variableterms, isBillable);
Boolean isCustomer = GetCheckboxValue(tag_customerterms);
SetCVFieldEnabled(tag_paymentterm, isBillable); // rev TCS 3/13/00
}
/*********************************************************************************
SetFeeFormat TCS 3/30/99
set the field type for the fee field
*********************************************************************************/
void CPaymentMethodViewer::SetFeeFormat(const UInt8 feeType)
{
if (feeType == calc_dollars)
SetFieldType(tag_feeamount, fieldtype_money);
else
SetFieldType(tag_feeamount, fieldtype_percent);
}
/*********************************************************************************
SetFeeClassID TCS 3/31/99 rev 12/2/99 rev 10/4/00
set the cv class ID for the fee payee field
*********************************************************************************/
void CPaymentMethodViewer::SetFeeClassID(const UInt8 calcMethod)
{
Boolean isPercent = GetFieldValue(tag_feetype) == calc_percent;
switch (calcMethod)
{
case method_writeoff:
SetFieldValue(tag_feepayeeclass, id_OverheadAccount);
SetFieldEnabled(tag_feepayeeclass, false);
SetCVClassID(tag_feepayee, id_OverheadAccount);
SetCVFieldEnabled(tag_feepayee, true);
SetFieldEnabled(tag_feetype, false);
SetFieldEnabled(tag_feeamount, false);
SetFieldPercentValue(tag_feeamount, 0);
break;
case method_creditcard:
case method_redeemable:
case method_foreign:
case method_freebie:
{
UInt8 payeeClass = GetFieldValue(tag_feepayeeclass);
if (payeeClass == id_OverheadAccount)
{
SetFieldValue(tag_feepayeeclass, id_OtherCostAccount);
SetCVClassID(tag_feepayee, id_OtherCostAccount);
}
else
SetCVClassID(tag_feepayee, payeeClass);
SetFieldEnabled(tag_feepayeeclass, true);
SetCVFieldEnabled(tag_feepayee, true);
SetFieldEnabled(tag_feetype, true);
SetFieldEnabled(tag_feeamount, true);
}
break;
default:
SetFieldEnabled(tag_feepayeeclass, false);
SetCVFieldEnabled(tag_feepayee, false);
SetCVClassID(tag_feepayee, 0, true);
SetFieldEnabled(tag_feetype, false);
SetFieldEnabled(tag_feeamount, false);
SetFieldPercentValue(tag_feeamount, 0);
break;
}
}
|