Exemplo n.º 1
0
Arquivo: api.py Projeto: tawazz/ledger
    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                         #
#                                                     #
#######################################################
Exemplo n.º 2
0
    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))
Exemplo n.º 3
0
    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                         #
#                                                     #
#######################################################
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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))
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
 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)