mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Add new report models
This commit is contained in:
parent
fb096bd65b
commit
727fd38978
@ -0,0 +1,45 @@
|
||||
# Generated by Django 3.0.7 on 2021-03-10 05:46
|
||||
|
||||
import django.core.validators
|
||||
from django.db import migrations, models
|
||||
import report.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('report', '0013_testreport_include_installed'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='PurchaseOrderReport',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(help_text='Template name', max_length=100, verbose_name='Name')),
|
||||
('template', models.FileField(help_text='Report template file', upload_to=report.models.rename_template, validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['html', 'htm'])], verbose_name='Template')),
|
||||
('description', models.CharField(help_text='Report template description', max_length=250, verbose_name='Description')),
|
||||
('revision', models.PositiveIntegerField(default=1, editable=False, help_text='Report revision number (auto-increments)', verbose_name='Revision')),
|
||||
('enabled', models.BooleanField(default=True, help_text='Report template is enabled', verbose_name='Enabled')),
|
||||
('filters', models.CharField(blank=True, help_text='Purchase order query filters', max_length=250, validators=[report.models.validate_purchase_order_filters], verbose_name='Filters')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='SalesOrderReport',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(help_text='Template name', max_length=100, verbose_name='Name')),
|
||||
('template', models.FileField(help_text='Report template file', upload_to=report.models.rename_template, validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['html', 'htm'])], verbose_name='Template')),
|
||||
('description', models.CharField(help_text='Report template description', max_length=250, verbose_name='Description')),
|
||||
('revision', models.PositiveIntegerField(default=1, editable=False, help_text='Report revision number (auto-increments)', verbose_name='Revision')),
|
||||
('enabled', models.BooleanField(default=True, help_text='Report template is enabled', verbose_name='Enabled')),
|
||||
('filters', models.CharField(blank=True, help_text='Sales order query filters', max_length=250, validators=[report.models.validate_sales_order_filters], verbose_name='Filters')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
@ -24,6 +24,7 @@ import build.models
|
||||
import common.models
|
||||
import part.models
|
||||
import stock.models
|
||||
import order.models
|
||||
|
||||
from InvenTree.helpers import validateFilterString
|
||||
|
||||
@ -94,6 +95,22 @@ def validate_build_report_filters(filters):
|
||||
return validateFilterString(filters, model=build.models.Build)
|
||||
|
||||
|
||||
def validate_purchase_order_filters(filters):
|
||||
"""
|
||||
Validate filter string against PurchaseOrder model
|
||||
"""
|
||||
|
||||
return validateFilterString(filters, model=order.models.PurchaseOrder)
|
||||
|
||||
|
||||
def validate_sales_order_filters(filters):
|
||||
"""
|
||||
Validate filter string against SalesOrder model
|
||||
"""
|
||||
|
||||
return validateFilterString(filters, model=order.models.SalesOrder)
|
||||
|
||||
|
||||
class WeasyprintReportMixin(WeasyTemplateResponseMixin):
|
||||
"""
|
||||
Class for rendering a HTML template to a PDF.
|
||||
@ -383,6 +400,64 @@ class BillOfMaterialsReport(ReportTemplateBase):
|
||||
}
|
||||
|
||||
|
||||
class PurchaseOrderReport(ReportTemplateBase):
|
||||
"""
|
||||
Render a report against a PurchaseOrder object
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def getSubdir(cls):
|
||||
return 'purchaseorder'
|
||||
|
||||
filters = models.CharField(
|
||||
blank=True,
|
||||
max_length=250,
|
||||
verbose_name=_('Filters'),
|
||||
help_text=_('Purchase order query filters'),
|
||||
validators=[
|
||||
validate_purchase_order_filters,
|
||||
]
|
||||
)
|
||||
|
||||
def get_context_data(self, request):
|
||||
|
||||
order = self.object_to_print
|
||||
|
||||
return {
|
||||
'order': order,
|
||||
'supplier': order.supplier,
|
||||
}
|
||||
|
||||
|
||||
class SalesOrderReport(ReportTemplateBase):
|
||||
"""
|
||||
Render a report against a SalesOrder object
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def getSubdir(cls):
|
||||
return 'salesorder'
|
||||
|
||||
filters = models.CharField(
|
||||
blank=True,
|
||||
max_length=250,
|
||||
verbose_name=_('Filters'),
|
||||
help_text=_('Sales order query filters'),
|
||||
validators=[
|
||||
validate_sales_order_filters
|
||||
]
|
||||
)
|
||||
|
||||
def get_context_data(self, request):
|
||||
|
||||
order = self.object_to_print
|
||||
|
||||
return {
|
||||
'order': order,
|
||||
'customer': order.customer,
|
||||
}
|
||||
|
||||
|
||||
def rename_snippet(instance, filename):
|
||||
|
||||
filename = os.path.basename(filename)
|
||||
|
Loading…
Reference in New Issue
Block a user