Merge pull request #509 from tiwariav/task/3828/invoice_period
task/3828 invoice period
This commit is contained in:
		
				commit
				
					
						1c50eb45e9
					
				
			
		
					 4 changed files with 32 additions and 9 deletions
				
			
		| 
						 | 
					@ -1,7 +1,9 @@
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
import logging
 | 
					import logging
 | 
				
			||||||
 | 
					from dateutil.relativedelta import relativedelta
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from django.db import models
 | 
					from django.db import models
 | 
				
			||||||
 | 
					from django.utils import timezone
 | 
				
			||||||
from django.utils.functional import cached_property
 | 
					from django.utils.functional import cached_property
 | 
				
			||||||
from Crypto.PublicKey import RSA
 | 
					from Crypto.PublicKey import RSA
 | 
				
			||||||
from membership.models import StripeCustomer, CustomUser
 | 
					from membership.models import StripeCustomer, CustomUser
 | 
				
			||||||
| 
						 | 
					@ -172,3 +174,9 @@ class VMDetail(models.Model):
 | 
				
			||||||
    ipv6 = models.TextField(default='')
 | 
					    ipv6 = models.TextField(default='')
 | 
				
			||||||
    created_at = models.DateTimeField(auto_now_add=True)
 | 
					    created_at = models.DateTimeField(auto_now_add=True)
 | 
				
			||||||
    terminated_at = models.DateTimeField(null=True)
 | 
					    terminated_at = models.DateTimeField(null=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def end_date(self):
 | 
				
			||||||
 | 
					        end_date = self.terminated_at if self.terminated_at else timezone.now()
 | 
				
			||||||
 | 
					        months = relativedelta(end_date, self.created_at).months or 1
 | 
				
			||||||
 | 
					        end_date = self.created_at + relativedelta(months=months, days=-1)
 | 
				
			||||||
 | 
					        return end_date
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -376,3 +376,11 @@
 | 
				
			||||||
  color: #999;
 | 
					  color: #999;
 | 
				
			||||||
  fill: #999;
 | 
					  fill: #999;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.locale_date {
 | 
				
			||||||
 | 
					  opacity: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.locale_date.done{
 | 
				
			||||||
 | 
					  opacity: 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -32,11 +32,11 @@
 | 
				
			||||||
            {% endif %}
 | 
					            {% endif %}
 | 
				
			||||||
            <p>
 | 
					            <p>
 | 
				
			||||||
                <strong>{% trans "Date" %}:</strong>
 | 
					                <strong>{% trans "Date" %}:</strong>
 | 
				
			||||||
                <span id="order-created_at">
 | 
					                <span class="locale_date">
 | 
				
			||||||
                    {% if order %}
 | 
					                    {% if order %}
 | 
				
			||||||
                        {{order.created_at|date:'Y-m-d H:i'}}
 | 
					                        {{order.created_at|date:'Y-m-d h:i a'}}
 | 
				
			||||||
                    {% else %}
 | 
					                    {% else %}
 | 
				
			||||||
                        {% now "Y-m-d H:i" %}
 | 
					                        {% now "Y-m-d h:i a" %}
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                </span>
 | 
					                </span>
 | 
				
			||||||
            </p>
 | 
					            </p>
 | 
				
			||||||
| 
						 | 
					@ -107,7 +107,9 @@
 | 
				
			||||||
                        {% if vm.created_at %}
 | 
					                        {% if vm.created_at %}
 | 
				
			||||||
                            <p>
 | 
					                            <p>
 | 
				
			||||||
                                <span>{% trans "Period" %}: </span>
 | 
					                                <span>{% trans "Period" %}: </span>
 | 
				
			||||||
                                <span>{{ vm.created_at|date:'Y/m/d' }} - {% if vm.terminated_at %}{{ vm.terminated_at|date:'Y/m/d' }}{% else %}{% now 'Y/m/d' %}{% endif %}</span>
 | 
					                                <span>
 | 
				
			||||||
 | 
					                                    <span class="locale_date" data-format="YYYY/MM/DD">{{ vm.created_at|date:'Y-m-d h:i a' }}</span> - <span class="locale_date" data-format="YYYY/MM/DD">{{ subscription_end_date|date:'Y-m-d h:i a' }}</span>
 | 
				
			||||||
 | 
					                                </span>
 | 
				
			||||||
                            </p>
 | 
					                            </p>
 | 
				
			||||||
                        {% endif %}
 | 
					                        {% endif %}
 | 
				
			||||||
                        <p>
 | 
					                        <p>
 | 
				
			||||||
| 
						 | 
					@ -194,12 +196,16 @@
 | 
				
			||||||
<script type="text/javascript">
 | 
					<script type="text/javascript">
 | 
				
			||||||
    {% trans "Some problem encountered. Please try again later." as err_msg %}
 | 
					    {% trans "Some problem encountered. Please try again later." as err_msg %}
 | 
				
			||||||
    var create_vm_error_message = '{{err_msg|safe}}';
 | 
					    var create_vm_error_message = '{{err_msg|safe}}';
 | 
				
			||||||
 | 
					 | 
				
			||||||
    window.onload = function () {
 | 
					    window.onload = function () {
 | 
				
			||||||
        var locale_date = moment.utc(document.getElementById("order-created_at").textContent, 'YYYY-MM-DD HH:mm').toDate();
 | 
					        var locale_dates = document.getElementsByClassName("locale_date");
 | 
				
			||||||
        locale_date = moment(locale_date).format("YYYY-MM-DD h:mm:ss a");
 | 
					        var formats = ['YYYY-MM-DD hh:mm a']
 | 
				
			||||||
        document.getElementById('order-created_at').innerHTML = locale_date;
 | 
					        var i;
 | 
				
			||||||
 | 
					        for (i = 0; i < locale_dates.length; i++) {
 | 
				
			||||||
 | 
					            var oldDate = moment.utc(locale_dates[i].textContent, formats);
 | 
				
			||||||
 | 
					            var outputFormat = locale_dates[i].getAttribute('data-format') || oldDate._f;
 | 
				
			||||||
 | 
					            locale_dates[i].innerHTML = oldDate.local().format(outputFormat);
 | 
				
			||||||
 | 
					            locale_dates[i].className += ' done';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
{%endblock%}
 | 
					{%endblock%}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -703,6 +703,7 @@ class OrdersHostingDetailView(LoginRequiredMixin,
 | 
				
			||||||
                    disk_size=context['vm']['disk_size'],
 | 
					                    disk_size=context['vm']['disk_size'],
 | 
				
			||||||
                    memory=context['vm']['memory']
 | 
					                    memory=context['vm']['memory']
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
 | 
					                context['subscription_end_date'] = vm_detail.end_date()
 | 
				
			||||||
            except VMDetail.DoesNotExist:
 | 
					            except VMDetail.DoesNotExist:
 | 
				
			||||||
                try:
 | 
					                try:
 | 
				
			||||||
                    manager = OpenNebulaManager(
 | 
					                    manager = OpenNebulaManager(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue