def get(self, request, format=None): try: http_status = status.HTTP_200_OK #parse and validate data report = None data = { "start": request.GET.get('start'), "end": request.GET.get('end'), "banked_start": request.GET.get('banked_start', None), "banked_end": request.GET.get('banked_end', None), "system": request.GET.get('system'), "items": request.GET.get('items', False), "region": request.GET.get('region'), "district": request.GET.get('district') } serializer = ReportSerializer(data=data) serializer.is_valid(raise_exception=True) filename = 'report-{}-{}'.format( str(serializer.validated_data['start']), str(serializer.validated_data['end'])) # Generate Report if serializer.validated_data['items']: report = generate_items_csv( systemid_check(serializer.validated_data['system']), serializer.validated_data['start'], serializer.validated_data['end'], serializer.validated_data['banked_start'], serializer.validated_data['banked_end'], district=serializer.validated_data['district']) else: report = generate_trans_csv( systemid_check(serializer.validated_data['system']), serializer.validated_data['start'], serializer.validated_data['end'], district=serializer.validated_data['district']) if report: response = HttpResponse(FileWrapper(report), content_type='text/csv') response[ 'Content-Disposition'] = 'attachment; filename={}.csv'.format( filename) return response else: raise serializers.ValidationError('No report was generated.') except serializers.ValidationError: raise except Exception as e: traceback.print_exc() raise serializers.ValidationError(str(e)) ####################################################### # # # /REPORTS # # # #######################################################
def doInvoice(self, order_number, total, **kwargs): method = self.checkout_session.bpay_method() system = self.checkout_session.system() icrn_format = self.checkout_session.icrn_format() # Generate the string to be used to generate the icrn crn_string = '{0}{1}'.format(systemid_check(system), order_number) if method == 'crn': return invoice_facade.create_invoice_crn( order_number, total.incl_tax, crn_string, system, self.checkout_session.get_invoice_text() if self.checkout_session.get_invoice_text() else '', self.checkout_session.payment_method() if self.checkout_session.payment_method() else None) elif method == 'icrn': return invoice_facade.create_invoice_icrn( order_number, total.incl_tax, crn_string, icrn_format, system, self.checkout_session.get_invoice_text() if self.checkout_session.get_invoice_text() else '', self.checkout_session.payment_method() if self.checkout_session.payment_method() else None) else: raise ValueError( '{0} is not a supported BPAY method.'.format(method))
def get(self,request,format=None): try: http_status = status.HTTP_200_OK #parse and validate data report = None data = { "start":request.GET.get('start'), "end":request.GET.get('end'), "banked_start":request.GET.get('banked_start',None), "banked_end":request.GET.get('banked_end',None), "system":request.GET.get('system'), "items": request.GET.get('items', False), "region": request.GET.get('region'), "district": request.GET.get('district') } serializer = ReportSerializer(data=data) serializer.is_valid(raise_exception=True) filename = 'report-{}-{}'.format(str(serializer.validated_data['start']),str(serializer.validated_data['end'])) # Generate Report if serializer.validated_data['items']: report = generate_items_csv(systemid_check(serializer.validated_data['system']), serializer.validated_data['start'], serializer.validated_data['end'], serializer.validated_data['banked_start'], serializer.validated_data['banked_end']) else: report = generate_trans_csv(systemid_check(serializer.validated_data['system']) ,serializer.validated_data['start'], serializer.validated_data['end'], district = serializer.validated_data['district']) if report: response = HttpResponse(FileWrapper(report), content_type='text/csv') response['Content-Disposition'] = 'attachment; filename={}.csv'.format(filename) return response else: raise serializers.ValidationError('No report was generated.') except serializers.ValidationError: raise except Exception as e: traceback.print_exc() raise serializers.ValidationError(str(e)) ####################################################### # # # /REPORTS # # # #######################################################
def create_invoice(self, order_number, total, invoice_text, **kwargs): """ Create and invoice for matching order. """ method = 'crn' system = settings.PS_PAYMENT_SYSTEM_ID # Generate the string to be used to generate the icrn crn_string = '{0}{1}'.format(systemid_check(system), order_number) return invoice_facade.create_invoice_crn(order_number, total.incl_tax, crn_string, system, invoice_text)
def doInvoice(self,order_number,total,**kwargs): method = self.checkout_session.bpay_method() system = self.checkout_session.system() icrn_format = self.checkout_session.icrn_format() # Generate the string to be used to generate the icrn crn_string = '{0}{1}'.format(systemid_check(system),order_number) if method == 'crn': return invoice_facade.create_invoice_crn( order_number, total.incl_tax, crn_string, system) elif method == 'icrn': return invoice_facade.create_invoice_icrn( order_number, total.incl_tax, crn_string, icrn_format, system) else: raise ValueError('{0} is not a supported BPAY method.'.format(method))
def handle(self, *args, **options): print("RUNNING") days_back = options['days_back'][0] #print (sys.argv[0]) unmatch_invoices_to_booking = [] past_date = datetime.now() - timedelta(days_back) print(past_date) system_identifier = systemid_check(settings.PS_PAYMENT_SYSTEM_ID) invoices = Invoice.objects.filter( reference__startswith=system_identifier, created__gte=past_date) for i in invoices: if BookingInvoice.objects.filter( invoice_reference=i.reference).count() == 0: print("Found " + str(i.reference)) unmatch_invoices_to_booking.append({ 'reference': i.reference, 'created': i.created, 'order_number': i.order_number, 'amount': i.amount }) if len(unmatch_invoices_to_booking) > 0: context = { "past_date": past_date, "invoices": unmatch_invoices_to_booking } email_list = [] for email_to in settings.NOTIFICATION_EMAIL.split(","): email_list.append(email_to) print("SENDING EMAIL") emails.sendHtmlEmail(tuple(email_list), "[PARKSTAY] Invoices without a booking", context, 'ps/email/missing_invoice_bookings.html', None, None, settings.EMAIL_FROM, 'system-oim', attachments=None)
def save(self, *args, **kwargs): # prevent circular import from ledger.payments.utils import systemid_check if self.pk: self.system = systemid_check(self.system) super(Invoice, self).save(*args, **kwargs)
def save(self,*args,**kwargs): # prevent circular import from ledger.payments.utils import systemid_check if self.pk: self.system = systemid_check(self.system) super(Invoice,self).save(*args,**kwargs)