Source: PAYMENT_DIRECT_DEBITS.js

'use strict';

/**
 * Controller for MP_ECM.
 *
 * @module controllers/MP_ECM
 */

var app = require('sitegenesis_controllers/cartridge/scripts/app');
var guard = require('sitegenesis_controllers/cartridge/scripts/guard');

/* API Includes */
var PaymentMgr = require('dw/order/PaymentMgr');
var OrderMgr = require('dw/order/OrderMgr');
var Transaction = require('dw/system/Transaction');
var URLUtils = require('dw/web/URLUtils');

var libPayment = require('int_payment_core/cartridge/scripts/lib/libPayment.ds')
var parameterMap = request.httpParameterMap;

/**
 * Reset the forms of all Direct Debits payment methods, except the one of the current selected payment method.
 */
function ResetPaymentForms() {
	var cart = app.getModel('Cart').get();
	
	Transaction.wrap(function () {
		session.forms.billing.paymentMethods.creditCard.clearFormElement();
		session.forms.billing.paymentMethods.bml.clearFormElement();
		cart.removePaymentInstruments(cart.getPaymentInstruments(dw.order.PaymentInstrument.METHOD_CREDIT_CARD));
		cart.removePaymentInstruments(cart.getPaymentInstruments(dw.order.PaymentInstrument.METHOD_BML));
	});
	
	if(session.forms.billing.paymentMethods.selectedPaymentMethodID.value.equals('DIRECT_DEBITS_DE')) {
		Transaction.wrap(function () {
			session.forms.billing.paymentMethods.directdebitsnl.clearFormElement();
			session.forms.billing.paymentMethods.directdebitsat.clearFormElement();
			cart.removePaymentInstruments(cart.getPaymentInstruments('DIRECT_DEBITS_NL'));
			cart.removePaymentInstruments(cart.getPaymentInstruments('DIRECT_DEBITS_AT'));
		});
	} else if(session.forms.billing.paymentMethods.selectedPaymentMethodID.value.equals('DIRECT_DEBITS_NL')) {
		Transaction.wrap(function () {
			session.forms.billing.paymentMethods.directdebitsde.clearFormElement();
			session.forms.billing.paymentMethods.directdebitsat.clearFormElement();
			cart.removePaymentInstruments(cart.getPaymentInstruments('DIRECT_DEBITS_DE'));
			cart.removePaymentInstruments(cart.getPaymentInstruments('DIRECT_DEBITS_AT'));
		});
	} else if(session.forms.billing.paymentMethods.selectedPaymentMethodID.value.equals('DIRECT_DEBITS_AT')) {
		Transaction.wrap(function () {
			session.forms.billing.paymentMethods.directdebitsde.clearFormElement();
			session.forms.billing.paymentMethods.directdebitsnl.clearFormElement();
			cart.removePaymentInstruments(cart.getPaymentInstruments('DIRECT_DEBITS_DE'));
			cart.removePaymentInstruments(cart.getPaymentInstruments('DIRECT_DEBITS_NL'));
		});
	}
}

/**
 * Reset the forms of all Direct Debits payment methods
 */
function ResetAllPaymentForms() {
	var cart = app.getModel('Cart').get();
	Transaction.wrap(function () {
		session.forms.billing.paymentMethods.directdebitsde.clearFormElement();
		session.forms.billing.paymentMethods.directdebitsnl.clearFormElement();
		session.forms.billing.paymentMethods.directdebitsat.clearFormElement();
		cart.removePaymentInstruments(cart.getPaymentInstruments('DIRECT_DEBITS_DE'));
		cart.removePaymentInstruments(cart.getPaymentInstruments('DIRECT_DEBITS_NL'));
		cart.removePaymentInstruments(cart.getPaymentInstruments('DIRECT_DEBITS_AT'));
	});
}

/*
 * Export the private controller methods
 */

exports.ResetPaymentForms = ResetPaymentForms;
exports.ResetAllPaymentForms = ResetAllPaymentForms;

/*
 * Export the publicly available controller methods
 */