Example #1
0
def create_proforma_invoice(sender, instance, created, **kwargs):
    """
    For every Order if there are defined billing_data creates invoice proforma,
    which is an order confirmation document
    """
    if created:
        Invoice.create(instance, Invoice.INVOICE_TYPES['PROFORMA'])
Example #2
0
 def test_get_full_number_with_settings(self):
     settings.PLANS_INVOICE_NUMBER_FORMAT = "{{ invoice.issued|date:'Y' }}." \
         "{{ invoice.number }}.{{ invoice.issued|date:'m' }}"
     i = Invoice()
     i.number = 123
     i.issued = date(2010, 5, 30)
     self.assertEqual(i.get_full_number(), "2010.123.05")
Example #3
0
 def test_get_full_number_with_settings(self):
     settings.INVOICE_NUMBER_FORMAT = "{{ invoice.issued|date:'Y' }}." \
                                      "{{ invoice.number }}.{{ invoice.issued|date:'m' }}"
     i = Invoice()
     i.number = 123
     i.issued = date(2010, 5, 30)
     self.assertEqual(i.get_full_number(), "2010.123.05")
Example #4
0
def create_proforma_invoice(sender, instance, created, **kwargs):
    """
    For every Order if there are defined billing_data creates invoice proforma,
    which is an order confirmation document
    """
    if created:
        Invoice.create(instance, Invoice.INVOICE_TYPES['PROFORMA'])
Example #5
0
 def test_set_issuer_invoice_data(self):
     i = Invoice()
     i.set_issuer_invoice_data()
     self.assertEqual(i.issuer_name, settings.ISSUER_DATA['issuer_name'])
     self.assertEqual(i.issuer_street, settings.ISSUER_DATA['issuer_street'])
     self.assertEqual(i.issuer_zipcode, settings.ISSUER_DATA['issuer_zipcode'])
     self.assertEqual(i.issuer_city, settings.ISSUER_DATA['issuer_city'])
     self.assertEqual(i.issuer_country, settings.ISSUER_DATA['issuer_country'])
     self.assertEqual(i.issuer_tax_number, settings.ISSUER_DATA['issuer_tax_number'])
Example #6
0
 def test_set_issuer_invoice_data(self):
     i = Invoice()
     i.set_issuer_invoice_data()
     self.assertEqual(i.issuer_name, settings.PLANS_INVOICE_ISSUER['issuer_name'])
     self.assertEqual(i.issuer_street, settings.PLANS_INVOICE_ISSUER['issuer_street'])
     self.assertEqual(i.issuer_zipcode, settings.PLANS_INVOICE_ISSUER['issuer_zipcode'])
     self.assertEqual(i.issuer_city, settings.PLANS_INVOICE_ISSUER['issuer_city'])
     self.assertEqual(i.issuer_country, settings.PLANS_INVOICE_ISSUER['issuer_country'])
     self.assertEqual(i.issuer_tax_number, settings.PLANS_INVOICE_ISSUER['issuer_tax_number'])
Example #7
0
    def test_set_order(self):
        o = Order.objects.all()[0]

        i = Invoice()
        i.copy_from_order(o)

        self.assertEqual(i.order, o)
        self.assertEqual(i.user, o.user)
        self.assertEqual(i.total_net, o.amount)
        self.assertEqual(i.unit_price_net, o.amount)
        self.assertEqual(i.total, o.total())
        self.assertEqual(i.tax, o.tax)
        self.assertEqual(i.tax_total, o.total() - o.amount)
        self.assertEqual(i.currency, o.currency)
Example #8
0
    def test_set_order(self):
        o = Order.objects.all()[0]

        i = Invoice()
        i.copy_from_order(o)

        self.assertEqual(i.order, o)
        self.assertEqual(i.user, o.user)
        self.assertEqual(i.total_net, o.amount)
        self.assertEqual(i.unit_price_net, o.amount)
        self.assertEqual(i.total, o.total())
        self.assertEqual(i.tax, o.tax)
        self.assertEqual(i.tax_total, o.total() - o.amount)
        self.assertEqual(i.currency, o.currency)
Example #9
0
 def set_buyer_invoice_data(self):
     i = Invoice()
     u = get_user_model().objects.get(username='******')
     i.set_buyer_invoice_data(u.billinginfo)
     self.assertEqual(i.buyer_name, u.billinginfo.name)
     self.assertEqual(i.buyer_street, u.billinginfo.street)
     self.assertEqual(i.buyer_zipcode, u.billinginfo.zipcode)
     self.assertEqual(i.buyer_city, u.billinginfo.city)
     self.assertEqual(i.buyer_country, u.billinginfo.country)
     self.assertEqual(i.buyer_tax_number, u.billinginfo.tax_number)
     self.assertEqual(i.buyer_name, u.billinginfo.shipping_name)
     self.assertEqual(i.buyer_street, u.billinginfo.shipping_street)
     self.assertEqual(i.buyer_zipcode, u.billinginfo.shipping_zipcode)
     self.assertEqual(i.buyer_city, u.billinginfo.shipping_city)
     self.assertEqual(i.buyer_country, u.billinginfo.shipping_country)
Example #10
0
 def set_buyer_invoice_data(self):
     i = Invoice()
     u = User.objects.get(username='******')
     i.set_buyer_invoice_data(u.billinginfo)
     self.assertEqual(i.buyer_name, u.billinginfo.name)
     self.assertEqual(i.buyer_street, u.billinginfo.street)
     self.assertEqual(i.buyer_zipcode, u.billinginfo.zipcode)
     self.assertEqual(i.buyer_city, u.billinginfo.city)
     self.assertEqual(i.buyer_country, u.billinginfo.country)
     self.assertEqual(i.buyer_tax_number, u.billinginfo.tax_number)
     self.assertEqual(i.buyer_name, u.billinginfo.shipping_name)
     self.assertEqual(i.buyer_street, u.billinginfo.shipping_street)
     self.assertEqual(i.buyer_zipcode, u.billinginfo.shipping_zipcode)
     self.assertEqual(i.buyer_city, u.billinginfo.shipping_city)
     self.assertEqual(i.buyer_country, u.billinginfo.shipping_country)
Example #11
0
def create_proforma_invoice(sender, instance, created, **kwargs):
    """
    For every Order if there are defined billing_data creates invoice proforma,
    which is an order confirmation document
    """
    if created:
        try:
            billing_info = BillingInfo.objects.get(user=instance.user)
        except BillingInfo.DoesNotExist:
            return

        day = date.today()
        invoice = Invoice(issued=day, selling_date=day, payment_date=day + timedelta(days=14))
        invoice.type = Invoice.INVOICE_TYPES['PROFORMA']
        invoice.copy_from_order(instance)
        invoice.set_issuer_invoice_data()
        invoice.set_buyer_invoice_data(billing_info)
        invoice.clean()
        invoice.save()
Example #12
0
 def test_get_full_number_type3(self):
     i = Invoice()
     i.type = Invoice.INVOICE_TYPES.PROFORMA
     i.number = 123
     i.issued = date(2010, 5, 30)
     self.assertEqual(i.get_full_number(), "123/PF/05/2010")
Example #13
0
 def test_get_full_number_type2(self):
     i = Invoice()
     i.type = Invoice.INVOICE_TYPES.DUPLICATE
     i.number = 123
     i.issued = date(2010, 5, 30)
     self.assertEqual(i.get_full_number(), "123/FV/05/2010")
Example #14
0
 def test_get_full_number(self):
     i = Invoice()
     i.number = 123
     i.issued = date(2010, 5, 30)
     self.assertEqual(i.get_full_number(), "123/FV/05/2010")
Example #15
0
 def test_set_issuer_invoice_data_raise(self):
     issdata = settings.ISSUER_DATA
     del settings.ISSUER_DATA
     i = Invoice()
     self.assertRaises(ImproperlyConfigured, i.set_issuer_invoice_data)
     settings.ISSUER_DATA = issdata
Example #16
0
 def test_get_full_number(self):
     i = Invoice()
     i.number = 123
     i.issued = date(2010, 5, 30)
     self.assertEqual(i.get_full_number(), "123/FV/05/2010")
Example #17
0
 def test_get_full_number_type2(self):
     i = Invoice()
     i.type = Invoice.INVOICE_TYPES.DUPLICATE
     i.number = 123
     i.issued = date(2010, 5, 30)
     self.assertEqual(i.get_full_number(), "123/FV/05/2010")
Example #18
0
def make_order_invoice(modeladmin, request, queryset):
    for order in queryset:
        if Invoice.objects.filter(type=Invoice.INVOICE_TYPES['INVOICE'],
                                  order=order).count() == 0:
            Invoice.create(order, Invoice.INVOICE_TYPES['INVOICE'])
Example #19
0
    def test_invoice_number_monthly(self):
        settings.INVOICE_NUMBER_FORMAT = "{{ invoice.number }}/{% ifequal invoice.type invoice.INVOICE_TYPES.PROFORMA %}PF{% else %}FV{% endifequal %}/{{ invoice.issued|date:'m/Y' }}"
        settings.INVOICE_COUNTER_RESET = Invoice.NUMBERING.MONTHLY

        user = User.objects.get(username="******")
        plan_pricing = PlanPricing.objects.all()[0]
        tax = getattr(settings, "TAX")
        currency = getattr(settings, "CURRENCY")
        o1 = Order(
            user=user,
            plan=plan_pricing.plan,
            pricing=plan_pricing.pricing,
            amount=plan_pricing.price,
            tax=tax,
            currency=currency,
        )
        o1.save()

        o2 = Order(
            user=user,
            plan=plan_pricing.plan,
            pricing=plan_pricing.pricing,
            amount=plan_pricing.price,
            tax=tax,
            currency=currency,
        )
        o2.save()

        o3 = Order(
            user=user,
            plan=plan_pricing.plan,
            pricing=plan_pricing.pricing,
            amount=plan_pricing.price,
            tax=tax,
            currency=currency,
        )
        o3.save()

        day = date(2002, 05, 03)
        i1 = Invoice(issued=day, selling_date=day, payment_date=day)
        i1.copy_from_order(o1)
        i1.set_issuer_invoice_data()
        i1.set_buyer_invoice_data(o1.user.billinginfo)
        i1.clean()
        i1.save()

        day = date(2002, 05, 13)
        i2 = Invoice(issued=day, selling_date=day, payment_date=day)
        i2.copy_from_order(o2)
        i2.set_issuer_invoice_data()
        i2.set_buyer_invoice_data(o2.user.billinginfo)
        i2.clean()
        i2.save()

        day = date(2002, 06, 01)
        i3 = Invoice(issued=day, selling_date=day, payment_date=day)
        i3.copy_from_order(o1)
        i3.set_issuer_invoice_data()
        i3.set_buyer_invoice_data(o1.user.billinginfo)
        i3.clean()
        i3.save()

        self.assertEqual(i1.full_number, "1/FV/05/2002")
        self.assertEqual(i2.full_number, "2/FV/05/2002")
        self.assertEqual(i3.full_number, "1/FV/06/2002")
Example #20
0
    def test_invoice_number(self):
        settings.PLANS_INVOICE_NUMBER_FORMAT = "{{ invoice.number }}/{% ifequal " \
            "invoice.type invoice.INVOICE_TYPES.PROFORMA %}PF{% else %}FV" \
            "{% endifequal %}/{{ invoice.issued|date:'m/Y' }}"
        o = Order.objects.all()[0]
        day = date(2010, 5, 3)
        i = Invoice(issued=day, selling_date=day, payment_date=day)
        i.copy_from_order(o)
        i.set_issuer_invoice_data()
        i.set_buyer_invoice_data(o.user.billinginfo)
        i.clean()
        i.save()

        self.assertEqual(i.number, 1)
        self.assertEqual(i.full_number, '1/FV/05/2010')
Example #21
0
    def test_invoice_number_annually(self):
        settings.INVOICE_NUMBER_FORMAT = "{{ invoice.number }}/{% ifequal " \
                                         "invoice.type invoice.INVOICE_TYPES.PROFORMA %}PF{% else %}FV" \
                                         "{% endifequal %}/{{ invoice.issued|date:'Y' }}"
        settings.INVOICE_COUNTER_RESET = Invoice.NUMBERING.ANNUALLY

        user = get_user_model().objects.get(username='******')
        plan_pricing = PlanPricing.objects.all()[0]
        tax = getattr(settings, "TAX")
        currency = getattr(settings, "CURRENCY")
        o1 = Order(user=user, plan=plan_pricing.plan,
                   pricing=plan_pricing.pricing, amount=plan_pricing.price,
                   tax=tax, currency=currency)
        o1.save()

        o2 = Order(user=user, plan=plan_pricing.plan,
                   pricing=plan_pricing.pricing, amount=plan_pricing.price,
                   tax=tax, currency=currency)
        o2.save()

        o3 = Order(user=user, plan=plan_pricing.plan,
                   pricing=plan_pricing.pricing, amount=plan_pricing.price,
                   tax=tax, currency=currency)
        o3.save()

        day = date(1991, 5, 3)
        i1 = Invoice(issued=day, selling_date=day, payment_date=day)
        i1.copy_from_order(o1)
        i1.set_issuer_invoice_data()
        i1.set_buyer_invoice_data(o1.user.billinginfo)
        i1.clean()
        i1.save()

        day = date(1991, 7, 13)
        i2 = Invoice(issued=day, selling_date=day, payment_date=day)
        i2.copy_from_order(o2)
        i2.set_issuer_invoice_data()
        i2.set_buyer_invoice_data(o2.user.billinginfo)
        i2.clean()
        i2.save()

        day = date(1992, 6, 1)
        i3 = Invoice(issued=day, selling_date=day, payment_date=day)
        i3.copy_from_order(o1)
        i3.set_issuer_invoice_data()
        i3.set_buyer_invoice_data(o1.user.billinginfo)
        i3.clean()
        i3.save()

        self.assertEqual(i1.full_number, "1/FV/1991")
        self.assertEqual(i2.full_number, "2/FV/1991")
        self.assertEqual(i3.full_number, "1/FV/1992")
Example #22
0
    def test_invoice_number(self):
        settings.INVOICE_NUMBER_FORMAT = "{{ invoice.number }}/{% ifequal " \
                                         "invoice.type invoice.INVOICE_TYPES.PROFORMA %}PF{% else %}FV" \
                                         "{% endifequal %}/{{ invoice.issued|date:'m/Y' }}"
        o = Order.objects.all()[0]
        day = date(2010, 5, 3)
        i = Invoice(issued=day, selling_date=day, payment_date=day)
        i.copy_from_order(o)
        i.set_issuer_invoice_data()
        i.set_buyer_invoice_data(o.user.billinginfo)
        i.clean()
        i.save()

        self.assertEqual(i.number, 1)
        self.assertEqual(i.full_number, '1/FV/05/2010')
Example #23
0
 def test_set_issuer_invoice_data_raise(self):
     issdata = settings.PLANS_INVOICE_ISSUER
     del settings.PLANS_INVOICE_ISSUER
     i = Invoice()
     self.assertRaises(ImproperlyConfigured, i.set_issuer_invoice_data)
     settings.PLANS_INVOICE_ISSUER = issdata
Example #24
0
def create_invoice(sender, **kwargs):
    Invoice.create(sender, Invoice.INVOICE_TYPES['INVOICE'])
Example #25
0
 def test_get_full_number_type3(self):
     i = Invoice()
     i.type = Invoice.INVOICE_TYPES.PROFORMA
     i.number = 123
     i.issued = date(2010, 5, 30)
     self.assertEqual(i.get_full_number(), "123/PF/05/2010")
Example #26
0
    def test_invoice_number_annually(self):
        settings.PLANS_INVOICE_NUMBER_FORMAT = "{{ invoice.number }}/{% ifequal " \
            "invoice.type invoice.INVOICE_TYPES.PROFORMA %}PF{% else %}FV" \
            "{% endifequal %}/{{ invoice.issued|date:'Y' }}"
        settings.PLANS_INVOICE_COUNTER_RESET = Invoice.NUMBERING.ANNUALLY

        user = User.objects.get(username='******')
        plan_pricing = PlanPricing.objects.all()[0]
        tax = getattr(settings, "PLANS_TAX")
        currency = getattr(settings, "PLANS_CURRENCY")
        o1 = Order(user=user,
                   plan=plan_pricing.plan,
                   pricing=plan_pricing.pricing,
                   amount=plan_pricing.price,
                   tax=tax,
                   currency=currency)
        o1.save()

        o2 = Order(user=user,
                   plan=plan_pricing.plan,
                   pricing=plan_pricing.pricing,
                   amount=plan_pricing.price,
                   tax=tax,
                   currency=currency)
        o2.save()

        o3 = Order(user=user,
                   plan=plan_pricing.plan,
                   pricing=plan_pricing.pricing,
                   amount=plan_pricing.price,
                   tax=tax,
                   currency=currency)
        o3.save()

        day = date(1991, 5, 3)
        i1 = Invoice(issued=day, selling_date=day, payment_date=day)
        i1.copy_from_order(o1)
        i1.set_issuer_invoice_data()
        i1.set_buyer_invoice_data(o1.user.billinginfo)
        i1.clean()
        i1.save()

        day = date(1991, 7, 13)
        i2 = Invoice(issued=day, selling_date=day, payment_date=day)
        i2.copy_from_order(o2)
        i2.set_issuer_invoice_data()
        i2.set_buyer_invoice_data(o2.user.billinginfo)
        i2.clean()
        i2.save()

        day = date(1992, 6, 1)
        i3 = Invoice(issued=day, selling_date=day, payment_date=day)
        i3.copy_from_order(o1)
        i3.set_issuer_invoice_data()
        i3.set_buyer_invoice_data(o1.user.billinginfo)
        i3.clean()
        i3.save()

        self.assertEqual(i1.full_number, "1/FV/1991")
        self.assertEqual(i2.full_number, "2/FV/1991")
        self.assertEqual(i3.full_number, "1/FV/1992")
Example #27
0
def create_invoice(sender, **kwargs):
    Invoice.create(sender, Invoice.INVOICE_TYPES['INVOICE'])
Example #28
0
def make_order_invoice(modeladmin, request, queryset):
    for order in queryset:
        if Invoice.objects.filter(type=Invoice.INVOICE_TYPES['INVOICE'], order=order).count() == 0:
            Invoice.create(order, Invoice.INVOICE_TYPES['INVOICE'])
Example #29
0
    def test_invoice_number_custom(self):
        settings.PLANS_INVOICE_NUMBER_FORMAT = "{{ invoice.number }}/{% if " \
            "invoice.type == invoice.INVOICE_TYPES.PROFORMA %}PF{% else %}FV" \
            "{% endif %}/{{ invoice.issued|date:'Y' }}"

        def plans_invoice_counter_reset_function(invoice):
            from plans.models import Invoice, get_initial_number
            older_invoices = Invoice.objects.filter(
                type=invoice.type,
                issued__year=invoice.issued.year,
                issued__month=invoice.issued.month,
                currency=invoice.currency,
            )
            sequence_name = f"{invoice.issued.year}_{invoice.issued.month}_{invoice.currency}"
            return sequence_name, get_initial_number(older_invoices)

        settings.PLANS_INVOICE_COUNTER_RESET = plans_invoice_counter_reset_function

        user = User.objects.get(username='******')
        plan_pricing = PlanPricing.objects.all()[0]
        tax = getattr(settings, "PLANS_TAX")
        currency = getattr(settings, "PLANS_CURRENCY")
        currency1 = 'CZK'
        o1 = Order(user=user,
                   plan=plan_pricing.plan,
                   pricing=plan_pricing.pricing,
                   amount=plan_pricing.price,
                   tax=tax,
                   currency=currency)
        o1.save()

        o2 = Order(user=user,
                   plan=plan_pricing.plan,
                   pricing=plan_pricing.pricing,
                   amount=plan_pricing.price,
                   tax=tax,
                   currency=currency1)
        o2.save()

        o3 = Order(user=user,
                   plan=plan_pricing.plan,
                   pricing=plan_pricing.pricing,
                   amount=plan_pricing.price,
                   tax=tax,
                   currency=currency)
        o3.save()

        day = date(1991, 7, 13)
        i1 = Invoice(issued=day, selling_date=day, payment_date=day)
        i1.copy_from_order(o1)
        i1.set_issuer_invoice_data()
        i1.set_buyer_invoice_data(o1.user.billinginfo)
        i1.clean()
        i1.save()

        day = date(1991, 7, 13)
        i2 = Invoice(issued=day, selling_date=day, payment_date=day)
        i2.copy_from_order(o2)
        i2.set_issuer_invoice_data()
        i2.set_buyer_invoice_data(o2.user.billinginfo)
        i2.clean()
        i2.save()

        day = date(1991, 7, 13)
        i3 = Invoice(issued=day, selling_date=day, payment_date=day)
        i3.copy_from_order(o1)
        i3.set_issuer_invoice_data()
        i3.set_buyer_invoice_data(o1.user.billinginfo)
        i3.clean()
        i3.save()

        self.assertEqual(i1.full_number, "1/FV/1991")
        self.assertEqual(i2.full_number, "1/FV/1991")
        self.assertEqual(i3.full_number, "2/FV/1991")