Merge in from the pre_0.1 branch
git-svn-id: file:///svn-source/pmgr/branches/sandbox_0.1@794 97e9348a-65ac-dc4b-aefc-98561f571b83
This commit is contained in:
@@ -82,6 +82,7 @@ echo $this->element('ledger_entries', array
|
||||
'exclude' => array('Account', 'Amount', 'Cr/Dr', 'Balance',
|
||||
empty($account['receipts']) ? 'Tender' : null),
|
||||
'include' => array('Debit', 'Credit', 'Sub-Total'),
|
||||
'limit' => 50,
|
||||
)));
|
||||
|
||||
|
||||
@@ -100,6 +101,7 @@ echo $this->element('ledger_entries', array
|
||||
'exclude' => array('Account', 'Amount', 'Cr/Dr', 'Balance',
|
||||
empty($account['receipts']) ? 'Tender' : null),
|
||||
'include' => array('Debit', 'Credit', 'Sub-Total'),
|
||||
'limit' => 50,
|
||||
)));
|
||||
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@ function contactMethodDiv($obj, $type, $legend, $values = null) {
|
||||
' CLASS="'.$type.'-method-%{id}-source" ' . "\n" .
|
||||
' ID="'.$type.'-method-%{id}-source-'.$stype.'"' . "\n" .
|
||||
' VALUE="'.$stype.'"' . "\n" .
|
||||
($stype == 'new' ? ' CHECKED' . "\n" : '') .
|
||||
' />' . "\n" .
|
||||
' <LABEL FOR="'.$type.'-method-%{id}-source-'.$stype.'">'.$sname.'</LABEL>' . "\n" .
|
||||
' ';
|
||||
@@ -76,21 +77,30 @@ function contactMethodDiv($obj, $type, $legend, $values = null) {
|
||||
'fields' => array
|
||||
(
|
||||
'preference' => array
|
||||
('opts' => array
|
||||
('label_attributes' => array('class' => 'required'),
|
||||
'opts' => array
|
||||
('options' => $obj->varstore['methodPreferences'],
|
||||
'selected' => (isset($values) ? $values['ContactsMethod']['preference'] : null),
|
||||
)),
|
||||
),
|
||||
'after' => "Intended purpose for this method of communication.",
|
||||
),
|
||||
|
||||
'type' => array
|
||||
('opts' => array
|
||||
('label_attributes' => array('class' => 'required'),
|
||||
'opts' => array
|
||||
('options' => $obj->varstore['methodTypes'],
|
||||
'selected' => (isset($values) ? $values['ContactsMethod']['type'] : null),
|
||||
)),
|
||||
),
|
||||
'after' => "How / Where this communication reaches the contact.",
|
||||
),
|
||||
|
||||
'comment' => array
|
||||
('opts' => array
|
||||
('label_attributes' => array('class' => 'optional empty'),
|
||||
'opts' => array
|
||||
('value' => (isset($values) ? $values['ContactsMethod']['comment'] : null),
|
||||
)),
|
||||
),
|
||||
'after' => "Optional: Comments on how this form of communication relates to the contact.",
|
||||
),
|
||||
|
||||
))) . "\n" .
|
||||
|
||||
@@ -113,16 +123,23 @@ function contactMethodTypeDiv($obj, $type, $stype, $values = null) {
|
||||
if ($type === 'phone') {
|
||||
if ($stype === 'existing') {
|
||||
$fields = array
|
||||
('id' => array('name' => 'Phone/Ext',
|
||||
('id' => array('label_attributes' => array('class' => 'required empty'),
|
||||
'name' => 'Phone/Ext',
|
||||
'opts' => array('options' => $obj->varstore['contactPhones'])),
|
||||
);
|
||||
}
|
||||
elseif ($stype === 'new') {
|
||||
$fields = array
|
||||
('type' => array('opts' => array('options' => $obj->varstore['phoneTypes'])),
|
||||
'phone' => true,
|
||||
'ext' => array('name' => "Extension"),
|
||||
'comment' => true,
|
||||
('type' => array('label_attributes' => array('class' => 'required'),
|
||||
'opts' => array('options' => $obj->varstore['phoneTypes']),
|
||||
'after' => "Physical type of the phone."),
|
||||
'phone' => array('label_attributes' => array('class' => 'required empty'),
|
||||
'after' => "Required: Phone number."),
|
||||
'ext' => array('name' => "Extension",
|
||||
'label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional: Extension number."),
|
||||
'comment' => array('label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional: Comments about this phone number."),
|
||||
);
|
||||
}
|
||||
elseif ($stype === 'show') {
|
||||
@@ -149,12 +166,19 @@ function contactMethodTypeDiv($obj, $type, $stype, $values = null) {
|
||||
}
|
||||
elseif ($stype === 'new') {
|
||||
$fields = array
|
||||
('address' => true,
|
||||
'city' => true,
|
||||
'state' => true,
|
||||
'postcode' => array('name' => 'Zip Code'),
|
||||
'country' => true,
|
||||
'comment' => true,
|
||||
('address' => array('label_attributes' => array('class' => 'required empty'),
|
||||
'after' => "Required: First line of mailing address."),
|
||||
'city' => array('label_attributes' => array('class' => 'required empty'),
|
||||
'after' => "Required."),
|
||||
'state' => array('label_attributes' => array('class' => 'required empty'),
|
||||
'after' => "Required."),
|
||||
'postcode' => array('name' => 'Zip Code',
|
||||
'label_attributes' => array('class' => 'required empty'),
|
||||
'after' => "Required."),
|
||||
'country' => array('label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional: USA is presumed."),
|
||||
'comment' => array('label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional: Comments about this mailing address."),
|
||||
);
|
||||
}
|
||||
elseif ($stype === 'show') {
|
||||
@@ -177,13 +201,16 @@ function contactMethodTypeDiv($obj, $type, $stype, $values = null) {
|
||||
if ($stype === 'existing') {
|
||||
$fields = array
|
||||
('id' => array('name' => 'Email',
|
||||
'label_attributes' => array('class' => 'required'),
|
||||
'opts' => array('options' => $obj->varstore['contactEmails'])),
|
||||
);
|
||||
}
|
||||
elseif ($stype === 'new') {
|
||||
$fields = array
|
||||
('email' => true,
|
||||
'comment' => true,
|
||||
('email' => array('label_attributes' => array('class' => 'required empty'),
|
||||
'after' => "Required: E-mail address."),
|
||||
'comment' => array('label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional: Comments about this email address."),
|
||||
);
|
||||
}
|
||||
elseif ($stype === 'show') {
|
||||
@@ -204,7 +231,7 @@ function contactMethodTypeDiv($obj, $type, $stype, $values = null) {
|
||||
'<div ' . "\n" .
|
||||
' class="'.$type.'-%{id}-div"' . "\n" .
|
||||
' id="'.$type.'-%{id}-'.$stype.'-div"' . "\n" .
|
||||
(isset($values) ? '' : ' STYLE="display:none;"' . "\n") .
|
||||
((isset($values) || $stype == 'new') ? '' : ' STYLE="display:none;"' . "\n") .
|
||||
'>' . "\n" .
|
||||
|
||||
$obj->element
|
||||
@@ -319,8 +346,27 @@ function contactMethodTypeDiv($obj, $type, $stype, $values = null) {
|
||||
.slideDown();
|
||||
}
|
||||
|
||||
function setEmpty(input_elem) {
|
||||
selector = "label[for=" + $(input_elem).attr("id") + "]";
|
||||
if ($(input_elem).val() == '')
|
||||
$(selector).addClass('empty');
|
||||
else
|
||||
$(selector).removeClass('empty');
|
||||
}
|
||||
|
||||
$(document).ready(function(){
|
||||
resetForm();
|
||||
|
||||
// In case refresh is hit with populated fields
|
||||
$(":input").each(function(i,elem){ setEmpty(elem); });
|
||||
|
||||
// keyup doesn't catch cut from menu
|
||||
$(":input").live('keyup', function(){
|
||||
setEmpty(this);
|
||||
});
|
||||
$(":input").live('mouseup', function(){
|
||||
setEmpty(this);
|
||||
});
|
||||
});
|
||||
|
||||
--></script>
|
||||
@@ -345,17 +391,30 @@ echo($this->element
|
||||
array('class' => 'item contact detail',
|
||||
'caption' => isset($this->data['Contact']) ? 'Edit Contact' : 'New Contact',
|
||||
'fields' => array
|
||||
('first_name' => true,
|
||||
'last_name' => true,
|
||||
'middle_name' => true,
|
||||
'display_name' => true,
|
||||
'company_name' => array('name' => 'Company'),
|
||||
'id_federal' => array('name' => 'SSN'),
|
||||
'id_local' => array('name' => 'ID #'),
|
||||
'id_local_state' => array('name' => 'ID State'),
|
||||
('last_name' => array('label_attributes' => array('class' => 'recommended empty'),
|
||||
'after' => "Recommended."),
|
||||
'first_name' => array('label_attributes' => array('class' => 'recommended empty'),
|
||||
'after' => "Recommended."),
|
||||
'middle_name' => array('label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional."),
|
||||
'company_name' => array('name' => 'Company',
|
||||
'label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional: Company name, if corporate contact."),
|
||||
'display_name' => array('label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional with first/last name; Required otherwise."),
|
||||
'id_federal' => array('name' => 'SSN',
|
||||
'label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional: Social Security Number."),
|
||||
'id_local' => array('name' => 'ID #',
|
||||
'label_attributes' => array('class' => 'recommended empty'),
|
||||
'after' => "Recommended: Driver's license, for example."),
|
||||
'id_local_state' => array('name' => 'ID State',
|
||||
'label_attributes' => array('class' => 'recommended empty'),
|
||||
'after' => "Recommended: State which issued the ID."),
|
||||
/* 'id_local_exp' => array('name' => 'ID Expiration', */
|
||||
/* 'opts' => array('empty' => true)), */
|
||||
'comment' => true,
|
||||
'comment' => array('label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional: Comments about this contact."),
|
||||
))) . "\n");
|
||||
|
||||
echo $form->submit('Update') . "\n";
|
||||
|
||||
@@ -17,16 +17,17 @@ if (isset($contact['Contact']))
|
||||
$contact = $contact['Contact'];
|
||||
|
||||
$rows = array();
|
||||
$rows[] = array('First Name', $contact['first_name']);
|
||||
$rows[] = array('Middle Name', $contact['middle_name']);
|
||||
$rows[] = array('Last Name', $contact['last_name']);
|
||||
$rows[] = array('Company', $contact['company_name']);
|
||||
$rows[] = array('SSN', $contact['id_federal']);
|
||||
$rows[] = array('ID', ($contact['id_local']
|
||||
. ($contact['id_local']
|
||||
? " - ".$contact['id_local_state']
|
||||
: "")));
|
||||
$rows[] = array('Comment', $contact['comment']);
|
||||
$rows[] = array('Display Name', $contact['display_name']);
|
||||
$rows[] = array('First Name', $contact['first_name']);
|
||||
$rows[] = array('Middle Name', $contact['middle_name']);
|
||||
$rows[] = array('Last Name', $contact['last_name']);
|
||||
$rows[] = array('Company', $contact['company_name']);
|
||||
$rows[] = array('SSN', $contact['id_federal']);
|
||||
$rows[] = array('ID', ($contact['id_local']
|
||||
. ($contact['id_local']
|
||||
? " - ".$contact['id_local_state']
|
||||
: "")));
|
||||
$rows[] = array('Comment', $contact['comment']);
|
||||
|
||||
echo $this->element('table',
|
||||
array('class' => 'item contact detail',
|
||||
@@ -135,6 +136,7 @@ echo $this->element('customers', array
|
||||
'config' => array
|
||||
('caption' => 'Related Customers',
|
||||
'filter' => array('Contact.id' => $contact['id']),
|
||||
'include' => array('Relationship'),
|
||||
)));
|
||||
|
||||
|
||||
|
||||
@@ -42,11 +42,12 @@ function customerContactDiv($obj, $values = null, $primary = false) {
|
||||
' CLASS="contact-%{id}-source" ' . "\n" .
|
||||
' ID="contact-%{id}-source-'.$stype.'"' . "\n" .
|
||||
' VALUE="'.$stype.'"' . "\n" .
|
||||
//' CHECKED' . "\n" .
|
||||
($stype == 'new' ? ' CHECKED' . "\n" : '') .
|
||||
' />' . "\n" .
|
||||
' <LABEL FOR="contact-%{id}-source-'.$stype.'">'.$sname.'</LABEL>' . "\n" .
|
||||
' ';
|
||||
}
|
||||
$div .= "<P>(Phone numbers / Addresses can be added later)";
|
||||
}
|
||||
$div .= "\n";
|
||||
|
||||
@@ -75,23 +76,35 @@ function customerContactDiv($obj, $values = null, $primary = false) {
|
||||
(
|
||||
'Customer.primary_contact_entry' => array
|
||||
('name' => 'Primary Contact',
|
||||
'label_attributes' => array('class' => null),
|
||||
'no_prefix' => true,
|
||||
'opts' => array
|
||||
('type' => 'radio',
|
||||
'options' => array('%{id}' => false),
|
||||
'value' => ($primary ? '%{id}' : 'bogus-value-to-suppress-hidden-input'),
|
||||
)),
|
||||
),
|
||||
'after' => ("Check this button if this contact will be the primary" .
|
||||
" contact for this customer (there can be only one primary" .
|
||||
" contact"),
|
||||
),
|
||||
|
||||
|
||||
'type' => array
|
||||
('opts' => array
|
||||
('label_attributes' => array('class' => 'required'),
|
||||
'opts' => array
|
||||
('options' => $obj->varstore['contactTypes'],
|
||||
'selected' => (isset($values) ? $values['ContactsCustomer']['type'] : null),
|
||||
)),
|
||||
),
|
||||
'after' => "An actual tenant, or just an alternate contact?"
|
||||
),
|
||||
|
||||
'comment' => array
|
||||
('opts' => array
|
||||
('label_attributes' => array('class' => 'optional empty'),
|
||||
'opts' => array
|
||||
('value' => (isset($values) ? $values['ContactsCustomer']['comment'] : null),
|
||||
)),
|
||||
),
|
||||
'after' => "Optional: Comments on the relationship between this customer and this contact."
|
||||
),
|
||||
|
||||
))) . "\n" .
|
||||
|
||||
@@ -115,22 +128,37 @@ function customerContactTypeDiv($obj, $stype, $values = null) {
|
||||
if ($stype === 'existing') {
|
||||
$fields = array
|
||||
('id' => array('name' => 'Contact',
|
||||
'opts' => array('options' => $obj->varstore['contacts'])),
|
||||
'label_attributes' => array('class' => 'required empty'),
|
||||
'opts' => array('options' => $obj->varstore['contacts']),
|
||||
'after' => "Select the existing contact."),
|
||||
);
|
||||
}
|
||||
elseif ($stype === 'new') {
|
||||
$fields = array
|
||||
('first_name' => true,
|
||||
'last_name' => true,
|
||||
'middle_name' => true,
|
||||
'display_name' => true,
|
||||
'company_name' => array('name' => 'Company'),
|
||||
'id_federal' => array('name' => 'SSN'),
|
||||
'id_local' => array('name' => 'ID #'),
|
||||
'id_local_state' => array('name' => 'ID State'),
|
||||
('last_name' => array('label_attributes' => array('class' => 'recommended empty'),
|
||||
'after' => "Recommended."),
|
||||
'first_name' => array('label_attributes' => array('class' => 'recommended empty'),
|
||||
'after' => "Recommended."),
|
||||
'middle_name' => array('label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional."),
|
||||
'company_name' => array('name' => 'Company',
|
||||
'label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional: Company name, if corporate contact."),
|
||||
'display_name' => array('label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional with first/last name; Required otherwise."),
|
||||
'id_federal' => array('name' => 'SSN',
|
||||
'label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional: Social Security Number."),
|
||||
'id_local' => array('name' => 'ID #',
|
||||
'label_attributes' => array('class' => 'recommended empty'),
|
||||
'after' => "Recommended: Driver's license, for example."),
|
||||
'id_local_state' => array('name' => 'ID State',
|
||||
'label_attributes' => array('class' => 'recommended empty'),
|
||||
'after' => "Recommended: State which issued the ID."),
|
||||
/* 'id_local_exp' => array('name' => 'ID Expiration', */
|
||||
/* 'opts' => array('empty' => true)), */
|
||||
'comment' => true,
|
||||
'comment' => array('label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => "Optional: Comments about this contact."),
|
||||
);
|
||||
}
|
||||
elseif ($stype === 'show') {
|
||||
@@ -151,14 +179,14 @@ function customerContactTypeDiv($obj, $stype, $values = null) {
|
||||
'<div ' . "\n" .
|
||||
' class="contact-%{id}-div"' . "\n" .
|
||||
' id="contact-%{id}-'.$stype.'-div"' . "\n" .
|
||||
(isset($values) ? '' : ' STYLE="display:none;"' . "\n") .
|
||||
((isset($values) || $stype == 'new') ? '' : ' STYLE="display:none;"' . "\n") .
|
||||
'>' . "\n" .
|
||||
|
||||
$obj->element
|
||||
($element,
|
||||
array('class' => "item contact {$class}",
|
||||
'field_prefix' => 'Contact.%{id}')
|
||||
+ compact('rows', 'fields', 'column_class')) .
|
||||
+ compact('rows', 'fields', 'row_class', 'column_class')) .
|
||||
|
||||
($stype === 'show'
|
||||
? '<input type="hidden" name="data[Contact][%{id}][id]" value="'.$values['id'].'"/>' . "\n"
|
||||
@@ -221,8 +249,28 @@ function customerContactTypeDiv($obj, $stype, $values = null) {
|
||||
.slideDown();
|
||||
}
|
||||
|
||||
function setEmpty(input_elem) {
|
||||
selector = "label[for=" + $(input_elem).attr("id") + "]";
|
||||
//$("#debug").append($(input_elem).attr("id") + ": " + $(input_elem).val() + "<BR>");
|
||||
if ($(input_elem).val() == '')
|
||||
$(selector).addClass('empty');
|
||||
else
|
||||
$(selector).removeClass('empty');
|
||||
}
|
||||
|
||||
$(document).ready(function(){
|
||||
resetForm();
|
||||
|
||||
// In case refresh is hit with populated fields
|
||||
$(":input").each(function(i,elem){ setEmpty(elem); });
|
||||
|
||||
// keyup doesn't catch cut from menu
|
||||
$(":input").live('keyup', function(){
|
||||
setEmpty(this);
|
||||
});
|
||||
$(":input").live('mouseup', function(){
|
||||
setEmpty(this);
|
||||
});
|
||||
});
|
||||
|
||||
--></script>
|
||||
@@ -247,8 +295,12 @@ echo($this->element
|
||||
array('class' => 'item customer detail',
|
||||
'caption' => isset($this->data['Customer']) ? 'Edit Customer' : 'New Customer',
|
||||
'fields' => array
|
||||
('name' => true,
|
||||
'comment' => true,
|
||||
('name' => array('label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => ("Optional: If this field is left blank, the" .
|
||||
" customer name will be set to the name of" .
|
||||
" the primary contact, below.")),
|
||||
'comment' => array('label_attributes' => array('class' => 'optional empty'),
|
||||
'after' => 'Optional: Comments about this customer.'),
|
||||
))) . "\n");
|
||||
|
||||
echo $form->submit(isset($this->data['Customer']) ? 'Update' : 'Add New Customer') . "\n";
|
||||
@@ -268,6 +320,11 @@ echo $form->submit(isset($this->data['Customer']) ? 'Update' : 'Add New Customer
|
||||
<?php
|
||||
; // Alignment
|
||||
|
||||
if (!empty($movein['Unit']['id']))
|
||||
echo $form->input("movein.Unit.id",
|
||||
array('type' => 'hidden',
|
||||
'value' => $movein['Unit']['id'])) . "\n";
|
||||
|
||||
echo $form->submit(isset($this->data['Customer']) ? 'Update' : 'Add New Customer') . "\n";
|
||||
echo $form->submit('Cancel', array('name' => 'cancel')) . "\n";
|
||||
echo $form->end() . "\n";
|
||||
|
||||
@@ -111,21 +111,8 @@ function onGridLoadComplete() {
|
||||
function onRowSelect(grid_id, customer_id) {
|
||||
// Set the customer id that will be returned with the form
|
||||
$("#customer-id").val(customer_id);
|
||||
|
||||
// Get the item names from the grid
|
||||
//$("#receipt-customer-id").html($(grid_id).getCell(customer_id, 'Customer-id'));
|
||||
// REVISIT <AP>: 20090708
|
||||
// This is not intended as a long term solution,
|
||||
// but I need a way to enter data and then view
|
||||
// the results. This link will help.
|
||||
$("#receipt-customer-id").html('<A HREF="' +
|
||||
"<?php echo $html->url(array('controller' => 'customers',
|
||||
'action' => 'view')); ?>"
|
||||
+ "/" +
|
||||
$(grid_id).getCell(customer_id, 'Customer-id').replace(/^#/,'') +
|
||||
'">' +
|
||||
$(grid_id).getCell(customer_id, 'Customer-id') +
|
||||
'</A>');
|
||||
|
||||
// Set the customer name, so the user knows who the receipt is for
|
||||
$("#receipt-customer-name").html($(grid_id).getCell(customer_id, 'Customer-name'));
|
||||
|
||||
// Hide the "no customer" message and show the current customer
|
||||
@@ -273,8 +260,7 @@ echo $this->element('customers', array
|
||||
echo ('<DIV CLASS="receipt grid-selection-text">' .
|
||||
|
||||
'<DIV CLASS="customer-selection-valid" style="display:none">' .
|
||||
'Customer <SPAN id="receipt-customer-id"></SPAN>' .
|
||||
': <SPAN id="receipt-customer-name"></SPAN>' .
|
||||
'Customer: <SPAN id="receipt-customer-name"></SPAN>' .
|
||||
|
||||
/* '<DIV CLASS="supporting">' . */
|
||||
/* '<TABLE>' . */
|
||||
@@ -384,22 +370,12 @@ Configure::write('debug', '0');
|
||||
showCurrentAtPos: 0,
|
||||
dateFormat: 'mm/dd/yy' });
|
||||
|
||||
$("#receipt-customer-id").html("INTERNAL ERROR");
|
||||
$("#receipt-customer-name").html("INTERNAL ERROR");
|
||||
$("#receipt-balance").html("INTERNAL ERROR");
|
||||
$("#receipt-charges-caption").html("Outstanding Charges");
|
||||
|
||||
<?php if (isset($customer['id'])): ?>
|
||||
$("#customer-id").val(<?php echo $customer['id']; ?>);
|
||||
//$("#receipt-customer-id").html("<?php echo '#'.$customer['id']; ?>");
|
||||
$("#receipt-customer-id").html('<A HREF="' +
|
||||
"<?php echo $html->url(array('controller' => 'customers',
|
||||
'action' => 'view')); ?>"
|
||||
+ "/" +
|
||||
"<?php echo $customer['id']; ?>" +
|
||||
'">#' +
|
||||
"<?php echo $customer['id']; ?>" +
|
||||
'</A>');
|
||||
$("#receipt-customer-name").html("<?php echo $customer['name']; ?>");
|
||||
$("#receipt-balance").html(fmtCurrency("<?php echo $stats['balance']; ?>"));
|
||||
onGridState(null, 'hidden');
|
||||
|
||||
@@ -61,7 +61,7 @@ echo $this->element('contacts', array
|
||||
'config' => array
|
||||
('caption' => 'Customer Contacts',
|
||||
'filter' => array('Customer.id' => $customer['Customer']['id']),
|
||||
'include' => array('Type', 'Active'),
|
||||
'include' => array('Relationship'),
|
||||
)));
|
||||
|
||||
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
// Define the table columns
|
||||
$cols = array();
|
||||
$cols['Last Name'] = array('index' => 'Contact.last_name', 'formatter' => 'name');
|
||||
$cols['First Name'] = array('index' => 'Contact.first_name', 'formatter' => 'name');
|
||||
$cols['Company'] = array('index' => 'Contact.company_name', 'formatter' => 'longname');
|
||||
$cols['Type'] = array('index' => 'ContactsCustomer.type', 'formatter' => 'enum');
|
||||
$cols['Active'] = array('index' => 'ContactsCustomer.active', 'formatter' => 'enum');
|
||||
$cols['Comment'] = array('index' => 'Contact.comment', 'formatter' => 'comment');
|
||||
$cols['Relationship'] = array('index' => 'ContactsCustomer.type', 'formatter' => 'enum');
|
||||
$cols['Name'] = array('index' => 'Contact.display_name', 'formatter' => 'longname');
|
||||
$cols['Last Name'] = array('index' => 'Contact.last_name', 'formatter' => 'longname');
|
||||
$cols['First Name'] = array('index' => 'Contact.first_name', 'formatter' => 'longname');
|
||||
$cols['Company'] = array('index' => 'Contact.company_name', 'formatter' => 'longname');
|
||||
$cols['Comment'] = array('index' => 'Contact.comment', 'formatter' => 'comment');
|
||||
|
||||
// Render the grid
|
||||
$grid
|
||||
@@ -16,4 +16,4 @@ $grid
|
||||
->defaultFields(array('Last Name', 'First Name'))
|
||||
->searchFields(array('Last Name', 'First Name', 'Company'))
|
||||
->render($this, isset($config) ? $config : null,
|
||||
array_diff(array_keys($cols), array('Type', 'Active', 'Comment')));
|
||||
array_diff(array_keys($cols), array('Relationship', 'Comment')));
|
||||
|
||||
@@ -10,11 +10,6 @@ $cols['Leases'] = array('index' => 'current_lease_count', 'formatt
|
||||
$cols['Balance'] = array('index' => 'balance', 'formatter' => 'currency');
|
||||
$cols['Comment'] = array('index' => 'Customer.comment', 'formatter' => 'comment');
|
||||
|
||||
|
||||
// Certain fields are only valid with a particular context
|
||||
if (!isset($config['filter']['Contact.id']))
|
||||
$grid->invalidFields('Relationship');
|
||||
|
||||
// Render the grid
|
||||
$grid
|
||||
->columns($cols)
|
||||
@@ -22,4 +17,4 @@ $grid
|
||||
->defaultFields(array('Name'))
|
||||
->searchFields(array('Name', 'Last Name', 'First Name'))
|
||||
->render($this, isset($config) ? $config : null,
|
||||
array_diff(array_keys($cols), array('Comment')));
|
||||
array_diff(array_keys($cols), array('Relationship', 'Comment')));
|
||||
|
||||
@@ -32,8 +32,8 @@ foreach ($fields AS $field => $config) {
|
||||
$include_after = true;
|
||||
}
|
||||
|
||||
|
||||
$column_class = array();
|
||||
if (empty($column_class))
|
||||
$column_class = array();
|
||||
if ($include_before)
|
||||
$column_class[] = 'before';
|
||||
$column_class[] = 'field';
|
||||
@@ -79,7 +79,13 @@ foreach ($fields AS $field => $config) {
|
||||
$cells[] = null;
|
||||
}
|
||||
|
||||
$name = $config['name'];
|
||||
if (empty($config['opts']['label']))
|
||||
$name = $form->label($field, $config['name'],
|
||||
empty($config['label_attributes'])
|
||||
? null : $config['label_attributes']);
|
||||
else
|
||||
$name = $config['name'];
|
||||
|
||||
if (isset($config['with_name_before']))
|
||||
$name = $config['with_name_before'] . $name;
|
||||
elseif (isset($with_name_before))
|
||||
|
||||
@@ -121,6 +121,11 @@ foreach ($jqGridColumns AS $header => &$col) {
|
||||
// No special formatting for number
|
||||
unset($col['formatter']);
|
||||
}
|
||||
elseif ($col['formatter'] === 'percentage') {
|
||||
$col['formatter'] = array('--special' => 'percentageFormatter');
|
||||
$default['width'] = 60;
|
||||
$default['align'] = 'right';
|
||||
}
|
||||
elseif ($col['formatter'] === 'currency') {
|
||||
// Use our custom formatting for currency
|
||||
$col['formatter'] = array('--special' => 'currencyFormatter');
|
||||
@@ -259,12 +264,25 @@ $jqGrid_setup = array_merge
|
||||
<script type="text/javascript"><!--
|
||||
|
||||
jQuery(document).ready(function(){
|
||||
currencyFormatter = function(cellval, opts, rowObject) {
|
||||
currencyFormatter = function(cellval, opts, rowObject) {
|
||||
if (!cellval)
|
||||
return "";
|
||||
return fmtCurrency(cellval);
|
||||
}
|
||||
|
||||
percentageFormatter = function(cellval, opts, rowObject) {
|
||||
var precision;
|
||||
if (typeof(opts.colModel) != 'undefined' &&
|
||||
typeof(opts.colModel.formatoptions) != 'undefined' &&
|
||||
typeof(opts.colModel.formatoptions.precision) != 'undefined')
|
||||
precision = opts.colModel.formatoptions.precision;
|
||||
else
|
||||
precision = 0;
|
||||
amount = cellval.toString().replace(/\%/g,'');
|
||||
amount = (amount*100).toFixed(precision);
|
||||
return amount+'%';
|
||||
}
|
||||
|
||||
idFormatter = function(cellval, opts, rowObject) {
|
||||
if (!cellval)
|
||||
return cellval;
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
// Define the table columns
|
||||
$cols = array();
|
||||
$cols['LeaseID'] = array('index' => 'Lease.id', 'hidden' => true);
|
||||
$cols['Lease'] = array('index' => 'Lease.number', 'formatter' => 'id');
|
||||
$cols['Unit'] = array('index' => 'Unit.name', 'width' => '50', 'align' => 'center');
|
||||
$cols['Customer'] = array('index' => 'Customer.name', 'formatter' => 'longname');
|
||||
@@ -29,8 +28,8 @@ if (!empty($this->params['action'])) {
|
||||
// Render the grid
|
||||
$grid
|
||||
->columns($cols)
|
||||
->sortField('LeaseID')
|
||||
->defaultFields(array('LeaseID', 'Lease'))
|
||||
->sortField('Lease')
|
||||
->defaultFields(array('Lease'))
|
||||
->searchFields(array('Customer', 'Unit'))
|
||||
->render($this, isset($config) ? $config : null,
|
||||
array_diff(array_keys($cols), array('Signed', 'Status', 'Comment')));
|
||||
|
||||
@@ -20,7 +20,6 @@ $cols['Sub-Total'] = array('index' => 'subtotal-balance', 'formatter' =>
|
||||
|
||||
// Render the grid
|
||||
$grid
|
||||
->limit(50)
|
||||
->columns($cols)
|
||||
->sortField('Date', 'DESC')
|
||||
->defaultFields(array('Entry', 'Date', 'Amount'))
|
||||
|
||||
@@ -11,17 +11,37 @@
|
||||
// REVISIT <AP>: 20090823
|
||||
// Add way to slide the entire menu off the page
|
||||
|
||||
// The sidemenu-container is necessary to define the
|
||||
// bounds as the parent of the sidemenu div, which will
|
||||
// be heavily manipulated by the accordion module. If
|
||||
// we don't have good control over the parent, the
|
||||
// accordion will get confused and behave poorly.
|
||||
echo('<DIV ID="sidemenu-container">' . "\n");
|
||||
echo('<DIV ID="sidemenu">' . "\n");
|
||||
|
||||
foreach ($menu AS $area) {
|
||||
if (empty($area['subarea']))
|
||||
$section = 0;
|
||||
$active_section = null;
|
||||
foreach ($menu['areas'] AS $area_name => $area) {
|
||||
if (empty($area['subareas']))
|
||||
continue;
|
||||
|
||||
foreach ($area['subarea'] AS $subarea) {
|
||||
foreach ($area['subareas'] AS $subarea_name => $subarea) {
|
||||
if (empty($subarea['priorities']))
|
||||
continue;
|
||||
|
||||
echo('<H3 class="sidemenu-header">' . $subarea['name'] . "</H3>\n");
|
||||
if (!isset($active_section) &&
|
||||
!empty($menu['active']['area']) && $area_name == $menu['active']['area'] &&
|
||||
(empty($menu['active']['subarea']) || $subarea_name == $menu['active']['subarea']))
|
||||
$active_section = $section;
|
||||
|
||||
++$section;
|
||||
|
||||
echo('<H3' .
|
||||
//' id="sidemenu-section-'.$area_name.'-'.$subarea_name.'"' .
|
||||
' class="sidemenu-header">' .
|
||||
$subarea['name'] .
|
||||
"</H3>\n");
|
||||
|
||||
echo('<DIV class="sidemenu-content">' . "\n");
|
||||
foreach ($subarea['priorities'] AS $priority) {
|
||||
foreach ($priority AS $item) {
|
||||
@@ -39,19 +59,25 @@ foreach ($menu AS $area) {
|
||||
}
|
||||
}
|
||||
|
||||
echo('</DIV>' . "\n");
|
||||
?>
|
||||
echo('</DIV>' . "\n"); // End #sidemenu
|
||||
echo('</DIV>' . "\n"); // End #sidemenu-container
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
// Uses both hoverintent, which is a more user friendly mechanism
|
||||
// than mouseover, as well as click. This provides 1) a workable
|
||||
// solution for those browsers that don't use pointers, such as
|
||||
// a touchscreen, and 2) a means to open the menu if the animation
|
||||
// was running while the user moved the pointer to a new menu area.
|
||||
$javascript->codeBlock(
|
||||
<<<JSCB
|
||||
jQuery(document).ready(function(){
|
||||
jQuery('#sidemenu').accordion
|
||||
({ fillSpace : true,
|
||||
event: 'mouseover',
|
||||
<?php /* REVISIT <AP>: 20090823
|
||||
* Prevent animation until we can figure out why we
|
||||
* get animation width jitter */ ?>
|
||||
animated : false,
|
||||
});
|
||||
});
|
||||
|
||||
--></script>
|
||||
jQuery("#sidemenu").accordion
|
||||
({ fillSpace : true,
|
||||
event : "click hoverintent",
|
||||
animated : "bounceslide",
|
||||
JSCB
|
||||
. (isset($active_section) ? "\tactive : $active_section,\n" : '') .
|
||||
<<<JSCB
|
||||
});
|
||||
});
|
||||
JSCB
|
||||
, array('inline' => false));
|
||||
|
||||
@@ -52,8 +52,8 @@ if (isset($rows) && is_array($rows) && count($rows)) {
|
||||
|
||||
foreach ($rows AS $r => &$row) {
|
||||
foreach ($row AS $c => $col) {
|
||||
$cell_class = implode(" ", array_merge(isset( $row_class[$r]) ? $row_class[$r] : array(),
|
||||
isset($column_class[$c]) ? $column_class[$c] : array()));
|
||||
$cell_class = implode(" ", array_merge(empty( $row_class[$r]) ? array() : $row_class[$r],
|
||||
empty($column_class[$c]) ? array() : $column_class[$c]));
|
||||
if ($cell_class)
|
||||
$row[$c] = array($col, array('class' => $cell_class));
|
||||
}
|
||||
@@ -65,11 +65,11 @@ if (isset($rows) && is_array($rows) && count($rows)) {
|
||||
|
||||
// OK, output the table HTML
|
||||
echo('<TABLE' .
|
||||
(isset($id) ? ' ID="'.$id.'"' : '') .
|
||||
(isset($class) ? ' CLASS="'.$class.'"' : '') .
|
||||
(empty($id) ? '' : ' ID="'.$id.'"') .
|
||||
(empty($class) ? '' : ' CLASS="'.$class.'"') .
|
||||
'>' . "\n");
|
||||
|
||||
if (isset($caption))
|
||||
if (!empty($caption))
|
||||
echo(' <CAPTION>' . $caption . '</CAPTION>' . "\n");
|
||||
|
||||
if (isset($headers) && is_array($headers)) {
|
||||
|
||||
@@ -13,7 +13,7 @@ $cols['Comment'] = array('index' => 'Transaction.comment', 'formatter' =
|
||||
// Render the grid
|
||||
$grid
|
||||
->columns($cols)
|
||||
->sortField('Timestamp')
|
||||
->sortField('Timestamp', 'DESC')
|
||||
->defaultFields(array('ID', 'Timestamp'))
|
||||
->searchFields(array('Type', 'Comment'))
|
||||
->render($this, isset($config) ? $config : null,
|
||||
|
||||
33
site/views/elements/unit_sizes.ctp
Normal file
33
site/views/elements/unit_sizes.ctp
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php /* -*- mode:PHP -*- */
|
||||
|
||||
// Define the table columns
|
||||
$cols = array();
|
||||
$cols['Size'] = array('index' => 'UnitSize.name', 'formatter' => 'shortname');
|
||||
$cols['Width'] = array('index' => 'UnitSize.width', 'formatter' => 'number');
|
||||
$cols['Depth'] = array('index' => 'UnitSize.depth', 'formatter' => 'number');
|
||||
$cols['Height'] = array('index' => 'UnitSize.height', 'formatter' => 'number');
|
||||
$cols['Area'] = array('index' => 'sqft', 'formatter' => 'number');
|
||||
$cols['Volume'] = array('index' => 'cuft', 'formatter' => 'number');
|
||||
$cols['Deposit'] = array('index' => 'UnitSize.deposit', 'formatter' => 'currency');
|
||||
$cols['Rent'] = array('index' => 'UnitSize.rent', 'formatter' => 'currency');
|
||||
$cols['A. Cost'] = array('index' => 'sqcost', 'formatter' => 'currency');
|
||||
$cols['V. Cost'] = array('index' => 'cucost', 'formatter' => 'currency');
|
||||
$cols['Unavailable'] = array('index' => 'unavailable', 'formatter' => 'number');
|
||||
$cols['Occupied'] = array('index' => 'occupied', 'formatter' => 'number');
|
||||
$cols['Available'] = array('index' => 'available', 'formatter' => 'number');
|
||||
$cols['Total'] = array('index' => 'units', 'formatter' => 'number');
|
||||
$cols['Occupancy'] = array('index' => 'occupancy', 'formatter' => 'percentage', 'formatoptions' => array('precision' => 0));
|
||||
$cols['Vacancy'] = array('index' => 'vacancy', 'formatter' => 'percentage', 'formatoptions' => array('precision' => 0));
|
||||
$cols['Comment'] = array('index' => 'Unit.comment', 'formatter' => 'comment');
|
||||
|
||||
// Render the grid
|
||||
$grid
|
||||
->columns($cols)
|
||||
->sortField('Area')
|
||||
->defaultFields(array('Size', 'Area'))
|
||||
->searchFields(array('Size', 'Width', 'Depth', 'Area', 'Deposit', 'Rent'))
|
||||
->render($this, isset($config) ? $config : null,
|
||||
array_diff(array_keys($cols), array('Height', 'Volume',
|
||||
'A. Cost', 'V. Cost',
|
||||
'Occupied', 'Total', 'Occupancy', 'Vacancy',
|
||||
'Comment')));
|
||||
@@ -6,12 +6,16 @@ $cols['Sort'] = array('index' => 'Unit.sort_order', 'hidden' => true);
|
||||
$cols['Walk'] = array('index' => 'Unit.walk_order', 'formatter' => 'number');
|
||||
$cols['Unit'] = array('index' => 'Unit.name', 'formatter' => 'shortname');
|
||||
$cols['Size'] = array('index' => 'UnitSize.name', 'formatter' => 'shortname');
|
||||
$cols['Area'] = array('index' => 'sqft', 'formatter' => 'number');
|
||||
$cols['Rent'] = array('index' => 'Unit.rent', 'formatter' => 'currency');
|
||||
$cols['Deposit'] = array('index' => 'Unit.deposit', 'formatter' => 'currency');
|
||||
$cols['Status'] = array('index' => 'Unit.status', 'formatter' => 'name'); // We have enough real estate
|
||||
$cols['Balance'] = array('index' => 'balance', 'formatter' => 'currency');
|
||||
$cols['Comment'] = array('index' => 'Unit.comment', 'formatter' => 'comment');
|
||||
|
||||
if (in_array($this->params['action'], array('vacant', 'unavailable')))
|
||||
$grid->invalidFields('Balance');
|
||||
|
||||
// Render the grid
|
||||
$grid
|
||||
->columns($cols)
|
||||
|
||||
@@ -24,24 +24,48 @@
|
||||
?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<?php
|
||||
/* print("<!--\n"); */
|
||||
/* print("SERVER = "); print_r($_SERVER); print("\n"); */
|
||||
/* print("REQUEST = "); print_r($_REQUEST); print("\n"); */
|
||||
/* print("COOKIE = "); print_r($_COOKIE); print("\n"); */
|
||||
/* print("-->\n"); */
|
||||
?>
|
||||
<head>
|
||||
<?php echo $html->charset(); ?>
|
||||
<title>
|
||||
Property Manager: <?php echo $title_for_layout; ?>
|
||||
</title>
|
||||
<?php
|
||||
// Reset the __scripts variable, which has already been dumped to
|
||||
// $scripts_for_layout. Elements/Helpers used in the layout may
|
||||
// also have some scripts to add. They cannot be put into the head
|
||||
// but we can at least put them into a relatively benign place, so
|
||||
// scripts don't have to be dumped inline in possibly awkward spots.
|
||||
// Oh, and yes... I know we're not supposed to be using this variable
|
||||
// directly, and will possibly get burned someday. Oh well, Cake
|
||||
// hasn't left us a lot of choice, besides writing our own scripts
|
||||
// mechanism _additional_ to what Cake has provided :-/
|
||||
$this->__scripts = array();
|
||||
|
||||
if (!empty($_SERVER['HTTPS']))
|
||||
$protocol = 'https://';
|
||||
else
|
||||
$protocol = 'http://';
|
||||
|
||||
echo $html->meta('icon') . "\n";
|
||||
echo $html->css('cake.generic') . "\n";
|
||||
echo $html->css('layout') . "\n";
|
||||
echo $html->css('print', null, array('media' => 'print')) . "\n";
|
||||
echo $html->css('sidemenu') . "\n";
|
||||
echo $javascript->link('http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js') . "\n";
|
||||
echo $javascript->link('http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js') . "\n";
|
||||
echo $javascript->link($protocol . 'ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js') . "\n";
|
||||
echo $javascript->link($protocol . 'ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js') . "\n";
|
||||
//echo $html->css('themes/base/ui.all') . "\n";
|
||||
echo $html->css('themes/smoothness/ui.all') . "\n";
|
||||
//echo $html->css('themes/dotluv/ui.all') . "\n";
|
||||
//echo $html->css('themes/start/ui.all') . "\n";
|
||||
echo $javascript->link('jquery.form') . "\n";
|
||||
echo $javascript->link('pmgr.jquery') . "\n";
|
||||
echo $javascript->link('pmgr') . "\n";
|
||||
echo $scripts_for_layout . "\n";
|
||||
?>
|
||||
@@ -89,5 +113,7 @@
|
||||
<?php echo $cakeDebug; ?>
|
||||
<?php /* pr($this); */ ?>
|
||||
|
||||
<?php echo implode("\n", $this->__scripts) . "\n"; ?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -99,20 +99,7 @@ function onRowSelect(grid_id, lease_id) {
|
||||
// Set the item id that will be returned with the form
|
||||
$("#lease-id").val(lease_id);
|
||||
|
||||
// Get the item names from the grid
|
||||
//$("#invoice-lease").html($(grid_id).getCell(lease_id, 'Lease-number'));
|
||||
// REVISIT <AP>: 20090708
|
||||
// This is not intended as a long term solution,
|
||||
// but I need a way to enter data and then view
|
||||
// the results. This link will help.
|
||||
$("#invoice-lease").html('<A HREF="' +
|
||||
"<?php echo $html->url(array('controller' => 'leases',
|
||||
'action' => 'view')); ?>"
|
||||
+ "/" +
|
||||
$(grid_id).getCell(lease_id, 'Lease-id').replace(/^#/,'') +
|
||||
'">' +
|
||||
$(grid_id).getCell(lease_id, 'Lease-number') +
|
||||
'</A>');
|
||||
$("#invoice-lease").html($(grid_id).getCell(lease_id, 'Lease-number'));
|
||||
$("#invoice-unit").html($(grid_id).getCell(lease_id, 'Unit-name'));
|
||||
$("#invoice-customer").html($(grid_id).getCell(lease_id, 'Customer-name'));
|
||||
$("#invoice-rent").html($(grid_id).getCell(lease_id, 'Lease-rent'));
|
||||
@@ -222,6 +209,7 @@ if (empty($movein))
|
||||
array('gridstate' =>
|
||||
'onGridState("#"+$(this).attr("id"), gridstate)'),
|
||||
),
|
||||
'exclude' => array('Closed'),
|
||||
'action' => 'active',
|
||||
'nolinks' => true,
|
||||
'limit' => 10,
|
||||
@@ -399,15 +387,7 @@ Configure::write('debug', '0');
|
||||
|
||||
<?php if (isset($lease['id'])): ?>
|
||||
$("#lease-id").val(<?php echo $lease['id']; ?>);
|
||||
//$("#invoice-lease").html("<?php echo '#'.$lease['number']; ?>");
|
||||
$("#invoice-lease").html('<A HREF="' +
|
||||
"<?php echo $html->url(array('controller' => 'leases',
|
||||
'action' => 'view')); ?>"
|
||||
+ "/" +
|
||||
"<?php echo $lease['id']; ?>" +
|
||||
'">#' +
|
||||
"<?php echo $lease['number']; ?>" +
|
||||
'</A>');
|
||||
$("#invoice-lease").html("<?php echo '#'.$lease['number']; ?>");
|
||||
$("#invoice-unit").html("<?php echo $unit['name']; ?>");
|
||||
$("#invoice-customer").html("<?php echo $customer['name']; ?>");
|
||||
$("#invoice-rent").html("<?php echo FormatHelper::currency($lease['rent']); ?>");
|
||||
|
||||
@@ -26,14 +26,20 @@ $move_type = preg_replace("/.*_/", "", $this->action);
|
||||
// Reset the form
|
||||
function resetForm() {
|
||||
$("#customer-id").val(0);
|
||||
$("#move-customer").html("INTERNAL ERROR");
|
||||
$("#unit-id").val(0);
|
||||
$("#lease-id").val(0);
|
||||
$("#move-customer").html("INTERNAL ERROR");
|
||||
$("#move-unit").html("INTERNAL ERROR");
|
||||
$("#move-lease").html("INTERNAL ERROR");
|
||||
datepickerNow('LeaseMoveDate', false);
|
||||
}
|
||||
|
||||
function onRowSelect(grid_id, item_type, item_id) {
|
||||
cell_name = item_type.charAt(0).toUpperCase() + item_type.substr(1) + "-name";
|
||||
cell_name = item_type.charAt(0).toUpperCase() + item_type.substr(1);
|
||||
if (item_type == 'lease')
|
||||
cell_name += "-number";
|
||||
else
|
||||
cell_name += "-name";
|
||||
|
||||
// Set the item id that will be returned with the form
|
||||
$("#"+item_type+"-id").val(item_id);
|
||||
@@ -47,6 +53,22 @@ function onRowSelect(grid_id, item_type, item_id) {
|
||||
$("#LeaseDeposit").val($(grid_id).getCell(item_id, 'Unit-deposit'));
|
||||
}
|
||||
|
||||
// If a unit was selected, update the "Create new customer" link
|
||||
if (item_type == 'unit') {
|
||||
$("#customer-selection-new-url").attr
|
||||
('href',
|
||||
"<?php echo
|
||||
$html->url(array('controller' => 'customers',
|
||||
'action' => 'add')); ?>"
|
||||
+ '/' + $("#unit-id").val());
|
||||
}
|
||||
|
||||
// If a lease was selected, update the customer and unit
|
||||
if (item_type == 'lease') {
|
||||
$("#move-unit").html($(grid_id).getCell(item_id, 'Unit-name'));
|
||||
$("#move-customer").html($(grid_id).getCell(item_id, 'Customer-name'));
|
||||
}
|
||||
|
||||
// Hide the "no customer" message and show the current customer
|
||||
$("."+item_type+"-selection-invalid").hide();
|
||||
$("."+item_type+"-selection-valid").show();
|
||||
@@ -56,12 +78,12 @@ function onRowSelect(grid_id, item_type, item_id) {
|
||||
|
||||
function onGridState(grid_id, item_type, state) {
|
||||
if (state == 'visible') {
|
||||
$("."+item_type+"-selection-new").show();
|
||||
$("."+item_type+"-selection-invalid").hide();
|
||||
$("."+item_type+"-selection-valid").hide();
|
||||
}
|
||||
else {
|
||||
//if ($(grid_id).getGridParam("selrow"))
|
||||
//alert("id:" + $("#"+item_type+"-id").val());
|
||||
$("."+item_type+"-selection-new").hide();
|
||||
if ($("#"+item_type+"-id").val() > 0) {
|
||||
$("."+item_type+"-selection-invalid").hide();
|
||||
$("."+item_type+"-selection-valid").show();
|
||||
@@ -78,7 +100,42 @@ function onGridState(grid_id, item_type, state) {
|
||||
<?php
|
||||
; // align
|
||||
|
||||
if ($move_type !== 'out') {
|
||||
if ($move_type === 'out') {
|
||||
echo $this->element('leases', array
|
||||
('config' => array
|
||||
('grid_div_id' => 'leases-list',
|
||||
'grid_div_class' => 'text-below',
|
||||
'caption' => ('<A HREF="#" ONCLICK="$(\'#leases-list .HeaderButton\').click();'.
|
||||
' return false;">Select Lease</A>'),
|
||||
'grid_setup' => array('hiddengrid' => isset($lease['id'])),
|
||||
'grid_events' => array('onSelectRow' =>
|
||||
array('ids' =>
|
||||
'if (ids != null){onRowSelect("#"+$(this).attr("id"), "lease", ids);}'),
|
||||
'onHeaderClick' =>
|
||||
array('gridstate' =>
|
||||
'onGridState("#"+$(this).attr("id"), "lease", gridstate)'),
|
||||
),
|
||||
'exclude' => array('Closed'),
|
||||
'action' => 'active',
|
||||
'nolinks' => true,
|
||||
'limit' => 10,
|
||||
)));
|
||||
|
||||
echo ('<DIV CLASS="move-inout grid-selection-text">' .
|
||||
|
||||
'<DIV CLASS="lease-selection-valid" style="display:none">' .
|
||||
'Lease <SPAN id="move-lease"></SPAN>' . ' / ' .
|
||||
'Unit: <SPAN id="move-unit"></SPAN>' . ' / ' .
|
||||
'Customer: <SPAN id="move-customer"></SPAN>' .
|
||||
'</DIV>' .
|
||||
|
||||
'<DIV CLASS="lease-selection-invalid" style="display:none">' .
|
||||
'Please select lease' .
|
||||
'</DIV>' .
|
||||
|
||||
'</DIV>' . "\n");
|
||||
}
|
||||
else {
|
||||
echo $this->element('customers', array
|
||||
('config' => array
|
||||
('grid_div_id' => 'customers-list',
|
||||
@@ -96,22 +153,27 @@ if ($move_type !== 'out') {
|
||||
'nolinks' => true,
|
||||
'limit' => 10,
|
||||
)));
|
||||
}
|
||||
|
||||
echo ('<DIV CLASS="move-inout grid-selection-text">' .
|
||||
echo ('<DIV CLASS="move-inout grid-selection-text">' .
|
||||
|
||||
'<DIV CLASS="customer-selection-valid" style="display:none">' .
|
||||
'Customer: <SPAN id="move-customer"></SPAN>' .
|
||||
'</DIV>' .
|
||||
'<DIV CLASS="customer-selection-new" style="display:none">' .
|
||||
$html->link('Create a new Customer',
|
||||
array('controller' => 'customers',
|
||||
'action' => 'add',
|
||||
(empty($unit['id']) ? null : $unit['id'])),
|
||||
array('id' => 'customer-selection-new-url')) .
|
||||
'</DIV>' .
|
||||
|
||||
'<DIV CLASS="customer-selection-invalid" style="display:none">' .
|
||||
'Please select customer' .
|
||||
'</DIV>' .
|
||||
'<DIV CLASS="customer-selection-valid" style="display:none">' .
|
||||
'Customer: <SPAN id="move-customer"></SPAN>' .
|
||||
'</DIV>' .
|
||||
|
||||
'</DIV>' . "\n");
|
||||
'<DIV CLASS="customer-selection-invalid" style="display:none">' .
|
||||
'Please select customer' .
|
||||
'</DIV>' .
|
||||
|
||||
'</DIV>' . "\n");
|
||||
|
||||
if ($move_type !== 'out') {
|
||||
echo $this->element('units', array
|
||||
('config' => array
|
||||
('grid_div_id' => 'units-list',
|
||||
@@ -132,39 +194,40 @@ if ($move_type !== 'out') {
|
||||
'nolinks' => true,
|
||||
'limit' => 10,
|
||||
)));
|
||||
|
||||
echo ('<DIV CLASS="move-inout grid-selection-text">' .
|
||||
|
||||
'<DIV CLASS="unit-selection-valid" style="display:none">' .
|
||||
'Unit: <SPAN id="move-unit"></SPAN>' .
|
||||
'</DIV>' .
|
||||
|
||||
'<DIV CLASS="unit-selection-invalid" style="display:none">' .
|
||||
'Please select unit' .
|
||||
'</DIV>' .
|
||||
|
||||
'</DIV>' . "\n");
|
||||
}
|
||||
|
||||
echo ('<DIV CLASS="move-inout grid-selection-text">' .
|
||||
|
||||
'<DIV CLASS="unit-selection-valid" style="display:none">' .
|
||||
'Unit: <SPAN id="move-unit"></SPAN>' .
|
||||
'</DIV>' .
|
||||
|
||||
'<DIV CLASS="unit-selection-invalid" style="display:none">' .
|
||||
'Please select unit' .
|
||||
'</DIV>' .
|
||||
|
||||
'</DIV>' . "\n");
|
||||
|
||||
echo $form->create(null, array('id' => 'move-inout-form',
|
||||
'url' => array('controller' => 'leases',
|
||||
'action' => $move_action)));
|
||||
|
||||
echo $form->input("Lease.customer_id",
|
||||
array('id' => 'customer-id',
|
||||
'type' => 'hidden',
|
||||
'value' => 0));
|
||||
|
||||
echo $form->input("Lease.unit_id",
|
||||
array('id' => 'unit-id',
|
||||
'type' => 'hidden',
|
||||
'value' => 0));
|
||||
|
||||
if ($move_type === 'out') {
|
||||
echo $form->input('Lease.id',
|
||||
array('type' => 'hidden',
|
||||
'value' => $lease['id'],
|
||||
));
|
||||
array('id' => 'lease-id',
|
||||
'type' => 'hidden',
|
||||
'value' => 0));
|
||||
}
|
||||
else {
|
||||
echo $form->input("Lease.customer_id",
|
||||
array('id' => 'customer-id',
|
||||
'type' => 'hidden',
|
||||
'value' => 0));
|
||||
|
||||
echo $form->input("Lease.unit_id",
|
||||
array('id' => 'unit-id',
|
||||
'type' => 'hidden',
|
||||
'value' => 0));
|
||||
}
|
||||
|
||||
echo $this->element('form_table',
|
||||
@@ -228,6 +291,20 @@ echo $form->end('Perform Move ' . ucfirst($move_type));
|
||||
|
||||
resetForm();
|
||||
|
||||
<?php if ($move_type === 'out') { ?>
|
||||
|
||||
<?php if (isset($lease['id'])): ?>
|
||||
$("#lease-id").val(<?php echo $lease['id']; ?>);
|
||||
$("#move-lease").html("#<?php echo $lease['number']; ?>");
|
||||
$("#move-customer").html("<?php echo $customer['name']; ?>");
|
||||
$("#move-unit").html("<?php echo $unit['name']; ?>");
|
||||
onGridState(null, 'lease', 'hidden');
|
||||
<?php else: ?>
|
||||
onGridState(null, 'lease', 'visible');
|
||||
<?php endif; ?>
|
||||
|
||||
<?php } else { /* end (move_type === 'out') */ ?>
|
||||
|
||||
<?php if (isset($customer['id'])): ?>
|
||||
$("#customer-id").val(<?php echo $customer['id']; ?>);
|
||||
$("#move-customer").html("<?php echo $customer['name']; ?>");
|
||||
@@ -243,6 +320,10 @@ echo $form->end('Perform Move ' . ucfirst($move_type));
|
||||
<?php else: ?>
|
||||
onGridState(null, 'unit', 'visible');
|
||||
<?php endif; ?>
|
||||
|
||||
<?php } /* end (move_type === 'out') */ ?>
|
||||
|
||||
|
||||
});
|
||||
--></script>
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@ echo $this->element('ledger_entries', array
|
||||
'Amount', 'Cr/Dr', 'Balance',
|
||||
empty($account['receipts']) ? 'Tender' : null),
|
||||
'include' => array('Debit', 'Credit', 'Sub-Total'),
|
||||
'limit' => 50,
|
||||
)));
|
||||
|
||||
|
||||
|
||||
88
site/views/unit_sizes/view.ctp
Normal file
88
site/views/unit_sizes/view.ctp
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php /* -*- mode:PHP -*- */
|
||||
|
||||
echo '<div class="unit-size view">' . "\n";
|
||||
|
||||
/**********************************************************************
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
* UnitSize Detail Main Section
|
||||
*/
|
||||
|
||||
$unit_type = $size['UnitType'];
|
||||
$unit_size = $size['UnitSize'];
|
||||
|
||||
$rows = array();
|
||||
$rows[] = array('Name', $unit_size['name']);
|
||||
$rows[] = array('Type', $unit_type['name']);
|
||||
$rows[] = array('Width', $unit_size['width'] . ' Feet');
|
||||
$rows[] = array('Depth', $unit_size['depth'] . ' Feet');
|
||||
if (!empty($unit_size['height']))
|
||||
$rows[] = array('Height', $unit_size['height'] . ' Feet');
|
||||
if (!empty($unit_size['sqft']))
|
||||
$rows[] = array('Area', ($unit_size['sqft'] . ' Square Feet'
|
||||
. ' ('. FormatHelper::currency($unit_size['rent'] / $unit_size['sqft'])
|
||||
. ' / Square Foot)'));
|
||||
if (!empty($unit_size['cuft']))
|
||||
$rows[] = array('Volume', ($unit_size['cuft'] . ' Cubic Feet'
|
||||
. ' ('. FormatHelper::currency($unit_size['rent'] / $unit_size['cuft'])
|
||||
. ' / Cubic Foot)'));
|
||||
$rows[] = array('Deposit', FormatHelper::currency($unit_size['deposit']));
|
||||
$rows[] = array('Rent', FormatHelper::currency($unit_size['rent']));
|
||||
$rows[] = array('Comment', $unit_size['comment']);
|
||||
|
||||
echo $this->element('table',
|
||||
array('class' => 'item unit_size detail',
|
||||
'caption' => 'Unit Size Detail',
|
||||
'rows' => $rows,
|
||||
'column_class' => array('field', 'value')));
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* UnitSize Info Box
|
||||
*/
|
||||
|
||||
echo '<div class="infobox">' . "\n";
|
||||
$rows = array();
|
||||
$rows[] = array($unit_size['name'] . ' Units:', $stats['all']);
|
||||
$rows[] = array('Unavailable:', $stats['unavailable']);
|
||||
$rows[] = array('Vacant:', $stats['vacant']);
|
||||
$rows[] = array('Occupied:', $stats['occupied']);
|
||||
echo $this->element('table',
|
||||
array('class' => 'summary',
|
||||
'rows' => $rows,
|
||||
'column_class' => array('field', 'value'),
|
||||
'suppress_alternate_rows' => true,
|
||||
));
|
||||
echo '</div>' . "\n";
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
* Supporting Elements Section
|
||||
*/
|
||||
|
||||
echo '<div CLASS="detail supporting">' . "\n";
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* Ledger Entries
|
||||
*/
|
||||
|
||||
echo $this->element('units', array
|
||||
(// Grid configuration
|
||||
'config' => array
|
||||
('caption' => $unit_size['name'] . " Units",
|
||||
'filter' => array('unit_size_id' => $unit_size['id']),
|
||||
'include' => array('Deposit', 'Comment'),
|
||||
'exclude' => array('Size', 'Area', 'Balance'),
|
||||
)));
|
||||
|
||||
|
||||
/* End "detail supporting" div */
|
||||
echo '</div>' . "\n";
|
||||
|
||||
/* End page div */
|
||||
echo '</div>' . "\n";
|
||||
@@ -19,7 +19,10 @@ if (isset($unit['Unit']))
|
||||
$rows = array();
|
||||
$rows[] = array('Name', $unit['name']);
|
||||
$rows[] = array('Status', $unit['status']);
|
||||
$rows[] = array('Size', $unit_size['name']);
|
||||
$rows[] = array('Size', $html->link($unit_size['name'],
|
||||
array('controller' => 'unit_sizes',
|
||||
'action' => 'view',
|
||||
$unit_size['id'])));
|
||||
$rows[] = array('Deposit', FormatHelper::currency($unit['deposit']));
|
||||
$rows[] = array('Rent', FormatHelper::currency($unit['rent']));
|
||||
$rows[] = array('Comment', $unit['comment']);
|
||||
|
||||
Reference in New Issue
Block a user