Browse Source

DIV-949: Added logic to check payor and calculate total based on that.

pull/160/head
Charles Shin 6 years ago
parent
commit
fc5d9f53a8
3 changed files with 158 additions and 32 deletions
  1. +67
    -0
      edivorce/apps/core/static/js/main.js
  2. +40
    -30
      edivorce/apps/core/templates/question/06_children_facts.html
  3. +51
    -2
      edivorce/apps/core/utils/derived.py

+ 67
- 0
edivorce/apps/core/static/js/main.js View File

@ -366,6 +366,12 @@ $(function () {
} else {
$('#fact_sheet_c').hide();
}
// Initiate Child support payor.
populateChildSupportPayor(childWithBoth, childWithYou, childWithSpouse);
$('.determine-payor').on('change', function() {
populateChildSupportPayor(childWithBoth, childWithYou, childWithSpouse);
});
};
var populateChildrenFactSheets = function() {
@ -389,6 +395,67 @@ $(function () {
evaluateFactSheetShowCriteria(childrenData);
};
var populateChildSupportPayor = function(childWithBoth, childWithYou, childWithSpouse) {
// Get the payor and different amounts using the Factsheets presented and their values
//
var amount_b_you = $('#fact_b_your_child_support_paid').val();
var amount_b_spouse = $('#fact_b_your_spouse_child_support_paid').val();
var amount_c_you = $('#fact_c_your_child_support_paid').val();
var amount_c_spouse = $('#fact_c_your_spouse_child_support_paid').val();
// Show factsheet logic is same as evaluateFactSheetShowCriteria()
var show_factsheet_b = childWithBoth ? true : false;
var show_factsheet_c = ((childWithYou && (childWithSpouse || childWithBoth)) || (childWithSpouse && (childWithYou || childWithBoth))) ? true : false;
var payor_b = findPayor(amount_b_you, amount_b_spouse);
var payor_c = findPayor(amount_c_you, amount_c_spouse);
var diff_amounts_b = Math.abs(amount_b_you - amount_b_spouse);
var diff_amounts_c = Math.abs(amount_c_you - amount_c_spouse);
var payor_total = '';
var diff_amounts_total = 0;
if (show_factsheet_b && show_factsheet_c) {
// If payor is same for Factsheet B and C, total is Sum of two differences
// Otherwise it is subtraction and whoever with the greater number is the payor.
// Payor is Both when amounts are same (when total is 0)
if (payor_b === payor_c) {
payor_total = payor_b;
diff_amounts_total = diff_amounts_b + diff_amounts_c;
} else {
diff_amounts_total = Math.abs(diff_amounts_b - diff_amounts_c);
if (diff_amounts_b > diff_amounts_c) {
payor_total = payor_b;
} else if (diff_amounts_b < diff_amounts_c) {
payor_total = payor_c;
} else {
payor_total = 'Both myself and my spouse';
}
}
} else if (show_factsheet_b && !show_factsheet_c) {
// If only Factsheet B, use values from Factsheet B
payor_total = payor_b;
diff_amounts_total = diff_amounts_b;
} else if (show_factsheet_c && !show_factsheet_b) {
// If only Factsheet C, use values from Factsheet C
payor_total = payor_c;
diff_amounts_total = diff_amounts_c;
}
// Update value for Payor radio button and Factsheet D total support amount field.
$('#total_spouse_paid_child_support').val(diff_amounts_total);
$('input[name=child_support_payor][value="' + payor_total + '"]').prop("checked", true).change();
};
var findPayor = function(amount_you, amount_spouse) {
// Find payor based on the amount.
if (parseFloat(amount_you) > parseFloat(amount_spouse)) {
return 'Myself (Claimant 1)';
} else if (parseFloat(amount_you) < parseFloat(amount_spouse)) {
return 'My Spouse (Claimant 2)';
} else {
return 'Both myself and my spouse';
}
};
var saveChildQuestions = function(options) {
if (options !== undefined && options.persist) {
var childrenData = [];


+ 40
- 30
edivorce/apps/core/templates/question/06_children_facts.html View File

@ -115,12 +115,12 @@
</td>
<td class="fact-sheet-answer">
<div class="dollar-prefix">
{% money_input_field id="fact_b_your_child_support_paid" name="your_child_support_paid_b" class="fact-sheet-input claimants-child-support-amounts" data_calc_delta="true" data_delta_term_selector=".claimants-child-support-amounts" data_delta_target_selector="input[name=difference_payment_amounts_b]" placeholder="enter amount" %}
{% money_input_field id="fact_b_your_child_support_paid" name="your_child_support_paid_b" class="fact-sheet-input claimants-child-support-amounts determine-payor" data_calc_delta="true" data_delta_term_selector=".claimants-child-support-amounts" data_delta_target_selector="input[name=difference_payment_amounts_b]" placeholder="enter amount" %}
</div>
</td>
<td class="fact-sheet-answer">
<div class="dollar-prefix">
{% money_input_field id="fact_b_your_spouse_child_support_paid" name="your_spouse_child_support_paid_b" class="fact-sheet-input claimants-child-support-amounts" data_calc_delta="true" data_delta_term_selector=".claimants-child-support-amounts" data_delta_target_selector="input[name=difference_payment_amounts_b]" placeholder="enter amount" %}
{% money_input_field id="fact_b_your_spouse_child_support_paid" name="your_spouse_child_support_paid_b" class="fact-sheet-input claimants-child-support-amounts determine-payor" data_calc_delta="true" data_delta_term_selector=".claimants-child-support-amounts" data_delta_target_selector="input[name=difference_payment_amounts_b]" placeholder="enter amount" %}
</div>
</td>
</tr>
@ -227,7 +227,7 @@
</td>
<td class="fact-sheet-answer" colspan="2" readonly>
<div class="dollar-prefix">
{% money_input_field name="difference_payment_amounts_b" value="" class="money fact-sheet-input different-payment-amounts" readonly="" data_mirror="true" data_mirror_target="#total_spouse_paid_child_support_b" data_mirror_broadcast_change="true" data_sum="true" data_sum_class="different-payment-amounts" data_sum_target_id="total_spouse_paid_child_support" %}
{% money_input_field name="difference_payment_amounts_b" value="" class="money fact-sheet-input different-payment-amounts" readonly="" %}
</div>
</td>
</tr>
@ -302,7 +302,7 @@
</td>
<td class="fact-sheet-answer">
<div class="dollar-prefix">
{% money_input_field id="fact_c_your_spouse_child_support_paid" name="your_spouse_child_support_paid_c" class="fact-sheet-input money claimants-child-support-paid" data_calc_delta="true" data_delta_term_selector=".claimants-child-support-paid" data_delta_target_selector="input[name=difference_payment_amounts_c]" %}
{% money_input_field id="fact_c_your_spouse_child_support_paid" name="your_spouse_child_support_paid_c" class="fact-sheet-input money claimants-child-support-paid determine-payor" data_calc_delta="true" data_delta_term_selector=".claimants-child-support-paid" data_delta_target_selector="input[name=difference_payment_amounts_c]" %}
</div>
</td>
</tr>
@ -357,7 +357,7 @@
</td>
<td class="fact-sheet-answer">
<div class="dollar-prefix">
{% money_input_field id="fact_c_your_child_support_paid" name="your_child_support_paid_c" class="fact-sheet-input money claimants-child-support-paid" data_calc_delta="true" data_delta_term_selector=".claimants-child-support-paid" data_delta_target_selector="input[name=difference_payment_amounts_c]" %}
{% money_input_field id="fact_c_your_child_support_paid" name="your_child_support_paid_c" class="fact-sheet-input money claimants-child-support-paid determine-payor" data_calc_delta="true" data_delta_term_selector=".claimants-child-support-paid" data_delta_target_selector="input[name=difference_payment_amounts_c]" %}
</div>
</td>
</tr>
@ -367,7 +367,7 @@
</td>
<td class="fact-sheet-answer" readonly>
<div class="dollar-prefix">
{% money_input_field id="difference_payment_amounts_c" name="difference_payment_amounts_c" class="fact-sheet-input different-payment-amounts" readonly="" data_mirror="true" data_mirror_target="#total_spouse_paid_child_support_c" data_mirror_broadcast_change="true" data_sum="true" data_sum_class="different-payment-amounts" data_sum_target_id="total_spouse_paid_child_support" %}
{% money_input_field id="difference_payment_amounts_c" name="difference_payment_amounts_c" class="fact-sheet-input different-payment-amounts" readonly="" %}
</div>
</td>
</tr>
@ -401,21 +401,39 @@
Please select one
</p>
<div class="radio">
<label>
{% input_field type="radio" name="child_support_payor" autocomplete="off" value="Myself (Claimant 1)" %} {% if name_you %}{{ name_you }} {% else %} Myself {% endif %}(Claimant 1)
</label>
</div>
<div class="radio">
<label>
{% input_field type="radio" name="child_support_payor" autocomplete="off" value="My Spouse (Claimant 2)" %} {% if name_spouse %}{{ name_spouse }} {% else %} My spouse {% endif %} (Claimant 2)
</label>
</div>
<div class="radio">
<label>
{% input_field type="radio" name="child_support_payor" autocomplete="off" value="Both myself and my spouse" %} Both {% if name_you %}{{ name_you }} {% else %} myself {% endif %} and {% if name_spouse %}{{ name_spouse }} {% else %} my spouse {% endif %}
</label>
</div>
{% if derived.show_fact_sheet_b or derived.show_fact_sheet_c %}
<div class="radio">
<label>
{% input_field type="radio" name="child_support_payor" autocomplete="off" value="Myself (Claimant 1)" disabled="" %} {% if name_you %}{{ name_you }} {% else %} Myself {% endif %}(Claimant 1)
</label>
</div>
<div class="radio">
<label>
{% input_field type="radio" name="child_support_payor" autocomplete="off" value="My Spouse (Claimant 2)" disabled="" %} {% if name_spouse %}{{ name_spouse }} {% else %} My spouse {% endif %} (Claimant 2)
</label>
</div>
<div class="radio">
<label>
{% input_field type="radio" name="child_support_payor" autocomplete="off" value="Both myself and my spouse" disabled="" %} Both {% if name_you %}{{ name_you }} {% else %} myself {% endif %} and {% if name_spouse %}{{ name_spouse }} {% else %} my spouse {% endif %}
</label>
</div>
{% else %}
<div class="radio">
<label>
{% input_field type="radio" name="child_support_payor" autocomplete="off" value="Myself (Claimant 1)" %} {% if name_you %}{{ name_you }} {% else %} Myself {% endif %}(Claimant 1)
</label>
</div>
<div class="radio">
<label>
{% input_field type="radio" name="child_support_payor" autocomplete="off" value="My Spouse (Claimant 2)" %} {% if name_spouse %}{{ name_spouse }} {% else %} My spouse {% endif %} (Claimant 2)
</label>
</div>
<div class="radio">
<label>
{% input_field type="radio" name="child_support_payor" autocomplete="off" value="Both myself and my spouse" %} Both {% if name_you %}{{ name_you }} {% else %} myself {% endif %} and {% if name_spouse %}{{ name_spouse }} {% else %} my spouse {% endif %}
</label>
</div>
{% endif %}
<div class="collapse-trigger collapsed" data-toggle="collapse" aria-expanded="false" data-target="#collapse_determine_payor" aria-controls="collapse_determine_payor">
<div>
@ -474,18 +492,10 @@
<b>This information is needed for the Judge. You will be able to indicate a different child support amount in a following step.</b>
</p>
<div>
{% if derived.show_fact_sheet_b and derived.show_fact_sheet_c %}
{% if derived.show_fact_sheet_b or derived.show_fact_sheet_c %}
<div class="dollar-prefix">
{% money_input_field id="total_spouse_paid_child_support" name="total_spouse_paid_child_support" value=derived.guideline_amounts_difference_total class="fact-sheet-input money input-narrow form-block response-textbox" readonly="" %}
</div>
{% elif derived.show_fact_sheet_b %}
<div class="dollar-prefix">
{% money_input_field id="total_spouse_paid_child_support_b" name="total_spouse_paid_child_support" class="fact-sheet-input money input-narrow form-block response-textbox" readonly="" %}
</div>
{% elif derived.show_fact_sheet_c %}
<div class="dollar-prefix">
{% money_input_field id="total_spouse_paid_child_support_c" name="total_spouse_paid_child_support" class="fact-sheet-input money input-narrow form-block response-textbox" readonly="" %}
</div>
{% else %}
<div class="dollar-prefix">
{% money_input_field name="total_spouse_paid_child_support" value_src="payor_monthly_child_support_amount" class="fact-sheet-input money input-narrow form-block response-textbox" readonly="" %}


+ 51
- 2
edivorce/apps/core/utils/derived.py View File

@ -33,6 +33,8 @@ DERIVED_DATA = [
'show_fact_sheet_f_you',
'show_fact_sheet_f_spouse',
'has_fact_sheets',
'child_support_payor_b',
'child_support_payor_c',
'guideline_amounts_difference_b',
'guideline_amounts_difference_c',
'guideline_amounts_difference_total',
@ -243,6 +245,48 @@ def has_fact_sheets(responses, derived):
derived['show_fact_sheet_d'], derived['show_fact_sheet_e'],
derived['show_fact_sheet_f'], ])
def child_support_payor_b(responses, derived):
""" Return who the payor is depends on the monthly amount from Factsheet B """
try:
amount_1 = float(responses.get('your_child_support_paid_b', 0))
except ValueError:
amount_1 = 0
try:
amount_2 = float(responses.get('your_spouse_child_support_paid_b', 0))
except ValueError:
amount_2 = 0
if amount_1 > amount_2:
payor = 'you'
elif amount_1 < amount_2:
payor = 'spouse'
else:
payor = 'both'
return payor
def child_support_payor_c(responses, derived):
""" Return who the payor is depends on the monthly amount from Factsheet C """
try:
amount_1 = float(responses.get('your_child_support_paid_c', 0))
except ValueError:
amount_1 = 0
try:
amount_2 = float(responses.get('your_spouse_child_support_paid_c', 0))
except ValueError:
amount_2 = 0
if amount_1 > amount_2:
payor = 'you'
elif amount_1 < amount_2:
payor = 'spouse'
else:
payor = 'both'
return payor
def guideline_amounts_difference_b(responses, derived):
"""
Return the difference between the guideline amounts to be paid by
@ -286,9 +330,14 @@ def guideline_amounts_difference_total(responses, derived):
amount_b = derived['guideline_amounts_difference_b'] if derived['show_fact_sheet_b'] else 0
amount_c = derived['guideline_amounts_difference_c'] if derived['show_fact_sheet_c'] else 0
return amount_b + amount_c
payor_b = derived['child_support_payor_b']
payor_c = derived['child_support_payor_c']
if payor_b == payor_c:
return amount_b + amount_c
else:
return abs(amount_b - amount_c)
def schedule_1_amount(responses, derived):
""" Return the amount as defined in schedule 1 for child support """


Loading…
Cancel
Save