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'])
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")
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")
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'])
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'])
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)
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)
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)
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()
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")
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")
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")
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
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'])
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")
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')
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")
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')
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
def create_invoice(sender, **kwargs): Invoice.create(sender, Invoice.INVOICE_TYPES['INVOICE'])
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")
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")