Calibre Group - Technology solutions for the travel industry
Home Travel Technology TravelCampaigner Bespoke Solutions Domains/Hosting Contact Us
ACRES main project nav:  bullet  ACRES  bullet  Menu  bullet  Bugs  bullet  Bugs Fixed  bullet  Dev  bullet  Dev Complete  bullet  Key
You are here: Projects > ACRES > Dev
ACRES: Development
Code Account / Section / Description jump to start developer notes
 Notes Key Description
Fonts Chat session and trouble ticket system font ideas
Trebuchet MS - very clean evenly spaced font.
 General Notes for specification designer, not developer.
 tba Documentation > Booking Advice tba1
 tba take no action until code references created - future ACRES dev tba2
 tba 3 Contracts > spec notes tba3
PMM1 Notes for specification designer, not developer. pmm1
 PMM 2 Notes to spec writer not developer. pmm2
 email captcha: form filling anti spam  
 email General Email Correspondence not modular specific email
  DEVELOPER NOTES START BELOW
 spec 161017-04: ACRES Availability GUI 161017-04
 spec 161017-03: <function> Sales > ACRES Availability 161017-03
 spec 161017-02: [ACRES Availability] 161017-02
 email 161017-02 email
 spec 161017:01: <function> Contacts > Property Info> ACRES Availability 161017-01
 email 161017-01 email
 spec 161017-00: {property_account_connector} acres_availability 161017-00
 email 161017-00 email
 spec 160215-00: <function> Sales > Sale > Sale Type / Sale Purchase Type relationship 160215-00
 spec 160108-01 <function> Sales > Sale > Sale Product Exempt Amount 160108-01
 spec 160108-00 {table} sale_product > sale_product_exempt_amount 160108-00
150722-06 {table} sale - updates
150722-07 <function> Sales > Sale
This change is to enable users to identify the type of sale and sale purchase on a booking to allow more in depth reporting and enable Property Management sales reporting and monthly tax returns.

The two new fields are being placed into STEP A as the {sale_id} is created at this step.
 
Sales > Sale: STEP A Select Company/Contact
  move 'click on open date selector' to under Sale Date input box
OR
display a calendar icon
  insert a field label to the right of Client Ref.
    Sale Type
  insert an input box under 'Sale Type'
    The Sale Type input box will be a drop down showing {sale_type_name} for {sale_type_id} 1 and 3
  insert a field label to the right of Sale Type
    Sale Purchase Type
  insert an input box under 'Sale Purchase Type'
    The Sale Purchase Type input box will be a drop down showing {sale_type_name} for {sale_type_id} 2 and 4
    The Sale Purchase Type input box will be disabled until a Sale Type has been selected
      if sale_sale_type_id = 3
        then sale_sale_purchase_type_id restricted to sale_type_id 4
gui input field will be disabled and display {sale_type_id.sale_type_name}
ACRES will prevent users from moving to Sale STEP B until Sale Type and Sale Purchase Type have been selected.

In sale edit mode ACRES logic will need to validate {sale_type_id}.

PM Sale will need to validate also against PM Lock Date but this will be covered in the specifications for PM Sale separately.
150107-00
16Feb2015
<function> Sales > Sale - booking type
Not to be confused with Sale Type.

ACRES current function has check boxes for Provisional Booking and Period Booking in STEP D that can both be set to true. This should not be the case as a Provisional Booking may only exist in a Period Booking but not vice versa.

There are going to be 3 booking types:
  Booking
    Booking is the default setting and the current ACRES booking type when Provisional Booking and Period Booking are NOT TRUE
This does not need a new table field. If Provisional Booking and Period Booking are NOT TRUE then the booking type is Booking and the radio control is enabled
    Booking cannot overlap existing Booking (current ACRES logic)
    Booking cannot overlap exisiting Provisional Booking (current ACRES logic)
    Booking can exist within a Period Booking date range for the same {contact_id} ONLY (current ACRES logic)
    Booking can cross from one Period Booking to another Period Booking for the same {contact_id} ONLY under condition that:
      Period Bookings have been linked (see Period Booking for specifications)
  Provisional Booking
    Provisional Booking cannot overlap existing Booking (current ACRES logic)
    Provisional Booking cannot overlap exisiting Provisional Booking (current ACRES logic)
    Provisional Booking can exist within a Period Booking date range for the same {contact_id} ONLY (current ACRES logic)
    Provisional Booking can cross from one Period Booking to another Period Booking for the same {contact_id} ONLY under condition that:
    15 Period Bookings have been linked (see Period Booking for specifications)
  Period Booking
    Period Booking cannot overlap existing Period Booking
    Period Bookings can be linked to allow Booking and Period Booking to run from one Period Booking to another Period Booking on condition that:
      First Period Booking End Date = Second Period Booking Start Date
 
  Changes to {sale_id} for linking Period Bookings
  create two new fileds in {sale_id}
    period_booking_sale_id_pre
    period_booking_sale_id_post
      no fields created as ACRES will calculate on the fly but only display if dates with nn months of current date
 
  A {sale_id} must exist to be used as a Pre or Post Sale_ID
  Pre SID and Post SID will be disabled from view until Period Booking selected
  For a current {sale_id}, when a {sale_id} is inserted into {period_booking_sale_id_pre} then:
    the current {sale_id} becomes the Post Sale_ID for the {sale_id} that was inserted and will display in the Post SID field when the {sale_id} inserted is viewed in ACRES.
Example:
5678 is viewed in ACRES and set to Period Booking
The Pre SID and Post SID fields are enabled
1234 is inserted into the Pre SID field
5678 will then become the {period_booking_sale_id_post} for 1234
When 1234 is viewed in ACRES, 5678 will display in the Post SID field
  For a current {sale_id}, when a {sale_id} is inserted into {period_booking_sale_id_post} then:

  the current {sale_id} becomes the Pre Sale_ID for the {sale_id} that was inserted and will display in the Pre SID field when the {sale_id} inserted is viewed in ACRES.
Example:
5678 is viewed in ACRES and set to Period Booking
The Pre SID and Post SID fields are enabled
9012 is inserted into the Post SID field
5678 will then become the {period_booking_sale_id_pre} for 9012
When 9012 is viewed in ACRES, 5678 will display in the Pre SID field
 

Change to GUI

ACRES users will see all options but Calendar Updater only to see Booking and Provisional Booking.

  Booking
    Insert Radio Control above current Provisional Booking Check Box
Insert text 'Booking' above Provisional Booking
  Provisional Booking
    change Check Box to Radio Control
  Period Booking
    change Check Box to Radio Control
    Insert text 'Pre SID' to the right of Provisional Booking
    Insert an input field under 'Pre SID' on the same row as Period Booking
    Insert text 'Post SID' to the right of Pre SID
    Insert an input field under 'Post SID' on the same row as Period Booking
acres ©
16Feb2015 Tested bookings for SAME {contact_id} {property_id} combination
booking start date prior to period booking start date / end date within period booking dates
  result = failed
  correct as booking does not fall with period booking dates
booking dates within period booking dates
  result = completed
  correct as booking dates fall within period booking date
booking start date within period booking dates / end date outside period booking dates
  result = failed
  correct as booking does not fall with period booking dates
booking start date within one period booking dates / end date within another period booking dates where period bookings are continuous
  result = completed
  correct as booking dates fall within continuous period booking dates
booking start date within one period booking dates / end date within another period booking dates where period bookings are NOT continuous
  result = failed
  correct as booking dates DO NOT fall within continuous period booking dates
Tested bookings for DIFFERENT {contact_id} but SAME {property_id} combination
booking start date within one period booking dates / end date within another period booking dates where period bookings are continuous BUT the {contact_id} is DIFFERENT
  result = completed
  incorrect as the {contact_id} is different in the period bookings ACRES should not have permitted the transaction to be complated. An error message should have been displayed.
Tested bookings for SAME {contact_id} but DIFFERENT {property_id} combination
booking start date within one period booking dates / end date within another period booking dates where period bookings are continuous, the {contact_id} is the same but the {property_id} is DIFFERENT
  result = failed
  correct as the {contact_id{ {property_id} is not unique
140718-02
audit
tab45
<function> Accounting > Audit > Expense Ledger Payments
The function is very similar to the [Sales Receipts] and [Sales Purchase Payments] with the double dates for tax date and receipt/payment dates.

The existing [Expense Reports] can be used as a starting point. The existing report can be used with the payment date fields added so long as the current report will still work as it does now when no payment Start/End Dates are input.
 
Expense Ledger Payments
  Report style label
    Radio control selection for 'by Date' 'by Category' 'by Creditor'
  Report mode label
    Summary Totals Only checkbox
  Report Start Date label
    Report Start Date input field with date selector
  Report End Date label
    Report End Date input field with date selector
  Expense Ledger Payment Start Date label
    Expense Ledger Payment Start Date input field with date selector
  Expense Ledger Payment End Date label
    Expense Ledger Payment End Date input field with date selector
 
There could also be variations where the Report Start/End Dates are left blank so the report will show all Expense Ledger Payments within the defined period.

Leaving the Expense Ledger Payment End Date blank with other fields completed would show all Expesne Ledger Payments equal to or greater than the Expense Ledger Payment Start Date.
 

The Report Start/End Date selection will be for the reporting period which is the {expense_ledger.tax_date].

The Expense Ledger Payment Start/End date selection will be for the Expense Ledger payment period, the {payment_ledger.payment_date}.

In this example the reporting period is 01 Jan 2013 to 31 Dec 2013 and the payment period is the same. The report will show all Expense Ledger Payments in 2013 for Expense Ledger Entires with a 2013 {expense_ledger.tax_date}.

 
    Report Start Date 01-Jan-2013
select records where {expense_ledger.tax_date} is greater than or equal to this date
    Report End Date 31-Dec-2013
select records where {expense_ledger.tax_date} is less than or equal to this date
    Expense Ledger Payment Start Date 01-Jan-2013
select records where {payment_ledger.payment_date} is greater than or equal to this date
    Expense Ledger Payment End Date 31-Dec-2013
select records where {payment_ledger.payment_date} is less than or equal to this date
 
Example where the reporting period is 01 Jan 2013 to 31 Dec 2013 and the payment period is 01 Jan 2014 to 31 Dec 2014. The report will show all Expense Ledger Payments in 2014 for Expense Ledger Entires with a 2013 {expense_ledger.tax_date}. These entires were therefore Expense Ledger Creditors at the end of 2013.
 
    Report Start Date 01-Jan-2013
select records where {expense_ledger.tax_date} is greater than or equal to this date
    Report End Date 31-Dec-2013
select records where {expense_ledger.tax_date} is less than or equal to this date
    Expense Ledger Payment Start Date 01-Jan-2014
select records where {payment_ledger.payment_date} is greater than or equal to this date
    Expense Ledger Payment End Date 31-Dec-2014
select records where {payment_ledger.payment_date} is less than or equal to this date


Example where the reporting period is 01 Jan 2013 to 31 Dec 2013 and the payment period is 01 Jan 2012 to 31 Dec 2012. The report will show all Expense Ledger Payments in 2012 for Expense Ledger Entires with a 2013 {expense_ledger.tax_date}. These entires were therefore Expense Ledger Pre-Payments at the end of 2013.
 
    Report Start Date 01-Jan-2013
select records where {expense_ledger.tax_date} is greater than or equal to this date
    Report End Date 31-Dec-2013
select records where {expense_ledger.tax_date} is less than or equal to this date
    Expense Ledger Payment Start Date 01-Jan-2012
select records where {payment_ledger.payment_date} is greater than or equal to this date
    Expense Ledger Payment End Date 31-Dec-2012
select records where {payment_ledger.payment_date} is less than or equal to this date
 
All numeric fields too have summary totals.
Re-display column heading above summary totals and report end totals.
  'by Date'
    summary by calendar month
  'by Category'
    summary by {expense_ledger.expense_category_id}
  'by Creditor'
    summary by {expense_ledger.contact_id}
 
Report column headings for: Expense Ledger Payments 'by Date'
Report heading line 1: 'Report: Audit Expense Ledger Payments by Expense Ledger Tax Date'
Report heading line 2: 'Report Tax Period: [report start date (dd mmm yyyy)] - [report end date (dd mmm yyyy)]
Report heading line 3: 'Expense Ledger Payment Period: [expense ledger payment start date (dd mmm yyyy)] - [expense ledger payment end date (dd mmm yyyy)]
 
Sort Order
  {expense_ledger_id.tax_date}
{expense_ledger_id}
{payment_ledger.payment_date}
{payment_ledger.payment_ref}
Column Display
  expense_ledger_id.tax date
    label: tax date
format: ddmmmyyyy (no gaps between day month and year)
  expense_ledger_id
    label: ID
  expense_ledger.manual_ref
    label: Man Ref
  expense_ledger.contact_id
    label: Supplier
  expense_ledger.total_amount
    label: Total
  expense_ledger.expense_category_id
    label: Category
Display category name from {expense_category} not the id number
  expense_ledger.due_date
    label: Due Date
  payment_ledger.payment_date
    label: Date Paid
  payment_ledger.bank_account_id
    label: Bank ID
  payment_ledger.payment_ref
    label: Paid Ref
  payment_ledger.amount
    label:
  The Due Out value is calculated on the fly depending on the report criteria
    label: Due Out
 
When Expense Ledger Payment Period IS NOT NULL, only Expense Ledger Payment amounts made matching the criteria should be included in the payment total. Where an {expense_id} has multiple payments out, the amount paid out should be included, not the total paid out.

When the report is not in 'Summary' mode, an additional line for each payment should be made below the first matching line just to display the payment details from the {payment_ledger.payment_date}, {payment_ledger.bank_account_id}, {payment_ledger.payment_ref} and {payment_ledger.amount} fields.

When the report is not in 'Summary' mode, the 'Due Out' value will be displayed on the last row for each {expense_ledger_id}. If there is only one matching payment the last row is also the first row. When there are multiple payments, the 'Due Out' value will be BLANK on all the rows apart form the last row. The 'Due Out' value is not the value at the time the report is run, it is the calculated value dependant on the search criteria.

After the report totals display a summary of the payments by {bank_account_id}. Only display {bank_id} where the report value is NOT ZERO. This will enable cashflow analysis verification.
 

{bank_account_id}
{bank_account_account_name}
{bank_account.contact.id} display {contact.company_name}
total per bank.id

 
Report column headings for: Expense Ledger Payments 'by Category'
Report heading line 1: 'Report: Audit Expense Ledger Payments by Expense Category'
Report heading line 2: 'Report Tax Period: [report start date (dd mmm yyyy)] - [report end date (dd mmm yyyy)]
Report heading line 3: 'Expense Ledger Payment Period: [expense ledger payment start date (dd mmm yyyy)] - [expense ledger payment end date (dd mmm yyyy)]
 
Sort Order
  {expense_ledger.expense_category_id} by name rather than by id
{expense_ledger_id.tax_date}
{expense_ledger_id}
{payment_ledger.payment_date}
{payment_ledger.payment_ref}
Column Display
  Same as 'by Date' but no need to display Category column
 
Report column headings for: Expense Ledger Payments 'by Creditor'
Report heading line 1: 'Report: Audit Expense Ledger Payments by Creditor'
Report heading line 2: 'Report Tax Period: [report start date (dd mmm yyyy)] - [report end date (dd mmm yyyy)]
Report heading line 3: 'Expense Ledger Payment Period: [expense ledger payment start date (dd mmm yyyy)] - [expense ledger payment end date (dd mmm yyyy)]
 
Sort Order
  {expense_ledger.contact_id}
{expense_ledger_id.tax_date}
{expense_ledger_id}
{payment_ledger.payment_date}
{payment_ledger.payment_ref}
Column Display
  Same as 'by Date' but no need to display Supplier column
150219-00 {datebase} sale_typecounting > Audit > Expense Ledger Payments
Transaction type to be automatic, block dates for things such as maintenance/decorating.

Sale (type)
Sale Purchase (type)
PM Sale

buy in: Sale - Sale Purchase used for current reporting system
buy within: Sale - PM Sale would still be current reporting but no need to duplicate entries. If PM changes then change would automatially be reflected in Sale Purchase using PM Sale

owner booking:
  owner staying, zero values, update calendar
  owner guest
    owner responsible for declaring revenue and taxes
    owner responsible for revenue, PMC to declare taxes, fee for service?
    owner asking PMC to collect revenue and declare taxes, fee for service?
    owner guest details to be shared with PMC. Owner can only retrieve guest detailsas client if owner input in the first place so will need shared{contact_id} such as {contact_id} connector table.
    Same applies for customer names
   
     
  when active, remove calendar updater for PM owners
    generate owner booking function
   
     
set taxes from locations
FL = 7%
County levels = 4-6.5%

These will be used automomatically for PM function. save to exact 2 decimal places. Need auto adjustment function for FDR calculations and adjustment allowances
 
140718-03
audit
tab43
tab44
<function> Accounting > Bank Transactions > Reports > Expense Reports - expense outstanding

In order to calculate Expense Ledger entires with an amount not equal to zero at any particular date a new date field will be added to the existing reports Expenses by Date, Category and Creditor.

Expesne Reports

  Report style label
    Radio control selection for 'by Date' 'by Category' 'by Creditor' exists already
  Report mode label
    Summary Totals Only checkbox exists already
  Report Start Date label
    Report Start Date input field with date selector exists already
  Report End Date label
    Report End Date input field with date selector exists already
  Report Outstanding Date label
    Report Outstanding Date input field with date selector new field
 
In this example acres will calculate any expenses with a due out amount NOT EQUAL TO ZERO as at the Report End Date.

Report Start Date: 01 Jan 2009
Report End Date: 31 Dec 2009
Report Outstanding Date: 31 Dec 2009

Acres will calculate any expenses within and including the Report Start and End Date {expense_ledger.tax_date} where:
Due Out is NOT EQUAL TO ZERO
Date Paid is GREATER THAN Report Outstanding Date
PMM
130201-07
<function> Property Management > Managed Property > Section - add record ACRES ONLY
post delivery additional specification below
{pm_section} to be set as ACRES only.

All {account_id} will inherit
For all {account_id} apart from ACRES there should be no [VIEW] [EDIT] [DELETE] icons.
For all {account_id} apart from ACRES display 'ACRES' as {modifier_id}
For all {account_id} apart from ACRES do not display {modifier_date}

Add a new field to {pm_section} labelled 'inactive'
Set value to '1' for all existing records

No records to be deleted, just set to inactive.
[DELETE] option in ACRES will not delete, just set inactive=0
post delivery additional specification above
PMM
131107-00
<function> Property Management > Managed Property - add record
Connector tables to be used where multiple values possible with start/end dates

After selecting [Managed Property] ACRES will offer a Property input field.
Managed Property - add record
Homeowner {homeowner_contact_id}
  SELECT contact name from {contact_id}
Character sensitive field.
Check against {company_name}
AND
{firstname} + {lastname}
ONLY {contact_id} where {homeowner} is TRUE should be available for selection.
Property {property_contact_id}
  ONLY {property_id} owned by {account_id} available for selection
OR
{property_id} assigned to {account_id} available for selection

character sensitive method
  As characters are input, ACRES filters matching properties for selection. Test characters against system code and address line 1.
Select required {property_id}
dropdown method
  {contact_id}
ONLY {property_id} connected with {contact_id} in [Contacts] available for selection.
If only one Property for Contact then prepopulate field as done in [Calendar Update].
             
Create 'Opening Balance and Date Range' (OBDR) Display Area

Display [+] [+/-] subject to conditions.

On initial display the [+] icon only to be displayed if there are no OBDR records.
  then only display [+/-] when OBDR records exist.
Where no OBDR record exists for a property [+/-] will not display as there are no records to display on expand.
[+] will display allowing users to add the first OBDR record.
Once an OBDR record exists, [+/-] will now display to allow users to expand/collapse the OBDR Display Area.

Where a service record does exist for a property, only [+/-] will display in collapsed mode.
[+] will only become visible in expanded mode.

When [+] selected, ACRES to check if {homeowner_contact_id}{property_contact_id} is UNIQUE
  IF {homeowner_contact_id}{property_contact_id} not unique
AND IF {homeowner_contact_id}{property_contact_id} is not current record
THEN dislay message
      'this combination of homeowner and property already exists ({pm_managed_property_id}). Edit existing record
Existing {pm_managed} can still be used. The introduction of parent/child fields may be useful to track relationships of multiple records fr the same {homeowner_contact_id}{property_contact_id} combinations.
 
ACRES DATE LOGIC applies for Add/Edit

OBDR Display Area will display column headings:
Opening Balance | Start Date | End Date  
 
By using the OBDR method, ACRES can track multiple unique {homeowner_contact_id}{property_contact_id} where the same homeowner and property come in ad out of property management without having to create a new {pm_managed_id} each time.

This method will also allow for the correct calculations on HoS taking into acclount all other logic with {pm_lock_date} and OBDR.
 
Opening Balance
  numeric 2 decimal places. Value used from PM Start Date.
Cannot be changed after first Management Report {pm_lock_date} as will affect all subsequent reports.
ie LOCKED where {pm_managed_start_date < {pm_lock_date}
cannot be NULL
Set to '0.00 on [POST] if no value input

Start Date

will be the dates user wants ACRES to start keeping record and not necessarily the date user actually started managing the property
  cannot be NULL
cannot be < {pm_lock_date}
cannot be inside an exisitng date range
    on [POST] display warning message relevant to logic failure
  WHERE {pm_managed_start_date} < {pm_lock_date}
{homeowner_contact_id} is LOCKED
{property_contact_id} is LOCKED
End Date
will be null for all Properties that user is currently managing
  can be NULL for current record only
cannot be inside an exisitng date range
    on [POST] display warning message relevant to logic failure
PMM
130201-12
131020-00
<function> Property Management > Managed Property > Escrow
ACRES Start Date Logic in addition to 130201-12
Escrow Start Date (PM_Escrow_Start_Date)
  cannot be NULL
cannot be inside an exisitng date range
cannot be < {pm_managed_start_date}
    ACRES not to permit a record being created where the start date is LESS THAN the start date of the property being managed.
Warn user to use a date that is => (equal to orgreater than) {pm_managed_start_date}
OR
Amend {pm_managed_start_date}
  cannot be > {pm_managed_end_date}
    ACRES not to permit a record being created where the start date GREATER THAN the end date of the property being managed.
Warn user to use a date that is earlier than {pm_managed_end_date}
OR
Amend {pm_managed_end_date}
PMM
131007-02
<function> Property Management > Managed Property - Managed Service
<start code verify
Create Managed Service Display Area under Escrow Display Area

Display [+] [+/-] subject to conditions.

On initial display the [+] icon only to be displayed if there are no service records for the property.
  then only display [+/-] if service records exist
Where no service record exists for a property [+/-] will not display as there are no records to display.
[+] will display allowing users to add the first service record.
Once a service record exists, [+/-] will now display to allow users to expand/collapse the SDA.

Where a service record does exist for a property, only [+/-] will display in collapsed mode.
[+] will only become visible in expanded mode.
 
ACRES DATE LOGIC applies for Add/Edit
 
Managed Service Display Area will display column headings:
Managed Service | Start Date | End Date
 
ONLY {pm_service} create by {account_id} available for selection
 
Managed Service drop down field showing service name populated by {pm_service.service}
          IF {pm_lock_date} > {pm_service_end_date}
THEN {pm_service} not available for selection
IF {pm_managed_service_start_date} > {pm_lock_date}
THEN can be changed to another {pm_service_id}
  eg a service is added and prior to running a HoS the user chooses to change to another service
IF {pm_managed_service_end_date} < {pm_lock_date}
THEN cannot be changed to another {pm_service_id}
  eg records could already be created on HoS so change not permitted as the change would affect historical records
{pm_service} < {pm_lock_date} being displayed in drop down
end of code verify>
(incomplete 28Oct2013)
<start code verify
Start Date   cannot be inside an exisitng date range INCLUDING start/end dates for matching {pm_managed_service_id}
cannot be > {pm_managed_service_end_date}
cannot be NULL
cannot be > {pm_managed_end_date}
       
    ACRES not to permit a record being created where the start date is greater than the end date of the property being managed.
Warn user to use a date that is earlier than {pm_managed_end_date}
OR
Amend {pm_managed_end_date}
End Date cannot be inside an exisitng date range INCLUDING start/end dates for matching {pm_managed_service_id}
cannot be < {pm_managed_service_start_date}
can be NULL for current record only
    IF a record exists which is already NULL then ACRES to display message to place an End Date in existing record before new record can be created
IF there is no {pm_service} with a current record (one with a NULL End Date)
THEN {pm_managed_service_end_date} will be set and LOCKED = highest {pm_service_end_date}
On mouseover GUI to display text explaining that {pm_service} has expired.
[X]   display [X] delete option
WHERE {pm_managed_service_start_date} AND {pm_managed_service_end_date} are NULL
          eg when a new record is added and user does not wish to save
        WHERE {pm_managed_service_start_date} > {pm_lock_date}
<<< Additonal logic to be applied once {pm_managed_service_bundle} has been created >>>
[POST]   In addition to {pm_managed_service} additional logic must be performed to ensure Services are not duplicated on a HoS.
As a Service can be applied standalone or as part of a Service Bundle, ACRES must validate that the Service being added/amended {pm_service_id} does not already exist within the same time period within {pm_managed_service_bundle}.
            eg Current date = 01 Mar 2012
Pool Service exist in a Service Bundle starting 01 Jan 2012 with no end date so is valid until an end date is applied.
The Service Bundle is included in a {pm_managed_service_bundle} for a Homeowner with a start date of 01 Feb 2012 and no end date.

If Pool Service was added as a standalone {pm_managed_service} the record would not save as the Service would be duplicated. Once in {pm_managed_service_bundle} and again in {pm_managed_service}
          Error message would need to display:

'Service already exists in Managed Service Bundle'

In order to add Service to HoS one of the following actions must be completed:
Apply an End Date to Managed Service Bundle within this Property where Service is already included.
OR
Apply and End Date to [Managed Property > Service Bundle]
PMM
131018-00
{table} pm_managed_service_bundle
Create {pm_managed_service_bundle}

This section specified for local user. Consideration needs to be included for global ACRES table structures. Only records created by {account_id} to be available for use.
 
pm_managed_service_bundle_id
  auto increment from 0 for {account} counter
cannot be NULL
pm_managed_id
  from {pm_managed}
will be known as record created within pm_managed like {pm_managed_service}
cannot be NULL
pm_service_bundle_id
  from {pm_service_bundle}
cannot be NULL
    Where {pm_service_bundle_period} = 'calendar month' apply pricing on the 1st of the month.
As {pm_service_bundle} has an end date any updates to pricing in {pm_service_bundle} will automatically be reflected on the HoS. This relationship will continue until {pm_service_bundle} has an End Date set or {pm_managed_service_bundle_end_date} is not NULL.

Where {pm_service_bundle_period} = 'unit' apply pricing on {pm_managed_service_bundle_start_date}
As this is a one at a time transaction the {pm_managed_service_bundle_end_date} will be set to equal {pm_managed_service_bundle_start_date} and be LOCKED.
pm_managed_service_bundle_start_date
  use START description rather than from/to, from/until
cannot be NULL
pm_managed_service_bundle_end_date
  use END description rather than from/to, from/until
can be NULL
= {pm_managed_service_bundle_start_date} where {pm_service_period} = 'unit'
pm_managed_service_bundle_updater
  from {account.user_id}
cannot be NULL
updated
  date/time stamp but only display date
cannot be NULL
deleted
  true/false
default = false
cannot be NULL
PMM
131018-01
<function> Property Management > Managed Property - Managed Service Bundle
Create Managed Service Bundle Display Area under Managed Service Display Area

Display [+] [+/-] subject to conditions.

On initial display the [+] icon only to be displayed if there are no service bundle records for the property.
  then only display [+/-] if service records exist
Where no service record exists for a property [+/-] will not display as there are no records to display.
[+] will display allowing users to add the first service record.
Once a service record exists, [+/-] will now display to allow users to expand/collapse the SDA.

Where a service record does exist for a property, only [+/-] will display in collapsed mode.
[+] will only become visible in expanded mode.
 
ACRES DATE LOGIC applies for Add/Edit
 
Managed Service Bundle Display Area will display column headings:
Managed Service Bundle | Start Date | End Date
 
Managed Service Bundle drop down field showing service bundle name populated by {pm_service_bundle.label}
          IF {pm_lock_date} > {pm_service_bundle_end_date}
THEN {pm_service_bundle} not available for selection
IF {pm_managed_service_bundle_start_date} > {pm_lock_date}
THEN can be changed to another {pm_service_bundle_id}
  eg a service bundle is added and prior to running a HoS the user chooses to change to another service bundle
IF {pm_managed_service_bundle_end_date} < {pm_lock_date}
THEN cannot be changed to another {pm_service_bundle_id}
  eg records could already be created on HoS so change not permitted as the change would affect historical records
Start Date   cannot be inside an exisitng date range INCLUDING start/end dates for matching {pm_managed_service_bundle_id}
cannot be > {pm_managed_service_bundle_end_date}
cannot be NULL
cannot be > {pm_managed_end_date}
    ACRES not to permit a record being created where the start date is greater than the end date of the property being managed.
Warn user to use a date that is earlier than {pm_managed_end_date}
OR
Amend {pm_managed_end_date}
End Date   cannot be inside an exisitng date range INCLUDING start/end dates for matching {pm_managed_service_id}
cannot be < {pm_managed_service_bundle_start_date}
can be NULL for current record only
    IF a record exists which is already NULL then ACRES to display message to place an End Date in existing record before new record can be created
  IF there is no {pm_service_bundle} with a current record (one with a NULL End Date)
THEN {pm_managed_service_bundle_end_date} will be set and LOCKED = highest {pm_service_bundle_end_date}
On mouseover GUI to display text explaining that {pm_service_bundle} has expired.
[X]   display [X] delete option
WHERE {pm_managed_service_bundle_start_date} AND {pm_managed_service_bundle_end_date} are NULL
            eg when a new record is added and user does not wish to save
          WHERE {pm_managed_service_bundle_start_date} > {pm_lock_date}
<<< Additonal logic to be applied once {pm_managed_service} has been created >>>
[POST]   In addition to {pm_managed_service_bundle} additional logic must be performed to ensure Services are not duplicated on a HoS.
As a Service can be applied standalone or as part of a Service Bundle, ACRES must validate that the Service being added/amended {pm_service_id} does not already exist within the same time period within {pm_managed_service}.
            eg Current date = 01 Mar 2012
Pool Service exists in {pm_service} starting 01 Jan 2012 with no end date so is valid until an end date is applied.
The Service is included in a {pm_managed_service} for a Homeowner with a start date of 01 Feb 2012 and no end date.

If Pool Service is included in a {pm_managed_service_bundle} being added, the record would not save as the {pm_service_id} would be duplicated. Once in {pm_managed_service} and again in {pm_managed_service_bundle}
          Error message would need to display:

'Service already exists in Managed Service'

In order to add Service Bundle to HoS one of the following actions must be completed:
Apply an End Date to Managed Service within this Property
OR
Apply Service Bundle that does not include the Service
PMM
131008-01
<function> Property Management > Homeonwer Statements
This feature limited to local {account} only. No cross {account} function.

There is no {table} definition as the data being displayed already exists.

The issue of opening and closing balances will be address on statement production as this does not affect record display. The list is ongoing and statements are produced to provide an overview of the records for a homeowners benefit.
Homeowner Statements will be produced on a single home basis. If a situation required multi-property reporting for a single {contact_id} then the issue will be addressed at that time.

Select [Homeowner Statements]
 
HoS Report Start Date
  freehand entry permitted
display calendar icon for date picker
can be NULL
<= HoS Report End Date
    Althought the field is empty on initial display and can be populated by freetext or date picker there also needs to be a dropdown arrow populated as follows:
current period = {pm_lock_date} + 1 month (eg pm lock date 31 Jan 2012 then current = Feb 2012)
last calendar month = calendar month/year prior to {pm_lock_date} month/year
 - Start/End dates will then be automatically populated
last 3 calendar months = 1st of month/year minus 4 prior to {pm_lock_date} month/year
 - End Date will be set to last of month/year minus 2 prior to {pm_lock_date} month/year
 - Start/End dates will then be automatically populated
HoS Report End Date
  freehand entry permitted
display calendar icon for date picker
can be NULL
>= HoS Report Start Date
Homeowner Contact ID
  can be NULL
only {contact} for {account} to be available for selection. Logic should already exist from {pm_managed}
if one entity owns multiple properties this feature will enable all required properties to be listed without loading the codes individually.
Property ID
  from {property}
can be NULL
input by character sensitive check against {system_code} AND {address_line1} so user can type system code or 1st line of address to narrow available selection.
Only {property_id} from {pm_managed} will be available for selection.
[+] to add Property to INPUT WINDOW
[] checkbox to the right of the [+] selection 'display inactive properties'. Default = unchecked
    when the 'display inactive properties' checkbox is TRUE, there is no validation against {pm_managed}

where report start/end date not null, validate before adding to display


IF HoS Report Start Date is not NULL
AND HoS Report Start Date >= {pm_managed.start_date}
AND <= {pm_managed.end_date}
OR {pm_managed.end_date} is NULL
THEN {property_id} available for selection

ELSE IF HoS Report End Date is not NULL
AND HoS Report End Date >= {pm_managed.start_date}
AND <= {pm_managed.end_date}
OR {pm_managed.end_date} is NULL
THEN {property_id} available for selection

ELSE {property_id} not available for selection
- display message to user explaining why it is not able to add selected property
eg 'HoS Report Start Date earlier than pm_managed start date'
eg 'HoS End Date later than pm_managed end date'

This same validation needs to take place on [POST] in edit mode in case the Report Start/End dates are amended after the record has been completed having passed a prior validation check.
 
On [POST] matching properties will be listed in an individual Property Display Area.
The first line of each Property Display Area will show:
  System Code
    [+/-] expand/collapse icon
[s] statement icon
    icon required to indicate a calendar as this view is by calendar month
  [X] not required
  The second line of each Property Display Area will show:
    Address Title (if exists)
Address Line 1
 
[+/-] expand/collapse view
  All records displayed in this order:
{pm_section_section.sort_order}
{pm_service_bundle_label.sort_order}
{pm_service_service.sorrt_order}
 
[s] statement view
  period to be displayed by descending month/year
gui display in format suitable for creating a pdf for a homeowner or pdf generator like booking advice on a per period basis
statement view does not need to show {contact_id} details as these will be displayed on the print view statement
statement view to show:
  heading for month / year
period opening balance
period records with amounts in debit/credit columns like a bank statement
  All records displayed in this order:
{pm_section_section.sort_order}
{pm_service_bundle_label.sort_order}
{pm_service_service.sorrt_order}
sub totals per section
period closing balance
produce statement button
  this will show the period statement in a new window (like financial reports) showing the {contact_id} as per a printed HoS
 
Example: {contact_id} only selected
  on [POST] only properties matching the {homeowner_contact_id} to be displayed
properties where current date > {pm_managed.end_date} will not be displayed
when 'display inactive properties' checkbox is TRUE, ALL {pm_managed} will be displayed
Example: [+/-] last 3 calendar months
  3 records from each {managed_property.property_id} will display per property in date descending order
  {hos_report_start_date} = 01 Jan 2012
{hos_report_end_date} = 31 Mar 2012
  each matching {managed_property.property_id} would have 3 records available for viewing
Mar 2012
Feb 2012
Jan 2012
  selecting a period will display on screen the records within the period
select 'produce statement button to create hard copy for backup or email
 
Owners using Calendar Updater will require historical monthly views of HoS where the PMC uses ACRES.
 
Future specification of this module for phase 2 of PMM
  forecast view based on average historical data of management fees and expenses and known advance reservations
use PM lock date to store hos balances or some other counter such as year start / end to avoid ACRES having to calculate large amounts of historical records to get current balances
131021-00 <function> GUI Display Area on [POST]
On [POST] ACRES gui to return to Display Area options gui rather than Selected Menu gui on [POST]

If no records added or amended then [POST] to be disabled.
 
Example:
[menu] Managed Property selected
  gui will show Selected Menu gui for {pm_managed}
[EDIT] gui will show for selected Property
  Escrow Display Area
Managed Service Display Area
Managed Service Bundle Display Area
IF [+/-] selected in ANY Display Area but no record change has taken place
THEN [POST] disabled
 
IF [+/-] selected in ANY Display Area and record change has taken place
THEN [POST] enabled
  After record validation logic has passed gui should not return to {pm_managed} gui.
ACRES to show Display Areas in collapsed mode still within the selected {pm_managed}
130818-02 <function> Operations > Setup > Expense Categories
20Jan2014 logic still to be tested

ACRES should only display {expense_category} where

{expense_category.account_id} = {user_id.account.id}

No records should be deleted. Just set record to inactive if no longer in use as there may be exisiting entries using the id.

To disable a category for selection:
either
  select [EDIT]
  change {expense_category_active} to '0'
  select [POST]
or
  select [DELETE]
  display message 'record will be set to inactive OK/Cancel'
    IF [OK] set {expense_category_active} value to '0'
    ELSE IF [CANCEL] ignore and return to previous GUI
 
ADD/EDIT

On [POST] ACRES must check if {expense_category_name} field value already exists (case insensitive) within matching {account_id}.
  IF {expense_category_name} exists and {expense_category_active} = '1'
THEN display message
    'record already exists' [OK]
select [OK] no records updated
  ELSE IF {expense_category_name} exists and {expense_category_active} = '0'
THEN display message
    'inactive record already exists, set to active' [OK] [CANCEL]
    select [OK]
      selected record not updated
exisiting record {expense_category_active} set to '1'
    select [CANCEL]
      no records updated and return to previous GUI
 
Additional specification to link {expense_category} to {expense_group} from [Expense Categories]

On the existing display add a new label 'Expense Group] and a display field {expense_group_name} with a drop down arrow.

Only Super Users or higher should be permitted to change the Expense Group link.

To use the new function:

Select [Expense Categories]

Select [edit] icon (same will apply for new {expense_category}).

If the {expense_category} has already been linked then the {expense_group_name} will be displayed otherwise the field will be blank.

Use the drop down function to select the required Expense Group.

Select [post]

IF {expense_group_id} is NULL
THEN display warning to user that
'Expense Category must be linked to an Expense Group'
'OK to select Expense Group or Cancel to abandon insert/edit'
OK = go back to input screen so user can select Expense Category
Cancel = abandon record insert/edit. Go back to Expense Categories display GUI.
130818-05 <function> Operations > Setup > Expense Group
20Jan2014 logic still to be tested

Select [Expense Group]

By default inactive records whose {Status} is set to TRUE will not be displayed. If a user creates an entry where the {expense_group_name} is an exact match then the status flag will just be set to FALSE (unchecked) and the record will become available for use.

When user selects menu item no records will be displayed. Items available will be:
<Custom Filter>, Checkbox with label 'Show inactive records', <Apply Filter> <reset filter> <Add record>.

Where <Apply Filter> is selected without any filter criteria, records will be displayed ASCENDING by {Sort Order}.

Only records with a matching {account_id} to the user {account_id} to be displayed.

Edit Icon will be displayed subject to user security level.

Users will NOT be allowed to delete records. They will need to change the Status.

When creating a new record, on save the new record is to appear on the top of the list so records to be displayed DESCENDING by id.

Add record
ID
  auto on post
Expense Group
  add label
Status
  active on record post
Expense Group table example
  ID Type Sort Order Inactive Account User Update Date
  1 Fixed Assets 100 false 2 36 08/18/2013
  2 General & Administrative 10 false 2 36 08/18/2013
  3 Insurances 20 false 2 36 08/18/2013
  4 Professional Fees 30 false 2 36 08/18/2013
 
Once a record has been created Expense Categories can be added using the [+] icon.

With Expense Group displayed select the [edit] icon for the Expense Group that will have an Expense Category linked.

Display the [+] icon below the Expense Group information.

Display a Expense Category selection field below the [+] icon with a drop down arrow.
Initially this field will be disabled.

Below this display a list of all Expense Categories that have already been linked to the Expense Group.
As from this point forward all Expense Categories must be lonked to an Expense Group, there will be no [delete] icon display next to the Expense Category.
To remove an Expense Category from an Expense Group the Expense Category must be linked to the required Expense Group using [edit] for the required Expense Group.

Select [+]

The Expense Category selection field will now be enabled.
Using the drop down any Expense Category not already linked to the Expense Group will be available for selection.

Select the required Expense Category.

Select [post]

IF the Expense Category is not already linked to an Expense Group
THEN {expense_ledger] will store {expense_group_id}
ELSE IF {expense_ledger: expense_group_id} is not null
THEN display warning to user that
{expense_category_name} is already linked to {expense_group_name}
OK to change link to new [expense_group_name}
or Cancel
PMM
130207-02
<function> Operations > Setup > PM EL Description

As a very high percentage of descriptions are repeated over HoS so these can be pre-defined.

Users will be able to select multiple Descriptions when preparing a HoS such as 'bulb stock', 'a/c filter stock' that have been inherited from {ACRES} or input under their own {database}.

below to be checked once module live
By default inactive records whose {Status} is set to TRUE will not be displayed. If a user creates an entry where the {Description} is an exact match then the staus flag will just be set to FALSE (unchecked).

When user selects menu item no records will be displayed. Items available will be:

<Custom Filter>, Checkbox with label 'display inactive records'
radio control x 3 <ACRES> <local> <ACRES & local> 'ACRES & local' selected as default.
<Apply Filter> <reset filter>
<Add record>.

Where <Apply Filter> is selected with default radio control the default record display will be:

  {ACRES}{pm_el_description.sort_order}
    all active ACRES records to be displayed
  followed by {account_id}{pm_el_description.sort_order}
    all active ACRES records to be displayed
 
[EDIT] only available in {account_id} that created the {pm_el_description}

When selected, ACRES to display message that changes will affect records in the PMM.
OK to continue / Cancel.

Users will NOT be allowed to delete records. They will need to change the Status.
[DELETE] icon can be used to set status to inactive.
above to be checked once module live

When creating a new record, on save the new record is to appear on the top of the list so records to be displayed DESCENDING by {account_id}{pm_el_description_id}

Records inherited from {ACRES} to be displayed as view only
AND
records created by {account_id} to be displayed with [VIEW][EDIT][DELETE]

Any records created by another {account_id} should NOT be displayed.
 
Create table {pm_el_description}
ID
  auto unique generated by ACRES
Description
  text 75 characters to start
Sort Order
  cannot be NULL
Set to '0' on post if no value inserted. User can edit later.
Sort Order may be used to determin display order on HoS.
Status
  checkbox
used/unused. The default value is false (unchecked) so the record will appear for selection in the PMM. When a User changes the value to TRUE the record will no longer be available for selection in the PMM.
Updater
  {user_id} from logon
display Username
if Username belongs to ACRES {account_id} display 'ACRES'
Updated
  create date/time when record created
updated date/time when record edited or deleted
Account ID
  auto from logon {user_id}
does not need to be displayed on any account other than ACRES
used to determin when to display record if {account_id} matches {user_id.account_id}
 
PM EL Description table example
  ID Type Sort Order Status Updater Updated Account
  1 bulb stock 20 active ACRES 2013-07-29 10:06:39 1
  2 a/c filter stock 10 active ACRES 2013-07-29 10:06:50 1
  3 linens 120 active ACRES 2013-07-29 10:06:59 1
  4 towels 200 active ACRES 2013-07-29 10:07:19 1
  51 bi annual front door batteries 100 active Danger Mouse 2013-08-24 11:29:10 2
PMM
130207-09
{table} pm_el_connector

The function of {pm_el_connector} will connect {expense_ledger} records to {pm_expense_ledger}.

Applying a zero value (P)ercentage or (A)mount will have the same effect as using the E(x)act setting.

{pm_el_connector}
Expense Ledger ID
  from {expense_ledger}
PM Expense Ledger ID
  from {pm_expense_ledger}
EL Total
  {total_amount} from {expense_ledger}
Markup
  from {markup_id}
Display will show {markup_key} as more user friendly
Markup Amount
  numeric two decimal places
the actual value after Markup applied
To charge an amount to a HoS that is less than the EL Total a NEGATIVE value can be applied
Example PM EL Connector Table
  ID EL ID PM EL ID EL Total Markup Markup Amount  
  1 7712 32 117.34 X 175.00  
  2 7711 33 305.00 X 50.00  
  3 7711 34 305.00 X 25.00  
  4 7711 35 305.00 X 35.00  
  5 7711 36 305.00 X 60.00  
  6 7711 37 305.00 X 175.00  
  7 7711 38 305.00 X 175.00  
  8 7618 39 63.54 $ 2.00  
  9 7715 40 10 % 20.00  
  10 7999 98 20.00 S 17.50  
  11 7999 99 20.00 S 17.50  
In the example the EL ID 7711 Total is 305.00 and the amounts charged to the HoS are in excess of this value.
PMM
130207-10
{table} pm_expense_ledger

This is specified as a standalone table which may connect to {expense_ledger} through a connector table {pm_el_connector}.

PM Expense Ledger
{pm_expense_ledger}
Expense Ledger ID
  from {expense_ledger}
can be NULL
if NULL then record is a standalone record with no connection to {expense_ledger}
if not NULL then use GUI HEADER WINDOW for user reference to display from {expense_ledger}:
Tax Date, Contact Name, Description, Total Amount
Date
  default today
cannot be NULL
This is the actual date of the expense/fee.
Will be {tax_date} from {expense_ledger} if Expense Ledger ID is not NULL and LOCKED.
HoS Date
  default today or as {pm_expense_ledger.date} if Date greater than {pm_lock_date}
cannot be NULL
must be greater than {pm_lock_date}
can be less than Date so long as other conditions met
Contact ID
  from {contact}
can be NULL
will be {contact_id} from {expense_ledger} if Expense Ledger ID is not NULL and LOCKED.
cannot be NULL on SAVE if Key = UB from {pm_hos_key}
User to select name from drop down menu of Contacts flagged as Expense Ledger Suppliers only.
HoS to display Company Name or Firstname Lastname if Company Name NULL.
PM HoS Key ID
  from {pm_hos_key_id}
cannot be NULL
WHERE {expense_ledger_id} is NOT NULL
- default display = 'Misc Expense'
PM EL Description ID
  from {pm_el_description_id}
ACRES to offer drop down selection populated by {Description}. the id is stored when selected.
The first entry in the selection will be hardcoded 'freehand' which means User wants to input manually.
Value=NULL for 'freehand' entry

if {expense_ledger_id} is not NULL then
Desciption selection will have 2 rows each with a radio control button for selection:
1st row will display text from {expense_ledger_description}
2nd row as above with drop down selection populated by {Description}
Description
  where {pm_el_description_id} is not NULL display 'Description' from {pm_el_description}. It will not be possible to edit this field as it has been inherited.

WHERE {expense_ledger_id} is NOT NULL
- default display = {expense_ledger_description}

where {pm_el_description_id} is NULL allow freehand entry with field width setting equivalent to Description field in {pm_el_description}.

On record save, prompt User if they want to save Description to PM EL Description table for easy reuse.
If yes then create new record in {pm_el_description} with Sort Order=0.
A Sort Order of zero means the descrition will appear first the next time the function is used and will serve as a prompt for user to edit if required.
The {pm_el_description_id} will be populated with the new ID the the Description field will become LOCKED.

If Description is an exact match with an exisiting record in {pm_el_description}
AND
{pm_el_description} Status is FALSE
THEN
populate {pm_el_description_id} with the exisitng ID.
DO NOT create new record in {pm_el_description}.
Save record in this table.

If Description is an exact match with an exisiting record in {pm_el_description}
AND
{pm_el_description} Status is TRUE
THEN
populate {pm_el_description_id} with the exisitng ID.
DO NOT create new record in {pm_el_description}.
Change the Status in {pm_el_description} to FALSE.
Save record in this table.

This method is also a quick way of populating the table without users having to spend time ahead of preparing HoS.
 
{pm_el_connector}
 
Property ID
  from {property}
cannot be NULL
input by character sensitive check against {system_code} AND {address_line1} so user can type system code or 1st line of address to narrow available selection.
Only {property_id} from {pm_managed} will be available for selection.
[+] to add Property to INPUT WINDOW
    validate against {pm_managed} before adding to list
IF hos_date >= {pm_managed.start_date}
AND <= {pm_managed.end_date}
OR {pm_managed.end_date} is NULL
THEN {property_id} available for selection
ELSE {property_id} not available for selection
- display message to user explaining why it is not able to add selected property
eg 'hos_date earlier than pm_managed start date'
eg 'hos_date after pm_managed end date'

This same validation needs to take place on [POST] in edit mode in case the hos_date is changed after the record has been completed having passed a prior validation check.
Total
  only available if Expense Ledger ID not NULL value = {total_amount} from {expense_ledger}
otherwise field not available from input. User to complete HoS Total.
Markup
  only available if Total not NULL.
from {markup}
drop down to offer Markup Name selection from {markup}.
Store markup_id in {pm_el_connector}
Value
  the numerical value of the markup
can be NULL
can be NEGATIVE
HoS Total
  numeric with set 2 decimal places
cannot be NULL
if NULL on record save warn user that value is '0.00', ok to continue or change value.

For standalone records the HoS Total is the amount input by the user.

For entries where Expense Ledger ID not NULL then
HoS Total is calculated as a result of Total/Markup/Value.
PMM
130207-11
Property Management: PM Expense Ledger

This is specified as a standalone table which may connect to the Expense Ledger table through a connector table {pm_el_connector}.

This process covers expenses that are to be allocated to a HoS that are independent of a regular Expense Ledger entry where PMC is not paying out such as a Call Out fee and PMC self repair.

Expenses to be allocated to a HoS where the PMC is paying out will utilize {pm_el_connector}.
<start of code verify
Selecting this menu item will show the PM Expense Ledger window.
No records will be displayed until selected.
<input field> <filter field> <add record> <apply filter> will show as in Expense Ledger.
(filter field selection will be decided once module near completion)
end of code verify>(incomplete 06Oct2013)
<start of code verify
Selecting <Apply filter> with no filter criteria will display records in DESCENDING order by HoS Date.
end of code verify>(incomplete 06Oct2013)
The PM Expense Ledger window will be a combination of the PM Expense Ledger and the PM EL Connector tables among others. Although there will be a single input system ACRES may generate mutiple records on save. However, when editing a record, only a single record at a time is permitted.

PM Expense Ledger
Create table {pm_expense_ledger}
<start of code verify
Expense Ledger ID
  from {expense_ledger}
can be NULL
if NULL then record is a standalone record with no connection to {expense_ledger}
if not NULL then use GUI HEADER WINDOW for user reference to display from {expense_ledger}:
Tax Date, Contact Name, Description, Total Amount
end of code verify>(incomplete 06Oct2013)
<start of code verify
Date
  default today
cannot be NULL
This is the actual date of the expense/fee.
Will be {tax_date} from {expense_ledger} if Expense Ledger ID is not NULL and LOCKED.
end of code verify - COMPLETED>
<start of code verify
HoS Date
  default today or as Date if Date greater than {pm_lock_date}
cannot be NULL
must be greater than {pm_lock_date}
less than Date permitted
end of code verify - COMPLETED>
  below: test when Homeowner Statements ready
An expense can be input with a {pm_expense_ledger_date} that is prior to the {pm_lock_date}. The HoS will display the record according to the HoS Date and display the {pm_expense_ledger_date} in (parenthisis) to show it was for a prior period but being applied in a current period. See example below.
above: test when Homeowner Statements ready
Contact ID
  from {contact}
can be NULL
will be {contact_id} from {expense_ledger} if Expense Ledger ID is not NULL and LOCKED.
cannot be NULL on SAVE if Key = UB from {pm_hos_key}
User to select name from drop down menu of Contacts flagged as Expense Ledger Suppliers only.
HoS to display Company Name or Firstname Lastname if Company Name NULL.
PM HoS Key ID
  from {pm_hos_key_id}
cannot be NULL
WHERE {expense_ledger_id} is NOT NULL
- default display = 'Misc Expense'
PM EL Description ID
  from {pm_el_description_id}
ACRES to offer drop down selection populated by {Description}. the id is stored when selected.
The first entry in the selection will be hardcoded 'freehand' which means User wants to input manually.
Value=NULL for 'freehand' entry

if {expense_ledger_id} is not NULL then
Desciption selection will have 2 rows each with a radio control button for selection:
1st row will display text from {expense_ledger_description}
2nd row as above with drop down selection populated by {Description}
Description
  where {pm_el_description_id} is not NULL display Description from {pm_el_description}. It will not be possible to edit this field as it has been inherited.

WHERE {expense_ledger_id} is NOT NULL
- default display = {expense_ledger_description}

where {pm_el_description_id} is NULL allow freehand entry with field width setting equivalent to Description field in {pm_el_description}.

On record save, prompt User if they want to save Description to PM EL Description table for easy reuse.
If yes then create new record in {pm_el_description} with Sort Order=0.
A Sort Order of zero means the descrition will appear first the next time the function is used and will serve as a prompt for user to edit if required.
The {pm_el_description_id} will be populated with the new ID the the Description field will become LOCKED.

If Description is an exact match with an exisiting record in {pm_el_description}
AND
{pm_el_description} Status is FALSE
THEN
populate {pm_el_description_id} with the exisitng ID.
DO NOT create new record in {pm_el_description}.
Save record in this table.

If Description is an exact match with an exisiting record in {pm_el_description}
AND
{pm_el_description} Status is TRUE
THEN
populate {pm_el_description_id} with the exisitng ID.
DO NOT create new record in {pm_el_description}.
Change the Status in {pm_el_description} to FALSE.
Save record in this table.

This method is also a quick way of populating the table without users having to spend time ahead of preparing HoS.
The next part of this function will enable multiple records to be created on a single SAVE/POST.
In addition to multiple Properties, each Property can have a different Markup method and value applied.
This should appear below a horizontal line break.
 
Below the Property selection window will be a checkbox with the wording
'apply same markup policy to entire list'
when selected, only the value fields first row will be enabled and will be applied to every property added to the list.

The INPUT WINDOW will display a single row for each selected Property.
System Code | Total | Markup | Value | HoS Total
 
Property ID
  from {property}
cannot be NULL
input by character sensitive check against {system_code} AND {address_line1} so user can type system code or 1st line of address to narrow available selection.
Only {property_id} from {pm_managed} will be available for selection.
[+] to add Property to INPUT WINDOW
    validate against {pm_managed} before adding to list
IF hos_date >= {pm_managed.start_date}
AND <= {pm_managed.end_date}
OR {pm_managed.end_date} is NULL
THEN {property_id} available for selection
ELSE {property_id} not available for selection
- display message to user explaining why it is not able to add selected property
eg 'hos_date earlier than pm_managed start date'
eg 'hos_date after pm_managed end date'

This same validation needs to take place on [POST] in edit mode in case the hos_date is changed after the record has been completed having passed a prior validation check.
Total
  only available if Expense Ledger ID not NULL value = {total_amount} from {expense_ledger}
otherwise field not available from input. User to complete HoS Total.
Markup
  only available if Total not NULL.
from {markup}
drop down to offer Markup Name selection from {markup}.
Store markup_id in {pm_el_connector}
Value
  the numerical value of the markup
can be NULL
can be NEGATIVE
HoS Total
  numeric with set 2 decimal places
cannot be NULL
if NULL on record save warn user that value is '0.00', ok to continue or change value.

For standalone records the HoS Total is the amount input by the user.

For entries where Expense Ledger ID not NULL then
HoS Total is calculated as a result of Total/Markup/Value.
 
[X] should not be available where {hos_date} <= {pm_lock_date}
  as the homeowners statements would already be completed, a new record should be created to reverse/adjust a value to a current HoS
 
Example Input Window for connected entry with multiple Properties:
'apply same markup policy to entire list' checked
  System Code Total Markup Value HoS Total On SAVE/POST this would create
4 records in
{pm_expense_ledger}
AND
{pm_el_connector}
  ORLGR3H007 200.00 Percentage 25.00 50.00
  ORLGR3H019 locked locked locked locked
  ORLGR4H001 locked locked locked locked
  ORLGR4H039 locked locked locked locked
Example Input Window for connected entry with multiple Properties:
'apply same markup policy to entire list' unchecked
  System Code Total Markup Value HoS Total On SAVE/POST this would create
4 records in
{pm_expense_ledger}
AND
{pm_el_connector}
  ORLGR3H007 200.00 Percentage 20.00 40.00
  ORLGR3H019 200.00 Percentage 22.00 44.00
  ORLGR4H001 200.00 Percentage 26.00 50.00
  ORLGR4H039 200.00 Percentage 32.00 64.00
Example Input Window for standalone entry with multiple Properties:
'apply same markup policy to entire list' unchecked
  System Code Total Markup Value HoS Total On SAVE/POST this would create
5 records in
{pm_expense_ledger}
AND
{pm_el_connector}
  ORLGR3H007 NULL NULL NULL 32.67
  ORLGR3H019 NULL NULL NULL 32.67
  ORLGR4H001 NULL NULL NULL 47.25
  ORLGR4H020 NULL NULL NULL 13.19
  ORLGR4H039 NULL NULL NULL 13.19
Example Input Window for connected entry with multiple Properties:
'apply same markup policy to entire list' checked
  System Code Total Markup Value HoS Total On SAVE/POST this would create
2 records in
{pm_expense_ledger}
AND
{pm_el_connector}
  ORLGR3H007 20 Set Value 17.50 17.50
  ORLGR3H019 locked locked locked locked
 
Example HoS display - Expense Section
  Key HoS Date Description   Amount  
  ME 07-Feb-2013 call out fee (26Dec2012)   35.00  
  ME 07-Feb-2013 annual smoke detector battery change 21.00  
  PE 07-Feb-2013 replace pool blanket straps   35.00  
PMM
130207-12
Accounting > Accounts > Expense Ledger

When creating records in Expense Ledger, on SAVE/POST ACRES to prompt user to update PMM.

If No then just save reord in Expense Ledger.

If Yes, save record in Expense Ledger and open PM Expense Ledger Window with Expense Ledger ID for user to complete PMM record.

Change to Expense Ledger - Add Record
On the INPUT WINDOW insert a label 'PMM' under create date and above POST.
On the right insert a checkbox with the text 'update PMM'.

When checkbox is selected on POST save the Expense Ledger record and display the PM Expense Ledger Window.

On PM Expense Ledger SAVE/POST go back to Expense Ledger display and shoe new record at top of list (same as current function).
 
Insert a new column on the Expense Ledger records display window between 'ID@ and 'contact' called 'PMM'
When the Expense Ledger records are displayed:
IF {expense_ledger_id} exists in {pm_el_connector}
THEN
display a TICK in the PMM column. Blank if no matches.

On record VIEW, display ALL matching {pm_expense_ledger_id} next to PMM label.

On record EDIT, display ALL matching {pm_expense_ledger_id} next to PMM label.
Multiple record editing from original may not be possible. Individual records in {pm_el_ledger} may have to be edited separately.

DELETE not available if payments made for record.
DELETE not available if matching records applied to HoS with HoS Date prior to PMM Lock Date.

DELETE only availble if no payments made for record
AND
HoS Date in {pm_expense_ledger} greater than PMM Lock Date
{expense_ledger} will be deleted
AND
ALL{pm_expense_ledger} records connected by {pm_el_connector}
PMM
130210-00
void
[menu] Property Management > PM Sale (11Feb2013 void, will use {sale_type})
Create a new menu item 'PM Sale'
Place [PM Sale] under [PM Expense Ledger]
PMM
130210-01
{table} sale_type

change
{book_transaction_type}
to
{sale_type}

Update ACRES system wide to reflect the name change and all connected fields.

Fields to be added:

Sort Order
  cannot be NULL
Set to '0' on post if no value inserted. User can edit later.
Sort Order may be used to determin display order in PMM.

Status
  checkbox
used/unused. The default value is false (unchecked) so the record will appear for selection in the PMM. When changed by DB MANAGER to TRUE the record will no longer be available for selection in the PMM.
No GUI for this table. DB MANAGER to set table as:
  sale_type_id name sort_order status  
  1 Sale 20 NULL  
  2 PM Sale 10 NULL  
  3 Change/Amend 30 NULL  
  4 Block/Stopsale 50 NULL  
  5 Cancel 40 NULL  
complete
12Feb13
RH already updated table and change all {book_transaction_type_id} from '2' to '5'.
System code needs to be updated to use '5' where'2' is currently set.
PMM
130210-03
{table} calendar

Currently there are check-in, checkout dates and times in
{calendar}
AND
{sale_transaction} (formerly {book_transaction})

The logic would be to put {calendar_id} in {sale_transaction}.
For exisitng records {calendar_id} would be NULL so use information in table.
For new records use {calendar_id} and lock off dates/times in {book_transaction}.

[Calendar Update] GUI will display dates/times from {sale_transaction} IF values not NULL.

Need to discuss this before next step as {sale_transaction} and new {pm_sale} should just connect to {calendar}.

Looks like {calendar} needs parent_calendar_id and child_calendar_id

{calendar}
calendar_id
  unchanged
property_id
  unchanged
unit_id
  can be NULL
for future use
will be rooms in a property such as rooms in a hotel
begin_date
  unchanged
end_date
  unchanged
end_date_original
  unchanged
available_tomorrow
  unchanged
{sale_transaction_id} (formerly {book_transaction_id})
  will become redundant as {calendar_id} will be the key link in {sale_transaction}
{parent_calendar_id}
  NULL for new record
previous {calendar_id} after <edit> <delete>
{child_calendar_id}
  NULL for new record
prior {calendar_id} after <edit> <delete>
provisional
  unchanged
status
  unchanged
{account_id}
  will become redundant as only one calendar will exist per property.
{property_id} is the key link
[Calendar Update] to use {account_id} from {sale_transaction}
Retain values for historic records.
NULL for new records.
{user_id}
  from {user_id} from {sale_transaction}{account_id}
will also track {user_id} on <edit><delete> as amended records may be by a different user.
{contact_id}
  from {contact}
will be used to determin permission to amend record.

Currently a PMC {account} will not be able to see records created by HO {account} but will see the dates booked on a calendar.
This may be reviewed so the PMC could see records created by HO {account} where HO exists in Managed Property.
{created}
  date/time
PMM
130210-04
GUI: Header > Message Box

Insert a message box 300px wide and same height as header on the right hand side of the header.

Approx 20-25px have a header with 'Message Box' and a <clear> button.

The Message Box will be used to display ACRES message for user reference.

Example Message Box:
  Message Box <clear>
  ACRES
message
box
for
user
reference
PMM
130210-05
Sales > Calendar Updater

[Calendar Update] GUI currently displays date/time fields from {sale_transaction} (formerly {book_transaction})

Under existing '<checkbox> Whole words only'
INSERT
<checkbox Display deleted record>

By default, no deleted records to be displayed unless checkbox is selected.

New code to also display date/time fields from {calendar}.

The Calendar Update GUI displays records from {sale_transaction} (formerly book_transaction}).
Any record with {parent_record_id} value NULL and {child_calendar_id} value not NULL will be the latest record in that series.
Calendar Update GUI to display latest record only with {child_calendar_id} hidden in the background.
Insert a column after the <Delete> column.
Display a <+> symbol in the new column for any records which meets the criteria.
On mouseover <+> symbol show text 'show previous calendar records'.
Selecting <+> will EXPAND the display area under the record and show all connected records {parent_calendar_id} DESCENDING.
<+> next to original record will change to <-> symbol.
On mouseover <-> symbol show text 'hide previous calendar records'.
Selecting <-> will COLLAPSE the dusplay area under the record.

The same logic must be applied to {calendar}

Calendar Update GUI must check both {sale_transactions} and {calendar} to show dates/times. The display will be a combination of data until all dates/times in {sale_transaction} are historic.

This will affect ALL calendar displays and must be reflected system wide in @acres.
Calendars viewed in ACRES
PLUS
Calendar viewed on a public website of PMC or HO.

 
With now just one area for calendars any <edit><delete> will immediately be reflected on GUI and websites.

Dependant on User Profile:
IF {calendar_id} does NOT exist in {sale_transaction}
THEN
<edit><delete> permitted (as record only generate by [Calendar Update])
ELSE IF
IF {calendar_id} does exist in {sale_transaction}
THEN
<delete> NOT permitted
<X> symbol to be feint and mouseover text 'record can only be deleted from Sale ID: {sale_id}'
  (this is the user {sale_id} unique to user account)

At bottom of mouseover text box show text
'control & plus to add text to Message Box (ctrl +)'
IF {calendar_id} exists in {sale_transaction}
THEN
<edit> permitted
  on SAVE/POST warn user that 'change will affect {sale_id}' <OK> / <Cancel>
At bottom of mouseover text box show text
'control & plus to add text to Message Box (ctrl +)'

On <OK> update {sale_transaction} with new {calendar_id}

Automatically go to [Make Sale] and run <Apply Filter> with {sale_id} for user to view/edit/print as required.
   
PMC will be permitted to amend {calendar}
WHEN
Account holder {property_id} exisits in {managed_property} for PMC.

This means that a HO with a PMC could create a {calendar} record.
The PMC would be able to amend the {calendar} record as {contact_id} for {property_id} exists in {manaed_property}.
 
When the automated communications are built in, ACRES will prompt user to send email/SMS of update to {contact_id}.
Example Calendar Update display:
<V> <E> <X> <+>   view, edit, delete, expand  
sale trx id   {sale_transaction}  
property id   {calendar}  
Check-In Date/Time {calendar}  
Checkout Date/Time {calendar}  
created      
sale trx type id   {sale_transaction}  
parent cal id {calendar} only on <+>
child cal id {calendar} only if {parent_calendar_id} in NULL
otherwise on <+>
Username {user_id} Display name
Account {account_id} Display name
       
tba Further specification of this section required depending on whether {pm_sale} is designed as a standalone table or incorporated into {sale}{sale_transaction}{sale_product}.
PMM
130210-06
{table} account_connector

Table used to track field values unique to {account_id}

{account_connector}
{account_connector_id}
  unique auto increment
account_id
  from{account}
account_sale_number_last
  cannot be null
integer
initial value zero on create unless set by User
can only be amended by DB Manager directly in DB table.
PMM
130210-07
{table} System > Base Data > Manage Accounts: Sale Number

This option will only be available on <Add record>

Will NOT be available on <edit>

On <view><edit> field value will display but be LOCKED.
If not set when record created then field display will be blank.

 
Insert a new label above <post> with text 'set account sale number'

Insert a new input field {account_sale_number_last}

Display text under input field 'leave blank if not required'
  can be NULL
integer only
cannot be negative
On <post>
  if NULL do not create record in {account_connector}
if not NULL create record in {account_connector} with input value.
If new account wanted to start with Sale Number 1001 then input would be 1000.

Not required for {Calendar Updater] so would be left blank.
PMM
130210-08
{table} sale

{sale} to be amended to accommodate multiple {sale_type}.

{sale}
account_sale_number
  insert after {sale_id}
calclulated by ACRES on creation of new record
value = {account_connector.account_sale_number_last} + 1
set {account_connector.account_sale_number_last} to 'value'

on ACRES update
exisiting field values to be set = {sale_id}
set {account_connector}{account_sale_number_last} to highest value {sale_id}
{sale_type_id}
  insert after {account_sale_number}
from {sale_type}

on ACRES update
all exisiting field values to be set where
{sale_type}{name}='Sale' ({sale_type_id}='1')
{ttd_ref_manual}
  change to {sale_manual_ref}

make sure change is reflected ACRES wide.
{user_id}
  insert after {account_id}
from {user}
will supercede {creator}
GUI and documentation to show {name} from {user}

set {user_id} for all records where
IF {user}{name} = {sale}{creator}
THEN set {user_id}
ELSE IF {creator} in NULL
THEN set {user_id} = '1'

There should be no latent records.
130211-01 <function> Sales > Sale

[Sale] GUI currently displays date/time fields from {sale_transaction} (formerly {book_transaction})

Amend GUI to also display date/time fields from {calendar}.

Display Check-In Date/Time from {calendar}
Display Checkout Date/Time form {calendar}
Display System Code from {property} using {propery_id} connection in {calendar}.

GUI and documentation for all new records to display from {calendar}
 
In connection with the {sale} structure change in 130210-08 the label in custom filter needs to change from
ttd_ref_manual
to
manual_ref
130211-02 Accounting > Audit > Sales
Apply rule from 130211-01

Exisitng report valid for {sale_type_id} = '1' ONLY

Insert column far right 'Type' and display {sale_type_id} for visual check.

For PM Reporting a new style for {sale_type_id} = '2' is required to show breakdown of all tax types.

Will also need ability to report by HoS date as set by PMC. This could be sale date, check-in date, checkout date, balance received date.
Report for {sale_type_id} = '2' will be specified after changes to table structures.
130211-03 Accounting > Bank Transaction > Reports > Sales > Margins
Exisitng report valid for {sale_type_id} = '1' ONLY

Not required for {sale_type_id} = '2'
PMM
130212-00
System > Base Data > Manage Users
Move User Group label and checkboxes to right hand side of User Name ID input box.

If {user_group_id} = '7' (Homeowner) then display at bottom of list.
Use radio control rather than checkbox as cannot be combined with any other selection.
When selected, any checkbox selected will be cleared.

By default 'account' drop down box disabled until one or more User Groups selected.

The following process is dependant of User staus. This will be the policy for a PMC creating their own {account_id} entries and profiles for their Homeowners.

When User Group checkbox selected, only {account_id} created by PMC {account_id} available for selection.

When {user_group_id} = '7'

For {user_group_id} '7'
{account_id} = PMC {account_id} will be fixed.

A display of Properties from {pm_managed} to be displayed in the lower section of the GUI.
Only Properties with {pm_managed}{to_date} = NULL to be displayed.
Only Properties with {pm_managed}{user_id} = NULL to be displayed.

Each Property available for selection to display:
<checkbox> {system_code} and first line of address

Multiple homes can be selected but an individual HoS per property will be produced on reporting.
Where a Property has changed ownership, the exisiting {pm_managed} would need to have a {to_date} inserted and a new {pm_managed} record created.
The new record would then be available for seelction in this module.
Existing system remains unchanged for Calendar Updater.
Homeowners that have been allocated a {user_id} will not have aceess to Calendar Updater.
Homeowner will have to create a {Sale] that will update calendar.
Homeowner ACRES profile to be defined separately.
130801-00 <function> System > Base Data > Manage Accounts - add record ACRES only
ACRES LEVEL ACCESS only.
A new record can ONLY be created in {ACRES}.

[Manage Accounts] should not be available to ANY {database} other than {ACRES}

When a new record is created ACRES must AUTOMATICALLY create a TOP LEVEL Managed User account for {database} using {database} as default names:

User Name ID: {database}
Password: {database}
Memorable Word: {database}
account: {database}
User Group: Super Admin but ONLY within {database}, NOT ACRES wide.

Super Admin can then login and edit access codes.

Super Admin can Defaults can then [Manage Users] for {databse}.
130801-01 {table} managed_user
The {managed_user} table will be a connector table to control and track Manage Users.
Create {managed_user}
manage_users_id
  primary key - unique id per record
user_id
  from {user_id}
managed_user_from_date
  date / time = 00:00:00
managed_user_to_date
  date / time = 00:00:00
managed_user_updated_date
  set to create date when record created
set to system date when record edited
managed_user_updater_id
  user_id from ACRES loggin session
managed_user_deleted
  0 or 1
130801-02 [menu] System > Base Data > Manage User (update 01Aug2013)
This section will facilitate ACRES billing on a PER USER / PER ACTIVE USER basis.

This code will allow for period users whether seasonal workforce or breaks in periods of employment.

Create a label in the Managed User GUI
  Managed User Dates
Insert the [+] icon on the right of the label
   
When the [+] icon is selected a new record row will be available:

managed_user_from_date field will be available for input
  usual ACRES date format
Can be less tahn current date
Can be edited subject to access level
Cannot be NULL - exisiting records will have to be edited manually or pre populated with 01/01/2000
LOCKED once current date is greater than managed_user_from_date
managed_user_to_date field will be available for input
  usual ACRES date format
can be NULL
must be greater than managed_user_from_date
[X] icon only available on records where managed_user_from_date is less than current date
  [X] option not available where managed_user_from_date is less than current date
in this case a managed_user_to_date will need to be inserted
ON POST
  if managed_user_from_date is NULL warn user to insert date or cancel
on cancel record will not be updated/created
  if managed_user_to_date is less than managed_user_from_date warn user to edit date/s or cancel
on cancel record will not be updated/created
ON USE
  where user_id is valid
AND
managed_user_to_date is less than current date (current date must be server not local to avoid override)
Display message box 'ACRES access has expired. Contact your ACRES administrator [OK]
  where user_id is valid
AND
managed_user_from_date is greater than current date (current date must be server not local to avoid override)
Display message box 'ACRES access commences 'date'. Wait or contact your ACRES administrator [OK]
130211- Sales > Sale: Add record - unfinished

Step A GUI change:

    Move <click to open date selector> next to Sale Date label.
    Under Sale Date input box insert label 'Sale Type'.
    Under label 'Sale Type' insert a drop down box. Use {sale_type} to control.
      Will save {sale_type_id} in {sale}
      For HO input field will be locked and set to {sale_type_id} '2'.
    Move TTD Ref Manual label and input box down to under Sale Type dropdown box
      Relabel 'Sale Manual Ref'
    Move Client Ref label and input box below Sale ref manual input box.
    Move <Add new contact> to current Client Ref label place.
    Move <Contact Search> to current Client Ref input box place.
    Move Contact Search input boxes in line and under current Client Ref input box.
    Move Contact Search box labels in line and under current TTD Ref Manual input box.
    Move <search> so left aligns with Contact Search input boxes.
     
    Change also reflects required TAB order.
    Search results can still be displayed in lower section.
   
  The exisitng [Sale] process is unchanged where {sale_type_name}='Sale' but code with {sale_type_id} rather than name.
    This covers a buy in where PMC is buying property in from another source other than {managed_property}.
If Product attached where {property_id} exists in {managed_property} then {sale_type_id} automatically to be changed to 'PM Sale'.
  for PM Sale type this means it is the HO booking. Restrict access only with not all inputs available.
    Step A: do not display Contact Search options.
allow search but only show {contact} where HO has booked {contact} previously.
    Step B: skip
    Step C: allow search but only show {customer} where HO has booked {customer} previously.
     
     
  PM Sale by PMC sale and product type PM Sale
PMC collecting funds
product will appear on HoS
  PM Sale by HO
PMC not collecting funds
product will appear on HoS
  where PMC is requested to collect funds for entire booking, treat as PMC sale
product to appear on HoS
  where PMC only collecting for partial booking such as bbq or pool heat then sales will be separated where funds collectable by PMC will appear in Sale.
Reporting on {sale_type_1} will appear on PMC reports.
PMC Sale to be linked to Pm Sale by {sale_id}
PMM
1302
{table} pm_sale_connector - unfinished

Look to incorporate into {sale}{sale_product}{sale_transaction}
use {sale_type} for Sale/PM Sale
Owner will generate zero sale with {sale_type} PM Sale.
{sale_id} used throughout and will be consistently unique ACRES wide.

Documentation will show ACRES {sale_id} and User Sale ID (Man ref). Can set starting number on system setup.

***

{pm_sale} term is used for new table but new table may not be required if the PM Sale process can be incorporated into existing tables which is prefered.

{pm_sale} to store values and taxes for Property Management Company rentals Homeowner rentals and will include optional extras made by PMC and HO.

HoS Date is paramount in this module.
HoS Date controls when record will appear on HoS
AND
when taxes are declared

Where a charge is required by PMC that does NOT get reflected on the HoS, the PM portion will be reflected in {pm_sale} with additional revenue reflected {sale}.
Example:
HO creates record in {pm_sale}
Guest contacts PMC for bbq rental which PMC has to account for but does not appear on HoS.
PMC creates record in {sale} for bbq and LINKS to {pm_sale} record so when PMM reports are done for arrivals, the bbq requirement will show even though not in {pm_sale} record.
Example:
HO creates record in {pm_sale}
Guest contacts PMC for late checkout with fee payable which PMC has to account for but does not appear on HoS.
PMC amends checkout time in {pm_sale}
PMC creates record in {sale} for late checkout fee and LINKS to {pm_sale} record. Checkout time was changed in {pm_sale} so when PMM reports are done, the late checkout shows for cleaning crew.

A limited version of this module may be used to allow owners to create their own bookings which will be an extension to the calendar update functionality.

A review of {sale} {book_transaction} {calendar} {optional_extra} may be adapted to facilitate {pm_sale}.

{pm_sale}
pm_sale_id
   
Sale Sale options
    Sale = PM Sale
      Sale side open.
Sales Purchase side LOCKED and flagged PM Sale. Field values to be tied to same value as Sale side as these values to be used for PM reporting and tax declarations.
NOT included on Sale reporting.
INCLUDED on PM reporting.
Build report for tax declarations (Total tax LESS PM Sales tax)
eg: When HO makes a booking, even though zero value.
When HO makes a sale and revenue to be collected by PMC.
    Sale = Sale; Slaes Puchase = PM Sale (subject to User Profile settings)
    Sale side open
Sales Purchase side open
INCLUDED on Sale reporting
INCLUDED on PM reporting
eg: Selling for a different rate than being paid to HO.
Where PMC taking a fee for processing a booking it could be shown this way or use Sale=Pm Sale/Sales Purchase=Pm Sale and charge a booking fee or commission on HoS.
Build report for tax declarations (Total tax LESS Sales Purchase tax)
    Sale = Sale; Sales Purchase = Sale
      Sale side open
Sales Purchase side open
INCLUDED on Sale reporting
NOT included on PM reporting
eg: Buy in.
Build report for tax declarations (Total tax LESS Sales Purchase tax)
       
       
tab16
to
tab37
<function> Accounting > Audit > Bank Accounts - report by period
The function of this routine is to be able to run various reports by Bank ID for reconciliation and audit. The report will be a culmination of;-
Deposit Sale Receipts
Transfers
Purchase Ledger payments
Sales Purchases payments

The first start and end date selection will be for the bank transaction period.
The second start and end date selection will be for the clear date period. This will enable reports on transactions in one reporting period that cleared post reporting period such as checks that cleared post year end.

In this example the reporting period is 01 Jan 2009 to 31 Dec 2009 and the clear date period is blank. The object of the report is to show all transactions in 2009 for Bank ID 01.

1) Offer a drop down for Bank ID selection (use bank account names).

2) First Date Range Selection (transaction period)
Transaction Start Date: 01 Jan 2009 (greater than or equal to this date)
Transaction End Date: 31 Dec 2009 (less than or equal to this date)

3) Second Date Range Selection (cleared period)
Cleared Start Date: leave blank
Cleared End Date: leave blank

4) Offer a drop down for Reporting Code. Can be left blank.

5) show opening/closing balances checkbox.

Report Order by Transaction Date then Transaction Reference then Transaction ID:
Date | Description | Type | Ref | Debit | Credit | Cleared | Rp | BID | Notes

Date = Transaction Date
Description = if a deposit sale receipt.
Description = to/from Bank Account Name if a transfer.
Description = Contact Name if a purchase ledger or sales purchase payment.
Description = Sales Receipt Type ID if a sales receipt.
Type = abbreviated bank transaction type id from acres.
Type = dd if a direct debit.
Type = chk if a check issued.
Type = crd if a credit direct such as credit cards and wire transfers.
Type = cr if a credit such as a check received.
Type = tsf for transfers.
Ref = transaction number for direct debits, checks issued, deposit sale receipts.
Ref = blank for transfers.
Debit = the debit amount for any payments from the account and transfers out.
Credit = the credit amount for receipts to the account and transfers in.
Cleared = Cleared Date
Rp = Reporting Code
BID = Bank Transaction ID, Transfer ID or Payment ID.
Notes = Expense ID if an Expense Ledger Payment (Payment Ledger). As space is limited when there are too many ID's to display just show Expense ID=n where n is the number of Expense ID's that were paid.
Notes = transfer if a transfer.
Notes = Sale ID's if Sale Purchase payment. As space is limited when there are too many ID's to display just show Sale ID=n where n is the number of Sale ID's.
Notes = Sale ID's if a Sale Receipt. As space is limited when there are too many ID's to display just show Sale ID=n where n is the number of Sale ID's.

At the end of the report show summary totals for all the Reporting Codes listed in the reporting period.

If the 'show opening/closing balances checkbox' was checked then the report needs to start with an opening balance and finish with a closing balance.
The opening balance will need to be calculated by acres. In Accounts > Bank Accounts where the name of the accounts are set there needs to be an added function where the Account Balance and Account Balance Date can be set. The Account Balance will be the true balance at close of business on the Account Balance Date and be used for account balance calcualtions prior and post the Account Balance Date.

The first line of the report will show as:-
Date = blank | b/f from 'b/f date' where b/f date is one day prior to Transaction Start Date | Type = 'bal' | Ref = blank | Amount = calculated opening balance | Cleared = blank | Rp = Blank | BID = Blank | Notes = opening balance

The last line of the report will show as:-
Date = blank | c/f from 'c/f date' where c/f date is one day after the Transaction Endt Date | Type = 'bal' | Ref = blank | Amount = calculated closing balance | Cleared = blank | Rp = Blank | BID = Blank | Notes = closing balance

By using the Cleared Start Date and Cleared End Date reports can be run to calculate transactions that were made in one period but cleared in another period such as transactions that cleared post year end.

The same report function will be used to cover tab16 to tab 37.
tab40
tab41
tba42
<function> Accounting > Bank Transactions > Reports > Expense Reports by Date, Category, Creditor

For the existing reports Expenses by Date, Category and Creditor add an extra column on the report inbetween Date Paid and Ref Paid.

The column heading is Bank and the value bank_account_id from the bank_account table (1, 2, 3, 4 etc).

tab43
tab44
<function> Accounting > Bank Transactions > Reports > Expense Reports Outstanding by Date

For the existing reports Expenses by Date, Category and Creditor add another Date selector on the right of Report Start Date:
Report Outstanding Date

In this example acres will calculate any expenses with a due out amount NOT EQUAL TO ZERO as at the Report End Date.

Report Start Date: 01 Jan 2009
Report End Date: 31 Dec 2009
Report Outstanding Date: 31 Dec 2009

Acres will calculate any expenses within and including the Report Start and End Date (tax dates) where:
Due Out is NOT EQUAL TO ZERO
Date Paid is GREATER THAN Report Outstanding Date

This will duplicate the MDB function but become more sophisticated for the next audit process.

121128-03 <function> Operations > Setup > Client Rate Code - client connector
Create Client_Rate_Code_Connector table

Fields will be:
Client_Rate_Code_Connector_ID
Client_Rate_Code_ID
Contact_ID (amended 03Dec2012)
Client_Rate_Code_Connector_Date_From (default = today) or Date_Start
Client_Rate_Code_Connector_Date_To (default = null) or Date_End
Client_Rate_Code_Connector_Date_Created (system date not editable)
Account_ID (added 30Nov2012)

On the GUI add a column headed 'used' between client_rate_code_id and client_rate_code_name. May use a link icon if there is a suitable one.

'used' is not a stored field value. It will be calculated on the fly. When a user selects this menu item ACRES will calculate the value from the Client_Rate_Code_Connector table. The value will be the count of how many record rows include the Client_Rate_Code_ID.

Display as [value]
121128-04 <function> Operations > Setup > Client Rate Code - inactive
Amend Client_Rate_Code table

Add a new field 'Inactive'.

Client_Rate_Code_Inactive (default value = false)

All exisiting table entries to be set at false.

Add a new 'inactive' checkbox under 'Whole words only' with the text 'show inactive records'.

The default values will be unchecked so only active records are displayed when a filter is applied.
acres ©
121128-05 <function> Operations > Setup > Client Rate Code - view
Selecting the 'view' icon will display the Client Rate Code information.

Under the sort-order label add a new label 'status' which is a user friendly name for the Client_Rate_Code_ID inactive field.

Next to the new label display the field value:
false = 'active
true = 'inactive'

The Add/Edit/Delete options should be removed as this functionality will be controlled by User Level Security (USL).
acres ©
Below the Client Rate Code information will be the display of any Clients that have been connected to the Client_Rate_Code_ID.

Display columns will be:
View Icon (may not be necessary)
Edit Icon (for the Client_ID connection, not the Client_Rate_Code record). See 121128-07
Client_Rate_Code_Connector_ID
Client Name (from Contact_ID) (amended 03Dec2012)
Date_From
Date_To
Status (inactive value)
Date_Created

The edit function will depend on User Security Level (USL).
121128-06 <function> Operations > Setup > Client Rate Code - add/edit

In both Add Record and Edit modes the new Client Connector function will be available.

The Client must already exist in the ACRES User database from Contact_ID (amended 03Dec2012).
The Client must be flagged as an Agent or Tour Operator.

acres ©
Add a new label box under sort order labelled 'Client Connector'.

Under the input box for sort-order show the '+' icon.

Next to the '+' icon add an input box for the Client name.

The control functionality is to be the same as the text sensitive search box used when connecting a Property to a Client. As the Client name is input the results will show for selection.
acres ©
Once a Client name is selected, the user will click on the '+' icon to add a connection the Client_Rate_Code_ID.

ACRES must validate if the Client_Rate_Code_ID and Client_ID already exists in the connection table. If the combination already exists the User should be advised with a Popup Warning Message (PWM) advising that the connections already exists.

If the combination is unique then the following fields should be offered for input below the Client input field and to the right of the POST button:

Date_From (default = today) put calendar date selector underneath
Date_To (default = null) put calendar date selector underneath

Select POST to create the connection.

ACRES should again validate that the connection combination does not already exist for the ACRES Account as another User may have created the combination. If the combination does exist then display a PWM.

When a POST is successful display the connectionms as defined in 121128-05.
121128-07 Sales > Make Sale - Client Rate Codes at product level
(original version: 091123-01)

Moved the 'Board' display to between the Property Name and Start Date displays of the Product.

Display the abbreviated board code under the Board display. Accommodation Only = AO.

Expand vertical blue divider line up to the Product display information.

Move the Purchase Supplier selection to the right of the divider line.

Move the Purchase Contact below the Purchase Supplier.

Move the Purchase Ref below the Purchase Contact.

On the left of the divider line level with Purchase Supplier Name display the Client Name. This is not a selction box, just a display.

Display the Client Employee (if exists) under the Client Name on the same level as the Purchase Contact Name. This is not a selection box, just a display.

Display the Client Reference (if exists) below the Client Employee on the same level as the Purchase Ref.

Keep the Sale Product Amot and Purchase Amt on the same level.

Display the Sale Purchase Tax and Sale Purchase Total on the right of the diving line on the same level as the Sale Product Tax and Sale Product Total

Rename Sale Profit to 'Product Margin' and display on the right side of the divider under Sale Purchase Tax.
acres ©
Under Sale Product Tax display the label 'Client Rate Code'.

Under the Client Rate Code label show the '+' icon.

Next to the '+' icon add an input box for the Rate Code Name. This will be a drop down selection. ONLY Rate Code Names for the Client_ID from the Rate_Code_Connector table will be displayed for selection.

As only ONE Rate Code is permitted per PRODUCT the '+' function should be disabled if a Rate Code already exists for a Product. For example during an edit process where one was already defined at the time of the booking.

Where a Client Rate Code already exists for a Product, display ONLY the 'delete' icon to the left of the Rate Code Name

The Client Rate Code Name will print on the Booking Advice. This will be dealt with separately after Client Request Codes have been specified.
121128-08 <function> Operations > Setup > Client Request Code
Change the name from 'Operator Request Code' to 'Client Request Code'.

Change database table and field names to reflect the change.
acres ©
121128-09 <function> Operations > Setup > Client Request Code - inactive
We cannot delete Client Request Codes as older bookings may refer to the codes so deleting a code may create a latent record.

Amend Client_Request_Code table

Add a new fields:
Client_Request_Code_Date_From (default = today) or Date_Start
Client_Request_Code_Date_To (default = null) or Date_End
Account_ID (added 30Nov2012)

Client_Request_Code_Date_From
Populate existing records with 'create date'. If no 'create date' use 23 Nov 2009.


Add a new 'inactive' checkbox under 'Whole words only' with the text 'show inactive records'.

The default values will be records with a null end date so only active records are displayed when a filter is applied.
acres ©
121128-10 <function> Sales > Make Sale - Client Request Codes at product level
(original version: 091123-02)

Client requests are not so unique so they are not limted to which Client may use them.

Change STEP - F label to 'Notes and Requests'

The blue banners only need to go across half the page or just to the right of the text boxes as the right hand side of the screen will be used now for Client Request Codes.

Move the Header Note dropdown box to inside the Header banner.

Move the Header Note Insert button to inside the blue header banner on the right side of the drop down box.

Change the left arrow Header insert button to a down arrow insert button.

Move the Product information from inside the Product banner to a new row between the Product Banner and the Product Text Box.

Move the Product Note dropdown box to inside the Product banner.

Move the Product Note Insert button to inside the Product banner on the right side of the drop down box.

Change the left arrow Product insert button to a down arrow insert button.

Move the Footer Note dropdown box to inside the Footer banner.

Move the Footer Note Insert button to inside the Footer banner on the right side of the drop down box.

Change the left arrow Footer insert button to a down arrow insert button.
acres ©
In the space now avaiable on the right hand side of the screen add a banner 'Client Requests'

Under the banner show the '+' icon and next to the icon show a Client Request dropdown box.

Users will select a Client Request from the dropdown box and select the '+' icon to add the request to the booking. Only active records will display. (NULL end date).

ACRES will need to validate that a Client_Request_Code_ID has not already been selected for the booking. If the Client_Request_Code_ID already exists for the booking the User should be advised with a Popup Warning Message (PWM) advising that the 'Request Name' is already included.

Selected requests will display below the Client Request dropdown box.

'delete' icon | Client Request Name

Users will select the 'delete' icon to remove a request from a booking.

Client Requests should will print on the Booking Advice above Footer Notes.

Client Request Names should be srung together and separated by ': ' (semi-colon space).

A text character length will need to be set so that Client Request Names print correctly on a Booking Advice making sure text doesn't overshoot borders and also to make sure a Client Request Name does not display on two separate lines.

Example:
Client Request Name 1; Client Request Name; Client Request Name 2 ; Client Request Name 3 ;
Client Request Name 4; Client Request Name 5
100209-00 <function> Operations > Contacts - employees
Employee contacts should only be displayed in the results. The edit and delete option should be disabled. The employer name should be displayed even though it may not match the search criteria.

If a user selects the disabled option then acres should display a message window advising the user to edit the details from the contact_id for the employer.

The contact type column should display 'Employee'.

This resolves a problem of deleting what appears to be duplicated names in the contact db.
acres ©
100210-00 <function> Sales > Make Sale - removing product
If a product is deleted from sale then any optional extras associated with that product should also be deleted.

If there is another product of the same category type (ie. accommodation) then acres should ask the user if they wish to switch the optional extras assocaiated with the product being deleted to one of the other products on the sale.

This will benefit users in situation where they are changing accommodation from one property id to another property id. instead of having to reload optional extras and pricing such as pool heat, discounts, they can just transfer them to another product.

Acres should not let a product be deleted that has Sale Purchase payments made against it. Users will have to zero the values so the items shows as overpaid and accounts can claim the credit amount back from the Sale Purchase Contact ID.

Where a product has a zero value on the sale side to the client, acres should have a checkbox that when selected, it will not display a line for the item on the booking advice to the client.
100817-00 <function> Deposit Sale Receipts: by Sale Receipt ID
Add the function to deposit sale receipts using the (+) function for sale receipt id's similar to the same function used for sale id's.
101012-02 <function> Contact  

Add email address as a search field criteria from the drop down menu

 
120224-00 <function> Sales > Property Search/Book - default display
When Property Search/Book isselected the display shows all records from trx_is 1 including deleted rows.

Add a check box under the exisitng '[ ] Whole words only' with the text '[ ] Shows deleted records'.

Change the code so that the default display does not show deleted records. When the 'Show deleted records' box is selected and the 'Apply Filter' button is pressed then the blank records will display depending on the customer filter settings.
acres ©
120224-01 <function> Sales > Make Sale > Documentation - booking advice
Change the display order. Move 'Property ID' and result to display underneath 'Duration'.
Move 'Type' 'Maximum' 'Board Basis' and results each down one row.
acres ©
120224-02 <function> Accounting > Bank Transactions > Deposit Sale Receipts - receipt search by Sale Receipt ID
Functionality required is to ADD (+) Sales Receipt ID's together for a single deposit in much the same way that Sale ID's can be added together.

If two Clients each pay by check and each check covers multiple bookings and they are paid into the bank on ONE deposit banking slip then they will appear as a SINGLE credit on the bank statements.
acres ©
120224-03 <function> Sales > Make Sale > Documentation - booking advice card receipt display

When a Sale Receipt is by card, the follwed fields are offered for input.

The Issue Number and input needs to be under Ref Number and the Start and End Date drop down one row.
The order of AVS Code and input need to be swapped with CVV Code and input.

The TAB order would shpould be:
Ref Number; Issue Number; Start Date; Exp Date; Security Code; Auth Code; CVV Code; AVS Code

acres ©
If the Ref Number is completed fully numeric, abbreviated or with **** then only the last four INTEGERS should be displayed on the Booking Advice preceeded by '****'.
Security Code, Start Date, Exp Date, Issue Number DO NOT get displayed.
acres ©
Currently this example displays as above but the new style will as follows:

Feb 24, 2012: US$1614.98 received on MC/Visa **** 9747 Auth Code: 044883 CVV: M AVS: N CR1080 @SR450 BID392
121002-00 <function> Sales > Make Sale > Documentation - booking advice for product = hotel

Where a product is included in a booking and the

prop_type_id = 5 (Hotel)

then the Accommodation details section should display the Property Name in place of the vacation home sub division name and the address should show (address title, address line 1) as per invoice style with access codes).

The hotel address should then display as normal. See Sale ID: 1569 for example.

091216-00 <function> Accounting > Bank Transactions > Payment Ledger - expense breakdown
Example payment_id 107

We can show the expense id's that have been paid similar to how we show payment receipt amounts and sale_id. This can replace the description column. Users wanting to see the description can always look up the id in expense ledger.
acres ©
091216-01 <function> Accounting > Expense Ledger - contact_id security
Once an expense ledger id has been paid, acres needs to lock the expense_id contact from being changed.

For example, if the expense was for Progress Energy and was paid, you don't want any users to be able to change the contact from Progress Energy to say Brighthouse as this would not only affect the payment ledger but also creditor reporting.
091222-00 <function> Sales > Make Sale > Step: Show Sales Document
Example: Sale_ID 1713

When a product level optional extra is added to a sale, the breakdown needs to be displayed below the product display that the option extra has been added to. So Optional extra 1 would be below Product 1, Optional extra 2 would be below Product 2.

All product and product level optional extras display above the pricing breakdown.
091119-09 [function] Accounting > Bank Transactions - Payments  

20Jul2013 check if the functionality has been done even though not as specified.

For this module we are dealing with payments to Expense Ledger Suppliers.

Selecting 'Bank Transactions' in the 'Accounting' menu will display the options:

Receipts - Transfers - Payments

Selecting 'Payments' will generate the following screen:

Supplier - Expense Ledger / Supplier - Sales Purchase

This can be shown as a drop down menu or radio controls.

Select: Suppliers - Expense Ledger

Inputs:
1) Payment date: [input date]
2) Bank Account: [select from bank_account_id]
3) Payment to: [see search below]
4) Payment Type [bank_transaction_type_id]
5) Transaction Number: [input or auto filled]
6) Clear date: [input date]

Seach options:
Company [Company name field from contact_id]
Last Name [lastname field from contact_id]
Expense ID [id from expense table]
Reference [value from expense table]
Manual Ref [value from expense table]


Notes
1) Standard acres date input. Can also offer calendar as per Make Sale for accommodation. Current date by default.
4) Will typically be a direct debit or check.
5) Will be generated by acres if no user input.
6) Standard acres date input. Can also offer calendar as per Make Sale for accommodation. Null by default

 
When the user input some search criteria, all contacts that have expense ledger entires with outstanding amounts NOT EQUAL to zero will be displayed that match the search criteria. When the user selects the contact, all expense ledger entries with amounts NOT EQUAL to zero for that contact will be displayed. Columns will include the total value of the expense, any amounts alreay paid and the amount outstanding which may have a +ve or -ve value. Very much along the lines of Sales Receipts.

User then inserts the amounts they are paying. acres will automatically calculate the amount being paid.

When the user has completed the input fields and posts the payment, acres will ask the user to verify with a pop up like the property sales dates confirmation. If the user has not inserted a Transaction Number (unlikely in the event of a direct debit) then acres will automatically insert a value of year+month+day+number.

So for November 19th, 2009 the value would be: 2009111901

If the value was already in use for any ONE particular direct debit + bank_id paring then acres will simply add '1' to the value until there is a unique direct debit reference. This gives 99 possible direct debit entries on any one day. The value must be unique to the transaction type and bank)id paring, not just the bank_id as a credit on the same day may also be given a reference 2009111901 but the transaction type would be cr or crd.

Once the user verifies the payment, acres must show the debit transaction value in the bank_id. For expense ledger payments, the reporting code will be the id for 'expense ledger'.
 
091119-08 [function] Accounting > Bank Transactions - Transfers  
20Jul2013 check if the functionality has been done even though not as specified.

Selecting 'Bank Transactions' in the 'Accounting' menu will display the options:

Receipts - Transfers - Payments

Selecting 'Transfers' will generate the following screen:

1) Transfer date: [input date]
2) Transfer from: [select from bank_account_id]
3) Transfer to: [select from bank_account_id]
4) Transfer amount: [input amount]
5) Clear date: [input date]

Notes
1) Standard acres date input. Can also offer calendar as per Make Sale for accommodation. Current date by default.
2/3) If users duplicated bank_account_id acres will notify user and not complete transfer process.
4) If users do not type in a decimal point then acres to add [.00] to the end of the input value. This will be verified to the user before posting.
5) Standard acres date input. Can also offer calendar as per Make Sale for accommodation. Null by default
 
When the user has completed the input fields and posts the transfer, acres must first verify that the bank_account_id's are unique. If they are, acres will ask the user to verify with a pop up like the property sales dates confirmation.

Once the user verifies the transfer, acres must show the debit transaction for (2) and a credit transaction for (3). In both cases, the reporting code will be the id for transfer, the details will be 'transfer' and the notes will show the label for the bank account the money was tranfered to/from. The is (2) will show (3) and (3) will show (2).

Once the entry is completed, only the entry just made should be displayed on screen, not all bank transactions across all bank accounts.
 
091119-07 [function] Accounting > Bank Transactions - Sale Receipts  
20Jul2013 check if the functionality has been done even though not as specified.

In it's current form, 'Bank Transactions' serves only the part for depositing Sales Receipts into a chosen bank account. This module needs to be expanded to handle these functions:
Sale Receipts
Bank Transfers (between users bank accounting defined in acres)
Payments - both Expense Ledger and Sales Purchase

We will handle Sale Receipts in this section and other items under their own references.
 
When 'Bank Transactions' is selected, the first screen displayed should offer the following:

Receipts - Transfers - Payments

This can either be a drop down or radio control.

When 'Receipts' is selected the current Add Record functionality of 'Bank Transactions' can be performed. Once the entry is completed, only the entry just made should be displayed on screen, not all bank transactions across all bank accounts.
 
130423-00 <function> Quick Clicks to frequently used menu options
As the menu item expand a lot of time for users will be spent navigating to the require function. Visual icons will be created as shown in a new 'quick clicks' (QL) section of the header.

Eventually, ACRES should automate the most frequently used funtions for any given user and show these in the QL display area.

Prior instructions have been documented to extend the left menu to the top of the page display so the 'header' will just cover the 'body' section of the gui and not the whole page. The link icons will be 35px by 35px and display a total of 2 by 2 or 2 by 3.
Example links. They have been done with a selection of background colors to stand out when displayed in ACRES.
Contacts: acres © acres ©
Expense Ledger   acres ©
Payment Ledger   acres ©
Property   acres ©
Sale   acres ©
Sales Receipt   acres ©
An example of a QL display 2 x 3 would be:
  acres ©acres ©acres ©
  acres ©acres ©acres ©
tab07
20Jan13
<function> Accounting > Audit > Sales - by period

section completed. Below for future dev.

RTD = Received To Date
If there could be an option to [+] expand RTD to see any breakdown of funds received (like gets printed on documentation with Sales Receipt ID and Bank Transaction ID) then this would be useful but not essential at this stage.

PMM
130207-04
{table} Operations > Setup > PM HoS Key ACRES only
ACRES LEVEL ACCESS only for Add/Edit. ALL other {database} VIEW only.
still to be tested on live system
remove add record function unless db = {ACRES}
By default INACTIVE records will not be displayed. If a user creates an entry where the {Key} is an exact match then the status can just be set to ACTIVE and a screen warning that '{key} already exists'.

When user selects menu item no records will be displayed. Items available will be:
<Custom Filter>, Checkbox with label 'Show inactive records', <Apply Filter> <reset filter> <Add record>.

Where <Apply Filter> is selected without any filter criteria, records will be displayed ASCENDING by {Sort Order}.

Edit Icon will be displayed. When selected, ACRES will warn user that changes will affect records in the PMM.
OK to continue / Cancel.

Users will NOT be allowed to delete records. They will need to change the Status.

When creating a new record, on save the new record is to appear on the top of the list so records to be displayed DESCENDING by id.
PMM
130207-08
{table} markup ACRES only
ACRES LEVEL ACCESS only for Add/Edit. ALL other {database} VIEW only.
31Jul2013: Test section to make sure only add/edit at ACRES level.
Still need to verify logic for 'X' Exact Value calculations.
130801-03 {table} sale: sale_ref_manual

In order for ACRES users to insert their own sales references, if they wish, when first using the system there is already a field for sale_ref_manual in {sale}.

There is also a field ttd_ref_manual which has the same function.

All the sale_ref_manual fields are NULL

Delete current sale_ref_manual

Rename current ttd_ref_manual to new sale_ref_manual

  this will save having to copy all the exisiting values
 
Change all references ACRES wide from ttd_ref_manual to sale_ref_manual
  Accounting > Audit > Sales: all report column headings
  Accounting > Bank Transactions > Payments > Sales Purchase: add record - field label
  Accounting > Bank Transactions > Reports > Sales > Margins: all report column headings
  Sales > Make Sale: custom filter dropdown
  Sales > Sales Receipt: add record gui label
  Sales > Sales Receipt: gui column header label
130917-00 <function> Accounting > Audit > Sales Purchases Payments - payment by period
tab13-15 additional specifcation post 15Sep2013 delivery.
 
For bank_id only include column in report and summary on bank_id that have values in reporting period.

i.e. no need to display 'Directors Loan Account' as these are not used to pay Sales Purchases.
 
Under
Payment Start Date:
Payment End Date:
INSERT
O radio control with label 'summary by month' O radio control 'matching records only'
 
no control: As current report excluding null value bank_id
summary by month: No individual record display
Monthly summary totals ONLY
Reporting period totals
Bank ID listing and totals at end of report with Payment Grand Total
matching records
only:
All Sales Purchases within Sales/Service range to be itemised where there has been a transaction included in the payment start/end date range. This includes where there has been a positive transaction on one bank_id and a negative transaction in another bank_id that may result in an overall zero value. The key is they are not null.
Summary totals by month
Reporting period totals
Bank ID listing and totals at end of report with Payment Grand Total
 
When accounting is done on an accruals basis, the 'summary by month' will enable users to obatain a Sales Purchase creditor figure or Sales Purchase Pre-payment figure for a reporting period.

Using 'matching records only' will enable users to obtain Sales Purchase payment analysis for specific records only rather than every record in a Sales Purchase start/end date range.

When reporting on Sales Purchase transactions post year end only the records paid post year end will be included in the report rather than every record in the reporting period. This saves display multiple 'zero' transactions in the bank_id columns that do not match the Sales Purchase start/end date range.
130918-00 <function> Accounting > Audit > Sales Receipt - by period
tab09-11 additional specifcation post Sep2013 delivery.
For receipt type only include column in report and summary on receipt type that have values in reporting period.

i.e. no need to display a column in no values for the entire reporting period.
 
Under
Receipt Start Date:
Receipt End Date:
INSERT
O radio control with label 'summary by month' O radio control 'matching records only'
 
no control: As current report excluding null value receipt_type_id
summary by month: No individual record display
Monthly summary totals ONLY
Reporting period totals
Receipt Type listing and totals at end of report with Receipt Grand Total
matching records
only:
All Sales Receipts within Sales/Service range to be itemised where there has been a transaction included in the receipt start/end date range. This includes where there has been a positive transaction on one receipt and a negative transaction in another receipt that may result in an overall zero value. The key is they are not null.
Summary totals by month
Reporting period totals
Receipt Type listing and totals at end of report with Receipt Grand Total
 

When accounting is done on an accruals basis, the 'summary by month' will enable users to obatain a Sales Receipt debtor figure or Sales Receipt deposit figure for a reporting period.

Using 'matching records only' will enable users to obtain Sales Receipt analysis for specific records only rather than every record in a Sales/Service start/end date range.

When reporting on Sales/Service transactions post year end only the records with receipts post year end will be included in the report rather than every record in the reporting period. This saves displaying multiple 'zero' transactions in the receipt type columns that do not match the Sales/Service start/end date range.

140303-00 {table} External Website Control
The {external_website_control} table will be used to dynamically control the property information and image display on any specified url/website. All colors stored as HEX colors.

Create table {external_website_control}
{external_website_control_id}
  auto number / unique/ primary key
{external_website_control_name}
  standard url character validation
must be unique to within {account_id}
{external_website_control_from_date}
  cannot be NULL
cannot be inside an exisitng date range for {external_website_control_name}
cannot be > {external_website_control_to_date} within same record
{external_website_control_to_date}
  can be NULL
cannot be < {external_website_control_from_date} within same record
cannot be inside an exisitng date range for {external_website_control_name}
cannot be NULL if NULL value already exists for {external_website_control_name}
{external_website_control_table_wdith}
  set to 570px
lock field so cannot be edited by anyone
{external_website_control_table_align}
  set to center
lock field so cannot be edited by anyone
    The table will be centered to the pages display. Not all text centered.
{external_website_control_table_cell_padding}
  set to 2px
lock field so cannot be edited by anyone
{external_website_control_table_cell_spacing}
  set to 0px
lock field so cannot be edited by anyone
{external_website_control_table_border}
  set to 1px solid
lock field so cannot be edited by anyone
    That is all borders rather than setting individual border-top, border-bottom, border-left, border-right.
{external_website_control_background_color}
  default #FFFFFF
{external_website_control_base_color}
  offer colour picker at some point
default #013B8E
will be used for border color, text color, reverse highlight color
{external_website_control_secondary_color}
  default #99CCFF
{external_website_control_font_family}
  default Verdana, Helvetica, sans-serif
{external_website_control_font_highlight_color}
  default #FFFFFF
{external_website_control_font_size}
  default 11px
accept only integer values between 8 and 20.
{external_website_control_font_weight}
  default normal
normal and bold only
140303-01 {table}External Website Control Connector
The {external_website_control_connector} table will be used to connect {account_id} with {external_website_control}

Create table {external_website_control_connector}
{external_website_control_connector_id}
  auto number / unique/ primary key
{external_website_control_id}
  from {external_website_control_id}
{account_id}
  from {account_id}
140304-00 <function> Dynamic Property Display - text

The function of this module is to provide dynamic property display on a URL based on stored data in ACRES.

Once the module is functional the ability to change table sizes and/or image sizes can be looked at.

The ability to control this functionality will ONLY be available for two sources. ACRES will be able to support Account holder without logging into their account.
1) ACRES
2) Account holder

The control area will be:
System > Base Data > Manage Accounts

When an Account selects [Base Data] the only row visible to them will be 'account_name'.

Below the Account information will be a new External Website Control Window (EWCW).

This will be a Add / Show/Hide Window. On first use only the Add (+) function will be available until the first record is created. Thereafter the Add and the Show/Hide with record number indicator function will display.

 
URL Control Window add record record show (show/hide not available until first record created).
  The record show at this level would just show the 3 columns URL/From Date/To Date
add record would show 3 input fileds:
  URL Name
From Date
To Date
ACRES to show a 'SAVE to continue' message
  Having the [SAVE to continue] function will enable ACRES to validate the URL name and dates before continuing to define the rest of the URL Control criteria.'
The first 4 fields would be shown on the first row with the record show displayed. The rest of the fields in show mode display vertically below.
  selecting record show at this stage would store the record with no further parameters set. ACRES to warn user with message:
  'URL Control record is incomplete'
  {external_website_control_id} {external_website_control_name} {external_website_control_from_date} {external_website_control_to_date} record show
{external_website_control_background-color}
  accept default, input HEX color or offer color picker chart
{external_website_control_table_wdith}
  570
{external_website_control_table_align}
  center
{external_website_control_table_cell_padding}
  2
{external_website_control_table_cell_spacing}
  0
{external_website_control_table_border}
  1
{external_website_control_background-color}
  accept default, input HEX color or offer color picker chart
{external_website_control_base_color}
  accept default, input HEX color or offer color picker chart
{external_website_control_secondary_color}
  accept default, input HEX color or offer color picker chart
{external_website_control_font_family}
  accept default or choose font family
{external_website_control_font_highlight_color}
  accept default, input HEX color or offer color picker chart
{external_website_control_font_size}
  accept default or input value
{external_website_control_font_weight}
  select required font weight
 
On [POST] the display would revert to hidden mode for the display parameters within show mode for the EWCW

Example:
URL Control Window add record record show
ID URL Name From Date To Date      
1 myholidayvillawebsite.com 01-Jan-2013 31-Dec-2013 record hide  
2 myotherholidayvillawebsite.com 01-Jan-2013   record hide  
3 myholidayvillawebsite.com 01-Jan-2014   record hide  
 
Property Description Display

Set first table row background-color to {external_website_control_base-color}
Set first table row text-color to {external_website_control_font_highlight_color}
  Display '{location_id.name}: {property.name}'
  font-weight: bold
text-align: center
Set second table row background-color to {external_website_control_secondary_color}
Set second table row text-color to {external_website_control_base_color}
  Display 'Property ID: {system_code} - {property.bedrooms} Bedrooms, {property.bathrooms} Bathrooms, Sleeps {property.sleeps}'
  font-weight: bold
text-align: center
Third row is split in two columns.

Third row first column
  set first cell to 15px wide
will populate with bullet/icon image
Third row second column
  display '{location_id.name}, {location_type_id.6}, {location_type_id.4}, {location_type_id.3}'
Fourth row reserved for distances from airports/attractions
Fifth row reserved for resort text
Sixth row blank or spacer
Seventh row for property description
  display (property.full_description)
Eighth row onwards for property facilities. Split in 4 columns.
The number of continuing row will depend on the number of property facilities.

Property facilities will be displayed by {prop_facility.sort order}.

Eighth row first column
  set first cell to 15px wide
will populate with bullet/icon image
Eighth row second column
  {prop_facility_name}
first display will be the lowest {prop_facility.sort_order}
where
{property_id.prop_facility_id} exists in {prop_facility_connector}
Eighth row third column
  set first cell to 15px wide
will populate with bullet/icon image
Eighth row fourth column
  {prop_facility_name}
first display will be the lowest {prop_facility.sort_order}
where
{property_id.prop_facility_id} exists in {prop_facility_connector}
Tables rows will continue to be dynamically populated for all {property_id.prop_facility_id}
140304-01 {table} URL Control - extended for images

Extension for {external_website_control} to control image display.

Extend table {external_website_control}

{external_website_control_image_x2_table_wdith}
  set to 570px
lock field so cannot be edited by anyone
{external_website_control_image_x2_table_align}
  set to center
lock field so cannot be edited by anyone
  The table will be centered to the pages display. Not all text centered.
{external_website_control_image_x2_table_background_color}
  default #FFFFFF
lock field so cannot be edited by anyone
OR
link to {external_website_control_background-color}
{external_website_control_image_x2_table_border}
  default none
lock field so cannot be edited by anyone
{external_website_control_image_x2_table_cellpadding}
  default 0
lock field so cannot be edited by anyone
{external_website_control_image_x2_table_cellspacing}
  default 0
lock field so cannot be edited by anyone
{external_website_control_image_x2_text_align}
  default center
lock field so cannot be edited by anyone
{external_website_control_image_table_wdith}
  set to 270px
lock field so cannot be edited by anyone
{external_website_control_image_table_padding}
  default 5px
lock field so cannot be edited by anyone
{external_website_control_image_label_background_color}
  default #013B8E
OR
link to {external_website_control_base_color}
{external_website_control_image_label_padding}
  default 3px
lock field so cannot be edited by anyone
140304-02 <function> Dynamic Property Display - images
The function of this module is to provide dynamic property display on a URL based on stored data in ACRES.

Image path derived from ACRES:
eg Pictures Path: us/fl/lake_county/clermont/high_grove/4h013/

Image control field to be added to bottom of text control fields:
140304-00 <function> Dynamic Property Display - text
 
{external_website_control_image_x2_table_wdith}
  570
{external_website_control_image_x2_table_align}
  center
{external_website_control_image_x2_table_background_color}
  #FFFFFF
{external_website_control_image_x2_table_border}
  none
{external_website_control_image_x2_table_cellpadding}
  0
{external_website_control_image_x2_table_cellspacing}
  0
{external_website_control_image_x2_text_align}
  center
{external_website_control_image_table_wdith}
  270
{external_website_control_image_table_padding}
  5
{external_website_control_image_label_background_color}
  accept default, link to {external_website_control_base_color}, input HEX color or offer color picker chart
{external_website_control_image_label_padding}
  3
 

Property Image Display

The Property Image Display Table is defined by fields starting;
{external_website_control_image_x2......

The table is 1 row by two columns so there are 2 adjcent cells.
The lefthand cell is set to left align.
The righthand cell is set to right align.

Within each cell is a Property Image Ttable defined by fields starting;
{external_website_control_image_table.... (without the x2)Property Image Table is 2 rows by 1 column.

The first row is the Image Label.
The second row holds the image.

Each pair of property images will display in a property display table. If there is an odd number of images then the left hand cell of the image display is to be left blank on the final table.

An image filler will be incorporated at a later date which most likely will be the form of a corporate logo.

Set first Property Image Display Table

  {external_website_control_image_x2_table_wdith}
{external_website_control_image_x2_table_align}
{external_website_control_image_x2_table_background_color}
{external_website_control_image_x2_table_border}
{external_website_control_image_x2_table_cellpadding}
{external_website_control_image_x2_table_cellspacing}
{external_website_control_image_x2_text_align}
Set first Property Image Table located in left cell of Property Image Display Table
  {external_website_control_image_table_wdith}
{external_website_control_image_table_padding}
  First Property Image Label
    {external_website_control_image_label_background_color}
{external_website_control_image_label_padding}
text = image label text from ACRES
    First Property Image

    image = image with lowest sort order in ACRES
Set second Property Image Table located in right cell of Property Image Display Table
  {external_website_control_image_table_wdith}
{external_website_control_image_table_padding}
    Second Property Image Label
      {external_website_control_image_label_background_color}
{external_website_control_image_label_padding}
text = image label text from ACRES
    Second Property Image
      image = image with second lowest sort order in ACRES
 
Continue showing Property Image Display tables for all images with a spacer of around 5px between each table.
They should be separate tables, not one big table. Thiswill speed uo the display of images on a webpage as each table will load and display rather than loading a large file before displaying to the end user.
140304-03 <function> Properties - select Floor Plan
The function of this module is link a Property to one or more floor plans if they exist.

The Property Image path derived from ACRES for specific High Grove properety is:
eg Pictures Path: us/fl/lake_county/clermont/high_grove/4h013/

All Floor Plan Images exists at the route for the resort so the floor plan images for High Grove will be found at:
Pictures Path: us/fl/lake_county/clermont/high_grove/

All Floor Plan images begin with 'fp'
 
Under the current image display area 'F' in Properties, below the Property Images display all images for the resort location that begin with 'fp'.

About each floor plan image display the text
  'Use this floor plan image in URL Control' with a checkbox next to the text
 
Each image checked will be used as there may be more than one floor plan. For example the first floor plan and the second floor plan.

There will be no label defined as ACRES will just display a generic label for the resort.
  High Grove Floor Plan
140416-00 <function> Documentation > Booking Advice - Internet Codes
For Booking Advice style 2 the Internet Name and Wi-Fi Password need to display on the Booking Advice.
140709-00 <function> ACRES > Help & Hints bubble ACRES only
For designated pages, sections and fields provide a 'Help & Hints Bubble' (HHB) (? inside bubble) that users can mouse over to display the contents and click on to open 'Help & Hints window' (HHW).

For a quick view or user refresh the mouseover can be used to jog memory. When the mouse pointer moves away from the HHB the HHW will no longer be displayed.

The click option to open a HHW will allow the user to drag the HHW to an area of their gui whilst working so as to provide a visual aid. The user will have to close the HHW by clicking on the HHB. Text inside the HHW can advise users to click on HHB to toggle HHW between visible and invisible.

Ideally the HHB would be a layer on the gui. Click and hold down mouse button and move to required area. If there is a HHW for the area where the HHB is placed the HHB could change colour to GREEN to signal to user that a HHW is available.

When not in use the HHB could be located in the header see in the Quick Links display area, see 130423-00
140610-00
11Sep2014
<function> Sales > Sale - Period Booking  
POST DELIVERY 11Sep2014
The second part would be to allow the {contact_id} to create the sale_id within the Period Booking but this doesn't need to be delivered from the start. When a Period Booking is allocated to a {contact_id} an ACRES Account can be created for the {contact_id} to login in and maintain their sales within the Period Booking Date range per {property_id}. This would just be an extension of the calendar updater interface that homeowners use to update their own calendars.
140416-00
09May2014
<function> Documentation > Booking Advice - Internet Access  

Only to be printed for style 2 - Access Codes
{pm_section} to be set as ACRES on
Will be printed on Accommodation Voucher

IF WiFi Name IS NOT NULL
AND WiFi Code IS NOT NULL
AND WiFi From Date is VALID
THEN print details after door access and alarm codes

eg WiFi Name = MyWiFi; WiFi Code = MyWiFiCode; WiFi From Date = 01Aug2014

IF Product Checkout Date is LESS THAN WiFi From Date
THEN WiFi details will not be displayed

IF Product Checkout Date is GREATER THAN or EQUAL TO WiFi From Date
THEN WiFi details will be displayed after door access and alarm codes

Example printed line with WiFi details:

Lock Box Code: 1234 / Alarm ON: 1234 OFF: 1234 / Internet Name: MyWiFi / WiFi Password: MyWiFiCode
POST DELIVERY 09May2014
Print Internet Access details one line below Access Codes to avoid overprinting on right side detailsof Booking Advice
tab12
24Sep2013
<function> Accounting > Audit > Sales Purchases - by period
Use the new Sales report as a guide. There will be some minor difference in the report layout. The option to run the report by Sale Date or Service Date will also apply. The Service Date and Sale Date will be flipped on the reports depending on which style is selected.

Under the date range fields will be a checkbox and summary label. The default is unchecked.
[ ] summary by month
unchecked: All Sales Purchases within range to be itemised
Summary totals by month
Reporting period totals
checked: No individual record display
Monthly summary totals ONLY
Reporting period totals

In this example the reporting period is 01 Jan 2009 to 31 Dec 2009. The report will display all Sales Purchases for the reporting period.

Select Report by Service Date
Sales Purchase Start Date: 01 Jan 2009 (greater than or equal to this date)
Sales Purchase End Date: 31 Dec 2009 (less than or equal to this date)
[ ] summary by month (unchecked)

Report Order by Service Date:
Service Date | Man Ref | Sale ID |Check-In | Checkout | Supplier | Supplier Ref | Amount | Tax | Total Purchase | PTD | Due Out | Sale Date

Sort by service date then Man Ref then Sale ID then Supplier. Summary totals for each calendar month.

If there is no accommodation product in the sale then the service date will be derived from the Sale Level Optional Extra earliest start date used.

Supplier = Contact ID

Where there is more than one Contact ID in a booking, expand the display to show each contact_id and the corresponding purchase amounts. A summary option can be done later.

If there are 3 contacts, a Sales Purchase 1,000; optional extra 200.00; optional extra 50.00 the report should display:

Service Date Man Ref Sale ID Check-in Checkout Supplier Supplier Ref Amount Tax Total PTD Due Out Sale Date
01Feb2009 090201-01 3 01Feb2009 15Feb2009 ACME TVL 1234 500.00 0.00 500.00 500.00 0.00 15Dec2008
02Feb2009 090202-01 7 02Feb2009 16Feb2009 ACME TVL 1235 1000.00 0.00 1000.00 1000.00 0.00 15Mar2008
          ACME CARS 1236 200.00 0.00 200.00 200.00 0.00  
          ACME BBQ 1237 50.00 0.00 50.00 50.00 0.00  
25Dec2009 091225-01 8 25Dec2009 04Jan2010 ACME TVL 1238 700.00 0.00 700.00 700.00 0.00 03Jan2009
Reporting period totals: 2450.00 0.00 2450.00 2450.00 0.00  

PTD = Paid To Date

The amounts in the PTD field should only reflect payments to the specific contact_id for the specific booking and not the total amount paid out as that could include multiple bookings.

POST DELIVERY 24Sep2013
Still need to check layout of report in default mode where more than one {contact_id} exists in a {sale_id}.
 spec 080101-00 {richimport.LocLevelnn} Locations 080101-00
home |  © 1987 - 2024  All Rights Reserved.