Merge pull request #21916 from mattwire/recurprocessorid
[civicrm-core.git] / templates / CRM / Financial / Form / BatchTransaction.tpl
CommitLineData
6a488035
TO
1{*
2 +--------------------------------------------------------------------+
1188c7a8 3 | Copyright CiviCRM LLC. All rights reserved. |
6a488035 4 | |
1188c7a8
TO
5 | This work is published under the GNU AGPLv3 license with some |
6 | permitted exceptions and without any warranty. For full license |
7 | and copyright information, see https://civicrm.org/licensing |
6a488035
TO
8 +--------------------------------------------------------------------+
9*}
10{* this template is used for batch transaction screen, assign/remove transactions to batch *}
89d18ebd 11{if in_array($batchStatus, array('Open', 'Reopened'))}
6a488035
TO
12<div class="crm-form-block crm-search-form-block">
13 <div class="crm-accordion-wrapper crm-batch_transaction_search-accordion collapsed">
14 <div class="crm-accordion-header crm-master-accordion-header">
15 {ts}Edit Search Criteria{/ts}
16 </div>
17 <div class="crm-accordion-body">
18 <div id="searchForm" class="crm-block crm-form-block crm-contact-custom-search-activity-search-form-block">
19 <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div>
20 <table class="form-layout-compressed">
21 <tr>
c95f81ba
MR
22 <td class="font-size12pt" colspan="2">
23 {$form.sort_name.label}<br>
24 {$form.sort_name.html|crmAddClass:'twenty'}
25 </td>
6a488035
TO
26 </tr>
27 <tr>
633ce286 28 {if !empty($form.contact_tags)}
c95f81ba
MR
29 <td>
30 <label>{ts}Contributor Tag(s){/ts}</label><br>
6a488035 31 {$form.contact_tags.html}
6a488035
TO
32 </td>
33 {else}
34 <td>&nbsp;</td>
35 {/if}
633ce286 36 {if !empty($form.group)}
c95f81ba 37 <td><label>{ts}Contributor Group(s){/ts}</label><br>
6a488035 38 {$form.group.html}
6a488035
TO
39 </td>
40 {else}
41 <td>&nbsp;</td>
42 {/if}
88a58538 43 </tr>
6a488035
TO
44 {include file="CRM/Contribute/Form/Search/Common.tpl"}
45 </table>
89d18ebd 46 <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div>
6a488035
TO
47 </div>
48 </div>
49 </div>
50</div>
89d18ebd 51{if in_array($batchStatus, array('Open', 'Reopened'))}
6a488035
TO
52<div class="form-layout-compressed">{$form.trans_assign.html}&nbsp;{$form.submit.html}</div><br/>
53{/if}
54<div id="ltype">
55 <p></p>
56 <div class="form-item">
57 {strip}
24e7a504 58 <table id="crm-transaction-selector-assign-{$entityID}" cellpadding="0" cellspacing="0" border="0">
6a488035
TO
59 <thead>
60 <tr>
89d18ebd 61 <th class="crm-transaction-checkbox">{if in_array($batchStatus, array('Open', 'Reopened'))}{$form.toggleSelect.html}{/if}</th>
6a488035
TO
62 <th class="crm-contact-type"></th>
63 <th class="crm-contact-name">{ts}Name{/ts}</th>
64 <th class="crm-amount">{ts}Amount{/ts}</th>
a48d1d9c 65 <th class="crm-trxnID">{ts}Trxn ID{/ts}</th>
2ae265ea
PN
66 <th class="crm-trxn_date">{ts}Payment/Transaction Date{/ts}</th>
67 <th class="crm-received">{ts}Contribution Date{/ts}</th>
6a488035 68 <th class="crm-payment-method">{ts}Pay Method{/ts}</th>
a48d1d9c 69 <th class="crm-status">{ts}Status{/ts}</th>
6a488035
TO
70 <th class="crm-type">{ts}Financial Type{/ts}</th>
71 <th class="crm-transaction-links"></th>
72 </tr>
73 </thead>
74 </table>
75 {/strip}
76 </div>
77</div>
78{/if}
79
80{literal}
81<script type="text/javascript">
3cc60a06 82CRM.$(function($) {
c769b751 83 CRM.$('#_qf_BatchTransaction_submit-top, #_qf_BatchTransaction_submit-bottom').click(function() {
2c68626a 84 CRM.$('.crm-batch_transaction_search-accordion:not(.collapsed)').crmAccordionToggle();
6a488035
TO
85 });
86 var batchStatus = {/literal}{$statusID}{literal};
89d18ebd
PN
87 {/literal}{if $validStatus}{literal}
88 // build transaction listing only for open/reopened batches
6a488035
TO
89 var paymentInstrumentID = {/literal}{if $paymentInstrumentID neq null}{$paymentInstrumentID}{else}'null'{/if}{literal};
90 if (paymentInstrumentID != 'null') {
91 buildTransactionSelectorAssign( true );
92 }
93 else {
94 buildTransactionSelectorAssign( false );
95 }
96 buildTransactionSelectorRemove();
c769b751 97 CRM.$('#_qf_BatchTransaction_submit-bottom, #_qf_BatchTransaction_submit-top').click( function() {
6a488035
TO
98 buildTransactionSelectorAssign( true );
99 return false;
100 });
101
2c68626a
DJ
102 CRM.$("#trans_assign").prop('disabled',true);
103 CRM.$("#trans_remove").prop('disabled',true);
104 CRM.$('#crm-transaction-selector-assign-{/literal}{$entityID}{literal} #toggleSelect').click( function() {
6a488035
TO
105 enableActions('x');
106 });
2c68626a 107 CRM.$('#crm-transaction-selector-remove-{/literal}{$entityID}{literal} #toggleSelects').click( function() {
6a488035
TO
108 enableActions('y');
109 });
2c68626a 110 CRM.$('#Go').click( function() {
24e7a504 111 return selectAction("trans_assign","toggleSelect", "crm-transaction-selector-assign-{/literal}{$entityID}{literal} input[id^='mark_x_']");
6a488035 112 });
2c68626a 113 CRM.$('#GoRemove').click( function() {
24e7a504 114 return selectAction("trans_remove","toggleSelects", "crm-transaction-selector-remove-{/literal}{$entityID}{literal} input[id^='mark_y_']");
6a488035 115 });
2c68626a
DJ
116 CRM.$('#Go').click( function() {
117 if (CRM.$("#trans_assign" ).val() != "" && CRM.$("input[id^='mark_x_']").is(':checked')) {
6a488035
TO
118 bulkAssignRemove('Assign');
119 }
120 return false;
121 });
2c68626a
DJ
122 CRM.$('#GoRemove').click( function() {
123 if (CRM.$("#trans_remove" ).val() != "" && CRM.$("input[id^='mark_y_']").is(':checked')) {
6a488035
TO
124 bulkAssignRemove('Remove');
125 }
126 return false;
127 });
2c68626a 128 CRM.$("#crm-transaction-selector-assign-{/literal}{$entityID}{literal} input[id^='mark_x_']").click( function() {
6a488035
TO
129 enableActions('x');
130 });
2c68626a 131 CRM.$("#crm-transaction-selector-remove-{/literal}{$entityID}{literal} input[id^='mark_y_']").click( function() {
6a488035
TO
132 enableActions('y');
133 });
134
2c68626a 135 CRM.$("#crm-transaction-selector-assign-{/literal}{$entityID}{literal} #toggleSelect").click( function() {
88a58538 136 toggleFinancialSelections('#toggleSelect', 'assign');
6a488035 137 });
2c68626a 138 CRM.$("#crm-transaction-selector-remove-{/literal}{$entityID}{literal} #toggleSelects").click( function() {
88a58538 139 toggleFinancialSelections('#toggleSelects', 'remove');
6a488035 140 });
89d18ebd 141 {/literal}{else}{literal}
6a488035 142 buildTransactionSelectorRemove();
89d18ebd 143 {/literal}{/if}{literal}
6a488035
TO
144});
145
146function enableActions( type ) {
147 if (type == 'x') {
2c68626a 148 CRM.$("#trans_assign").prop('disabled',false);
6a488035
TO
149 }
150 else {
2c68626a 151 CRM.$("#trans_remove").prop('disabled',false);
6a488035
TO
152 }
153}
154
88a58538 155function toggleFinancialSelections(toggleID, toggleClass) {
160fc664 156 var mark = 'x';
88a58538
PN
157 if (toggleClass == 'remove') {
158 mark = 'y';
159 }
160 if (CRM.$("#crm-transaction-selector-" + toggleClass + "-{/literal}{$entityID}{literal} " + toggleID).is(':checked')) {
161 CRM.$("#crm-transaction-selector-" + toggleClass + "-{/literal}{$entityID}{literal} input[id^='mark_" + mark + "_']").prop('checked',true);
162 }
163 else {
164 CRM.$("#crm-transaction-selector-" + toggleClass + "-{/literal}{$entityID}{literal} input[id^='mark_" + mark + "_']").prop('checked',false);
165 }
166}
167
6a488035
TO
168function buildTransactionSelectorAssign(filterSearch) {
169 var columns = '';
170 var sourceUrl = {/literal}'{crmURL p="civicrm/ajax/rest" h=0 q="className=CRM_Financial_Page_AJAX&fnName=getFinancialTransactionsList&snippet=4&context=financialBatch&entityID=$entityID&notPresent=1&statusID=$statusID"}'{literal};
171 if ( filterSearch ) {
172 sourceUrl = sourceUrl+"&search=1";
1eba7e53 173 var ZeroRecordText = '<div class="status messages">{/literal}{ts escape="js"}None found.{/ts}{literal}</li></ul></div>';
6a488035
TO
174 }
175
2c68626a 176 crmBatchSelector1 = CRM.$('#crm-transaction-selector-assign-{/literal}{$entityID}{literal}').dataTable({
6a488035
TO
177 "bDestroy" : true,
178 "bFilter" : false,
179 "bAutoWidth" : false,
bff556f2 180 "lengthMenu": [ 10, 25, 50, 100, 250, 500, 1000, 2000 ],
6a488035
TO
181 "aaSorting" : [[5, 'desc']],
182 "aoColumns" : [
183 {sClass:'crm-transaction-checkbox', bSortable:false},
184 {sClass:'crm-contact-type', bSortable:false},
185 {sClass:'crm-contact-name'},
186 {sClass:'crm-amount'},
187 {sClass:'crm-trxnID'},
dbf605ab 188 {sClass:'crm-trxn_date'},
6a488035
TO
189 {sClass:'crm-received'},
190 {sClass:'crm-payment-method'},
191 {sClass:'crm-status'},
192 {sClass:'crm-type'},
193 {sClass:'crm-transaction-links', bSortable:false}
194 ],
195 "bProcessing": true,
196 "asStripClasses" : [ "odd-row", "even-row" ],
197 "sPaginationType": "full_numbers",
198 "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
199 "bServerSide": true,
200 "bJQueryUI": true,
201 "sAjaxSource": sourceUrl,
202 "iDisplayLength": 25,
203 "oLanguage": {
204 "sZeroRecords": ZeroRecordText,
205 "sProcessing": {/literal}"{ts escape='js'}Processing...{/ts}"{literal},
206 "sLengthMenu": {/literal}"{ts escape='js'}Show _MENU_ entries{/ts}"{literal},
207 "sInfo": {/literal}"{ts escape='js'}Showing _START_ to _END_ of _TOTAL_ entries{/ts}"{literal},
208 "sInfoEmpty": {/literal}"{ts escape='js'}Showing 0 to 0 of 0 entries{/ts}"{literal},
209 "sInfoFiltered": {/literal}"{ts escape='js'}(filtered from _MAX_ total entries){/ts}"{literal},
210 "sSearch": {/literal}"{ts escape='js'}Search:{/ts}"{literal},
211 "oPaginate": {
212 "sFirst": {/literal}"{ts escape='js'}First{/ts}"{literal},
213 "sPrevious": {/literal}"{ts escape='js'}Previous{/ts}"{literal},
214 "sNext": {/literal}"{ts escape='js'}Next{/ts}"{literal},
215 "sLast": {/literal}"{ts escape='js'}Last{/ts}"{literal}
216 }
217 },
218 "fnServerData": function ( sSource, aoData, fnCallback ) {
219 if ( filterSearch ) {
2c68626a
DJ
220 CRM.$('#searchForm :input').each(function() {
221 if (CRM.$(this).val()) {
6a488035 222 aoData.push(
2c68626a 223 {name:CRM.$(this).attr('id'), value: CRM.$(this).val()}
6a488035 224 );
2c68626a
DJ
225 CRM.$(':radio, :checkbox').each(function() {
226 if (CRM.$(this).is(':checked')) {
227 aoData.push( { name: CRM.$(this).attr('name'), value: CRM.$(this).val() } );
6a488035
TO
228 }
229 });
230 }
231 });
232 }
2c68626a 233 CRM.$.ajax({
6a488035
TO
234 "dataType": 'json',
235 "type": "POST",
236 "url": sSource,
237 "data": aoData,
160fc664
PN
238 "success": function(b) {
239 fnCallback(b);
240 toggleFinancialSelections('#toggleSelect', 'assign');
241 }
6a488035
TO
242 });
243 }
244});
633ce286 245
6a488035
TO
246}
247
248function buildTransactionSelectorRemove( ) {
249 var columns = '';
250 var sourceUrl = {/literal}'{crmURL p="civicrm/ajax/rest" h=0 q="className=CRM_Financial_Page_AJAX&fnName=getFinancialTransactionsList&snippet=4&context=financialBatch&entityID=$entityID&statusID=$statusID"}'{literal};
251
2c68626a 252 crmBatchSelector = CRM.$('#crm-transaction-selector-remove-{/literal}{$entityID}{literal}').dataTable({
6a488035
TO
253 "bDestroy" : true,
254 "bFilter" : false,
255 "bAutoWidth" : false,
256 "aaSorting" : [[5, 'desc']],
257 "aoColumns" : [
258 {sClass:'crm-transaction-checkbox', bSortable:false},
259 {sClass:'crm-contact-type', bSortable:false},
260 {sClass:'crm-contact-name'},
261 {sClass:'crm-amount'},
262 {sClass:'crm-trxnID'},
dbf605ab 263 {sClass:'crm-trxn_date'},
6a488035
TO
264 {sClass:'crm-received'},
265 {sClass:'crm-payment-method'},
266 {sClass:'crm-status'},
267 {sClass:'crm-type'},
268 {sClass:'crm-transaction-links', bSortable:false}
269 ],
270 "bProcessing": true,
271 "asStripClasses" : [ "odd-row", "even-row" ],
272 "sPaginationType": "full_numbers",
273 "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
274 "bServerSide": true,
275 "bJQueryUI": true,
276 "sAjaxSource": sourceUrl,
277 "iDisplayLength": 25,
278 "oLanguage": {
279 "sProcessing": {/literal}"{ts escape='js'}Processing...{/ts}"{literal},
280 "sLengthMenu": {/literal}"{ts escape='js'}Show _MENU_ entries{/ts}"{literal},
281 "sInfo": {/literal}"{ts escape='js'}Showing _START_ to _END_ of _TOTAL_ entries{/ts}"{literal},
282 "sInfoEmpty": {/literal}"{ts escape='js'}Showing 0 to 0 of 0 entries{/ts}"{literal},
283 "sInfoFiltered": {/literal}"{ts escape='js'}(filtered from _MAX_ total entries){/ts}"{literal},
284 "sSearch": {/literal}"{ts escape='js'}Search:{/ts}"{literal},
285 "oPaginate": {
286 "sFirst": {/literal}"{ts escape='js'}First{/ts}"{literal},
287 "sPrevious": {/literal}"{ts escape='js'}Previous{/ts}"{literal},
288 "sNext": {/literal}"{ts escape='js'}Next{/ts}"{literal},
289 "sLast": {/literal}"{ts escape='js'}Last{/ts}"{literal}
290 }
291 },
292 "fnServerData": function (sSource, aoData, fnCallback) {
2c68626a 293 CRM.$.ajax({
6a488035
TO
294 "dataType": 'json',
295 "type": "POST",
296 "url": sSource,
297 "data": aoData,
160fc664
PN
298 "success": function(b) {
299 fnCallback(b);
300 toggleFinancialSelections('#toggleSelects', 'remove');
301 }
6a488035
TO
302 });
303 }
304});
305}
306
307function selectAction( id, toggleSelectId, checkId ) {
2c68626a 308 if (CRM.$("#"+ id ).is(':disabled')) {
6a488035
TO
309 return false;
310 }
2c68626a 311 else if (!CRM.$("#" + toggleSelectId).is(':checked') && !CRM.$("#" + checkId).is(':checked') && CRM.$("#" + id).val() != "") {
6a488035
TO
312 CRM.alert ({/literal}'{ts escape="js"}Please select one or more contributions for this action.{/ts}'{literal});
313 return false;
314 }
2c68626a 315 else if (CRM.$("#" + id).val() == "") {
6a488035
TO
316 CRM.alert ({/literal}'{ts escape="js"}Please select an action from the drop-down menu.{/ts}'{literal});
317 return false;
318 }
319}
320
321function bulkAssignRemove( action ) {
322 var postUrl = {/literal}"{crmURL p='civicrm/ajax/rest' h=0 q="className=CRM_Financial_Page_AJAX&fnName=bulkAssignRemove&entityID=$entityID" }"{literal};
323 var fids = [];
324 if (action == 'Assign') {
2c68626a
DJ
325 CRM.$("input[id^='mark_x_']:checked").each( function () {
326 var a = CRM.$(this).attr('id');
6a488035
TO
327 fids.push(a);
328 });
329 }
330 if (action == 'Remove') {
2c68626a
DJ
331 CRM.$("input[id^='mark_y_']:checked").each( function () {
332 var a = CRM.$(this).attr('id');
6a488035
TO
333 fids.push(a);
334 });
335 }
2c68626a 336 CRM.$.post(postUrl, { ID: fids, action:action }, function(data) {
6a488035
TO
337 //this is custom status set when record update success.
338 if (data.status == 'record-updated-success') {
339 buildTransactionSelectorAssign( true );
340 buildTransactionSelectorRemove();
341 batchSummary({/literal}{$entityID}{literal});
342 }
343 else {
344 CRM.alert(data.status);
a48d1d9c 345 }
6a488035
TO
346 }, 'json');
347}
348</script>
349{/literal}