diff --git a/ledger/payments/bpoint/management/commands/bpoint_ledger_payment_audit_report.py b/ledger/payments/bpoint/management/commands/bpoint_ledger_payment_audit_report.py new file mode 100644 index 000000000..fb822607d --- /dev/null +++ b/ledger/payments/bpoint/management/commands/bpoint_ledger_payment_audit_report.py @@ -0,0 +1,58 @@ +from django.core.management.base import BaseCommand +from django.utils import timezone +from ledger.payments.bpoint.models import BpointTransaction, BpointToken +#from ledger.payments.models import Invoice,OracleInterface,CashTransaction +#from oscar.apps.order.models import Order +#from ledger.basket.models import Basket +from django.conf import settings +from datetime import timedelta, datetime +from ledger.payments.bpoint.facade import Facade +from ledger.emails.emails import sendHtmlEmail + +class Command(BaseCommand): + help = 'Check for payment which have been completed but are missing a booking.' + + def add_arguments(self, parser): + yesterday = datetime.today() - timedelta(days=1) + settlement_date_search = yesterday.strftime("%Y%m%d") + parser.add_argument('settlement_date', nargs='?', default=settlement_date_search) + + def handle(self, *args, **options): + rows = [] + #system = settings.PS_PAYMENT_SYSTEM_ID + #system = system.replace('S','0') + #rows = bpoint_integrity_checks(system,100,2) + SYSTEM_ID = '' + if settings.PS_PAYMENT_SYSTEM_ID: + SYSTEM_ID = settings.PS_PAYMENT_SYSTEM_ID.replace("S","0") + + yesterday = datetime.today() - timedelta(days=1) + settlement_date_search = yesterday.strftime("%Y%m%d") + if options['settlement_date']: + settlement_date_search = options['settlement_date'] + print ("Checking :"+settlement_date_search) + bpoint_facade = Facade() + b = bpoint_facade.fetch_transaction_by_settlement_date(settlement_date_search) + ledger_payment_amount = 0 + bpoint_amount = 0 + for c in b: + if c.bank_response_code == '00': + + amount = str(c.amount)[:-2]+'.'+str(c.amount)[-2:] + bpoint_amount = bpoint_amount + c.amount + bp = BpointTransaction.objects.filter(crn1=c.crn1) + if bp.count() > 0: + ledger_payment_amount = ledger_payment_amount + bp[0].amount + rows.append({'txn_number': c.txn_number,'crn1': c.crn1,'processed_date_time': c.processed_date_time, 'settlement_date': c.settlement_date, 'action': c.action+str(":"+amount), 'amount': amount, 'bpoint_amount': bpoint_amount, 'ledger_payment_amount': ledger_payment_amount }) + + if (len(rows)) > 0: + print ("Sending Report") + context = { + 'settlement_date' : settlement_date_search, + 'rows' : rows + } + email_list = [] + for email_to in settings.NOTIFICATION_EMAIL.split(","): + email_list.append(email_to) + sendHtmlEmail(tuple(email_list),"[LEDGER] Bpoint Ledger Payment Audit Report "+SYSTEM_ID,context,'email/bpoint_ledger_payment_audit.html',None,None,settings.EMAIL_FROM,'system-oim',attachments=None) + diff --git a/ledger/payments/bpoint/management/commands/bpoint_settlement_report_from_payment_gateway.py b/ledger/payments/bpoint/management/commands/bpoint_settlement_report_from_payment_gateway.py new file mode 100644 index 000000000..910c6c505 --- /dev/null +++ b/ledger/payments/bpoint/management/commands/bpoint_settlement_report_from_payment_gateway.py @@ -0,0 +1,50 @@ +from django.core.management.base import BaseCommand +from django.utils import timezone +from ledger.payments.bpoint.models import BpointTransaction, BpointToken +#from ledger.payments.models import Invoice,OracleInterface,CashTransaction +#from oscar.apps.order.models import Order +#from ledger.basket.models import Basket +from django.conf import settings +from datetime import timedelta, datetime +from ledger.payments.bpoint.facade import Facade +from ledger.emails.emails import sendHtmlEmail + +class Command(BaseCommand): + help = 'Check for payment which have been completed but are missing a booking.' + + def add_arguments(self, parser): + yesterday = datetime.today() - timedelta(days=1) + settlement_date_search = yesterday.strftime("%Y%m%d") + parser.add_argument('settlement_date', nargs='?', default=settlement_date_search) + + def handle(self, *args, **options): + rows = [] + #system = settings.PS_PAYMENT_SYSTEM_ID + #system = system.replace('S','0') + #rows = bpoint_integrity_checks(system,100,2) + SYSTEM_ID = '' + if settings.PS_PAYMENT_SYSTEM_ID: + SYSTEM_ID = settings.PS_PAYMENT_SYSTEM_ID.replace("S","0") + + yesterday = datetime.today() - timedelta(days=1) + settlement_date_search = yesterday.strftime("%Y%m%d") + if options['settlement_date']: + settlement_date_search = options['settlement_date'] + print ("Checking :"+settlement_date_search) + bpoint_facade = Facade() + b = bpoint_facade.fetch_transaction_by_settlement_date(settlement_date_search) + for c in b: + if c.bank_response_code == '00': + amount = str(c.amount)[:-2]+'.'+str(c.amount)[-2:] + rows.append({'txn_number': c.txn_number,'crn1': c.crn1,'processed_date_time': c.processed_date_time, 'settlement_date': c.settlement_date, 'action': c.action, 'amount': amount}) + if (len(rows)) > 0: + print ("Sending Report") + context = { + 'settlement_date' : settlement_date_search, + 'rows' : rows + } + email_list = [] + for email_to in settings.NOTIFICATION_EMAIL.split(","): + email_list.append(email_to) + sendHtmlEmail(tuple(email_list),"[LEDGER] Bpoint Settlement Report (from payment gateway) "+SYSTEM_ID,context,'email/missing_payments.html',None,None,settings.EMAIL_FROM,'system-oim',attachments=None) + diff --git a/ledger/templates/email/bpoint_ledger_payment_audit.html b/ledger/templates/email/bpoint_ledger_payment_audit.html new file mode 100644 index 000000000..152fa7559 --- /dev/null +++ b/ledger/templates/email/bpoint_ledger_payment_audit.html @@ -0,0 +1,17 @@ +Hello,
+
+Below is a list of payments that do not exist in ledger:
+
+Please investigate.
+
+Report Date: {{ settlement_date }} +
+ + + {% for r in rows %} + + {% endfor %} +
Txn NumberInvoice NoSettlement DateProcessed Date TimeActionAmountBpoint Audit AmountLedger Audit Amount
{{ r.txn_number }}{{ r.crn1 }}{{ r.settlement_date }}{{ r.processed_date_time }}{{ r.action }}${{ r.amount }}${{ r.bpoint_amount }}${{ r.ledger_payment_amount }}
+

+Kind Regards
+Auto Generated