Skip to content

Commit

Permalink
Merge pull request #102 from scaphilo/improve_installation_process
Browse files Browse the repository at this point in the history
Improve installation process
  • Loading branch information
scaphilo committed Jan 29, 2018
2 parents 850b839 + ef804ab commit c539d37
Show file tree
Hide file tree
Showing 13 changed files with 169 additions and 99 deletions.
74 changes: 46 additions & 28 deletions koalixcrm/crm/documents/contract.py
Expand Up @@ -3,7 +3,6 @@
from datetime import *
from django.db import models
from django.contrib import admin
from django.http import HttpResponseRedirect
from django.utils.translation import ugettext as _

from koalixcrm.plugin import *
Expand All @@ -17,7 +16,10 @@
from koalixcrm.crm.const.purpose import *
from koalixcrm.crm.documents.invoice import InlineInvoice
from koalixcrm.crm.documents.quote import InlineQuote

from koalixcrm.crm.exceptions import *
from koalixcrm.crm.views import create_new_document
import koalixcrm.crm.documents.calculations
import koalixcrm.crm.documents.pdfexport

class PostalAddressForContract(PostalAddress):
purpose = models.CharField(verbose_name=_("Purpose"), max_length=1, choices=PURPOSESADDRESSINCONTRACT)
Expand Down Expand Up @@ -114,6 +116,13 @@ class Meta:
verbose_name = _('Contract')
verbose_name_plural = _('Contracts')

def get_template_set(self, calling_model):
if self.default_template_set:
required_template_set = str(type(calling_model).__name__)
return self.default_template_set.get_template_set(required_template_set)
else:
raise TemplateSetMissingInContract("The Contract has no Default Template Set selected")

def create_invoice(self):
invoice = Invoice()
invoice.create_invoice(self)
Expand Down Expand Up @@ -148,51 +157,60 @@ class OptionContract(admin.ModelAdmin):
pluginProcessor = PluginProcessor()
inlines.extend(pluginProcessor.getPluginAdditions("contractInlines"))

def create_purchase_order(self, request, queryset):
for obj in queryset:
purchase_order = obj.create_purchase_order()
self.message_user(request, _("PurchaseOrder created"))
response = HttpResponseRedirect('/admin/crm/purchaseorder/' + str(purchase_order.id))
return response

create_purchase_order.short_description = _("Create Purchaseorder")

def create_quote(self, request, queryset):
for obj in queryset:
quote = obj.create_quote()
self.message_user(request, _("Quote created"))
response = HttpResponseRedirect('/admin/crm/quote/' + str(quote.id))
return response
response = create_new_document(self, request, obj,
koalixcrm.crm.documents.quote.Quote,
("/admin/crm/"+obj.__class__.__name__.lower()+"/"))
return response

create_quote.short_description = _("Create Quote")

def create_invoice(self, request, queryset):
for obj in queryset:
invoice = obj.create_invoice()
self.message_user(request, _("Invoice created"))
response = HttpResponseRedirect('/admin/crm/invoice/' + str(invoice.id))
return response
response = create_new_document(self, request, obj,
koalixcrm.crm.documents.invoice.Invoice,
("/admin/crm/"+obj.__class__.__name__.lower()+"/"))
return response

create_invoice.short_description = _("Create Invoice")

def create_purchase_confirmation(self, request, queryset):
for obj in queryset:
response = create_new_document(self, request, obj,
koalixcrm.crm.documents.purchaseconfirmation.PurchaseConfirmation,
("/admin/crm/"+obj.__class__.__name__.lower()+"/"))
return response

create_purchase_confirmation.short_description = _("Create Purchase Confirmation")

def create_delivery_note(self, request, queryset):
for obj in queryset:
delivery_note = obj.create_delivery_note()
self.message_user(request, _("Delivery Note created"))
response = HttpResponseRedirect('/admin/crm/deliverynote/' + str(delivery_note.id))
return response
response = create_new_document(self, request, obj,
koalixcrm.crm.documents.deliverynote.DeliveryNote,
("/admin/crm/"+obj.__class__.__name__.lower()+"/"))
return response

create_delivery_note.short_description = _("Create Delivery Note")
create_delivery_note.short_description = _("Create Delivery note")

def create_payment_reminder(self, request, queryset):
for obj in queryset:
payment_reminder = obj.create_delivery_note()
self.message_user(request, _("Payment Reminder created"))
response = HttpResponseRedirect('/admin/crm/paymentreminder/' + str(payment_reminder.id))
return response
response = create_new_document(self, request, obj,
koalixcrm.crm.documents.paymentreminder.PaymentReminder,
("/admin/crm/"+obj.__class__.__name__.lower()+"/"))
return response

create_payment_reminder.short_description = _("Create Payment Reminder")

def create_purchase_order(self, request, queryset):
for obj in queryset:
response = create_new_document(self, request, obj,
koalixcrm.crm.documents.purchaseorder.PurchaseOrder,
("/admin/crm/"+obj.__class__.__name__.lower()+"/"))
return response

create_purchase_order.short_description = _("Create Purchase Order")

def save_model(self, request, obj, form, change):
if (change == True):
obj.last_modified_by = request.user
Expand Down
4 changes: 2 additions & 2 deletions koalixcrm/crm/documents/deliverynote.py
Expand Up @@ -10,10 +10,10 @@ class DeliveryNote(SalesDocument):
tracking_reference = models.CharField(verbose_name=_("Tracking Reference"), max_length=100, blank=True)
status = models.CharField(max_length=1, choices=DELIVERYNOTESTATUS)

def create_delivery_note(self, calling_model):
def create_from_reference(self, calling_model):
self.create_sales_document(calling_model)
self.status = 'C'
self.template_set = self.contract.default_template_set.delivery_note_template
self.template_set = self.contract.get_template_set(self)
self.save()
self.attach_sales_document_positions(calling_model)
self.attach_text_paragraphs()
Expand Down
4 changes: 2 additions & 2 deletions koalixcrm/crm/documents/invoice.py
Expand Up @@ -24,13 +24,13 @@ class Invoice(SalesDocument):
null=True)
status = models.CharField(max_length=1, choices=INVOICESTATUS)

def create_invoice(self, calling_model):
def create_from_reference(self, calling_model):
self.create_sales_document(calling_model)
self.status = 'C'
self.payable_until = date.today() + \
timedelta(days=self.customer.defaultCustomerBillingCycle.time_to_payment_date)
self.date_of_creation = date.today().__str__()
self.template_set = self.contract.default_template_set.invoice_template
self.template_set = self.contract.get_template_set(self)
self.save()
self.attach_sales_document_positions(calling_model)
self.attach_text_paragraphs()
Expand Down
4 changes: 2 additions & 2 deletions koalixcrm/crm/documents/paymentreminder.py
Expand Up @@ -17,13 +17,13 @@ class PaymentReminder(SalesDocument):
validators=[MinValueValidator(1), MaxValueValidator(3)])
status = models.CharField(max_length=1, choices=INVOICESTATUS)

def create_payment_reminder(self, calling_model):
def create_from_reference(self, calling_model):
self.create_sales_document(calling_model)
self.status = 'C'
self.iteration_number = 1
self.payable_until = date.today() + \
timedelta(days=self.customer.defaultCustomerBillingCycle.payment_reminder_time_to_payment)
self.template_set = self.contract.default_template_set.payment_reminder_template
self.template_set = self.contract.get_template_set(self)
self.save()
self.attach_sales_document_positions(calling_model)
self.attach_text_paragraphs()
Expand Down
4 changes: 2 additions & 2 deletions koalixcrm/crm/documents/purchaseconfirmation.py
Expand Up @@ -7,9 +7,9 @@

class PurchaseConfirmation(SalesDocument):

def create_purchase_confirmation(self, calling_model):
def create_from_reference(self, calling_model):
self.create_sales_document(calling_model)
self.template_set = self.contract.default_template_set.purchase_confirmation_template
self.template_set = self.contract.get_template_set(self)
self.save()
self.attach_sales_document_positions(calling_model)
self.attach_text_paragraphs()
Expand Down
4 changes: 2 additions & 2 deletions koalixcrm/crm/documents/purchaseorder.py
Expand Up @@ -11,10 +11,10 @@ class PurchaseOrder(SalesDocument):
supplier = models.ForeignKey("Supplier", verbose_name=_("Supplier"), null=True)
status = models.CharField(max_length=1, choices=PURCHASEORDERSTATUS)

def create_purchase_order(self, calling_model):
def create_from_reference(self, calling_model):
self.create_sales_document(calling_model)
self.status = 'O'
self.template_set = self.contract.default_template_set.purchase_order_template
self.template_set = self.contract.get_template_set(self)
self.save()
self.attach_sales_document_positions(calling_model)
self.attach_text_paragraphs()
Expand Down
4 changes: 2 additions & 2 deletions koalixcrm/crm/documents/quote.py
Expand Up @@ -13,12 +13,12 @@ class Quote(SalesDocument):
valid_until = models.DateField(verbose_name=_("Valid until"))
status = models.CharField(max_length=1, choices=QUOTESTATUS, verbose_name=_('Status'))

def create_quote(self, calling_model):
def create_from_reference(self, calling_model):
self.create_sales_document(calling_model)
self.status = 'I'
self.valid_until = date.today().__str__()
self.date_of_creation = date.today().__str__()
self.template_set = self.contract.default_template_set.quote_template
self.template_set = self.contract.get_template_set(self)
self.save()
self.attach_sales_document_positions(calling_model)
self.attach_text_paragraphs()
Expand Down
84 changes: 27 additions & 57 deletions koalixcrm/crm/documents/salesdocument.py
Expand Up @@ -3,7 +3,6 @@
from datetime import *
from django.db import models
from django.contrib import admin, messages
from django.http import HttpResponseRedirect
from django.utils.translation import ugettext as _
from koalixcrm.crm.const.purpose import *
from koalixcrm.globalSupportFunctions import xstr
Expand All @@ -13,8 +12,9 @@
from koalixcrm.crm.documents.salesdocumentposition import SalesDocumentPosition, SalesDocumentInlinePosition
from koalixcrm.djangoUserExtension.models import TextParagraphInDocumentTemplate
from koalixcrm.crm.views import export_pdf
from koalixcrm.crm.views import create_new_document
from koalixcrm.crm.product.product import Product
from koalixcrm.crm.exceptions import TemplateSetMissing
from koalixcrm.crm.exceptions import TemplateSetMissingInContract
import koalixcrm.crm.documents.calculations
import koalixcrm.crm.documents.pdfexport

Expand Down Expand Up @@ -109,36 +109,6 @@ def attach_sales_document_positions(self, calling_model):
new_position = SalesDocumentPosition()
new_position.create_position(sales_document_position, self)

def create_quote(self):
quote = koalixcrm.crm.documents.quote.Quote()
quote.create_quote(self)
return quote

def create_invoice(self):
invoice = koalixcrm.crm.documents.invoice.Invoice()
invoice.create_invoice(self)
return invoice

def create_purchase_confirmation(self):
purchase_confirmation = koalixcrm.crm.documents.purchaseconfirmation.PurchaseConfirmation()
purchase_confirmation.create_purchase_confirmation(self)
return purchase_confirmation

def create_delivery_note(self):
delivery_note = koalixcrm.crm.documents.deliverynote.DeliveryNote()
delivery_note.create_delivery_note(self)
return delivery_note

def create_payment_reminder(self):
payment_reminder = koalixcrm.crm.documents.paymentreminder.PaymentReminder()
payment_reminder.create_payment_reminder(self)
return payment_reminder

def create_purchase_order(self):
purchase_order = koalixcrm.crm.documents.purchaseorder.PurchaseOrder()
purchase_order.create_purchase_order(self)
return purchase_order

def create_pdf(self):
self.last_print_date = datetime.now()
self.save()
Expand All @@ -148,7 +118,7 @@ def get_template_set(self):
if self.template_set:
return self.template_set
else:
raise TemplateSetMissing((_("Template Set missing in Sales Document" + str(self))))
raise TemplateSetMissingInContract((_("Template Set missing in Sales Document" + str(self))))

def get_fop_config_file(self):
template_set = self.get_template_set()
Expand Down Expand Up @@ -299,55 +269,55 @@ def save_model(self, request, obj, form, change):

def create_quote(self, request, queryset):
for obj in queryset:
quote = obj.create_quote()
self.message_user(request, _("Quote created"))
response = HttpResponseRedirect('/admin/crm/quote/' + str(quote.id))
return response
response = create_new_document(self, request, obj,
koalixcrm.crm.documents.quote.Quote,
("/admin/crm/"+obj.__class__.__name__.lower()+"/"))
return response

create_quote.short_description = _("Create Quote")

def create_invoice(self, request, queryset):
for obj in queryset:
invoice = obj.create_invoice()
self.message_user(request, _("Invoice created"))
response = HttpResponseRedirect('/admin/crm/invoice/' + str(invoice.id))
return response
response = create_new_document(self, request, obj,
koalixcrm.crm.documents.invoice.Invoice,
("/admin/crm/"+obj.__class__.__name__.lower()+"/"))
return response

create_invoice.short_description = _("Create Invoice")

def create_purchase_confirmation(self, request, queryset):
for obj in queryset:
purchase_confirmation = obj.create_purchase_confirmation()
self.message_user(request, _("Purchase confirmation created"))
response = HttpResponseRedirect('/admin/crm/purchaseconfirmation/' + str(purchase_confirmation.id))
return response
response = create_new_document(self, request, obj,
koalixcrm.crm.documents.purchaseconfirmation.PurchaseConfirmation,
("/admin/crm/"+obj.__class__.__name__.lower()+"/"))
return response

create_purchase_confirmation.short_description = _("Create Purchase Confirmation")

def create_delivery_note(self, request, queryset):
for obj in queryset:
delivery_note = obj.create_delivery_note()
self.message_user(request, _("Delivery note created"))
response = HttpResponseRedirect('/admin/crm/deliverynote/' + str(delivery_note.id))
return response
response = create_new_document(self, request, obj,
koalixcrm.crm.documents.deliverynote.DeliveryNote,
("/admin/crm/"+obj.__class__.__name__.lower()+"/"))
return response

create_delivery_note.short_description = _("Create Delivery note")

def create_payment_reminder(self, request, queryset):
for obj in queryset:
payment_reminder = obj.create_payment_reminder()
self.message_user(request, _("Payment Reminder created"))
response = HttpResponseRedirect('/admin/crm/paymentreminder/' + str(payment_reminder.id))
return response
response = create_new_document(self, request, obj,
koalixcrm.crm.documents.paymentreminder.PaymentReminder,
("/admin/crm/"+obj.__class__.__name__.lower()+"/"))
return response

create_payment_reminder.short_description = _("Create Payment Reminder")

def create_purchase_order(self, request, queryset):
for obj in queryset:
purchase_order = obj.create_purchase_order()
self.message_user(request, _("Purchase Order created"))
response = HttpResponseRedirect('/admin/crm/purchaseorder/' + str(purchase_order.id))
return response
response = create_new_document(self, request, obj,
koalixcrm.crm.documents.purchaseorder.PurchaseOrder,
("/admin/crm/"+obj.__class__.__name__.lower()+"/"))
return response

create_purchase_order.short_description = _("Create Purchase Order")

Expand Down
16 changes: 16 additions & 0 deletions koalixcrm/crm/exceptions.py
Expand Up @@ -9,6 +9,22 @@ def __str__(self):
return repr(self.value)


class TemplateMissingInTemplateSet(Exception):
def __init__(self, value):
self.value = value

def __str__(self):
return repr(self.value)


class TemplateSetMissingInContract(Exception):
def __init__(self, value):
self.value = value

def __str__(self):
return repr(self.value)


class TemplateFOPConfigFileMissing(Exception):
def __init__(self, value):
self.value = value
Expand Down

0 comments on commit c539d37

Please sign in to comment.