Merge remote-tracking branch 'upstream/4.3' into 4.3-4.4-2013-11-03-17-29-16
[civicrm-core.git] / templates / CRM / Financial / Form / BatchTransaction.tpl
1 {*
2 +--------------------------------------------------------------------+
3 | CiviCRM version 4.4 |
4 +--------------------------------------------------------------------+
5 | Copyright CiviCRM LLC (c) 2004-2013 |
6 +--------------------------------------------------------------------+
7 | This file is a part of CiviCRM. |
8 | |
9 | CiviCRM is free software; you can copy, modify, and distribute it |
10 | under the terms of the GNU Affero General Public License |
11 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
12 | |
13 | CiviCRM is distributed in the hope that it will be useful, but |
14 | WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
16 | See the GNU Affero General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU Affero General Public |
19 | License and the CiviCRM Licensing Exception along |
20 | with this program; if not, contact CiviCRM LLC |
21 | at info[AT]civicrm[DOT]org. If you have questions about the |
22 | GNU Affero General Public License or the licensing of CiviCRM, |
23 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
24 +--------------------------------------------------------------------+
25 *}
26 {* this template is used for batch transaction screen, assign/remove transactions to batch *}
27 {if $statusID eq 1}
28 <div class="crm-form-block crm-search-form-block">
29 <div class="crm-accordion-wrapper crm-batch_transaction_search-accordion collapsed">
30 <div class="crm-accordion-header crm-master-accordion-header">
31 {ts}Edit Search Criteria{/ts}
32 </div>
33 <div class="crm-accordion-body">
34 <div id="searchForm" class="crm-block crm-form-block crm-contact-custom-search-activity-search-form-block">
35 <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div>
36 <table class="form-layout-compressed">
37 <tr>
38 <td class="font-size12pt" colspan="2">{$form.sort_name.label}&nbsp;&nbsp;{$form.sort_name.html|crmAddClass:'twenty'}</td>
39 </tr>
40 <tr>
41 {if $form.contact_tags}
42 <td><label>{ts}Contributor Tag(s){/ts}</label>
43 {$form.contact_tags.html}
44 {literal}
45 <script type="text/javascript">
46 cj("select#contact_tags").crmasmSelect({
47 addItemTarget: 'bottom',
48 animate: false,
49 highlight: true,
50 sortable: true,
51 respectParents: true
52 });
53 </script>
54 {/literal}
55 </td>
56 {else}
57 <td>&nbsp;</td>
58 {/if}
59 {if $form.group}
60 <td><label>{ts}Contributor Group(s){/ts}</label>
61 {$form.group.html}
62 {literal}
63 <script type="text/javascript">
64 cj("select#group").crmasmSelect({
65 addItemTarget: 'bottom',
66 animate: false,
67 highlight: true,
68 sortable: true,
69 respectParents: true
70 });
71
72 </script>
73 {/literal}
74 </td>
75 {else}
76 <td>&nbsp;</td>
77 {/if}
78 {include file="CRM/Contribute/Form/Search/Common.tpl"}
79 </table>
80 <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="botttom"}</div>
81 </div>
82 </div>
83 </div>
84 </div>
85 {if $statusID eq 1}
86 <div class="form-layout-compressed">{$form.trans_assign.html}&nbsp;{$form.submit.html}</div><br/>
87 {/if}
88 <div id="ltype">
89 <p></p>
90 <div class="form-item">
91 {strip}
92 <table id="crm-transaction-selector-assign" cellpadding="0" cellspacing="0" border="0">
93 <thead>
94 <tr>
95 <th class="crm-transaction-checkbox">{if $statusID eq 1}{$form.toggleSelect.html}{/if}</th>
96 <th class="crm-contact-type"></th>
97 <th class="crm-contact-name">{ts}Name{/ts}</th>
98 <th class="crm-amount">{ts}Amount{/ts}</th>
99 <th class="crm-trxnID">{ts}Trxn ID{/ts}</th>
100 <th class="crm-received">{ts}Received{/ts}</th>
101 <th class="crm-payment-method">{ts}Pay Method{/ts}</th>
102 <th class="crm-status">{ts}Status{/ts}</th>
103 <th class="crm-type">{ts}Financial Type{/ts}</th>
104 <th class="crm-transaction-links"></th>
105 </tr>
106 </thead>
107 </table>
108 {/strip}
109 </div>
110 </div>
111 {/if}
112
113 {literal}
114 <script type="text/javascript">
115 cj( function() {
116 cj().crmAccordions();
117 cj('#_qf_BatchTransaction_submit-top, #_qf_BatchTransaction_submit-botttom').click(function() {
118 cj('.crm-batch_transaction_search-accordion:not(.collapsed)').crmAccordionToggle();
119 });
120 var batchStatus = {/literal}{$statusID}{literal};
121 // build transaction listing only for open batches
122 if (batchStatus == 1) {
123 var paymentInstrumentID = {/literal}{if $paymentInstrumentID neq null}{$paymentInstrumentID}{else}'null'{/if}{literal};
124 if (paymentInstrumentID != 'null') {
125 buildTransactionSelectorAssign( true );
126 }
127 else {
128 buildTransactionSelectorAssign( false );
129 }
130 buildTransactionSelectorRemove();
131 cj('#_qf_BatchTransaction_submit-botttom, #_qf_BatchTransaction_submit-top').click( function() {
132 buildTransactionSelectorAssign( true );
133 return false;
134 });
135
136 cj("#trans_assign").attr('disabled',true);
137 cj("#trans_remove").attr('disabled',true);
138 cj('#crm-transaction-selector-assign #toggleSelect').click( function() {
139 enableActions('x');
140 });
141 cj('#crm-transaction-selector-remove #toggleSelects').click( function() {
142 enableActions('y');
143 });
144 cj('#Go').click( function() {
145 return selectAction("trans_assign","toggleSelect", "crm-transaction-selector-assign input[id^='mark_x_']");
146 });
147 cj('#GoRemove').click( function() {
148 return selectAction("trans_remove","toggleSelects", "crm-transaction-selector-remove input[id^='mark_y_']");
149 });
150 cj('#Go').click( function() {
151 if (cj("#trans_assign" ).val() != "" && cj("input[id^='mark_x_']").is(':checked')) {
152 bulkAssignRemove('Assign');
153 }
154 return false;
155 });
156 cj('#GoRemove').click( function() {
157 if (cj("#trans_remove" ).val() != "" && cj("input[id^='mark_y_']").is(':checked')) {
158 bulkAssignRemove('Remove');
159 }
160 return false;
161 });
162 cj("#crm-transaction-selector-assign input[id^='mark_x_']").click( function() {
163 enableActions('x');
164 });
165 cj("#crm-transaction-selector-remove input[id^='mark_y_']").click( function() {
166 enableActions('y');
167 });
168
169 cj("#crm-transaction-selector-assign #toggleSelect").click( function() {
170 if (cj("#crm-transaction-selector-assign #toggleSelect").is(':checked')) {
171 cj("#crm-transaction-selector-assign input[id^='mark_x_']").prop('checked',true);
172 }
173 else {
174 cj("#crm-transaction-selector-assign input[id^='mark_x_']").prop('checked',false);
175 }
176 });
177 cj("#crm-transaction-selector-remove #toggleSelects").click( function() {
178 if (cj("#crm-transaction-selector-remove #toggleSelects").is(':checked')) {
179 cj("#crm-transaction-selector-remove input[id^='mark_y_']").prop('checked',true);
180 }
181 else {
182 cj("#crm-transaction-selector-remove input[id^='mark_y_']").prop('checked',false);
183 }
184 });
185 }
186 else {
187 buildTransactionSelectorRemove();
188 }
189 });
190
191 function enableActions( type ) {
192 if (type == 'x') {
193 cj("#trans_assign").attr('disabled',false);
194 }
195 else {
196 cj("#trans_remove").attr('disabled',false);
197 }
198 }
199
200 function buildTransactionSelectorAssign(filterSearch) {
201 var columns = '';
202 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};
203 if ( filterSearch ) {
204 sourceUrl = sourceUrl+"&search=1";
205 var ZeroRecordText = '<div class="status messages">{/literal}{ts escape="js"}No Contributions found for your search criteria.{/ts}{literal}</li></ul></div>';
206 }
207
208 crmBatchSelector1 = cj('#crm-transaction-selector-assign').dataTable({
209 "bDestroy" : true,
210 "bFilter" : false,
211 "bAutoWidth" : false,
212 "aaSorting" : [[5, 'desc']],
213 "aoColumns" : [
214 {sClass:'crm-transaction-checkbox', bSortable:false},
215 {sClass:'crm-contact-type', bSortable:false},
216 {sClass:'crm-contact-name'},
217 {sClass:'crm-amount'},
218 {sClass:'crm-trxnID'},
219 {sClass:'crm-received'},
220 {sClass:'crm-payment-method'},
221 {sClass:'crm-status'},
222 {sClass:'crm-type'},
223 {sClass:'crm-transaction-links', bSortable:false}
224 ],
225 "bProcessing": true,
226 "asStripClasses" : [ "odd-row", "even-row" ],
227 "sPaginationType": "full_numbers",
228 "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
229 "bServerSide": true,
230 "bJQueryUI": true,
231 "sAjaxSource": sourceUrl,
232 "iDisplayLength": 25,
233 "oLanguage": {
234 "sZeroRecords": ZeroRecordText,
235 "sProcessing": {/literal}"{ts escape='js'}Processing...{/ts}"{literal},
236 "sLengthMenu": {/literal}"{ts escape='js'}Show _MENU_ entries{/ts}"{literal},
237 "sInfo": {/literal}"{ts escape='js'}Showing _START_ to _END_ of _TOTAL_ entries{/ts}"{literal},
238 "sInfoEmpty": {/literal}"{ts escape='js'}Showing 0 to 0 of 0 entries{/ts}"{literal},
239 "sInfoFiltered": {/literal}"{ts escape='js'}(filtered from _MAX_ total entries){/ts}"{literal},
240 "sSearch": {/literal}"{ts escape='js'}Search:{/ts}"{literal},
241 "oPaginate": {
242 "sFirst": {/literal}"{ts escape='js'}First{/ts}"{literal},
243 "sPrevious": {/literal}"{ts escape='js'}Previous{/ts}"{literal},
244 "sNext": {/literal}"{ts escape='js'}Next{/ts}"{literal},
245 "sLast": {/literal}"{ts escape='js'}Last{/ts}"{literal}
246 }
247 },
248 "fnServerData": function ( sSource, aoData, fnCallback ) {
249 if ( filterSearch ) {
250 cj('#searchForm :input').each(function() {
251 if (cj(this).val()) {
252 aoData.push(
253 {name:cj(this).attr('id'), value: cj(this).val()}
254 );
255 cj(':radio, :checkbox').each(function() {
256 if (cj(this).is(':checked')) {
257 aoData.push( { name: cj(this).attr('name'), value: cj(this).val() } );
258 }
259 });
260 }
261 });
262 }
263 cj.ajax({
264 "dataType": 'json',
265 "type": "POST",
266 "url": sSource,
267 "data": aoData,
268 "success": fnCallback
269 });
270 }
271 });
272 }
273
274 function buildTransactionSelectorRemove( ) {
275 var columns = '';
276 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};
277
278 crmBatchSelector = cj('#crm-transaction-selector-remove').dataTable({
279 "bDestroy" : true,
280 "bFilter" : false,
281 "bAutoWidth" : false,
282 "aaSorting" : [[5, 'desc']],
283 "aoColumns" : [
284 {sClass:'crm-transaction-checkbox', bSortable:false},
285 {sClass:'crm-contact-type', bSortable:false},
286 {sClass:'crm-contact-name'},
287 {sClass:'crm-amount'},
288 {sClass:'crm-trxnID'},
289 {sClass:'crm-received'},
290 {sClass:'crm-payment-method'},
291 {sClass:'crm-status'},
292 {sClass:'crm-type'},
293 {sClass:'crm-transaction-links', bSortable:false}
294 ],
295 "bProcessing": true,
296 "asStripClasses" : [ "odd-row", "even-row" ],
297 "sPaginationType": "full_numbers",
298 "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
299 "bServerSide": true,
300 "bJQueryUI": true,
301 "sAjaxSource": sourceUrl,
302 "iDisplayLength": 25,
303 "oLanguage": {
304 "sProcessing": {/literal}"{ts escape='js'}Processing...{/ts}"{literal},
305 "sLengthMenu": {/literal}"{ts escape='js'}Show _MENU_ entries{/ts}"{literal},
306 "sInfo": {/literal}"{ts escape='js'}Showing _START_ to _END_ of _TOTAL_ entries{/ts}"{literal},
307 "sInfoEmpty": {/literal}"{ts escape='js'}Showing 0 to 0 of 0 entries{/ts}"{literal},
308 "sInfoFiltered": {/literal}"{ts escape='js'}(filtered from _MAX_ total entries){/ts}"{literal},
309 "sSearch": {/literal}"{ts escape='js'}Search:{/ts}"{literal},
310 "oPaginate": {
311 "sFirst": {/literal}"{ts escape='js'}First{/ts}"{literal},
312 "sPrevious": {/literal}"{ts escape='js'}Previous{/ts}"{literal},
313 "sNext": {/literal}"{ts escape='js'}Next{/ts}"{literal},
314 "sLast": {/literal}"{ts escape='js'}Last{/ts}"{literal}
315 }
316 },
317 "fnServerData": function (sSource, aoData, fnCallback) {
318 cj.ajax({
319 "dataType": 'json',
320 "type": "POST",
321 "url": sSource,
322 "data": aoData,
323 "success": fnCallback
324 });
325 }
326 });
327 }
328
329 function selectAction( id, toggleSelectId, checkId ) {
330 if (cj("#"+ id ).is(':disabled')) {
331 return false;
332 }
333 else if (!cj("#" + toggleSelectId).is(':checked') && !cj("#" + checkId).is(':checked') && cj("#" + id).val() != "") {
334 CRM.alert ({/literal}'{ts escape="js"}Please select one or more contributions for this action.{/ts}'{literal});
335 return false;
336 }
337 else if (cj("#" + id).val() == "") {
338 CRM.alert ({/literal}'{ts escape="js"}Please select an action from the drop-down menu.{/ts}'{literal});
339 return false;
340 }
341 }
342
343 function bulkAssignRemove( action ) {
344 var postUrl = {/literal}"{crmURL p='civicrm/ajax/rest' h=0 q="className=CRM_Financial_Page_AJAX&fnName=bulkAssignRemove&entityID=$entityID" }"{literal};
345 var fids = [];
346 if (action == 'Assign') {
347 cj("input[id^='mark_x_']:checked").each( function () {
348 var a = cj(this).attr('id');
349 fids.push(a);
350 });
351 }
352 if (action == 'Remove') {
353 cj("input[id^='mark_y_']:checked").each( function () {
354 var a = cj(this).attr('id');
355 fids.push(a);
356 });
357 }
358 cj.post(postUrl, { ID: fids, action:action }, function(data) {
359 //this is custom status set when record update success.
360 if (data.status == 'record-updated-success') {
361 buildTransactionSelectorAssign( true );
362 buildTransactionSelectorRemove();
363 batchSummary({/literal}{$entityID}{literal});
364 }
365 else {
366 CRM.alert(data.status);
367 }
368 }, 'json');
369 }
370 </script>
371 {/literal}