Standing

Datatables

by Alex Yhap

HTML

<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="https://cdn.datatables.net/1.10.11/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.11/css/jquery.dataTables.min.css">
<apex:page id="StandingOrdersPage" controller="StandingOrdersController" sidebar="false" doctype="html-5.0">
    <head>

        <title>Standing Orders</title>

        <!-- jQuery -->
        <apex:includescript value="//code.jquery.com/jquery-1.12.0.min.js" / >
        <!-- DataTables -->
        <apex:includescript value="//cdn.datatables.net/1.10.11/js/jquery.dataTables.min.js" />
        <apex:stylesheet value="//cdn.datatables.net/1.10.11/css/jquery.dataTables.min.css" />
        <!-- Table Tools -->
        <apex:includescript value="//datatables.net/release-datatables/extensions/TableTools/js/dataTables.tableTools.js" />
        <apex:stylesheet value="//datatables.net/release-datatables/extensions/TableTools/css/dataTables.tableTools.css" />
        <!-- DataTables Select -->
        <!-- https://datatables.net/extensions/select/examples/ -->
        <apex:includescript value="//cdn.datatables.net/select/1.1.2/js/dataTables.select.min.js" />
        <apex:stylesheet value="//cdn.datatables.net/select/1.1.2/css/select.dataTables.min.css" />
        <!-- DataTables Select -->
        <apex:includescript value="//cdn.datatables.net/buttons/1.1.2/js/dataTables.buttons.min.js" />
        <apex:stylesheet value="//cdn.datatables.net/buttons/1.1.2/css/buttons.dataTables.min.css" />
        <!-- Fixed Header -->        
        <apex:includescript value="//cdn.datatables.net/fixedheader/3.1.1/js/dataTables.fixedHeader.min.js" />
        <apex:stylesheet value="//cdn.datatables.net/fixedheader/3.1.1/css/fixedHeader.dataTables.min.css" />
        <!-- SweetAlert 2 -->
        <apex:includescript value="//cdn.jsdelivr.net/sweetalert2/3.0.1/sweetalert2.min.js" />
        <apex:stylesheet...

JavaScript

public class StandingOrdersController {
    //http://blog.jeffdouglas.com/2011/03/02/dynamically-group-display-query-results/
    //http://bobbuzzard.blogspot.ca/2011/06/grouping-records-and-children-in.html
    
    Public List<selectoption> RecurringOptions {get;set;}
    Public String RecurringType {get;set;}
    Public Date PaymentDate {get;set;}
    Public List<Gift__c> giftList {get;set;}
    Public List<Payment__c> paymentList {get;set;}

    Public List<TransactionObj> TransactionObjList
    {get{
            if ( TransactionObjList == null ){
                TransactionObjList = new List<TransactionObj>();
                for (Gift__c g:giftList){TransactionObjList.add( new TransactionObj( g ) );}
            }
            return TransactionObjList;
        }
        private set;
    }    
    
    Public StandingOrdersController(){
        init();
    }

    Private void init(){
        RecurringOptions = initializeRecurringOptions();
        RecurringType = 'Monthly';  //Set Default Value
        searchTransaction();        
    }

    Public void searchTransaction(){
        giftList = new List<Gift__c>();
        giftList = [SELECT ID, Name, Recurring_Donation__c, Recurring_Donation__r.Name, Recurring_Frequency__c, Constituent__c, Constituent__r.Name, Gift_Type__c, causeview__Expected_Amount__c 
                    FROM Gift__c 
                    WHERE Recurring_Frequency__c =:RecurringType
                    ORDER BY CreatedDate DESC];
        TransactionObjList = null;
        System.debug('After: '+giftList);
        System.debug('RecurringType: '+RecurringType);
    }

    Public void createPayments(){
        paymentList = new List<Payment__c>();
        Id standardPaymentRecordTypeId =[SELECT Id FROM RecordType WHERE Name ='Standard' AND SobjectType ='causeview__Payment__c' Limit 1].Id;

        for(Gift__c t:giftList)
        {
            System.debug(t);

            Payment__c payment = new causeview__Payment__c();
           ...