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, 05, 03) 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(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, 05, 03) 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 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_invoice_number_daily(self): settings.PLANS_INVOICE_NUMBER_FORMAT = "{{ invoice.number }}/{% ifequal " \ "invoice.type invoice.INVOICE_TYPES.PROFORMA %}PF{% else %}FV" \ "{% endifequal %}/{{ invoice.issued|date:'d/m/Y' }}" settings.PLANS_INVOICE_COUNTER_RESET = Invoice.NUMBERING.DAILY 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(2001, 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() 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(2001, 5, 4) 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/03/05/2001") self.assertEqual(i2.full_number, "2/FV/03/05/2001") self.assertEqual(i3.full_number, "1/FV/04/05/2001")
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 = 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(1991, 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(1991, 07, 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, 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/1991") self.assertEqual(i2.full_number, "2/FV/1991") self.assertEqual(i3.full_number, "1/FV/1992")
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_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_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")